CLプログラムのソースファイルを消してしまいました・・・魔法の言葉でどうにかなりませんか?
Question
CLプログラムのソースファイルを誤って消してしまいました。
プログラム・オブジェクトからソースファイルを作成するコマンドがあったと思うのですが失念してしまい、ご教示いただけないでしょうか。
また、PFやLF、RPGなどでも同様にソースファイルを作成できるでしょうか。
Answer
CLのプログラム・オブジェクトからソースファイルを作成するのは RTVCLSRC コマンドにて可能です。
先に CRTSRCPF コマンドで仮のソースファイルを作成しておき、RTVCLSRC コマンドにてプログラム・オブジェクトからソースファイルを作成するという手順になります。
- 仮のソースファイルを作成
CRTSRCPF FILE(SRCLIB/SRCFILE) IGCDTA(*YES)
- オブジェクトからソースファイルを作成
RTVCLSRC PGM(PGMLIB/CLPGM) SRCFILE(SRCLIB/SRCFILE)
/ol>
CLプログラムの場合はコンパイル(CRTCLPGM)時にパラメーター「RTVCLSRC 可能(ALWRTVSRC):*YES
」があります。
ヘルプにも記載がありますが、コンパイル時にCLソースが一緒に保存されるので、万が一ソースファイルを削除してしまっても RTVCLSRC コマンドにてソースファイルを作成できます。
注意点としては、元のソースに書かれていたテキスト部分については、当然ですが展開されません。
このパラメーターのデフォルトは *YES ですが、仮に *NO にしてコンパイルした場合には RTVCLSRC コマンドでソースファイルを再作成することはできません。
また、PFやLFやRPGなどにはこの機能はないため、過去に取得したバックアップなどから復元する必要があります。
RSTOBJ コマンドにはパラメーター「ファイル・メンバー(FILEMBR)」があるので、例えば昨日の夜間バックアップから特定のメンバーだけを復元するという事が可能です。
試しに、ソースファイル QRPGSRC の中にあるメンバーを2つほど削除して、バックアップから復元してみます。
今回の例では以下のようなネーミングになります。
装置名 | TAPMLB01 |
ボリューム名 | TESTLIB |
ファイル名 | QRPGSRC |
削除/復元するメンバー名 | RPG003、RPG004 |
◆メンバーの削除前
◆メンバーの削除後 (RPG003とRPG004を削除)
バックアップから RSTOBJ コマンドで削除してしまったメンバー(RPG003とRPG004)だけを復元します。
復元コマンド例:
RSTOBJ OBJ(QRPGSRC) SAVLIB(TESTLIB) DEV(TAPMLB01)
VOL(VOL001)
FILEMBR((*ALL (RPG003 RPG004)))
MBROPT(*NEW)
◆メンバー復元後
削除したメンバー(RPG003 と RPG004)が元通りに復元できていますね。
いかがでしたでしょうか。
必要になる機会は無いほうが良いものですが、もしもの際には本記事をお役に立てて頂ければ幸いです。
by 槻樹