reformat a registro

Manejo de almacenamiento tanto en discos como en medios magneticos, DFSMSxxx (todo lo relacionado con el SMS).
Responder
kajan

reformat a registro

Mensaje por kajan » 28 Feb 2009, 10:29

Buenas tardes, Alguien comoce un utility que pueda converir o formatear un registro de n logitud a varios registros de n longitud. ejemplo un regidtro de 6050 de logitud llevarlo a 50 registros de 121 de longitud.

El SORT tiene una facilidad de hacer esto con la opcion / en el outrec pero tendria que repetirlo 50 veces idicando la posición dentro del registro.

Gracias.

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: reformat a registro

Mensaje por carlossperoni » 03 Mar 2009, 21:21

Si es un dataset FB deberías poder hacerlo con por ejemplo un IDCAMS, en realidad hasta con un programa COBOL.
El hecho es que como el desbloqueo lo realiza en memoria el método de acceso, este utilizara la longitud de registro (LRECL) que se determine a tiempo de OPEN.

Es decir que mientras sea cumplan las siguientes condiciones:
a) el archivo de entrada es un FB
b) el nuevo LRECL sea menor que y un divisor exacto del LRECL original
c) el BLKSIZE coincida con lo que esta físicamente grabado, no hay problema.

Por ejemplo un archivo que fue grabado como FB LRECL=80,BLKSIZE=8000, lo deberías poder leer como FB,LRECL=40,BLKSIZE=8000.

Como en general los utilitarios utilizan los valores de la DCB que se completan a tiempo de open (es decir que no los especificamos por sentencias de control del utilitario), podemos jugar con ellos siguiendo la regla que utiliza el método de acceso para obtener dichos valores.

La regla es para un open de modo:

-INPUT: los valores se obtienen primero de la DCB que le pasa el programa si es que alli fueron especificados, si no se obtienen de la DD si es que allí fueron especificados, y si no por ultimo de la entrada de VTOC correspondiente al dataset.

-OUTPUT: los valores se obtienen primero de la DCB que le pasa el programa si es que alli fueron especificados, sino se obtienen de la DD si es que allí fueron especificados, y si no si el archivo existe (DISP=OLD) se obtienen de la VTOC.

Ejemplo:

Suponiendo que tenemos el archivo “tu.dataset” que esta creado como FB LRECL=80,BLKSIZE=8000, entonces si utilizamos el IDCAMS para listarlo

//PASO80 EXEC PGM=IDCAMS
//ENTRADA DSN=tu.entrada,DISP=OLD
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
PRINT INFILE(ENTRADA) DUMP COUNT(100)
/*

veras que te lista 100 registros de longitud 80 por que ese es el LRECL que obtiene de la VTOC al tiempo del OPEN.

Pero si la ENTRADA DD la codificas como:
//ENTRADA DSN=tu.entrada,DISP=OLD,DCB=(LRECL=40)

veras que te lista 100 registros de longitud 40 por que ese es el LRECL que obtiene de la DD al tiempo del OPEN, y que la informacion listada coincide secuencialmente con los primeros 50 registros del ejemplo anterior.

Esto mismo debería servirte para el input al SORT o a un REPRO del IDCAMS especificando el LRECL en la DD SORTIN o de entrada al IDCAMS, y especificando en la SORTOUT o dd de salida los nuevos valores de BLKSIZE si es que quieres rebloquearlo.

Esta modalidad de bypasear las especificaciones/características reales de un archivo FB puede resultar muy útil en algunas circunstancias para una emergencia o para realizarla nosotros por unica vez, pero no es recomendable utilizarla en procesos de producción por que es confusa para quien tiene que analizar un problema o cancelación.
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.

kajan

Re: reformat a registro

Mensaje por kajan » 04 Mar 2009, 16:52

Carlos gracias por tu tiempo y explicación. Realice la prueba y funciono perfecto con SORT e IDCAMS. A pesar que mi archivo era VB realice la conversión a FB aplique tus recomendaciones y todo bien.

Si conoces una solución directa para archivos VB no estaria de mas saberlo.

Gracias por tu ayuda.

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: reformat a registro

Mensaje por carlossperoni » 05 Mar 2009, 13:00

Lamentablemente no creo que exista una solución para los variables, el tema con ellos es que al desbloquear, el metodo de acceso obtiene la longitud del registro desde un campo binario que le precede en el bloque.
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.

Responder