|
|
|
|
|
CICSアプリケーション・プログラムからリモートのOracle Tuxedoドメインにリクエストを送信するには、EXEC CICS LINKコマンドを使用します。リクエスト・データとレスポンス・データの正確なレイアウトについては、後述する項で説明します。CICSプログラムからリモートのOracle Tuxedoドメインに対してサービス呼出しを実行するには、EXEC CICS LINK呼出しを前処理リクエスタに送信します。アクセス対象にするサービスは、Oracle TMA管理者が構成する必要がありますが、プログラミングに限って言えば、必要な手続きはLINK呼出しのみです。次のCOBOLレコードは、client.cblというCOBOLのコピーブックに収録されています。リスト5-1 COBOLレコードリスト5-2 Cの構造体BEA_REQUEST_NORESPONSE: 値は7です。応答なしのサービス・リクエスト。この場合、サービスを実行するOracle Tuxedoにリクエストが送信されますが、レスポンス・データは返されません。BEA_REQUEST_RESPONSE: 値は5です。リクエストまたはレスポンス・リクエスト。リクエストはOracle Tuxedoに送信され、レスポンスが返されます。
表5-1 リクエストのコード
注意:
表5-2 戻りコード リスト5-3 COBOLのCICSクライアント・プログラムの例リスト5-4 CのCICSクライアント・プログラムの例
注意: Cプログラマは、文字列の中にNULL終了文字を含めないようにしてください。前述の例では、strxxx呼出しではなく、memxxx呼出しを使用しています。この例は、CICS環境でC言語を使用する場合の標準パターンです。詳細は、CICS版C言語のドキュメントを参照してください。ローカル・ゲートウェイまたはリモート・ゲートウェイで発生したエラーは、リモートのOracle Tuxedoノード上のULOGファイルと、CICSリージョンのBEALOGファイル(インストール時に定義されるTDキュー)に記録されます。関連するサービス・リクエストはすべて失敗しますが、TMAゲートウェイ間で相互の通信が可能であれば、エラー・メッセージがTMAゲートウェイ間でやり取りされます。CICSリージョンから送信されるリクエストで発生した問題も、BEALOGファイルに記録されます。これらのリクエストのタイムアウト時間は、TMA TCP for CICSの管理ツールを使用して調節できます。ブロッキング・タイムアウト・パラメータの詳細は、Oracle TMA TCP Gatewayユーザーズ・ガイドを参照してください。リモートのOracle Tuxedoドメインから送信されるリクエストを処理するCICSアプリケーション・プログラムの記述方法は、 CICS LINKコマンドで起動するCICSアプリケーション・プログラムと似ています。Oracle Tuxedoクライアントから呼び出されるCICSサービス・プログラムがEXEC CICS XCTL操作の実行時にその操作を制御しない場合は、注意が必要です。レスポンス・データがクライアントに確実に戻されるように、XCTLの実行中に、データの受け渡しを行うプログラム間で、元のCOMMAREAを渡す必要があり、こうすることで、データ受け渡しの最後のプログラムからTMA TCP for CICSのハンドラにレスポンス・データが戻されるようになります。クライアントにレスポンスを送信するサービス・プログラムは、EXEC CICS LINKコマンドを使用して実行します。COMMAREAオプションにはデータ本体へのポインタが含まれるため、ヘッダーは送信されません。したがって、サービス・プログラムが使用できるデータは、COMMAREA内のリクエスト・データです。リクエスタに応答を返さないサービス・プログラムは、 EXEC CICS STARTコマンドで開始するトランザクションを使用して実行します。このコマンドのFROMオプションにはデータ本体へのポインタが含まれるため、ヘッダーは送信されません。したがって、このようなサービス・プログラムは、データ本体へのポインタを含むSETオプションを指定してEXEC CICS RETRIEVEコマンドを使用する必要があります。
注意: 応答を送信しないサービスごとに一意のトランザクションを定義し、該当するサービスの着信サービス情報画面のトランザクション名フィールドにトランザクションの名前を入力してください。応答を送信しないサービスとしては、たとえば、TPNOREPLYフラグを設定したtpacallを使用して、クライアントからサービスをリクエストする場合があります。システムがゲートウェイを介して送信する返信メッセージの実際のサイズをリクエスト単位で設定できます。これは単に、着信サービス情報画面の最大メッセージ・フィールドを使用して、特定のサービスのメッセージ・サイズを制限することとは違います。リクエスト単位で返信メッセージのサイズを制限するには、サービス・プログラムが、コピーブックまたは"YOURHLQ".BEATCPC.INCLUDEファイルに収録されているインクルード・ファイルを使用して、TWAのアドレス指定を行う必要があります。リクエスト単位で返信メッセージの長さを変更するには、TWAINCLファイルに定義されているTWA_CONNECT構造体のrtnMsgSizeフィールドでメッセージの長さを指定します。リクエスト単位で返信メッセージの長さを変更するには、TWACOPYコピーブックのTWA_CONNECTレコード型のRTN-MSG-SIZEフィールドでメッセージの長さを指定します。