「データセット(メンバー)を編集して印刷する」の続きです。順次データセットには、業務用データが格納されることも多いですが、業務用データの場合は、文字だけのデータで構成されていることは少なく、パック10進数やバイナリー・データが含まれることも多いです。
DFSORTユーティリティーによる順次データセットの編集出力
DFSORTでレコード内容を編集して印刷する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// JOB Statement //********************************************************************* //* Sample JCL - DFSORT //* =================== //********************************************************************* //REPORT1 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=MY.DATA //SORTOUT DD SYSOUT=* //SYSIN DD * OPTION COPY OUTFIL OUTREC=(1,10,X,15,6,PD,X,30,20,X,60,20,HEX), HEADER2=(1:'PRINT OUR APPLICATION PROGRAM DATA', 40:DATE=(4MD-),57:TIME,70:'PAGE',PAGE,2/, 1:'NAME',12:'AMOUNT(PACK)',25:'ADDRESS',46:'DATA/HEX',/, 1:'----------',12:'------------',25:20'-',46:40'-') // // |
SORTIN DDステートメントで指定した順次データセットの内容を、フィールドの内容によって編集して印刷します。OUTFILステートメントのOUTRECパラメーターで、出力側データセットへ移すフィールドを指定しています。入力側から出力側へ移すフィールドは4つです。入力レコードの先頭から10バイト、15文字目から6バイト(パック10進数)、30文字目から20バイト、60文字目から20バイト(バイナリー・データ)の4つです。出力側のフィールドとフィールドの間には空白の区切り文字を挿入しています。文字フィールドの内容はそのまま出力しますが、パック10進数とバイナリー・データのフィールド内容は、人間が目視できる形式に編集して出力します。
DFSORTによる出力例を、以下に示します。
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 |
1PRINT OUR APPLICATION PROGRAM DATA 2019-08-14 14:20:49 PAGE 1 0NAME AMOUNT(PACK) ADDRESS DATA/HEX ---------- ------------ -------------------- ---------------------------------------- ABCDEFGHIJ 1 ABCDEFGHIJKLMNOPQRST 000000000000000000000000000000007D3A194C BCDEFGHIJK 2 BCDEFGHIJKLMNOPQRSTU 00000000000000000000000000000000409A8DCC CDEFGHIJKL 3 CDEFGHIJKLMNOPQRSTUV 00000000000000000000000000000000AF64D0EC DEFGHIJKLM 4 DEFGHIJKLMNOPQRSTUVW 00000000000000000000000000000000EEE01DA0 EFGHIJKLMN 5 EFGHIJKLMNOPQRSTUVWX 0000000000000000000000000000000097F0A092 FGHIJKLMNO 6 FGHIJKLMNOPQRSTUVWXY 00000000000000000000000000000000FF8B3167 GHIJKLMNOP 7 GHIJKLMNOPQRSTUVWXYZ 0000000000000000000000000000000088F80311 HIJKLMNOPQ 8 HIJKLMNOPQRSTUVWXYZ0 00000000000000000000000000000000C9201EF7 IJKLMNOPQR 9 IJKLMNOPQRSTUVWXYZ01 00000000000000000000000000000000DF10A346 JKLMNOPQRS 10 JKLMNOPQRSTUVWXYZ012 00000000000000000000000000000000768B3DFA KLMNOPQRST 11 KLMNOPQRSTUVWXYZ0123 000000000000000000000000000000003CD84051 LMNOPQRSTU 12 LMNOPQRSTUVWXYZ01234 0000000000000000000000000000000030E14C1A MNOPQRSTUV 13 MNOPQRSTUVWXYZ012345 000000000000000000000000000000005BB68D6E NOPQRSTUVW 14 NOPQRSTUVWXYZ0123456 000000000000000000000000000000003328CD13 OPQRSTUVWX 15 OPQRSTUVWXYZ01234567 000000000000000000000000000000006ECC114F PQRSTUVWXY 16 PQRSTUVWXYZ012345678 00000000000000000000000000000000B904659F QRSTUVWXYZ 17 QRSTUVWXYZ0123456789 00000000000000000000000000000000CC4609CB RSTUVWXYZA 18 RSTUVWXYZ0123456789A 000000000000000000000000000000004D563EC9 STUVWXYZAB 19 STUVWXYZ0123456789AB 00000000000000000000000000000000768F4463 TUVWXYZABC 20 TUVWXYZ0123456789ABC 000000000000000000000000000000007834659A UVWXYZABCD 21 UVWXYZ0123456789ABCD 00000000000000000000000000000000821606AD VWXYZABCDE 22 VWXYZ0123456789ABCDE 00000000000000000000000000000000BBC62B13 WXYZABCDEF 23 WXYZ0123456789ABCDEF 00000000000000000000000000000000059EE53E :(以下省略) |
ICETOOLでレコード内容を編集して印刷する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// JOB Statement //********************************************************************* //* SAMPLE JCL - ICETOOL //* ==================== //********************************************************************* //REPORT2 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=MY.DATA //LISTOUT DD SYSOUT=* //TOOLIN DD * DISPLAY FROM(SYSUT1) LIST(LISTOUT) - TITLE('PRINT OUR APPLICATION PROGRAM DATA') - DATE(4MD-) TIME PAGE - HEADER('NAME') HEADER('AMOUNT(PACK)') - HEADER('ADDRESS') HEADER('DATA/HEX') - ON(1,10,CH) ON(15,6,PD) ON(30,20,CH) ON(60,20,HEX) // // |
DFSORTに付属するICETOOLによって、編集して印刷することもできます。ICETOOLは、DFSORTの機能を利用して、分類、集計、報告などの処理を、簡単なコマンド(ステートメント)を記述することで行うことができるツールです。ICETOOLが提供するレポート様式で十分な場合、たいていはDFSORTのステートメントを直接組み合わせるよりも簡単なステートメント記述で、入力データセットの内容を報告書の形にまとめることができます。
上記のJCLは、最初のDFSORTによる編集、印刷処理を、ICETOOLに置き換えたサンプルです。
ICETOOLによる出力例を、以下に示します。
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 |
1PRINT OUR APPLICATION PROGRAM DATA 2019-08-14 15:11:41 - 1 - NAME AMOUNT(PACK) ADDRESS DATA/HEX -------------------- ---------------- -------------------- ---------------------------------------- ABCDEFGHIJ +000000000000001 ABCDEFGHIJKLMNOPQRST 00000000000000000000000000000000C0096342 BCDEFGHIJK +000000000000002 BCDEFGHIJKLMNOPQRSTU 00000000000000000000000000000000DC3EFEE7 CDEFGHIJKL +000000000000003 CDEFGHIJKLMNOPQRSTUV 000000000000000000000000000000003D9302F5 DEFGHIJKLM +000000000000004 DEFGHIJKLMNOPQRSTUVW 00000000000000000000000000000000499F1A62 EFGHIJKLMN +000000000000005 EFGHIJKLMNOPQRSTUVWX 0000000000000000000000000000000040E38E3E FGHIJKLMNO +000000000000006 FGHIJKLMNOPQRSTUVWXY 00000000000000000000000000000000BC61D733 GHIJKLMNOP +000000000000007 GHIJKLMNOPQRSTUVWXYZ 0000000000000000000000000000000069A1413D HIJKLMNOPQ +000000000000008 HIJKLMNOPQRSTUVWXYZ0 000000000000000000000000000000001EC655C3 IJKLMNOPQR +000000000000009 IJKLMNOPQRSTUVWXYZ01 000000000000000000000000000000004707B801 JKLMNOPQRS +000000000000010 JKLMNOPQRSTUVWXYZ012 0000000000000000000000000000000028F6A84B KLMNOPQRST +000000000000011 KLMNOPQRSTUVWXYZ0123 000000000000000000000000000000000DE9553D LMNOPQRSTU +000000000000012 LMNOPQRSTUVWXYZ01234 00000000000000000000000000000000EF0EB660 MNOPQRSTUV +000000000000013 MNOPQRSTUVWXYZ012345 000000000000000000000000000000005ED19C14 NOPQRSTUVW +000000000000014 NOPQRSTUVWXYZ0123456 00000000000000000000000000000000BFC81CCE OPQRSTUVWX +000000000000015 OPQRSTUVWXYZ01234567 000000000000000000000000000000009F60986B PQRSTUVWXY +000000000000016 PQRSTUVWXYZ012345678 00000000000000000000000000000000E3430860 QRSTUVWXYZ +000000000000017 QRSTUVWXYZ0123456789 00000000000000000000000000000000B43736A6 RSTUVWXYZA +000000000000018 RSTUVWXYZ0123456789A 000000000000000000000000000000003CA41F77 STUVWXYZAB +000000000000019 STUVWXYZ0123456789AB 00000000000000000000000000000000290CA8D1 TUVWXYZABC +000000000000020 TUVWXYZ0123456789ABC 00000000000000000000000000000000127F57DB UVWXYZABCD +000000000000021 UVWXYZ0123456789ABCD 000000000000000000000000000000001AC4C388 VWXYZABCDE +000000000000022 VWXYZ0123456789ABCDE 00000000000000000000000000000000A147DD48 WXYZABCDEF +000000000000023 WXYZ0123456789ABCDEF 00000000000000000000000000000000139F60D7 :(以下省略) |
DFSORTとICETOOLの詳細は、マニュアル「z/OS DFSORT:ご使用の手引き」(SD88-6335)、「z/OS DFSORT:アプリケーション・プログラミング・ガイド」(SD88-6331)に解説されています。