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