SETA Estrutura e ambiente operacional - MonteSite

SETA Estrutura e ambiente operacional - MonteSite

MVS JCL concepts Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 1 Presentation Thanks for using this presentation. You are free to use it. I appreciate if you refer to the author when using it. Im sorry about the language errors; my english isnt so good; Ill appreciate if you send me any corrections and suggestions to optimize the comprehension to the reader. The same is valid for any technical error; please help me to make this an error-free text. Alberto Romano Schiesari So Paulo - Brazil www.profars.com [email protected] Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 2 Summary IBM main operating systems

MVS line Executing services demand General flow JES2 Input spool and Output spool Input spool Job submission - Roscoe Stacking jobs at input spool Contents of each job in the input spool Initiators Output spool JCL JOB EXEC DD Library search PROCS Apendix - CONTROLs Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 3 Concepts IBM main operating systems see http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 4 Concepts IBM main operating systems IBM main operating systems DOS or VSE line DOS (1966) DOS/VS (1972) DOS/VSE (80s) VSE/ESA (1991) z/VSE (2005) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 5 Concepts IBM main operating systems IBM main operating systems

VM line VM/370 (1972) VM/SP (1980) VM/XA (1988) VM/ESA (1990) z/VM (2000) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 6 Concepts IBM main operating systems Conceitos IBM main operating systems Real-time (transactional) line ACP (1969) TPF (1979) z/TPF (2005) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

7 Concepts IBM main operating systems Conceitos IBM main operating systems Unix-like line UTS (1981) AIX/370 (1990) AIX/ESA (1991) LINUX (1999) Open Solaris (2008) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 8 Concepts IBM main operating systems Conceitos IBM main operating systems MVS line MFT (1966) ; OS/VS1 (1972) (end) MVT (1967)

Summary OS/VS2 R1 (SVS) (1972) MVS (OSVS2 R2) (1974) MVS/370 (1981) MVS/XA (83) MVS/ESA (1988) OS/390 (1995) z/OS (2000) ; z/OS 1.10 (Sep 2008) Prev.Pg. 24-bit addressing; Single Address Space 24-bit addressing; Multiple Address Spaces . Extended Architecture Enterprise System Architeture; 31-bit addressing . 24-,31- 64-bit addressing Alberto Romano Schiesari www.profars.com 9 Concepts IBM main operating systems Conceitos Each operating system has its own language to code scripts and to be the formal tool to

(a) user ask operating system for service execution (b) operating system return results and messages to the user This language, in MVS and derived operating systems, is known as JCL (Job Control Language) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 10 Concepts IBM main operating systems Conceitos Curiosity: example of a DOS (PCs) JCL (.bat files) @echo off cls :a ECHO Compiling %1 IF EXIST %1.OBJ DEL %1.OBJ COBOL %1; ANIM COPYLIST > %1.LST IF ERRORLEVEL 1 ECHO *** Error LINK %1+%COBDIR%\ADIS+%COBDIR%\ADISKEY+%COBDIR%\ADISINIT; >> %1.LST rem TYPE %1.LST shift if not "%1" == "" goto a @ECHO

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 11 Concepts IBM main operating systems Conceitos Curiosity: sample JCL for UNIX line (Shell Script) #!/bin/ksh #--------------------------------------------------------------------# # Rotina: rsyil02.sh - Salva arquivo de retorno do Mainframe # #--------------------------------------------------------------------# BN=` basename $0 ` DN=` dirname $0 ` . $DN/raet.functions FILE=/comunnications/bi/received/rsybi02 if [ -f $FILE.txt ] ; then if [ -f $FILE.txt ] ; then bkpcop $FILE.txt || exit $? scratf $FILE.txt 12 || exit $? else echo " Error. $FILE.txt does not exist"

exit 1 fi \mv -f $FILE.txt $FILE else echo " No transactions today." exit 0 fi Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 12 Concepts IBM main operating systems Conceitos Curiosity: example of JCL for the VSE line >SUB,R,N >* BKPD047 - BACKUP D047 TO T047 * $$ JOB JNM=BKPD047,CLASS=8,USER='44-R.WALKO' * $$ PRT CLASS=B,DISP=H // JOB BKPD047 BACKUP D047 TO T047 // DLBL D047,'D047.ADPDCS.INPUT ',,VSAM,CAT=PRODCAT,BUFSP=40960 // TLBL FILEB,'T047,U' // EXEC EASYTREV INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD

/* /& * $$ EOJ http://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 13 Concepts IBM main operating systems Conceitos Curiosity: this is the equivament for the MVS line //BKPD047 JOB (BKPD047),' ',CLASS=A,MSGCLASS=X, // MSGLEVEL=(1,1),REGION=6M //* //JOBLIB INCLUDE MEMBER=JOBLIB //STEP0010 EXEC PGM=SORT //* MODULE EASYTREV PROCESSED BY PLUG-IN LCPEZT //* VS VS I PRODCAT D047 'D047.ADPDCS.INPUT' //SORTIN DD DSN=MVS.D047.ADPDCS.INPUT,DISP=SHR //* MT O FILEB 'T047,U' //SORTOUT DD DSN=MVS.T047, // DISP=(NEW,CATLG,DELETE), // UNIT=TAPE //* PR O //SYSOUT DD SYSOUT=* //* CD I

//SYSIN DD * *INCLUDE EZBKVSES D047 VS VB 750 8352 UNLOAD SORT FIELDS=COPY RECORD TYPE=V,LENGTH=750 /* // http://gsf-soft.com/Prism-CS/Samples/BKPD047.shtml Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 14 MVS line executing services demand Executing services demand Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 15 MVS line executing services demand BE CAREFUL! ACHTUNG!

Everything youre gonna see/read/listen is OK for BACTH applications ! Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 16 MVS line executing services demand BE CAREFUL! ACHTUNG! Everything youre gonna see/read/listen is OK for BACTH applications ! Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 17 MVS line general flow General flow System

Service Input (execution order) Summary Prev.Pg. Result Output basically: print (paper or terminal) Alberto Romano Schiesari www.profars.com 18 MVS line general flow General flow SYSTEM ? How do services get into the system? Service Input (execution order) Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 19 MVS line general flow ? How do results get out of the system? Summary Prev.Pg. General flow SYSTEM Result Output basically: print (paper or terminal) Alberto Romano Schiesari www.profars.com 20 MVS line general flow

General flow There is a specific software to execute those functions (service input and result output). It is JES2. (Job Entry Subsystem) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 21 JES2 Therefore: JES2 JES2 components that receive the inputs Service Input (execution order) Summary Prev.Pg.

JES2 components that send the results out Result Output (basically: print on paper or terminal) Alberto Romano Schiesari www.profars.com 22 JES2 In other words: z/OS Operating system Component 1 ... Component 2 ... JES2 Component n ... Application 1 Service Input (execution order) Application 2 ... Apllication n (ex.:CICS) ...

Result Output (basically: print on paper or terminal) Application x (ex.: DB2) ... Application z ... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 23 JES2 For example: z/OS Operating system Component 1 ... Component 2 ... JES2 Component n ... Application 1 Services input via terminal (sub command ) Application 2 ...

Apllication n (ex.:CICS) ... Application x (ex.: DB2) ... Application z ... Summary Prev.Pg. Results output browse via terminal (job sysout browse) Alberto Romano Schiesari www.profars.com 24 JES2 But... We have to remember that: z/OS Operating system Component 1 ... Component 2 ... JES2 Component n ... Application 1 Application 2 ...

Apllication n (ex.:CICS) ... Terminals for SUB Application x (ex.: DB2) ... Terminals for BROWSE (they MUST be associated to an application program !!!) Application z ... (they MUST be associated to an application program !!!) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 25 JES2 What is (are) this (these) application program(s)? z/OS Operating system Component 1 ...

Component 2 ... JES2 Component n ... Application 1 Application 2 ... Apllication n (ex.:CICS) ... What is the application program responsible for this terminal? Summary Prev.Pg. Application x (ex.: DB2) ... Application z ... What is the application program responsible for this terminal? Alberto Romano Schiesari www.profars.com 26

JES2 It may be Roscoe... JES2 ROSCOE Roscoe sends the services to the JES2 Summary Prev.Pg. Roscoe gets the results from JES2 Alberto Romano Schiesari www.profars.com 27 JES2 Or TSO... JES2 TSO

TSO sends the services to the JES2 Summary Prev.Pg. TSO gets the results from JES2 Alberto Romano Schiesari www.profars.com 28 JES2 But, even either Roscoe or TSO... JES2 Roscoe or TSO The terminal is just a visual interface Summary

Prev.Pg. The terminal is just a visual interface Alberto Romano Schiesari www.profars.com 29 JES2 Where are, in fact, the data? JES2 Roscoe or TSO Where is the stream we built and submitted? Summary Prev.Pg. Where is the sysout being accessed to browse? Alberto Romano Schiesari www.profars.com

30 JES2 In disk ! In the spool areas ! JES2 Roscoe or TSO INPUT spool area Summary Prev.Pg. Output spool area Alberto Romano Schiesari www.profars.com 31 JOB input Lets see some details about spool input process JES2 Input spool area

Summary Roscoe or TSO Prev.Pg. Alberto Romano Schiesari www.profars.com 32 JOB input TSO/ROSCOE NOTE : use of ROSCOE (data manipulation via AWS)... Roscoe Roscoe work area (AWS) (create / FETCH/ATTACH) Roscoe LIBs (proprietary data organization) (SAVE or UPDATE) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 33

JOB input TSO/ROSCOE NOTE : ... or TSO (data manipulation directly in the normal datsets areas) TSO Partitioned dataset member Sequential dataset Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 34 JOB input TSO/ROSCOE NOTE : well refer to data manipulation using Roscoe or TSO using this figure TSO/Roscoe Edited data To be submitted Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 35 JOB input TSO/ROSCOE Step 1 = edit data to be submitted TSO/Roscoe Edited data To be submitted Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 36 JOB input TSO/ROSCOE Step 1 = edit data to be submitted //PSTARS3T JOB //STEP1 EXEC ASMACLG TSO/Roscoe

//C.SYSIN (1234),'ALBERTO',CLASS=T,MSGCLASS=O DD * PROGRAMA START 0 ENTRAR Summary BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI

FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG

MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* ROTMAIN

Prev.Pg. Alberto Romano Schiesari www.profars.com 37 JOB input TSO/ROSCOE Another sight... Roscoe JOB Statement 1st step components (assembly = execution of Assembler program) 2nd step components (linkedit = execution of linkeditor program) 3rd step components (my program) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 38 JOB input TSO/ROSCOE A c-a-r-e-f-u-l analysys of the data to be submitted... //PSTARS3T

JOB //STEP1 EXEC ASMACLG TSO/Roscoe //C.SYSIN (1234),'ALBERTO',CLASS=T,MSGCLASS=O DD * PROGRAMA START 0 ENTRAR Summary BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT)

ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4

SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQ ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------*

0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* ROTMAIN Prev.Pg. Alberto Romano Schiesari www.profars.com 39 JOB input TSO/ROSCOE Another sight, the stream as a whole ... TSO/Roscoe //PSTARS3T // JOB (1234),'ALBERTO', CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD *

Step C, SYSIN dataset data //G.SYSPRINT DD SYSOUT=* Red = JCL //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * Blue = datadata Step G, AGENCIAS dataset Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 40 JOB input TSO/ROSCOE Another way to view the data ... TSO/Roscoe //PSTARS3T //

JOB (1234),ALBERTO', CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * //G.SYSPRINT DD SYSOUT=* Step C, SYSIN DD dataset data //G.SYSOUT SYSOUT=* //G.AGENCIAS DD * Step G, AGENCIAS dataset data Red = JCL Blue = data Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 41

JOB input TSO/ROSCOE Getting back to the relationship between Roscoe and JES... //PSTARS3T JOB //STEP1 EXEC ASMACLG TSO/Roscoe //C.SYSIN (9526),'ALBERTO',CLASS=T,MSGCLASS=O DD * PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO DC A(0) SAVEAREA DO ENDERECO VOLTA

ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS B CLOSE L BR DC LEITURA (AGENCIAS) R14,ROTMAIN-4 R14 A(0) VOLTA A LER FECHA ARQUIVO RESTAURA ENDERECO VOLTA VOLTA SAVEAREA DO ENDERECO DE VOLTA ST R14,*-4 SALVA ENDERECO DE VOLTA B

SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA SAIR ROTMAIN

LEITURA ACABAR LEREG Summary Prev.Pg. Alberto Romano Schiesari www.profars.com * DECLARACAO DE ARQUIVOS E AREAS 42 JOB input TSO/ROSCOE Roscoe submits (delivers) the stream that came from AWS to JES... JES2 Input spool area SUB Summary TSO/Roscoe Edited data

Prev.Pg. Alberto Romano Schiesari www.profars.com 43 JOB input TSO/ROSCOE The JES component that reads the things somebody (Roscoe, TSO...) submitted is (are) the READER(s) / INTERPRETER(s) JES2 Input spool area Reader SUB Summary TSO/Roscoe AWS Prev.Pg. Alberto Romano Schiesari www.profars.com 44 JOB input TSO/ROSCOE There are several READER/INTERPRETER(s); they get the records from the submitted JOBs; while reading, they validate some information before send to the spool (thats because the interpreter)

JES2 Input spool area Readers Normal datasets TSO Roscoe AWS SUB Summary SUB Prev.Pg. Alberto Romano Schiesari www.profars.com 45 JOB input Lets see better the input spool area JES2

Input spool area Readers Normal datasets TSO Roscoe AWS SUB Summary SUB Prev.Pg. Alberto Romano Schiesari www.profars.com 46 JOB input Input spool area : the archieving unit is the JOB JOB0001 JOB0002

JOB0003 JOB0004 JOB0006 JOB0007 JOB0008 Etc... Summary Prev.Pg. JOB0005 Alberto Romano Schiesari www.profars.com 47 JOB input The JOBS are queued based on the entry sequence; each Job receive an Id #, that will follow it throughout its whole life. JOB0001 JOB0002 JOB0003

JOB0004 JOB0006 JOB0007 JOB0008 Etc... Summary Prev.Pg. JOB0005 Alberto Romano Schiesari www.profars.com 48 JOB input The JOBS remains in the queue awaiting execution. JOB0001 JOB0002 JOB0003 JOB0004

JOB0006 JOB0007 JOB0008 Etc... Summary Prev.Pg. JOB0005 Alberto Romano Schiesari www.profars.com 49 JOB input Lets see some details about how the Jobs are stored. Lets detail one of them (JOB0001): JOB0001 ALL JCL records (statements) (one single dataset) Summary Prev.Pg.

For each in-stream dataset in the submitted stream, is created a file identified with stepname + DDname Alberto Romano Schiesari www.profars.com 50 JOB input Example: if this stream (ref. JOB0001) is submitted //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC PGM=PGTST01,PARM=TOT=YES' //STEP2 EXEC PGM=PGTST02 Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 51 JOB input The input spool data related to JOB0001 is as follows: //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC PGM=PGTST01,PARM=TOT=YES'

//STEP2 EXEC PGM=PGTST02 JOB0001 //PSTARS3T JOB (123),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC PGM=PGTST01,PARM=TOT=YES //STEP2 EXEC PGM=PGTST02 There is no datasets related to in-stream data, because there is no in-stream data Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 52 JOB input Example: if this stream is submitted (ref. JOB0002) //PSTARS3T //STEP1 //STEP2 //STEP3 //SYSOUT //SYSPRINT //SYSIN DD DELETE Summary

JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O EXEC PGM=PGTST01,PARM=TOT=YES' EXEC PGM=PGTST02 EXEC PGM=IDCAMS DD SYSOUT=* DD SYSOUT=* * DES.ALB.A001 PURGE /* DELETE DATASET */ Prev.Pg. Alberto Romano Schiesari www.profars.com 53 JOB input The input spool related to JOB0002 is as follows: //PSTARS3T //STEP1 //STEP2 //STEP3 //SYSOUT //SYSPRINT //SYSIN DD DELETE JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O EXEC PGM=PGTST01,PARM=TOT=YES' EXEC PGM=PGTST02

EXEC PGM=IDCAMS DD SYSOUT=* DD SYSOUT=* * DES.ALB.A001 PURGE /* DELETA DATASET */ JOB0002 //PSTARS3T //STEP1 //STEP2 //STEP3 //SYSOUT //SYSPRINT //SYSIN DD JOB EXEC EXEC EXEC DD DD * (1234),'ALBERTO',CLASS=T,MSGCLASS=O PGM=PGTST01,PARM=TOT=YES' PGM=PGTST02 PGM=IDCAMS SYSOUT=* SYSOUT=*

Step=STEP3 ; DD=SYSIN DELETE Summary DES.ALB.A001 PURGE Prev.Pg. /* DELETA DATASET */ Alberto Romano Schiesari www.profars.com 54 JOB input Getting back to the original JOB, that with the 3 steps (compile, link & go of an assembler program); suppose that the id is JOB1234 //PSTARS3T JOB //STEP1 EXEC ASMACLG //C.SYSIN (1234),'ALBERTO',CLASS=T,MSGCLASS=O DD * PROGRAMA START 0 ENTRAR BAL

R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO

L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG

FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* ROTMAIN Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 55 JOB input It has JCL and in-stream data //PSTARS3T JOB //STEP1 EXEC ASMACLG //C.SYSIN

(1234),'ALBERTO',CLASS=T,MSGCLASS=O DD * PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA

AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L

R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * 0001NOME DA AGENCIA 0001---------* 0002NOME DA AGENCIA 0002---------* 0003NOME DA AGENCIA 0003---------* 0004NOME DA AGENCIA 0004---------* ROTMAIN Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

56 JOB input The input spool related to JOB1234 is (almost...) as follows: JOB1234 //PSTARS3T JOB (1234),ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG //C.SYSIN DD * //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * Step=C ; DD=SYSIN PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO

CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA

FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , Summary Step=G ; DD=AGENCIAS 0001NOME 0002NOME 0003NOME 0004NOME DA

DA DA DA AGENCIA AGENCIA AGENCIA AGENCIA 0001---------* 0002---------* 0003---------* 0004---------* ULTIMO STMT FONTE Prev.Pg. Alberto Romano Schiesari www.profars.com 57 JOB input In fact, JCL is already EXPANDED (details when well see PROCs) JOB1234 1 2 3 4 5 6

7 8 9 10 11 12 13 14 15 16 17 18 19 //PSTARS3T JOB (1234),'ALBERTO',CLASS=T,MSGCLASS=O //STEP1 EXEC ASMACLG XXASMACLG PROC XXC EXEC PGM=ASMA90 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 XXSYSPRINT DD SYSOUT=* XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), XX

UNIT=SYSALLDA,DISP=(MOD,PASS), XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1) //C.SYSIN DD * XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C) XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE) XX DD DDNAME=SYSIN XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)), XX DSN=&&GOSET(GO) XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 XXSYSPRINT DD SYSOUT=* XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L)) //G.SYSPRINT DD SYSOUT=* //G.SYSOUT DD SYSOUT=* //G.AGENCIAS DD * Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

58 JOB input FINALLY !!! JOB1234 final format is: JOB1234 1 //PSTARS3T JOB 2 //STEP1 EXEC ASMACLG (1234),'ALBERTO',CLASS=T,MSGCLASS=O 3 XXASMACLG PROC 4 XXC EXEC PGM=ASMA90 5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR 6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),

XX UNIT=SYSALLDA,DCB=BUFNO=1 7 XXSYSPRINT DD SYSOUT=* 8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), XX UNIT=SYSALLDA,DISP=(MOD,PASS), XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1) 9 //C.SYSIN DD * 10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C) 11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE) 12 XX DD DDNAME=SYSIN 13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)), XX DSN=&&GOSET(GO) 14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 15 XXSYSPRINT DD SYSOUT=* 16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))

17 //G.SYSPRINT DD SYSOUT=* 18 //G.SYSOUT DD SYSOUT=* 19 //G.AGENCIAS DD * Step=C ; DD=SYSIN PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP LIDOS,=P'1'

CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4 RESTAURA ENDERECO VOLTA

BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE Step=G ; DD=AGENCIAS 0001NOME 0002NOME 0003NOME 0004NOME Summary Prev.Pg. DA DA DA DA

AGENCIA AGENCIA AGENCIA AGENCIA 0001---------* 0002---------* 0003---------* 0004---------* Alberto Romano Schiesari www.profars.com 59 JOB input OK? No doubts? Well talk about that again soon... JOB1234 1 dataset with all JCL, already expanded Summary Prev.Pg. Step=ssssssss ; DD=dddddddd 1 dataset for each in-stream dataset

Alberto Romano Schiesari www.profars.com 60 JOB input Getting back to the matter, there was a queue of JOBs waiting for execution... JOB0001 JOB0002 JOB0003 JOB0004 JOB0006 JOB0007 JOB0008 Etc... Summary Prev.Pg. JOB0005 Alberto Romano Schiesari www.profars.com

61 JOB input For job execution, there are other system components: the INITIATORs z/OS Operating System Component 1 ... Initiators Selection for execution JES2 Input spool area JOBS Component n ... Application program 1 Application program o 2 ... Application program n (ex.:CICS) ... Application program x (ex.: DB2) ... Application program z ... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

62 Execution They (the INITIATORs) do the selection (pick up 1 at a time) of the waiting-for-execution job(s) and begin their execution. Initiators Selection for execution Input spool Area JOBS What is the criteria for the selection? The JOB class. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 63 Execution Each initiator deals with some pre-defined classes. Ex. INIT 1 = jobs classes A, B and C INIT 2 = jobs classes D, E and F Input spool: Job queue (jobs waiting for execution)

JOB0001 (class A) JOB0002 (class B) INIT 1 : server for jobs class A, B and C; in the example, this INIT will select the jobs 0001 e 0002. JOB0003 (class R) JOB0004 (class D) JOB0005 (class E) JOB0006 (class T) Etc... Summary INIT 2 : server for jobs class D, E and F; in the example, this INIT will select the jobs 0004 e 0005. While there is no INIT serving classes R and/or T, the jobs 0003 and 0006 wont be executed (selected for execution) Prev.Pg. Alberto Romano Schiesari www.profars.com 64 Execution Example: see the list of INITs as shown by Roscoe DIS INIT command: > APPLID(EMPROSCD)

USER(OB3,ARS243) > ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 INIT 1 ACTIVE JOB00716 ADP#6IA (1) PVAG1 0:17:13 C=12345 INIT 2 ACTIVE JOB01873 NDVJD000 (1) COPYDIR 0:05:04 C=21345 INIT 3 ACTIVE JOB00809 SCO#END (1) NDVRBAT 0:01:15 C=32154 INIT 4 INACTIVE C=0 INIT 5 INACTIVE C=85 INIT 6 ACTIVE JOB00789 OCC#SCL (9) NDVRBAT 0:05:05 C=9 INIT 7 INACTIVE C=QP INIT 8 ACTIVE JOB00812 FIN#T305 (S) STEP002

0:01:00 C=QS INIT 9 INACTIVE C=QR INIT 10 ACTIVE JOB00605 CPC#BUS (A) NDVRBAT 0:28:38 C=YA INIT 11 ACTIVE JOB00771 SCO#ALB (Y) NDVRBAT 0:08:08 C=YU INIT 12 ACTIVE JOB00819 NDVJPKPR (Z) BC1JPCKG 0:00:05 C=ZB INIT 13 INACTIVE C=CT INIT 14 INACTIVE C=ZN INIT 15 ACTIVE JOB00782 SCO#A005 (W) STEP1 0:06:13 C=W Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 65 Execution Ex.: INIT 1 = serves jobs with classes A, B and C. The SELECTION PRIORITY is basically FIFO. Then, JOB0001 is selected first, and JOB0002 is selected after JOB0001 Input spool: Job queue (jobs waiting for execution) JOB0001 (class A) JOB0002 (class B) INIT 1 : serves jobs with classes A, B and C; in the example, INIT 1 will select jobs 0001 and 0002. JOB0003 (class R) Selection priority: basically FIFO JOB0004 (class D) (First In First Out) JOB0005 (class E) JOB0006 (class T) Etc... Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 66 Execution INIT 1 selected JOB0001 Input spool: Job queue (jobs waiting for execution) JOB0001 (class A) INIT 1 : selected JOB0001 for execution JOB0002 (class B) JOB0003 (class R) JOB0004 (class D) JOB0005 (class E) JOB0006 (class T) Etc... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 67

Execution INIT 1 pick up the information related to each step (program execution order [EXEC] + information about the datasets the program uses [DD] ) to do some things. Input spool: Job queue (jobs waiting for execution) JOB0001 (class A) Process each STEP JOB0002 (class B) JOB0003 (class R) JOB0004 (class D) JOB0005 (class E) JOB0006 (class T) Etc... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 68 Execution 1st. step : - Identify which program must be executed (PGM=xxxxxxxx)

- Verify DISP of each DD: -- IF DISP=OLD or DISP=SHR or DISP=MOD, verify whether the dataset already exists, whether it is reserved / locked for another user, etc... - If DISP=NEW, create the dataset (does it exist? Is there enough room? etc...) - Ask LOADER to fetch program from the right library (is there STEPLIB? Is there JOBLIB?) Let everything set up so that OPEN can go smoothly... (*) (*) unless the program uses DYNALLOC... As CICS does... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 69 Execution ( Summary Prev.Pg. Starting parenthesis... Alberto Romano Schiesari www.profars.com 70

Execution Dataset allocation: (a) outside program, before starting the execution (by initiator); information is provided by DD statement (b) by the program (dinamically); in this case: - no DD needed - allocation is done by a service ordered to the operating system (via macro / SVC) called DYNALLOC (dynamic allocation) - program must process the no allocation possible condition Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 71 Execution ) Summary Prev.Pg. Ending parenthesis... Alberto Romano Schiesari www.profars.com

72 Execution 1st. step : Everything OK? Then you can call the program for execution. Order LOADER to fetch program and transfer control (remember PSW? remember entry-point?) to the programs 1st instruction. In other words, (talking in assemblish...): INIT orders the BALR 14,15 to transfer control to the program. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 73 Execution 1st. step : Our program is executed. What does it mean? It means that CPU executes its instructions. But... There are dozens of other programs that need to use the CPU time, dreaming of CPU executing its instructions. Thats when the dispatching priority comes. It determines the privileges (or none) my program has in the algorithm that determines how much time each cuncurrent program get from CPU.

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 74 Execution 1st. step : What if a dataset is read, and the dataset is available via DD * ? When OPEN is issued, the access method receives information (set up by JES2) that the dataset is awaiting at the input job spool (identified by its stepname and ddname). Therefore our program is going to read data directly from input spool area. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 75 Execution 1st. step : JOB1234 1 //PSTARS3T JOB

2 //STEP1 EXEC ASMACLG (1234),'ALBERTO',CLASS=T,MSGCLASS=O 3 XXASMACLG PROC 4 XXC EXEC PGM=ASMA90 5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR 6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 7 XXSYSPRINT DD SYSOUT=*

8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), XX UNIT=SYSALLDA,DISP=(MOD,PASS), XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1) 9 //C.SYSIN DD * 10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C) 11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE) 12 XX DD DDNAME=SYSIN 13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)), XX DSN=&&GOSET(GO) 14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 15 XXSYSPRINT DD SYSOUT=* 16 XXG EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L)) 17 //G.SYSPRINT DD SYSOUT=* 18 //G.SYSOUT DD SYSOUT=* 19 //G.AGENCIAS DD * Program reads directly

from here Summary Prev.Pg. Step=C ; DD=SYSIN PROGRAMA START 0 ENTRAR BAL R14,ROTMAIN PROG PROPRIAMENTE DITO SAIR DC A(0) SAVEAREA DO ENDERECO VOLTA ROTMAIN ST R14,*-4 SALVA ENDERECO VOLTA OPEN (AGENCIAS,INPUT) ABRE ARQUIVO LEITURA BAL 14,LEREG LE REGISTRO CLI FLAGFIM,C'Y' END OF FILE? BE ACABAR SE SIM, TERMINAR O PROGRAMA AP

LIDOS,=P'1' CONTA REGISTROS LIDOS B LEITURA VOLTA A LER ACABAR CLOSE (AGENCIAS) FECHA ARQUIVO L R14,ROTMAIN-4 RESTAURA ENDERECO VOLTA BR R14 VOLTA DC A(0) SAVEAREA DO ENDERECO DE VOLTA LEREG ST R14,*-4 SALVA ENDERECO DE VOLTA B SAILER VAI PARA SAIDA FIMAG MVI FLAGFIM,C'Y' MARCA QUE ARQUIVO ACABOU SAILER L R14,LEREG-4

RESTAURA ENDERECO VOLTA BR R14 VOLTA * DECLARACAO DE ARQUIVOS E AREAS RELAT DCB LRECL=133,DSORG=PS,RECFM=FA,DDNAME=SYSPRINT,MACRF=PM AGENCIAS DCB LRECL=80,DSORG=PS,DDNAME=AGENCIAS,MACRF=GM,EODAD=FIMAG FLAGFIM DC C'N' FLAG INDICA FIM ARQUIVO ENTRADA LAG DS CL80 AREA PARA LEITURA ARQUIVO END , ULTIMO STMT FONTE Step=G ; DD=AGENCIAS 0001NOME 0002NOME 0003NOME 0004NOME DA DA DA DA AGENCIA AGENCIA AGENCIA

AGENCIA 0001---------* 0002---------* 0003---------* 0004---------* Alberto Romano Schiesari www.profars.com 76 Execution 1st. step : Our program finishes. Talking in assemblish, on the last BR 14, control is returned to initiator; especifically to a little-sub-component called terminator: it verifies the end-of-execution type (normal, abnormal), Return Code, closes the non-closed datasets, etc. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 77 Execution 2nd. step and so on:

Process is repeated for all JOB steps, including the Return Code test (COND...), to know whether or not the step must be executed, flushed, etc... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 78 Execution OK? Job input OK? Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 79 Execution Time to start understanding output spooling system Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 80 Result output (reports) A bunch of people access data from the output spool. JES2 Output spool area Roscoe (CA software) or TSO (IBM software) Control (BMC softwares) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 81 Result output (reports) Who writes on the output spool?

JES2 Output spool area Application programs Operating System and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 82 Result output (reports) Everybody prints something... Application programs and operating system. JES2 Output spool area Application programs Operating System and its components (including JES2) Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 83 Result output (reports) But... In fact, only JES2 really writes. Do you know why? JES2 Output spool area Application Programs Operating System and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 84 Result output (reports) Because everybody printing is intercepted by JES, and JES redirects those lines to the output spool area. JES is its administrator. This is done naturally if output is specified as SYSOUT=xxx JES2 Output spool area

Application programs Operating System and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 85 Result output (reports) What about the operating system outputs? They are redirected to where especified at MSGCLASS=xxx JES2 Output spool area Operating system and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 86 Result output (reports)

What about the application programs output? They are redirected to where especified at SYSOUT=xxx JES2 Output spool area Application programs Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 87 Result output (reports) But what is that xxx? JES2 ? Application programs Operating Systems and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

88 Result output (reports) It is the output class. JES2 There is n datsets for each job, Each one has an associated class Application Programs Opertating System and its components (including JES2) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 89 Result output (reports) Unless otherwise specified at MSGLEVEL, system generates 3 reports about the JCL processing: JES2.JESMSGLG = job events log (start, end, etc) JES2.JESJCL = expanded JCL

JES2.JESYSMSG = initiator / terminator messages JOB1234 , file JES2.JESMSGLG, class R Line 1 file 1 ... Etc... JOB JOB1234 , file JES2.JESJCL, class R Line 1 Relat1 ... Etc... JOB1234 , file JES2.JESYSMSG, class R Line 1 Relat2 ... Etc... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 90 Result output (reports) JES2.JESMSGLG example ( truncated at right) J E S 2 J O B

L O G -- S Y S T E M D 1 T -- 15.42.13 JOB04227 ---- FRIDAY, 28 AUG 2009 ---15.42.13 JOB04227 IRR010I USERID D839471 IS ASSIGNED TO THIS JOB. 15.42.13 JOB04227 ******* PSTARS3T *--------------------------Sepro-41* 15.42.13 JOB04227 IEF196I ******* PSTARS3T *--------------------------Se 15.42.13 JOB04227 ******* PSTARS3T * IEFUJV PROCESSING COMPLETE * 15.42.13 JOB04227 IEF196I ******* PSTARS3T * IEFUJV PROCESSING COMPLETE 15.42.13 JOB04227 ******* PSTARS3T *--------------------------Sepro-41* 15.42.13 JOB04227 IEF196I ******* PSTARS3T *--------------------------Se 15.42.13 JOB04227 IEF677I WARNING MESSAGE(S) FOR JOB PSTARS3T ISSUED 15.42.13 JOB04227 ICH70001I D839471 LAST ACCESS AT 15:42:05 ON FRIDAY, 15.42.13 JOB04227 $HASP373 PSTARS3T STARTED - INIT 28 - CLASS T - SYS 15.42.13 JOB04227 IEF403I PSTARS3T - STARTED - TIME=15.42.13 15.42.14 JOB04227 IEF285I SYS1.MACLIB 15.42.14 JOB04227 IEF285I VOL SER NOS= D1T900. 15.42.14 JOB04227 --TIMINGS (M 15.42.14 JOB04227 -JOBNAME STEPNAME PROCSTEP

RC EXCP CPU SRB 15.42.14 JOB04227 -PSTARS3T STEP1 C 00 63 .00 .00 15.42.14 JOB04227 -PSTARS3T STEP1 L 00 19 .00 .00 15.42.14 JOB04227 IEF285I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 15.42.14 JOB04227 -PSTARS3T STEP1 G 00 9 .00 .00 15.42.14 JOB04227 IEF404I PSTARS3T - ENDED - TIME=15.42.14 15.42.14 JOB04227 -PSTARS3T ENDED. NAME-JAGUA #4 ALBERTO TOTAL CPU 15.42.14 JOB04227 $HASP395 PSTARS3T ENDED ------ JES2 JOB STATISTICS -----28 AUG 2009 JOB EXECUTION DATE 116 CARDS READ 640 SYSOUT PRINT RECORDS

0 SYSOUT PUNCH RECORDS 44 SYSOUT SPOOL KBYTES 0.00 MINUTES EXECUTION TIME Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 91 Result output (reports) JES2.JESJCL example (truncatd at right) =============================== T O P ================================= 1 //PSTARS3T JOB (9526,,,20,,1090),'JAGUA #4 ALBERTO', // CLASS=T,TIME=3,MSGCLASS=O 2 //STEP1 EXEC ASMACLG,PARM.G='INFORMACOES VIA PARM' 3 XXASMACLG PROC XX* XX************************************************************* XX* ASMACLG XX* THIS PROCEDURE RUNS THE HIGH LEVEL ASSEMBLER, LINK-EDITS TH XX* NEWLY ASSEMBLED PROGRAM AND RUNS THE PROGRAM AFTER XX* THE LINK-EDIT IS ACCOMPLISHED. XX************************************************************* XX*

4 XXC EXEC PGM=ASMA90 5 XXSYSLIB DD DSN=SYS1.MACLIB,DISP=SHR 6 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 7 XXSYSPRINT DD SYSOUT=* 8 XXSYSLIN DD DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND), XX UNIT=SYSALLDA,DISP=(MOD,PASS), XX DCB=(BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1) 9 //C.SYSIN DD * 10 XXL EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C) 11 XXSYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE) 12 XX DD DDNAME=SYSIN 13 XXSYSLMOD DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)), XX DSN=&&GOSET(GO) 14 XXSYSUT1 DD DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND), XX UNIT=SYSALLDA,DCB=BUFNO=1 15 XXSYSPRINT DD SYSOUT=* 16 XXG

EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L)) 17 //G.SYSPRINT DD SYSOUT=* Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 92 Result output (reports) JES2.JESYSMSG example (truncated at right) STMT NO. MESSAGE 2 IEFC001I PROCEDURE ASMACLG WAS EXPANDED USING SYSTEM LIBRARY JE 16 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS ICH70001I D839471 LAST ACCESS AT 15:42:05 ON FRIDAY, AUGUST 28, 2009 IEF236I ALLOC. FOR PSTARS3T C STEP1 IEF237I BE10 ALLOCATED TO SYSLIB IGD101I SMS ALLOCATED TO DDNAME (SYSUT1 ) DSN (SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 ) STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( ) VOL SER NOS= VIO IEF237I JES2 ALLOCATED TO SYSPRINT IGD101I SMS ALLOCATED TO DDNAME (SYSLIN ) DSN (SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 ) STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS (

) VOL SER NOS= VIO IEF237I JES2 ALLOCATED TO SYSIN IEF142I PSTARS3T C STEP1 - STEP WAS EXECUTED - COND CODE 0000 IEF285I SYS1.MACLIB KEPT IEF285I VOL SER NOS= D1T900. IGD105I SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 DELETED, DDNAME=SY IEF285I D839471.PSTARS3T.JOB04227.D0000102.? SYSOUT IGD106I SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 PASSED, DDNAME=SY IEF285I D839471.PSTARS3T.JOB04227.D0000101.? SYSIN IEF373I STEP/C /START 2009240.1542 IEF374I STEP/C /STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MIN IEF236I ALLOC. FOR PSTARS3T L STEP1 IGD103I SMS ALLOCATED TO DDNAME SYSLIN IEF237I DMY ALLOCATED TO IGD101I SMS ALLOCATED TO DDNAME (SYSLMOD )

DSN (SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 ) STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( ) VOL SER NOS= VIO Summary Prev.Pg. Continua na prxima pgina Alberto Romano Schiesari www.profars.com 93 Result output (reports) JES2.JESYSMSG example (truncated at right) Continuao IGD101I SMS ALLOCATED TO DDNAME (SYSUT1 ) DSN (SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 ) STORCLAS (SCVIO) MGMTCLAS ( ) DATACLAS ( ) VOL SER NOS= VIO IEF237I JES2 ALLOCATED TO SYSPRINT IEF142I PSTARS3T L STEP1 - STEP WAS EXECUTED - COND CODE 0000 IGD105I SYS09240.T154213.RA000.PSTARS3T.OBJ.H06 DELETED,

DDNAME=SY IGD106I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 PASSED, DDNAME=SY IGD105I SYS09240.T154213.RA000.PSTARS3T.SYSUT1.H06 DELETED, DDNAME=SY IEF285I D839471.PSTARS3T.JOB04227.D0000103.? SYSOUT IEF373I STEP/L /START 2009240.1542 IEF374I STEP/L /STOP 2009240.1542 CPU 0MIN 00.00SEC SRB 0MIN IEF236I ALLOC. FOR PSTARS3T G STEP1 IEF237I VIO ALLOCATED TO PGM=*.DD IEF237I JES2 ALLOCATED TO SYSPRINT IEF142I PSTARS3T G STEP1 - STEP WAS EXECUTED - COND CODE 0000 IEF285I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 KEPT IEF285I D839471.PSTARS3T.JOB04227.D0000104.? SYSOUT IEF373I STEP/G /START 2009240.1542 IEF374I STEP/G /STOP 2009240.1542 CPU 0MIN 00.00SEC SRB

0MIN IGD105I SYS09240.T154213.RA000.PSTARS3T.GOSET.H06 DELETED, DDNAME=SY IEF375I JOB/PSTARS3T/START 2009240.1542 IEF376I JOB/PSTARS3T/STOP 2009240.1542 CPU 0MIN 00.01SEC SRB 0MIN Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 94 Result output (reports) Lets see an example of an application program that writes 2 reports: //REPORT1 DD SYSOUT=* , //REPORT2 DD SYSOUT=B and it has MSGCLASS=R parameter in the JOB statement JOB1234, JES2.JESMSGLG, class R JOB1234, JES2.JESJCL, class R Operating System JOB1234, JES2.JESMSGLG, class R JOB1234 , STEP 1, DD REPORT1, class R Line 1 Report1

Line 2 Report1 ... Etc... Application Program (my program) JOB1234 , STEP1, DD REPORT2, class B Line 1 Report2 Line 2 Report2 ... Etc... Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 95 Result output (reports) Similarly as occur in the input process, there are system components to deal with the (real) print demand generated by the queued datasets at output spool area. These components are the WRITERS; they work based on SYSOUT class. They read the spool datasets in the output spool area and print them at some device. JOB1234, JES2.JESMSGLG, class R JOB1234, JES2.JESJCL, class R JOB1234, JES2.JESMSGLG, class R JOB1234 , STEP 1, DD REPORT1, class R

Line 1 Report1 Line 2 Report1 ... Etc... JOB1234 , STEP1, DD REPORT2, class B Line 1 Report2 Line 2 Report2 ... Etc... Summary Prev.Pg. Writer serves R class datasets Writer serves B class datasets Alberto Romano Schiesari www.profars.com 96 Result output (reports) Sometimes (mostly at development activities) the output is NOT to be directed to a printer. User wants to browse it at a terminal.

Thats what happen when we access sysouts Roscoe, TSO or CONTROL-V. JOB1234, JES2.JESMSGLG, class R JOB1234, JES2.JESJCL, class R JOB1234, JES2.JESMSGLG, class R JOB1234 , STEP 1, DD REPORT1, class R Line 1 Report1 Line 2 Report1 ... Etc... JOB1234 , STEP1, DD REPORT2, class B Line 1 Report2 Line 2 Report2 ... Etc... Summary Prev.Pg. Writer serves R class datasets Writer serves B class datasets Alberto Romano Schiesari www.profars.com

97 JCL Its JCL time Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 98 JCL JCL = Job Control Language = language to ask operating system to execute services/tasks Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 99 JCL

All languages must have its commands. In JCL, there are 3 main commands: JOB, EXEC and DD Before starting with the details, lets see some basics Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 100 JCL Basic sintax Basic syntax Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 101 JCL Basic sintax // at positions 1-2 Comments: //* at positions 1-3 Always:

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 102 JCL Basic sintax Continuation statements statement to be continued : last character must be a comma, to indicate there are more parameter(s) following statement : // at columns 1-2, as usual, and continuation begins at any position from 4 through 16 (position 3 must be blank) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 103 JCL Basic sintax Continuation statements Example (first 2 lines are rulers to use as a reference to the statement positions) : .

1 2 3 4 5 6 7.. 123456789012345678901234567890123456789012345678901234567890123456789012 //ENTRADA DD DSN=SYS5.LINKLIB, // DISP=SHR BIBLIOTECA DE UTILITARIOS HOME MADE //ENTRADA DD DSN=SYS5.LINKLIB, // DISP=SHR COMENTARIO //ENTRADA DD DSN=SYS5.LINKLIB, // DISP=SHR COMENTARIO //ENTRADA DD DSN=SYS5.LINKLIB, // DISP=SHR Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 104 JCL Basic sintax Continuation statements Most common problems . 1 2 3 4 5 6 7.. 123456789012345678901234567890123456789012345678901234567890123456789012 //ENTRADA DD // DISP=SHR DSN=SYS5.LINKLIB BIBLIOTECA DE UTILITARIOS HOME MADE Here there is no comma after; therefore DISP=SHR wasnt considered as part of DD statement, but a separated statement; note that bo JCL error is detected at //ENTRADA DD; system understands that dataset SYS5.LINKLIB must be created (there is no DISP parameter) and that following statement is wrong

(DISP=SHR is na invalid operation). Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 105 JCL Basic sintax Continuation statements Most common problems . 1 2 3 4 5 6 7.. 123456789012345678901234567890123456789012345678901234567890123456789012 //ENTRADA // DD DISP=SHR DSN=SYS5.LINKLIB, COMENTARIO

Continuation begins at position 17; its wrong (maximum allowed for the beginning is position 16) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 106 JCL Basic sintax Continuation statements Most common problems . 1 2 3 4 5 6 7.. 123456789012345678901234567890123456789012345678901234567890123456789012 //ENTRADA DD //DISP=SHR COMENTARIO DSN=SYS5.LINKLIB,

Continuation at position 3 (wrong: minimum is position 4) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 107 JCL Basic sintax Continuation statements Most common problems . 1 2 3 4 5 6 7.. 123456789012345678901234567890123456789012345678901234567890123456789012 //ENTRADA DD DISP=SHR DSN=SYS5.LINKLIB, Continuation statement (second statement) hasnt // at positions 1-2: system

understands that //ENTRADA DD DSN=SYS5.LINKLIB, will be resumed at the next line (its last character is a comma it indicates there will be a continuation), but the next line is not a JCL line (it is recognized as the first and only - data record of a dataset named SYSIN) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 108 JCL Basic sintax Summary statement syntax Identification = // columns 1-2 Name = 1 to 8 positions, starting at posiition 3; it must have at least one blank after the name (and before the operation) Operation = JOB or EXEC or DD (or PROC or PEND or IF or END-IF or other); it must have at least one blank after operation name Parameter(s); it/they may be of two types: posicional : depend on the position (sequence of specification) or keyword : followed by = sign If there is only positional parameter(s), they must be specified in the correct

sequence If there is only keyword parameter(s), they may be specified in any sequence If there is both positional and keyword operands, the positional (in the correct sequence) must be specified before the keyword ones (in any sequence) Comments; it must have at least one blank after the operand(s) specification, before comments Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 109 O JOB as a whole - overwiew JOB as a whole overview Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

110 O JOB as a whole - overwiew Overview Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 111 JOB Overview JOB JOB EXEC DD . . DD EXEC DD . . DD EXEC DD

. . DD Job start delimiter (for the 1st step) 1 (for the 1st step) 1st Step n (for the 1st step) (for the 2nd step) 1 (for the 2nd step) 2nd Step n (for the 2nd step) (for the 3rd step) 1 (for the 3rd step) 3rd Step n (for the 3rd step) The job end delimiter is the next job begin (in the old times, it was mandatory a statement just with // in positions 1-2 and remaining spaces) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

112 JOB Overview For the steps: Remember that DDs are opcional. If a program does not use datasets, no DDs are needed or If a program uses dynamic allocation for a dataset, no DD is needed to that dataset BUT : EXEC is mandatory; EXEC defines a step. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 113 JOB Overview If, for instance, the 2nd step EXEC has na operation code error, it isnt identified as a EXEC and therefore it does not identify another new step delimiter, and therefore its DDs are considered as belonging to the 1st step DDs. //ABCARS01 JOB ... //STEP1 EXEC PGM=PGM01 //DDA1 DD ...

//DDB1 DD ... //DDC1 DD ... //STEP2 ESEC PGM=PGM02 //DDA2 DD ... //DDB2 DD ... //DDC2 DD ... //STEP3 EXEC PGM=PGM03 //DDA3 DD ... //DDB3 DD ... //DDC3 DD ... As 2nd EXEC is in error, it doesnt delimits the 2nd step beginning. All blue statements are the 1st step statements The green ones are the 2nd step statements Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 114 JOB Overview Example of a batch JOB with a SELECT from a DB2 database, and the corresponding output produced. //ARSARS01 JOB (1234),ALBERTO,MSGCLASS=X,CLASS=R //STEP001 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=6M //STEPLIB DD DSN=SYS1.DSNDB1D.SDSNLOAD,DISP=SHR // DD DSN=SYS1.DSNDB1D.RUNLIB.LOAD,DISP=SHR //DBRMLIB DD

DSN=SYS1.DSNDB1D.DBRMLIB.DATA,DISP=SHR PAGE 1 ***INPUT STATEMENT: //SYSTSPRT DD SYSOUT=* SELECT CD_AGE, NM_AGE FROM DB2T.ZZZ100_CADAGE //SYSPRINT DD SYSOUT=* WHERE CD_AGE > 20 AND CD_AGE < 100; //SYSUDUMP DD SYSOUT=* +----------------------------------+ | CD_AGE | NM_AGE | //SYSTSIN DD * +----------------------------------+ 1_| 30 | BARUERI | DSN SYSTEM(DB1D) 2_| 40 | S.JOSE R.PRETO | 3_| 50 | SAO CARLOS | RUN PROGRAM(DSNTEP2) PLAN(DSNTEP2) 4_| 60 | PINHEIROS |

5_| 70 | PERDIZES | LIB('SYS1.DSNDB1D.RUNLIB.LOAD') 6_| 80 | MARAMBAIA | PARMS('/ALIGN(MID)') 7_| 90 | JAGUARETE | END +----------------------------------+ //SYSIN DD * Prev.Pg. SELECTSummary CD_AGE, NM_AGE Alberto Romano Schiesari www.profars.com 115 JOB Commands Commands Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 116 JCL - Comandos There are 3 main JCL commands: JOB, EXEC and DD Lets see them. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 117 JOB JOB Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

118 JOB Sintax : //jobname JOB positional_parameters,keyword_parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 119 JOB Example : //PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R 2 positional parameters Summary Prev.Pg. 2 keyword parameters Alberto Romano Schiesari www.profars.com 120

JOB Positional parameters Generally they have information about job submitter and accounting. The sequence is mandatory, and the installation standards must be followed. //PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R 2 positional parameters Summary Prev.Pg. 2 keyword parameters Alberto Romano Schiesari www.profars.com 121 JOB Keyword parameters Information about the job, given by means of keywords; therefore, they can be specified at any sequence. //PDR001P2 JOB (B281),ALBERTO,MSGCLASS=X,CLASS=R 2 positional parameters Summary

Prev.Pg. 2 keyword parameters Alberto Romano Schiesari www.profars.com 122 JOB Keyword parameters CLASS= Specify the job execution class. Each class is served by 1 (or more) initiator. The amount of initiators and the classes each one serves is determined by support and production people. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 123 JOB Keyword parameters

TIME= Summary indicates the maximum amount of CPU usage allowed for the JOB; 1440 = specifies that theres no CPU limit Prev.Pg. Alberto Romano Schiesari www.profars.com 124 JOB Keyword parameters MSGCLASS= Specifies the sysout class for the messages related to the JOB (as specified in MSGLEVEL) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 125

JOB Keyword parameters MSGVEVEL= Specifies what has to be printed. Syntax: MSGLEVEL=(a,b) where a : JCL messages 0 = only JOB statement 1 = everything must be printed: submitted JCL statements + generated JCL statements 2 = only submitted JCL statements b : allocation messages 0 = do not print 1 = print Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 126 JOB Keyword parameters

NOTIFY= Specifies TSO userid to be notified at the job termination REGION= Specifies the size of the region to be allocated to the JOB RESTART= Specifies the stepname for the JOB to be restarted TYPRUN= Specifies the type of submission. SCAN = submit, validate JCL, but do not execute the job (it is finished after interpreter validation process; no INIT services done) HOLD = the JOB remains in wait state, until selected for execution by an initiator Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 127 EXEC EXEC

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 128 EXEC Sintax : //stepname EXEC positional_parameter,keyword_parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 129 EXEC Example : //VERIFY EXEC P756,COND=EVEN,PARM.S1=T=YES 1 positional parameter Summary Prev.Pg.

2 parameters keyword Alberto Romano Schiesari www.profars.com 130 EXEC Positional parameter only 1: procname It is a name, specifying the name of the PROC to be executed. If specified, keyword parameters PROC= and PGM= cannot be used. //STPR1 EXEC PD001 1 parmetro posicional Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 131 EXEC Keyword parameters Information related to the step, specified via keywords; they

can be specified in any sequence. //ST01 EXEC PGM=LISTABND,COND=ONLY 2 keyword parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 132 EXEC COND= Specifies the execution conditions the step must be executed or flushed. COND=EVEN step is executed even if any previous step is cancelled COND=ONLY step is executed only if any previous step cancelled COND=(n,cond) step is NOT EXECUTED if n satisfies the specified condition, in any previous step COND=(n,cond,step) step is NOT EXECUTED if n satisfies the condition specified in the step with the specified name Cond may be specified as : LT or GT or EQ or NE Examples.: COND=(4,LT) if 4 is less than the return code of any previous step, STEP IS NOT EXECUTED in other words: if any previous step emitted a return code greater than 4, STEP IS NOT EXECUTED COND=((4,LT,COMP),(4,LT,LKED))

(if 4 is less than the return code emitted by step COMP AND if 4 is less than the return code emitted by step LKED) THEN STEP IS NOT EXECUTED in other words: (if step COMP had a return code > 4 OR if step LKED had a return code > 4) THEN STEP IS NOT EXECUTED Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 133 EXEC PARM= Summary Data to be passed as parameters (arguments) to the called program. Ex.: PARM='NOSEQ,QUOTE,OFFSET,LIB' PARM='JAN/2003' Prev.Pg. Alberto Romano Schiesari www.profars.com

134 EXEC PGM= Specifies the name of the program to be executed PROC= Specifies the name of the proc(edure) to be executed. If no PGM= nor PROC= specified, then PROC= is assumed Examples : //STEP1 EXEC TST01 //STEP2 EXEC PROC=TST01 //STEP1 EXEC PGM=TST01 Summary Prev.Pg. executes PROC named TST01 executes PROC named TST01 executes program named TST01 Alberto Romano Schiesari www.profars.com 135 DD

DD (Data Definition) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 136 DD Sintax : //filename DD positional_parameters,keyword_parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 137 DD Example : //INFILE DD *,DCB=(LRECL=80) 1 positional parameter Summary

Prev.Pg. 1 keyword parameter Alberto Romano Schiesari www.profars.com 138 DD Positional parameters There are 3, and they are mutually exclusives. Only 1 positional parameter is allowed. //FIL1 //FIL2 //FIL3 DD DD DD * DATA DUMMY 1 positional parameter Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 139 DD Positional parameters: DD * Specifies that the record(s) from the following one are one (in-stream) dataset. The last record is the record before the next with // in positions 1-2. //FILE1 DD * DATA RECORD 1 DATA RECORD 2 Arquivo in-stream com ddname ARQ1 DATA RECORD 3 //FILE2 DD DSN=WFILE.TESTX,DISP=SHR Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

140 DD Positional parameters: DD * Examples: //FILE1 DD * DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 //FILE2 DD * DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 //FILE3 DD * DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 Summary Prev.Pg. In-stream dataset (ddname = FILE1)

In-stream dataset (ddname = FILE2) In-stream dataset (ddname = FILE3) Alberto Romano Schiesari www.profars.com 141 DD Positional parameters: DD * Examples: //* FOLLOWING DATASET = TODAYS TRANSACTIONS //FILE4 DD * DATA RECORD 1 In-stream dataset (ddname FILE4) DATA RECORD 2 DATA RECORD 3 //* FOLLOWIN DATASET = CONTROL DATA //FILE5 DD * In-stream dataset (ddname FILE5) JUL/2009 Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 142 DD Positional parameters: DD * Examples: //FILE4 DD * //* FOLLOWING DATASET = TODAYS TRANSACTIONS DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 For Operating System //FILE5 DD * but... //* FOLLOWING DATSET = CONTROL DATA JUL/2009 Its WRONG! Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com is OK, 143 DD Positional parameters: DD * Examples: //FILE4 DD * //* FOLLOWING DATASET = TODAYs TRANSACTIONS DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 //FILE5 DD * //* FOLLOWING DATASET = CONTROL DATA JUL/2009 Summary Prev.Pg. WHY ?

Alberto Romano Schiesari www.profars.com 144 DD Positional parameters: DD Examples: In-stream data starting here * This statement (it has //) is understood by the system as end of FILE4 in-stream file (zero records); it is a normal JCL statement, a comment First line is identified as a non-JCL statement (it doesnt have // at position 1-2); it is meant to be the first record of an in-stream file, whose ddname is assumed to be SYSIN //FILE4 DD * //* FOLLOWING DATASET = TRANSACTION FILE DATA RECORD 1 DATA RECORD 2 Another in-stream This statement (it has //) is understood data file starting

DATA RECORD 3 by the system as end of FILE5 in-stream here file (zero records); it is a normal JCL //FILE5 DD * statement, a comment //* FOLLOWING DATASET = CONTROL FILE JUL/2009 This record is identified as a non-JCL statement (it doesnt have // at position 1-2); it is meant to be the first record of an in-stream file, whose ddname is assumed to be SYSIN (it overrides the previous SYSIN dataset) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 145 DD Positional parameters: DD * THEN: This //FILE4

DD * //* FOLLOWING DATASET = TODAYS TRANSACTIONS DATA RECORD 1 DATA RECORD 2 DATA RECORD 3 //FILE5 DD * //* FOLLOWING DATASET = CONTROL DATA JUL/2009 the system understands this way: FILE4 FILE5 SYSIN = (dataset with zero records) = (dataset with zero records) = dataset with 1 record (JUL/2009) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 146 DD Positional parameters: DD

DATA Similar to DD *. Specifies that the statements that follow the DD DATA statement are an in-stream dataset. Last record of this dataset is the one contents is equal to the delimiter declared in the DLM keyword parameter. //FILE1 DD DATA,DLM=EOF* DATA RECORD 1 DATA RECORD 2 In-stream records for ARQ1 ddname dataset DATA RECORD 3 // THIS ISNT A JCL STATEMENT ! EOF* //FILE2 DD DSN=FILEWORK.TESTX,DISP=SHR Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 147 DD Positional parameters: DD

DUMMY Just for input files; specifies that the dataset does not exist (phisically only logically). System pretends to the access method (when dataset is opened, read, or closed) that the dataset exists, but has no records (empty dataset). In other words: it is correctly opened, with no problems, at the 1st read the end-offile condition is triggered, it is correctly closed. It is a good alternative when program opens, reads and closes the dataset, even if dataset does not exist (the data wont be used). Example: a program that reads 2 files: FILEA with transactions from the current month, and FILEB with transaction from past months of the year. In january (there is no past months in the year), FILEB can be a DD DUMMY file. //FILEB //FILEA DD DD Summary DUMMY DSN=CURMONFI.TESTEX,DISP=SHR Prev.Pg. Alberto Romano Schiesari www.profars.com 148 DD

Keyword Parameters Information related to the step, specified by keywords; so, they can be specified in any sequence. //ST01 EXEC PGM=LISTABND,COND=ONLY 2 keyword parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 149 DD DSN Data Set Name = specifies the dataset external name, the dataset name for the operating system (its name for the program is the ddname) Ex.: //F1 DD DSN=ALB.WRK.FIL,DISP=SHR Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 150 DD DCB Summary Specifies the characteristics of the dataset. Some sub-parameters are: DSORG= (Data Set ORGanization) specifies the dataset organization. Main options: PO (Partitioned Organization = Partitioned Data Set = PDS) PS (Physical Sequential = Sequencial) EXPDT= (EXPiration DaTe) = specifies the date the datset may be deleted RETPD= (RETention PerioD) specifies the period in which the dataset, although expired, cannot be deleted LRECL= (Logical RECord Length) specifies the length, in bytes, og the logical record RECFM= (RECord ForMat) specifies the dataset records format. Main options : FB = Fixed Blocked F = Fixed (Unblocked) FBA = Fixed Blocked Asa FA = Fixed (Unblocked) Asa V = Variable (Unblocked) VB = Variable blocked U = Undefined BLKSIZE= (BLocKSIZE) specifies the length, in bytes, of the physical record (block)

Ex.: //SYSIN DD DUMMY,DCB=(LRECL=80,RECFM=FB,BLKSIZE=800) Prev.Pg. Alberto Romano Schiesari www.profars.com 151 DD LRECL Specifies the logical record length RECFM Specifies the logical record format: F (fixed), FB (fixed blocked), V (variable), VB (variable blocked) BLKSIZE DSORG EXPDT RETPD Summary Specifies the length of the physical records (blocks) Specifies the dataset organization: OS (physical sequential), PO (partitioned organization) Specifies the dataset expiration date

Specifies the dataset retention period (in which it is not expired) Prev.Pg. Alberto Romano Schiesari www.profars.com 152 DD DISP Summary Disposition DISP=(a,b,c) specifies the action to be done with the dataset a = NEW (dataset must be created) or OLD (dataset is already exists; exclusive use) or SHR (shared dataset already exists; shared use) or MOD (modify dataset already exists; it will be extended) b = CATLG (dataset will be cataloged at the normal end of the program, if the program terminates normally) or UNCATLG (dataset will be uncataloged at the normal end of the program, if the program terminates normally) or DELETE (dataset will be deleted at the normal end of the program, if the program terminates normally) KEEP (dataset will be kept at the normal end of the program, if the program terminates normally) PASS (temporary dataset; it will be passed to the further steps) c = CATLG (dataset will be cataloged at the abnormal end of the

program, if the program terminates abnormally) or UNCATLG (dataset will be uncataloged at the abnormal end of the program, if program terminates abnormally) or DELETE (dataset will be deleted at the abnormal end of the program, if the program terminates abnormally) KEEP (dataset will be kept at the abnormal end of the program, if the program terminates abnormally) Prev.Pg. Alberto Romano Schiesari www.profars.com 153 DD UNIT Specifies where the dataset must be allocated. Generally (in development environments) : SYSDA or 3390 SYSOUT SYSOUT=class SYSOUT=(class,,formsname) SYSOUT=(class,writername,formsname) SYSOUT=(class,writername) SYSOUT=(class,INTRDR) Ex.: //SYSOUT DD SYSOUT=*

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 154 DD SPACE Summary SPACE= (a,(b,c),RLSE) or SPACE= (d,(b,c),RLSE) Specifies the amount of disk space to be allocated to the datase. a = TRK or CYL or ABSTR allocation unit : tracks, cylinders, or logical record length b = primary area amount c = secondary area amount (optional) d = logical record length RLSE = (ReLeaSE) (optional) specifies that if there is space left in the primary area after closing the file, this space must be released Prev.Pg. Alberto Romano Schiesari www.profars.com 155

DD KEYOFF= KEY OFFset = specifies the key offset in the logical record (for VSAM KSDS datasets) KEYLEN= KEY LENgth = specifies the key length (for VSAM KSDS datsets) RECORG= RECord ORGanization = specifies the VSAM type: KS (KSDS), ES (ESDS), RR (RRDS) or LS (Linear Space) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 156 DD Examples : //OUTFIL // //

DD DSN=ATAAABPS.EPC.SE62, DISP=(NEW,CATLG,DELETE),SPACE=(TRK,(100,50)), UNIT=SYSDA,DCB=LRECL=83 //INFIL DD DSN=ATAAABPS.EPC.SLB005,DISP=SHR //EPCASLBS DD // // // // DSN=ATAAABPS.EPC.SE64(+1), DISP=(NEW,CATLG,DELETE), SPACE=(TRK,(100,50)), UNIT=SYSDA, DCB=LRECL=83 //EPCASLBS DD // // // // DSN=ATAAABPS.EPC.SE64(+1),

DISP=(NEW,CATLG,DELETE), SPACE=(TRK,(100,50)), UNIT=SYSDA, DCB=(LRECL=83,BLKSIZE=830) //VKSDS1 DD DSN=DSVAABVS.LSG.A889.ALBERTO,DISP=(,CATLG,DELETE), // SPACE=(CYL,(10,10)),LRECL=100,KEYOFF=10, // KEYLEN=12,RECORG=KS Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 157 Library search Library search Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 158

Busca em bibliotecas There are in the system lists of libraries that must be searched when a member must be found. Some of these lists refer to: Executable programs JCL Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 159 Load module search Executable programs (load modules) search Operating system libraries SYS1.LINKLIB User libraries Ex.: SYS9.LINKLIB SYS9.EMPLK01 SYS8.USRRHLIB SYS7.EASYLIB etc Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 160 Load module search Load module search Normally the operating system libraries are automatically searched SYS1.LINKLIB etc The user libraries are searched if: - They are in the automatic search list - They are specified in the JOBLIB or STEPLIB statements Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 161 Load module search Load module search JOBLIB / STEPLIB These are special DDs that specify that na automatic search must be made in the libraries they refer. JOBLIB must be specified at the beginning of the JOB, and is by all EXECs of the job

STEPLIB must be specified just after the EXEC statement, and the search in the library it refers to is made just for the step Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 162 Load module search Load module search JOBLIB example //JOBEXEMP JOB (1234),ALBERTO,CLASS=A //JOBLIB DD DSN=SYS9.MYLIB,DISP=SHR //STEPX1 EXEC PGM=PGTST01 //ENTRADA DD DSN=ARQUIVOX,DISP=SHR //SAIDA DD SYSOUT=A //STEPX2 EXEC PGM=PGTST02 //DD1 DD DSN=ARQUIVOX,DISP=SHR //SYSOUT DD SYSOUT=A //STEPX3 EXEC PGM=PGTST03 //SYSIN DD DSN=ARQUIVOX,DISP=SHR //RELAT DD SYSOUT=A

Summary Prev.Pg. - Programs PGTST01, PGTST02 and PGTST03 are searched at SYS9.MYLIB Alberto Romano Schiesari www.profars.com 163 Load module search Load module search STEPLIB example //JOBEXEMP JOB (1234),ALBERTO,CLASS=A //STEPX1 EXEC PGM=PGTST01 //STEPLIB DD DSN=SYS8.MYLIBX,DISP=SHR //ENTRADA DD DSN=ARQUIVOX,DISP=SHR //SAIDA DD SYSOUT=A //STEPX2 EXEC PGM=PGTST02 //STEPLIB DD DSN=SYS8.MYLIBY,DISP=SHR //DD1 DD DSN=ARQUIVOX,DISP=SHR //SYSOUT DD SYSOUT=A //STEPX3 EXEC PGM=PGTST03 //STEPLIB DD DSN=SYS8.MYLIBZ,DISP=SHR //SYSIN

DD DSN=ARQUIVOX,DISP=SHR //RELAT DD SYSOUT=A Summary Prev.Pg. - Program PGTST01 is searched at SYS8.MYLIBX - Program PGTST02 is serached at SYS8.MYLIBY - Program PGTST03 is searched at SYS8.MYLIBZ Alberto Romano Schiesari www.profars.com 164 JCL search JCL search Operating system libraries SYS1.PROCLIB User libraries Ex.: SYS9.PROCLIB SYS9.EMPROC1 SYS8.USRPROCL SYS7.PRODPROC etc

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 165 JCL search JCL search Normally the operating system libraries are automatically searched SYS1.PROCLIB The user libraries are searched if: - They are in the automatic search - They are specified in the JCLLIB statement Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 166 JCL search JCL search (procedures PROCS) JCLLIB / INCLUDE It is a special DD that specifies that it must have search in the

specified libraries. JCLLIB must be specified in the beginning of the JOB. To insert the JCL statements from a library (specified in the JCLLIB) member into the stream of JCL statement being built (by the reader / interpreter) use INCLUDE statement. See following example: Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 167 JCL search JCL search (procedures) JCLLIB / INCLUDE: example //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X // JCLLIB ORDER=(JCL.SIST.SRC) // INCLUDE MEMBER=BIBPROD //*------------------------------------//STEP1 EXEC PGM=P001 //STEP2 EXEC PGM=P003 //STEP3 EXEC PGM=P004 If BIBPROD member of JCL.SIST.SRC dataset has the statement //STEPAUX EXEC PGM=SHOWTIME

the submetted JCL is: //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X //* JCLLIB ORDER=(JCL.SIST.SRC) //STEPAUX EXEC PGM=SHOWTIME //*------------------------------------//STEP1 EXEC PGM=P001 //STEP2 EXEC PGM=P003 //STEP3 EXEC PGM=P004 Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 168 JCL search JCL search (procedures) JCLLIB / INCLUDE: another example //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X // JCLLIB ORDER=(JCL.SIST.SRC) // INCLUDE MEMBER=BIBDESEN //*------------------------------------//STEP1 EXEC PGM=P001 //STEP2

EXEC PGM=P003 //STEP3 EXEC PGM=P004 If BIBDESEN member of JCL.SIST.SRC dataset has the statement //STEPAUX EXEC PGM=IEFBR14 the submitted JCL is: //LSG#@ARS JOB ('ALBERTO'),'ALBERTO',CLASS=1,MSGCLASS=X //* JCLLIB ORDER=(JCL.SIST.SRC) //STEPAUX EXEC PGM=IEFBR14 //*------------------------------------//STEP1 EXEC PGM=P001 //STEP2 EXEC PGM=P003 //STEP3 EXEC PGM=P004 Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 169 PROCS PROCS Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 170 PROCS Procs = procedures = set of non-JOB and non-data statements. There are 2 types: CATALOGED IN-STREAM Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 171 PROCS Summary CATALOGED procedures

Prev.Pg. Alberto Romano Schiesari www.profars.com 172 PROCS Cataloged procedures are those: - prepared - cataloged (as a member) in a PROCLIB so that they can be called for execution in the jobs - They cannot have JOB statement - Start with PROC statement - End with PEND statement - They cannot have in-stream data (but they can be inserted via override) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 173 PROCS Preparing the proc: - Edit with Roscoe / TSO and save it. Ex.

//PROCDEMO PROC //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A // PEND - It is an almost normal JCL! - No JOB statement is allowed - Begins with PROC statement - Ends with PEND statement - No in-stream data allowed This proc has 3 steps (STEPX1, STEPX2 & STEPX3) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 174 PROCS

Cataloging the proc: - Copy to a proclib. Ex. //CATAL //SAIDA //ENTRA EXEC - Simple copy to a proclib member Prev.Pg. Alberto Romano Schiesari www.profars.com PGM=IEBCOPY DD DSN=SYS9.PROCLIB(PROCDEMO) DD DATA,DLM=FINAL //PROCDEMO PROC //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A

// PEND FINAL Summary 175 PROCS Executing the proc: - Calling for execution. Ex. //ARSARS01 JOB (1234),ALBERTO,CLASS=T,MSGCLASS=R //S1 EXEC PROC=PROCDEMO 1ST CALL //S2 EXEC PROCDEMO 2ND CALL //STEPX1.INFILE DD * in-stream data (INFILE dataset, STEPX1 step, proc PROCDEMO) //S3 EXEC PROCDEMO 3RD CALL - Reader / interpreter finds PROCDEMO in a proclib to know how to expand it

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 176 PROCS Summary IN-STREAM procs Prev.Pg. Alberto Romano Schiesari www.profars.com 177 PROCS They are - declared at the beginning of the JOB - called for execution in the same JOB - JOB statement is not allowed - Must begin with a PROC statement - Must end with a PEND statement

- In-stream data are not allowed Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 178 PROCS Declaring the Proc - Declared at the beginning of the JOB. Ex. //ARSARS01 JOB (1234),ALBERTO,CLASS=T,MSGCLASS=R //PROCDEMO PROC //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A - PROC declared at the //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR beginning of the JOB //OUFILE DD SYSOUT=A //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A // PEND //S1

EXEC PROC=PROCDEMO //* 1ST CALL //S2 EXEC PROCDEMO //* 2ND CALL //STEPX1.INFILE DD * in-stream data (INFILE dataset, STEPX1 step, proc PROCDEMO) //S3 EXEC PROCDEMO //* 3RD CALL Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 179 PROCS Calling the proc - Called for execution at the same job. Ex. //ARSARS01 JOB (1234),ALBERTO,CLASS=T,MSGCLASS=R //PROCDEMO PROC //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR - Reader / Interpreter DOES //OUFILE DD SYSOUT=A

NOT GO to any PROCLIB in //STEPX1 EXEC PGM=PGTST01 order to expand the PROC; //INFILE DD DSN=XFILE,DISP=SHR //OUFILE DD SYSOUT=A - Expansion is done inquiring //STEPX1 EXEC PGM=PGTST01 //INFILE DD DSN=XFILE,DISP=SHR the PROC-PEND block at the //OUFILE DD SYSOUT=A same job where it is referred to // PEND //S1 EXEC PROC=PROCDEMO //* 1ST CALL //S2 EXEC PROCDEMO //* 2ND CALL - PROC is called in the same job //STEPX1.ENTRADA DD * in-stream data (INFILE dataset, where it is declared STEPX1 step, proc PROCDEMO) //S3 EXEC PROCDEMO //* 3RD CALL Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 180 PROCs symbolic parameters Symbolic parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 181 PROCs symbolic parameters In the following PROC : //SSSPRO1 //STEPA //DD1 //REPORT1 //STEPB //REPORT2 //STEPC //REPORT3 // PROC

EXEC DD DD EXEC DD EXEC DD PEND PGM=PPPX1 DSN=ARQALB.DATA.DISP=SHR SYSOUT=A PGM=PPPX2 SYSOUT=A PGM=PPPX3 SYSOUT=A Everytime it is called, reports with ddname REPORT, REPORT2 & REPORT3 are class A output. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 182 PROCs symbolic parameters To provide flexibility, one may leave the class able to be modified when PROC is invoked. This is possible via symbolic parameters:

//SSSPRO1 //STEPA //DD1 //REPORT1 //STEPB //REPORT2 //STEPC //REPORT3 // PROC EXEC DD DD EXEC DD EXEC DD PEND PGM=PPPX1 DSN=ARQALB.DATA.DISP=SHR SYSOUT=&REPCLA PGM=PPPX2 SYSOUT=&REPCLA PGM=PPPX3 SYSOUT=&REPCLA This way the class is NOT specified. - CLASS must have a default value or - CLASS must be specified when PROC is invoked (if not specified, default

value is assumed) Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 183 PROCs symbolic parameters If there isnt default value: JCL error. When this in-stream PROC is expanded //JOBEXEMP JOB (1234),ALBERTO,CLASS=B //SSSPRO1 PROC //STEPA EXEC PGM=PPPX1 //DD1 DD DSN=ARQALB.DATA.DISP=SHR //REPORT1 DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //REPORT2 DD SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //REPORT3 DD SYSOUT=&REPCLA //

PEND //* //S1 EXEC SSSPR01 the system wont know what class must me associated to reports DDs REPORT1, REPORT2 & REPORT3 in STEP S1. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 184 PROCs symbolic parameters One alternative to specify the default value is via PROC statement. //JOBEXEMP JOB (1234),ALBERTO,CLASS=B //SSSPRO1 PROC REPCLA=* //STEPA EXEC PGM=PPPX1 //DD1 DD DSN=ARQALB.DATA.DISP=SHR //REPORT1 DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //REPORT2 DD

SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //REPORT3 DD SYSOUT=&REPCLA // PEND //* //S1 EXEC SSSPR01 System knows that the 3 DDs are SYSOUT=*, due to the default specification at PROC statement. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 185 PROCs symbolic parameters (to override it) To change the default value : One must specify the new value when PROC is invoked. //JOBEXEMP JOB (1234),ALBERTO,CLASS=B //SSSPRO1 PROC REPCLA=*

//STEPA EXEC PGM=PPPX1 //DD1 DD DSN=ARQALB.DATA.DISP=SHR //REPORT1 DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //REPORT2 DD SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //REPORT3 DD SYSOUT=&REPCLA // PEND //* //S1 EXEC SSSPR01,REPCLA=A System knows that the 3 DDs are SYSOUT=A, due to the override Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 186

PROCs symbolic parameters (override) In this case //JOBEXEMP JOB (1234),ALBERTO,CLASS=B //SSSPRO1 PROC REPCLA=* //STEPA EXEC PGM=PPPX1 //DD1 DD DSN=ARQALB.DATA.DISP=SHR //REPORT1 DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //REPORT2 DD SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //REPORT3 DD SYSOUT=&REPCLA // PEND //* //S1 EXEC SSSPR01,RELCLA=A //S2 EXEC SSSPR01 System knows that the 3 step S1 DDs are SYSOUT=A and the 3 step S2 DDs are SYSOUT=*

Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 187 PROCs symbolic parameters (override) One can alter only the desired DDs: //JOBEXEMP JOB (1234),ALBERTO,CLASS=B //SSSPRO1 PROC REPCLA=* //STEPA EXEC PGM=PPPX1 //DD1 DD DSN=ARQALB.DATA.DISP=SHR //REPORT1 DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //REPORT2 DD SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //REPORT3 DD SYSOUT=&REPCLA // PEND

//* //S1 EXEC SSSPR01,REPCLA.STEPA=A,REPCLA.STEPC=R //S2 EXEC SSSPR01,REPCLA.STEPB=X System knows that: REPORT1, STEPA, procstep REPORT1, STEPB, procstep REPORT1, STEPC, procstep REPORT1, STEPA, procstep REPORT1, STEPB, procstep REPORT1, STEPC, procstep Summary Prev.Pg. S1 S1 S1 S2 S2 S2 : : : : : :

SYSOUT=A SYSOUT=* SYSOUT=R SYSOUT=* SYSOUT=X SYSOUT=* Alberto Romano Schiesari www.profars.com 188 PROCs symbolic parameters To override symbolic parameters default values, one must specify the new value in when proc is invoked. : . ddname step_name=xxx Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 189 PROCs symbolic parameters Another way to change default, valid for the whole or part of

the job, is via SET command: Syntax : //[name] SET symbolic_variable=[value] //SSSPRO1 PROC //STEPA EXEC PGM=PPPX1 //DD1 DD DSN=... //SYSPRINT DD SYSOUT=&REPCLA //STEPB EXEC PGM=PPPX2 //SYSPRINT DD SYSOUT=&REPCLA //STEPC EXEC PGM=PPPX3 //SYSPRINT DD SYSOUT=&REPCLA // PEND // SET REPCLA=A //STEP1 EXEC SSSPR01 //STEP2 EXEC SSSPR01

//STEP3 EXEC SSSPR01 //STEP4 EXEC SSSPR01 //STEP5 EXEC SSSPR01 // SET REPCLA=B //STEP6 EXEC SSSPR01 //STEP7 EXEC SSSPR01 //STEP8 EXEC SSSPR01 //STEP9 EXEC SSSPR01 //STEP10 EXEC SSSPR01 Steps 01, 02, 03, 04 and 05 have REPCLA value A Steps 06, 07, 08, 09 and 10 have RELCLA value B Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 190 PROCs including DD in the proc

Including DD in the proc Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 191 PROCS including DD in the proc If you need to include a DD (there is no such DD in the PROC, it must be included to the steps DDs) : . //stepname ddname DD parameters Ex.: //S2 EXEC SSSPR01,REPCLA.STEPB=X //STEPB.REPOTHER DD SYSOUT=* Summary Prev.Pg. Alberto Romano Schiesari www.profars.com

192 PROCS including datasets in the proc Including datasets Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 193 PROCs includind datasets Additional dataset: If it is necessary to include a dataset (there is no such DD in the PROC, it must be included to the steps DDs): . //stepname ddname DD parameters Ex.: //S2 EXEC SSSPR01,REPCLA.STEPB=X

//STEPB.REPOTHER DD SYSOUT=* Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 194 PROCs including datasets To include one more dataset in a concatenation sequence: To include one additional dataset (to concatenate) in na existing DD: specify 1 DD for each existant DD, without parameters, and add the desired one as the last DD. //stepnameddname DD // DD // DD new_dataset Example : //STEP1 EXEC PROCX1 //STEPA.DD2 DD // DD // DD DSN=TST.ARQUIVOX... Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 195 PROCs changing EXEC parameters Changing EXEC parameters Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 196 PROCs changing EXEC paameters When invoking the PROC, specify the parameter and stepname you wish to change: //stepname EXEC PROC=xxx,parameter.stepname=value Ex.: //S2 EXEC SSSPR01,RELCLA.STEPB=X,PARM.STEPB=YES //STEPB.RELOUTRO DD SYSOUT=* Summary

Prev.Pg. Alberto Romano Schiesari www.profars.com 197 JCL IF / THEN / ELSE / ENDIF IF / THEN / ELSE / ENDIF Commands Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 198 JCL IF / THEN / ELSE / ENDIF These commands coan be used rather than COND (and theyre easyer to understand...). Syntax : // IF (condition) THEN statements to execute if condition is TRUE // ENDIF or // IF (condition) THEN

statements to execute if condition is TRUE // ELSE statements to execute if condition is FALSE // ENDIF Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 199 JCL IF / THEN / ELSE / ENDIF Condition = indicates that the statements below THEN must be executed if condition is TRUE. The tests may be as follows: Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 200 JCL IF / THEN / ELSE / ENDIF To test the previous step return code: [stepname.]RC [stepname.]RC

[stepname.]RC [stepname.]RC [stepname.]RC [stepname.]RC [stepname.]RC [stepname.]RC Summary Prev.Pg. EQ GT LT NE NL NG GE LE return_code return_code return_code return_code return_code return_code return_code return_code or or

or or or or or Alberto Romano Schiesari www.profars.com 201 JCL IF / THEN / ELSE / ENDIF To test whether a previous step was executed or not (not flushed or flushed) : [stepname.]RUN EQ TRUE ou [stepname.]RUN EQ FALSE [stepname.]RUN EQ TRUE ou [stepname.]RUN EQ FALSE Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 202 JCL IF / THEN / ELSE / ENDIF To test whether a previous step has abended or not: [stepname.]ABEND EQ TRUE [stepname.]ABEND EQ FALSE

or [stepname.]ABEND EQ TRUE or [stepname.]ABEND EQ FALSE Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 203 JCL IF / THEN / ELSE / ENDIF To test a previous step Completion Code (system or user) : [stepname.]ABENDCC EQ Snnn or [stepname.]ABENDCC EQ Unnnn [stepname.]ABENDCC EQ Snnn [stepname.]ABENDCC EQ Unnnn Summary Prev.Pg. or Alberto Romano Schiesari www.profars.com 204

JCL IF / THEN / ELSE / ENDIF Multiple contitions: Use parenthesis to specify test priority and sequence. Use & for and Use Summary | for or Prev.Pg. Alberto Romano Schiesari www.profars.com 205 JCL IF / THEN / ELSE / ENDIF ENDIF is mandatory to specify the end of the set of commands to be executed, with or withot ELSE. ELSE is optional. IMPORTANT : Use of COND + IF / THEN / ELSE / ENDIF together is extremely confusing. DONT DO THAT! Summary Prev.Pg.

Alberto Romano Schiesari www.profars.com 206 JCL IF / THEN / ELSE / ENDIF Example : //ARSARS01 JOB (1234),'ROMANO',CLASS=1,MSGCLASS=X //*-----------------------------------------------------------//STEP01 EXEC PGM=IEFBR14 //STEP02 EXEC PGM=IEFBR14 // IF (STEP01.RC NG 0) THEN //STEP03 EXEC PGM=IEFBR14 // ENDIF //*-----------------------------------------------------------//STEP04 EXEC PGM=IEFBR14 // IF ((STEP01.RC EQ 0)) THEN //STEP05 EXEC PGM=IEFBR14 // ELSE //STEP06 EXEC PGM=IEFBR14 // ENDIF //*-----------------------------------------------------------//STEP07 EXEC PGM=IEFBR14 // IF ((STEP01.RUN EQ TRUE)) THEN //STEP08 EXEC PGM=IEFBR14 // ENDIF // IF ((STEP01.RUN EQ FALSE)) THEN

//STEP09 EXEC PGM=IEFBR14 // ENDIF The execution of this JCL results in: Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 207 JCL IF / THEN / ELSE / ENDIF Example : $HASP373 LSG#@ARS STARTED - INIT 2 IEF403I LSG#@ARS - STARTED - TIME=14.52.18 # # JOBNAME STEPNAME PROCSTEP PROGRAM RC # LSG#@ARS STEP01 IEFBR14 00 # LSG#@ARS STEP02 IEFBR14 00 # LSG#@ARS STEP03 IEFBR14

00 # LSG#@ARS STEP04 IEFBR14 00 # LSG#@ARS STEP05 IEFBR14 00 # LSG#@ARS STEP06 IEFBR14 FLUSH # LSG#@ARS STEP07 IEFBR14 00 # LSG#@ARS STEP08 IEFBR14 00 # LSG#@ARS STEP09 IEFBR14 FLUSH IEF404I LSG#@ARS - ENDED - TIME=14.52.19 Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 208 Appendix - CONTROLs BMC Software Produto Funo

Control-M Automated Production Control and Scheduling System Manages and automates the setup, scheduling and execution of jobs in the data center. Control-M / Restart Restart Management System Automates the activities that must be performed when restarting failed jobs, including the scratching and uncataloging of datasets created by failed jobs. Control-M / Tape Removable Media Management System Increases utilization of removable media and controls retention periods. Prevents misuse of media, and provides tape library and vault control. Control-M / Analyser Automated Information Integrity System Performs in-stream validation, accuracy, and reasonability checks on information used by data center production tasks (for example, reports, databases). Control-D Output Management System Automatically schedules and controls every aspect of report processing and distribution, including report decollating, bundling, printing, online viewing, and archiving.

Control-V Quick Access Archive Viewing System Provides online access to archived reports and documents by indexed data retrieval Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 209 CONTROLs BMC Software Produto Funo Control-D / Page on demand Report Retrieval and Display System Enables end users to retrieve and view pages of reports that reside on mainframe storage in real time. Indexed reports can be retrieved by index name and value. AFP and XEROX reports can also be retrieved and displayed using CONTROL-D/Web Access Server or CONTROL-D/Page On Demand API. Control-D / Image

Image Output Management System Enables output from commercial imaging equipment to be imported into either CONTROL-D or CONTROL-V for decollation, distribution and viewing, and into CONTROL-V for archiving and indexed retrieval. Control-O Console Automation System and Desired State Monitoring System Monitors and automatically responds to messages, commands, and dataset events, as well as various other system events. The CONTROL-O/COSMOS feature allows for status monitoring while maintaining all critical system objects in a desired and ideal status. Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 210 THE END Summary Prev.Pg. Alberto Romano Schiesari www.profars.com 211

Recently Viewed Presentations

  • Designing forConstruction Site Safety- 2 to 4 hour

    Designing forConstruction Site Safety- 2 to 4 hour

    "Washington Group International Designs and Builds a Mixed-Waste Treatment Facility." OSHA. February 2007. This case study describes how the Washington Group International, Inc. incorporated its design for safety process into the construction of the U.S. Department of Energy's Advanced Mixed...
  • SQL Injection

    SQL Injection

    COSC 341 at IUP. What is SQL Injection? One of the most serious threats for Web Application. Inject SQL commands into an SQL statement, via web page input. Alters an SQL statement and compromises the security of a web application.
  • Was ist heute? Heute ist Montag Dienstag Mittwoch

    Was ist heute? Heute ist Montag Dienstag Mittwoch

    Woche means week, so Mittwoch is based on middle of the week. From this pupils work out possible meaning of Wochenende (weekend). Discuss the similarity between English and German, eg Montag Monday - the day of the moon, Mond =...
  • Ciletti ENGR 2130 Chapter 3  Simple Resistive Circuits

    Ciletti ENGR 2130 Chapter 3 Simple Resistive Circuits

    Analog meters - are based on the d'Arsonval meter movements. It consists of a movable coil placed in the filed of a permanent magnet. When current flows through the coil, it create torque in the coil causing it to move....
  • Chapter 6. pKa Chapter 7. Solubility

    Chapter 6. pKa Chapter 7. Solubility

    Structure Modification Strategies to Improve Solubility. ... increased burden on patients, (e) less expensive drug product formulation. Problems. Remove groups not needed for . binding (reduce lipophilicity and MW) Add amines to existing chains.
  • 2019 NSRP All Panel Meeting

    2019 NSRP All Panel Meeting

    "We are facing adversaries who possess significant military capabilities and aspire to be the equal of the United States. These nation states are improving their warfighting capabilities at a rapid pace, shrinking our competitive advantage, and redefining international norms to...
  • Connectivity of Triangle Meshes Introduction

    Connectivity of Triangle Meshes Introduction

    Voxels and Iso-surfaces The problem Regular 3D lattice of green and red samples Build an iso-surface (manifold triangle mesh) that: Separates red and green samples Has a vertex on each stick Stick = blue axis-aligned edge joining a red and...
  • READ AROUND REVIEW: SECT = CUT, SEPARATE  What

    READ AROUND REVIEW: SECT = CUT, SEPARATE What

    What is the word that names the part on a map at which two streets cross each other? intersection a point at which two lines or roads meet and cut across each other