前回では、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