WRITE (新しいレコードの作成)
自由形式構文 | WRITE{(E) } 名前 {データ構造 } |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
WRITE (E) | 名前 (ファイルまたはレコード様式) | データ構造 | _ | ER | EOF |
WRITE 命令は新しいレコードをファイルに書き出します。
名前オペランドは、プログラム記述ファイルの名前か、または外部記述ファイルから取得されるレコード様式の名前でなければなりません。
データ構造オペランドが指定されている場合、レコードはデータ構造から直接ファイルに書き出されます。 名前が
プログラム記述ファイルを参照している場合、データ構造は、
宣言されたファイルのレコード長と同じ長さのデータ構造である
必要があります。名前 が外部記述ファイルのレコード様式を参照する場合、データ構造はタイプ EXTNAME(...:*OUTPUT or *ALL) または LIKEREC(...:*OUTPUT or *ALL) で定義されているデータ構造にする必要があります。
DISK ファイルでは、データ構造が LIKEREC で定義され、フィールドのタイプが指定されない場合、出力バッファー・レイアウトが入力バッファー・レイアウトと完全に一致すれば、そのデータ構造を WRITE 命令に使用できます。
例については、図 2を参照してください。
データ構造の定義方法、およびファイルとデータ構造の間でどのようにデータが転送されるかについては、ファイル命令を参照してください。
WRITE 例外 (ファイル状況コードが 1000 より大きい) を 処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 オーバーフローが外部記述印刷ファイルに達して、 ファイル仕様書にオーバーフロー標識が指定されていない場合には、エラーが発生します。 エラー処理の詳細については、ファイル例外/エラーを 参照してください。
75-76 桁目に、WRITE 命令でファイルの終わりになった (サブファイルがいっぱいに なった) かどうかを知らせる標識を指定することができます。 この標識は WRITE 命令 が実行されるたびにオン (EOF 条件) またはオフに設定されます。この情報は %EOF 組み込み関数からも入手することができます。この関数 は、EOF 条件が発生した場合に '1' を戻します。それ以外の場合には '0' を戻します。
- 名前 がレコード様式名の場合、レコード定義の中のすべてのフィールドのプログラムにおける現行値を使用して、レコードが構成されます。
- 相対レコード番号を使用するレコードがファイルに書き出される場合には、 RECNO ファイル仕様書キーワード (相対レコード番号) で指定されたフィールド 名を、書き出されるレコードの相対レコード番号が入るように更新しなければ なりません。
入力可能または更新可能な DISK ファイル (自由形式ファイル定義の USAGE キーワード または固定形式ファイル定義の 17 桁目を参照) にレコードを追加するために WRITE 命令 を使用する場合、そのファイルが出力可能 (自由形式定義の USAGE キーワードに *OUTPUT を指定するか、 または、ファイル記述仕様書の 20 桁目に A を指定します) でもあるように定義する 必要があります。
- 装置従属の機能は制限されます。 例えば、"PRINTER" 装置に "WRITE" が出されると、ファイル仕様書にキーワード PRTCTL が指定されていないと (通常は、行送りやスキップ情報は出力仕様の 41-51 桁目に指定される)、 印刷後スペースは 1 に設定されます。 ファイルが外部記述の場合には、これらの機能は外部記述の一部です。
- 複数装置ファイルの場合には、データはファイル仕様書の DEVID キーワードで 指定されたフィールド名に指定されたプログラム装置 に書き出されます (DEVID(フィールド名)を参照してください。) DEVID キーワードが指定されていない場合には、データは、最後の正常な入力 操作が処理されたプログラム装置に書き出されます。
ヌル値を含むヌル値可能フィールドを持つレコードの追加について は、データベースのヌル値サポートを参照してください。
詳細については、ファイル命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* The WRITE operation writes the fields in the data structure
* DS1 to the file, FILE1.
*
C WRITE FILE1 DS1
![変更の始まり](./delta.gif)
dcl-f FILE1 DISK USAGE(*OUTPUT);
dcl-ds likerec_default LIKEREC(FMT1);
dcl-ds likerec_output LIKEREC(FMT1 : *OUTPUT);
dcl-ds likerec_all LIKEREC(FMT1 : *ALL);
WRITE FMT1 likerec_default;
WRITE FMT1 likerec_output;
WRITE FMT1 likerec_all;
![変更の終わり](./deltaend.gif)