1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ILERPGAdvent Calendar 2022

Day 8

配列/テーブルのDIM(*CTDATA オプション指定による要素数設定

Last updated at Posted at 2022-12-07

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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?