Hola a todos.
Hace unos días un amigo me contaba que tenía un fichero que generaba desde Java, y que le llegaba a host con espacios al final.
Él necesitaba cambiar esos espacios a low-values y me preguntaba cómo hacerlo por JCL.
Así que aprovecho y os enseño este job facilito para reemplazar algunos valores de tu fichero usando OUTREC FINDREP, como complemento al artículo SORT vol.2: OUTREC donde explicábamos el uso de CHANGE.
Imaginad que tenemos un fichero de longitud variable que viene relleno con espacios al final de los datos:
Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 ENTRADA1
CDEDCCCF4444444444444444444444444444444444444444444444444444444444444444
553914110000000000000000000000000000000000000000000000000000000000000000
------------------------------------------------------------------------------
000002 ENTRADA1MASCOSAS
CDEDCCCFDCECDECE44444444444444444444444444444444444444444444444444444444
553914114123621200000000000000000000000000000000000000000000000000000000
------------------------------------------------------------------------------
****** **************************** Bottom of Data ****************************
Y que queremos reemplazar esos espacios por low-values.
JCL:
//*******************************************
//* SORT REPLACE DE ESPACIOS POR LOW-VALUES
//*******************************************
//REPLACE EXEC PGM=SORT
//SORTIN DD DSN=ENTRADA.OUTRECVB,DISP=SHR
//SORTOUT DD DSN=ENTRADA.OUTRECVB.SAL,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,(200,50),RLSE)
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FINDREP=(IN=(X'40'),OUT=(X'00'))
/*
Podéis poner varios valores en IN, y pueden ser caracteres alfanuméricos (un guión, una letra, un número....), parejas de reemplazo...
Tenéis un montón de ejemplos de FINDREP en este enlace de IBM.
NOTA: Tened en cuenta que si reemplazáis una cadena (por ejemplo 'HOLA') por otra con diferente longitud (por ejemplo 'HI'), se eliminarán las posiciones sobrantes, es decir, si en mi fichero de entrada tenía:
HOLATALLIAN
En el de salida tendré
HITALLIAN
:-)
Saludos!
2 comentarios:
Esta super bueno este articulo, pero quisiera saber si tambien aplicaria con c (X'40') (X'00') all
Yo digo que si aplica con el "C", pero hay archivos tan grandes que no te deja usar los comandos, adicional a que en ambientes productivos en ocasiones no se tiene privilegios para modificar los archivos mas que por JOB