制約事項: 本トピックは Windows 環境にのみ該当します。
[label] READ decb
,SF|SB
,dcb-address
,area-address
[,length|'S']
パラメーター
- decb
- 生成されるデータ イベント制御ブロックに使用するラベル
- dcb-address
- 読み取るファイルの DCB のアドレス
- area-address
- データを受け取るバッファーのアドレス
- length|'S'
- 転送するバイト数、またはブロック全体を読み取ることを示す 'S' (デフォルト)。S は一重引用符で囲む必要があります。
データ イベント制御ブロックの形式は次のとおりです。
バイト |
内容 |
0 から 3 |
ゼロの全語 |
4 |
タイプ フラグ:パラメーター 'S' がマクロで使用される場合は x'80'、それ以外は x'00' |
5 |
サブタイプ フラグ:常に x'20' |
6 から 7 |
'S' を指定する場合や、フィールドを 0 に設定する際にレジスタ表記を使用する場合を除き、2 バイト バイナリ フィールドは長さパラメーターの値に設定されます。 |
8 から 11 |
DCB のアドレス |
12 から 15 |
データを受け取る領域のアドレス |
説明
BSAM ファイルの 1 つのブロックがファイルからメモリのバッファーに転送されます。ユーザー プログラムでは、ブロックに複数の論理レコードが含まれる場合に必要なブロック化解除などの処理を行います。
マクロで生成されるデータ イベント制御ブロック (DECB) はメインフレームと互換性がありますが、各 READ 操作は同期しています。つまり、操作が完了するまで制御は呼び出し元のプログラムに戻りません。
入力/出力パラメーター ブロックは生成されないか使用されません。
例
例 1:
QREAD READ INDECB,SF,INFILE,INBUF,'S'
この例では、INFILE の開いている DCB で識別されたファイルから、INBUF で識別されたバッファーに 1 つのブロック全体を読み取ります。
例 2:
READ RDECB5,SF,(*,FILEADDR),(3)
この例では、間接的な S タイプ アドレス定数 (*,FILEADDR) で識別された DCB から、アドレスがレジスタ 3 で保持されるバッファーへ 1 つのブロックを読み取ります。