2007/12/10 月曜日

配列とテーブル

Filed under: RPG — takahashi @ 23:46:20

今回は配列とテーブルについてです。
RPG内では、配列とテーブルの2種類が存在します。言葉的には同じ様ですが、明確な違いがあります。

配列とテーブルは以下の点で異なります。

1.テーブル名はTABで始まる
2.コンパイル時及び実行時だけにロードできる。(要は、C仕様書内でテーブル内に値を代入する事はできない)
3.テーブルの内容はLOKUP命令を使用して取得する。

(テーブルの使用例)

RPG:
  1. H            Y/                                    1
  2. E                    TAB01   1   3  5   TAB02  20          配列名はTABで始まる
  3. C*
  4. C           'C0001'   LOKUPTAB01     TAB02          80     TAB01を"C0001"で検索
  5. C           *IN80     IFEQ *ON
  6. C                     MOVELTAB02     W#AAAA                LOKUP命令"C0001"に列に該当する"C-----Z"の内容がTAB02には含まれている
  7. C                     ENDIF                                結果,W#AAAAは"C------Z"が代入される
  8. C*
  9. C                     SETON                     LR
  10. C                     RETRN
  11. **
  12. A0001A-------Z                                             A0001がTAB01 A-------ZがTAB02
  13. B0001B-------Z
  14. C0001C-------Z

こんな事はできません。(指標による処理)

RPG:
  1. C                     MOVELTAB01,X   W#AAAA
  2. C           TAB01,X   IFEQ 'ABC'
  3. C                     MOVEL'ABC'     TAB01,X

上記のテーブルの処理を配列で行うと以下の様になります。

RPG:
  1. H            Y/                                    1
  2. E                    T#A01   1   3  5   T#A02  20
  3. C*
  4. C                     Z-ADD1         X
  5. C           'C0001'   LOKUPT#A01,X                  80
  6. C           *IN80     IFEQ *ON
  7. C                     MOVELT#A02,X   W#AAAA
  8. C                     ENDIF
  9. C*
  10. C                     SETON                     LR
  11. C                     RETRN
  12. **
  13. A0001A-------Z
  14. B0001B-------Z
  15. C0001C-------Z

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.462 sec. Powered by WordPress ME