COBOL2002 使用の手引 手引編
固定長形式の順ファイルで,ファイルサイズがレコード長の整数倍でない場合に,最終レコードの長さが定義レコード長より短くても入力できるようにする機能です。
環境変数CBLD_ファイル名にSAMENDIOを指定すると,最終レコードが定義レコード長より短い場合でもエラーにならなくなり,残りのレコードの入出力を行えます。
CBLD_ファイル名=SAMENDIO
環境変数CBLD_ファイル名にSAMENDIOを指定した場合としない場合とで,入出力時の結果が異なります。なお,SAMENDIOを指定しない場合には,NOSAMENDIOが仮定されます。詳細は,「35.3.2 実行時環境変数の一覧」を参照してください。
環境変数CBLD_ファイル名にSAMENDIOを指定した場合としない場合とで,それぞれの入出力文の動作の違いを次に示します。
表6-9 入力するレコードがレコード長より短い場合のREAD文の動作
CBLD_ファイル名の指定 | READ文の動作 |
---|---|
NOSAMENDIO または指定なし |
入力するレコードがレコード長より短い場合,エラーになります。 このとき,入出力状態の値は「30」になります。 |
SAMENDIO | 入力するレコードがレコード長より短い場合,エラーにならないで残りのレコードを読み込みます。レコード長の残りには,半角の空白「X'20'」を埋めます。このとき,入出力状態の値は「00」になり,プログラムの実行は継続します。 |
REWRITE文を実行するには,直前のREAD文が実行済みでなければなりません。
環境変数CBLD_ファイル名にSAMENDIOを指定した場合,直前のREAD文で読み込んだ分のレコードを書き換えます。
表6-10 更新するレコードがレコード長より短い場合のREWRITE文の動作
CBLD_ファイル名の指定 | REWRITE文の動作 |
---|---|
NOSAMENDIO または指定なし |
直前のREAD文が実行時エラーになるので,REWRITE文も実行されません。 |
SAMENDIO | 直前のREAD文で読み込んだレコード長が,定義レコード長よりも短い場合は,READ文で読み込んだ分のレコードを書き換えます。このとき,入出力状態の値は「00」になります。 |
READ文およびREWRITE文以外の入出力文での入出力機能は,ファイルサイズがレコード長の整数倍である固定長ファイルの場合と同じです。
All Rights Reserved. Copyright (C) 2014, 2017, Hitachi, Ltd.