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

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

【AS400】CHGPFコマンドにて、フィールドを変更する

前回では、AS400のテーブルに新しいフィールドを追加する方法を紹介しましたが、今度はすでに存在するフィールドを変更してみたいと思います。

再度、従業員マスタ(物理ファイル)の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            EMAIL         20A         COLHDG('EMAIL')  
     A* (KEY)                                                      
     A          K EMP_CD   

変更については、次の項目について適用させてみようと思います。

・社員CD 10A→15A
・苗字    20O→10O
・名前    20O→10O

項目追加手順

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

  • STRSEUコマンド等で、EMAIL項目を追加記述し、上書き保存します。
STRSEU SRCFILE(TIGER/DDSSRC) SRCMBR(EMPLOYEES)  
TIGER/DDSSRC EMPLOYEES
     A                                      UNIQUE                 
     A          R RECEMP                    TEXT(' 従業員マスタ ') 
     A* (FIELDS)                                                   
     A            EMP_CD        15A         COLHDG('社員CD')     
     A            LAST_NAME     10O         COLHDG('苗字')       
     A            FIRST_NAME    10O         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) 
  • 今回は、社員CDの桁変更については、10桁から15桁へ長くなるので、いわば追加のようなものなので問題ありませんが、苗字と名前については、桁数が減少になります。この場合、下記のような確認メッセージが表示されます。「 I 」で応答することで、CHGPFが実施されます。
  • 項目の桁数減少にてデータに影響が無いかどうか、事前にデータを確認する必要があります。
                         プログラム・メッセージの表示                           
                                                                                
 QSYS のサブシステム QINTER のジョブ 100000/USERNAME/JOBNAME が 15/01/05 20:00:   
 (C I) ファイル EMPLOYEES の変更はデータが失われる原因となることがある。        
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
  応答を入力して,実行キーを押してください。                                    
    応答 . . .   I                                                              
                                                                                
                                                                                
 F3= 終了    F12= 取消し                                                        
                                                                                
DSPJOBLOG(実行結果を確認)
> CHGPF FILE(TIGERDB/EMPLOYEES) SRCFILE(TIGER/DDSSRC)                      
   フィールド LAST_NAME を変更するとデータが失われます。                   
   フィールド FIRST_NAME を変更するとデータが失われます。                  
  (C I) ファイル EMPLOYEES の変更はデータが失われる原因となることがある。  
? I                                                                        
   メンバー EMPLOYEES から 2 個のレコードがコピーされた。                  
   ライブラリー TIGERDB のファイル EMPLOYEES が変更された。                

テーブルの中身(CHGPF後)
社員CD          苗字        名前        電話番号         EMAIL 
----------------------------------------------------------------------
A1000           山田        太郎       012-3456-XXXX           
A1001           山田        花子       012-3456-XXXX           

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

  • EMPLOYEESテーブルを参照するすべてのRPGプログラム等をリコンパイルする必要があります。
  • 必要に応じ、参照するプログラムを改変します。