AS/400のデータベースに、新しい項目を追加したい。
それに合わせて、関係するプログラムも直す。ソースを直したら、実行できる形に作り直す「コンパイル」も必要になる。
欲しいのは項目一つ。でも、やることは一つではない。
CHGPFというファイル変更のコマンドを知らなかった頃の話をしていたら、別のめんどくささまで思い出した(笑)。
僕が当時していたのは、項目を追加し、そのファイルを使うプログラムを洗い出し、改修が必要なものを直し、対象をコンパイルし直す、という作業だった。
まず、直す相手を探すところから、ひと仕事だった。
PDMの文字列検索コマンド、FNDSTRPDMは便利だ。ところが、検索範囲に改修前の控えも入っていると、名前の末尾にSV1やBKPを付けて残したソースまで引っかかる。
探したかったのは改修の候補なのに、見つかった候補から控えを見分ける仕事が増える。これは鬱陶しい(笑)。
そこで作ったのが、SRCHWRD。指定した条件でソースメンバーから文字列を探す。さらに、見つかったメンバーからコンパイルされたオブジェクトがあるか、確認するオプションも付けた。検索結果から改修候補を見分ける手掛かりにしたかった。
直す相手が分かったら、次は改修前の控えを取る。ソースメンバーをコピーして、名前の末尾にSnnのような連番を付ける。数個なら、どうということはない。
でも、30年以上動いてきたAS/400のシステムで、前に何番まで使ったかなんて覚えていない。番号を調べて、コピーして、名前を付ける。毎回やるとなると、これもめんどくさい。
なので、控えを作る作業もSAVSRCというコマンドにした。
さて、必要な改修は、もちろんする。問題は、そのあとのコンパイルも、なかなかに大変だったことだ。
なぜなら、僕のRPGには、ファイルの参照先などを切り替える「オーバーライド」を使うものがあったからだ。そういうプログラムは、コンパイルするときにも、そのための設定をしないとエラーになる。
ちょっとマニアックな作りが多かった。
……僕の責任やけど(笑)。
自分で作った仕掛けの準備を、また自分でする。その繰り返しである。
しかも、対象を漏らしたまま、あとで変な不具合が出るのは嫌だ。めんどくさいからと、途中を飛ばすわけにもいかない。
そこで作ったのが、プロジェクト一括コンパイルツールだった。

プロジェクトのメンバごとに、コンパイルに必要な設定を登録しておく。それをコンパイル時に自動で実行させる。
準備を毎回思い出す代わりに、必要な設定を道具の側に持たせたわけだ。
個別にソースを直したいときは、編集に使うSEUを、STRSEUにパラメータを渡して開けるようにした。コンパイルエラーが出たときにも、自動でSEUを開くようにした。
一括で進めたいときもあれば、一つだけ直したいときもある。その両方を扱いたかった。
RPG、RPGLE、CL、CLLE。それに画面定義のDSPFや、コマンド定義のCMDも、同じ道具の中で管理していた。
コンパイルするだけのつもりが、編集の入口や、エラーが出たあとの入口まで付いてきたのである(笑)。
探す、控えを取る、直したらコンパイルする。一つの項目を増やす仕事のまわりに、手間を減らす道具がいくつもできていた。
めんどくさがりなので、道具を作る手間は惜しまない。
我ながら、なかなかややこしい性格である(笑)。
技術補足・参考
今回の技術補足:IBMの資料でも、コンパイル時にオーバーライドを適用して外部データ定義を選べること、STRSEUでソースメンバを編集できることが説明されています。ここは一般機能の確認です。上記の自作ツールの実装や動作を、資料によって独立に検証したという意味ではありません。
- IBM — Application of overrides when compiling a program
- IBM — Start Source Entry Utility (STRSEU)
- IBM — Find String Using PDM (FNDSTRPDM)
2026年11月7日確認。