「レコードは追加されなかった」!?IBM i 物理ファイルの初期レコード数の見直し
Question
システム構築を行い、各物理ファイルの設定を行いました。
登録されるレコード数によって各ファイルのサイジングを正しくしないと、各処理を実行した時に、メッセージが出てレコード追加がエラーになり、処理が中断すると聞いています。
現在、どのような設定になっているか初期レコード数を確認する方法はありますでしょうか。
Answer
ご懸念されている通り、物理ファイルへレコードを追加しようとした際に、初期レコード数が満杯になっていると、レコード追加数を追加できず、メッセージID:CPA5305エラーが発生します。
「CPA5305 レコードは追加されなかった。」のメッセージについて
https://www.e-bellnet.com/category/technology/1807/1807-106.html
上記サイトにありますように、物理ファイルの初期レコード数・増分をオーバーした時に発生します。
ライブラリーにある物理ファイルの初期レコード数を確認するには下記SQLを使用する事で可能です。
#SQL例1(ライブラリー BELLDB内を確認)
SELECT SYSTEM_TABLE_NAME,TEXT_DESCRIPTION,INITIAL_RECORDS
FROM QSYS2.SYSFILES
WHERE SYSTEM_TABLE_SCHEMA = 'BELLDB'
AND NATIVE_TYPE = 'PHYSICAL'
AND FILE_TYPE = 'DATA'
ORDER BY 1
初期レコード数の値が*NOMAXの場合には、INITIAL_RECORDSの値は表示されません。
また、物理ファイルには「削除済みレコードの再使用(REUSEDLT」」があります。
頻繁にレコード削除を実行するファイルへは、事前にこのパラメータを*YESへ変更しておく事も有効かと思います。
#SQL例2(ライブラリー BELLDB内を確認)
SELECT SYSTEM_TABLE_NAME,TEXT_DESCRIPTION,INITIAL_RECORDS,REUSE_DELETED_RECORDS
FROM QSYS2.SYSFILES
WHERE SYSTEM_TABLE_SCHEMA = 'BELLDB'
AND NATIVE_TYPE = 'PHYSICAL'
AND FILE_TYPE = 'DATA'
ORDER BY 1
「初期レコード数」と「削除済みレコードの再使用」を確認し、レコード追加や削除が多いと思われるファイルのパラメーターを事前に変更しておく事で、レコード追加時のエラーを減らす事が可能になります。
CHGPF FILE(ライブラリー名/ファイル名) → F4キー →「F10=追加のパラメーター」
初期レコード数を「*NOMAX」にするという手も考えられますが、万が一プログラムの不具合により大量のデータが書かれてしまった場合、それを抑止できなくなるため、制限はある程度あったほうが良いものと思います。
初期レコード数を見直し、必要なものは事前に変更しておくことで、業務が停止してしまうという最悪の状況にならないようにしたいですね。
※ご参照サイト
SYSFILES ビュー
https://www.ibm.com/docs/ja/i/7.5.0?topic=services-sysfiles-view
IBM i 上のファイルの現在のレコード件数と、設定された最大レコード件数を一覧で確認できませんか。
https://www.e-bellnet.com/category/technology/2507/2507-04.html
by . あすと
