Cómo describir un origen de datos delimitado por tokens

En esta sección:

Puede leer archivos cuyos campos están separados por cualquier tipo de delimitador, incluyendo las comas, pestañas y otros caracteres. La definición de un archivo máster, con el atributo SUFFIX=DFIX, permite especificar cualquier combinación de campos como delimitador de los campos. Los delimitadores pueden ser caracteres que pueden ser imprimidos, o que no pueden serlo, y combinaciones de ambos.

Existen dos métodos compatibles para describir los archivos delimitados:

Nota: SET HOLDLIST no es compatible con los archivos delimitados.


Principio de página

x
Cómo definir un delimitador en el archivo máster

Cómo:

Referencia:

Los delimitadores del archivo máster se definen mediante un campo especial, llamado DELIMITER. La declaración de FILE debe incluir el atributo SUFFIX=DFIX.



x
Sintaxis: Cómo Definir un archivo con delimitadores en el archivo máster

Describa los caracteres del delimitador en un campo o en un grupo especial, llamado DELIMITER. Los caracteres del delimitador se especifican en el atributo ALIAS de este campo o grupo especial.

Para usar un delimitador compuesto por un solo carácter que no se puede imprimir, o por uno o varios caracteres que sí pueden imprimirse, el delimitador debe definirse como un campo con los siguientes atributos:

FIELDNAME=DELIMITER, ALIAS=delimiter, USAGE=ufmt, ACTUAL=afmt ,$

Para usar un delimitador compuesto por varios caracteres que no se pueden imprimir, o por una combinación de caracteres que sí pueden imprimirse y otros que no, el delimitador debe definirse como un grupo:

GROUP=DELIMITER,      ALIAS=          , USAGE=ufmtg, ACTUAL=afmtg ,$
 FIELDNAME=DELIMITER, ALIAS=delimiter1, USAGE=ufmt1, ACTUAL=afmt1 ,$
  .
  .
  .
 FIELDNAME=DELIMITER, ALIAS=delimitern, USAGE=ufmtn, ACTUAL=afmtn ,$

donde:

DELIMITER

Indica que el campo o grupo se está usando como delimitador en el origen de datos.

delimiter

Idenfica un delimitador con un máximo de 30 caracteres. Si cuenta con uno o varios caracteres que se pueden imprimir, el valor estará compuesto por los caracteres mismos. Si el delimitador incluye caracteres que, a su vez, actúan como delimitadores en la sintaxis del archivo máster, debe estar situado entre comillas simples. Si el carácter no se puede imprimir, el valor es el equivalente decimal de la representación EBCDIC o ASCII del carácter, dependiendo de su entorno operativo.

ufmt, afmt

Son los formatos USAGE y ACTUAL del delimitador. Los valores posibles son:

Tipo de delimitador

USAGE

ACTUAL

Caracteres que se pueden imprimir

An, donde n es el número de caracteres

An, donde n es el número de caracteres

Carácter que no se puede imprimir, como el de tabulación

I4
I1

Grupo (combinación de caracteres que se pueden imprimir y otros que no, o varios caracteres que no pueden imprimirse)

Suma de las longitudes individuales de USAGE

Suma de las longitudes individuales de ACTUAL



x
Referencia: Notas de uso de un archivo delimitado por tokens


Ejemplo: Cómo definir un delimitador en el archivo máster

El siguiente ejemplo muestra un delimitador alfanumérico, de un carácter:

FIELDNAME=DELIMITER, ALIAS=',' ,USAGE=A1, ACTUAL=A1  ,$

El siguiente ejemplo muestra un delimitador alfanumérico, de dos caracteres:

FIELDNAME=DELIMITER, ALIAS=//  ,USAGE=A2, ACTUAL=A2  ,$

El siguiente ejemplo muestra cómo usar el carácter de tabulación como delimitador:

FIELDNAME=DELIMITER, ALIAS=05  ,USAGE=I4, ACTUAL=I1  ,$

El siguiente ejemplo muestra cómo usar un carácter en blanco, descrito como delimitador numérico:

FIELDNAME=DELIMITER, ALIAS=64  ,USAGE=I4, ACTUAL=I1  ,$

El siguiente ejemplo muestra un delimitador de grupo (combinación de carácter de tabulación-barra diagonal-carácter de tabulación):

GROUP=DELIMITER,  ALIAS=   ,USAGE=A9, ACTUAL=A3  ,$
 FIELDNAME=DEL1,  ALIAS=05 ,USAGE=I4, ACTUAL=I1  ,$
 FIELDNAME=DEL2,  ALIAS=/  ,USAGE=A1, ACTUAL=A1  ,$
 FIELDNAME=DEL3,  ALIAS=05 ,USAGE=I4, ACTUAL=I1  ,$


Ejemplo: Cómo separar los valores de campos para datos no disponibles

El siguiente archivo máster muestra el atributo MISSING especificado para el campo CAR:

FILE=DFIXF01  ,SUFFIX=DFIX
 SEGNAME=SEG1  ,SEGTYPE=S0
  FIELDNAME=COUNTRY   ,ALIAS=F1  ,USAGE=A10 ,ACTUAL=A10 ,$
  FIELDNAME=CAR       ,ALIAS=F2  ,USAGE=A16 ,ACTUAL=A16 ,MISSING=ON, $
  FIELDNAME=NUMBER    ,ALIAS=F3  ,USAGE=P10 ,ACTUAL=Z10 ,$
  FIELDNAME=DELIMITER ,ALIAS=',' ,USAGE=A1  ,ACTUAL=A1  ,$

En los archivos de origen, la presencia de dos delimitadores de coma consecutivos indica que hay datos no disponibles para CAR:

GERMANY,VOLKSWAGEN,1111
GERMANY,BMW,
USA,CADILLAC,22222
USA,FORD
USA,,44444
JAPAN
ENGLAND,
FRANCE

La salida es:

COUNTRY            CAR              NUMBER 
-------            ---              ------
GERMANY            VOLKSWAGEN         1111
GERMANY            BMW                   0
USA                CADILLAC          22222
USA                FORD                  0
USA                .                 44444
JAPAN              .                     0
ENGLAND                                  0
FRANCE             .                     0

Principio de página

x
Cómo definir un delimitador en el archivo de acceso

Referencia:

El archivo máster contiene los atributos estándar de cualquier archivo secuencial. El valor de SUFFIX es DFIX. El resto de la información sobre los delimitadores se encuentra en el archivo de acceso.

Además, puede usar el comando HOLD FORMAT DFIX para crear este tipo de archivos máster y de acceso en archivos delimitados por tokens. Para más información sobre los formatos HOLD, consulte el manual Cómo crear informes con el lenguaje WebFOCUS .



x
Referencia: Atributos de archivo de acceso para un archivo secuencial delimitado
DELIMITER = delimiter, [ENCLOSURE = character,] [HEADER = {YES|NO}],$

donde:

delimiter

Es la secuencia del delimitador; puede incluir hasta 30 caracteres imprimibles o 30 caracteres que no se pueden imprimir y no son nulos. Para un valor que no pueda imprimirse, introduzca el valor hexadecimal que representa el carácter. Si usa una combinación de caracteres que puedan o no puedan imprimirse, debe introducir todos como valores hexadecimales. Para crear un archivo delimitado por pestañas, puede especificar el valor de delimitador como TAB o como su equivalente hexadecimal (0x09, en plataformas ASCII, o 0x05, en plataformas EBCDIC).

Tenga en cuenta que los dígitos numéricos y símbolos usados en números, como un punto (.), signo más (+) o menos (-), no pueden usarse en la secuencia de delimitador.

character

Es la secuencia de caracteres enmarcados. Puede tener hasta cuatro caracteres imprimibles, utilizados para enmarcar cada valor alfanumérico del archivo. La mayoría de los caracteres alfanuméricos debe usarse como toda o parte de la secuencia de enmarcado. Sin embargo, los dígitos numéricos y símbolos usados en números, como un punto (.), signo más (+) o menos (-), no pueden usarse en la secuencia de enmarcado. Además, tenga en cuenta que, para poden especificar una comilla simple como carácter de enmarcado, debe introducir cuatro comillas simples consecutivas. El enmarcado más común es la comilla doble.

HEADER = {YES|NO}

Especifica si se va incluir un registro de encabezado con los nombres de los campos del archivo secuencial delimitado, generado por la solicitud. El valor predeterminado es NO.



Ejemplo: Archivos máster y de acceso para un archivo delimitado por barras verticales

El archivo delimitado por barras verticales, llamado PIPE1, contiene los siguientes datos, con cada valor de datos delimitado por una barra vertical (|). Tenga en cuenta que se puede crear un archivo delimitado como salida de una solicitud, mediante el uso del comando HOLD FORMAT DFIX en la misma:

EAST|2000|3907|1145655.77    
EAST|2001|495922|127004359.88
EAST|2002|543678|137470917.05
NORTH|2001|337168|85750735.54
NORTH|2002|370031|92609802.80
SOUTH|2000|3141|852550.45    
SOUTH|2001|393155|99822662.88
SOUTH|2002|431575|107858412.0
WEST|2001|155252|39167974.18 
WEST|2002|170421|42339953.45 

El archivo máster PIPE1 es:

FILENAME=PIPE1   , SUFFIX=DFIX    , $                           
  SEGMENT=PIPE1, SEGTYPE=S2, $                                  
    FIELDNAME=REGION, ALIAS=E01, USAGE=A5, ACTUAL=A05, $        
    FIELDNAME=YEAR, ALIAS=E02, USAGE=YY, ACTUAL=A04, $
    FIELDNAME=QUANTITY, ALIAS=E03, USAGE=I8C, ACTUAL=A08, $     
    FIELDNAME=LINEPRICE, ALIAS=E04, USAGE=D12.2MC, ACTUAL=A12, $

El archivo de acceso PIPE1 es:

SEGNAME=PIPE1, DELIMITER=|, HEADER=NO, $

En la siguiente versión del archivo delimitado PIPE1, cada valor alfanumérico aparece entre comillas dobles:

"EAST"|2000|3907|1145655.77     
"EAST"|2001|495922|127004359.88 
"EAST"|2002|543678|137470917.05 
"NORTH"|2001|337168|85750735.54 
"NORTH"|2002|370031|92609802.80 
"SOUTH"|2000|3141|852550.45     
"SOUTH"|2001|393155|99822662.88 
"SOUTH"|2002|431575|107858412.01
"WEST"|2001|155252|39167974.18  
"WEST"|2002|170421|42339953.45  

El archivo máster no cambia, aunque, ahora, el archivo de acceso especifica el carácter de cierre:

SEGNAME=PIPE1, DELIMITER=|, ENCLOSURE=", $

En esta versión del archivo delimitado PIPE1, el primer registro especifica el nombre de cada campo y los valores alfanuméricos están colocados entre comillas dobles:

"REGION"|"YEAR"|"QUANTITY"|"LINEPRICE"
"EAST"|2000|3907|1145655.77           
"EAST"|2001|495922|127004359.88       
"EAST"|2002|543678|137470917.05       
"NORTH"|2001|337168|85750735.54       
"NORTH"|2002|370031|92609802.80       
"SOUTH"|2000|3141|852550.45           
"SOUTH"|2001|393155|99822662.88       
"SOUTH"|2002|431575|107858412.01      
"WEST"|2001|155252|39167974.18        
"WEST"|2002|170421|42339953.45        

El archivo máster permanece igual. Ahora, el archivo de acceso especifica que existe un registro de encabezado en el archivo de datos:

SEGNAME=PIPE1, DELIMITER=|, ENCLOSURE=", HEADER=YES, $

WebFOCUS