ILE COBOL 解説書

順次ファイル

ADVANCING 句および END-OF-PAGE 句は、印刷されるページ上の各行の垂直位置決めを制御します。 印刷されるページが中間装置 (たとえばディスク) 上で保持されると、それが編集またはブラウズされたときに、形式が予期した出力と異なることがあります。

注:
1 つの WRITE ステートメントの中に ADVANCING PAGE 句と END-OF-PAGE 句の両方を指定してはなりません。

外部で定義されたファイルの境界を超えて書き込みを試みると、WRITE ステートメントの処理が正常に完了せず、EXCEPTION/ERROR 条件が起こります。 レコード名の内容は影響を受けません。 その後 USE ステートメントのプログラミング上の注意事項で説明されているエラー処理の規則に従って、処理が行われます。

装置タイプ TAPEFILE または DISKETTE 上の順次ファイルの場合、 マルチボリューム OUTPUT ファイルのボリュームの終わりが検出されると、WRITE ステートメントによって以下の操作が行われます。

  1. 標準の終了ボリューム・ラベル・プロシージャーが実行されます。
  2. ボリュームの切り替えが行われます。
  3. 標準の開始ボリューム・ラベル・プロシージャーが実行されます。

ボリュームの終わりに達したという標識はプログラムに返されません。

WRITE ステートメント - 形式 - 順次ファイル
 
>>-WRITE--レコード名-1--+------------+-------------------------->
                        '-FROM--ID-1-'
 
>--+------------------------------------------------------+----->
   '-+-BEFORE-+--+-----------+--+-+-ID-2---+--+-------+-+-'
     '-AFTER--'  '-ADVANCING-'  | '-整数-1-'  +-LINE--+ |
                                |             '-LINES-' |
                                +-簡略名-1--------------+
                                '-PAGE------------------'
 
>--+-----------------------------+------------------------------>
   |          (1)                |
   '-NULL-MAP-------+----+--ID-9-'
                    '-IS-'
 
>--+---------------------------------------------+-------------->
   '-+----+-+-END-OF-PAGE-+-命令ステートメント-1-'
     '-AT-' '-EOP---------'
 
>--+----------------------------------------------------+------->
   '-NOT--+----+--+-END-OF-PAGE-+--命令ステートメント-2-'
          '-AT-'  '-EOP---------'
 
>--+-----------+-----------------------------------------------><
   '-END-WRITE-'
 
 

注:

  1. IBM 拡張

レコード名-1
データ部の FD 記入項目で定義されていなければなりません。 レコード名-1 は修飾できます。 レコード名-1 をソート・ファイルまたはマージ・ファイルと関連付けてはなりません。

+----------------------------------IBM 拡張----------------------------------+

レコード名-1 は 浮動小数点データ項目にすることができます。

レコード名-1 は DBCS データ項目を定義できます。 レコード名-1 が DBCS データ項目の場合、ID-1 は、DBCS データ項目でなければなりません。

+------------------------------End of IBM 拡張-------------------------------+

FROM
FROM を指定すると、実行結果は次の場合と同じになります。
MOVE identifier-1 TO record-name-1
WRITE record-name-1

移動は、CORRESPONDING 句のない MOVE ステートメントの規則に従って実行されます。

WRITE ステートメントの実行後、情報は ID-1 ではまだ使用可能ですが、レコード名-1 では使用不可になります。 (INTO/FROM ID 句を参照してください。)

ID-1
英数字データ項目または数字編集データ項目でなければなりません。 データはこのフィールドから受け入れフィールドへ転送されます。

ID-1 は、英数字または DBCS 関数 ID の名前にすることができます。

+----------------------------------IBM 拡張----------------------------------+

ID-1 は、浮動小数点にすることも、日時データ項目にすることもできます。

+------------------------------End of IBM 拡張-------------------------------+

ID-2
整数データ項目でなければなりません。

ファイルの最大レコード・サイズはファイルの作成時に設定され、後で変更することはできません。

レコード名-1 と ID-1 で同じ記憶域を参照してはなりません。

WRITE ステートメントの実行後には、次のいずれかの場合を除き、レコードはレコード名-1 で使用可能でなくなります。

これらのいずれかの場合には、レコードはレコード名-1 でまだ使用できます。

ファイル位置標識は、WRITE ステートメントの実行によって影響されません。

ファイルの中にレコードを保管するのに必要な文字桁数は、COBOL プログラムの中でそのレコードの論理記述によって定義された文字桁数と同じであってもなくてもかまいません。 (PICTURE 文節の編集および USAGE 文節を参照してください。)

ファイル制御記入項目で FILE STATUS 文節が指定されている場合には、WRITE ステートメントの実行時に、 実行が成功するかどうかに関係なく、関連する状況キーが更新されます。

I-O モードでオープンされた順次ファイルに対しては、WRITE ステートメントを実行することはできません。

関連情報

ADVANCING 句

ADVANCING 句は、ページ上の出力レコードの位置決めを制御します。 この句は、装置タイプ PRINTER にのみ適用されます。次の規則が適用されます。

  1. BEFORE ADVANCING を指定した場合には、ページ送りの前に行が印刷されます。
  2. AFTER ADVANCING を指定した場合には、ページ送りの後で行が印刷さ れます。
  3. ID-2 を指定した場合には、ID-2 の現行値と等しい行数だけページ送りが行われます。 ID-2 は整数データ項目でなければなりません。
  4. 整数-1 を指定した場合には、整数-1 の値と等しい行数だけページ送りが行われます。
  5. 整数-1、または ID-2 の値はゼロにすることもできます。
  6. 簡略名を指定した場合には、システム特有の処置が取られます。 簡略名は、SPECIAL-NAMES 段落の環境名-1 と等価にする必要があります (有効な環境名は 表 2にリストされています)。 簡略名として使用できる値の詳細は SPECIAL-NAMES 段落を参照してください。
  7. PAGE を指定した場合には、 装置が次の論理ページに位置付けられる前 (BEFORE) または後 (AFTER) (使用されている句による) に、 レコードが論理ページに印刷されます。 使用されている装置にとって PAGE が意味をもたない場合には、BEFORE または AFTER (指定されている句による) ADVANCING 1 LINE が使用されます。

    FD 記入項目に LINAGE 文節が入っている場合には、その文節で指定されているように、 次のページの最初の印刷可能行への位置変更が行われます。 LINAGE 文節が省略されている場合には、次のページの 1 行目への位置変更が行われます。

    LINAGE-COUNTER の規則 このファイルについて LINAGE 文節 が指定されている場合は、WRITE ステートメントの実行時に、関連 する LINAGE-COUNTER 特殊レジスターが次の規則に従って変更されます。

    1. ADVANCING PAGE が指定されている場合には、LINAGE-COUNTER が 1 にリセットされます。
    2. ADVANCING ID-2 または整数-1 が指定されている場合には、LINAGE-COUNTER が ID-2 または整数-1 内の値だけ増やされます。
    3. ADVANCING 句が省略されている場合には、LINAGE-COUNTER が 1 だけ増やされます。
    4. 装置が新しいページの最初の使用可能行に位置変更されると、LINAGE-COUNTER が 1 にリセットされます。

この句が省略される場合には、AFTER ADVANCING 1 LINE が書かれている場合と同様に、自動的な行送りが行われます。

+----------------------------------IBM 拡張----------------------------------+

NULL-MAP IS 句

NULL-MAP IS 句のこの句についての説明を参照してください。

+------------------------------End of IBM 拡張-------------------------------+

END-OF-PAGE 句

この句が指定されている (さらに、このファイルについての FD 記入項目に LINAGE 文節が入っている) 場合、WRITE ステートメントの実行中に、 印刷されるページの論理的な終わりに達すると、命令ステートメントが実行されます。

NOT AT END-OF-PAGE 句が指定されている WRITE ステートメントの処理後に END-OF-PAGE 条件が存在しない場合には、 制御はその句に関連する命令ステートメントに移動されます。

関連情報

プリンター・ファイルに関する特別の考慮事項

キーワード END-OF-PAGE とキーワード EOP は同等です。 END-OF-PAGE 句を指定する場合には、 このファイルの FD 記入項目に LINAGE 文節が入っていなければなりません。 END-OF-PAGE を指定し、WRITE ステートメントの処理後に END-OF-PAGE 条件が存在する場合には、END-OF-PAGE 命令ステートメントが処理されます。 印刷されるページの論理的な終わりは、レコード名に関連する LINAGE 文節の中で指定します。

プリンター・ファイルについての WRITE ステートメントの処理によってページ本体のフッター域での印刷または行送りが行われる場合には、 そのファイルの END-OF-PAGE 条件が起こります。 これは、WRITE ステートメントの実行により、LINAGE-COUNTER 中の値が、LINAGE 文節中の WITH FOOTING 句で指定された値と等しいかまたはそれより大きくなったときに起こります。 WRITE ステートメントが処理されてから、END-OF-PAGE 命令ステートメント (コーディングされている場合) が処理されます。

WRITE ステートメントの処理が現行のページ本体内で完全に実行できないときには、END-OF-PAGE 句が指定されているかどうかに関係なく、 必ず自動ページ・オーバーフロー条件が起こります。 これは、WRITE ステートメントを処理した場合に、LINAGE-COUNTER の値が LINAGE 文節で指定されているページ本体の行数を超えるときに起こります。 このケースでは、装置が LINAGE 文節で指定されているように次の論理ページの最初の印刷可能行に位置変更される前または後 (指定されているオプションによる) に、行が印刷されます。

END-OF-PAGE 句が指定されている場合には、END-OF-PAGE 命令ステートメントが実行されます。 次の場合には、END-OF-PAGE 条件と自動ページ・オーバーフロー条件が同時発生します。

キーワード END-OF-PAGE とキーワード EOP は同等です。

注:
ADVANCING PAGE 句と END-OF-PAGE 句の両方を 1 つの WRITE ステートメント内に指定することはできません。

FORMATFILE に関する特別の考慮事項

キーワード END-OF-PAGE とキーワード EOP は同等です。 END-OF-PAGE 句を指定し、FORMATFILE ファイルについての WRITE ステートメントの処理後に EOP 条件が存在する場合には、END-OF-PAGE 命令ステートメントが実行されます。 FORMATFILE ファイルの EOP 条件が起こるのは、 そのファイルについての WRITE ステートメントの処理時にページの論理的な終わりに到達したときです。 印刷されるページの論理的な終わりは、CRTPRTF コマンドまたは OVRPRTF コマンドのオーバーフロー行番号パラメーターで指定します。

END-WRITE 句

この明示範囲終了符号は、WRITE ステートメントの有効範囲を区切る働きをします。 END-WRITE 句を使用することによって、WRITE 条件ステートメントを別の条件ステートメントにネストすることができます。 また、END-WRITE 句は、WRITE 命令ステートメントで使用することもできます。

詳細は 範囲区切りステートメントを参照してください。

マルチボリューム・ファイル

マルチボリューム OUTPUT ファイル (テープまたは順次直接アクセス・ファイル) のボリュームの終わりが検出されると、WRITE ステートメントは次の操作を実行します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]