初期端末データの変更

ルーティングされたトランザクションが初期端末データを取得できなくなるため、動的ルーティング・プログラムで EXEC CICS RECEIVE および EXEC CICS GDS RECEIVE コマンドを実行してはいけません。

CICS ® 中継プログラム DFHAPRT は、ユーザーの初期端末入力の コピー を個別のバッファーに入れます。 この情報には、APPC のマップ式会話および非マップ式会話の SNA プレゼンテーション・サービス・ヘッダーが含まれています。 このバッファーのポインター (DYRBPNTR) および長さ (DYRBLGTH) は、DFHAPRT から動的ルーティング・プログラムに渡される通信域を介して提供されます。

次の点に注意してください。
  • DYRBPNTR が指すバッファーには、メッセージの最初の要求単位 (RU) で届いたデータが含まれています。 RU サイズがメッセージ全体を収容できる十分な大きさである場合、バッファーには完全なメッセージが含まれています。 一方、RU サイズがメッセージ長より短い場合、(バッファー自体の長さがメッセージ全体を収容できる十分な大きさであっても) バッファーには最初の RU のデータのみが含まれています。
  • DYRBLGTH フィールドが指す長さは、メッセージ の長さであり、バッファーのデータの長さではありません。 メッセージ全体が単一の RU で届いた場合にのみ、DYRBLGTH の長さは、バッファーのデータの長さになります。
  • 次のすべてが真の場合、初期端末入力データはルーティング・プログラムに渡されません。
    1. ルーティング・プログラムが AOR で実行されている。
    2. 元の要求が、TOR からルーティングされたトランザクションである。
    3. 元の機能が APPC 並列セッションである。

この時点ではトランザクション・プロファイルは照会されていないため、入力データの大文字変換は実行されていません。ただし、TYPETERM 定義で UCTRAN(YES) が指定されている場合は別です。

ユーザーによる初期データ入力を変更する必要がある場合があります (例えば、通信域の DYRTRAN フィールドを使用して、リモート・トランザクションの ID を変更する場合などに、変更が必要になることがあります)。 入力データを変更するには、ルート選択で呼び出されたときに、ルーティング・プログラムで以下を実行する必要があります。
  1. DYRBPNTR が指す入力データを、長さが DYRBLGTH の名前付き変数にコピーする
  2. その名前付き変数のデータを変更する
  3. EXEC CICS RETURN コマンドの INPUTMSG オプションを使用して、変更したデータをアプリケーション・プログラムに提供する。

EXEC CICS RETURN コマンドで INPUTMSG を使用する方法については、 INPUTMSGで説明されている他の方法を参照してください。 INPUTMSG オプションに関するプログラミング情報については、 RETURNを参照してください。

注: 入力データを変更した後、選択したトランザクションへのルーティングでエラーが発生したために動的ルーティング・プログラムが再度呼び出された場合は、元のユーザー入力を変更したことを「覚えておく」必要があります。