z/os Utility-k Tanfolyami jegyzet ICSS Kft 2012
Bevezetés Adatok kezelésével kapcsolatban sok rutin feladat merül fel a mindennapi munka során Sok feladat megoldására standard IBM-es megoldások készültek Ezeket a programokat nevezzük utility-knek A utility-k általában állományokkal kapcsolatos műveleteket végeznek, de vannak lemezekkel és szalagokkal kapcsolatosak is Automatizált és ismételhető megoldás, ha a utility-ket job-okban hívjuk meg A legtöbb utility program az DFSMSdfp komponenshez tartozik, ezért részletesen a DFSMSdfp Utilities című könyvben lehet olvasni róluk ICSS Kft 2012 2
Főbb utility-k IEFBR14: dummy utility IEBCOPY: másolásra IEBGENER: másolásra és nyomtatásra IEBUPDTE: szekvenciális állományok és partícionált állományok membereinek módosítására IEHINITT: szalagokkal kapcsolatos műveletekre IEHLIST: partícionált állományok directory-jának és lemezek VTOC-jának listázására IEBDG: tesztadatok generálására IDCAMS: állományok és katalógusok kezelésére ADRDSSU: állományok mentése és visszatöltése, lemezek mentése és visszatöltése ICSS Kft 2012 3
Leírások Az IEB és IEH-val kezdődő nevű utility-k leírását a DFSMSdfp Utilities című könyvben találhatjuk IDCAMS: DFSMS AMS for Catalogs című könyvben ADRDSSU: DFSMSdss Storage Administration című könyvben ICSS Kft 2012 4
Utility vezérlőutasítások Az IE* utility programok vezérlésére utility vezérlő utasításokat használunk. Formájuk: Az első két oszlopba NEM kell // Négy részből állhatnak: címke (opcionális), operációs mező, operandusok, megjegyzés (opcionális) 1-71. oszlopokba írhatjuk az utasításokat A folytatáshoz a sort a 71. oszlopban kell elvágni vagy vessző után, a 72. oszlopba nem-szóköz karaktert kell írni és a folytatást pedig a 16. oszlopon kell kezdeni ICSS Kft 2012 5
Utility által használt DD-k Az alábbi DD definíciók általában érvényesek az egyes utility-k esetén, de vannak kivételek: SYSIN utility kontrol utasítások SYSPRINT utility output-ja SYSUT1 input állomány SYSUT2 output állomány SYSUT3, SYSUT4 munkaállományok SYSOUT utility üzenetei ICSS Kft 2012 6
IEFBR14 Egy dummy program, ami csak annyit csinál, hogy visszaad egy 0 rc-t. Általában állományok allokálásánál és törlésénél használjuk Példa: //ALLOC JOB 0,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEFBR14 //UJDS DD DSN=UJ.DATASET,UNIT=3390, // DISP=(NEW,CATLG), // VOL=SER=MVSRES,SPACE=(CYL,(1,1,10)) ICSS Kft 2012 7
IEBCOPY Az IEBCOPY utility partícionált állományok membereit másolja egy másik partícionált állományba vagy unload-olja egy szekvenciális állományba A SYSIN DD-n adjuk meg a vezérlőutasításokat, vagyis azt, hogy honnan hová szeretnénk másolni A COPY vezérlőutasítással adjuk meg az input és output DD-k nevét A SELECT utasítással választjuk ki a másolandó membereket Példa: COPY INDD=IN,OUTDD=OUT,LIST=YES (az IN és OUT ugyanebben a lépésben definiált DD-k) SELECT MEMBER=((old1,new1,REPLACE),old2,(old3,,R)) ICSS Kft 2012 8
Példa másolásra Példa az IEBCOPY utility meghívására A példában az IN az INPUT állomány, az OUT az output állomány DD-je, a vezérlőutasításokban erre hivatkozunk Az A.D1 állomány összes memberét átmásolja az A.D2- be //COPY JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=A //IN DD DSN=A.D1,DISP=SHR //OUT DD DSN=A.D2,UNIT=3390,DISP=(NEW,CATLG), // VOL=SER=SYSRS1,SPACE=(TRK,(5,1,2)) COPY INDD=IN,OUTDD=OUT /* ICSS Kft 2012 9
Példa unload-ra A USER2.M.CNTL nevű PDS összes member-ét unloadolja egy USER2.MCNTL.SAVE nevű szekvenciális állományba Az unload állomány tartalmazni fog PDSE directory információkat is //UNLD JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=A //SYSUT1 DD DISP=SHR,DSN=USER2.M.CNTL //SYSUT2 DD DISP=(NEW,CATLG),UNIT=3390, // VOL=SER=SYSRS1,SPACE=(CYL,(5,1)), // DSN=USER2.MCNTL.SAVE //SYSIN DD DUMMY ICSS Kft 2012 10
Példa PDS Compress-re A PDS nem szabadítja fel automatikusan a törölt vagy módosított member-ek által korábban elfoglalt helyet, ezért a PDS-ek egy idő után betelhetnek. Ilyenkor Compress-álni kell a PDS-t. Ha megszakad a compress, a PDS használhatatlan lesz Compress közben más nem használhatja a PDS-t //COMPRESS JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=A //DDA DD DISP=OLD,DSN=USER2.M.CNTL //DDB DD DISP=OLD,DSN=USER2.M.CNTL COPY INDD=DDA,OUTDD=DDB ICSS Kft 2012 11
IEBGENER Sok funkciója van, elsősorban szekvenciális állományok létrehozására, másolására, nyomtatására illetve a rekordok átalakítására használatos SYSIN DD : vezérlőutasítások SYSPRINT DD : a utility üzenetei SYSUT1 DD : az input állomány SYSUT2 DD : az output állomány Az IEBGENER a SYSUT1-ről másol a SYSUT2-re. Mindkettő lehet szekvenciális, PDS(E) member vagy z/os Unix fájl. ICSS Kft 2012 12
Példa másolásra Példa az IEBGENER utility használatára A DATA.SET állomány tartalmát egy spool állományba nyomtatja //PRINT JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSUT1 DD DSN=DATA.SET,DISP=SHR //SYSUT2 DD SYSOUT=A //SYSIN DD DUMMY ICSS Kft 2012 13
Példa másolásra Member-ek összemásolása egy új szekvenciális állományba //COPY JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSUT1 DD DISP=SHR,DSN=USR4.CNTL(M1) // DD DISP=SHR,DSN=USR4.CNTL(M2) //SYSUT2 DD DISP=(NEW,CATLG,DELETE), // UNIT=3390,SPACE=(CYL,5),DSN=USR4.SEQOUT //SYSIN DD DUMMY ICSS Kft 2012 14
Példa rekordok átszervezésére Tíz '*' karakter beszúrása minden rekord elejére //COPY JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSUT1 DD DISP=SHR,DSN=USR4.SEQOUT //SYSUT2 DD DISP=(NEW,CATLG), // UNIT=3390,SPACE=(CYL,5),DSN=USR5.SEQOUT, // RECFM=FB,LRECL=80,BLKSIZE=27920 GENERATE MAXFLDS=2,MAXLITS=1 RECORD FIELD=(10,'**********',,1), FIELD=(70,1,,11) /* //* RECORD FIELD=(length,input,conv,output) ICSS Kft 2012 15
IEHINITT Mágnesszalagok címkézése //INITT JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEHINITT //SYSPRINT DD SYSOUT=X //LABEL DD UNIT=TAPE LABEL INITT SER=TAP001 /* ICSS Kft 2012 16
IEHLIST VTOC vagy PDS(E) directory tartalmának listázása //IEHLIST JOB 1,NOTIFY=&SYSUID //STEP1 EXEC PGM=IEHLIST //SYSPRINT DD SYSOUT=X //PDS DD UNIT=3390,VOL=SER=MVSCAT,DISP=OLD //LEMEZ DD UNIT=SYSDA,VOL=SER=MVSRES,DISP=OLD LISTVTOC FORMAT,VOL=SYSDA=MVSRES LISTPDS DSNAME=USR3.M.CNTL,VOL=3390=MVSCAT,DUMP /* ICSS Kft 2012 17
IDCAMS Access Method Services (AMS) EXEC PGM=IDCAMS Funkciói: VSAM és nem-vsam állományok létrehozása és módosítása Katalógusokkal kapcsolatos műveletek Alias-ok, alternate index-ek és path-ok definiálása Tape Library támogatás ICSS Kft 2012 18
IDCAMS parancsok ALLOCATE: állományok allokálása ALTER: már definiált állomány és katalógus jellemzőinek megváltoztatása DEFINE ALIAS, DEFINE AIX, DEFINE CLUSTER, DEFINE NONVSAM, DEFINE PATH, DEFINE USERCATALOG: különböző objektumok, állományok és katalógus definiálása DELETE: objektum, állomány és katalógus törlése EXPORT és IMPORT: katalógusok szétkapcsolása és összekapcsolása valamint VSAM állományok unload-olása nem-vsam állományba és fordítva LISTCAT: katalógus bejegyzések listázása REPRO: állományok és katalógusok másolása PRINT: állományok és katalógusok nyomtatása ICSS Kft 2012 19
Példa: ALLOCATE Példa egy szekvenciális állomány létrehozására (Vezérlő utasítások folytatása több sorban a - karakterrel) //ALLOC JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A ALLOC - DSNAME(IDCAMS.PELDA) - NEW CATALOG - SPACE(5,2) TRACKS - RECFM(F,B) - LRECL(200) - BLKSIZE(2000) - DSORG(PS) - UNIT(3390) - VOL(MVSRES) /* ICSS Kft 2012 20
Példa: ALLOCATE Példa egy SMS kezelt VSAM állomány létrehozására: //ALLOC JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A ALLOC - DSNAME(IDCAMS.VSAM.PELDA) - NEW CATALOG - SPACE(15,5) - RECORG(ES) - LRECL(80) - AVGBLOCK(80) - AVGREC(K) - STORCLAS(CICS) - MGMTCLAS(VSAM) /* ICSS Kft 2012 21
Példa: ALTER Példa egy VSAM állomány átnevezésére: //ALLOC JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A ALTER - ALTER.KSDS - NEWNAME(ALTERED.KSDS) - BUFFERSPACE(56000) ALTER - ALTER.KSDS.* - NEWNAME(ALTERED.KSDS.*) /* ICSS Kft 2012 22
Példa: DEFINE ALIAS Példa két alias létrehozására: //DEFALI JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A DEFINE ALIAS(NAME(ICROBI) - RELATE(CAT.USER)) - CAT(CAT.MASTER) /* DEFINE ALIAS(NAME(SYS1.PARMLIB) - RELATE(ZOS13.PARMLIB)) - CAT(CAT.MASTER) ICSS Kft 2012 23
Példa: DEFINE CLUSTER Példa egy VSAM KSDS létrehozására: //DEFKSDS JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A DEFINE CLUSTER - (NAME(ICROBI.KSDS) - VOLUMES(MVSRES) - RECORDS(1000 500)) - DATA - (NAME(ICROBI.KSDS.DATA) KEYS(15 0) - RECORDSIZE(250 250) FREESPACE(20 10) - BUFFERSPACE(25000)) - INDEX - (NAME(ICROBI.KSDS.INDEX)) /* ICSS Kft 2012 24
Példa: DEFINE CLUSTER Példa két VSAM ESDS létrehozására: //DEFKSDS JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A DEFINE CLUSTER - (NAME (ICROBI.ESDS1) - VOLUMES(MVSRES) - RECORDS(200 200) - RECORDSIZE(80 80) - NONINDEXED) IF LASTCC=0 THEN - DEFINE CLUSTER - (NAME (ICROBI.ESDS2) - MODEL(ICROBI.ESDS1)) /* ICSS Kft 2012 25
Példa állományok törlésére: Példa: DELETE //DELETE JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //DD1 DD VOL=SER=MVSRES,UNIT=3390,DISP=OLD, // DSN=PELDA.NONVSAM DELETE - PELDA.NONVSAM - FILE(DD1) - PURGE DELETE USR3.MASTER.CNTL(MEM23) DELETE (USR4.*.LOADLIB USR5.KSDS) DELETE ZOS13.USER.CATALOG UCAT FORCE /* ICSS Kft 2012 26
Példa: REPRO Példa állományok másolására: //REPRO JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A //VSAM DD DSN=PELDA.VSAM,DISP=OLD //SEQ DD DSN=PELDA.SEQ,UNIT=SYSDA, // SPACE=(TRK,(10,10)),DISP=(NEW,CATLG), // DCB=(LRECL=104,BLKSIZE=27920,RECFM=VB) REPRO INFILE(VSAM) OUTFILE(SEQ) REPRO INDATASET(PELDA.KSDS1) ODS(PELDA.KSDS2) - REPLACE FROMKEY(0001000) TOKEY(0001999) /* ICSS Kft 2012 27
Példa: LISTCAT Példa katalógusok listázására: //LISCAT JOB //STEP1 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=A LISTCAT NAMES CAT(CAT.MASTER) LISTC ENTRIES(OKT6.ALMA) ALL LISTC LEVEL(USR3) LISTC UCAT ALL LISTC NONVSAM CAT(CAT.USER) /* ICSS Kft 2012 28
ADRDSSU Az ADRDSSU egy lemez és lemezterület kezelő utility Funkciói: Állományok másolása, mozgatása lemezek között Állományok kimentése és visszatöltése Egész lemezek vagy track-ek mentése és visszatöltése Lemezek SMS kezeltté konvertálása Partícionált állományok tömörítése Állományok nem használt területének elengedése Lemez fragmentáció megszüntetése ICSS Kft 2012 29
Kétféle működési mód: ADRDSSU Logikai feldolgozás: a logikai copy, dump és restore műveletek minden állományt egy logikai entitásként kezelnek és az egész állományt feldolgozzák mielőtt a következő állomány kezelését elkezdenék. Logikai feldolgozás történik amennyiben a DATASET kulcsszót megadjuk a COPY és DUMP utasításnál. Fizikai feldolgozás: track szintű, lemezek és adott track-ek mozgatására használható. Állományok kezelésénél a VTOC és VVDS információt veszi figyelembe. Fizikai feldolgozás történik amennyiben a FULL vagy TRACKS kulcsszavakat megadjuk a COPY és DUMP utasításnál. ICSS Kft 2012 30
EXEC PGM=ADRDSSU ADRDSSU JCL SYSIN DD: ADRDSSU vezérlőutasítások SYSPRINT DD: a utility üzenetei A vezérlő utasítások folytatása új sorban a - karakterrel történik Megjegyzés: a /* */ karakterek között ICSS Kft 2012 31
ADRDSSU vezérlőutasítások DUMP: állományok és lemezek mentése RESTORE: állományok és lemezek visszatöltése COPY: állományok és teljes lemeztartalom mozgatása, másolása COMPRESS: PDS tömörítése RELEASE: állományok nem használt leallokált területének felszabadítása DEFRAG: lemezen lévő területek defragmentálása ICSS Kft 2012 32
Példa: DUMP FULL A példában a DUMP FULL parancs egy egész lemez tartalmát kimenti szalagra: //DUMP JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //DASD DD UNIT=3390,VOL=SER=MVSRES,DISP=OLD //TAPE DD UNIT=TAPE,VOL=(PRIVAT,SER=MENTES), // DISP=(NEW,CATLG),DSN=MVSRES.MENTES, // LABEL=(1,SL) DUMP FULL INDDNAME(DASD) OUTDDNAME(TAPE) - ALLEXCP COMPRESS OPTIMIZE(4) /* ICSS Kft 2012 33
Példa: DUMP DATASET A példában a DUMP DATASET parancs logikai mentést készít állományokról szalagra: //DUMP JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //TAPE DD UNIT=TAPE,VOL=SER=MENTES, // DISP=(NEW,CATLG),DSN=DATASET.MENTES, // LABEL=(2,SL) DUMP DATASET(INCL(ITS*.*.CNTL, - ITS01.JOBOUT, - ICROBI.KSDS.DATASET)) - OUTDD(TAPE) - ALLDATA(*) ALLEXCP SHR SPHERE - WAIT(2,30) /* ICSS Kft 2012 34
Példa: RESTORE FULL A példa a DUMP FULL paranccsal kimentett lemez visszatöltése: //RESTORE JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //DASD DD UNIT=3390,VOL=SER=MVSRES,DISP=OLD //TAPE DD UNIT=TAPE,VOL=(PRIVAT,SER=MENTES), // DISP=(OLD,KEEP),DSN=MVSRES.MENTES, // LABEL=(1,SL) RESTORE FULL IDD(TAPE) ODD(DASD) PURGE /* ICSS Kft 2012 35
Példa: RESTORE DS A példában a DUMP DATASET paranccsal kimentett egyik állományt töltjük vissza a RESTORE paranccsal //RESTORE JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //TAPE DD UNIT=TAPE,VOL=SER=MENTES, // DISP=(OLD,KEEP),DSN=DATASET.MENTES, // LABEL=(2,SL) RESTORE DATASET( - INCLUDE(ICROBI.KSDS.DATASET)) - INDDNAME(TAPE) - OUTDYNAM(MVSCAT) - SPHERE - CATALOG - RENAMEU(ICROBI.KSDS.DATASET,ICROBI.KSDS.DS) /* ICSS Kft 2012 36
Példa: COPY A példában állományokat másolunk egy másik lemezre és átnevezzük őket: //ADRDCOP JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* COPY DATASET(INCLUDE(ITS01.**)) - OUTDYNAM(Z13CAT) - ALLDATA(*) ALLEXCP - RENAMEU((ITS01.MASTER.*,ITS01.M.*)) - DELETE - CATALOG - PROCESS(UNDEF) /* ICSS Kft 2012 37
Példa: COPY FULL A példában egy lemez tartalmát másoljuk egy másik lemezre //ADRDCOP JOB //STEP1 EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //DASDIN DD DISP=OLD,VOL=SER=Z19SM1,UNIT=3390 //DASDOUT DD DISP=OLD,VOL=SER=Z19SM2,UNIT=3390 COPY FULL - IDD(DASDIN) ODD(DASDOUT) - ALLD(*) ALLX - COPYVOLID /* ICSS Kft 2012 38