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

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

【AS400】CHGPFコマンドにて、テーブルにフィールドを追加する

AS400のテーブルをDDSで管理している場合において、フィールドを追加する方法をまとめておきたいと思います。

DDSとは、従来の記述方法でデータ属性 (レコードおよびフィールドの名前や長さ) のデータ記述仕様を使用して、物理ファイルや論理ファイルを定義します。
下記では、従業員マスタ(物理ファイル)を定義したDDSになります。

TIGER/DDSSRC EMPLOYEES
     A                                      UNIQUE                 
     A          R RECEMP                    TEXT(' 従業員マスタ ') 
     A* (FIELDS)                                                   
     A            EMP_CD        10A         COLHDG(' 社員 CD')     
     A            LAST_NAME     20O         COLHDG(' 苗字 ')       
     A            FIRST_NAME    20O         COLHDG(' 名前 ')       
     A            PHONE_NUM     15A         COLHDG(' 電話番号 ')   
     A* (KEY)                                                      
     A          K EMP_CD     
テーブルの中身
社員CD       苗字                  名前                  電話番号    
-------------------------------------------------------------------------
A1000        山田                  太郎                 012-3456-XXXX
A1001        山田                  花子                 012-3456-XXXX

今回、この従業員マスタに、メールアドレス項目を追加することにしましょう!

項目追加手順

(1) 既存の物理ファイル用DDSを編集する

  • STRSEUコマンド等で、EMAIL項目を追加記述し、上書き保存します。
STRSEU SRCFILE(TIGER/DDSSRC) SRCMBR(EMPLOYEES)  
TIGER/DDSSRC EMPLOYEES
     A                                      UNIQUE                 
     A          R RECEMP                    TEXT(' 従業員マスタ ') 
     A* (FIELDS)                                                   
     A            EMP_CD        10A         COLHDG('社員CD')     
     A            LAST_NAME     20O         COLHDG('苗字')       
     A            FIRST_NAME    20O         COLHDG('名前')       
     A            PHONE_NUM     15A         COLHDG('電話番号')   
     A            EMAIL         20A         COLHDG('EMAIL')  
     A* (KEY)                                                      
     A          K EMP_CD   

(2) CHGPFコマンド

  • CHGPFコマンドにて、(1)のDDSを新たに適用させます。
  • 今回は、項目の追加のみですので、元のデータが消えてしまうことはありません。
  • 追加される新項目の値は、文字列であればブランクが、数値であればゼロが初期値として格納されます。
CHGPF FILE(TIGERDB/EMPLOYEES) SRCFILE(TIGER/DDSSRC) 
テーブルの中身(CHGPF後)
社員CD       苗字                  名前                  電話番号         EMAIL
-----------------------------------------------------------------------------------
A1000        山田                  太郎                 012-3456-XXXX         
A1001        山田                  花子                 012-3456-XXXX         

(3) 変更した物理ファイルを参照しているプログラムをリコンパイルする

  • EMPLOYEESテーブルを参照するすべてのRPGプログラム等をリコンパイルする必要があります。
  • 必要に応じ、参照するプログラムを改変します。(ex:EMAIL項目に値をセットさせるなど)