ECI のクライアント プログラムは、Enterprise Server と同じマシン上または物理的に異なるハードウェア上で実行できます。要求が、通信レイヤーを通して対象リージョンに送信されます。リモート サーバーにアクセスする場合、プログラムは Web サービスおよび J2EE リスナーを介して接続します。次の図は、TCP/IP 経由のクライアントからリモート サーバーへの要求のパスを示しています。
共有メモリを介してローカル サーバーにアクセスする場合もあります。次の図は、クライアントからローカル サーバーへの要求のパスを示しています。
クライアント プログラムで ECI 呼び出しを使用して、Enterprise Server で実行する CICS アプリケーションと直接通信し、サード パーティ製ソフトウェアを完全に不要にすることができます。
CICSEXTERNALCALL などの ECI エントリ ポイントは、Windows ではダイナミック ロード ライブラリとして、UNIX および Linux プラットフォームでは呼び出し可能共有オブジェクトとして提供される casbnccl モジュールによって公開されます。
クライアント プログラムがこのモジュールを呼び出すには、CALL 文をコーディングするか、または INITCALL(casbnccl) コンパイル指令を使用する必要があります。現在、casbnccl モジュールをクライアント アプリケーションにリンクする機能はありません。
この API を使用するには、通常はホスト、ポート、接続タイプ、トレース フラグを使用して接続を設定します。CommArea オブジェクトおよび CCLParams オブジェクトを適切な CICS プログラム名、ユーザー ID、パスワードを使用して入力すると、API によってエンタープライズ サーバーに要求が送信され、さらにサーバーから戻る ECIResponse オブジェクトを受信します。例外が発生すると、エンタープライズ サーバーから CICSException または AbendException のいずれかが返されます。
Java コードを変更して Micro Focus ECI 呼び出しを処理する方法については、Micro Focus ECI Java API で説明します。
ECI を使用するように Enterprise Server リージョンを構成するには、ES_LEGACY_ECI 環境変数を Y に設定します。たとえば、ES_LEGACY_ECI=Y のように指定します。
実行する CICS プログラムから返されるデータの量が入力データのサイズの約 2 倍を超える場合、ES_ECI_MAX_RESP 環境変数を最大予想応答サイズ (バイト単位) に設定します。たとえば、ES_ECI_MAX_RESP=70000 のように指定します。
ES_REGION | 8 文字のリージョン/サーバー ID。
例:
ES_REGION=myserver共有メモリの使用量をローカル サーバーに示します。 |
ES_ECI_SOCKET | コロンで区切られた、8 文字のリージョン/サーバー ID および Web サービス リスナー ポート (<server>:<port>)。
例:
ES_ECI_SOCKET=myserver:9001 TCP/IP の使用量をローカルまたはリモート サーバーに示します。 |
これらの 2 つの環境変数は相互排他的です。ただし、両方を使用した場合、ES_ECI_SOCKET が ES_REGION に優先します。
これらの環境変数のどちらも使用しなかった場合、動作モードは IBM CTG のものと同じになります。この例では、要求が送信されるサーバーは、ECI パラメーター ブロックの ECI-SYSTEM-NAME 変数を通して識別され、null または空白で埋められた値を取ります。その値は、MFDS リポジトリのサーバー定義に一致する必要があります。
ES_ECI_CCITCP2=localhost:86mf-client.dat ファイルは、Windows では Micro Focus COBOL 製品インストールの \bin および \bin64 ディレクトリに、UNIX および Linux では /etc に置かれています。
#pragma pack(1) #define ECI_VERSION_2A 6 struct { ECI_PARMS eci_base_parms; short eci_v2_ext_filler1; short eci_v2_ext_filler2; void* eci_v2_ext_filler3; char* eci_userid_ptr; char* eci_password_ptr; } eci_ext_parms; #pragma pack()
CICS_ExternalCall() を呼び出す前に、次を実行します。
eci_ext_parms.eci_base_parms.eci_version = ECI_VERSION_2A; eci_ext_parms.eci_userid_ptr = uid; eci_ext_parms.eci_password_ptr = pwd;
uid および pwd は、null で終了する文字列です。
COBOL で同じことを行うには、ECI-TPN 宣言の直後に挿入される IBM cicseci.cbl ファイルに次の ECI-PARMS 定義を追加します。
03 pic x(2) comp-5. 03 pic x(2) comp-5. 03 pointer. 03 ws-eci-user-id-ptr pointer. 03 ws-eci-passwd-ptr pointer.
データ定義:
78 78-eci-parm-length value length of ECI-PARMS. 01 ws-eci-extended-parms. 03 ws-eci-base-parms pic x(78-eci-parm-length). 03 pic x(2) comp-5. 03 pic x(2) comp-5. 03 pointer. 03 ws-eci-user-id-ptr pointer. 03 ws-eci-passwd-ptr pointer.
手続きコード:
move 6 to eci-version move eci-parms to ws-eci-base-parms call eci-entry-pptr using by reference ws-eci-extended-parms returning eci-error-id end-call move ws-eci-base-parms to eci-parms