Ficheros secuenciales con datos empaquetados
Cuando trabajamos con ficheros secuenciales, lo normal es
que los registros de los mismos vayan con formato numérico o alfanumérico no
comprimido, ya que es el tipo que suele ser más fácil de manejar. Sin embargo,
en ocasiones, la necesidad de ahorro de espacio nos puede obligar a trabajar
con ficheros con datos en formato empaquetado (COMP-3). La visualización de la
información no se realizará del mismo modo en un caso o en otro.
Para tener clara esta diferencia podemos mostrar unos
ejemplos. Vamos a acceder al contenido de los ficheros JJPR.UNLOAD.X0005X.POBL
y JJPR.UNLOAD.X0005X.POBL2. El primero de ellos está en formato alfanumérico y
el segundo contiene algunos campos con formato comprimido COMP-3.
Los registros del fichero alfanumérico son los siguientes (JJPR.UNLOAD.X0005X.POBL).
Los registros del fichero alfanumérico son los siguientes (JJPR.UNLOAD.X0005X.POBL).
=COLS> ----+----1----+----2----+----3----+----4
****** ***************************** Top of Data ***
000001 A-000020-MADRID.................MAD00100
000002 B-000019-CIUDAD REAL............CRE00200
000003 A-000018-BARCELONA..............BAR00300
000004 A-000017-VALENCIA...............VAL00400
000005 A-000015-ZARAGOZA...............ZAR00600
000006 B-000014-CASTELLON..............CAS00700
000007 B-000012-GRANADA................GRA00900
000008 B-000011-TOLEDO.................TOL01000
000009 B-000010-SEGOVIA................SEG01100
000010 B-000002-ALMERIA................ALM01300
000011 B-000004-SANTANDER..............SAN01500
000012 B-000005-TARRAGONA..............TAR01600
000013 B-000006-BADAJOZ................BAD01700
000014 B-000007-SALAMANCA..............SAL01800
000015 B-000008-BURGOS.................BUR01900
=COLS> ----+----1----+----2----+----3----+----4
****** **************************** Bottom of Data ***
En cambio, el contenido del fichero empaquetado tiene el siguiente aspecto (JJPR.UNLOAD.X0005X.POBL2).
=COLS> ----+----1----+----2----+----3----+--
****** ***************************** Top of Data ***
000001 A- -MADRID.................MAD
000002 B- æ-CIUDAD REAL............CRE
000003 A- ð-BARCELONA..............BAR
000004 A- @-VALENCIA...............VAL
000005 A- *-ZARAGOZA...............ZAR -
000006 B- <-CASTELLON..............CAS ø
000007 B- -GRANADA................GRA °
000008 B- -TOLEDO.................TOL
000009 B- -SEGOVIA................SEG
000010 B- -ALMERIA................ALM
000011 B- <-SANTANDER..............SAN &
000012 B- *-TARRAGONA..............TAR -
000013 B- %-BADAJOZ................BAD ø
000014 B- @-SALAMANCA..............SAL Ø
000015 B- ð-BURGOS.................BUR °
=COLS> ----+----1----+----2----+----3----+--
****** **************************** Bottom of Data ***
Como vemos, los registros del primer fichero son perfectamente legibles sin ninguna acción adicional. Sin embargo, el contenido del segundo fichero aparece con caracteres extraños (formato empaquetado), haciendo imposible identificar los códigos almacenados en sus registros.
¿Cómo visualizar un fichero comprimido?
A continuación, vamos a ver qué es lo que debería hacerse para visualizar el contenido de un fichero comprimido. Se trata de algo muy sencillo pero que, si no conocemos, nos provocará bastantes quebraderos de cabeza al enfrentarnos con campos COMP-3.
Lo que debemos hacer es lo siguiente. En primer lugar, realizamos la apertura del fichero desde la herramienta ISPF. Posteriormente, nos situamos en la línea de comandos COMMAND e introducimos la sentencia HEX ON (activar hexadecimal).
EDIT JJPR.UNLOAD.X0005X.POBL2
Command ===> HEX ON
=COLS> ----+----1----+----2----+----3----+--
A continuación, pulsamos INTRO y la utilidad pasará a mostrarnos el contenido de los campos comprimidos en COMP-3.
=COLS> ----+----1----+----2----+----3----+--
****** ***************************** Top of Data ***
000001 A- -MADRID.................MAD
C600006DCCDCC44444444444444444DCC0010
10002C0414994BBBBBBBBBBBBBBBBB414000C
---------------------------------------------------
000002 B- æ-CIUDAD REAL............CRE
C600096CCECCC4DCCD444444444444CDC0020
20001C039441409513BBBBBBBBBBBB395000C
---------------------------------------------------
000003 A- ð-BARCELONA..............BAR
C600086CCDCCDDDC44444444444444CCD0030
10001C0219353651BBBBBBBBBBBBBB219000C
---------------------------------------------------
000004 A- @-VALENCIA...............VAL
C600076ECDCDCCC444444444444444ECD0040
10001C051355391BBBBBBBBBBBBBBB513000C
000005 A- *-ZARAGOZA...............ZAR -
C600056ECDCCDEC444444444444444ECD0060
10001C091917691BBBBBBBBBBBBBBB919000C
----------------------------------------------------
000006 B- <-CASTELLON..............CAS ø
C600046CCEECDDDD44444444444444CCE0070
20001C0312353365BBBBBBBBBBBBBB312000C
----------------------------------------------------
000007 B- -GRANADA................GRA °
C600026CDCDCCC4444444444444444CDC0090
20001C07915141BBBBBBBBBBBBBBBB791000C
----------------------------------------------------
000008 B- -TOLEDO.................TOL
C600016EDDCCD44444444444444444EDD0000
20001C0363546BBBBBBBBBBBBBBBBB363010C
----------------------------------------------------
000009 B- -SEGOVIA................SEG
C600006ECCDECC4444444444444444ECC0010
20001C02576591BBBBBBBBBBBBBBBB257010C
----------------------------------------------------
000010 B- -ALMERIA................ALM
C600026CDDCDCC4444444444444444CDD0030
20000C01345991BBBBBBBBBBBBBBBB134010C
----------------------------------------------------
000011 B- <-SANTANDER..............SAN &
C600046ECDECDCCD44444444444444ECD0050
20000C0215315459BBBBBBBBBBBBBB215010C
----------------------------------------------------
000012 B- *-TARRAGONA..............TAR -
C600056ECDDCCDDC44444444444444ECD0060
20000C0319917651BBBBBBBBBBBBBB319010C
----------------------------------------------------
000013 B- %-BADAJOZ................BAD ø
C600066CCCCDDE4444444444444444CCC0070
20000C02141169BBBBBBBBBBBBBBBB214010C
----------------------------------------------------
000014 B- @-SALAMANCA..............SAL Ø
C600076ECDCDCDCC44444444444444ECD0080
20000C0213141531BBBBBBBBBBBBBB213010C
----------------------------------------------------
000015 B- ð-BURGOS.................BUR °
C600086CEDCDE44444444444444444CED0090
20000C0249762BBBBBBBBBBBBBBBBB249010C
----------------------------------------------------
****** **************************** Bottom of Data ***
=COLS> ----+----1----+----2----+----3----+--
Como vemos, ahora bajo cada registro comprimido original se muestran otros dos registros adicionales. En ellos aparece decodificada la información correspondiente a los campos hexadecimales.
Decodificación de campos hexadecimales
Por ejemplo, este es el registro original (no comprimido) correspondiente a MADRID.
000001 A-000020-MADRID.................MAD00100
Ahora se corresponde con estos 3 registros.
----------------------------------------------------
000001 A- -MADRID.................MAD
C600006DCCDCC44444444444444444DCC0010
10002C0414994BBBBBBBBBBBBBBBBB414000C
----------------------------------------------------
He marcado en rojo la decodificación realizada de los dos campos hexadecimales que contienen los registros de este fichero. El primero es el código interno, 000020, y el segundo es el código externo, 00100. El código interno aparece decodificado como:
0000
002C
Si leemos las líneas anteriores ordenadas de arriba a abajo y de izquierda a derecha, entonces el campo se correspondería con el siguiente número:
0000020C
Donde los 6 dígitos marcados se corresponden con el código interno original, en formato no comprimido 000020.
Del mismo modo, el código externo aparece decodificado como:
0010
000C
Si los leemos ordenados de arriba a abajo y de izquierda a derecha se corresponderían con el siguiente número:
0000100C
Al igual que en el caso anterior, los 5 dígitos marcados se corresponden con el código externo original, en formato no comprimido 00100.
Visualización de ficheros comprimidos en ISPF
Por tanto, podemos ver como el uso del comando HEX ON nos permite acceder a la decodificación numérica de los campos comprimidos de los registros afectados. Con esta sencilla operación evitaremos perder mucho tiempo tratando de descifrar el contenido de los campos hexadecimales.
Si ya conocíais esta forma de visualizar los ficheros comprimidos desde ISPF, entonces este post os habrá parecido superfluo. Sin embargo, debéis tener en cuenta que hay muchos programadores principiantes que, un buen día, se enfrentan con su primer fichero comprimido y en ese momento no saben cómo proceder para leer los datos de los registros. A ellos está dedicado este texto.
Pues nada, eso es todo por hoy. Espero que lo comentado os haya servido para aprender algo nuevo y, lo más importante, que os valga para agilizar vuestro trabajo cotidiano.
Saludos.
No hay comentarios:
Publicar un comentario