Como saber el tamaño de un registro.

Todo lo relacionado con TSO e ISPF.
Responder
changeman

Como saber el tamaño de un registro.

Mensaje por changeman » 16 Mar 2009, 06:58

Hola,

Tengo un fichero VSAM definido con registros de tamaño variable.

El problema es que al verlo por la 3.4 no se como ver el tamaño de uno de los registros del fichero.

Se que en los VSAM definidos como VB se incluye una marca de cuatro posiciones que indica el tamaño de cada registro pero no la veo por ningun lado. :pensando:

¿Cómo puedo saber el tamaño de un registro de un fichero variable?

Saludos

Avatar de Usuario
carlossperoni
Colaborador
Colaborador
Mensajes: 106
Registrado: 10 Jun 2005, 19:05
País: Argentina
Ciudad: Vicente Lopéz
Ocupación: System Programmer
Ubicación: Vicente Lopéz - Argentina

Re: Como saber el tamaño de un registro.

Mensaje por carlossperoni » 16 Mar 2009, 19:38

Primero que nada asumo que lo que estas viendo es un fichero QSAM VB dado que en VSAM no existe el concepto o formato de bloques, por lo tanto no existe el formato VB.
En los QSAM V o VB los registros están precedidos por un campo de 4 bytes en los cuales se encuentra en binario su longitud, pero la función de BROWSE del ISPF no muestra esos cuatro bytes.

Supongo que tu problema es que al ver los registros no puedes determinar exactamente donde terminan dado que si terminan en blancos o en algún carácter no representables no los muestra.
Para determinar donde exactamente finaliza el registro puedes verlo en HEX con lo cual por medio de la representación hexadecimal podrás ver todos los bytes contiene.

Ejemplo:

Supongamos que quiero saber la longitud del ultimo de los registro que aqui se muestra

Código: Seleccionar todo

 BROWSE    MI.FICHERO                                 Line 00000562 Col 018 097 
 Command ===>                                                  Scroll ===> CSR  
pix.st_filefmt=st.st_filefmt                                                    
st_type=s_issym  then                                                           
ress syscall 'readlink (dpath) paths.'pix'.0'                                   
                                                                                
******************************** Bottom of Data ********************************
Primero que nada ingreso el comando 'COLS' para que me muestre la linea con los numeros de columnas

Código: Seleccionar todo

 BROWSE    MI.FICHERO                                 Line 00000562 Col 018 097 
 Command ===> HEX ON                                           Scroll ===> CSR  
--2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+--
pix.st_filefmt=st.st_filefmt                                                    
st_type=s_issym  then                                                           
ress syscall 'readlink (dpath) paths.'pix'.0'                                   
                                                                                
******************************** Bottom of Data ********************************
Luego ingreso el comando 'HEX ON' para tambien que me muestre los registros en hexadecimal

Código: Seleccionar todo

 BROWSE    MI.FICHERO                                 Line 00000562 Col 018 097 
 Command ===>                                                  Scroll ===> CSR  
--2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+--
--F----+----F----+----F----+----F----+----F----+----F----+----F----+----F----+--
--2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+--
 ------------------------------------------------------------------------------ 
pix.st_filefmt=st.st_filefmt                                                    
98A4AA6889889A7AA4AA6889889A                                                    
797B23D6935643E23B23D6935643                                                    
 ------------------------------------------------------------------------------ 
st_type=s_issym  then                                                           
AA6AA987A68AAA944A889                                                           
23D3875E2D92284003855                                                           
 ------------------------------------------------------------------------------ 
ress syscall 'readlink (dpath) paths.'pix'.0'                                   
98AA4AAA8899479888989944898A85498A8A4798A74F74444                                   
9522028231330D951439520D47138D071382BD797DB0D0000                                   
 ------------------------------------------------------------------------------ 
                                                A 
                                                | 
                                                | 
Ahora con la representacion hex puedo ver que   |
esta es la ultima columna del registro y por
medio del cols se que es la 66.
Espero que esto ayude, y si este no era el problema por favor aclaralo.
Carlos Emilio Speroni
Vicente Lopéz - Argentina

El GoTo no es el malo de la película, los malos son algunos programadores.
Si no existiese la instrucción branch (GoTo) los procesadores no servirían para nada.

changeman

Re: Como saber el tamaño de un registro.

Mensaje por changeman » 27 Mar 2009, 07:11

si, me faltaba lo de la presentación en HEX.

Gracias por la respuesta. :arriba:

Responder