■ DISPLAYサンプル
DISPLAYを使うと、EASY-Plusのようなことができます。DFSORTのOUTRECと違って、パックのフィールドもかってにキャラクターに 変換して表示してくれます。▲その1(もっとも簡単な例)
//STEP01 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN1 DD * 0000010000ABCDEFG 0000010000ABCDEFG 0000021000ZZZZZZZ 0000022000XXXXXXX //OUT1 DD SYSOUT=* //TOOLIN DD * DISPLAY FROM(IN1) LIST(OUT1) - TITLE ('### TEST PRINT ###') DATE TIME PAGE - ON(1,10,ZD) ON(11,7,CH) - ←1~10バイトと11~7バイトをリスティング HEADER('HEAD1') HEADER('HEAD2') - TOTAL ('***TOTAL***')
実行結果
※DATE・TIME・PAGEは、予約済みのキーワードで、それぞれ実行時の値を表示してくれます。
### TEST PRINT ### 11/01/09 11:04:47 - 1 - HEAD1 HEAD2 ----------------- -------------------- +0000000000100000 ABCDEFG +0000000000100000 ABCDEFG +0000000000210000 ABCDEFG +0000000000220000 ZZZZZZZ +0000000000100000 XXXXXXX ***TOTAL*** +000000000063000
※HEADERは指定しなくても構いませんが、指定しないとステップ終了時のリターンコードがRC=12となります。
※TOTALの指定は任意です。指定すると数値のフィールドを自動的に合計してくれます。
▲その2(より業務的な例)
//STEP01 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN1 DD * あ 20090101ABCDEFG00000100000 1234 い 20090102ZZZZZZZ00000200000 3456 う 20090103XXXXXXX00000123456 5678 //OUT1 DD SYSOUT=* //TOOLIN DD * DISPLAY FROM(IN1) LIST(OUT1) - TITLE ('### TEST PRINT ###') DATE TIME PAGE BLANK - HEADER('モジコード') ON(2,2,HEX) - ←16進数表示 HEADER('ヒヅケ') ON(5,8,ZD,E'9999/99/99',NOST) - ←数字のマスキング表示 HEADER('ナマエ') ON(13,7,CH) - HEADER('キンガク') ON(21,10,ZD,A1) - ←カンマ編集。A1はシステムに導入されているマスキング値 HEADER('コード') ON(31,4,ZD,E'99-99',NOST) - ←数字のマスキング表示
実行結果
※BLANKを指定すると、数値フィールドの先行のゼロが空白になります。符合もつきません(マイナスはつく)。
### TEST PRINT ### 11/01/09 11:04:47 - 1 - モジコード ヒヅケ ナマエ キンガク コード ------- ---------- ------- -------------------- ----- 4481 2009/01/01 ABCDEFG 1,000,000 12-34 4482 2009/01/02 ZZZZZZZ 2,000,000 34-56 4483 2009/01/03 XXXXXXX 1,234,567 56-78 ***TOTAL*** 4,234,567
※BLANKの代わりにPLUSを指定すると、数値フィールドに必ず符号がつきます。 →例)+100とか-10000とか
※BLANKとPLUSは同時に指定できません。どちらか1つだけです。
※NOSTを指定しないと、数値フィールドは自動的に合計の対象になります。
※TITLE行にBETWEEN(n)を指定すると、表示する項目と項目の間の桁数(n)を指定することができます。
▲その3(より業務的な例をBREAKさせる例)
//STEP01 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN1 DD * あ 20090101ABCDEFG00000100000 1234 001 い 20090102ZZZZZZZ00000200000 3456 001 う 20090103XXXXXXX00000123456 5678 100 //OUT1 DD SYSOUT=* //TOOLIN DD * DISPLAY FROM(IN1) LIST(OUT1) BREAK (36,3,CH) - ←テンバンでBREAKさせる TITLE ('### TEST PRINT2 ###') DATE TIME PAGE BLANK - HEADER('テンバン') ON(36,3,ZD,E'999',NOST) - HEADER('モジコード') ON(2,2,HEX) - HEADER('ヒヅケ') ON(5,8,ZD,E'9999/99/99',NOST) HEADER('ナマエ') ON(13,7,CH) - HEADER('キンガク') ON(21,10,ZD,A1) - HEADER('コード') ON(31,4,ZD,E'99-99',NOST) -
実行結果
### TEST PRINT2 ### 11/01/09 11:04:47 - 1 - 001 テンバン モジコード ヒヅケ ナマエ キンガク コード ----- ------- ---------- ------- -------------------- ----- 001 4481 2009/01/01 ABCDEFG 1,000,000 12-34 001 4482 2009/01/02 ZZZZZZZ 2,000,000 34-56 ### TEST PRINT2 ### 11/01/09 11:04:47 - 2 - 100 テンバン モジコード ヒヅケ ナマエ キンガク コード ----- ------- ---------- ------- -------------------- ----- 100 4483 2009/01/03 XXXXXXX 1,234,567 56-78 ### TEST PRINT2 ### 11/01/09 11:04:47 - 3 - テンバン モジコード ヒヅケ ナマエ キンガク コード ----- ------- ---------- ------- -------------------- ----- ***TOTAL*** 4,234,567
▲その4(並べ替えて表示する例)
//STEP01 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //IN1 DD * あ 20090101ABCDEFG00000100000 1234 い 20090102ZZZZZZZ00000200000 3456 う 20090103XXXXXXX00000123456 5678 //TMP DD DSN=&&TMP,UNIT=SYSDA,SPACE=(CYL,(10,10)) //SRT1CNTL DD * SORT FIELDS=(31,4,CH,D) //OUT1 DD SYSOUT=* //TOOLIN DD * SORT FROM(IN1) TO(TMP) USING(SRT1) - ←この行を追加 DISPLAY FROM(TMP) LIST(OUT1) - TITLE ('### TEST PRINT ###') DATE TIME PAGE BLANK - HEADER('モジコード') ON(2,2,HEX) - HEADER('ヒヅケ') ON(5,8,ZD,E'9999/99/99',NOST) - HEADER('ナマエ') ON(13,7,CH) - HEADER('キンガク') ON(21,10,ZD,A1) - HEADER('コード') ON(31,4,ZD,E'99-99',NOST) -
実行結果
※SRT1CNTLにソートのコントロールステートメントを記述します。
### TEST PRINT ### 11/01/09 11:04:47 - 1 - モジコード ヒヅケ ナマエ キンガク コード ------- ---------- ------- -------------------- ----- 4483 2009/01/03 XXXXXXX 1,234,567 56-78 4482 2009/01/02 ZZZZZZZ 2,000,000 34-56 4481 2009/01/01 ABCDEFG 1,000,000 12-34 ***TOTAL*** 4,234,567
※ソート結果をTMPに出力し、それを表示しています。
※抽出条件をいれたい場合は、INCLUDE COND/OMIT CONDを入れることができます。
ただし、SORT FIELDSがないと「RETURN CODE 16」でエラーとなります。
SORTの必要がない場合は、「SORT FILEDS=COPY」をいれるといいでしょう。
例)
//SRT1CNTL DD *
SORT FILEDS=COPY
INCLUDE COND=(4,3,CH,NE,C'AAA')