Desarrollando en Cobol y Natural sobre Plataforma Mainframe

lunes, 19 de octubre de 2015

Visualizar Fichero comprimido en ISPF

En general, la visualización del contenido de un fichero secuencial con formato estándar no suele tener ninguna complejidad asociada. Sin embargo, se requiere algo más de esfuerzo para poder observar los ficheros cuyos registros contienen campos comprimidos. A continuación, vamos a ver cómo hacerlo.

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).

=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

Related Posts Plugin for WordPress, Blogger...