Oct 06

Este JCL mostrará el uso de los parámetros SKIP y COUNT del programa IDCAMS para poder seleccionar secciones de un archivo secuencial.

SKIP : Omite N registros desde el inicio del archivo.
COUNT : Selecciona los N registros indicados a partir del inicio del archivo o en combinación con SKIP desde el registro siguiente del omitido.

Ejemplo:
Para este ejemplo usaremos un archivo secuencial de longitud fija de 80 caracteres el cual contiene 20 líneas de información, el contenido es el siguiente:

****** ***************************** Top of Data ******************************
000100 REGISTRO_001
000200 REGISTRO_002
000300 REGISTRO_003
000400 REGISTRO_004
000500 REGISTRO_005
000600 REGISTRO_006
000700 REGISTRO_007
000800 REGISTRO_008
000900 REGISTRO_009
001000 REGISTRO_010
001100 REGISTRO_011
001200 REGISTRO_012
001300 REGISTRO_013
001400 REGISTRO_014
001500 REGISTRO_015
001600 REGISTRO_016
001700 REGISTRO_017
001800 REGISTRO_018
001900 REGISTRO_019
002000 REGISTRO_020
****** **************************** Bottom of Data ****************************

COUNT :
Lo que haremos será seleccionar los primero 5 registros desde el archivo origen, el truco radica en la línea 18 “COUNT(5)“:

//ADJRIDC0 JOB (EEHA,1),'IDCAMS',REGION=0M,
// MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,
// NOTIFY=M818439
//*-------------------------------------------------------------------
//STEP001 EXEC PGM=IDCAMS,DYNAMNBR=20,COND=(0,LT)
//*
//INF001 DD DSN=M818439.TEST.IDCAMS,
// DISP=SHR
//*
//OUT001 DD DSN=M818439.TEST.IDCAMS.COUNT,
// DISP=(NEW,CATLG,DELETE),
// UNIT=3390,SPACE=(CYL,(1,1),RLSE),
// DCB=(M818439.TEST.IDCAMS)
//*
//SYSPRINT DD SYSOUT=*
//AMSDUMP DD SYSOUT=*
//SYSIN DD *
REPRO IFILE(INF001) OFILE(OUT001) COUNT(5)
/*
//*-------------------------------------------------------------------

Resultado:

****** ***************************** Top of Data ******************************
000100 REGISTRO_001
000200 REGISTRO_002
000300 REGISTRO_003
000400 REGISTRO_004
000500 REGISTRO_005
****** **************************** Bottom of Data ****************************

SKIP :
Ahora omitiremos los primeros 15 registros desde el archivo origen, el truco radica en la línea 18 “SKIP(15)“:

//ADJRIDC0 JOB (EEHA,1),'IDCAMS',REGION=0M,
// MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,
// NOTIFY=M818439
//*-------------------------------------------------------------------
//STEP001 EXEC PGM=IDCAMS,DYNAMNBR=20,COND=(0,LT)
//*
//INF001 DD DSN=M818439.TEST.IDCAMS,
// DISP=SHR
//*
//OUT001 DD DSN=M818439.TEST.IDCAMS.SKIP,
// DISP=(NEW,CATLG,DELETE),
// UNIT=3390,SPACE=(CYL,(1,1),RLSE),
// DCB=(M818439.TEST.IDCAMS)
//*
//SYSPRINT DD SYSOUT=*
//AMSDUMP DD SYSOUT=*
//SYSIN DD *
REPRO IFILE(INF001) OFILE(OUT001) SKIP(15)
/*
//*-------------------------------------------------------------------

Resultado:

****** ***************************** Top of Data ******************************
001600 REGISTRO_016
001700 REGISTRO_017
001800 REGISTRO_018
001900 REGISTRO_019
002000 REGISTRO_020
****** **************************** Bottom of Data ****************************

SKIP + COUNT :

Por último una combinación de ambos parámetros, en donde omitiremos los primeros 5 registros y grabaremos en el archivo de salida sólo los siguientes 10, el truco radica en la línea 18 “SKIP(05) COUNT(10)“:

//ADJRIDC0 JOB (EEHA,1),'IDCAMS',REGION=0M,
// MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,
// NOTIFY=M818439
//*-------------------------------------------------------------------
//STEP001 EXEC PGM=IDCAMS,DYNAMNBR=20,COND=(0,LT)
//*
//INF001 DD DSN=M818439.TEST.IDCAMS,
// DISP=SHR
//*
//OUT001 DD DSN=M818439.TEST.IDCAMS.SKIP.COUNT,
// DISP=(NEW,CATLG,DELETE),
// UNIT=3390,SPACE=(CYL,(1,1),RLSE),
// DCB=(M818439.TEST.IDCAMS)
//*
//SYSPRINT DD SYSOUT=*
//AMSDUMP DD SYSOUT=*
//SYSIN DD *
REPRO IFILE(INF001) OFILE(OUT001) SKIP(05) COUNT(10)
/*
//*-------------------------------------------------------------------

Resultado:

****** ***************************** Top of Data ******************************
000600 REGISTRO_006
000700 REGISTRO_007
000800 REGISTRO_008
000900 REGISTRO_009
001000 REGISTRO_010
001100 REGISTRO_011
001200 REGISTRO_012
001300 REGISTRO_013
001400 REGISTRO_014
001500 REGISTRO_015
****** **************************** Bottom of Data ****************************

Leave a Reply

preload preload preload