タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】フィールド名のリネーム方法

概要

  • 同一のテーブルをプログラムで使用する場合や、複数のテーブル内に、同一の変数名がある場合などで、ある共通のフィールド名がどのテーブルを参照しているかわからなくなってしまいます。
  • このような場合、片方のフィールド名をプログラム実行時のみ、別の名前に置き換えてやる必要があります。そのためのコーディングテクニックをここで紹介したいと思います。

サンプル

方法1:全フィールドを入力仕様書(I領域)で定義する

  • 2つのテーブル内に、同一の変数名がある場合に、必要に応じて使用します。
  • TABLE2のフィールド「XX0001」が「I@0001」の名称で参照できます。
  • デメリットは、TABLE2のスキーマ情報が変更になった場合、RPGソースも修正しなければならない可能があります。
F** テーブル1 (RECXX00)
FTABLE1    UF   E           K DISK
F** テーブル2 (RECXX01) 
FTABLE2    UF   E           K DISK
F                                     RENAME(RECXX00:RECXX01)
I** TABLE2 RENAME *********************************************
IRECXX01
I              XX0001                      I@0001
I              XX0002                      I@0002
I              XX0003                      I@0003
I              XX0004                      I@0004
I              XX0005                      I@0005

方法2:テーブル定義でPREFIXを使用する

  • すべてのフィールド名が下記のコーディング例では「I@+フィールド名」になります。
  • 例えば、TABLE2のフィールド「XX0001」が「I@XX0001」の名称で参照できます。
  • 上記の方法と違って、キーワードの指定ひとつでフィールド名の一括読み替えが可能になります。
F** テーブル1 (RECXX00)
FTABLE1    UF   E           K DISK 
F** テーブル2 (RECXX01)  
FTABLE2    UF   E           K DISK
F                                     RENAME(RECXX00:RECXX01)
F                                     PREFIX(I@)