Index
READ

【用途】
ファイルの読み込み(順読みの場合)

【使用例】
・単純な読み込み

  READ  IN-FILE

・ファイル終了時の条件つき(HIGH-VALUEを入力レコードに転送する)

  READ  IN-FILE
    AT END
       MOVE  HIGH-VALUE  TO  IN-REC
  END-READ


READ文


機能

READ(読込み)文は,ファイルの次のレコードを使用可能にする.


一般形式

【書き方】
Image


構文規則

(1)

一意名-1の記憶領域とファイル名-1のレコード領域とは,同じであってはならない.

(2)

ファイル名-1に関連するUSE AFTER STANDARD EXCEPTION手続きがないときには,AT END(ファイル終了)指定を書かなければならない.
このコンパイラでは,ファイル名に関連するUSE手続きがなくてもAT END指定を省略できる.


一般規則

(1)

ファイル名-1のファイルは,READ文を実行する前に入力モード又は入出力両用モードで開いておかなければならない.

(2)

NEXT指定は書いても書かなくてもよく,READ文の実行には何ら影響を与えない.

(3)

READ文の実行により,ファイル名-1に関連する入出力状態の値が更新される.

(4)

READ文の実行が開始されるときのファイル位置指示子の設定値は,次の規則に従って使用可能なレコードを定めるために使用される.順ファイルでのレコードの比較は,レコード番号による.
(a)

ファイル位置指示子が有効な次のレコードがないことを示しているとき,READ文の実行は不成功となる.

(b)

先に実行されたOPEN文によりファイル位置指示子が設定されたとき,そのファイル位置指示子より大きいか又は等しいレコード番号を持つファイル中の最初のレコードが選択される.

(c)

先に実行されたREAD文によりファイル位置指示子が設定されたとき,そのファイルのファイル位置指示子より大きいレコード番号を持つファイル中の最初のレコードが選択される.
上記の(b)又は(c)の規則を満たすレコードが見つかると,そのレコードがファイル名-1に関連するレコード領域で使用可能となる.
上記の(b)又は(c)の規則を満たすレコードが見つからないとき,ファイル位置指示子は次のレコードが存在しないことを示すように設定され,一般規則(10)に従って実行が続けられる.
レコードが使用可能になると,ファイル位置指示子は使用可能となったレコードのレコード番号に設定される.

(5)

レコードは,無条件文-2を指定するとその実行前に,無条件文-2を指定しないとREAD文に続く文の実行前に使用可能になる.

(6)

このファイルにレコード記述が二つ以上あるときには,それらのレコードは再定義の規則に従って記憶領域中の同じレコード領域を共用する.READ文の実行が完了したときの,現在のレコードの範囲を超えた位置にあるデータ項目の内容は規定しない.

(7)

INTO指定は,次の場合にREAD文に書くことができる.
(a)

そのファイル記述項に従属するレコード記述がただ一つの場合.

(b)

ファイル名-1に関連するすべてのレコード名及び一意名-1のデータ項目が集団項目又は英数字基本項目の場合.

(8)

INTO指定のあるREAD文の実行結果は,以下の規則をこの順に適用したものと等しい.
(a)

INTO指定のない同じREAD文の実行.

(b)

現在レコードがCORRESPONDING(対応)指定のないMOVE(転記)文の規則に従って,レコード領域から一意名-1の領域へ転記される.現在レコードの大きさは,RECORD(レコードの大きさ)句の規則で定める.ファイル記述項にRECORD VARYING句を書いたとき,暗黙の転記は集団項目転記とする.READ文の実行が不成功になったときには,この転記は行われない.一意名-1に付けた添字は,レコードを読んだ後で,転記する前に評価される.このレコードは,入力レコード領域と一意名-1のデータ項目の両方で使用可能になる.
ただし,このコンパイラでは,書き方3以外のRECORD句の指定がある場合は,集団項目転記とする.

(9)

物理順ファイルに対するREAD文の実行中に,リール/ユニットの終わりが検出されるか又はリール/ユニットにレコードがないとき,ファイルの論理的な終わりに到着していないと,次の処理を行う.
(a)

標準の終わりリール/ユニットラベル手続き.

(b)

リール/ユニットの交換.ボリューム指示子がそのファイルの次のリール/ユニットを指すように更新される.

(c)

標準の始めリール/ユニットラベル手続き.

(10)

ファイル位置指示子が,次のレコードがないことを示しているとき,次の動作がこの順に行われる.
(a)

ファイル位置指示子の設定に伴って,ファイル終了条件を示す値が,ファイル名-1に関連する入出力状態に設定される.

(b)

このREAD文にAT END指定を書くと,AT END指定の無条件文-1が実行される.ファイル名-1に関連するUSE AFTER STANDARD EXCEPTION手続きは実行されない.

(c)

このREAD文にAT END指定を書かないと,ファイル名-1に関連するUSE AFTER STANDARD EXCEPTION手続きを書かなければならず,その手続きが実行される.その手続きからは,このREAD文の終わりに続く次の実行文に復帰する.
ファイル終了条件になると,その条件を起こしたREAD文の実行が不成功になる.
このコンパイラでは,READ文のAT END指定と関連するUSE手続きの両方を省略できる.その場合の実行結果は規定しない.

(11)

READ文の実行中にファイル終了条件が起こらないとき,AT END指定は指定されていても無視され,次の動作が起こる.
(a)

ファイル位置指示子が設定され,ファイル名-1に関連する入出力状態が更新される.

(b)

ファイル終了条件ではない例外条件が生じたならば,ファイル名-1に適用されるUSE AFTER EXCEPTION手続きの実行後,USE文の規則に従って制御が渡される.

(c)

例外条件が生じなければ,レコードはレコード領域で使用可能になり,INTO指定があれば暗黙の転記が実行される.制御は,READ文の終わりに渡されるか,又は無条件文-2の指定があればそれに渡される.後者の場合,実行は,無条件文-2で指定された各文に対する規則に従って続けられる.制御の明示移行を起こす手続き分岐又は条件文が実行された場合,制御はその文に対する規則に従って渡され,そうでない場合,無条件文-2の実行の完了時,制御はREAD文の終わりに渡される.

(12)

READ文の実行が不成功になった後の,関連するレコード領域の内容は規定されず,ファイル位置指示子には,次の有効なレコードが確立しなかったことが設定される.

(13)

読み込んだレコードの文字位置の個数がファイル名-1のレコード記述項で指定された最小の大きさより小さいとき,読み込まれた最後の有効な文字の右にあるレコード領域の部分の内容は規定しない.
この場合,READ文は成功する.

(14)

END-READ(READ文の終わり)指定は,READ文の範囲を区切る.


Index