JCL eljárások Tanfolyami jegyzet ICSS Kft 2012
Bevezetés A JCL eljárás JCL utasításokat tartalmaz Az eljárás egy vagy több lépésből állhat Különböző felhasználók meghívhatják a JOBjukban az EXEC utasítás segítségével Az eljárás lehet instream vagy katalogizált Eljárás könyvtárak: PROCLIB (például SYS1.PROCLIB) ICSS Kft 2012 2
Eljárások előnyei az eljárásban lévő JCL utasítások le vannak tesztelve Idő és helymegtakarítás Több felhasználó használhatja egy időben Újrafelhasználhatóság Sok előre megírt JCL eljárás van a rendszerben amit a felhasználó csak meghív, például PL/I program fordítása és futtatása ICSS Kft 2012 3
Eljárások szerkezete A JCL eljárások a következő JCL utasításokat tartalmazhatják: comment, DD, EXEC, IF/THEN/ELSE/ENDIF, INCLUDE, OUTPUT és SET Nem tartalmazhatnak: JES2 vagy JES3 utasításokat JOB utasítást instream adatot (DD *) /* utasítást // utasítást JOBLIB utasítást Egy JOB maximum 255 lépést tartalmazhat, ez a benne meghívott eljárásokkal együtt értendő ICSS Kft 2012 4
Instream eljárások PROC utasítással kell kezdődnie PEND utasítással kell végződnie Instream eljárásban nem lehet újabb instream eljárást definiálni Egy JOB-ban maximum 15 instream eljárás lehet ICSS Kft 2012 5
Katalogizált eljárások Opcionálisan kezdődhet PROC utasítással és végződhet PEND utasítással Ha megadjuk a PROC utasítást, akkor az csak az első utasítás lehet PDS vagy PDSE tartalmazhat katalogizált eljárásokat A rendszer eljárás könyvtára a SYS1.PROCLIB, de általában több eljárás könyvtár is van és lehetnek privát könyvtárak is A katalogizált eljárások neve a PDS(E)-beli membernév A katalogizált szónak nincs köze a katalógushoz ICSS Kft 2012 6
Eljárás használata Instream eljárás esetén a JOB-ban az eljárást hívó EXEC utasítás előtt kell szerepeljen az eljárás definíciója Privát könyvtárba katalogizált eljárás esetén a privát könyvtárat meg kell adni a JCLLIB utasításon Rendszer eljárás-könyvtárba katalogizált eljárás esetén a rendszer a keresési sorrendjében levő könyvtárakban keres Eljárás meghívása az EXEC utasítással: //STEP EXEC PROC=ELJARAS vagy //STEP EXEC ELJARAS ICSS Kft 2012 7
Példa instream eljárásra és meghívására //ALLOCJ JOB 1,CLASS=A,MSGCLASS=1,NOTIFY=&SYSUID //* //* eljaras kezdete //ALLOCP PROC //STEP1 EXEC PGM=IEFBR14 //ADD DD DISP=(NEW,CATLG),DSN=&NEV,SPACE=(TRK,(10,5,10)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PO) // PEND //* eljaras vege //* //* eljaras meghivasa: //STEP1 EXEC ALLOCP,NEV=ICROBI.DATASET ICSS Kft 2012 8
Példa katalogizált eljárásra és meghívására Az eljárás az ICROBI.PROCLIB PDS-nek az ALLOCP member-ében található: //ALLOCP PROC //STEP1 EXEC PGM=IEFBR14 //ADD DD DISP=(NEW,CATLG),DSN=&NEV,SPACE=(TRK,(10,5,10)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PO) // PEND A JOB, ahol meghívjuk a fenti eljárást: //ALLOCJ JOB 1,CLASS=A,MSGCLASS=1,NOTIFY=&SYSUID //* //PROCLIB JCLLIB ORDER=ICROBI.PROCLIB //* az eljaras meghivasa: //STEP1 EXEC ALLOCP,NEV=ICROBI.DATASET ICSS Kft 2012 9
Eljárás módosítása Az eljárásban meghívott programnevek nem módosíthatók Több lehetőség van az egyes lépésekben megadott programok paramétereinek megadására Paramétereket lehet nullázni A paramétereket tetszőleges sorrendben lehet megadni Az eljárásban használt DD nevek és OUTPUT utasítások módosítása: A paraméterek megadásával Szimbolikus paraméterek használatával SET JCL parancs használatával ICSS Kft 2012 10
Eljárás módosítása - EXEC Paraméter módosítás, hozzáadás és nullázás az EXEC utasításon a következő formában: Paraméter.eljáráslépés=érték Példa: //STEP1 EXEC PROC=ELJARAS,TIME.STEP5=30 (az eljárásnak van egy STEP5 lépése) Ha nem adjuk meg az eljáráslépést akkor minden lépésre vonatkozik Példa: //STEP1 EXEC PROC=ELJARAS,TIME=30 Példa paraméter nullázására: //STEP1 EXEC PROC=ELJARAS,TIME.STEP5= ICSS Kft 2012 11
Eljárás módosítása - DD DD utasítás módosítása a következő formában: //eljáráslépés.ddnév DD paraméter=érték Természetesen több DD utasítás és több paraméter értéke is megváltoztatható Példa paraméter módosítására: Az APROC eljárásban: //PSTEP1 EXEC PGM=... //D1 DD DSN=ICROBI.DATASET,DISP=SHR Hivatkozás a JOB-ban: //STEPA EXEC PROC=APROC //PSTEP.D1 DD DISP=(OLD,DELETE) ICSS Kft 2012 12
Eljárás módosítása - DD Példa paraméter nullázására: Az APROC eljárásban: //PSTEP1 EXEC PGM=... //D1 DD DSN=ICROBI.DATASET,UNIT=3490,... Hivatkozás a job-ban: //STEPA EXEC PROC=APROC //PSTEP.D1 DD UNIT= ICSS Kft 2012 13
Eljárás módosítása - DD Példa paraméter hozzáadására: Az APROC eljárásban: //PSTEP1 EXEC PGM=... //D1 DD DSN=ICROBI.DATASET,DISP=OLD Hivatkozás a job-ban: //STEPA EXEC PROC=APROC //PSTEP.D1 DD UNIT=3490,VOL=SER=CART01 ICSS Kft 2012 14
Eljárás módosítása - OUTPUT OUTPUT utasítás módosítása a következő formában: //eljáráslépés.név OUTPUT paraméter=érték Példa: Az OPROC eljárásban: //PSTEP1 //OUT1 EXEC PGM=... OUTPUT COPIES=2 Hivatkozás a job-ban: //STEPA EXEC PROC=OPROC //PSTEP1.OUT1 OUTPUT CONTROL=DOUBLE,COPIES=3 ICSS Kft 2012 15
Szimbolikus paraméterek A szimbolikus paraméterek első karaktere & jel, a következő jel nem lehet szám, a 2-7 karakterek lehetnek alfanumerikusak és egyéb karakterek (@#), a végét pont jelöli, pl.: &INPUT. A szimbolikus paraméter nem lehet egyező nevű az EXEC utasításnál használt egyéb paraméterekkel, például nem lehet &COND. A PROC utasításon megadhatóak a paraméterek alapértelmezés szerinti értékei Példa: //PELDA PROC DSN1=,SOUT=X SET utasítással is megadható egy paraméter értéke ICSS Kft 2012 16
SET utasítás A SET utasítás használható arra, hogy szimbolikus paramétereknek értéket adjunk, módosítsuk vagy nullázzuk az értéket A SET utasítással megadott érték az ezután következő JCL utasításoknál lesz érvényben A PROC és EXEC utasításon megadott paraméter értékek felülírják a SET utasítással megadott értéket Szintakszis: //név SET sz_param1=érték1[,sz_param2=érték2,...] Példa: SET utasítás //SETDISP SET DSP=(NEW,CATLG,DELETE) Hivatkozás a DSP szimbolikus paraméterre //DD1 DD DSN=ICROBI.DATASET,DISP=&DSP ICSS Kft 2012 17
Példa szimbolikus paraméter használatára //ALLOCJ JOB 1,CLASS=A,MSGCLASS=1,NOTIFY=&SYSUID //* //* eljaras kezdete: //ALLOCP PROC //STEP1 EXEC PGM=IEFBR14 //ADD DD DISP=(NEW,CATLG),DSN=&NEV.,SPACE=(TRK,(9,5,10)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800,DSORG=PO) // PEND //* eljaras vege //* // SET NEV=ELSO.DATASET //* elso meghivas: //STEP1 EXEC ALLOCP //* masodik meghivas: //STEP2 EXEC ALLOCP,NEV=MASODIK.DATASET ICSS Kft 2012 18
Eredmény JCL A spoolban a JOB log-ban megnézhető, hogy a JOB az eljáráshivatkozásokkal együtt milyen lett Az instream eljárás sorait + jelzi A katalogizált eljárás sorait X jelzi Az első két oszlopban látható karakterek: Az utasításon nem történt módosítás: ++ vagy XX Ha legalább egy paraméter megváltozott: +/ vagy X/ Ha a sor megjegyzés lett: ++* vagy XX* ICSS Kft 2012 19
INCLUDE group PDS vagy PDSE egy member-ét, ami JCL utasításokat tartalmaz INCLUDE group-nak nevezzük A JOB-ban az INCLUDE utasítással hivatkozunk az INCLUDE group-ra A hivatkozás helyére bekerülnek az INCLUDE group JCL utasításai Szintakszis: //név INCLUDE MEMBER=membernév A PDS vagy PDSE lehet rendszerkönyvtár, installálás által definiált könyvtár vagy JCLLIB utasítással megadott könyvtár Az INCLUDE group-ok 15 szintig ágyazhatók egymásba ICSS Kft 2012 20
JCLLIB utasítás A JCLLIB utasítással definiáljuk azokat a privát könyvtárakat, melyekben azokat az eljárásokat és INCLUDE group-okat tároljuk melyekre a JOB-okban hivatkozunk Egy JOB-ban csak egy JCLLIB utasítás szerepelhet Szintakszis: //név JCLLIB ORDER=(lib1,lib2,...) A JCLLIB utasításnak a JOB utasítás után és az első EXEC utasítás előtt kell szerepelnie Az INCLUDE utasítás előtt kell szerepelnie INCLUDE group-on belül nem adható meg Ha a rendszer nem találta az eljárást vagy INCLUDE group-ot a JCLLIB utasítással megadott könyvtárban, akkor a rendszer-eljáráskönyvtárban fog keresni ICSS Kft 2012 21