AS400 / IBM i の保守で CPF4101 が出た時は、「ファイルが無い」と決めつける前に、どのジョブが、どのライブラリリストで、どのファイル名を探したのかを確認します。同じ名前のファイルが本番、検証、退避ライブラリにある現場では、単純な存在確認だけでは原因を外すことがあります。
この記事では、受注バッチでCPF4101が出たケースを想定し、現場で見る順番を実例として整理します。
想定する状況
| 項目 | 例 |
|---|---|
| 発生処理 | 夜間の受注更新バッチ |
| 症状 | ジョブが異常終了し、ジョブログにCPF4101が出ている |
| 対象 | RPGプログラムが参照する注文ファイル |
| 最初に疑うこと | ファイル未存在、ライブラリリスト違い、OVRDBF、メンバー違い、前後メッセージに出るCPF9802などの権限関連、またはロック関連の異常 |
最初にジョブログを見る
まず WRKJOB や DSPJOBLOG で対象ジョブのジョブログを開きます。最後の異常終了メッセージだけでなく、CPF4101の前後に出ているプログラム名、ファイル名、ライブラリ名を確認します。
DSPJOBLOG WRKJOB JOB(123456/USER/ORDUPD)
確認する順番
| 順番 | 確認 | 理由 |
|---|---|---|
| 1 | ジョブログのCPF4101行 | 対象ファイル名、ライブラリ名、プログラム名を拾う |
| 2 | DSPLIBL | *LIBLで探している場合、参照順を確認する |
| 3 | WRKOBJ | 同名ファイルがどのライブラリにあるか確認する |
| 4 | DSPFD / DSPFFD | PF/LF、メンバー、フィールド定義を見る |
| 5 | CLのOVRDBF | 参照先を一時変更していないか確認する |
| 6 | RPGのF仕様書 | RPGがどの外部記述ファイル名で開こうとしているか確認する |
よくある原因
- 検証ライブラリでは存在するが、本番ライブラリには存在しない
- ライブラリリストの順序が想定と違う
- CLの
OVRDBFで別ファイルへ向けている - 夜間バッチ用ユーザーだけ権限やライブラリリストが違う
- 物理ファイルではなく論理ファイルを探している
やってはいけない対応
原因が分からないまま、似た名前のファイルを本番ライブラリへコピーしたり、ライブラリリストをその場で変更したりするのは危険です。後続バッチや別プログラムが同じファイル名を参照している場合、別の障害を作ることがあります。
関連して読む記事
ジョブログの基本は AS400のジョブログ確認手順、ライブラリ確認は ライブラリとオブジェクト、PF/LFの確認は 物理ファイルと論理ファイル を参照してください。
まとめ
CPF4101は、ファイルそのものが無い場合だけでなく、ライブラリリスト、OVRDBF、メンバー違い、PF/LFの取り違えでも発生します。権限関連はCPF9802など前後メッセージを分けて確認します。ジョブログから対象を拾い、DSPLIBL、WRKOBJ、DSPFD、CL、RPGの順で確認すると、原因を外しにくくなります。
