Conversión de fichero de longitud variable a fija y viceversa

La conversión de un fichero de longitud variable a fija y viceversa en un Sort se hace mediante las opciones VTOF y FTOV del parámetro OUTFIL del Sort.

Recordemos que el parámetro OUTFIL permite generar de 1 a n ficheros de salida. Cada uno de estos puede ser construido de forma independiente mediante instrucciones BUILD o OUTREC y condiciones INCLUDE u OMIT.

Conversión de variable a fija

La opción VTOF (o su sinónimo CONVERT) incluida en un grupo OUTFIL indica que los registros de entrada de longitud variable deben ser convertidos a longitud fija.

Se debe incluir también un parámetro BUILD o OUTREC, que generará un registro reformateado de longitud fija sin el descriptor de registro de 4 bytes (los datos comenzarán en la posición 1).

Los campos que se incluyan en el parámetro BUILD o OUTREC deberán estar referidos a los registros de entrada de longitud variable (los datos empiezan en la posición 5).

VTOF utiliza por defecto la opción VLFILL=X’40’ (relleno con espacios) para que sea posible procesar registros de entrada de longitud variable que sean demasiado cortos para contener todos los campos especificados en BUILD o OUTREC.

El formato de registro del fichero de salida será FB por defecto. Y si se especifica, deberá ser FB u otro de los de longitud fija

Si se utiliza VTOF con FTOV, IFTRAIL, IFTHEN, FINDREP u OVERLAY, el Sort terminará con error.

Ejemplo:

//SORT006  EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DSN=ENTRADA...,
//         DISP=SHR
//SALIDA1  DD DSN=SALIDA...,
//         DCB=(RECFM=FB,LRECL=300,BLKSIZE=0,DSORG=PS),
//         DISP=(,CATLG,DELETE),
//         SPACE=(TRK,(2,1),RLSE)
//SYSIN    DD *
SORT     FIELDS=COPY
OUTFIL   FNAMES=SALIDA1,VTOF,BUILD=(5,300)
/*

* En vez de VTOF podemos usar su sinónimo CONVERT:

OUTFIL   FNAMES=SALIDA1,CONVERT,BUILD=(5,300)

Conversión de fija a variable

FTOV incluida en un grupo OUTFIL indica que los registros de entrada de longitud fija deben ser convertidos a longitud variable.

Si no se incluye un parametro OUTREC, BUILD, OVERLAY, FINDREP o IFTHEN, los registros de entrada de longitud fija completos se transforma en registros de salida de longitud variable

Si se incluye un parametro OUTREC, BUILD, OVERLAY, FINDREP o IFTHEN, los campos especificados se transforman en registros de salida de longitud variable.

En los dos casos, antes de escribir los registros de salida se les añade un descriptor de registro de 4 bytes (los datos empiezan en la posición 5).

Los campos especificados en OUTREC, BUILD, OVERLAY, FINDREP o IFTHEN deberán estar referidos a los registros de entrada de longitud fija (los datos empiezan en la posición 1).

El formato de registro del fichero de salida del OUTFIL será VB por defecto. Y si se especifica, deberá ser FB o cualquier otro de longitud variable.

Si no se especifica el parámetro LRECL para el fichero de salida, se le dará una longitud que permita contener el registro de mayor longitud.

Ejemplo:

EXEC  PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DISP=SHR,DSN=ENTRADA…
//SALIDA   DD DSN=SALIDA…
//          DISP=(NEW,CATLG,DELETE),
//          LRECL=448,RECFM=VB,DSORG=PS
//SYSIN    DD *
OPTION COPY
OUTFIL FNAMES=SALIDA,FTOV,OUTREC=(1:1,444)
/*

Fuente: DFSORT Application Programming Guide v1R13

Deja un comentario