V7R4 以上の限定機能となるが、配列/テーブルの定義で DIM(*CTDATA)
オプションの指定が追加されている。
これにより、コンパイル時・配列/テーブルの要素数指定が、リテラル数値を記述するのではなく、コンパイル時に実在する、配列/テーブルより自動的に要素数が定義される、地味に嬉しい機能だ。
今までのパターンだと、MSG テーブルが増えると、毎回 DIM(xx) を修正しないとコンパイルエラーになる。そのため、ある程度固定で余分に要素を取るケースもあったり、なかったり。今必要な要素数は「3」だけど、キリが良い「5や10」にするなど。しかし、これにはもう悩まされない、我々には、いつでも DIM(*CTDATA)
がいてくれるから!もっと早く欲しかった(笑) :-P
Before
従来:QII0080R.RPGLE
H DATEDIT(*YMD)
D*---<< 配列/テーブル --->>*
D MSG S 40A DIM(05) CTDATA PERRCD(1)
D IX S 5I 0
C*
C FOR IX = 1 TO %ELEM(MSG)
C MSG(IX) DSPLY
C ENDFOR
C*
C SETON LR
C RETURN
**CTDATA MSG
○○エラーです1
○○エラーです2
○○エラーです3
○○エラーです4
○○エラーです5
//----------------------------------------------------------------------------
// コンパイルリスト
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+.
フィールド 属性 参照( D= 定義 M= 変更)
MSG(5) A(40) 3D 5 6 7
8 9 13M
After
新:QII0081R.RPGLE
H DATEDIT(*YMD)
D*---<< 配列/テーブル --->>*
D MSG S 40A DIM(*CTDATA)
D IX S 5I 0
C*
C FOR IX = 1 TO %ELEM(MSG)
C MSG(IX) DSPLY
C ENDFOR
C*
C SETON LR
C RETURN
**CTDATA MSG
○○エラーです1
○○エラーです2
○○エラーです3
○○エラーです4
○○エラーです5
○○エラーです6
//----------------------------------------------------------------------------// コンパイルリスト
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+..
フィールド 属性 参照( D= 定義 M= 変更)
IX I(5,0) 4D 6 7
MSG(6) A(40) 3D 6 7 12M