RETRIEVE
タスク用に保管されたデータを検索します。
動的トランザクション・ルーティングに関する注意: RETRIEVE で WAIT を指定すると、 動的トランザクション・ルーティングの使用に悪影響を及ぼす トランザクション間類縁性を生じることがあります。 トランザクションの親和性について詳しくは、 親和性 を参照してください。
説明
RETRIEVE コマンドは、満了した START コマンドによって保管されたデータを 検索します。 これが、このようなデータをアクセスするのに使用できる唯一の方式です。
端末装置に関連していないタスクがアクセスできるのは、 元の START コマンドに関連した単一データ・レコードのみです。RETRIEVE コマンドを出して行います。 タスクに関連したデータが入っているストレージは、通常、RETRIEVE コマンドの実行で解放されるか、 または終了の前に RETRIEVE コマンドを実行しない場合は、タスクの終了により解放されます。
START コマンドで ATTACH を指定した場合は、ストレージは解放されません。 (このようなタスクでの ASSIGN STARTCODE は、'S' や 'SD' ではなく 'U' を返します)。
端末装置に関連しているタスクがアクセスできるすべてのデータ・レコードは、 このタスク (つまり、RETRIEVE コマンドを出しているタスク) と同じトランザクション ID と端末 ID をもつ、満了した START コマンドすべてに関連するものです。これは、RETRIEVE コマンドを連続して出して行います。 満了したデータ・レコードは、要求に応じて、満了時間順序列でタスクに 提供されます。これは、タスクを開始したコマンドによって保管された データで始まり、タスクが開始してから満了したあらゆるコマンドからのデータ を含みます。 各データ・レコードは、元の START コマンドの REQID を一時記憶域のレコードの識別として使用して、 一時記憶域から検索されます。
すべての満了データ・レコードが検索されると、ENDDATA 状態が起こります。 START コマンドに関連付けられた単一データ・レコードによって占有されていたストレージは、RETRIEVE コマンドによってデータが取得された後に解放されます。取得されていないデータによって占有されていたストレージは、 CICS® システムの終了時に解放されます。
検索されたデータに、関連する START コマンドの FMH オプションで指定される FMH (機能管理ヘッダー) が 含まれている場合は、EIB のフィールド EIBFMH は X'FF' に設定されます。 FMH がない場合は、EIBFMH は X'00' に設定されます。
オプション
- INTO (データ域)
- 検索されたデータが書き込まれるユーザー・データ域を指定します。
- LENGTH (データ域)
- 検索されたデータが書き込まれるデータ域の長さを定義するハーフワード・バイナリー値を設定します。
INTO オプションを指定する場合、引数はプログラムが処理できる 最大データ長を指定するデータ域でなければなりません。 指定された値がゼロより小さい場合は、ゼロと見なされます。 データの長さが指定値を超えると、データはその値に切り捨てられて、LENGERR 条件が起こります。 検索操作が完了すると、データ域は元のデータ長に設定されます。
SET オプションを指定する場合は、引数はデータ域でなければなりません。 検索操作が完了すると、データ域はデータ長に設定されます。
安全な上限については、 CICS コマンドの LENGTH オプションを参照してください。
- QUEUE (データ域)
- RETRIEVE コマンドを出すトランザクションでアクセスできる、 一時記憶域キュー名用の 8 文字の区域を指定します。
- RTERMID (データ域)
- 続いて実行される START コマンドの TERMID オプションで使用できる 4 文字の区域を指定します。
- RTRANSID (データ域)
- 続いて実行される START コマンドの TRANSID オプションで使用できる 4 文字の区域を指定します。
- SET (ptr-ref)
- 検索されたデータのアドレスに設定するポインター参照を指定します。
DATALOCATION(ANY) がアプリケーション・プログラムに関連している場合は、 データのアドレスは 16MB 境界より上でも 16MB 境界より下でもかまいません。
DATALOCATION(BELOW) がアプリケーション・プログラムと関連付けられており、デ ータが 16MB 境界より上にある場合には、データは 16MB 境界より下にコピー され、このコピーのアドレスが戻されます。
TASKDATAKEY(USER) が実行中のタスクに指定されており、 ストレージ保護がアクティブの場合は、データはユーザー・キーに戻されます。 TASKDATAKEY (CICS) が指定され、ストレージ保護がアクティブである場合、戻されるデータは CICSキーにあります。
SET を使用する場合は、LENGTH も使用してください。
- WAIT
- すべての満了データ・レコードがすでに検索された場合に、
さらに満了データ・レコードが使用可能になるまで、タスクを待ち状態におくように指定します。 これは、RETRIEVE コマンドの発行時には ENDDATA 条件が発生しないことを意味しますが、 CICS がシャットダウンに入った場合、またはタスクがデッドロック・タイムアウトの影響を受け、デッドロック・タイムアウト間隔よりも長い時間待機する場合には、後で発生します。 :NONE.
シャットダウン中に RETRIEVE WAIT を出そうとしたが、その要求を満たすために 使用できるデータ・レコードがない場合は、AICB 異常終了になります。
WAIT を使用する場合は、少なくとももう 1 つ、他のオプションを指定してください。
条件
- 29 ENDDATA
- 次のいずれかの状態で起こります。
- RETRIEVE コマンドを出すタスク用に、これ以上データが保管されない場合。 データ・レコードを順番に検索している場合は、 通常のファイル終わり応答と見なすことができます。
- RETRIEVE コマンドが、データ・オプション FROM、RTRANSID、 RTERMID、QUEUE のいずれも指定していない START コマンドで開始されるタスクから出される場合。
- RETRIEVE コマンドが、START コマンドの結果作成されなかった非端末タスクから出される場合。
- WAIT が指定され、タスクがデータ・レコードを待っていたものの、デッドロック・タイムアウト間隔 (RDO DEFINE TRANSACTION の DTIMOUT オプションを参照) が満了する前にデータ・レコードが使用可能にならなかった場合。
- WAIT が指定され、 CICS がシャットダウンに入ったときにタスクが待機していました。 シャットダウン中に RETRIEVE WAIT を出そうとしたが、その要求を満たすために 使用できるデータ・レコードがない場合は、AICB 異常終了になります。
- 使用できるデータがないときに、WAIT オプションを指定して RETRIEVE コマンド を出した場合。TERMID オプションに APPC 接続または端末装置を 指定した START コマンドによって、タスクが開始されました。
デフォルト・アクション: タスクが異常終了します。
- 56 ENVDEFERR
- RETRIEVE コマンドが、対応する START コマンドで指定されていないオプションを指定すると起こります。
デフォルト・アクション: タスクが異常終了します。
- 16 INVREQ
- RETRIEVE コマンドが CICSによる処理には無効である場合に発生します。
デフォルト・アクション: タスクが異常終了します。
- 17 IOERR
- RETRIEVE の操作中に、入出力エラーが起きた場合に起こります。 再度 RETRIEVE コマンドを出して、操作を再試行することができます。
デフォルト・アクション: タスクが異常終了します。
- 22 LENGERR
- 指定した長さが、保管されているデータの実際の長さより短い場合に起こります。
デフォルト・アクション: タスクが異常終了します。
例
EXEC CICS RETRIEVE
INTO(DATAFLD)
LENGTH(LENG)
EXEC CICS RETRIEVE
SET(PREF)
LENGTH(LENG)
