WRITE(書き出し)文は、論理レコードを出力ファイルまたは入出力両用ファイルに書き出す。順編成ファイルに関しては、論理ページ内での縦方向の行の位置付けにもWRITE文を使用できる。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、ADVANCING指定中の呼び名は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内では呼び名を使用するべきではない。
この制限は無視してよい。
呼び名の代わりに、それに相当する機能名を使用してもよい。
この規則は強制しない。
MOVE 一意名-1 TO レコード名
暗黙のMOVE文を実行する前のレコード領域の内容は、このWRITE文の実行には影響を及ぼさない。
WRITE文の実行が終了した後で、レコード領域のデータは利用できなくなることがあるが、一意名-1のデータはそのまま残っている。(一般規則13を参照)
WRITE文(END-OF-PAGE指定があってもなくても)の実行結果が現在のページ本体に収まりきらないときは、自動的にページあふれ条件が発生する。
ページあふれ条件とは、WRITE文を実行すると、LINAGE句の整数-2に指定した値またはデータ名-2に指定したデータ項目の値をLINAGE-COUNTERの値が超えることである。ページあふれが発生する場合、レコードの書き出しと改ページのどちらを先にするかは、BEFOREとAFTERのどちらを指定したかによる。改ページされると、装置はLINAGE句の指定に従って、次の論理ページの最初の行に位置付け直される。END-OF-PAGE句中に無条件文を指定してあると、レコードの書き出しと装置の位置付け直しが済んだ後で、その無条件文が実行される。
LINAGE句に整数-2もデータ名-2にも指定していないと、ページあふれ条件とは別にページ終了条件が発生することはない。この場合、ページあふれ条件とページ終了条件は同時に発生する。
LINAGE句に整数-2またはデータ名-2を指定してある場合で、WRITE文を実行したときに、LINAGE句の整数-2に指定した値またはデータ名-2に指定したデータ項目の値、およびLINAGE句の整数-1に指定した値またはデータ名-1に指定したデータ項目の値の両方を、LINAGE-COUNTERの値が同時に超えるときは、整数-2またはデータ名-2は指定されてないように処理は進められる。
ADVANCING指定をしないと、リスト装置(PRINTERまたはPRINTER-1)に向けて出力されたときに、AFTER ADVANCING 1 LINEを指定してあったかのように、自動的に行送りされる。ADVANCING指定をすると、下記のように行送りされる。
SAME RECORD AREA句を指定してある場合、論理レコードは レコード名に対応するファイルのものとしてだけではなく、SAME RECORD AREA句中に指定した他のファイルのレコードとしても使用できる。
一意名-2 |
意味 |
---|---|
(空白) | 1行改行 |
0 | 2行改行 |
- | 3行改行 |
+ | 改行なし |
1-9 | それぞれ、チャネル1-9へ飛ぶ |
A, B, C | それぞれ、チャネル10, 11, 12へ飛ぶ |
V, W | ポケット1または2を選択 |
AFTER POSITIONINGに整数を指定をすると、出力レコードの先頭に転記される文字は下記のようになる。
整数 |
出力文字 |
意味 |
---|---|---|
0 | 1 | チャネル1へ飛ぶ |
1 | (空白) | 1行改行 |
2 | 0 | 2行改行 |
3 | - | 3行改行 |
SAME RECORD AREA句を指定してある場合、論理レコードは、 レコード名に対応するファイルのものとしてだけではなく、SAME RECORD AREA句中に指定した他のファイルのレコードとしても使用できる。