Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MODULO JCL’S
INTRODUCCION
LEER
TRABAJOS INTERPRETAR
BUSCAR FICHEROS
TRABAJOS COLAS DE
TRABAJO
(1) JOB
contabilidad (1) SELECCIONAR UN TRABAJO
programador
CLASS
PRTY
(2) SELECCIONAR UN PASO
TYPRUN
MSGCLASS
MSGLEVEL
BUSCAR ESPACIO F. SALIDA
(3) ASIGNAR FICHEROS
(2) EXEC CARGAR PROGRAMAS
nombre de paso
DSNAME
DCB
UNIT SALIDA DEL PROGRAMA:
VOLUME - IMPRESA (SPOOL)
SPACE - FICHEROS
DISP (5)
(5)
DD SI
MAS PASOS
DISP=....
NO
BORRAR INFORMACION
DEL TRABAJO
TIPOS DE SENTENCIAS
El JCL está compuesto por sentencias identificadas por un nombre. Además, cada
sentencia puede incorporar una serie de parámetros para su correcta ejecución.
JOB
EXEC
DD
PROC
PEND
//*
//
Indica el final del job (sentencia nula). No es necesario indicar esta sentencia y se
suele utilizar en pruebas para realizar “cortes” temporales en una cadena, que
permite la ejecución paso a paso o de un bloque de pasos determinados, sin
necesidad de ejecutar el resto, es decir, de llegar al final del job.
/*
// //
//* //*comentarios
/* /*
Notas
Entre las dos barras, que identifican una línea de sentencia JCL, y el nombre no
puede haber ningún blanco.
Entre el nombre y la sentencia y entre la sentencia y sus parámetros debe haber al
menos un blanco.
Entre los parámetros dentro de una sentencia no puede haber blancos. Si los
hubiera, el resto de la línea se considera como comentarios.
Nombre
Nota: En algunas versiones se acepta la letra “Ñ” para el nombre de job, pero se
recomienda no utilizarla.
Sentencia
Parámetros
Posiciónales
De palabra clave
Comentarios
Sirven para documentar las fichas de control. Deben de estar separados del último
parámetro por, al menos, un blanco. Su utilización no es general.
Puesto que el primer soporte que se utilizó para escribir JCL fueron fichas
perforadas, las sentencias de control se codifican en líneas de 80 columnas y
todavía se denominan fichas o tarjetas. Cada “ficha” se divide en tres zonas:
Columnas 1-2
Todas las fichas comienzan con dos barras (//). La única excepción es
la ficha que identifica el final de un fichero interno de JCL, que contiene
barra-asterisco (/*) o delimitadores especiales (ver apartado “DLM” de
la sentencia “DD”, más adelante).
Columnas 3-72
Columnas 73-80
SENTENCIA JOB
INTRODUCCION
Indica el principio de un trabajo (job). Esta ficha es única para el trabajo y debe
estar en la primera línea.
El nombre del trabajo debe empezar por una caracter alfabético, en la columna 3,
y puede tener hasta 8 caracteres alfanuméricos.
En algunas instalaciones este nombre está normalizado (por ejemplo, los jobs de
desarrollo tienen que empezar por el identificador del usuario que lo ejecuta).
PARAMETROS POSICIONALES
Información de contabilidad
Como excepción a los caracteres especiales está el caracter guión (-), que no se
considera especial. Este campo puede tener un máximo de 142 caracteres.
Nota: En algunas versiones, no hace falta indicar el caracter coma (“,”) cuando no
se codifica este parámetro.
Ejemplo
Nombre de programador
Nota: En algunas versiones, no hace falta indicar el caracter coma (“,”) cuando no
se codifica este parámetro.
Ejemplo
CLASS
CLASS=clase-ejecución
Ejemplo
MSGLEVEL
MSGLEVEL=(sentencias,mensajes)
Sentencias
0
Sólo se imprime la sentencia JOB.
1
Se imprimen todas las sentencias fuente más las que resultan de
expandir los procedimientos catalogados en los pasos, si los hubiera.
2
Sólo se imprimen las sentencias fuente.
Mensajes
0
Se imprimen los mensajes de asignación/terminación sólo cuando el
trabajo termina anormalmente (con error).
1
Se imprimen siempre los mensajes de asignación/terminación.
Ejemplo
MSGCLASS
MSGCLASS=clase-
salida
Ejemplo
NOTIFY
NOTIFY=identificador-usuario
Ejemplo
// MSGCLASS=S,NOTIFY=DPRJE10
TYPRUN
TYPRUN={SCAN | HOLD}
Se pueden indicar otras dos opciones, aunque sólo para pruebas y situaciones
excepcionales,
SCAN
Solicita que el sistema sólo compruebe los errores sintácticos que haya en las
fichas de control del trabajo, pero que no lo ejecute.
HOLD
COND
0 correcto
4 aviso
8 error recuperable
12 error grave
16 error irrecuperable
El parámetro COND especifica las condiciones con las que los siguientes pasos de
un trabajo se ejecutarán o no. Si se cumplen las condiciones fijadas no se ejecutan
los siguientes pasos al que ha devuelto el código y el trabajo se da por terminado.
COND=((código,operador),(código,operador),.....)
Código
Operador
GT mayor que
GE mayor o igual que
LT menor que
LE menor o igual que
EQ igual a
NE no igual a
IF
IF (condición) THEN
paso(s)
ELSE
paso(s)
ENDIF
Condición
NOT ¬ no igual a
[nombre-paso.]RC
[nombre-paso.]ABEND
[nombre-paso.]ABENDCC
[nombre-paso.]RUN
TIME
TIME=([minutos][,segundos])
Minutos
Segundos
OTROS PARAMETROS
REGION
REGION={nK | nM}
Donde “n” es un número par que indica el número de kilobytes (1024 octetos) o un
valor d e megabites (entre 1 y 16) que se desean reservar para este trabajo.
RESTART
Indica el paso desde el que se desea comenzar la ejecución del trabajo, en el caso
de un rearranque diferido.
RESTART={* | nombre-paso}
Donde el signo “asterisco” (*) indica que se debe comenzar desde el primer paso
del trabajo.
PRTY
PRTY=prioridad
Donde la prioridad puede variar de 0 a 15, siendo mayor la prioridad cuanto mayor
sea el valor.
SENTENCIA EXEC
INTRODUCCION
La sentencia de control EXEC identifica un paso de trabajo dentro del JOB. Indica
el programa que se quiere ejecutar o un procedimiento que se debe llamar o
expandir.
PROGRAMAS
Utilidades
De aplicación o usuario
PROCEDIMIENTOS
Internos
Catalogados
PARAMETROS POSICIONALES
PGM
(*)
Para obtener más información sobre librerías de programas de
usuario, ver apartado “Sentencias DD con nombres especiales” del
capítulo “Sentencia DD”, más adelante.
PGM={programa |
*.nombre-paso.nombre-DD |
*.nombre-paso.nombre-paso-proc.nombre-DD}
Ejemplo
PROC
[PROC=]nombre-proc
TIME
Todo lo que se indicó para el parámetro TIME en la sentencia JOB es válido aquí,
pero a nivel del paso. Su codificación es:
TIME[.nombre-paso-
proc]=([minutos][,segundos])
Si se codifica en una sentencia EXEC que llama a un procedimiento sin poner
nombre de paso, el tiempo indicado es el máximo para la ejecución de todo el
procedimiento, ignorándose los parámetros TIME que pudieran llevar las
sentencias EXEC internas del procedimiento.
Un paso que excede del tiempo indicado provoca la terminación anormal de todo
el trabajo.
COND
y este valor puede ser revisado, bien desde la sentencia JOB (como se
explicó) o bien desde la sentencia EXEC.
COND[nombre-paso-proc]={[{código,operador |
código,operador,
nombre-paso.nombre-paso-
proc]
....[,{EVEN | ONLY}])
EVEN
Indica que este paso se tiene que ejecutar aunque algún paso anterior
haya terminado anormalmente, es decir, siempre.
ONLY
PARM
PARM[nombre-paso-proc]=lista-parámetros
REGION
SENTENCIA DD
INTRODUCCION
Concatenar ficheros
Ejemplo
//SYSIN DD DSN=.........
// DD DSN=.........
// DD DSN=.........
//SYSOUT DD DSN=.........
PARAMETROS POSICIONALES
“asterisco” (*)
Ejemplo
//SYSIN DD *
1999-09-26
/*
DATA
DLM
Ejemplo
//SYSIN DD *,DLM=FINAL
1999-09-26
FINAL
DUMMY
//ddname DD DSN=nombre-fichero,DISP=...,
// UNIT=unidad,VOL=SER=volumen,
// DCB=(..........),
// SPACE=(......)
Aunque, como se verá más adelante, no todos los ficheros necesitan todos los
parámetros. Por ejemplo, un fichero de entrada (que ya debe existir) no necesitará
información DCB, un fichero en cinta no necesitará SPACE, etc.
“ddname”
DSN (“dsname”)
{DSNAME |
DSN} ={nombre-fichero |
nombre-fichero(nombre-miembro) |
nombre-fichero(número-GDG) |
nombre-fichero(nombre-área) |
nombre-fichero-temporal |
nombre-fichero-temporal(nombre-miembro) |
nombre-fichero-temporal(nombre-área) |
*.nombre-DD |
*.nombre-paso.nombre-DD |
*.nombre-paso.nombre-paso-proc.nombre-DD}
Ficheros permanentes
Secuénciales
//FASTCONT DD
DSN=SUNION.CONTAB.ASTOS.DIARIO.D990926
Librerías
Ejemplo
//FDATTEMP DD
DSN=SUNION.LIBDATOS.PRUEBAS(FDATTEMP)
Grupos de generación
Ejemplo
//FRESHACI DD DSN=SUNION.HACIENDA.RESUMEN.ANUAL(-5)
Ficheros temporales
nombre-trabajo.nombre-paso.nombre-dd.nombre-temporal
Ejemplo
//DD1 DD DSN=&&SALDOS
Ficheros diferidos
Son ficheros que se usan en algún punto del trabajo y a los que se
hace referencia en otro lugar mencionando ese uso anterior.
Ejemplo
DISP
DISP=(estado-inicial,estado-final-normal,estado-final-error)
UNIT
UNIT=unidad
Unidad
VOLUME
{VOLUME | VOL}=SER=número-serie
SER
DCB
DCB=(RECFM=tipo,LRECL=n,BLKSIZE=n,DSORG=tipo)
Indica el tipo o formato de los registros del fichero. Los tipos más
habituales son:
F longitud fija
FB longitud fija bloqueados
V longitud variable
VB longitud variable bloqueados
BLKSIZE (BLocKSIZE)
PS secuencial
IS secuencial indexado
DA organización directa
PO particionado
SPACE
TRK
CYL
nn
Cantidad primaria
Cantidad secundaria
Directorio o índice
RLSE
CONTIG
ROUND
SYSOUT
SYSOUT={clase-salida | *}
Clase de salida
COPIES
COPIES=n
OUTLIM
OUTLIM=n
Ejemplo
JOBLIB
Cuando todos los programas de usuario del trabajo están en la misma librería o
cuando se desea indicar una sola vez el grupo de librerías donde están los
programas, se utilizará el nombre JOBLIB.
Ejemplo
STEPLIB
Ejemplo
SYSABEND y SYSUDUMP
//*===================================================================*
//* DESCARGA DE LA TABLA HADT006 *
//* CONDICIONES: *
//* NCTA = 199095011 Y 199095004 *
//* CODDIV <> ' ' ---> VACIO *
//* CODUDU <> 'HA4C1402' ---> CARGA MASIVA *
//* FECON = '%%FECHACOM' *
//*===================================================================*
//HAPP1090 EXEC UNLOAD,
// PARM='$DB2,$EHAADPP1HAPP1090,NEW/RESTART,,MSGLEVEL(1)'
//* PARM='$DB2,$EHAADPP1HAPP1090,TERM,,MSGLEVEL(1)'
//SYSREC DD DSN=COB$E.HA.FWSD1.HAADPP1.HAPP1090.HADT006,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SYSIN DD *
UNLOAD SHRLEVEL CHANGE CONSISTENT NO
SELECT * FROM $ET³³.HADT006
WHERE ( FECON = '%%FECHACOM' AND
NUCTA IN ('199095011','199095004') AND
CODUSU <> 'HA4C1402' AND
CODDIV <> '')
//*
//*===================================================================*
//* SORT POR CODDIV SE SACAN 7 ARCHIVOS, UNO POR CADA TIPO DE *
//* DIVISA Y SE TOTALIZAN LOS IMPORTES DEBE Y HABER EN DIVISAS *
//*===================================================================*
//HAPP1080 EXEC PGM=ICEMAN,COND=(4,LT)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK06 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK07 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTIN DD DSN=COB$E.HA.FWSD1.HAADPP1.HAPP1090.HADT006,
// DISP=SHR
//CAD DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.CAD,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//CHF DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.CHF,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//EUR DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.EUR,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//GBP DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.GBP,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//JPY DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.JPY,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//SEK DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.SEK,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//USD DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.USD,
// BLKSIZE=0,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(200,100),RLSE),
// UNIT=SYSDA
//SYSIN DD *
SORT FIELDS=(59,3,CH,A,56,3,CH,A)
OUTFIL FNAMES=CAD,
INCLUDE=(59,3,CH,EQ,C'CAD')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=CHF,
INCLUDE=(59,3,CH,EQ,C'CHF')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=EUR,
INCLUDE=(59,3,CH,EQ,C'EUR')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=GBP,
INCLUDE=(59,3,CH,EQ,C'GBP')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=JPY,
INCLUDE=(59,3,CH,EQ,C'JPY')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=SEK,
INCLUDE=(59,3,CH,EQ,C'SEK')
SUM FIELDS=(87,8,PD,95,8,PD)
OUTFIL FNAMES=USD,
INCLUDE=(59,3,CH,EQ,C'USD')
SUM FIELDS=(87,8,PD,95,8,PD)
//*
//*===================================================================*
//* UNE LOS ARCHIVOS ANTERIORES EN UNO *
//*===================================================================*
//HAPP1070 EXEC PGM=SORT,COND=(4,LT)
//SYSPRINT DD SYSOUT=(*,,)
//SYSOUT DD SYSOUT=(*,,)
//SORTWK01 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK02 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK03 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK04 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK05 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK06 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTWK07 DD SPACE=(CYL,(80,30,),RLSE),UNIT=SYSDA
//SORTIN DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.CAD,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.CHF,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.EUR,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.GBP,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.JPY,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.SEK,
// DISP=(SHR),BUFNO=30
// DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1080.USD,
// DISP=(SHR),BUFNO=30
//SORTOUT DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1070.TOTAL,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(400,200),RLSE),
// UNIT=SYSDA,DCB=(RECFM=FB,BLKSIZE=0)
//SYSIN DD *
MERGE FIELDS=COPY
//*
//*===================================================================
//* SORT PARA QUITAR PUNTOS SOBRANTES EN EL ARCHIVO Y QUEDE IGUAL
//* AL TAMA#O DEL COPY DE ENTRADA DEL PROGAMA: 226
//*===================================================================
//HAPP0060 EXEC PGM=ICEMAN,COND=(4,LT)
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1070.TOTAL,
// DISP=SHR
//SORTOUT DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1060.TOTAL.CPY,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1,3,4,4,8,4,12,10,23,10,34,1,
35,15,50,3,53,3,56,3,59,3,62,1,
63,4,67,4,71,8,79,8,87,8,95,8,
103,1,104,1,105,8,113,1,114,12,
126,3,129,14,143,1,144,1,145,4,
149,30,179,30,209,8,217,4,221,8)
//*
//**==================================================================*
//* CONVIERTE TODOS LOS VALORES DE DIVISAS (DEBE Y HABER) EN *
//* DOLARES AMERICANOS DEL DIA. * 00920000
//* DEBE: VENTAS * 00920000
//* HABER: COMPRAS * 00920000
//**==================================================================*
//HAPP1050 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//S1DQ0000 DD SYSOUT=*
//QRLSDB2 DD SYSOUT=(*,,)
//TCDF0000 DD DSN=COB$E.TC.FV01.TCDF0001,DISP=(SHR),
// AMP=('AMORG,BUFND=90,BUFNI=2')
//ENTRADA DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1060.TOTAL.CPY,
// DISP=SHR
//SALIDA DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1050.DOLARES,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SYSTSIN DD *
DSN SYSTEM($DB2)
RUN PROGRAM (HA4CPP02) PLAN(BV$EHAPB) PARM('%%FECHACOM')
END
//*
//*===================================================================*
//* SORT PARA REALIZAR LA SUMATORIA DE LAS COMPRAS (HABER) Y *
//* VENTAS (DEBE) EN DOLARES AMERICANOS Y EN PESOS *
//*===================================================================*
//HAPP1040 EXEC PGM=ICEMAN,COND=(4,LT)
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1050.DOLARES,
// DISP=SHR
//SORTOUT DD DSN=COB$E.HA.FISD1.HAADPP1.HAPP1040.SORT,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(80,40),RLSE)
//SYSIN DD *
SORT FIELDS=(53,3,CH,A)
SUM FIELDS=(59,8,PD,67,8,PD,75,8,PD,83,8,PD)
//**==================================================================*
//* PROGRAMA QUE ARMA EL REGISTRO POR FECHA Y CENTRO PARA CARGAR EN
//* LA TABLA HADTPP4, INCLUYENDO LA POSICION PROPIA AJUSTADA DEL DIA *
//* ANTERIOR Y LA TRM DEL DIA. * 00920000
//**==================================================================*
//HAPP1030 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//S1DQ0000 DD SYSOUT=*
//QRLSDB2 DD SYSOUT=(*,,)
//TCDF0000 DD DSN=COB$E.TC.FV01.TCDF0001,DISP=(SHR),
// AMP=('AMORG,BUFND=90,BUFNI=2')
//ENTRH006 DD DISP=SHR,DSN=COB$E.HA.FISD1.HAADPP1.HAPP1040.SORT
//RECHAZOS DD DSN=$GOF.S0203.HAADPP1.F%%ODATE.TD001.NOFIND,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SYSTSIN DD *
DSN SYSTEM($DB2)
RUN PROGRAM (HA4CPP06) PLAN(BV$EHAPB) PARM('%%FECHACOM')
END
//*
//*===================================================================*
//* DESCARGA DE LA TABLA HADTPP4 * *
//* DESCARGA LOS REGISTROS CARGADOS EN EL PROGRAMA HA4CPP06 PARA
//* REALIZAR EL INFORME 079 SIB DIARIO. *
//*===================================================================*
//HAPP1020 EXEC UNLOAD,
// PARM='$DB2,$EHAADPP1HAPP1020,NEW/RESTART,,MSGLEVEL(1)'
//* PARM='$DB2,$EHAADPP1HAPP1020,TERM,,MSGLEVEL(1)'
//SYSREC DD DSN=COB$E.HA.FWSD1.HAADPP1.HAPP1020.HADTPP4,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(400,200),RLSE),
// DCB=(RECFM=FB,BLKSIZE=0)
//SYSIN DD *
UNLOAD SHRLEVEL CHANGE CONSISTENT YES
SELECT *
FROM $ET³³.HADTPP4
WHERE TPP4_FECHA_LIQ = '%%FECHACOM'
//*==================================================================*
//* PROGRAMA QUE GENERA INFORME 079 SIB DIARIO * 00001200
//*==================================================================*
//HAPP1010 EXEC PGM=HA3CPP03,COND=(4,LT),PARM='%%FECHACOM'
00001500
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSABOUT DD SYSOUT=*
//SYSDBOUT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//S1DQ0000 DD SYSOUT=*
//QRLSDB2 DD SYSOUT=(*,,)
//ENTRADA DD DSN=COB$E.HA.FWSD1.HAADPP1.HAPP1020.HADTPP4,
// DISP=SHR 00002010
//INFORME DD DSN=$GOF.S0012.HAADPP1.F%%ODATE.TD001.FTO079,
// DISP=(NEW,CATLG,DELETE), 00002200
// UNIT=SYSDA,SPACE=(CYL,(300,150),RLSE), 00002300
// DCB=(RECFM=FB,BLKSIZE=0) 00002400
//*===================================================================
//* FINAL DEL HAADPP1 *
//*===================================================================
//*-------------------------------------------------------------------*
//* COPIA EL ARCHIVO CONTABLE PARA DARLE NOMBRE DE QH *
//*-------------------------------------------------------------------*
//HADPP310 EXEC PGM=IDCAMS,COND=(0,LT)
//CSDI DD DSN=COBQ.HA.FWSD1.HADPP320.HADTPP3,
// DISP=(SHR),BUFNO=30
//CSDO DD DSN=COBQ.QH.FISD1.B1.INTF.HADTPP3.F%%ODATE,
// DISP=(NEW,CATLG,DELETE),
// DCB=(RECFM=FB,LRECL=360,BLKSIZE=0),
// SPACE=(CYL,(500,250),RLSE),BUFNO=30,UNIT=SYSDA
//SYSPRINT DD SYSOUT=(*,,)
//SYSIN DD *
REPRO INFILE(CSDI) OUTFILE(CSDO)
//*
FIN