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.
ON TABLE {HOLD|PCHOLD} [AS filename] FORMAT DFIX DELIMITER delimiter [ENCLOSURE enclosure] [HEADER {YES|NO}] [PRESERVESPACE {YES|NO}]
donde:
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).
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).
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.
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
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, $
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
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 |