READ |
[WORK FILE ] work-file-number [ONCE ]
|
||||||||
RECORD operand1 |
|||||||||
[AND ] [SELECT ]
|
OFFSET n |
operand2 | |||||||
FILLER nX |
|||||||||
[GIVING LENGTH operand3]
|
|||||||||
AT [END ] [OF ] [FILE ] |
|||||||||
statement | |||||||||
END-ENDFILE |
|||||||||
statement | |||||||||
END -WORK |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:CLOSE WORK FILE | DEFINE WORK FILE | WRITE WORK FILE
関連機能グループ:「ワークファイル/PC ファイルの制御」
READ WORK FILE
ステートメントは、Adabas 以外の物理順ワークファイルからデータを読み取るために使用します。 データはワークファイルから順次読み取られます。 データがどのように読み取られるかは、そのデータがワークファイルにどのように書き込まれたということとは無関係です。
このステートメントは、Com-plete、CICS、CMS、TSO、TIAM、またはバッチモード環境で実行されるプログラムでのみ使用できます。 適切な JCL またはシステムコマンドを実行してワークファイルを割り当てる必要があります。 詳細については、『オペレーション』ドキュメントを参照してください。 ワークファイル割り当ての詳細については、『パラメータリファレンス』ドキュメントでプロファイルパラメータ WORK
を参照してください。
READ WORK FILE
は、ワークファイルの全レコードを読み取るための処理ループを開始し、実行します。 READ WORK FILE
ループでは自動ブレイク処理を行うことができます。
注意:
READ WORK FILE
ステートメントの実行中にエンドオブファイル条件になると、Natural はワークファイルを自動的にクローズします。
READ WORK FILE
処理ループ内に I/O ステートメントを指定しないでください。
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | G | A | U | N | P | I | F | B | D | T | L | C | G | 可 | 可 | |||
operand2 | S | A | G | A | U | N | P | I | F | B | D | T | L | C | 可 | 可 | ||||
operand3 | S | I | 可 | 可 |
フォーマット C は Natural Connection では無効です。
「フィールド長」も参照してください。
構文要素の説明:
work-file-number |
ワークファイル番号:
(Natural に定義した)読み取るワークファイルの番号。 変数インデックス範囲:
ワークファイルから配列を読み取る場合、配列に変数インデックス範囲を指定できます。 次に例を示します。 READ WORK FILE work-file-number #ARRAY (I:J) |
|
---|---|---|
ONCE |
ONCE オプション:
|
|
RECORDoperand1 FILLER nX |
RECORD オプション:
ストラクチャードモードまたは レコードに含まれているデータが Natural によってチェックおよび変換されることはありません。 数値フィールド内に数値以外のデータが含まれていると、プログラムの異常終了を起こすので、ユーザーは正しくレコードレイアウトを記述する必要があります。 Natural によるチェックは行われないため、このオプションはシーケンシャルファイルのレコードを処理するには最も速い方法です。 レコードが読み取られる前は、operand1 で定義したレコードエリアは空白で埋められます。 したがって、エンドオブファイル条件では空白のエリアが返されます。 短いレコードには空白が付加されます。 次の場合、RECORD オプションは使用できません。
ワークファイルタイプ CSV を使用する場合、RECORD オプションは無視され、処理は SELECT モードに切り替わります。 |
|
SELECT |
SELECT オプション(デフォルト):
|
|
OFFSET n | OFFSET 0 は、レコードの先頭バイトを示します。 TYPE UNFORMATTED で定義されたワークファイルに OFFSET を指定することはできません。
|
|
FILLER nX | 入力レコード内で n バイト分スキップすることを示します。 | |
Natural は、各フィールドに選択された値を割り当て、レコードから選択された数値フィールドに定義どおり正しい数値データが含まれているかをチェックします。 選択されたフィールドのチェックは Natural で行われるため、このオプションを使用すると、シーケンシャルファイルの処理にオーバーヘッドがかかります。 レコードが
ファイルタイプ CSV を読み取る場合、 |
||
GIVING LENGTH operand3 |
operand3 は、フォーマット/長さ I4 で定義する必要があります。 ワークファイルが ワークファイルタイプ CSV で |
|
AT END OF FILE |
|
|
END -WORK | READ WORK FILE ステートメントを終了するには、Natural 予約語 END-WORK を使用する必要があります。
|
オペランド定義テーブル内のフィールド長は次のように決定されます。
フォーマット | 長さ |
---|---|
A、B、I、F | 入力レコード中のバイト数は、内部長さ定義と同じです。 |
N | 入力レコード中のバイト数は、小数点の前後の内部桁数の合計です。 小数点と符号は、入力レコード中のバイト数には入りません。 |
P、D、T | 入力レコード中のバイト数は、小数点の前後の桁数の合計に 1(符号用)を加算し、それを 2 で割って切り上げたものです。 |
L | 1 バイトが使用されます。 C フォーマットのフィールドについては、2 バイトが使用されます。 |
フィールド定義 | 入力レコード |
---|---|
#FIELD1 (A10) | 10 バイト |
#FIELD2 (B15) | 15 バイト |
#FIELD3 (N1.3) | 4 バイト |
#FIELD4 (N0.7) | 7 バイト |
#FIELD5 (P1.2) | 2 バイト |
#FIELD6 (P6.0) | 4 バイト |
『プログラミングガイド』の「ユーザー定義変数のフォーマットおよび長さ」も参照してください。
ワークファイルタイプ | 処理 |
---|---|
UNFORMATTED | UNFORMATTED ワークファイルからダイナミック変数を読み取ると、(現在の位置から)ファイルの残りすべてが変数に挿入されます。 ファイルが 1073741824 バイトを超過した場合、最大の 1073741824 バイトが変数に挿入されます。 |
FORMATTED | FORMATTED ワークファイルからダイナミック変数を読み取ると、変数は現在定義されている長さ(長さ 0 を含む)で埋められます。 ファイルの終わりに到達すると、現在のフィールドの残りは空白で埋められます。 後続のフィールドは変更されません。 |
** Example 'RWFEX1': READ WORK FILE ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME * 1 #RECORD 2 #PERS-ID (A8) 2 #NAME (A20) END-DEFINE * FIND EMPLOY-VIEW WITH CITY = 'STUTTGART' WRITE WORK FILE 1 PERSONNEL-ID NAME END-FIND * * ... * READ WORK FILE 1 RECORD #RECORD DISPLAY NOTITLE #PERS-ID #NAME END-WORK * END
#PERS-ID #NAME -------- -------------------- 11100328 BERGHAUS 11100329 BARTHEL 11300313 AECKERLE 11300316 KANTE 11500304 KLUGE 11500308 DIETRICH 11500318 GASSNER 11500343 ROEHM 11600303 BERGER 11600320 BLAETTEL 11500336 JASPER 11100330 BUSH 11500328 EGGERT