■  DISPLAYサンプル


DISPLAYを使うと、EASY-Plusのようなことができます。DFSORTのOUTRECと違って、パックのフィールドもかってにキャラクターに 変換して表示してくれます。
その1(もっとも簡単な例)

//STEP01EXECPGM=ICETOOL
//TOOLMSGDDSYSOUT=*
//DFSMSGDDSYSOUT=*
//IN1DD*
0000010000ABCDEFG
0000010000ABCDEFG
0000021000ZZZZZZZ
0000022000XXXXXXX
//OUT1DDSYSOUT=*
//TOOLINDD*
 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***')

     実行結果

###  TEST PRINT ###          11/01/09       11:04:47    - 1 -

            HEAD1    HEAD2
-----------------    --------------------
+0000000000100000    ABCDEFG
+0000000000100000    ABCDEFG
+0000000000210000    ABCDEFG
+0000000000220000    ZZZZZZZ
+0000000000100000    XXXXXXX

***TOTAL***
+000000000063000

DATETIMEPAGEは、予約済みのキーワードで、それぞれ実行時の値を表示してくれます。
※HEADERは指定しなくても構いませんが、指定しないとステップ終了時のリターンコードがRC=12となります。
※TOTALの指定は任意です。指定すると数値のフィールドを自動的に合計してくれます。



その2(より業務的な例)

//STEP01EXECPGM=ICETOOL
//TOOLMSGDDSYSOUT=*
//DFSMSGDDSYSOUT=*
//IN1DD*
あ 20090101ABCDEFG00000100000 1234
い 20090102ZZZZZZZ00000200000 3456
う 20090103XXXXXXX00000123456 5678
//OUT1DDSYSOUT=*
//TOOLINDD*
 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)  -  ←数字のマスキング表示

     実行結果

###  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を指定すると、数値フィールドの先行のゼロが空白になります。符合もつきません(マイナスはつく)。
BLANKの代わりにPLUSを指定すると、数値フィールドに必ず符号がつきます。 →例)+100とか-10000とか
BLANKPLUSは同時に指定できません。どちらか1つだけです。
NOSTを指定しないと、数値フィールドは自動的に合計の対象になります。
※TITLE行にBETWEEN(n)を指定すると、表示する項目と項目の間の桁数(n)を指定することができます。



その3(より業務的な例をBREAKさせる例)

//STEP01EXECPGM=ICETOOL
//TOOLMSGDDSYSOUT=*
//DFSMSGDDSYSOUT=*
//IN1DD*
あ 20090101ABCDEFG00000100000 1234 001
い 20090102ZZZZZZZ00000200000 3456 001
う 20090103XXXXXXX00000123456 5678 100
//OUT1DDSYSOUT=*
//TOOLINDD*
 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(並べ替えて表示する例)

//STEP01EXECPGM=ICETOOL
//TOOLMSGDDSYSOUT=*
//DFSMSGDDSYSOUT=*
//IN1DD*
あ 20090101ABCDEFG00000100000 1234
い 20090102ZZZZZZZ00000200000 3456
う 20090103XXXXXXX00000123456 5678
//TMPDDDSN=&&TMP,UNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SRT1CNTLDD*
  SORT  FIELDS=(31,4,CH,D)
//OUT1DDSYSOUT=*
//TOOLINDD*
 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)  -  

     実行結果

###  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

SRT1CNTLにソートのコントロールステートメントを記述します。
※ソート結果を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')




BEFORE PAGE

TOP PAGE