GitなどのVersion管理システム(IBMならば、Team Concertでしょうか)で運用していれば、表題のような問題は発生しないかもしれませんが、 個人的にちょくちょくこういうことがありました(本来あってはいけません)。
修正したはずのプログラムが反映されていない!といった場合の確認事項をまとめておこうと思います。
確認1「ソースとオブジェクトのタイムスタンプを確認する」
まずは、最後に修正したソースが、正しくオブジェクト化されているかを確認しておきます。
①ソースの最終変更日の確認
ファイル
WRKMBRPDM TIGER/CLLESRC SAMP08*
- WRKMBRPDMコマンドより 「Opt=8.記述の表示」で確認できます。
PDM を使用したメンバーの処理 ファイル . . . . CLLESRC ライブラリー . TIGER 位置指定 . . . . . . オプションを入力して,実行キーを押してください。 2= 編集 3=コピー 4= 削除 5= 表示 6= 印刷 7= 名前の変更 8= 記述の表示 9= 保管 13=テキスト の変更 14=コンパイル 15=モジュール 作成 ... OPT メンバー タイプ テキスト 8 SAMP08C CLLE OUTQ 存在チェック 終わり パラメーターまたはコマンド ===> F3= 終了 F4= プロンプト F5= 最新表示 F6= 作成 F9= コマンドの複写 F10= コマンド入力 F23=オプション の続き F24=キー の続き
- 変更日+変更時刻がソースの最終更新日時となります。
メンバー記述の表示 メンバー . . . . . . . : SAMP08C ファイル . . . . . . . : CLLESRC ライブラリー . . . . : TIGER メンバーのタイプ . . . : CLLE 作成日 . . . . . . . . : 15/01/16 作成時刻 . . . . . . . : 07:30:00 変更日 . . . . . . . . : 15/01/16 変更時刻 . . . . . . . : 07:40:00 保管日 . . . . . . . . : 保管時刻 . . . . . . . : 復元日 . . . . . . . . : 復元時刻 . . . . . . . : レコード数 . . . . . . : 20 削除済みレコード . . . : 0 テキスト . . . . . . . : OUTQ 存在チェック F3= 終了 F12= 取り消し
ソース行
- CL,RPGともに、行の右端にて最終更新日付を確認できます。(下記のソースでは、すべて同じ日付なのですが・・・)
PGM000: PGM PARM(&P@OUTQ &P@EXIST) 150116 150116 DCL VAR(&P@OUTQ) TYPE(*CHAR) LEN(10) /* OUTQ */ 150116 DCL VAR(&P@EXIST) TYPE(*CHAR) LEN(01) /* EXIST FLG */ 150116 CHGVAR VAR(&P@EXIST) VALUE('1') 150116 150116 CHKOBJ OBJ(&P@OUTQ) OBJTYPE(*OUTQ) 150116 MONMSG MSGID(CPF9800) EXEC(DO) 150116 CHGVAR VAR(&P@EXIST) VALUE('0') 150116 ENDDO 150116 MONMSG MSGID(CPF9999) EXEC(DO) 150116 CHGVAR VAR(&P@EXIST) VALUE('0') 150116 ENDDO 150116 150116 150116 PGM999: ENDPGM
②オブジェクト作成日時の確認
- WRKOBJコマンドより 「Opt=8.記述の表示」で確認できます。
WRKOBJ OBJ(TIGEROBJ/SAMP08C)
オブジェクトの処理 オプションを入力して,実行キーを押してください。 2= 権限の編集 3= コピー 4= 削除 5= 権限の表示 7= 名前の変更 8= 記述の表示 13= 記述の変更 OPT オブジェクト タイプ ライブラリー 属性 テキスト 8 SAMP08C *PGM TIGEROBJ CLLE OUTQ 存在チェック 終わり オプション 5, 7 および 13 のパラメーターまたはコマンド ===> F3= 終了 F4= プロンプト F5= 最新表示 F11= 名前とタイプの表示 F12= 取り消し F16= 位置指定の繰り返し F17= 位置指定 F24= キーの続き
- 作成日/時刻がオブジェクトに変換されてタイムスタンプです。
オブジェクト記述の表示-明細 ライブラリー 1 の 1 オブジェクト . . . . : SAMP08C 属性 . . . . . . . . : CLLE ライブラリー . . . : TIGEROBJ 所有者 . . . . . . . : USERNAME ライブラリー ASP 装置 . : *SYSBAS ライブラリー ASP グループ : *SYSBAS タイプ . . . . . . . : *PGM 1 次グループ . . . . : *NONE ユーザー定義の情報 : 属性 . . . . . . . . . . . . . . . . : テキスト . . . . . . . . . . . . . . : OUTQ 存在チェック 作成情報 : 作成日/時刻 . . . . . . . . . . . . : 15/01/16 07:50:00 作成ユーザー . . . . . . . . . . . . : USERNAME 作成システム . . . . . . . . . . . . : SYSTEMNAME オブジェクト定義域 . . . . . . . . . : *USER
かなりベタですが、日時が ①>②となっていれば、最後に修正したソースがコンパイルされていない可能性があります。
確認2「論理ファイルをリレーションを確認(論理ファイル使用時)」
論理ファイルを使用している場合の話です。
以前、論理ファイルを作成した際、全然別なライブラリーリストの状態でコンパイルしてしまい、データ更新処理をアプリで実行するものの、ターゲットのデータが更新されないという問題を起こしたことがありました。
必要なデータを呼び出せない、または正しく追加・更新されないといった場合には、論理ファイルの関連性を確認してください。
作法としては、論理ファイルを作成したら、DSPDBRコマンドで、どの物理ファイルと関係しているかを、必ず確認しましょう!
確認3「実行時のライブラリーリストを確認」
こちらは基本中の基本ですが、DSPLIBLやEDTLIBLコマンドにて、アプリを実行しているライブラリーリストを確認したほうが良いでしょう。
EDTLIBL or DSPLIBL
ホント、初歩的なログになってしまいましたが、自戒の念をこめて投稿しておきたいと思います。