IEBPTPCHユーティリティー
順次データセットあるいは区分データセットのメンバーは、IEBPTPCHユーティリティで印刷することができます。レコードの内容を、べたで出力すればいいのならIEBGENERでSYSOUTにコピーする方法がお手軽ですが、PTPCHを使えば、タイトル行を付けたり、データ中のバイナリー部分を16進文字でダンプする、パック10進数をゾーン10進文字に変換したりの簡易編集ができます。
区分データセットのメンバー内容を印刷する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// JOB Statement //********************************************************************* //* Sample JCL - IEBPTPCH //* ===================== //********************************************************************* //IEBPTPCH EXEC PGM=IEBPTPCH //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=MY.JCL //SYSUT2 DD SYSOUT=* //SYSIN DD * PRINT TYPORG=PO,MAXNAME=10,MAXFLDS=10 TITLE ITEM=('----+----1----+----2----+----3----+----4',1), ITEM=('----+----5----+----6----+----7----+----8',41) MEMBER NAME=DATA1 RECORD FIELD=(80) MEMBER NAME=IEBGENER RECORD FIELD=(80) // // |
指定したメンバーの内容を、そのまま出力します(改ページ毎のメンバー名やページ番号、TITLEステートメントで指定した桁位置を示すスケール行は追加で出力されます)。MEMBERパラメーターで出力するメンバーを、RECORDパラメーターでレコード長を指定します。複数のメンバーを印刷する場合、MEMBERとRECORDパラメーターの対を印刷するメンバー数分定義します。
順次データセットの内容を編集して印刷する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// JOB Statement //********************************************************************* //* Sample JCL - IEBPTPCH //* ===================== //********************************************************************* //IEBPTPCH EXEC PGM=IEBPTPCH //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=MY.DATA //SYSUT2 DD SYSOUT=* //SYSIN DD * PRINT TYPORG=PS,MAXFLDS=10 TITLE ITEM=('PRINT OUR APPLICATION PROGRAM DATA') TITLE ITEM=('NAME AMOUNT(PACK) ADDRESS'), ITEM=('DATA/HEX',46) RECORD FIELD=(10,1,,1),FIELD=(6,15,PZ,12), FIELD=(20,30,,25),FIELD=(20,60,XE,46) // // |
指定した順次データセットの内容を、フィールドの内容によって編集して印刷します。RECORDパラメーターで、編集するフィールドを4つ指定します。最初のFIELDパラメーターは、レコードの先頭から10バイトをリストの1桁目から、2番目のFIELDパラメーターは、レコードの15文字目から6バイトのパック10進数を編集してリストの12桁目から、3番目のFIELDパラメーターは、レコードの30文字目から20バイトをリストの25桁目から、4番目のFIELDパラメーターは、レコードの60文字目から20バイトを16進文字に編集してリストの46桁目から印刷します。
z/OSで実行した印刷例を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
1 PAGE 0001 PRINT OUR APPLICATION PROGRAM DATA NAME AMOUNT(PACK) ADDRESS DATA/HEX ABCDEFGHIJ 00000000001+ ABCDEFGHIJKLMNOPQRST 00000000000000000000000000000000EDC38061 BCDEFGHIJK 00000000002+ BCDEFGHIJKLMNOPQRSTU 00000000000000000000000000000000A8718E6D CDEFGHIJKL 00000000003+ CDEFGHIJKLMNOPQRSTUV 00000000000000000000000000000000C05FD61A DEFGHIJKLM 00000000004+ DEFGHIJKLMNOPQRSTUVW 0000000000000000000000000000000074AF3CB7 EFGHIJKLMN 00000000005+ EFGHIJKLMNOPQRSTUVWX 00000000000000000000000000000000298439F9 FGHIJKLMNO 00000000006+ FGHIJKLMNOPQRSTUVWXY 000000000000000000000000000000009E152D2F GHIJKLMNOP 00000000007+ GHIJKLMNOPQRSTUVWXYZ 0000000000000000000000000000000082F1F0D8 HIJKLMNOPQ 00000000008+ HIJKLMNOPQRSTUVWXYZ0 000000000000000000000000000000001169BE40 IJKLMNOPQR 00000000009+ IJKLMNOPQRSTUVWXYZ01 000000000000000000000000000000004888C3B4 JKLMNOPQRS 00000000010+ JKLMNOPQRSTUVWXYZ012 00000000000000000000000000000000860BDD23 KLMNOPQRST 00000000011+ KLMNOPQRSTUVWXYZ0123 000000000000000000000000000000008B23601D LMNOPQRSTU 00000000012+ LMNOPQRSTUVWXYZ01234 00000000000000000000000000000000BC40EF17 MNOPQRSTUV 00000000013+ MNOPQRSTUVWXYZ012345 00000000000000000000000000000000281CB970 NOPQRSTUVW 00000000014+ NOPQRSTUVWXYZ0123456 0000000000000000000000000000000092CFAA7B OPQRSTUVWX 00000000015+ OPQRSTUVWXYZ01234567 0000000000000000000000000000000035566343 PQRSTUVWXY 00000000016+ PQRSTUVWXYZ012345678 00000000000000000000000000000000231FFBEA QRSTUVWXYZ 00000000017+ QRSTUVWXYZ0123456789 000000000000000000000000000000008DD7F7F1 RSTUVWXYZA 00000000018+ RSTUVWXYZ0123456789A 000000000000000000000000000000008057E1F5 STUVWXYZAB 00000000019+ STUVWXYZ0123456789AB 000000000000000000000000000000008D5F7357 TUVWXYZABC 00000000020+ TUVWXYZ0123456789ABC 00000000000000000000000000000000612D4FD4 UVWXYZABCD 00000000021+ UVWXYZ0123456789ABCD 00000000000000000000000000000000617A9921 VWXYZABCDE 00000000022+ VWXYZ0123456789ABCDE 00000000000000000000000000000000B5650DF6 WXYZABCDEF 00000000023+ WXYZ0123456789ABCDEF 00000000000000000000000000000000F5014EBB :(以下省略) |
ISPFバッチによるLIBRARYユーティリティー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//******************************************************************** //* TSO BACTH SESSION --- ISPF SERVICE--- //******************************************************************** //GENCLIST EXEC PGM=IEBGENER --- GENERATE CLIST MEMBER --- //SYSPRINT DD DUMMY //SYSIN DD DUMMY //SYSUT2 DD DISP=(,PASS),DSN=&&CLIST(ISPCMDS),UNIT=SYSDA, // SPACE=(TRK,(1,,1)),DCB=(RECFM=FB,LRECL=80) //SYSUT1 DD *,DLM='++' /* CLIST FOR ISPF SERVICE CALL */ /* PRINT PDS/PDSE MEMBER */ ISPEXEC LMINIT DATAID(DDVAR) DATASET('MY.JCL') ENQ(SHR) ISPEXEC LMPRINT DATAID(&DDVAR) MEMBER(????????) <== メンバー名を指定 END //* //ISPBATCH EXEC PGM=IKJEFT01,DYNAMNBR=256 //ISPLOG DD SYSOUT=*,DCB=(RECFM=VBA,LRECL=125,BLKSIZE=0) //ISPLIST DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0) //SYSPROC DD DISP=(OLD,DELETE),DSN=&&CLIST (CLIST LIBRARY FROM STEP1) //ISPPROF DD DISP=(,PASS),UNIT=SYSDA, // SPACE=(CYL,(1,1,10)),DCB=(RECFM=FB,LRECL=80) //ISPLLIB DD DISP=SHR,DSN=ISP.SISPLOAD //ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU //ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU //ISPTLIB DD DISP=SHR,DSN=ISP.SISPTENU //ISPSLIB DD DISP=SHR,DSN=ISP.SISPSLIB // DD DISP=SHR,DSN=ISP.SISPSENU //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * ISPSTART CMD(%ISPCMDS) /* EXECUTE CLIST MEMBER */ // // |
z/OS専用です。普段の作業で使用するISPFのLIBRARYユーティリティーのPRINT機能をバッチで実行する例です。DSLISTユーティリティーから区分データセットのメンバー一覧を表示して、プリントしたいメンバーに対して「P」コマンドを入力した時と同じ出力をバッチ処理で得ることができます。