Index
WRITE

【用途】
データの書き出し。使用例では順ファイルについてのみ記述している点に注意すること。

【使用例】
・OUT-RECを単純に書き出す。

   WRITE  OUT-REC
 
・IN-RECの内容をOUT-RECに書き出す。

   WRITE  OUT-REC  FROM  IN-REC

  (これは、 MOVE IN-REC TO OUT-REC と WRITE を同時にしているだけです。)

 
・帳票を2行ずつ空けて出力する。

  WRITE  OUT-REC  FROM  MEISAI-REC  AFTER  2

・帳票を改頁する。

  WRITE  OUT-REC  AFTER  PAGE

WRITE文


機能

WRITE(書出し)文は,レコードを出力ファイルに書き出す.また,論理ページの縦方向の行送りも行う.


一般形式

【書き方】
Image


構文規則

(1)

レコード名-1と一意名-1とは,同じ記憶領域を参照してはならない.

(2)

レコード名-1は,データ部のファイル節で指定したレコードの名前とする.ファイル名で修飾してもよい.

(3)

一意名-2は,整数項目でなければならない.

(4)

整数-1は正でも0でもよいが,負であってはならない.

(5)

一つのWRITE文に,ADVANCING PAGE(ページ送り)指定とEND-OF-PAGE(ページ終了)指定の両方を書いてはならない.

(6)

END-OF-PAGE(ページ終了)指定又はNOT END-OF-PAGE指定を書くときには,関連したファイルに対してファイル記述項でLINAGE(行数)句を書いておかなければならない.

(7)

END-OF-PAGEとEOPは同義語であり,どちらを書いてもよい.

(8)

印字用ファイルにのみ,END-OF-PAGE指定,ADVANCING指定が記述できる.

(9)

一意名-1が,明に又は暗にCHARACTER TYPE句を指定した項目を従属する場合,一意名-1は部分参照してはならない.


一般規則

(1)

レコード名-1に関連するファイル名のファイルは,WRITE文を実行する前に出力モード又は拡張モードで開いておかなければならない.

(2)

WRITE文の実行が成功すると,その論理レコードはレコード領域中で使用不能となる.ただし,レコード名-1と関連するファイル名がSAME RECORD AREA(レコード領域の共用)句で指定されている場合には,WRITE文によってレコードが使用不能になることはない.その論理レコードは,レコード名-1に関連するファイルと同様に,同じSAME RECORD AREA句で参照される他のファイル,つまり出力ファイルのレコードとして,そのプログラムで使用可能である.

(3)

FROM(から)指定のあるWRITE文の実行結果は,以下に示す文をこの順で実行したものと等しい.
(a)

MOVE(転記)文の規則に従った以下の文
MOVE 一意名-1  TO レコード名-1

(b)

FROM指定のない同じWRITE文
ただし,一意名-1が明に又は暗にCHARACTER TYPE句の指定された日本語項目又は日本語編集項目を従属する場合は,一意名-1に従属するCHARACTER TYPE句の指定に従い出力される.

(4)

WRITE文の実行を完了した後,SAME RECORD AREA句の指定がある場合を除いてレコード名-1の領域の情報は使用不能になる.ただし,一意名-1の領域の情報は使用可能である.

(5)

ファイル位置指示子は,WRITE文の実行によっては変更されない.

(6)

WRITE文の実行によって,レコード名-1に関連するファイル名の入出力状態の値が更新される.

(7)

WRITE文の実行によってレコードが入出力管理システムに渡される.

(8)

レコード名-1のレコード中の文字位置の個数は,レコード名-1に関連するファイル名に指定したレコード記述項の最大の文字位置の個数より大きくてはならない.この場合には,WRITE文の実行は不成功となり,書出し動作は行なわれず,レコード領域の内容は変わらず,レコード名-1に関連するファイルの入出力状態にこの状態の原因を示す値が設定される.
ただし,このコンパイラでは,WRITE文の実行は成功し,入出力状態は設定されない

(9)

WRITE文の実行中にページ終了条件が起こらないとき,END-OF-PAGE指定が書かれていても無視され,次の動作が起こる.
(a)

レコード名-1に関連するファイル名の入出力状態が更新される.

(b)

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

(c)

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

(10)

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

(11)

順ファイルの直前直後の関係は,ファイルを生成する時にWRITE(書出し)文の順序によって定まり,ファイルの終わりにレコードを追加する場合以外に変わることはない.

(12)

順ファイルが拡張モードで開かれるとき,WRITE文の実行によって,そのファイルが出力モードで開かれているかのように,ファイルの終わりにレコードが追加される.そのファイル中にレコードがあれば,OPEN EXTEND文の実行後最初に書かれるレコードは,そのファイルの最後のレコードの直後に続く.

(13)

外部で定義された区域を超えて書き出そうとした場合,例外(exception)条件になる.このときレコード領域の内容は影響を受けず,以下に示す動作が行われる.
(a)

レコード名-1に関連するファイル名の入出力状態の値が,区域外書出しを示す値に設定される.

(b)

レコード名-1に関連するファイル名に対してUSE AFTER STANDARD EXCEPTION宣言が明に又は暗に指定されていれば,宣言手続きが実行される.

(c)

ファイルに対してUSE AFTER STANDARD EXCEPTION宣言が明に又は暗に指定されていなければ,結果は規定しない.

(14)

物理順ファイルのリール/ユニット終了になり,かつそのファイルの外部で定義された区域を超えていないとき,次の動作がとられる.
(a)

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

(b)

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

(c)

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

(15)

ADVANCING(行送り)指定とEND-OF-PAGE指定は,印字ページの表現の縦方向の行制御を行う.ADVANCING指定を書かないと,AFTER ADVANCING 1 LINEが指定されたものとして自動的な行送りを行う.ADVANCING指定を書くと,行送りは次による.
(a)

整数-1又は一意名-2のデータ項目の値が正のとき,印字ページの表現は,その値に等しい行数だけ行送りされる.

(b)

一意名-2のデータ項目の値が負のとき,結果は規定しない.

(c)

整数-1又は一意名-2のデータ項目の値が0のとき,印字ページの表現の位置付け変更は行われない.

(d)

BEFORE(行送り前)指定を書くと,印字ページの表現を上記の規則(a),(b),(c)に従って行送りする前に,行を書き出す.

(e)

AFTER(行送り後)指定を書くと,印字ページの表現を上記の規則(a),(b),(c)に従って行送りした後で,行を書き出す.

(f)

PAGE(改ページ)を書き,関連するファイル記述項にLINAGE句があると,装置を次の論理ページの本体の最初の行に位置付ける前(BEFORE)又は後(AFTER)に,レコードを論理ページに書き出す.

(g)

PAGE(改ページ)を書き,関連するファイル記述項にLINAGE句がないとき,装置を次の物理ページに位置付ける前(BEFORE)又は後(AFTER)に,レコードを物理ページに書き出す.

(16)

END-OF-PAGE指定のあるWRITE文の実行中に,印字ページの表現が論理的な終わりに達すると,END-OF-PAGE指定の無条件文-1が実行される.論理的な終わりは,レコード名-1に関連したLINAGE句で指定される.

(17)

書き出されるレコードのファイル記述項にLINAGE句があれば,以下に示す場合にページ終了条件又はページあふれ条件になる.
(a)

ページ終了(end-of-page)条件は,END-OF-PAGE指定のあるWRITE文の実行によって,ページ本体の脚書き領域内に印字又は行送りを行うときに起きる.これは,WRITE文の行送りによってLINAGE-COUNTER(行数カウンタ)の値が,LINAGE句の整数-2又はデータ名-2のデータ項目の値と等しいか大きくなったときである.この場合は,WRITE文の実行後,END-OF-PAGE指定の無条件文-1が実行される.

(b)

ページあふれ(page overflow)条件は,(END-OF-PAGE指定のある又はない)WRITE文の行送りが,現在のページ本体中に完全に収まらないときに起きる.これは,WRITE文の行送りによってLINAGE-COUNTERの値が,LINAGE句の整数-1又はデータ名-1のデータ項目の値を超えるときである.この場合は,装置がLINAGE句で指定された次の論理ページの本体の最初の行に位置付けられる前(BEFORE)又は後(AFTER)に,レコードが論理ページに書き出される.END-OF-PAGE指定があれば,その後で無条件文-1が実行される.

(c)

WRITE文の行送りによってLINAGE-COUNTERの値が,LINAGE句の整数-2又はデータ名-2のデータ項目の値と,LINAGE句の整数-1又はデータ名-1のデータ項目の値とを同時に超える場合は,ページあふれ条件が起こる.

(18)

WRITE文による出力先が日本語処理装置の場合,レコード中の各項目は表4.8 の規則に従って表示される.

表4.8 CHARACTER TYPE句の適用規則
FROM     
指定の有無
     
     
下記領域におけるC.T句指定の    
日本語項目又は日本語編集項目の有無
                      
         適用規則         
                      
                      
レコード名
    一意名    
  無  
  有  
     −     
レコード名の中で書かれたC.T句の指定に従う. 
     
     
  有  
     
     
  無  
     有     
           
           
一意名の中で書かれたC.T句の指定に従う.   
                      
                      
  有  
  有  
     無     
C.T句は無視される.             

備考."C.T"は,CHARACTER TYPE句を示す.


Index