Cómo crear un archivo secuencial delimitado

Cómo:

Referencia:

Puede emplear el comando HOLD FORMAT DFIX para crear un archivo secuencial alfanumérico, delimitado por cualquier carácter o combinación de caracteres. Además, puede especificar que los valores alfanuméricos aparezcan entre comillas u otro carácter de cierre, si desea incluir un encabezado de registro con los nombres de los campos o mantener los espacios en blanco iniciales y finales en los datos alfanuméricos.

Se crea un archivo máster y un archivo de acceso para describir el archivo secuencial delimitado que se genera. El valor de SUFFIX en el archivo máster es DFIX. El archivo de acceso especifica el delimitador, el carácter enmarcado (si lo hay), si se mantienen, o no, los espacios en blanco iniciales y finales en los datos alfanuméricos, o la inclusión de un registro de encabezado. Los archivos máster y de acceso resultan útiles para leer el archivo secuencial más adelante, mediante WebFOCUS.


Principio de página

x
Sintaxis: Cómo Crear un archivo secuencial delimitado
ON TABLE {HOLD|PCHOLD} [AS filename] FORMAT DFIX
         DELIMITER delimiter [ENCLOSURE enclosure] [HEADER {YES|NO}] [PRESERVESPACE {YES|NO}]

donde:

filename
Es el nombre del archivo que se va a crear. Si no especifica un nombre, el nombre predeterminado es HOLD.
delimiter

Es la secuencia del delimitador; puede incluir hasta 30 caracteres imprimibles o 30 caracteres que no se pueden imprimir y no son nulos. (Esto representa la semántica de caracteres. Por ejemplo, si está usando caracteres DBCS, el delimitador puede tener hasta 60 bytes.) 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. Con caracteres imprimibles, puede utilizar los caracteres mismos o sus equivalentes hexadecimales (por ejemplo, el carácter ampersand puede ser interpretado como el principio del nombre de una variable, en lugar de como parte del delimitador). 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).

enclosure

Es la secuencia de caracteres enmarcados. Puede tener hasta cuatro caracteres imprimibles (o no imprimibles), utilizados para enmarcar cada valor alfanumérico del archivo. (Esto representa la semántica de caracteres; por ejemplo, si está usando caracteres DBCS, el delimitador puede tener hasta 8 bytes.) 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.

Si usa una combinación de caracteres que puedan o no puedan imprimirse, debe introducir todos como valores hexadecimales. Con caracteres imprimibles, puede utilizar los caracteres mismos o sus equivalentes hexadecimales (por ejemplo, el carácter ampersand puede ser interpretado como el principio del nombre de una variable, en lugar de como parte del enmarcado).

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.
PRESERVESPACE {YES|NO}

Especifica si se mantienen los espacios en blancos iniciales y finales en los datos alfanuméricos. YES preserva estos espacios. NO sólo preserva los espacios que estén incluidos en los caracteres enmarcados. El valor predeterminado es NO.

Note: PRESERVESPACE queda anulado por la opción ENCLOSURE. Por tanto, para que se respete la propiedad PRESERVESPACE, excluya la opción de enmarcado.


Principio de página

x
Referencia: Notas de uso para HOLD FORMAT DFIX


Ejemplo: Cómo crear un archivo delimitado por barras verticales

La siguiente solicitud, emitida basada en el origen de datos CENTORD, crea un archivo secuencial llamado PIPE1 con campos separados mediante una barra vertical (|). Los valores alfanuméricos no están entre comillas y no hay un encabezado de registro:

TABLE FILE CENTORD                           
SUM QUANTITY LINEPRICE BY REGION BY YEAR  
ON TABLE HOLD AS PIPE1 FORMAT DFIX DELIMITER |
END

El archivo máster PIPE1 especifica el valor SUFFIX como DFIX:

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 especifica el delimitador:

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

El archivo secuencial PIPE1 contiene los datos siguientes. Cada valor de datos está separado del siguiente mediante una barra vertical.

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

La siguiente versión del comando HOLD especifica el delimitador y un carácter de enmarcado (“):

ON TABLE HOLD AS PIPE1 FORMAT DFIX DELIMITER | ENCLOSURE "

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

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

En el archivo delimitado que se crea, cada valor de datos está separado del siguiente mediante una barra vertical. Los caracteres alfanuméricos están 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

Esta versión del comando HOLD añade un registro de encabezado al archivo generado:

ON TABLE HOLD AS PIPE1 FORMAT DFIX DELIMITER |  ENCLOSURE "  HEADER YES

El archivo máster no cambia, aunque, ahora, el archivo de acceso especifica que el archivo secuencial generado debe contener un registro de encabezado, con nombres de columnas como primer registro:

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

En el archivo delimitado que se crea, cada valor de datos está separado del siguiente mediante una barra vertical. Los caracteres alfanuméricos están entre comillas dobles. El primer registro contiene los nombres de columnas:

"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


Ejemplo: Cómo crear un archivo delimitado por pestañas

La siguiente solicitud, emitida basada en el origen de datos CENTORD, crea un archivo secuencial llamado TAB1, con los campos separados mediante un carácter de pestaña.

TABLE FILE CENTORD                              
SUM QUANTITY LINEPRICE BY REGION BY YEAR     
ON TABLE HOLD AS TAB1 FORMAT DFIX DELIMITER TAB
END

Puesto que el carácter de pestaña no se puede imprimir, el archivo de acceso TAB1 especifica el delimitador utilizando su valor hexadecimal.

A continuación, el archivo de acceso en un entorno EBCDIC:

SEGNAME=TAB1, DELIMITER=0x05, HEADER=NO, $

A continuación, el archivo de acceso en un entorno ASCII:

SEGNAME=TAB1, DELIMITER=0x09, HEADER=NO, $


Ejemplo: Cómo crear un archivo delimitado con espacios en blanco

La siguiente solicitud, basada en el origen de datos GGSALES, produce un archivo delimitado por comas. Los datos alfanuméricos originales presentan espacios en blanco finales. La opción PRESERVESPACE YES, en el comando HOLD, mantiene estos espacios en blanco finales:

APP HOLDDATA APP1
APP HOLDMETA APP1
TABLE FILE GGSALES
SUM DOLLARS UNITS
BY REGION
BY CATEGORY
BY PRODUCT
ON TABLE HOLD AS DFIX1 FORMAT DFIX DELIMITER , PRESERVESPACE YES
END

Se genera el siguiente archivo máster:

FILENAME=DFIX1   , SUFFIX=DFIX    , $
  SEGMENT=DFIX1, SEGTYPE=S3, $
    FIELDNAME=REGION, ALIAS=E01, USAGE=A11, ACTUAL=A11, $
    FIELDNAME=CATEGORY, ALIAS=E02, USAGE=A11, ACTUAL=A11, $
    FIELDNAME=PRODUCT, ALIAS=E03, USAGE=A16, ACTUAL=A16, $
    FIELDNAME=DOLLARS, ALIAS=E04, USAGE=I08, ACTUAL=A08, $
    FIELDNAME=UNITS, ALIAS=E05, USAGE=I08, ACTUAL=A08, $

Se genera el siguiente archivo de acceso:

SEGNAME=DFIX1, DELIMITER=',', HEADER=NO, PRESERVESPACE=YES, $

En el archivo DFIX1, los campos alfanuméricos contienen todos los espacios en blanco del archivo original:

Midwest    ,Coffee     ,Espresso        ,1294947,101154
Midwest    ,Coffee     ,Latte           ,2883566,231623
Midwest    ,Food       ,Biscotti        ,1091727,86105
Midwest    ,Food       ,Croissant       ,1751124,139182
Midwest    ,Food       ,Scone           ,1495420,116127
Midwest    ,Gifts      ,Coffee Grinder  ,619154,50393
Midwest    ,Gifts      ,Coffee Pot      ,599878,47156
Midwest    ,Gifts      ,Mug             ,1086943,86718
Midwest    ,Gifts      ,Thermos         ,577906,46587
Northeast  ,Coffee     ,Capuccino       ,542095,44785
Northeast  ,Coffee     ,Espresso        ,850107,68127
Northeast  ,Coffee     ,Latte           ,2771815,222866
Northeast  ,Food       ,Biscotti        ,1802005,145242
Northeast  ,Food       ,Croissant       ,1670818,137394
Northeast  ,Food       ,Scone           ,907171,70732
Northeast  ,Gifts      ,Coffee Grinder  ,509200,40977
Northeast  ,Gifts      ,Coffee Pot      ,590780,46185
Northeast  ,Gifts      ,Mug             ,1144211,91497
Northeast  ,Gifts      ,Thermos         ,604098,48870
Southeast  ,Coffee     ,Capuccino       ,944000,73264
Southeast  ,Coffee     ,Espresso        ,853572,68030
Southeast  ,Coffee     ,Latte           ,2617836,209654
Southeast  ,Food       ,Biscotti        ,1505717,119594
Southeast  ,Food       ,Croissant       ,1902359,156456
Southeast  ,Food       ,Scone           ,900655,73779
Southeast  ,Gifts      ,Coffee Grinder  ,605777,47083
Southeast  ,Gifts      ,Coffee Pot      ,645303,49922
Southeast  ,Gifts      ,Mug             ,1102703,88474
Southeast  ,Gifts      ,Thermos         ,632457,48976
West       ,Coffee     ,Capuccino       ,895495,71168
West       ,Coffee     ,Espresso        ,907617,71675
West       ,Coffee     ,Latte           ,2670405,213920
West       ,Food       ,Biscotti        ,863868,70436
West       ,Food       ,Croissant       ,2425601,197022
West       ,Food       ,Scone           ,912868,72776
West       ,Gifts      ,Coffee Grinder  ,603436,48081
West       ,Gifts      ,Coffee Pot      ,613624,47432
West       ,Gifts      ,Mug             ,1188664,93881
West       ,Gifts      ,Thermos         ,571368,45648

Para eliminar los espacios finales, cree el mismo archivo con PRESERVESPACE NO:

Midwest,Coffee,Espresso,1294947,101154
Midwest,Coffee,Latte,2883566,231623
Midwest,Food,Biscotti,1091727,86105
Midwest,Food,Croissant,1751124,139182
Midwest,Food,Scone,1495420,116127
Midwest,Gifts,Coffee Grinder,619154,50393
Midwest,Gifts,Coffee Pot,599878,47156
Midwest,Gifts,Mug,1086943,86718
Midwest,Gifts,Thermos,577906,46587
Northeast,Coffee,Capuccino,542095,44785
Northeast,Coffee,Espresso,850107,68127
Northeast,Coffee,Latte,2771815,222866
Northeast,Food,Biscotti,1802005,145242
Northeast,Food,Croissant,1670818,137394
Northeast,Food,Scone,907171,70732
Northeast,Gifts,Coffee Grinder,509200,40977
Northeast,Gifts,Coffee Pot,590780,46185
Northeast,Gifts,Mug,1144211,91497
Northeast,Gifts,Thermos,604098,48870
Southeast,Coffee,Capuccino,944000,73264
Southeast,Coffee,Espresso,853572,68030
Southeast,Coffee,Latte,2617836,209654
Southeast,Food,Biscotti,1505717,119594
Southeast,Food,Croissant,1902359,156456
Southeast,Food,Scone,900655,73779
Southeast,Gifts,Coffee Grinder,605777,47083
Southeast,Gifts,Coffee Pot,645303,49922
Southeast,Gifts,Mug,1102703,88474
Southeast,Gifts,Thermos,632457,48976
West,Coffee,Capuccino,895495,71168
West,Coffee,Espresso,907617,71675
West,Coffee,Latte,2670405,213920
West,Food,Biscotti,863868,70436
West,Food,Croissant,2425601,197022
West,Food,Scone,912868,72776
West,Gifts,Coffee Grinder,603436,48081
West,Gifts,Coffee Pot,613624,47432
West,Gifts,Mug,1188664,93881
West,Gifts,Thermos,571368,45648


Ejemplo: Datos no disponibles en el archivo HOLD

La siguiente solicitud, emitida basada en el origen de datos CENTORD, genera valores alfanuméricos y numéricos no disponibles en el archivo HOLD delimitado por comas, resultante:

DEFINE FILE CENTORD                                                 
AREA/A5 MISSING ON = IF REGION EQ 'EAST' THEN MISSING ELSE REGION;  
MQUANTITY/I9 MISSING ON = IF REGION EQ 'WEST' THEN MISSING ELSE 200;
END                                                                 
                                                                    
TABLE FILE CENTORD                                                  
SUM QUANTITY MQUANTITY LINEPRICE BY AREA BY YEAR                 
WHERE AREA NE 'NORTH' OR 'SOUTH'                                 
  ON TABLE HOLD AS MISS1 FORMAT DFIX DELIMITER , ENCLOSURE "        
END

En el archivo MISS1 HOLD, los valores alfanuméricos no disponibles se indican mediante dos caracteres de enmarcado seguidos (““), mientras que los valores numéricos no disponibles se indican por medio de dos delimitadores seguidos (,,):

"",2000,3907,600,1145655.77       
"",2001,495922,343000,127004359.88
"",2002,543678,343000,137470917.05
"WEST",2001,155252,,39167974.18   
"WEST",2002,170421,,42339953.45

WebFOCUS