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 20

RPGにも for each !

Last updated at Posted at 2022-12-19

ついに、「 RPG にも for ~ each が来ましたよ~!」
使用できるのは、V7R5 ,V7R3+PTF 以上 です。その他の言語でもよく見るので、言わずもがなですが、使い方は次の通り。

QII0200R
D*- ---<< 変数定義    >>-----*
D ROW             DS                  QUALIFIED
D  ID                            5S 0
D                                1A
D  NAME                         26A
D*
D ROWS            DS                  LIKEDS(ROW)
D                                     DIM(05)
D*
C*- ***************************************************************
C*- *  メインロジック                                            **
C*- ***************************************************************
C                   Z-ADD     *ZERO         ID                5 0
C*
C*-  for~eachで配列を処理(値セット)
C                   FOR-EACH  ROW IN ROWS
C                   ADD       1             ID
C                   EVAL      ROW.ID      = ID
C                   EVAL      ROW.NAME    = ' 名前 _' + %EDITC(ID :'X')
C     ROW           DSPLY
C                   ENDFOR
C*
C     ROW           DSPLY
C*
C*-  for~eachで配列を処理(値参照)
C                   FOR-EACH  ROW IN ROWS
C     ROW           DSPLY
C                   ENDFOR
C*
C                   SETON                                        LR
C                   RETURN

これの結果は、以下のスクショになります。
注意は、
他の言語とは違い、変数 ROWfor-endfor スコープを外れても、最後の ROW の値を保持している(※DSPLY 00005 の2回目)。
変数 ROW 参照渡しでは無いので、値の保存には向かない点です。
FOR-EACH &ROW ROWS とかもプラスで出来たら素敵なんだけどね。まぁ、そこは贅沢、%ELEM を記述しなくなっただけでも良しとしましょう。

2022-12-02_161146.png

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?