OpenTP1 Version 7　分散トランザクション処理機能　TP1/EE/Message Control Extension 使用の手引

解説・手引・文法書

3000-3-F57-60

前書き

対象製品

・適用OS：Red Hat Enterprise Linux Server 6 (64-bit x86_64)，Red Hat Enterprise Linux Server 7 (64-bit x86_64)，Red Hat Enterprise Linux Server 8 (64-bit x86_64)

P-8264-9311 uCosminexus TP1/EE/Message Control Extension 02-05

・適用OS：Red Hat Enterprise Linux Server 9 (64-bit x86_64)

P-8864-9311 uCosminexus TP1/EE/Message Control Extension 02-07

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2025年4月　3000-3-F57-60

著作権

All Rights Reserved. Copyright (C) 2008, 2025, Hitachi, Ltd.

変更内容

変更内容（3000-3-F57-60）　uCosminexus TP1/EE/Message Control Extension　02-07，uCosminexus TP1/EE/Message Control Extension　02-05

追加・変更内容

変更個所

対象製品を更新した。

P-1M64-9311およびP-9W64-9311を削除した。

Red Hat Enterprise Linux Server 8 (64-bit x86_64)をサポートした（P-8264-9311）。

Red Hat Enterprise Linux Server 9 (64-bit x86_64)をサポートした（P-8864-9311の追加）。

−

ee_mcp_sendrecv()のANSI C，C++の形式を変更しました。

5.2

ee_mcp_sendrecv - 同期型メッセージの送受信

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，次に示すプログラムプロダクトの概要，定義方法，運用方法，および操作方法について説明したものです。

uCosminexus TP1/EE/Message Control Extension

以降，このマニュアルでは，「uCosminexus TP1/EE/Message Control Extension」を「MCP」と表記します。

対象読者

システム管理者，システム設計者，プログラマ，およびオペレータの方を対象としています。

また，次に示す知識があることを前提としています。

Linuxのシステム管理の基礎的な知識

オペレーティングシステムとオンラインシステムの基礎的な知識

TP1/Server BaseおよびTP1/Server Base Enterprise Optionの知識

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

JISコード配列のキーボードとASCIIコード配列のキーボードとの違いについて

JISコード配列とASCIIコード配列では，次に示すコードで入力文字の違いがあります。このマニュアルの文字入力例（コーディング例）の表記は，JISコード配列（日本語のキーボード）に従った文字に統一しています。

コード

JISコード配列

ASCIIコード配列

(5c)₁₆

' ¥ '（円記号）

' ＼ '（バックスラッシュ）

(7e)₁₆

' ￣ '（オーバライン）

' ~ '（チルダ）

文法の記号

システム定義の説明，およびコマンドの説明に使用する各種の記号を説明します。

ここで説明する文法記述記号，属性表示記号および構文要素記号は，実際の定義には記述しません。

（1）文法記述記号

システム定義，コマンドのオプションおよび引数の指定方法について説明する記号です。

文法記述記号

意味

〔　　〕

この記号で囲まれている項目は省略できることを意味しています。

（例）〔-r ランID〕

この場合，-rオプションの指定を省略できます。

…

この記号で示す直前の項目を繰り返し指定できることを意味しています。

（例）eemcped MCPトレースファイル名 〔MCPトレースファイル名…〕

この場合，eemcpedコマンドにMCPトレースファイル名を複数指定できます。

｛｛　　｝｝

この記号で囲まれた複数の項目が一つの繰り返し項目の単位であることを示します。

（例）｛｛〔eemcple -l 論理端末名 -r "portno=自システムのポート番号"〕｝｝

これは，次のように繰り返し指定できることを示します。

eemcple -l 論理端末名 -r "portno=自システムのポート番号"

eemcple -l 論理端末名 -r "portno=自システムのポート番号"

｛　　｝

この記号で囲まれている複数の項目のうちから一つを選択することを示します。項目の区切りは｜で示します。

（例）｛00000000｜00000010｝

これは，00000000と00000010の二つの項目のうち，どちらかを指定することを示します。

｜

この記号で区切られた項目は選択できることを意味しています。

（例）-i auto｜manual

この場合，autoまたはmanualのどちらかを指定できます。

＿

（下線）

この記号で示す項目は，該当オペランド，またはオプションを省略した場合の省略時解釈値を示します。

（例）multicast= yes｜no

この場合，multicastオペランドを省略すると，noが仮定されます。

（2）属性表示記号

システム定義，およびコマンドに指定できる値の範囲を説明する記号です。

属性表示記号

意味

〜

この記号のあとに指定値の属性を示します。

《　　》

指定を省略したときに仮定される値を示します。

〈　　〉

指定値の構文要素を示します。

((　　))

指定値の指定範囲を示します。

（3）構文要素記号

システム定義，およびコマンドに指定できる文字または値を説明する記号です。

構文要素記号

意味

〈英字〉

アルファベット（A〜Z，a〜z）と_（アンダスコア）

〈英字記号〉

アルファベット（A〜Z，a〜z）と#，@，¥，$，%

〈英数字〉

英字と数字（0〜9）

〈符号なし整数〉

数字列（0〜9）

〈16進数〉

数字（0〜9），A〜F，およびa〜f

〈識別子〉

先頭がアルファベットの英数字列

〈記号名称〉

先頭が英字記号の英数字記号列

〈パス名〉

記号名称，/，および　.（ピリオド）

（ただし，パス名は使用するOSに依存）

〈ホスト名〉

英数字，および!，#，$，%，&，'，(，)，*，+，-，.（ピリオド），/，;，<，=，>，?，@，[，¥，]，^，_（アンダスコア），{，|，}，~，,（コンマ）

ただし，OSによって使用できる文字が異なります。詳細は，使用しているOSのマニュアルを参照してください。

使用上の注意

すべて半角文字を使用してください。

1　概要

この章では，MCPの概要について説明します。

1.1　MCPとは

MCPは，TP1/EE上で動作するプログラムです。システム間でのメッセージ送受信を行うために必要なメッセージ制御機能を実現します。

通信先の相手システムにOpenTP1が導入されていない場合は，通信プロトコルに従ったメッセージ通信を行う必要があります。このような場合にMCPを使用すると，TP1/EEでTCP/IPプロトコルおよびUDPプロトコルを使用したメッセージ通信ができるようになります。

MCPを組み込んだOpenTP1システムの構成例を次の図に示します。

図1‒1　MCPを組み込んだOpenTP1システムの構成例

1.2　MCPで通信するメッセージの種類

MCPでは，TCP/IPプロトコルおよびUDPプロトコルを使用したメッセージ通信ができます。使用するプロトコルによるメッセージの種類は次のとおりです。

■TCP/IPプロトコルを使用する場合

TCP/IPプロトコルを使用した一方送信，一方受信および同期送受信ができます。

■UDPプロトコルを使用する場合

次に示すメッセージの送受信ができます。

不特定の相手に対する一方送信（ブロードキャスト）

特定の一つの相手に対する一方送信（ユニキャスト）

特定の複数の相手に対する一方送信（マルチキャスト）

一方受信（ブロードキャスト，ユニキャスト，マルチキャスト）

1.2.1　一方送信メッセージ

一方送信メッセージには，非同期一方送信と同期一方送信の2種類があります。

■非同期一方送信

非同期一方送信は，トランザクションと連動して相手システムにメッセージを送信する場合に使用します。一つのトランザクションで複数のメッセージを非同期一方送信した場合でも，トランザクションが決着するまで相手システムへメッセージは送信されません。つまり，トランザクションがコミットした場合にだけメッセージを送信し，トランザクションがロールバックした場合にはメッセージを送信しません。

■同期一方送信

同期一方送信は，メッセージの送信要求と相手システムへのメッセージ送信処理を同期させる場合に使用します。一つのトランザクションで複数のメッセージを同期一方送信した場合は，メッセージの送信要求のたびに相手システムへメッセージが送信されます。つまり，トランザクションのコミット，ロールバックに関係なく送信要求のたびに相手システムへメッセージを送信します。

使用するプロトコルに関係なく，デフォルトで送信できるメッセージのサイズは，32キロバイトまでです。

ただし，送信メッセージの最大サイズは，TCP/IPプロトコルを使用する場合は8メガバイト，UDPプロトコルを使用する場合は64キロバイトまで拡張できます。送信メッセージの最大サイズを拡張する場合は，eemcpfunc定義コマンドのmsglenオペランドにextendを指定してください。

(1)　非同期一方送信

UAPからのメッセージ送信要求をMCPが受け付けたあと，UAPがリターンしてからメッセージを送信する形態です。メッセージを相手システムに非同期一方送信した場合に，障害（コネクション障害など）を検知したときは，送信障害トランザクション（ERRTRNS）を起動して出力メッセージを破棄します。

非同期一方送信でメッセージを送信する場合の処理の流れを次の図に示します。

図1‒2　非同期一方送信でメッセージを送信する場合の処理の流れ

UAPは，MCPに対してメッセージ送信要求を行います。

MCPは，UAPがリターン（トランザクションがコミット）したことを契機に，相手システムにメッセージを送信します。

(2)　同期一方送信

UAPからのメッセージ送信要求をMCPが受け付けるタイミングに合わせて，メッセージを送信する形態です。メッセージを相手システムに同期一方送信した場合に，障害（コネクション障害など）を検知したときは，呼び出し元にエラーリターンします。同期一方送信でメッセージを送信する場合の処理の流れを次の図に示します。

図1‒3　同期一方送信でメッセージを送信する場合の処理の流れ

UAPは，MCPに対してメッセージ送信要求を行います。

MCPは，UAPからのメッセージ送信要求を受け付けたことを契機に，相手システムにメッセージを送信します。

1.2.2　一方受信メッセージ

一方受信メッセージは，相手システムからの一方送信メッセージを自システムに受信する形態です。

使用するプロトコルに関係なく，デフォルトで受信できるメッセージのサイズは，受信バッファサイズ（TP1/EEサービス定義のrecv_message_buf_sizeオペランドで指定）に指定したサイズまでです。

ただし，受信メッセージの最大サイズは，TCP/IPプロトコルを使用する場合は8メガバイト，UDPプロトコルを使用する場合は64キロバイトまで拡張できます。受信メッセージの最大サイズを拡張する場合は，eemcpfunc定義コマンドのmsglenオペランドにextendを指定してください。

一方受信メッセージを受信した場合の処理の流れを次の図に示します。

図1‒4　一方受信メッセージを受信した場合の処理の流れ

相手システムからの一方送信メッセージを，MCPが受信します。

MCPは，受信したメッセージをUAPに引き渡します。

1.2.3　同期型メッセージ

(1)　機能概要

同期型メッセージ送受信は，自システムからのメッセージ送信と，相手システムからの応答メッセージの受信を連続で行う形態です。この形態は，自システムのUAPと相手システムとの間でメッセージの同期合わせ，順序管理をする場合に使用します。一つのトランザクションで複数のメッセージを送信した場合は，メッセージの送信要求のたびに相手システムへメッセージが送信されます。つまり，トランザクションのコミット，ロールバックに関係なく送信要求のたびに相手システムへメッセージを送信します。

同期型メッセージの送受信機能は，TCP/IPプロトコルで使用できます。UDPプロトコルでは，同期型メッセージの送受信機能は使用できません。

UAPは，API（ee_mcp_sendrecv関数またはCBLEEMCP('SENDRECV')）を発行してMCPにメッセージの送受信を要求します。MCPは受け取ったメッセージを編集したあと，相手システムに送信処理をします。送信処理が完了したあとは，UAPにリターンしないで，引き続き受信待ち状態となります。相手システムからのメッセージを受信すると，MCPはメッセージを編集して，UAPに引き渡します。

同期型メッセージ送受信でメッセージを送受信する場合の処理の流れを次の図に示します。

図1‒5　同期型メッセージ送受信の処理の流れ

(2)　メッセージのすれ違い

(a)　送受信要求前に相手システムからの一方送信メッセージを受信

同期送受信の送信要求時，同一コネクションですでに相手システムからの一方送信メッセージを受信し組立中の場合，同期送受信関数はエラーリターンします。

図1‒6　送信要求前に相手システムからの一方送信メッセージを受信

(b)　送信処理中に相手システムからの一方送信メッセージを受信

同一コネクションで，自システムからの同期送受信要求に対するメッセージ受信と，相手システムからの一方送信メッセージがネットワーク上ですれ違うことがあります。

図1‒7　送信処理中に相手システムからの一方送信メッセージを受信

表1‒1　受信メッセージすれ違い時のMCPの動作

図中の番号

受信したメッセージの種別

MCPの動作

1.

同期送受信の送信要求時，ネットワーク上のメッセージすれ違いで，相手システムからの一方送信メッセージを受信。

相手からの一方送信メッセージを，応答メッセージとして受信します。

2.

図中の1で示す相手システムからの一方送信メッセージ受信後，同期送受信の送信に対する応答メッセージを受信。

同期送受信の応答メッセージを，相手システムからの一方送信メッセージとして受信します。

(3)　送信処理中の論理端末に対するメッセージ送信

複数のサービスで同一の論理端末にメッセージを送信した場合，先頭のメッセージによって論理端末が送信処理中になるおそれがあります。

(a)　同期型メッセージ送受信処理中の論理端末に対する一方メッセージ送信

同期型メッセージ送受信は，メッセージの送信から応答メッセージの受信まで同じ論理端末を使用します。そのため先行した同期型メッセージの送受信が応答受信するまで，同一論理端末に対する後続の一方メッセージ送信を待ち合わせます。

図1‒8　送受信処理中の論理端末に対する一方メッセージ送信

(b)　送信中の論理端末に対する同期型メッセージ送受信

同期型メッセージ送受信中，または一方メッセージ送信中の論理端末に対して同期型メッセージの送受信関数を発行した場合，先行するメッセージの送受信処理が完了するまで待ち合わせて送信するか，または即時エラーリターンとするかは，同期型メッセージ送受信関数の引数で指定することができます。

図1‒9　送受信処理中の論理端末に対する同期型メッセージ送受信

(4)　コネクションの切断抑止

同期型メッセージ送受信関数の発行時に指定した監視タイマ（引数：watchtimeで指定したメッセージ送受信完了待ち時間）がタイムアウトすると，コネクションは切断されます。

しかし，MCP構成定義の指定によって，コネクションの切断を抑止することができます。コネクションの切断抑止では，同期型メッセージ送受信関数がタイムアウトした場合，コネクションを切断しません。

コネクションの切断を抑止する場合，入力セグメント判定UOCで，セグメント未完成のときに後続メッセージ監視タイマの設定を行わないでください（UOCのパラメタ：eemcp_uoctimer_infのtimer_codeにEEMCP_TIME_NO_SETを指定してください）。後続メッセージ監視タイマでタイマ監視を行うと，監視タイマがタイムアウトしたときにコネクションは切断されます。

(5)　時間監視

(a)　メッセージ送受信完了監視タイマ（TCP/IPプロトコル使用時）

同期型メッセージ送受信関数を発行してから，応答メッセージを受信するまでのタイマ監視を行います。

他スレッドで同一論理端末にメッセージを送信中の場合，メッセージ送受信の待ち合わせを行いますが，この待ち合わせ時間も送信ビジーとしてタイマ監視時間に含みます。

メッセージの送受信完了待ちをする場合の処理の流れを次の図に示します。

図1‒10　メッセージ送受信完了監視タイマ（TCP/IP）

項目

MCP構成定義（eemcpcn -w）の指定による動作

srtimoutオペランドにyesを指定（コネクションの切断を抑止する）

srtimoutオペランドにnoを指定（コネクションの切断を抑止しない）

コネクション

コネクションを切断しません。

コネクションを切断します。

RL（MCP後処理トランザクション）

起動しません。

起動します。

次に示す内容を通知します。

reason

EEMCP_RSN_SRTO

リターン値

EEMCPER_TIME（監視タイマタイムアウト）が返されます。

ステータスコード

10007（監視タイマタイムアウト）が返されます。

1.2.4　送受信するメッセージのデータ形式

TCP/IPプロトコルまたはUDPプロトコルを使用した通信で送受信するメッセージは，自システムのUAPと相手システムの間の受け渡しの過程でデータ形式が変化します。

送受信するメッセージのデータ形式の変化を次の図に示します。

図1‒11　送受信するメッセージのデータ形式の変化

1.2.5　送受信するメッセージの最大サイズ

送受信するメッセージの最大サイズを次の表に示します。UDPプロトコルの場合は制御ヘッダを含みます。

表1‒2　受信メッセージの最大サイズ

メッセージ長拡張有無

プロトコル種別

TCP/IP

UDP/IP

メッセージ長拡張

なし

受信バッファサイズ

65531※1

あり

8388608

65531※1，※2

注※1

受信バッファサイズ（recv_message_buf_size）の方が小さい場合は受信バッファサイズ

注※2

入力メッセージ編集UOCでの編集後の最大サイズは8388608

表1‒3　送信メッセージの最大サイズ

メッセージ長拡張有無

プロトコル種別

TCP/IP

UDP/IP

メッセージ長拡張

なし

32000※

32000※

あり

8388608

65531※

注※

送信バッファサイズ（send_message_buf_size）の方が小さい場合は送信バッファサイズ

1.3　メッセージ送信先の指定

TCP/IPプロトコルまたはUDPプロトコルでは，任意の通信先にメッセージを送信するときは，送信先を指定します。

なお，メッセージ送信を行う関数は次のとおりです。

非同期一方送信メッセージ：ee_mcp_send関数，またはCBLEEMCP('SEND ')関数

同期一方送信メッセージ：ee_mcp_sendsync関数，またはCBLEEMCP('SENDSYNC')関数

1.3.1　TCP/IP

TCP/IPプロトコルでは，コネクション確立時に送信先が決定します。コネクションの確立がクライアント型かサーバ型かによって送信先の指定方法は異なります。

メッセージ送信のAPIを発行してから実際に送信処理を行うまでの間に，コネクションが切り替わった場合（コネクションの切断と再確立やコネクションリプレースなど），切り替わった送信先に対しメッセージを送信するときがあります。

(1)　クライアント型の場合

クライアント型コネクションは，自システムからコネクションの確立を要求します。

クライアント型の場合，送信先はMCP構成定義のeemcpcn定義コマンドで指定します。

-oオプションのoipaddrオペランドで相手システムのホストのIPアドレス，またはohostnameオペランドで相手システムのホスト名を指定

-oオプションのoportnoオペランドで相手システムのホストのポート番号を指定

(2)　サーバ型の場合

サーバ型コネクションは，相手システムからのコネクションの確立要求を受け入れます。

サーバ型の場合，送信先はMCP構成定義のeemcpcn定義コマンドで指定します。

-oオプションのoipaddrオペランドで相手システムのホストのIPアドレス，またはohostnameオペランドで相手システムのホスト名を指定

-oオプションのoportnoオペランドで相手システムのホストのポート番号を指定

コネクション確立後，コネクションを確立した相手がAPIを発行する際の送信先となります。

なお，コネクション確立要求受信時に相手アドレス情報のチェックを無効にできます。

1.3.2　UDP

UDPプロトコルでは，関数の引数の指定によって，制御ヘッダまたはMCP構成定義で送信先を指定します。

(1)　制御ヘッダで指定する場合

引数senddata（またはデータ名W）に指定する制御ヘッダで，送信先を指定します。制御ヘッダの領域には，送信先となる相手IPアドレス，および相手ポート番号を指定します。

(2)　MCP構成定義で指定する場合

引数opcd（またはデータ名G）の指定で，MCP構成定義で指定する送信先にメッセージが送信されるようにします。この場合，制御ヘッダの内容に関係なく，MCP構成定義で指定した送信先が有効になります。

送信先は，MCP構成定義のeemcple定義コマンドで指定します。

-oオプションのoipaddrオペランドで相手システムのホストのIPアドレス，またはohostnameオペランドで相手システムのホスト名を指定

-oオプションのoportnoオペランドで相手システムのホストのポート番号を指定

1.4　MCPで使用できるユーザオウンコーディング（UOC）

UAPによるメッセージの処理をより多様な業務に対応させるために，ユーザオウンコーディング（UOC）を作成できます。UOCはC言語で作成します。COBOL言語では作成できません。MCPで使用できるUOCの一覧を次の表に示します。

表1‒4　MCPで使用できるUOCの一覧

項番

UOCの種類

UOCでできる処理

1

入力セグメント判定UOC※

メッセージを受信したとき，そのメッセージでセグメントが完成しているかどうかを判定します。セグメントが未完成のとき（後続メッセージがある場合）は，後続メッセージに対して，監視タイマを設定できます。

2

入力メッセージ編集UOC

受信した論理メッセージをユーザ任意の形式に編集します。また，受信した論理メッセージを基に，ユーザ任意のサービス名を決定できます。

3

出力メッセージ編集UOC

送信した論理メッセージをユーザ任意の形式に編集します。

4

コネクション確立UOC

相手システムからコネクション確立要求を受信するたびに起動し，その確立要求を受け入れるかどうかを判定できます。

注※

TCP/IPプロトコルを使用して通信する場合にだけ使用できます。

各UOCの詳細については，「5.4　ユーザオウンコーディング（UOC）」を参照してください。

2　機能

この章では，コネクションと論理端末について説明します。さらに，MCP後処理トランザクション，端末キュー，時間監視，およびTP1キャッシュ機能との連携について説明します。

2.1　コネクションの管理

ここでは，MCPでのコネクションの管理について説明します。コネクションとは，UAPに対する論理的な通信路で，TCP/IPプロトコルを使用して通信する場合だけ使用します。

2.1.1　コネクションの状態と状態遷移

コネクションには，クライアント型コネクションとサーバ型コネクションの2種類があります。クライアント型コネクションは自システムからのコネクション確立要求によって確立されるコネクションを指し，サーバ型コネクションは相手システムからのコネクション確立要求によって確立されるコネクションを指します。

コネクションの状態は，コマンドの入力や通信障害などのイベントによって遷移します。このとき，MCPはMCP後処理トランザクション（RL）を起動し，コネクションの状態変化をUAPに通知します。MCP後処理トランザクションについては，「2.3　MCP後処理トランザクション」を参照してください。コネクションの状態の意味を次の表に示します。

表2‒1　コネクションの状態の意味

項番

状態

意味

クライアント型コネクション

サーバ型コネクション

1

コネクション未確立（INA）

コネクション確立を要求していない状態（コネクション障害で停止中も含む）

相手システムからコネクション確立要求を受けていない状態（コネクション障害で停止中も含む）

2

コネクション確立処理中（BID）

UAPからコネクション確立要求を受け付けてから，コネクション確立完了のMCP後処理トランザクションが起動するまでの状態

相手システムからコネクション確立要求を受け付けてから，コネクション確立完了のMCP後処理トランザクションが起動するまでの状態

3

コネクション確立中（ACT）

コネクション確立完了のMCP後処理トランザクションが起動している状態（論理端末でメッセージの送受信ができる状態）

4

コネクション解放処理中（OBS）

相手システムがコネクション解放要求（障害検知も含む）を受け付けてから，コネクション解放のMCP後処理トランザクションが起動するまでの状態

コネクション障害を検知し，コネクション解放のMCP後処理トランザクションが起動する前の状態

コネクションにかかわるエラーメッセージが出力された場合，コネクションの状態を確認する必要があります。コネクションの状態は，eemcplscnコマンドで表示できます。なお，eemcplscnコマンドに-dオプションを指定すると，コネクションに対応する論理端末の情報も表示できます。

コネクションの状態遷移を次の図に示します。

図2‒1　コネクションの状態遷移

2.1.2　コネクションの確立

ここでは，クライアント型コネクションおよびサーバ型コネクションを確立するときの処理の流れについて説明します。

(1)　クライアント型コネクションの確立

クライアント型コネクションの確立には，自動確立と手動確立の2種類があります。

■コネクションの自動確立

オンライン開始前にコネクションを自動確立します。ただし，オンラインはコネクション確立の完了を待たないで開始されます。なお，コネクションの確立が成功した場合は，コネクションの確立を通知するMCP後処理トランザクションは起動しません。

コネクションの確立状態は，KFSB81402-Iメッセージ（eemcpcn定義の-b conmsgオペランドにyesを指定したとき），またはeemcplscnコマンドで確認してください。

■コネクションの手動確立

eemcpactcnコマンドの実行，またはee_mcp_actcn関数の発行によってコネクションを手動確立します。

ee_mcp_actcn関数の発行によって，手動でコネクションを確立する場合の処理の流れを次の図に示します。

図2‒2　ee_mcp_actcn関数の発行によって，手動でコネクションを確立する場合の処理の流れ

説明

UAPは，MCPに対してコネクションの確立を要求します。

MCPは，コネクション管理テーブルでコネクションIDを検索し，そのコネクションが未確立であることをチェックします。

コネクションが確立されます。

コネクションが確立されると，MCPはコネクション確立のRL（MCP後処理トランザクション）を処理キューに登録します。

UAPにコネクションの確立を通知します。

■コネクションの再確立処理

クライアント型コネクションの確立処理で障害が発生した場合，MCP構成定義の再試行間隔（eemcpcn定義コマンドの-bオプションのbretryintオペランド指定値）および再試行回数（eemcpcn定義コマンドの-bオプションのconcmptimオペランド指定値）の指定に従い，コネクションの再確立処理が行われます。

なお，コネクション確立障害で再試行リトライアウトとなったコネクションは，MCP後処理トランザクションを起動してコネクションの障害連絡を行います。

■相手システムを指定したコネクション確立機能

TCP/IPプロトコル（クライアント型コネクション）の論理端末で，コネクション確立API発行時，または運用コマンド実行時に，相手システムのアドレス情報（IPアドレス・ポート番号）を指定してコネクションを確立できます。

相手システムを指定したコネクション確立実行時は，MCP構成定義eemcpcnの-oオプション指定値の設定値に関係なく，APIまたはコマンドの引数に指定した相手アドレスに対してコネクションを確立します。この機能で指定した相手アドレス情報はコネクション切断後は引き継ぎません。この機能で確立したコネクションを切断後に，同じコネクションIDに対してeemcpactcnコマンド，またはee_mcp_actcn()でコネクション確立した場合，MCP構成定義eemcpcnの-oオプション指定値の設定値に従ってコネクションを確立します。

相手システムを指定したコネクション確立APIの詳細は，「5.2　ライブラリ関数（C言語）」の「ee_mcp_actcn_to - 相手システムを指定したコネクションの確立」または「5.3　ライブラリ関数（COBOL言語）」の「CBLEEMCP('ACTCNTO ') - 相手システムを指定したコネクションの確立」を参照してください。運用コマンド(eemcpactcnto)の詳細は，「5.2　ライブラリ関数（C言語）」の「ee_mcp_actcn_to - 相手システムを指定したコネクションの確立」を参照してください。

■コネクション確立時の相手アドレス通知機能

TCP/IPプロトコルの論理端末で，コネクション確立した相手システムのアドレス情報（IPアドレス・ポート番号）を通知します。

(a) コネクション確立UOC

サーバ型コネクションで，相手システムからコネクション確立要求を受信するたびにコネクション確立UOCを起動し，コネクション確立要求を発行した相手システムのアドレス情報を通知します。

コネクション確立UOCの詳細は，「5.4.10　コネクション確立UOC」を参照してください。

コネクション確立UOCの処理の流れを次の図に示します。

図2‒3　コネクション確立UOCの処理の流れ

(b) MCP拡張トランザクションインタフェース

MCP後処理トランザクション(RL)，またはMCPメッセージ受信時のユーザトランザクションのMCP拡張トランザクションインタフェース情報で，相手システムのアドレス情報を通知します。

コネクション解放時のMCP後処理トランザクションでは，相手システムのアドレス情報は通知しません。

MCP拡張トランザクションインタフェースの詳細は，「5.2　ライブラリ関数（C言語）」の「MCP拡張トランザクションインタフェース情報」または「5.3　ライブラリ関数（COBOL言語）」の「MCP拡張トランザクションインタフェース情報」を参照してください。

(c) コネクション情報取得

コネクション情報を取得するAPI（ee_mcp_cninfo()，CBLEEMCP('CNINFO')）で，相手システムのアドレス情報を通知します。

コネクション情報取得APIの詳細は，「5.2　ライブラリ関数（C言語）」の「ee_mcp_cninfo - コネクション情報の取得」または「5.3　ライブラリ関数（COBOL言語）」の「CBLEEMCP('CNINFO ') - コネクション情報の取得」を参照してください。

(2)　サーバ型コネクションの確立

サーバ型コネクションの確立では，オンライン開始時にポートをオープンしておくことで，相手システムからのコネクション確立要求を待ちます。

サーバ型コネクションを確立する場合の処理の流れを次の図に示します。

図2‒4　サーバ型コネクションを確立する場合の処理の流れ

説明

相手システムからのコネクション確立要求を受け付けます。

コネクション確立のRL（MCP後処理トランザクション）を処理キューに登録します。

UAPにコネクションの確立を通知します。

2.1.3　コネクションの解放

コネクションの解放には，自動解放と手動解放の2種類があります。

(1)　コネクションの自動解放

MCPがコネクションを自動解放するタイミングは，次に示すとおりです。

メッセージ受信で障害を検知した時

TCP/IPプロトコルを使用時に，入力セグメント判定UOCでエラーリターンまたはパラメタ不正があったときは，MCPによってコネクションが解放されます。このとき，入力メッセージは破棄され，コネクション障害のMCP後処理トランザクションが起動されます。

オンラインを終了した時

オンライン終了時には，MCPによってすべてのコネクションが解放されます。

コネクション障害が発生した時

コネクション障害時には，MCPによってコネクションが解放されます。コネクション障害が発生した場合のコネクションの解放の流れを次の図に示します。

図2‒5　コネクション障害が発生した場合のコネクションの解放の流れ

説明

障害を検知した場合，MCPはコネクションを解放します。

コネクション解放のRL（MCP後処理トランザクション）を処理キューに登録します。

UAPにコネクションの解放を通知します。

(2)　コネクションの手動解放

eemcpdctcnコマンドの実行，またはee_mcp_dctcn関数の発行によって，コネクションを手動解放できます。

ee_mcp_dctcn関数の発行によって，手動でコネクションを解放する場合の処理の流れを次の図に示します。

図2‒6　ee_mcp_dctcn関数の発行によって，手動でコネクションを解放する場合の処理の流れ

説明

UAPは，MCPに対してコネクションの解放要求をします。

MCPは，コネクション管理テーブルでコネクションIDを検索し，解放要求のあったコネクションが確立中であることをチェックします。

MCPは，コネクションの解放要求をします。

コネクションが解放されます。

解放要求のあったコネクションが解放されると，コネクション確立のRL（MCP後処理トランザクション）を処理キューに登録します。

UAPにコネクションの解放を通知します。

■コネクションの解放形態

自システム側からコネクションを解放する場合，MCPではeemcpcn定義コマンドの-fオプションのcnreleaseオペランドの指定値によって，コネクションの解放形態を決定します。

なお，TP1/EE終了（正常終了，計画停止A，および計画停止B）時のコネクション解放は，eemcpcn定義コマンドの-fオプションのendreleaseオペランドの指定値によって，コネクションの解放形態を決定します。ただし，CL構成の場合は，cnreleaseオペランドで指定したコネクション解放形態でコネクションを解放します。

解放形態には，FINパケットを送信してコネクションを解放する形態と，RSTパケットを送信して強制的にコネクションを解放する形態があります。

注意事項

MCPはOSが提供するTCP/IPのソケットインタフェースを利用しています。そのため，FINパケットを送信するように指定した場合でも，ネットワーク上でのすれ違いなどによって，MCPの指示とは関係なくRSTパケットを送信する場合があります。

2.1.4　コネクションリプレース機能

コネクションリプレース機能とは，割り当て可能な未確立コネクションがない状態でコネクションの確立要求を受け付けたときに，確立状態にあり，かつ送信処理で使用していない最も古いコネクションを解放することで新たなコネクションの確立要求を受け付ける機能です。この機能を使用していない場合に，割り当て可能な未確立コネクションがない状態でコネクションの確立要求を受け付けたときは，コネクションの確立要求を拒否します。

コネクションリプレース機能は，自システムのIPアドレスとポート番号が同じであるコネクションが，すべて確立状態にあるときだけ使用できます。

コネクションリプレース機能を使用するときの処理の流れを次の図に示します。

図2‒7　コネクションリプレース機能を使用するときの処理の流れ

説明

相手システムからのコネクション確立要求を受け付けます。

MCPは，コネクション管理テーブルを検索し，未確立のコネクションがあるかどうかをチェックします。

コネクション管理テーブルを調査した結果，割り当て可能なコネクションがない場合，送信処理で使用していない最も古いコネクション（コネクションID（A））の解放要求をします。

コネクションを解放します。

コネクションID（A）のコネクション解放によるRL（MCP後処理トランザクション）を処理キューに登録します。

UAPを起動してコネクション解放を通知します。

確立要求のあったコネクションをコネクションID（A）で確立します。

コネクションID（A）のコネクション確立によるRL（MCP後処理トランザクション）を処理キューに登録します。

UAPを起動してコネクションの確立を通知します。

注意事項

eemcpcn定義コマンドの指定値によっては，コネクションリプレース機能を使用できません。コネクションリプレース機能を使用できない場合は，次に示すとおりです。

-oオプションのoportnoオペランドに1〜65535の値を指定した場合

-rオプションのportnoオペランドが一致するすべてのサーバ型コネクションで，-hオプションのchgconnオペランドの値が異なる場合

次の場合には，自システムのIPアドレスおよびポート番号が同じコネクションを複数定義できます。

ポートフリーのコネクション

相手アドレスのチェックを抑止しているコネクション

■ポートフリーのコネクション

eemcpcn定義コマンドの-oオプションのoportnoオペランドにfreeを指定した，ポートフリーのコネクションに対してコネクションリプレース機能を使用できます。この場合は，自システムのIPアドレスおよびポート番号が同じコネクションの中から，確立状態にあり，かつ送信処理で使用していない最も古いコネクションをコネクションリプレースの対象として選択します。

送信処理で使用していないコネクションが一つもない場合は，新たなコネクションの確立要求を拒否します。

■相手アドレスのチェックを抑止しているコネクション

eemcpcn定義コマンドの-hオプションのaddrchkオペランドにnoを指定して，相手アドレスチェックを抑止したコネクションに対してコネクションリプレース機能を使用できます。この場合は，次に示す二つの条件と一致し，かつ確立状態にあり，送信処理で使用していない最も古いコネクションをコネクションリプレースの対象として選択します。

接続している既存のコネクションの相手アドレスと，確立要求をした相手のアドレスが同じである

自システムのIPアドレスおよびポート番号が同じである

なお，該当するコネクションがない場合，ポートフリーのコネクションの場合と同様に自システムのIPアドレスおよびポート番号が同じコネクションの中から，送信処理で使用していない最も古いコネクションをコネクションリプレースの対象として選択します。

送信処理で使用していないコネクションが一つもない場合は，新たなコネクションの確立要求を拒否します。

2.1.5　無通信状態監視

無通信状態とは，任意のコネクションに，相手システムとの間で，メッセージの送信または受信がない状態です。MCPは，この無通信状態を監視します。無通信状態の監視時間は，MCP構成定義のコネクション定義eemcpcnオペランドの-kオプションのnotrftimeで指定します。指定した時間を超過した場合，何らかの障害が発生しているものとして，コネクションを強制解放します。

コネクション障害を検出する機能としてキープアライブがあります。キープアライブがソケットオプション「SO_KEEPALIVE」を使用して一定間隔でパケットを送信しながらコネクションの状態を監視するのに対し，無通信状態監視機能はパケットを送信しないでコネクションの状態を監視します。

なお，無通信状態の監視時間がタイムアウトした場合は，KFSB41481-Eが出力されます。

MCPは，各コネクションに対して該当の論理端末が閉塞解除された時点から，論理端末の閉塞またはTP1/EEの終了（正常終了/計画停止A/計画停止B）までを監視します。また，メッセージを受信，または送信すると，状態監視をリセットし，改めて次のメッセージの受信または送信までの監視を開始します。

無通信状態監視タイマは，ほかの各種タイマ（後続メッセージタイマやメッセージ送信完了待ちタイマ，メッセージ送受信完了タイマなど）と並行して，無通信状態を監視します。

無通信状態を監視する範囲を，一方受信メッセージを受信，一方送信メッセージを送信，同期メッセージを送受信した場合を例に，次の図に示します。

図2‒8　無通信状態監視タイマ（TCP/IP）

2.2　論理端末の管理

ここでは，MCPでTCP/IPプロトコルおよびUDPプロトコルを使用して通信する場合の，論理端末の管理について説明します。

2.2.1　コネクションと論理端末の関係

TCP/IPプロトコルでは，コネクションへのインタフェースとして論理端末を提供します。コネクションは，TCP/IPプロトコルでのソケットに対応し，論理端末とは1対1の関係にあります。

コネクションと論理端末の関係を次の図に示します。

図2‒9　コネクションと論理端末の関係

なお，UDPプロトコルを使用したメッセージ通信では，論理端末を通じて自システムのUAPと相手システムとの間でメッセージを送受信します。コネクションレスの通信を前提にしているため，ユーザがコネクションを意識する必要はありません。

また，TP1/EE終了時（正常終了，計画停止A，計画停止B）は，MCP構成定義（eemcpcn定義コマンドの-fオプションのendreleaseオペランド）の指定によって，FINパケットまたはRSTパケットを送信してコネクションを解放します。

コネクションの解放契機ごとの解放形態を次の表に示します。

表2‒2　コネクションの解放契機ごとの解放形態

解放契機

eemcpcn定義コマンドの-fオプションの指定値

解放

状態

cnrelease

endrelease

コネクション障害

fin

fin

FIN

fin

rst

FIN

rst

fin

RST

rst

rst

RST

関数（ee_mcp_dctcn()，またはCBLEEMCP('DCTCN ')）の発行

fin

fin

FIN

fin

rst

FIN

rst

fin

RST

rst

rst

RST

eemcpdctcnコマンド（-fオプション指定なし）の実行

fin

fin

FIN

fin

rst

FIN

rst

fin

FIN

rst

rst

FIN

eemcpdctcnコマンド（-fオプション指定あり）の実行

fin

fin

FIN

fin

rst

FIN

rst

fin

RST

rst

rst

RST

TP1/EE正常終了

fin

fin

FIN

fin

rst

RST

rst

fin

FIN

rst

rst

RST

TP1/EE計画停止（計画停止A，または計画停止B）

fin

fin

FIN

fin

rst

RST

rst

fin

FIN

rst

rst

RST

TP1/EE異常終了（プロセスダウン）

fin

fin

FIN

fin

rst

FIN

rst

fin

RST

rst

rst

RST

（凡例）

FIN：FINパケットを送信してコネクションを解放します。

RST：RSTパケットを送信してコネクションを解放します。

2.2.2　論理端末の状態と状態遷移

論理端末の状態は，コマンドの入力や通信障害などのイベントによって遷移します。このとき，MCPはMCP後処理トランザクションを起動し，論理端末の状態変化をUAPに通知します。MCP後処理トランザクションについては，「2.3　MCP後処理トランザクション」を参照してください。論理端末は，次の表に示す状態で管理されます。

表2‒3　論理端末の状態の意味

項番

状態名

意味

1

論理端末の閉塞中（INA）

論理端末の閉塞解除要求をしていない状態（論理端末障害で停止中も含む）

2

論理端末の閉塞解除処理中（BID）

論理端末の閉塞解除要求を受け付けてから，論理端末の閉塞解除完了のMCP後処理トランザクションが起動する前までの状態

3

論理端末の閉塞解除中（ACT）

論理端末の閉塞解除完了のMCP後処理トランザクションが起動している状態（論理端末でメッセージ送受信ができる状態）

4

論理端末の閉塞処理中（OBS）

論理端末の閉塞要求（障害検知も含む）を受け付けてから，論理端末閉塞のMCP後処理トランザクションが起動する前までの状態

論理端末にかかわるエラーメッセージが出力された場合，論理端末の状態を確認する必要があります。論理端末の状態は，eemcplsleコマンドで表示できます。また，eemcplscnコマンドに-dオプションを指定すると，コネクションに対応する論理端末の情報が表示できます。

論理端末の状態遷移を次の図に示します。

図2‒10　論理端末の状態遷移

2.2.3　論理端末の閉塞と閉塞解除

自システムのUAPは，論理端末を通じてメッセージの送受信を行います。ここでは，論理端末の閉塞と閉塞解除について説明します。

(1)　論理端末の状態

論理端末の閉塞状態とは，相手システムにメッセージを送信できない状態を指します。

論理端末が閉塞している状態でUAPがメッセージの送信を要求した場合，出力先論理端末障害としてエラーリターンします。また，非同期一方送信をする場合，メッセージ送信時に論理端末が閉塞状態になったときは，送信障害トランザクション（ERRTRNS）を起動します。

一方，論理端末の閉塞解除状態とは，論理端末が持つすべての機能が実行できる状態を指します。

(2)　論理端末の閉塞

論理端末を閉塞するには，次に示す方法があります。

コネクションを解放する（TCP/IPプロトコルの場合）

コネクションを解放すると，論理端末は自動閉塞されます。

運用コマンドを実行する，またはAPIを発行する

eemcpdctleコマンドの実行，またはee_mcp_dctle関数の発行によって，論理端末を手動閉塞できます。

注意事項

次の場合，論理端末はMCPによって自動閉塞されます。

入力メッセージ編集UOCがエラーリターンまたはパラメタ不正を検知した場合

出力メッセージ編集UOCがエラーリターンまたはパラメタ不正を検知した場合

なお，UOCの異常でMCPが論理端末を自動閉塞する場合は，論理端末障害のMCP後処理トランザクションを起動します。この場合，入出力メッセージは破棄されます。

(3)　論理端末の閉塞解除

論理端末を閉塞解除するには，次に示すとおり，自動で閉塞解除する方法と，手動で閉塞解除する方法があります。

コネクション確立時に自動的に閉塞解除する（TCP/IPプロトコルの場合）

eemcple（論理端末定義（TCP/IP））定義コマンドの-iオプションにautoを指定します。これによって，コネクション確立時に自動的に論理端末が閉塞解除されます。

オンライン開始時および再開始時に自動的に閉塞解除する（UDPプロトコルの場合）

eemcple（論理端末定義（UDP））定義コマンドの-iオプションにautoを指定します。これによって，オンライン開始時および再開始時に自動的に論理端末が閉塞解除されます。なお，論理端末の閉塞解除が成功した場合は，論理端末の閉塞解除を通知するMCP後処理トランザクションは起動しません。論理端末の状態は，KFSB81404-Iメッセージまたは，eemcplsleコマンドで確認してください。

運用コマンドまたはAPIを発行して手動で閉塞解除する

eemcpactleコマンドの実行，またはee_mcp_actle関数の発行によって，手動で論理端末を閉塞解除します。

2.2.4　送信処理中の論理端末に対するメッセージ送信

複数のサービスで同一の論理端末にメッセージを送信した場合，先着のメッセージによって論理端末が送信処理中になるおそれがあります。このとき，送信対象の論理端末が複数ある場合は，送信処理中の論理端末に対するメッセージ送信をスキップして，先に送信可能な別の論理端末へメッセージを送信します。

送信対象の論理端末が一つしかない場合，または送信対象の論理端末がすべて送信処理中になっている場合は，論理端末がメッセージを受け付けられるようになった時点でメッセージを送信します。

同一の論理端末に対して複数のサービスがメッセージを送信した場合の処理の流れを次の図に示します。

図2‒11　同一の論理端末に対して複数のサービスがメッセージを送信した場合の処理の流れ

説明

UAP1は，論理端末Aに対してメッセージを送信します。

UAP1のメッセージ送信によって論理端末Aが送信処理中になっているため，UAP2は，先に論理端末Bに対してメッセージを送信します。論理端末Aが空き次第，メッセージを送信します。

UAP1，およびUAP2によってあて先の論理端末すべてが送信処理中になっているため，UAP3は，論理端末A，および論理端末Bが空き次第，メッセージを送信します。

2.3　MCP後処理トランザクション

MCP後処理トランザクションは，コネクションおよび論理端末の状態が変化した場合に，その変化をUAPに通知するための機能です。この機能を使用すると，MCPは次に示す場合にMCP後処理トランザクションを起動して，状態の変化をUAPに通知します。

コネクションの確立または解放

論理端末の閉塞または閉塞解除

MCP後処理トランザクションの起動は，MCP構成定義で設定します。論理端末ごとにMCP後処理トランザクションを設定する場合は，eemcplefunc定義コマンドの-uオプションのrltrnオペランドにサービス名（TP1/EEサービス定義のserviceオペランドで指定）を指定します。論理端末ごとに設定しない場合は，eemcpfunc定義コマンドの-uオプションのrltrnオペランドにサービス名を指定します。

トランザクションレベル方式指定時にMCP後処理トランザクション起動サービス名を指定する場合は，eemcplefunc定義コマンド，またはeemcpfunc定義コマンドの-uオプションのrltrnlevelオペランドに，MCP後処理トランザクションのトランザクションレベル名を必ず指定してください。

MCP後処理トランザクションは，該当するサービスが閉塞中であってもサービスを起動します。ただし，MCP後処理トランザクションで発生した障害に対するエラートランザクション（ERRTRN3）は起動しません。

また，サービス閉塞による処理キュー引き出し禁止（TP1/EEのユーザサービス関連定義のforbid_draw_serviceオペランドにYを指定）を指定している場合，引き出し禁止が解除されるまでMCP後処理トランザクションは起動しません。

MCP後処理トランザクションの起動タイミングと内容について次の表に示します。

表2‒4　MCP後処理トランザクションの起動タイミングと内容

項番

MCP後処理トランザクションの起動タイミング

内容

1

コネクション確立通知※

クライアント側

コマンドまたはAPIによってコネクションを確立したあと，コネクションが確立されたことをUAPに通知します。

サーバ側

相手システムからのコネクション確立要求を受け付けたあと，コネクションが確立されたことをUAPに通知します。

2

コネクション解放通知

コマンドまたはAPIによってコネクションを解放したあと，コネクションが解放されたことをUAPに通知します。

3

コネクション障害を検知したあと，コネクションが解放されたことをUAPに通知します。

4

入力セグメント判定UOCの結果，不正を検知したあと，コネクションが解放されたことをUAPに通知します。

5

論理端末閉塞通知

コマンドまたはAPIによって論理端末を閉塞したあと，論理端末が閉塞されたことをUAPに通知します。

6

入力メッセージ編集UOCの結果，不正を検知したあと，論理端末が閉塞されたことをUAPに通知します。

7

出力メッセージ編集UOCの結果，不正を検知したあと，論理端末が閉塞されたことをUAPに通知します。

8

論理端末閉塞解除通知※

コマンドおよびAPIによって閉塞を解除したあと，論理端末の閉塞が解除されたことをUAPに通知します。

注※

オンライン開始時にコネクションの自動起動を定義した場合（eemcpcn定義コマンドの-iオプションにautoを指定），または論理端末の自動閉塞解除を定義した場合（eemcple定義コマンドの-iオプションにautoを指定），オンライン開始時の自動起動によるMCP後処理トランザクションは起動しません。

注意事項

TP1/EE，および高速メッセージ通信を可能にするXTCの運用コマンドの中には，MCP後処理トランザクションで発行できないコマンドがあります。詳細については，「付録C　運用コマンド実行機能でのMCPコマンドの実行可否」を参照してください。

2.4　エラートランザクション

MCPは，メッセージ送受信の処理でエラーや障害が起こった場合，ユーザによる決着処理ができるようにエラートランザクションを起動します。

エラートランザクションを起動するアプリケーションプログラムはMCP構成定義で設定します。論理端末ごとにエラートランザクションを設定する場合は，eemcplefunc定義コマンドの-eオプションのerrtrn1，errtrn2，errtrn3，errtrnr，およびerrtrnsオペランドにそれぞれのエントリポインタ名（C言語の関数名）を指定します。

論理端末ごとに設定しない場合は，TP1/EEサービス定義のerrtrn1，errtrn2，errtrn3，errtrnr，およびerrtrnsオペランドの指定値に従います。

なお，論理端末ごとに設定しない場合は，eemcpfunc定義コマンドの-eオプションのerrtrnsオペランドで，送信障害トランザクション（ERRTRNS）を起動するかどうかを指定できます。

エラートランザクションの詳細については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

2.5　端末キュー機能

MCPでは，端末キュー機能によって，論理端末単位のイベントをシリアルに処理できます。論理端末単位のイベントには，メッセージ受信，コネクション確立・解放，および論理端末の閉塞・閉塞解除があります。

端末キュー機能を使用するかどうかは，eemcpfunc定義コマンドの-qオプションで指定します。

端末キュー機能を使用した場合の処理の流れを次の図に示します。

図2‒12　端末キュー機能を使用した場合の処理の流れ

説明

相手システムから受信した入力メッセージは，一度端末キューに登録されます。

入力メッセージを端末キューに登録したあと，入力メッセージを該当するサービスの処理キューに登録します。

処理キューからメッセージを読み出し，UAPを起動します。

3.で起動されたUAPがリターンすると，次のメッセージが端末キューから処理キューに登録されます。

コネクション，論理端末などの状態によって，端末キューの扱いは異なります。状態別の端末キューの扱いについて，次に説明します。

■コネクション障害時

コネクション障害が発生した場合は，該当するコネクションに対応する論理端末の端末キューに滞留しているすべてのメッセージを破棄します。ただし，すでに処理キューに登録されている入力メッセージは破棄されないで，UAPの処理を続行します。

■論理端末閉塞時（TCP/IPプロトコル使用時）

TCP/IPプロトコルを使用している場合に論理端末が閉塞しているときは，該当する論理端末の端末キューを引き出し禁止にします。端末キューの引き出しは，論理端末を閉塞解除したタイミングで再開されます。

なお，論理端末が閉塞中のままeesvstopコマンドを実行してオンラインを終了させた場合，端末キューに滞留中の入力メッセージは，すべて破棄されます。

■論理端末閉塞時（UDPプロトコル使用時）

UDPプロトコルを使用している場合に論理端末が閉塞しているときは，TCP/IPプロトコル使用時のコネクション障害時と同様に，論理端末の端末キューに滞留しているメッセージを破棄します。

■オンライン終了時

端末キューの使用有無に関係なく，論理端末が閉塞している場合にeesvstopコマンドを実行してオンラインを終了させたときは，滞留しているメッセージを破棄したあとにオンラインを終了させます。

2.6　時間監視

ここでは，MCPでの時間監視について説明します。

2.6.1　メッセージの送信完了待ち時間の監視（TCP/IPプロトコル使用時）

メッセージの送信完了とは，ソケットの送信バッファにメッセージを格納完了した時点を指します。ee_mcp_send関数でのメッセージ送信時に障害を検知した場合は，送信バッファの空き待ちによる送信バッファビジー状態であるため，バッファの空きを監視します。

送信完了待ち時間は，eemcpcn定義コマンドの-bオプションのsndsynctimオペランド（非同期一方送信メッセージの場合はsndtimオペランド）で指定します。

メッセージの送信完了待ちをする場合の処理の流れを次の図に示します。

図2‒13　メッセージの送信完了待ちをする場合の処理の流れ

説明

UAPは，MCPに対してメッセージの送信要求をします。

MCPは，UAPからのメッセージ送信要求に従い，相手システムにメッセージを送信します。

相手先システムがビジー状態でメッセージが送信できなかった場合，相手システムが送信ビジー状態であることがMCPに通知されます。

MCPは，相手先システムの送信ビジーによってメッセージを送信できなかった場合，送信完了待ちタイマを設定し，相手システムのビジー状態が解除されるのを待ちます。

ビジー状態が解除されると，MCPは再度メッセージを送信します。

2.6.2　後続メッセージの時間監視（TCP/IPプロトコル使用時）

入力セグメント判定UOCで後続メッセージありと判断した場合に，UOCでの設定内容に従って後続メッセージを監視します。監視時間はUOCで設定するため，定義での指定はできません。

2.7　TP1キャッシュ機能との連携

TP1キャッシュ機能を使用している場合，MCPをHAサーバ，およびCLサーバの両方に組み込むことができます。

HAサーバに組み込んだ場合のMCPの機能は，TP1キャッシュ機能を使用しない場合と同じです。ここでは，CLサーバに組み込んだ場合のMCPの機能について説明します。

なお，TP1キャッシュ機能については，次に示すマニュアルを参照してください。

TP1/Server Base Enterprise Option 使用の手引

TP1/EE/Extended Transaction Controller 使用の手引

2.7.1　CLサーバでのMCP

CLサーバに組み込んだ場合は，HAサーバにMCPを組み込んだ場合と比較して，次に示すときの動作が異なります。

コネクションの確立および論理端末の閉塞解除のタイミング

CLサーバでのメッセージ送受信時

それぞれの動作について説明します。

(1)　コネクションの確立および論理端末の閉塞解除

待機系で自動起動を設定したクライアント型コネクションは，オンライン開始前ではなく，実行系に切り替わった時点で確立されます。同様に，UDPプロトコルを使用している場合の論理端末では，実行系に切り替わった時点で閉塞が解除されます。

このとき，系切り替え前の実行系のコネクション，および論理端末の状態は引き継ぎません。

(2)　CLサーバでのメッセージ送受信

CLサーバで，メッセージを送受信する場合の動作について説明します。

(a)　メッセージ送信

ここでは，CLサーバでメッセージを送信する場合の動作について，非同期一方送信の場合と同期一方送信の場合に分けて説明します。

■非同期一方送信

CLサーバでのメッセージの送信では，送信するメッセージを待機系で保証するかどうかを選択できます。このとき，保証するメッセージを永続メッセージ，保証しないメッセージを非永続メッセージといいます。

非同期一方送信の場合，ee_mcp_send関数の発行時に，メッセージを永続，非永続のどちらにするか指定します。

永続メッセージの場合，メッセージが消失することはありませんが，メッセージを二重送信することがあります。一方，非永続メッセージの場合，メッセージが消失することはありますが，メッセージを二重送信することはありません。

永続メッセージを指定する場合は，永続トランザクション上で指定する必要があります。非永続トランザクション上で永続メッセージを指定すると，メッセージが消失することがあります。

CLサーバで，メッセージを非同期一方送信した場合の処理の流れを，次の図に示します。

図2‒14　CLサーバでメッセージを非同期一方送信した場合の処理の流れ

説明

実行系は，永続メッセージを送信します。

実行系は，待機系に対しCL同期済み通知メッセージを送信します。

待機系は，処理キューに仮登録された入力メッセージを削除します。

実行系は，非永続メッセージを送信します。

図中の1.から3.までの処理で実行系がダウンした場合，系切り替え後に永続メッセージを再度送信することがあります。

また，図中の3.から実行系での処理がリターンするまでに実行系がダウンした場合，送信メッセージが非永続メッセージであったときは，メッセージが消失します。

■同期一方送信

TP1キャッシュ機能を使用しない場合と同じです。

(b)　メッセージ受信

CLサーバでメッセージを受信した場合は，入力メッセージ編集UOCの実行後に待機系に受信メッセージを転送します。これをメッセージの永続化といいます。受信メッセージを永続化するかどうかは，eemcpfunc定義コマンドの-mオプションのrecvpermanenceオペランドで選択できます。

メッセージの転送処理については，マニュアル「TP1/EE/Extended Transaction Controller 使用の手引」を参照してください。

2.7.2　CL連携時の定義チェック

CL連携する場合（XTCサービス定義のcluster_modeオペランドにYを指定した場合）は，TP1/EEの開始時に実行系と待機系との間で，MCP構成定義オブジェクトファイルの整合性をチェックします。チェックでの不一致を避けるため，実行系と待機系で同じMCP構成定義オブジェクトファイルを使用することをお勧めします。

整合性のチェックを行う定義の一覧を次の表に示します。

表2‒5　整合性のチェックを行う定義の一覧

定義名

コマンド

オプション・オペランド

定義チェックの有無

バッファ定義

eemcpbuf

-e

emsgbuf

○

TCP/IP定義の開始

eemcptcpstart

-o

con_addr

○

論理端末アプリケーション定義

eemcplefunc

-u

ownlsg

○

ownlmc

○

ownlra

○

ownlcn

○

owntrn

○

rltrn

○

rltrnlevel

○

-e

errtrn1

○

errtrn2

○

errtrn3

○

errtrnr

○

errtrns

○

コネクション定義（TCP/IP）

eemcpcn

-c

−

○

-i

−

○

-b

bretry

○

bretrycnt

○

bretryint

○

concmptim

○

conmsg

○

sndsynctim

○

sndtim

○

sndrcvtim

○

sndcmptim

○

-w

srtimout

○

-y

mode

○

-r

ipaddr

○※

hostname

○※

portno

○※

-o

oipaddr

○

ohostname

○

oportno

○

-k

nodelay

○

keepalive

○

notrftime

○

-f

cnrelease

○

endrelease

○

-h

addrchk

○

chgconn

○

論理端末定義（TCP/IP）

eemcple

-l

−

○

-i

−

○

-v

−

○

TCP/IP定義の終了

eemcptcpend

−

−

×

UDP定義の開始

eemcpudpstart

−

−

×

論理端末定義（UDP）

eemcple

-l

−

○

-i

−

○

-v

−

○

-b

sndtim

○

-s

syssndsize

○

sysrcvsize

○

-r

ipaddr

○

hostname

○

portno

○

-o

oipaddr

○

ohostname

○

oportno

○

-k

reuseaddr

○

-m

multicast

○

hostgroupaddr

○

hostgroupname

○

ripaddr

○

rhostname

○

multicastttl

○

スレッドグループ定義

eemcpthdgrp

−

−

×

UDP定義の終了

eemcpudpend

−

−

×

アプリケーション定義

eemcpfunc

-u

ownlsg

○

ownlmc

○

ownlra

○

ownlcn

○

rltrn

○

rltrnlevel

○

-e

errtrns

○

-c

uocexc

○

-q

−

○

-m

msglen

○

recvpermanence

○

reconnectsend

○

トレース定義

eemcptrc

-f

fileno

○

filesz

○

-b

bufferno

○

buffersz

○

-x

entrysize

○

-s

sendresult

○

-m

filter

○

msgsize

○

（凡例）

○：定義チェックをします。

×：定義オブジェクトファイルに含まれないため，定義チェックの対象外です。

−：該当しません。

注※

クライアントの場合（eemcpcn定義コマンドの-yオプションのmodeオペランドにclientを指定）は，定義チェックしません。

注意事項

片方の系だけに定義を指定し，その指定した定義の値が省略値と同じ場合，システムとして同じ値が適用されるので定義チェックエラーとはなりません。

3　環境設定

この章では，MCPの環境設定とその手順について説明します。

3.1　環境設定の手順

MCPの環境設定の手順を次の図に示します。

図3‒1　MCPの環境設定の手順

ここでは，MCPを使用する場合に必要なインストール，およびシステム定義の設定の手順だけを説明します。ここで説明していない手順については，マニュアル「OpenTP1 運用と操作」，およびマニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

3.1.1　インストール

インストールの手順を次の図に示します。

図3‒2　インストールの手順

TP1/Server Baseのインストールについては，マニュアル「OpenTP1 運用と操作」を参照してください。

TP1/EEのインストールについては，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

MCPをインストールします。MCPのインストールについては，リリースノートを参照してください。

MCPをインストールすると，/opt/OpenTP1ディレクトリ下にファイルがコピーされます。/opt/OpenTP1ディレクトリの構成については，「付録A　インストールディレクトリとファイル」を参照してください。

3.1.2　システム定義の設定

システム定義の設定手順を次の図に示します。

図3‒3　システム定義の設定手順

TP1/Server Baseのユーザサービス定義に，MCP用の定義ファイル名称を定義します。

TP1/Server Baseシステムサービス定義の作成については，マニュアル「OpenTP1 システム定義」およびマニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

MCP組み込み定義，およびMCPで使用するメモリを定義します。

TP1/EEサービス定義の作成については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

コネクション，論理端末などを定義します。

MCP構成定義については，「4.　システム定義」を参照してください。

4　システム定義

この章では，MCPを使用するために必要なシステム定義，定義オブジェクト，および定義例の作成方法について説明します。

4.1　システム定義の概要

MCPのシステム定義をMCP構成定義と呼びます。ここでは，MCP構成定義の作成手順，定義の規則，およびMCP構成定義オブジェクトファイルの生成について説明します。

4.1.1　定義の作成手順

MCP構成定義を作成するには，オンライン開始前にオブジェクトファイルを生成しておく必要があります。このオブジェクトファイルをMCP構成定義オブジェクトファイルといいます。MCP構成定義オブジェクトファイルは，テキストエディタで作成したソースファイルを，MCPオブジェクト生成ユティリティで変換して生成します。

MCP構成定義オブジェクトファイルの作成手順とオンライン開始時の処理の流れを次の図に示します。

図4‒1　MCP構成定義オブジェクトファイルの作成手順とオンライン開始時の処理の流れ

4.1.2　定義の規則

定義の基本事項について説明します。

(1)　定義ファイルの格納場所

■MCP構成定義ファイル

MCP構成定義ファイルは，任意のディレクトリに作成してください。ファイル名は任意です。

■MCP構成定義オブジェクトファイル

MCP構成定義オブジェクトファイルは，環境変数DCCONFPATHまたはDCUAPCONFPATHに指定したディレクトリに格納してください。ファイル名は任意です。

なお，環境変数MCPDEFFILEには，MCP構成定義オブジェクトファイルの名称を指定する必要があります。

注意事項

DCCONFPATH，およびDCUAPCONFPATHの両方が定義されていて，両方のディレクトリにMCP構成定義オブジェクトファイルが格納されている場合は，DCCONFPATHに指定されたディレクトリ下のMCP構成定義オブジェクトファイルが有効になります。

(2)　記述形式

MCP構成定義ファイルの記述形式は，TP1/EEサービス定義ファイルの記述形式に従います。TP1/EEサービス定義ファイルの記述形式の詳細については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

(3)　記述順序

MCP構成定義では，次の図に示すように，プロトコル（TCP/IPおよびUDP）定義の開始・終了，コネクション定義，論理端末定義，およびスレッドグループ定義の記述順序が決まっています。

図4‒2　MCP構成定義の記述順序

論理端末アプリケーション定義（eemcplefunc）の記述順序には，次に示すルールがあります。

論理端末アプリケーション定義（eemcplefunc）は，TCP/IP定義の開始（eemcptcpstart）とTCP/IP定義の終了（eemcptcpend）の間，またはUDP定義の開始（eemcpudpstart）とUDP定義の終了（eemcpudpend）の間に定義します。コネクション定義（eemcpcn）と論理端末定義（eemcple）の間には定義できません。

論理端末アプリケーション定義（eemcplefunc）は，論理端末アプリケーション定義（eemcplefunc）以降の論理端末に対して有効になります。これは次の論理端末アプリケーション定義（eemcplefunc）が出てくるまで，またはTCP/IP定義の終了（eemcptcpend）もしくはUDP定義の終了（eemcpudpend）が出てくるまで有効です。

論理端末アプリケーション定義（eemcplefunc）の前に定義した論理端末（TCP/IP定義の開始（eemcptcpstart）またはUDP定義の開始（eemcpudpstart）後，論理端末アプリケーション定義（eemcplefunc）を定義するまでの論理端末）はアプリケーション定義（eemcpfunc）の値，またはTP1/EEサービス定義の値が有効になります。

4.1.3　MCP構成定義オブジェクトファイルの生成

MCP定義オブジェクト生成ユティリティを使用すると，MCP構成定義の定義ファイルの構文チェック，および定義オブジェクトファイルの作成ができます。ここでは，MCP定義オブジェクト生成ユティリティの起動コマンドについて説明します。

(1)　形式

eemcpgen -i 〔パス名〕入力ファイル名
         -o 〔パス名〕出力オブジェクトファイル名

(2)　機能

MCP構成定義の定義ファイルの構文をチェックして，定義オブジェクトファイルを作成します。なお，定義オブジェクトファイルを変更する場合は，必ずTP1/EEを終了させてください。TP1/EEの開始から再開始するまでの間に定義オブジェクトファイルを変更した場合，再開始ができなくなることがあります。再開始ができた場合でも動作の保証はできません。

(3)　オプション

●-i 〔パス名〕入力ファイル名　〜〈パス名〉

定義ソースが格納されているファイル名を指定します。

●-o 〔パス名〕出力オブジェクトファイル名　〜〈パス名〉

定義オブジェクトを格納するファイル名を指定します。

(4)　出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91460-I

ヘルプメッセージ

標準出力

KFSB91461-E

定義解析中に領域の確保に失敗しました。

標準エラー出力

KFSB91462-E

定義解析中にファイルのオープンに失敗しました。

標準エラー出力

KFSB91463-E

定義解析中に定義ファイルの読込みに失敗しました。

標準エラー出力

KFSB91464-E

定義形式が不正です。

標準エラー出力

KFSB91465-E

コマンド形式定義が不正です。

標準エラー出力

KFSB91466-E

定義間に不正があります。

標準エラー出力

KFSB91467-E

省略できない定義が未定義です。

標準エラー出力

KFSB91468-I

定義オブジェクトファイルを出力しました。

標準出力

KFSB91469-E

ファイルの書き込みに失敗しました。

標準エラー出力

KFSB91470-Q

定義オブジェクトファイルの上書き確認。

標準出力

KFSB91472-E

オブジェクトファイルが不正です。

標準エラー出力

(5)　注意事項

MCPではMCP定義オブジェクト生成ユティリティ（eemcpgenコマンド）を使用して，MCP構成定義ファイルの構文をチェックします。eedefchkコマンドでは，MCPとTP1/EEの定義の関連はチェックしません。

CL連携する場合（XTCサービス定義のcluster_modeオペランドにYを指定した場合）は，TP1/EEの開始時に実行系と待機系との間でMCP構成定義オブジェクトファイルの整合性をチェックします。詳細については，「2.7.2　CL連携時の定義チェック」を参照してください。

4.2　MCP構成定義の一覧

MCP構成定義の一覧を次の表に示します。

表4‒1　MCP構成定義の一覧

定義名

コマンド

オプション・オペランド

定義内容

指定値((値範囲))《省略時解釈値》

バッファ定義

eemcpbuf

-e

emsgbuf

入力メッセージ編集UOCおよび出力メッセージ編集UOCで使用するメッセージ編集用バッファサイズ

符号なし整数

（単位：バイト）

((0〜2147483647))

《0》

TCP/IP定義の開始

eemcptcpstart

-o

con_addr

クライアント型コネクションの場合に，相手システムを動的に指定してコネクションを確立するかどうか

dynamic｜《static》

コネクション定義（TCP/IP）

eemcpcn

-c

−

コネクションID

1〜8文字の識別子

-i

−

オンライン開始時および再開始時のコネクションの確立方法

auto｜《manual》

-b

bretry

コネクション確立時に障害が発生した場合にコネクション確立再試行をするかどうか

《yes》｜no

bretrycnt

コネクション確立時に障害が発生した場合のコネクション確立再試行の回数

符号なし整数

（単位：回）

((0〜65535))

《0》

bretryint

コネクション確立時に障害が発生した場合のコネクション確立再試行の間隔

符号なし整数

（単位：秒）

((0〜2550))

《60》

concmptim

コネクション確立時の監視時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

conmsg

コネクション確立時または解放時，メッセージログに確立または解放のメッセージを出力するかどうか

《yes》｜no

sndsynctim

同期一方送信時のメッセージ送信完了待ち時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

sndtim

非同期一方送信時のメッセージ送信完了待ち時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

sndrcvtim

同期型送受信時のメッセージ送受信完了待ち時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

sndcmptim

同期型送受信時のメッセージ送信完了監視時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

-w

srtimout

同期型メッセージ送受信関数がタイムアウトした場合に，コネクションの解放を抑止するかどうかを指定

yes｜《no》

-y

mode

コネクション確立モード

client｜server

-r

ipaddr※

自システムのホストのIPアドレス

符号なし整数

((0〜255))

（nnn.nnn.nnn.nnn）

hostname※

自システムのホスト名

1〜255文字のホスト名

portno

メッセージ送受信に使用する自システムのホストのポート番号

符号なし整数

((1024〜65535))

-o

oipaddr

相手システムのホストのIPアドレス

符号なし整数

((0〜255))

（nnn.nnn.nnn.nnn）

ohostname

相手システムのホスト名

1〜255文字のホスト名

oportno

相手システムのホストのポート番号

符号なし整数

((1〜65535))｜《free》

-k

nodelay

ソケットオプション「TCP_NODELAY」を使用するかどうか

yes｜《no》

keepalive

ソケットオプション「SO_KEEPALIVE」を使用するかどうか

yes｜《no》

notrftime

無通信監視時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

-f

cnrelease

コネクションの解放形態

《fin》｜rst

endrelease

終了時のコネクションの解放形態

《fin》｜rst

-h

addrchk

コネクション確立要求を受け付けた場合，相手アドレス情報をチェックするかどうか

《yes》｜no

chgconn

コネクションの確立要求を受け付けた場合，割り当てできる未確立コネクションがないときの動作

replace｜《keep》

論理端末定義（TCP/IP）

eemcple

-l

−

論理端末名

1〜8文字の識別子

-i

−

論理端末の閉塞解除方法

《auto》｜manual

-v

−

入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名

1〜31文字の識別子

TCP/IP定義の終了

eemcptcpend

−

−

TCP/IP定義の終了

−

UDP定義の開始

eemcpudpstart

−

−

UDP定義の開始

−

論理端末定義（UDP）

eemcple

-l

−

論理端末名

1〜8文字の識別子

-i

−

オンライン開始時および再開始時に論理端末を自動的に閉塞解除するかどうか

auto｜《manual》

-v

−

入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名

1〜31文字の識別子

-b

sndtim

メッセージ送信完了待ち時間

符号なし整数

（単位：秒）

((0〜65535))

《0》

-s

syssndsize

システムのメッセージ送信バッファ長

符号なし整数

（単位：バイト）

((1〜2147483647))

sysrcvsize

システムのメッセージ受信バッファ長

符号なし整数

（単位：バイト）

((1〜2147483647))

-r

ipaddr※

自システムがホットスタンバイ構成の場合，または複数のLANアダプタを持つ場合に，メッセージの送受信に使用するLANアダプタのIPアドレス

符号なし整数

((0〜255))

（nnn.nnn.nnn.nnn）

hostname※

自システムがホットスタンバイ構成の場合，または複数のLANアダプタを持つ場合に，メッセージの送受信に使用するLANアダプタのホスト名

1〜255文字のホスト名

portno

自システムのホストのポート番号

符号なし整数

((1024〜65535))

-o

oipaddr

相手システムのホストのIPアドレス

符号なし整数

((0〜255))

(nnn.nnn.nnn.nnn)

ohostname

相手システムのホスト名

1〜255文字のホスト名

oportno

相手システムのホストのポート番号

符号なし整数

((1〜65535))

-k

reuseaddr

ソケットオプション「SO_REUSEADDR」を使用するかどうか

yes｜《no》

-m

multicast

マルチキャストを使用したメッセージの送受信をするかどうか

yes｜《no》

hostgroupaddr

マルチキャストメッセージを受信する場合，参加するホストグループのIPアドレス

符号なし整数

((0〜255))

（nnn.nnn.nnn.nnn）

hostgroupname

マルチキャストメッセージを受信する場合，参加するホストグループのホスト名

1〜255文字のホスト名

ripaddr※

自システムがホットスタンバイ構成の場合，または複数のLANアダプタを持つ場合，マルチキャストメッセージの受信に使用するLANアダプタのIPアドレス

符号なし整数

((0〜255))

（nnn.nnn.nnn.nnn）

rhostname※

自システムがホットスタンバイ構成の場合，または複数のLANアダプタを持つ場合，マルチキャストメッセージの受信に使用するLANアダプタのホスト名

1〜255文字のホスト名

multicastttl

マルチキャストメッセージ送信時のマルチキャストパケットの生存期間（TTL）

符号なし整数

((0〜255))

論理端末アプリケーション定義

eemcplefunc

-u

ownlsg

入力セグメント判定UOCのエントリポインタ名

1〜31文字の識別子

ownlmc

入力メッセージ編集UOCのエントリポインタ名

1〜31文字の識別子

ownlra

出力メッセージ編集UOCのエントリポインタ名

1〜31文字の識別子

owntrn

トランザクションレベル名判定UOCのエントリポインタ名

1〜31文字の識別子

rltrn

MCP後処理トランザクション起動サービス名

1〜31文字の識別子

rltrnlevel

MCP後処理トランザクションのトランザクションレベル名

1〜31文字の識別子

ownlcn

コネクション確立UOCのエントリポインタ名

1〜31文字の識別子

ownojed

OJ編集UOCエントリポインタ名

1〜31文字の識別子

-e

errtrn1

ERRTRN1のエントリポインタ名

1〜31文字の識別子

errtrn2

ERRTRN2のエントリポインタ名

1〜31文字の識別子

errtrn3

ERRTRN3のエントリポインタ名

1〜31文字の識別子

errtrnr

ERRTRNRのエントリポインタ名

1〜31文字の識別子

errtrns

ERRTRNSのエントリポインタ名

1〜31文字の識別子

スレッドグループ定義

eemcpthdgrp

−

−

スレッドグループ定義

−

UDP定義の終了

eemcpudpend

−

−

UDP定義の終了

−

アプリケーション定義

eemcpfunc

-u

ownlsg

入力セグメント判定UOCのエントリポインタ名

1〜31文字の識別子

ownlmc

入力メッセージ編集UOCのエントリポインタ名

1〜31文字の識別子

ownlra

出力メッセージ編集UOCのエントリポインタ名

1〜31文字の識別子

rltrn

MCP後処理トランザクションを起動するサービス名

1〜31文字の識別子

rltrnlevel

MCP後処理トランザクションのトランザクションレベル名

1〜31文字の識別子

ownlcn

コネクション確立UOCのエントリポインタ名

1〜31文字の識別子

-e

errtrns

メッセージ送信時に通信障害が発生した場合，送信障害トランザクションを起動するかどうか

《yes》｜no

-c

uocexc

入力メッセージ編集UOCおよび出力メッセージ編集UOCを端末単位にシリアライズするかどうか

yes｜《no》

-q

−

端末キュー機能を使用して，論理端末単位のイベントをシリアルに処理するかどうか

《serial》｜parallel

-m

msglen

送受信メッセージの最大サイズを拡張するかどうか

《normal》｜extend

recvpermanence

受信メッセージを永続化するかどうか

yes｜《no》

reconnectsend

メッセージ受信時のコネクション以外の場合に，応答メッセージを送信するかどうか

yes｜no

fsp_use=Nの場合：《yes》

fsp_use=Yの場合：《no》

-o

outputmessage

OJの取得先ID

符号なし整数

((0〜255))《0》

outputfunction

OJの機能拡張レベル

16進数

《00000000》｜00000001

トレース定義

eemcptrc

-f

fileno

MCPトレースのファイル数

符号なし整数

((3〜100))

《3》

filesz

MCPトレースの最大ファイルサイズ

符号なし整数

（単位：キロバイト）

((400〜4000000))

《40000》

-b

bufferno

MCPトレースファイルの出力用バッファ数

符号なし整数

((3〜200))

《3》

buffersz

MCPトレースファイルの出力用最大バッファサイズ

符号なし整数

（単位：キロバイト）

((41〜20000))

《200》

-x

entrysize

スレッドごとのMCPトレースのバッファサイズ

符号なし整数

（単位：キロバイト）

((40〜10000))

《80》

-s

sendresult

送信結果トレースを取得するかどうか

yes｜《no》

-m

filter

MCPトレース情報の取得量の変更

16進数

《00000000》｜00000010

msgsize

MCPトレース情報の取得最大サイズ

符号なし整数

（単位：バイト）

((0〜32000))

《128》

（凡例）

−：該当しません。

注※

CL構成では，IPアドレスまたはホスト名と，ポート番号を実行系と待機系で同じ値にする必要があります。そのため，IPアドレスまたはホスト名には，必ずエイリアスIPアドレスを指定してください。

なお，IPアドレスの代わりにホスト名を指定する場合は，ホスト名とエイリアスIPアドレスの対応づけを/etc/hostsに指定するなどの対応が必要です。エイリアスIPアドレスの指定方法については，マニュアル「高信頼化システム監視機能 HAモニタ Linux(R)編」（OSがLinuxの場合），または「高信頼化システム監視機能 HAモニタ AIX(R)編」（OSがAIXの場合）を参照してください。

4.3　MCP構成定義の詳細

ここでは，MCP構成定義の詳細について説明します。

eemcpbuf（バッファ定義）

機能

メッセージ編集用バッファに関する環境を定義します。

コマンドの形式

〔eemcpbuf 〔-e "〔emsgbuf=編集用バッファサイズ〕"〕〕

オプションの説明

●-e

（オペランド）

emsgbuf=編集用バッファサイズ

〜〈符号なし整数〉((0〜2147483647))《0》（単位：バイト）

入力メッセージ編集UOCおよび出力メッセージ編集UOCで使用するメッセージ編集用バッファサイズを指定します。

入力メッセージ編集UOCまたは出力メッセージ編集UOCで使用するメッセージ編集用バッファサイズのうち，どちらか大きい方を指定してください。

eemcptcpstart（TCP/IP定義の開始）

機能

TCP/IPプロトコルを使用した通信に関する定義の開始を示します。

コマンドの形式

〔eemcptcpstart〔-o "〔con_addr=dynamic｜static"〕〕

オプションの説明

●-o

（オペランド）

con_addr=dynamic｜static

〜《static》

クライアント型コネクション（MCP構成定義（eemcpcn -y）のmodeオペランドでclientを指定）の場合，相手システムを動的に指定しコネクションを確立するかどうかを指定します。

dynamic

相手システムを動的に指定しコネクションを確立します。

クライアント型コネクションのeemcpcn定義の-oオプションを省略可能です。ただし-oオプションを省略したeemcpcn定義のコネクションIDに対し，eemcpactcnコマンド，ee_mcp_actcn（COBOL言語はCBLEEMCP('ACTCN ')）APIを実行するとエラーになります。

static

相手システムを静的に指定しコネクションを確立（定義で指定した相手システムに対しコネクションを確立）します。クライアント型コネクションのeemcpcn定義の-oオプションを省略できません。

注意事項

この定義は，一度だけ定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcpcn（コネクション定義（TCP/IP））

機能

TCP/IPプロトコルを使用して通信する場合のコネクションに関する環境を定義します。

コマンドの形式

｛｛〔eemcpcn  -c コネクションID
             〔-i auto｜manual〕
             〔-b "〔bretry= yes｜no〕
                   〔bretrycnt=コネクション確立障害時の確立再試行回数〕
                   〔bretryint=コネクション確立障害時の確立再試行間隔〕
                   〔concmptim=コネクション確立時の監視時間〕
                   〔conmsg= yes｜no〕
                   〔sndsynctim=同期一方送信時のメッセージ送信完了待ち時間〕
                   〔sndtim=非同期一方送信時のメッセージ送信完了待ち時間〕
                   〔sndrcvtim=同期型送受信時のメッセージ送受信完了待ち時間〕
                   〔sndcmptim=同期型送受信時のメッセージ送信完了監視時間〕"〕
             〔-w "〔srtimout=yes｜no〕"〕
               -y "mode=client｜server"
             〔-r "〔ipaddr=自システムのホストのIPアドレス〕
                   〔hostname=自システムのホスト名〕
                   〔portno=自システムのポート番号〕"〕
             〔-o "〔oipaddr=相手システムのホストのIPアドレス〕
                   〔ohostname=相手システムのホスト名〕
                   〔oportno=相手システムのホストのポート番号｜free〕"〕
             〔-k "〔nodelay= yes｜no〕
                   〔keepalive= yes|no〕
                   〔notrftime=無通信監視時間〕"〕
             〔-f "〔cnrelease= fin｜rst〕
                   〔endrelease= fin｜rst〕"〕
             〔-h "〔addrchk= yes｜no〕
                   〔chgconn= replace｜keep〕"〕〕｝｝

オプションの説明

●-c コネクションID

　　〜〈1〜8文字の識別子〉

OpenTP1システム内で，一意となるコネクションIDを指定します。

●-i auto｜manual

　　〜《manual》

オンライン開始時および再開始時のコネクションの確立方法を指定します。

auto

オンライン開始前にコネクションを自動確立します。

manual

eemcpactcnコマンドの実行，またはee_mcp_actcn関数の発行によってコネクションを手動確立します

●-b

（オペランド）

bretry=yes｜no

〜《yes》

コネクション確立時に障害が発生した場合，コネクションの確立再試行をするかどうかを指定します。

yes

コネクションの確立再試行をします。

no

コネクションの確立再試行をしません。

bretrycnt=コネクション確立障害時の確立再試行回数

〜〈符号なし整数〉((0〜65535))《0》（単位：回）

コネクションの確立再試行をする場合の確立再試行回数を指定します。bretryオペランドでnoを指定した場合，このオペランドの指定値は無視されます。

bretryオペランドでyesを指定して，このオペランドに0を指定した場合は，無限にコネクションの確立再試行をします。

bretryint=コネクション確立障害時の確立再試行間隔

〜〈符号なし整数〉((0〜2550))《60》（単位：秒）

コネクションの確立再試行をする場合の確立再試行間隔を指定します。bretryオペランドでnoを指定した場合，このオペランドの指定値は無視されます。確立再試行間隔は，最大で1秒早く施行される場合があります。

concmptim=コネクション確立時の監視時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

コネクション確立時の監視時間を指定します。0を指定した場合は，時間監視をしません。コネクション確立時の監視時間がタイムアウトした場合，コネクション確立を再試行できる場合（bretryオペランドにyesを指定），コネクション確立障害時の確立再試行間隔のあとに，コネクション確立を再試行します。コネクション確立を再試行できない場合（bretryオペランドにnoを指定），MCP後処理トランザクションを起動します。監視時間は最大で1秒早くタイムアウトする場合があります。

conmsg=yes｜no

〜《yes》

コネクション確立時または解放時に，メッセージログにコネクションの確立または解放のメッセージを出力するかどうかを指定します。

yes

コネクションの確立時または解放時にメッセージを出力します。

no

コネクションの確立時または解放時にメッセージを出力しません。

このオペランドにnoを指定した場合でも，リソース不足などでMCP後処理トランザクションの起動に失敗したときはメッセージを出力します。

sndsynctim=同期一方送信時のメッセージ送信完了待ち時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

ee_mcp_sendsync関数を呼び出してから終了するまでの最大時間を指定します（ソケット空き待ち時間，および送信開始から自システムのTCP/IPの送信バッファに書き込みが完了するまでの時間の合計の最大時間を指定します）。

0を指定した場合は，無限に送信完了を待ちます。

sndtim=非同期一方送信時のメッセージ送信完了待ち時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

ee_mcp_send関数を呼び出したトランザクション完了後の送信開始から終了するまでの最大時間を指定します（自システムのTCP/IPの送信バッファに書き込みが完了するまでの最大時間を指定します）。

0を指定した場合は，無限に送信完了待ちをします。

sndrcvtim=同期型送受信時のメッセージ送受信完了待ち時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

ee_mcp_sendrecv関数を呼び出してから終了するまでの最大時間を設定します。0を指定した場合，無限に送信完了待ちをします。

sndcmptim=同期型送受信時のメッセージ送信完了監視時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

ee_mcp_sendrecv関数を呼び出してからメッセージ送信完了（ソケット空き待ち時間と，送信開始から自システムのTCP/IPの送信バッファへの書き込み完了までの時間の合計）までの監視時間を指定します。0を指定した場合，無限に送信完了待ちをします。

このオペランドには，次の値より小さな値を指定してください。次の値より大きい値を指定した場合，値の小さい方が有効になります。

eemcpcnコマンドの-bオプションのsndrcvtimオペランドで指定する同期送受信時のメッセージ送信完了待ち時間

同期型メッセージの送受信関数の発行時（ee_mcp_sendrecv関数またはCBLEEMCP('SENDRECV')）に指定する最大時間（ee_mcp_sendrecv関数の場合，watchtimeに指定する最大時間。CBLEEMCP('SENDRECV')の場合，データ名M5に指定する最大時間）

図4‒3　sndrcvtimとsndcmptimによる対象監視時間

●-w

（オペランド）

srtimout=yes｜no

〜《no》

同期型メッセージの送受信関数で次の監視時間がタイムアウトした場合に，コネクションの解放を抑止するかどうかを指定します。

eemcpcnコマンドの-bオプションのsndrcvtimオペランドで指定する同期送受信時のメッセージ送信完了待ち時間

同期型メッセージの送受信関数の発行時（ee_mcp_sendrecv関数またはCBLEEMCP('SENDRECV')）に指定する最大時間

yes

同期型メッセージの送受信関数がタイムアウトした場合，コネクションを解放しません。

no

同期型メッセージの送受信関数がタイムアウトした場合，コネクションを解放します。

●-y

（オペランド）

mode=client｜server

自システムのコネクション確立モードを指定します。

client

クライアントとして，コネクションの確立要求をします。

server

サーバとして，コネクションの確立要求を受けます。

●-r

自システムのアドレス情報を設定します。

クライアント型コネクション（MCP構成定義（eemcpcn -y）のmodeオペランドでclientを指定）の定義間では，-rオプションに同一のIPアドレスまたはホスト名/ポート番号の組み合わせを指定できます。ただし，クライアント型コネクションとサーバ型コネクション（MCP構成定義（eemcpcn -y）のmodeオペランドでserverを指定）の定義間では，-rオプションに同一のIPアドレスまたはホスト名/ポート番号の組み合わせを指定できません。

また，クライアント型コネクションの定義間では，次の条件を満たす場合も，-rオプションに同一のIPアドレスまたはホスト名と，ポート番号の組み合わせを指定できません。

-oオプションに同一のIPアドレスまたはホスト名と，ポート番号の組み合わせを指定する場合

CL構成では，IPアドレスまたはホスト名と，ポート番号を実行系と待機系で同じ値にする必要があります。そのため，IPアドレスまたはホスト名には，必ずエイリアスIPアドレスを指定してください。

なお，IPアドレスの代わりにホスト名を指定する場合は，ホスト名とエイリアスIPアドレスの対応づけを/etc/hostsに指定するなどの対応が必要です。エイリアスIPアドレスの指定方法については，マニュアル「高信頼化システム監視機能 HAモニタ Linux(R)編」（OSがLinuxの場合），または「高信頼化システム監視機能 HAモニタ AIX(R)編」（OSがAIXの場合）を参照してください。

（オペランド）

ipaddr=自システムのホストのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

自システムのホストのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0および255.255.255.255は指定できません。

このオペランドを指定した場合，指定したアドレスをバインドします。

ipaddrオペランドまたはhostnameオペランドのどちらか一方を指定してください。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。

hostname=自システムのホスト名

〜〈1〜255文字のホスト名〉

自システムのホスト名を指定します。

自システムがサーバで，TP1/EE開始時にIPアドレスを取得できなかった場合，開始処理を中断します。

ipaddrオペランドを指定した場合，このオペランドの指定値は無視されます。ipaddrオペランドまたはhostnameオペランドのどちらか一方を指定してください。

このオペランドを指定していて，かつipaddrオペランドの指定を省略した場合，このオペランドで指定したホスト名のアドレスをバインドします。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。

portno=自システムのポート番号

〜〈符号なし整数〉((1024〜65535))

メッセージ送受信に使用する，自システムのポート番号を指定します。

サーバ型コネクション（-yオプションのmodeオペランドにserverを指定）の場合は必ず指定してください。

クライアント型コネクション（-yオプションのmodeオペランドにclientを指定）の場合は省略できます。省略した場合，自システムのポート番号はコネクション確立時にOSによって割り振られます。

ポート番号を指定する場合は，ほかのアプリケーションとの重複を避けるため，OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）は使用しないでください。OSが任意に割り当てるポート番号は，OSの種別やバージョンによって異なります。詳細については，ご使用のOSのマニュアルを参照してください。

また，-rオプションのportnoオペランドで同じサーバ型コネクションを複数指定する場合，次に示すコネクションを混在させないでください。

-rオプションのipaddrオペランドおよびhostnameオペランドの指定を省略したコネクション

-rオプションのipaddrオペランドまたはhostnameオペランドを指定したコネクション

●-o

相手システムのアドレス情報を設定します。

-oオプションを省略または指定した場合のeemcpgen結果，コネクション確立方法ごとの確立可否を次の表に示します。

表4‒2　クライアント型コネクションでのeemcpcn -oオプション指定時/省略時

項番

指定条件（定義）

eemcpgen結果

コネクション確立方法

eemcptcpstart -o con_addr

eemcpcn -o

eemcpcn -i

eemcpactcntoコマンドまたはee_mcp_actcn_to（COBOL言語はBLEEMCP('ACTCNTO ')）API

eemcpactcnコマンドまたはee_mcp_actcn（COBOL言語はCBLEEMCP('ACTCN ')）API

dynamic

static

manual

auto

1

○

−

省略

○

−

OK

使用可

使用不可

2

○

−

省略

−

○

NG

−

−

3

○

−

指定

○

−

OK

使用可

使用可

4

○

−

指定

−

○

OK

使用可

使用可

5

−

○

省略

−

−

NG

−

−

6

−

○

指定

○

−

OK

使用可

使用可

7

−

○

指定

−

○

OK

使用可

使用可

（凡例）

○：指定します（省略値が同値の場合も含みます）。

−：該当しません。

OK：eemcpgenが正常終了します。

NG：eemcpgenに失敗します（不正な定義の指定方法です）。

使用可：コマンド・APIを使用可能です。

使用不可：コマンド・APIを実行するとエラーになります。

表4‒3　サーバ型コネクションでのeemcpcn -oオプション指定時/省略時

項番

指定条件（定義）

eemcpgen結果

eemcpcn -h addrchk

eemcpcn -o

yes

no

1

○

−

省略

NG

2

○

−

指定

OK

3

−

○

省略

OK

4

−

○

指定

OK

（凡例）

○：指定します（省略値が同値の場合も含みます）。

−：該当しません。

OK：eemcpgenが正常終了します。

NG：eemcpgenに失敗します（不正な定義の指定方法です）。

（オペランド）

oipaddr=相手システムのホストのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

相手システムのホストのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0と255.255.255.255は指定できません。

ohostname=相手システムのホスト名

〜〈1〜255文字のホスト名〉

相手システムのホスト名を指定します。

-oオプションを指定する場合は，oipaddrオペランドかohostnameオペランドのどちらか一方を指定してください。oipaddrオペランドを指定した場合は，このオペランドの指定値は無視されます。

oportno=相手システムのホストのポート番号｜free

〜〈符号なし整数〉((1〜65535))《free》

相手システムのホストのポート番号を指定します。freeを指定できるのは，サーバ型コネクション（-yオプションのmodeオペランドでserverを指定）の場合だけです。

freeを指定した場合，oipaddrオペランドまたはohostnameオペランドで指定した相手システムと一致する，任意のポート番号からのコネクション確立要求を受け入れます。このとき，一つの相手システムから複数のコネクションを受け入れるためには，受け入れるコネクション数の分だけコネクション定義を指定する必要があります。それぞれのコネクション定義には，同一のoipaddrオペランドまたはohostnameオペランドを指定してください。指定したコネクション定義数以上のコネクション確立要求を受けた場合，要求を拒否します。ただし，freeを指定し，-rオプションのipaddrオペランドおよびportnoオペランドの指定値が同じコネクションに対しては，コネクションリプレース機能を使用できます。コネクションリプレース機能については，「2.1.4　コネクションリプレース機能」を参照してください。

●-k

（オペランド）

nodelay=yes｜no

〜《no》

TCP/IPが提供するソケットオプション「TCP_NODELAY」を使用するかどうかを指定します。

TCP_NODELAYを使用することで，送信済みデータの応答待ちの状態でも，遅延させることなくデータ送信ができるようになりますが，ネットワークの負荷は高くなります。そのため，この機能の必要性を十分に検討した上で使用してください。

yes

TCP_NODELAYを使用します。

no

TCP_NODELAYを使用しません。

keepalive=yes｜no

〜《no》

TCP/IPが提供するソケットオプション「SO_KEEPALIVE」を使用するかどうかを指定します。

SO_KEEPALIVEを使用することで，コネクションがメッセージ送受信中でない場合に，相手システムに対して一定間隔でパケットを送信し，その間に応答がなければ障害と見なしてコネクションを切断することができます。これをキープアライブといいます。

ただし，キープアライブを行うとネットワークの負荷を高める場合があります。そのため，この機能の必要性を十分に検討した上で使用してください。

yes

キープアライブを使用します。

no

キープアライブを使用しません。

notrftime=無通信監視時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

コネクションの無通信状態を監視するタイマ値を設定します。0を指定した場合は，時間監視をしません。監視時間は最大で1秒早くタイムアウトする場合があります。

●-f

（オペランド）

cnrelease=fin｜rst

〜《fin》

コネクションの解放形態を指定します。

fin

FINパケットを送信してコネクションを解放します。

rst

RSTパケットを送信してコネクションを強制的に解放します。

-fオプションを指定していない場合に，eemcpdctcnコマンドを実行するときは，FINパケットを送信してコネクションを解放します。TP1/EEの正常終了，計画停止A，または計画停止Bの場合のコネクション解放形態は，endreleaseオペランドで指定してください。

MCPはOSが提供するTCP/IPのソケットインタフェース（SO_LINGER）を利用しています。そのため，このオペランドにfinを指定しても，ネットワーク上でのすれ違いなどによって，このオペランドの指定値とは関係なくRSTパケットを送信する場合があります。

endrelease=fin｜rst

〜《fin》

TP1/EEの正常終了，計画停止A，または計画停止Bの場合のコネクションの解放形態を指定します。ただし，CL構成の場合はcnreleaseオペランドで指定したコネクション解放形態でコネクションを解放します。

fin

FINパケットを送信してコネクションを解放します。

rst

RSTパケットを送信してコネクションを強制的に解放します。

MCPはOSが提供するTCP/IPのソケットインタフェース（SO_LINGER）を利用しています。そのため，このオペランドにfinを指定しても，ネットワーク上でのすれ違いなどによって，このオペランドの指定値とは関係なくRSTパケットを送信する場合があります。

●-h

（オペランド）

addrchk=yes｜no

〜《yes》

コネクション確立要求の受信時に相手アドレス情報をチェックするかどうかを指定します。

一つのMCP構成定義内では，すべてのサーバ型コネクションで，このオペランドに同じ値を指定する必要があります。

クライアント型コネクションの場合，このオペランドを指定する必要はありません。指定しても無視されます。

yes

コネクション確立要求受信時に相手のアドレス情報をチェックします。コネクション定義で指定された相手のアドレスと確立要求発行元のアドレスが一致する場合は，確立要求を受け入れます。一致しない場合は，確立要求を拒否します。ただし，相手のアドレス情報をチェックするためには，-oオプションのoipaddrオペランド，ohostnameオペランドおよびoportnoオペランドで相手システムのアドレス情報を定義しておく必要があります。

no

コネクション確立要求受信時に相手のアドレス情報をチェックしません。未確立コネクションがない場合は，確立要求を拒否します。したがって，相手システムのアドレス情報を定義する必要はありません。定義した場合は，無視されます。ただし，noを指定した場合でも，-rオプションのipaddrオペランドおよびportnoオペランドの指定値が同じコネクションに対しては，コネクションリプレース機能を使用できます。コネクションリプレース機能については，「2.1.4　コネクションリプレース機能」を参照してください。

chgconn=replace｜keep

〜《keep》

相手システムからコネクションの確立要求を受け付けた場合に，割り当てできる未確立コネクションがないときの動作を指定します。

replace

コネクションリプレース機能を使用します。相手システムと確立状態にある最も古いコネクションを切断して，新たなコネクション確立要求を受け付けます。

keep

コネクションリプレース機能を使用しません。相手システムからの確立要求を拒否します。

一つのMCP構成定義内で，同じ自システムのポート番号（-rオプションのportnoオペランドで指定）を持つすべてのサーバ型コネクション（-yオプションのmodeオペランドでserverを指定）で，このオペランドに同じ値を指定する必要があります。

クライアント型コネクション（-yオプションのmodeオペランドでclientを指定）および，相手ポート番号が固定（-oオプションのoportnoオペランドに1〜65535を指定）のサーバ型コネクションにこのオペランドを指定した場合，このオペランドの指定値は無視されます。なお，コネクションリプレース機能については，「2.1.4　コネクションリプレース機能」を参照してください。

eemcple（論理端末定義（TCP/IP））

機能

TCP/IPプロトコルを使用して通信する場合の論理端末に関する環境を定義します。

コマンドの形式

｛｛〔eemcple -l 論理端末名
            〔-i auto｜manual〕
            〔-v 入力メッセージを受信した場合に起動する
                 エントリポインタ名に対応したサービス名〕〕｝｝

オプションの説明

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

OpenTP1システム内で，一意となる論理端末名を指定します。

●-i auto｜manual

　　〜《auto》

論理端末の閉塞解除方法を指定します。

auto

コネクション確立時に自動的に論理端末が閉塞解除されます。

manual

eemcpactleコマンドの実行，またはee_mcp_actle関数の発行によって，手動で論理端末を閉塞解除します。

●-v 入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名

　　〜〈1〜31文字の識別子〉

入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名を指定します。TP1/EEサービス定義で定義したサービス名を指定してください。このオプションを省略した場合は，入力メッセージ編集UOCで指定してください。

このオプションを省略した論理端末定義が一つでもある場合，入力メッセージ編集UOC（eemcpfunc -u ownlmc）を指定しないとeemcpgenコマンドが失敗します。

注意事項

この定義は，必ずeemcpcn定義コマンドの次に定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcptcpend（TCP/IP定義の終了）

機能

TCP/IPプロトコルを使用した通信に関する定義の終了を示します。

コマンドの形式

〔eemcptcpend〕

注意事項

この定義はeemcptcpstart定義コマンドと対で定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcpudpstart（UDP定義の開始）

機能

UDPプロトコルを使用した通信に関する定義の開始を示します。

コマンドの形式

〔eemcpudpstart〕

注意事項

この定義は一度だけ定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcple（論理端末定義（UDP））

機能

UDPプロトコルを使用して通信する場合の論理端末に関する環境を定義します。

コマンドの形式

｛｛〔eemcple -l 論理端末名
            〔-i auto｜manual〕
            〔-v 入力メッセージを受信した場合に起動する
                 エントリポインタ名に対応したサービス名〕
            〔-b "〔sndtim=メッセージ送信完了待ち時間〕"〕
            〔-s "〔syssndsize=システムのメッセージ送信バッファ長〕
                  〔sysrcvsize=システムのメッセージ受信バッファ長〕"〕
              -r "〔ipaddr=メッセージの送受信に使用するLANアダプタの
                           IPアドレス〕
                  〔hostname=メッセージの送受信に使用するLANアダプタの
                            ホスト名〕
                   portno=自システムのポート番号"
            〔-o "〔oipaddr=相手システムのホストのIPアドレス〕
                  〔ohostname=相手システムのホスト名〕
                    oportno=相手システムのホストのポート番号"〕
            〔-k "〔reuseaddr= yes｜no〕"〕
            〔-m "〔multicast= yes｜no〕
                  〔hostgroupaddr=マルチキャストメッセージの受信に使用する
                                  ホストグループのIPアドレス〕
                  〔hostgroupname=マルチキャストメッセージの受信に使用する
                                  ホストグループのホスト名〕
                  〔ripaddr=マルチキャストメッセージの受信に使用する
                            LANアダプタのIPアドレス〕
                  〔rhostname=マルチキャストメッセージの受信に使用する
                              LANアダプタのホスト名〕
                  〔multicastttl=送信するマルチキャストパケットの
                                 生存期間（TTL）〕"〕〕｝｝

オプションの説明

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

OpenTP1システム内で，一意となる論理端末名を指定します。

●-i auto｜manual

　　〜《manual》

オンライン開始時，および再開始時の論理端末の閉塞解除方法を指定します。

auto

オンライン開始時および再開始時に自動的に論理端末の閉塞が解除されます。

manual

eemcpactleコマンドの実行，またはee_mcp_actle関数の発行によって，手動で論理端末の閉塞を解除します。

●-v 入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名

　　〜〈1〜31文字の識別子〉

入力メッセージを受信した場合に起動するエントリポインタ名に対応したサービス名を指定します。TP1/EEサービス定義で定義したサービス名を指定してください。このオプションを省略した場合は，入力メッセージ編集UOCで指定してください。

●-b

（オペランド）

sndtim=メッセージ送信完了待ち時間

〜〈符号なし整数〉((0〜65535))《0》（単位：秒）

同一の論理端末に複数のUAP（スレッド）から同時に送信要求をする場合の送信完了待ち時間の最大時間を指定します。0を指定した場合は，無限に送信完了を待ちます。

●-s

（オペランド）

syssndsize=システムのメッセージ送信バッファ長

〜〈符号なし整数〉((1〜2147483647))（単位：バイト）

システムのメッセージ送信バッファ長を指定します。

送信メッセージ長が，システムのメッセージ送信バッファ長より大きい場合，送信が失敗する場合があります。送信に失敗した場合は，論理端末を閉塞し，エラーリターンします。そのため，このオペランドの指定値は，次の条件式を満たすことをお勧めします。

システムのメッセージ送信バッファ長 ＞ 送信メッセージ長

sysrcvsize=システムのメッセージ受信バッファ長

〜〈符号なし整数〉((1〜2147483647))（単位：バイト）

システムのメッセージ受信バッファ長を指定します。

受信できるメッセージ長は，受信バッファ（IBF）サイズまでです。受信バッファサイズを超えるメッセージの場合は，受信バッファサイズに入りきらない部分が切り捨てられ，受信バッファサイズのメッセージとして扱います。また，受信メッセージ長が，システムのメッセージ受信バッファ長より大きい場合，メッセージはUDPプロトコルよって破棄される場合があります。したがって，このオペランドの指定値は，次の条件式を満たすことをお勧めします。

システムのメッセージ受信バッファサイズ ＞受信バッファサイズ ＞ 受信メッセージ長

syssndsizeオペランドおよびsysrcvsizeオペランドで指定できるバッファ長の範囲はOSに依存します。指定を省略した場合は，OSのデフォルト値が仮定されます。詳しくは，ご使用のOSのマニュアルで，UDPプロトコルについて説明している個所を参照してください。

●-r

CL構成では，IPアドレスまたはホスト名と，ポート番号を実行系と待機系で同じ値にする必要があります。そのため，IPアドレスまたはホスト名には，必ずエイリアスIPアドレスを指定してください。

なお，IPアドレスの代わりにホスト名を指定する場合は，ホスト名とエイリアスIPアドレスの対応づけを/etc/hostsに指定するなどの対応が必要です。エイリアスIPアドレスの指定方法については，マニュアル「高信頼化システム監視機能 HAモニタ Linux(R)編」（OSがLinuxの場合），または「高信頼化システム監視機能 HAモニタ AIX(R)編」（OSがAIXの場合）を参照してください。

（オペランド）

ipaddr=メッセージの送受信に使用するLANアダプタのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

自システムがホットスタンバイ構成である場合，または複数のLANアダプタを持つ場合に，メッセージの送受信に使用するLANアダプタのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0と255.255.255.255は指定できません。

ipaddrオペランドまたはhostnameオペランドのどちらか一方を指定してください。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。

マルチキャストおよびブロードキャストのメッセージ受信に使用する論理端末の場合，ipaddrオペランドを指定してはいけません。

マルチキャストのメッセージ受信時は，-mオプションのhostgroupnameオペランドまたはhostgroupaddrオペランドのどちらか一方を指定してください。

hostname=メッセージの送受信に使用するLANアダプタのホスト名

〜〈1〜255文字のホスト名〉

自システムがホットスタンバイ構成である場合，または複数のLANアダプタを持つ場合に，メッセージの送受信に使用するLANアダプタのホスト名を指定します。

hostnameオペランドまたはipaddrオペランドのどちらか一方を指定してください。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。ipaddrオペランドを指定した場合は，このオペランドの指定値は無視されます。

マルチキャストおよびブロードキャストのメッセージ受信に使用する論理端末の場合，hostnameオペランドを指定してはいけません。

マルチキャストのメッセージ受信時は，-mオプションのhostgroupnameオペランドまたはhostgroupaddrオペランドのどちらか一方を指定してください。

portno=自システムのポート番号

〜〈符号なし整数〉((1024〜65535))

メッセージ送受信に使用する，自システムのポート番号を指定します。

portnoオペランドで指定するポート番号は，重複を避けるため次のポート番号とは異なる値を指定してください。

ほかのeemcple（論理端末定義（UDP））定義コマンドの-rオプションで指定するポート番号

OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）

OSが任意に割り当てる番号は，OSの種別やバージョンによって異なります。詳細については，ご使用のOSのマニュアルを参照してください。

●-o

（オペランド）

oipaddr=相手システムのホストのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

ee_mcp_send関数（CBLEEMCP('SEND ')），およびee_mcp_sendsync関数（CBLEEMCP('SENDSYNC')）の相手システムのホストのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0および255.255.255.255は指定できません。

-oオプションを指定する場合は，oipaddrオペランドかohostnameオペランドのどちらか一方を指定してください。

ohostname=相手システムのホスト名

〜〈1〜255文字のホスト名〉

ee_mcp_send関数（CBLEEMCP('SEND ')），およびee_mcp_sendsync関数（CBLEEMCP('SENDSYNC')）の相手システムのホスト名を指定します。

-oオプションを指定する場合は，oipaddrオペランドかohostnameオペランドのどちらか一方を指定してください。oipaddrオペランドを指定した場合は，このオペランドの指定値は無視されます。

oportno=相手システムのホストのポート番号

〜〈符号なし整数〉((1〜65535))

ee_mcp_send関数（CBLEEMCP('SEND ')），およびee_mcp_sendsync関数（CBLEEMCP('SENDSYNC')）の相手システムのホストのポート番号を指定します。

●-k

（オペランド）

reuseaddr=yes｜no

〜《no》

ソケットオプション「SO_REUSEADDR」を使用するかどうかを指定します。

SO_REUSEADDRを使用した場合は，複数のプロセスで同一のポート番号を共用できます。

yes

SO_REUSEADDRを使用します。

no

SO_REUSEADDRを使用しません。

●-m

CL構成では，IPアドレスまたはホスト名と，ポート番号を実行系と待機系で同じ値にする必要があります。そのため，IPアドレスまたはホスト名には，必ずエイリアスIPアドレスを指定してください。

なお，IPアドレスの代わりにホスト名を指定する場合は，ホスト名とエイリアスIPアドレスの対応づけを/etc/hostsに指定するなどの対応が必要です。エイリアスIPアドレスの指定方法については，マニュアル「高信頼化システム監視機能 HAモニタ Linux(R)編」（OSがLinuxの場合），または「高信頼化システム監視機能 HAモニタ AIX(R)編」（OSがAIXの場合）を参照してください。

（オペランド）

multicast=yes｜no

〜《no》

マルチキャストを使用してメッセージを送受信するかどうかを指定します。

yes

マルチキャストを使用してメッセージを送受信します。

no

マルチキャストを使用してメッセージを送受信しません。

hostgroupaddr=マルチキャストメッセージの受信に使用するホストグループのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

マルチキャストメッセージを受信する場合，参加するホストグループのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0と255.255.255.255は指定できません。

multicastオペランドにyesを指定した場合，hostgroupaddrオペランドまたはhostgroupnameオペランドのどちらか一方を必ず指定してください。

hostgroupname=マルチキャストメッセージの受信に使用するホストグループのホスト名

〜〈1〜255文字のホスト名〉

マルチキャストメッセージを受信する場合，参加するホストグループのホスト名を指定します。

multicastオペランドにyesを指定した場合，hostgroupnameオペランドまたはhostgroupaddrオペランドのどちらか一方を必ず指定してください。hostgroupaddrオペランドを指定した場合は，このオペランドの指定値は無視されます。

ripaddr=マルチキャストメッセージの受信に使用するLANアダプタのIPアドレス

〜（nnn.nnn.nnn.nnn）〈符号なし整数〉((0〜255))

自システムがホットスタンバイ構成である場合，または複数のLANアダプタを持つ場合に，マルチキャストメッセージの受信に使用するLANアダプタのIPアドレスを指定します。

指定形式はnnn.nnn.nnn.nnnです。nnnには，0〜255の値を指定できます。ただし，0.0.0.0と255.255.255.255は指定できません。

multicastオペランドにyesを指定した場合，ripaddrオペランドまたはrhostnameオペランドのどちらか一方を指定してください。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。

rhostname=マルチキャストメッセージの受信に使用するLANアダプタのホスト名

〜〈1〜255文字のホスト名〉

自システムがホットスタンバイ構成である場合，または複数のLANアダプタを持つ場合に，マルチキャストメッセージの受信に使用するLANアダプタのホスト名を指定します。

multicastオペランドにyesを指定した場合，rhostnameオペランドまたはripaddrオペランドのどちらか一方を指定してください。どちらも省略した場合は，OSが使用するLANアダプタが仮定されます。ripaddrオペランドを指定した場合は，このオペランドの指定値は無視されます。

multicastttl=送信するマルチキャストパケットの生存期間（TTL）

〜〈符号なし整数〉((0〜255))

マルチキャストメッセージ送信時のマルチキャストパケットの生存期間（TTL）を指定します。TTLのデフォルト値については，ご使用のOSのマニュアルで，定義ファイルについて説明している個所を参照してください。

注意事項

UDPプロトコルでマルチキャストおよびブロードキャストのメッセージ受信に使用する論理端末には，メッセージの送受信に使用するLANアダプタのIPアドレス（-rオプションのipaddrオペランドで指定），またはメッセージの送受信に使用するLANアダプタのホスト名（-rオプションのhostnameオペランドで指定）を指定しないでください。指定した場合，マルチキャストおよびブロードキャストのメッセージを受信できません。

eemcplefunc（論理端末アプリケーション定義）

機能

論理端末のアプリケーションに関する環境を定義します。

コマンドの形式

〔eemcplefunc〔-u "〔ownlsg=入力セグメント判定UOCのエントリポインタ名〕
                   〔ownlmc=入力メッセージ編集UOCのエントリポインタ名〕
                   〔ownlra=出力メッセージ編集UOCのエントリポインタ名〕
                   〔ownlcn=コネクション確立UOCのエントリポインタ名〕
                   〔owntrn=トランザクションレベル名判定UOCの
                             エントリポインタ名〕
                   〔ownojed=OJ編集UOCエントリポインタ名〕
                   〔rltrn=MCP後処理トランザクション起動サービス名〕
                   〔rltrnlevel=MCP後処理トランザクションの
                                トランザクションレベル名〕"〕
             〔-e "〔errtrn1=ERRTRN1のエントリポインタ名〕
                   〔errtrn2=ERRTRN2のエントリポインタ名〕
                   〔errtrn3=ERRTRN3のエントリポインタ名〕
                   〔errtrnr=ERRTRNRのエントリポインタ名〕
                   〔errtrns=ERRTRNSのエントリポインタ名〕"〕〕

オプションの説明

各オペランドで指定するエントリポインタ名は，TP1/EEのユーザサービス関連定義のmoduleオペランドに指定したUAP共用ライブラリの中に作成してください。

●-u

（オペランド）

ownlsg=入力セグメント判定UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

入力セグメント判定UOCのC言語関数名を指定します。

省略した場合はアプリケーション定義（eemcpfunc）の値が有効になります。

ownlmc=入力メッセージ編集UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

入力メッセージ編集UOCのC言語関数名を指定します。

省略した場合はアプリケーション定義（eemcpfunc）の値が有効になります。

ownlra=出力メッセージ編集UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

出力メッセージ編集UOCのC言語関数名を指定します。

省略した場合はアプリケーション定義（eemcpfunc）の値が有効になります。

ownlcn=コネクション確立UOCエントリポインタ名

〜〈1〜31文字の識別子〉

コネクション確立UOCのC言語関数名を指定します。

省略した場合はアプリケーション定義（eemcpfunc）の値が有効になります。

owntrn=トランザクションレベル名判定UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

トランザクションレベル名判定UOCのC言語関数名を指定します。

省略した場合はTP1/FSPのユーザサービス関連定義のuoc_funcオペランドの-pオプションの指定値に従います。

このオペランドは，TP1/FSP使用時にだけ指定できます。

ownojed=OJ編集UOCエントリポインタ名

〜〈1〜31文字の識別子〉

OJ編集UOCのC言語関数名を指定します。

省略した場合は，TP1/EEサービス定義でのuoc_funcの-oオプションの定義値に従います。

このオペランドは，TP1/FSP使用時にだけ指定できます。

rltrn=MCP後処理トランザクション起動サービス名

〜〈1〜31文字の識別子〉

MCP後処理トランザクションを起動するサービス名を指定します。

ここで指定したサービス名は，TP1/EEのユーザサービス関連定義のserviceオペランドの値を指定してください。

省略した場合はアプリケーション定義（eemcpfunc）の値が有効になります。

rltrnlevel=MCP後処理トランザクションのトランザクションレベル名

〜〈1〜31文字の識別子〉

MCP後処理トランザクションのトランザクションレベル名を指定します。

トランザクションレベル方式でMCP後処理トランザクション起動サービス名を指定する場合，このオペランドを必ず指定してください。

指定を省略した場合はアプリケーション定義（eemcpfunc）の指定値が有効になります。

トランザクションレベル方式については，TP1/FSPの関連ドキュメントを参照してください。

このオペランドは，TP1/FSP使用時にだけ指定できます。

●-e

（オペランド）

errtrn1=ERRTRN1のエントリポインタ名

〜〈1〜31文字の識別子〉

エラートランザクション（ERRTRN1）を提供するエントリポインタ名を指定します。

省略した場合はTP1/EEサービス定義のユーザサービス関連定義のerrtrn1オペランドの指定値に従います。

errtrn2=ERRTRN2のエントリポインタ名

〜〈1〜31文字の識別子〉

エラートランザクション（ERRTRN2）を提供するエントリポインタ名を指定します。

省略した場合はTP1/EEサービス定義のユーザサービス関連定義のerrtrn2オペランドの指定値に従います。

errtrn3=ERRTRN3のエントリポインタ名

〜〈1〜31文字の識別子〉

エラートランザクション（ERRTRN3）を提供するエントリポインタ名を指定します。

省略した場合はTP1/EEサービス定義のユーザサービス関連定義のerrtrn3オペランドの指定値に従います。

errtrnr=ERRTRNRのエントリポインタ名

〜〈1〜31文字の識別子〉

エラートランザクション（ERRTRNR）を提供するエントリポインタ名を指定します。

省略した場合はTP1/EEサービス定義のユーザサービス関連定義のerrtrnrオペランドの指定値に従います。

errtrns=ERRTRNSのエントリポインタ名

〜〈1〜31文字の識別子〉

エラートランザクション（ERRTRNS）を提供するエントリポインタ名を指定します。

省略した場合はTP1/EEサービス定義のユーザサービス関連定義のerrtrnsオペランドの指定値に従います。

eemcpthdgrp（スレッドグループ定義）

機能

この定義以降に定義した論理端末定義を新しいスレッドグループとします。

スレッドグループは受信スレッドの作成単位であり，同じスレッドグループに属する論理端末は，同じ受信スレッドでメッセージを受信します。各スレッドグループには，一つ以上の論理端末を定義します。直前のスレッドグループにeemcple定義コマンドがない場合，この定義は無視されます。

eemcpudpstart定義コマンドの直後に定義した論理端末は，この定義の有無に関係なく，一つ目のスレッドグループに属します。

この定義を省略した場合，定義したすべての論理端末は，同じスレッドグループに属します。

コマンドの形式

｛｛〔eemcpthdgrp〕｝｝

注意事項

この定義は，eemcpudpstart定義コマンドとeemcpudpend定義コマンドの間で定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcpudpend（UDP定義の終了）

機能

UDPプロトコルを使用した通信に関する定義の終了を示します。

コマンドの形式

〔eemcpudpend〕

注意事項

この定義はeemcpudpstart定義コマンドと対で定義してください。なお，定義の記述順序については，「4.1.2(3)　記述順序」を参照してください。

eemcpfunc（アプリケーション定義）

機能

アプリケーションに関する環境を定義します。

コマンドの形式

〔eemcpfunc    〔-u "〔ownlsg=入力セグメント判定UOCのエントリポインタ名〕
                     〔ownlmc=入力メッセージ編集UOCのエントリポインタ名〕
                     〔ownlra=出力メッセージ編集UOCのエントリポインタ名〕
                     〔ownlcn=コネクション確立UOCのエントリポインタ名〕
                     〔rltrn=MCP後処理トランザクション起動サービス名〕
                     〔rltrnlevel=MCP後処理トランザクションの
                                   トランザクションレベル名〕"〕
               〔-e "〔errtrns=yes｜no〕"〕
               〔-c "〔uocexc=yes｜no〕"〕
               〔-q serial｜parallel〕
               〔-m "〔msglen=normal｜extend〕
                     〔recvpermanence=yes｜no〕
                     〔reconnectsend=yes｜no〕"〕
               〔-o "〔outputmessage=OJの取得先ID〕
                     〔outputfunction=OJの機能拡張レベル〕"〕〕

オプションの説明

●-u

このオプションの各オペランドで指定するエントリポインタ名はTP1/EEのユーザサービス関連定義のmoduleオペランドに指定したUAP共用ライブラリの中に作成してください。

（オペランド）

ownlsg=入力セグメント判定UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

入力セグメント判定UOCのC言語関数名を指定します。

省略した場合は入力セグメント判定UOCを呼び出しません。

ownlmc=入力メッセージ編集UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

入力メッセージ編集UOCのC言語関数名を指定します。

省略した場合は入力メッセージ編集UOCを呼び出しません。

eemcpleコマンドで-vオプションを省略した論理端末定義が一つでもある場合，このオプションは省略できません。

ownlra=出力メッセージ編集UOCのエントリポインタ名

〜〈1〜31文字の識別子〉

出力メッセージ編集UOCのC言語関数名を指定します。

省略した場合は出力メッセージ編集UOCを呼び出しません。

ownlcn=コネクション確立UOCエントリポインタ名

〜〈1〜31文字の識別子〉

コネクション確立UOCのC言語関数名を指定します。

省略した場合はコネクション確立UOCを呼び出しません。

rltrn=MCP後処理トランザクション起動サービス名

〜〈1〜31文字の識別子〉

MCP後処理トランザクションを起動するサービス名を指定します。

ここで指定するサービス名にはTP1/EEのユーザサービス関連定義のserviceオペランドで指定したサービス名を指定してください。

省略した場合はMCP後処理トランザクションを起動しません。

rltrnlevel=MCP後処理トランザクションのトランザクションレベル名

〜〈1〜31文字の識別子〉

MCP後処理トランザクションのトランザクションレベル名を指定します。

トランザクションレベル方式でMCP後処理トランザクション起動サービス名を指定する場合，このオペランドを必ず指定してください。

トランザクションレベル方式については，TP1/FSPの関連ドキュメントを参照してください。

このオペランドは，TP1/FSP使用時にだけ指定できます。

●-e

（オペランド）

errtrns=yes｜no

〜《yes》

メッセージ送信時に通信障害が発生した場合に送信障害トランザクションを起動するかどうかを指定します。

yes

送信障害トランザクション（ERRTRNS）を起動します。

no

送信障害トランザクション（ERRTRNS）を起動しません。通信障害が発生した場合，送信メッセージは破棄されます。

●-c

（オペランド）

uocexc=yes｜no

〜《no》

入力メッセージ編集UOCおよび出力メッセージ編集UOCを論理端末単位にシリアライズするかどうかを指定します。

yes

論理端末単位にシリアライズします。入力メッセージ編集UOCと出力メッセージ編集UOCが同一排他内で実行されます。

no

論理端末単位にシリアライズしません。入力メッセージ編集UOCと出力メッセージ編集UOCがパラレルに実行されます。

●-q serial｜parallel

　　〜《serial》

端末キュー機能を使用して，論理端末単位のイベントをシリアルに処理するかどうかを指定します。論理端末単位のイベントには，メッセージ受信，コネクション確立・解放，および論理端末の閉塞・閉塞解除があります。

端末キュー機能については，「2.5　端末キュー機能」を参照してください。

serial

端末キュー機能を使用して，論理端末単位のイベントをシリアルに処理します。

parallel

端末キュー機能を使用しないで，論理端末単位のイベントをパラレルに処理します。サービス単位にシリアル処理をする場合に指定します。

●-m

（オペランド）

msglen=normal｜extend

〜《normal》

送受信メッセージの最大サイズを拡張するかどうかを指定します。

normal

送受信メッセージの最大サイズを拡張しません。送信メッセージの最大サイズは32キロバイト，受信メッセージの最大サイズは受信バッファサイズです。

extend

送受信メッセージの最大サイズを拡張します。送受信メッセージの最大サイズは，TCP/IPプロトコルを使用する場合は8メガバイト，UDPプロトコルを使用する場合は64キロバイトになります。

msglenオペランドの指定値による送受信メッセージの最大サイズの違いについて，次の表に示します。

表4‒4　msglenオペランドの指定値による送受信メッセージの最大サイズの違い

msglenオペランド指定値

送受信メッセージ

送受信メッセージの最大サイズ

（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

normal

送信メッセージ

32000※1

32000※1

受信メッセージ

TP1/EEサービス定義のrecv_message_buf_sizeオペランド指定値

65531※2

extend

送信メッセージ

8388608

65531※1

受信メッセージ

65531※2，※3

注※1

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

注※2

TP1/EEサービス定義のrecv_message_buf_sizeオペランドで指定した受信バッファサイズの方が小さい場合は，recv_message_buf_sizeオペランドの指定値が設定されます。

注※3

入力メッセージ編集UOCでの編集後の最大サイズは8388608になります。

recvpermanence=yes｜no

〜《no》

クラスタを構成する実行系と待機系の間で，受信メッセージを永続化するかどうかを指定します。このオペランドは，XTCサービス定義のcluster_modeオペランドにYを指定している場合にだけ有効になります。

yes

受信メッセージを永続化します。

no

受信メッセージを永続化しません。

reconnectsend=yes｜no

〜《プロセス関連定義のfsp_useオペランドがNの場合はyes，Yの場合はno》

メッセージ受信時のコネクション以外の場合（送信元でコネクションが再確立された場合）でも，メッセージ送信元の論理端末（TCP/IP）に対する応答メッセージを送信するかどうかを指定します。

yes

メッセージ受信時のコネクション以外の場合でも，応答メッセージを送信します。

no

メッセージ受信時のコネクション以外の場合は，応答メッセージを送信しません。

通信プロトコルを持つプログラムがMCPを使用して通信する場合，プロトコルで再確立されたコネクションを利用する応答メッセージの送信を許可していないときはnoを指定します。再確立されたコネクションを利用する応答メッセージの送信を許可しているときはyesを指定します。

受信メッセージを永続化する指定で系切り替えが発生した場合，このオペランドにnoを指定したときでも，系切り替え前に受信したメッセージに対して応答メッセージを送信します。系切り替え後に受信したメッセージに対する応答メッセージの送信は，このオペランドの指定に従います。

また，このオペランドにnoを指定した場合，トランザクション内で任意の論理端末（TCP/IP）に対する一方送信関数（ee_mcp_send）を発行しても，コミットする前に送信対象とのコネクションが再確立されると，トランザクションがコミットしてもメッセージは送信されません。

xtc_use=Yの場合はこのオペランドを指定しても無視し，「yes」を指定したものとして動作します。

●-o

このオプションは，TP1/FSP使用時にだけ指定できます。

（オペランド）

outputmessage=OJの取得先ID

〜〈符号なし整数〉((0〜255))《0》

MCPでの送信処理でOJを取得する場合に，OJの取得先IDを指定します。

outputmessageオペランドを省略した場合，またはこのオペランドに0を指定した場合はOJを取得しません。

outputmessageオペランドで指定した取得先IDによって，OJを書き込むUAP履歴情報グループの表を決定します。取得先IDが指定されていない場合（TP1/FSPのトランザクション関連定義のtrnaphputid定義コマンドの-iオプションを指定しない場合）は，プロセスダウンします。

UAP履歴情報取得機能を使用しない場合（TP1/FSPのトランザクション関連定義のtrn_aph_useオペランドにNを設定した場合），outputmessageオペランドの指定値は無効となります。

TP1/FSPのユーザサービス関連定義のservice_attr定義コマンドの-mオプションを指定している場合，-vオプションで指定したサービス名，または-xオプションで指定したトランザクション種別では，outputmessageオペランドの指定値は無効となります。

outputmessageオペランドとTP1/FSPのユーザサービス関連定義のservice_attr定義コマンドの-mオプションとの関連性，およびUAP履歴情報取得機能については，TP1/FSPの関連ドキュメントを参照してください。

outputfunction=OJの機能拡張レベル

〜〈16進数〉{00000000｜00000001}《00000000》

MCPでのOJ取得の機能拡張レベルを指定します。

TP1/FSPのユーザサービス関連定義のservice_attr定義コマンドの-pオプションを指定している場合，-vオプションで指定したサービス名，または-xオプションで指定したトランザクション種別では，outputfunctionオペランドの指定値は無効となります。

00000000

OJ取得の機能を拡張しません。

00000001

OJを取得するときに，ユーザデータを出力データとして取得しません。

eemcptrc（トレース定義）

機能

MCPトレースに関する環境を定義します。

コマンドの形式

〔eemcptrc     〔-f "〔fileno=MCPトレースのファイル数〕
                     〔filesz=MCPトレースの最大ファイルサイズ〕"〕
               〔-b "〔bufferno=MCPトレースファイル出力用バッファ数〕
                     〔buffersz=MCPトレースファイル出力用最大
                                バッファサイズ〕"〕
               〔-x "〔entrysize=スレッドごとのMCPトレースの
                                 バッファサイズ〕"〕
               〔-s "〔sendresult=yes｜no〕"〕
               〔-m "〔filter=MCPトレース情報の取得量の変更〕
                     〔msgsize=MCPトレース情報の取得最大サイズ〕"〕〕

オプションの説明

●-f

（オペランド）

fileno=MCPトレースのファイル数

〜〈符号なし整数〉((3〜100))《3》

MCPトレース情報を出力する最大ファイル数を指定します。

filesz=MCPトレースの最大ファイルサイズ

〜〈符号なし整数〉((400〜4000000))《40000》（単位：キロバイト）

MCPトレース情報を取得するファイルの最大サイズを指定します。次に示す条件式を満たすように指定してください。

-fオプションのfileszオペランド ＞ -bオプションのbufferszオペランド ＞ -xオプションのentrysizeオペランド

●-b

（オペランド）

bufferno=MCPトレースファイル出力用バッファ数

〜〈符号なし整数〉((3〜200))《3》

MCPトレース情報をバッファにスタックするバッファ数を指定します。

MCPトレース編集時に破棄したレコード数が出力された場合は，このオペランドの設定値を増やしてください。このオペランドに最大値を設定しても破棄したレコード数が出力された場合は，bufferszオペランドの設定値を増やしてください。

buffersz=MCPトレースファイル出力用最大バッファサイズ

〜〈符号なし整数〉((41〜20000))《200》（単位：キロバイト）

MCPトレース情報をバッファにスタックするバッファサイズを指定します。次に示す条件式を満たすように指定してください。

-fオプションのfileszオペランド ＞ -bオプションのbufferszオペランド ＞ -xオプションのentrysizeオペランド

MCPトレース編集時に破棄したレコード数が出力された場合は，最初にbuffernoオペランドの設定値を増やしてください。buffernoオペランドに最大値を設定しても破棄したレコード数が出力される場合は，このオペランドの設定値を増やしてください。

●-x

（オペランド）

entrysize=スレッドごとのMCPトレースのバッファサイズ

〜〈符号なし整数〉((40〜10000))《80》（単位：キロバイト）

スレッド単位で格納する一時バッファ領域のサイズを指定します。次に示す条件式を満たすように指定してください。

-fオプションのfileszオペランド ＞ -bオプションのbufferszオペランド ＞ -xオプションのentrysizeオペランド

●-s

（オペランド）

sendresult=yes｜no

〜《no》

出力メッセージ編集UOCでユーザトレースを取得した場合，送信結果トレースを取得するかどうかを指定します。

yes

送信結果トレースを取得します。

no

送信結果トレースを取得しません。

●-m

（オペランド）

filter=MCPトレース情報の取得量の変更

〜〈16進数〉｛00000000｜00000010｝《00000000》

MCPトレース情報の取得量を変更する場合に，変更する項目を指定します。

00000000

すべての送受信イベントをMCPトレース情報に取得します。送受信データは，1回の送受信イベントごとに最大で32000バイトを取得します。

00000010

すべての送受信イベントをMCPトレース情報に取得します。送受信データは，1回の送受信イベントごとに-mオプションのmsgsizeオペランドに指定した最大サイズまでを取得します。

msgsize=MCPトレース情報の取得最大サイズ

〜〈符号なし整数〉((0〜32000))《128》（単位：バイト）

送受信データのうち，MCPトレース情報に取得する最大サイズを指定します。

送受信データが最大サイズより小さい場合は，送受信データのすべての内容をMCPトレース情報として取得します。0を指定した場合，送受信データ長0としてMCPトレース情報を取得します。

このオペランドは，-mオプションのfilterオペランドに00000010を指定している場合だけ有効です。

4.4　コネクションの形態と通信構成定義との関係

TCP/IPプロトコルを使用して通信する場合のコネクションの形態と通信構成定義との関係を次の表に示します。

表4‒5　コネクションの形態と通信構成定義との関係

コマンド

オプション

オペランド

コネクション確立モード

クライアント

サーバ

eemcpcn（コネクション定義）

-c

−

○

○

-i

−

△

×

-b

bretry

△

×

bretrycnt

△

×

bretryint

△

×

concmptim

△

×

conmsg

△

△

sndsynctim

△

△

sndtim

△

△

-w

srtimout

△

△

-y

mode

○

○

-r

ipaddr

△

△

hostname

△

△

portno

△

○

-o

oipaddr

○

△

ohostname

○

△

oportno

○

△

-k

nodelay

△

△

notrftime

△

△

keepalive

△

△

-f

cnrelease

△

△

endrelease

△

△

-h

addrchk

×

△

chgconn

×

△

eemcple（論理端末定義）

-l

−

○

○

-i

−

△

△

-v

−

△

△

eemcptcpstart（TCP/IP定義の開始）

-o

con_addr

△

×

（凡例）

−：該当しません。

○：指定が必要です。

△：指定は任意です。または，定義の組み合わせによって省略できます。

×：指定できません，または，指定しても無視されます。

4.5　システム定義での注意事項

ここでは，MCPのシステム定義での注意事項について説明します。

4.5.1　論理端末の定義数

TP1/EEの受信スレッド作成数に関係して，MCPの論理端末の定義数には上限があります。

■MCPの受信スレッド作成数の上限

UDP全体：スレッドグループ数

TCP/IP（クライアント）全体：1

TCP/IP（サーバ）：サーバ型コネクション（eemcpcn定義-yのmodeオペランドでserverを指定）であるeemcpcn定義-rオプションで指定したIPアドレスまたはホスト名と，ポート番号の組み合わせ数

TP1/EEのプロセス全体で作成できるスレッドの上限は1000です。MCP構成定義での指定範囲内の定義数であっても，TP1/EEのスレッド（処理スレッド，受信スレッド数など）の関係でTP1/EEが起動できなくなることがあるため，注意してください。

■MCPの論理端末数の上限

TCP/IPプロトコル使用時のサーバ型コネクション，クライアント型コネクションおよびUDPプロトコル使用時を含めた論理端末の上限は32000です。ただし，論理端末は，一つ以上定義してください。

4.5.2　MCPでのファイル識別子の使用量

TP1/EEのプロセス関連定義のmax_descriptorsオペランドの指定値に，MCPでのファイル識別子の使用量を加算する必要があります。

■MCPでのファイル識別子の使用量

UDP全体：（2×受信スレッド数）＋ポート数

TCP/IP（クライアント）全体：2＋コネクション数

TCP/IP（サーバ）：（3×受信スレッド数）＋コネクション数

論理端末の定義数に応じてファイルディスクリプタ数（TP1/EEのmax_descriptors定義値，TP1/SBのmax_socket_descriptors,max_open_fds定義値，およびOSのファイルディスクリプタ数）を変更してください。

また，MCP定義で範囲内の定義数でも，TP1/EEのスレッド（処理スレッド，受信スレッド数など）の関係や，ファイルディスクリプタ数の関係でTP1/EEの起動ができなくなるおそれがあります。TP1/EEのファイルディスクリプタ数については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を，TP1/SBのファイルディスクリプタ数に関してはマニュアル「OpenTP1 システム定義」を参照してください。

4.6　定義例

ここでは，システム構成例に対する定義のコーディング例を示します。

4.6.1　MCPを使用したシステム構成例

MCPを使用したシステム構成例を次の図に示します。

図4‒4　MCPのシステム構成例

4.6.2　定義のコーディング例

システム構成例に沿った定義のコーディング例を次に示します。

#-----------------------------------------------------------------
# MCP構成定義
#-----------------------------------------------------------------
#-----------------------------------------------------------------
eemcptcpstart                     #TCP/IP定義の開始
#-----------------------------------------------------------------
# コネクション定義(cn001tcp：クライアント)
eemcpcn -c  cn001tcp -y "mode=client" -i auto                    ¥
        -b "bretry=yes bretrycnt=10 bretryint=3 concmptim=5      ¥
           conmsg=yes sndsynctim=3 sndtim=5"                     ¥
        -r "portno=10001"                                        ¥
        -o "oipaddr=200.100.50.1 oportno=20001"
#-----------------------------------------------------------------
# 論理端末定義（le001tcp）
eemcple -l le001tcp -i auto -v srv101

#-----------------------------------------------------------------
# コネクション定義(cn002tcp：クライアント)
eemcpcn -c  cn002tcp -y "mode=client"                            ¥
        -r "portno=10002"                                        ¥
        -o "oipaddr=200.100.50.2 oportno=20002"
#-----------------------------------------------------------------
# 論理端末定義（le002tcp）
eemcple -l le002tcp -v srv102

#-----------------------------------------------------------------
# コネクション定義(cn003tcp：クライアント)
eemcpcn -c  cn003tcp -y "mode=client"                            ¥
        -r "portno=10003"                                        ¥
        -o "oipaddr=200.100.50.3 oportno=20003"
#-----------------------------------------------------------------
# 論理端末定義（le003tcp）
eemcple -l le003tcp -v srv103

#-----------------------------------------------------------------
# 論理端末アプリケーション定義1（xxx_func1）
eemcplefunc -u "ownlsg=lsg_func1                                 ¥
                ownlmc=lmc_func1                                 ¥
                ownlra=lra_func1                                 ¥
                ownlcn=lcn_func1                                 ¥
                owntrn=trn_func1                                 ¥
                ownojed=oj_func1                                 ¥
                rltrn=rl_func1                                   ¥
                rltrnlevel=trnlevel1"                            ¥
            -e "errtrn1=err1_func1                               ¥
                errtrn2=err2_func1                               ¥
                errtrn3=err3_func1                               ¥
                errtrnr=errr_func1                               ¥
                errtrns=errs_func1"

#-----------------------------------------------------------------
# コネクション定義(cn004tcp：サーバ)
eemcpcn -c  cn004tcp -y "mode=server"                            ¥
        -r "portno=10004"                                        ¥
        -o "oipaddr=200.100.50.4 oportno=20004"                  ¥
        -h "addrchk=yes chgconn=replace"
#-----------------------------------------------------------------
# 論理端末定義（le004tcp）
eemcple -l le004tcp -v srv104

#-----------------------------------------------------------------
# コネクション定義(cn005tcp：サーバ)
eemcpcn -c  cn005tcp -y "mode=server"                            ¥
        -r "portno=10004"                                        ¥
        -o "oipaddr=200.100.50.5 oportno=20005"                  ¥
        -h "chgconn=replace"
#-----------------------------------------------------------------
# 論理端末定義（le005tcp）
eemcple -l le005tcp -v srv105
#-----------------------------------------------------------------
eemcptcpend                       # TCP/IP定義の終了

#-----------------------------------------------------------------
eemcpudpstart                     # UDP定義の開始
#-----------------------------------------------------------------
# スレッドグループ定義（スレッドグループ1）
eemcpthdgrp
#-----------------------------------------------------------------
# 論理端末定義（le001udp）
eemcple -l  le001udp -i auto -v srv201                           ¥
        -b "sndtim=0"                                            ¥
        -s "syssndsize=10240 sysrcvsize=10240"                   ¥
        -r "portno=30001"
#-----------------------------------------------------------------
# 論理端末定義（le002udp）
eemcple -l  le002udp -v srv202                                   ¥
        -r "portno=30002"                                        ¥
        -m "multicast=yes hostgroupaddr=201.101.51.5"
#-----------------------------------------------------------------
# スレッドグループ定義（スレッドグループ2）
eemcpthdgrp
#-----------------------------------------------------------------
# 論理端末定義（le003udp）
eemcple -l  le003udp -v srv203                                   ¥
        -r "portno=30003"
#-----------------------------------------------------------------
# 論理端末アプリケーション定義2（xxx_func2）
eemcplefunc -u "ownlsg=lsg_func2                                 ¥
                ownlmc=lmc_func2                                 ¥
                ownlra=lra_func2                                 ¥
                ownlcn=lcn_func2                                 ¥
                owntrn=trn_func2                                 ¥
                ownojed=oj_func2                                 ¥
                rltrn=rl_func2                                   ¥
                rltrnlevel=trnlevel2"                            ¥
            -e "errtrn1=err1_func2                               ¥
                errtrn2=err2_func2                               ¥
                errtrn3=err3_func2                               ¥
                errtrnr=errr_func2                               ¥
                errtrns=errs_func2"

#-----------------------------------------------------------------
# 論理端末定義（le004udp）
eemcple -l  le004udp -v srv204                                   ¥
        -r "portno=30004"
#-----------------------------------------------------------------
# スレッドグループ定義（スレッドグループ3）
eemcpthdgrp
#-----------------------------------------------------------------
# 論理端末アプリケーション定義をデフォルトに戻す
eemcplefunc
#-----------------------------------------------------------------
# 論理端末定義（le005udp）
eemcple -l  le005udp -v srv205                                   ¥
        -r "portno=30005"                                        ¥
        -m "multicast=yes hostgroupaddr=201.101.51.5"
#-----------------------------------------------------------------
eemcpudpend                       # UDP定義の終了

#---- トレース定義 -------------------------------------------------
eemcptrc  -f  "fileno=3                                          ¥
               filesz=4000"
#---- バッファ定義 -------------------------------------------------
eemcpbuf  -e "emsgbuf=10240"      # UOC編集用バッファサイズ10240

#---- アプリケーション定義（xxx_func） -----------------------------
eemcpfunc -u "ownlsg=lsg_func                                    ¥
              ownlmc=lmc_func                                    ¥
              ownlra=lra_func                                    ¥
              ownlcn=lcn_func                                    ¥
              rltrn=rl_func                                      ¥
              rltrnlevel=trnlevel"                               ¥
          -e "errtrns=yes"                                       ¥
          -c "uocexc=yes"

5　MCPのライブラリ関数の文法

この章では，MCPのライブラリ関数とUOCの文法について説明します。

5.1　MCPのライブラリ関数の一覧

C言語，COBOL言語のライブラリ関数の対応を次の表に示します。

表5‒1　MCPのライブラリ関数の対応

機能

ライブラリ関数名

C言語

COBOL言語

コネクションの確立

ee_mcp_actcn

CBLEEMCP('ACTCN ')

相手システムを指定したコネクションの確立

ee_mcp_actcn_to

CBLEEMCP('ACTCNTO ')

論理端末の閉塞解除

ee_mcp_actle

CBLEEMCP('ACTLE ')

コネクション情報の取得

ee_mcp_cninfo

CBLEEMCP('CNINFO ')

コネクションの解放

ee_mcp_dctcn

CBLEEMCP('DCTCN ')

論理端末の閉塞

ee_mcp_dctle

CBLEEMCP('DCTLE ')

非同期一方送信メッセージの送信

ee_mcp_send

CBLEEMCP('SEND ')

同期型メッセージの送受信

ee_mcp_sendrecv

CBLEEMCP('SENDRECV ')

同期一方送信メッセージの送信

ee_mcp_sendsync

CBLEEMCP('SENDSYNC')

ユーザトレースの取得

ee_mcp_utrace_put

CBLEEMCP('UTPUT ')

ユーザトレースの取得（データ長拡張用）

ee_mcp_utrace_put_long

CBLEEMCP('UTPUTL ')

SPPで使用できるMCPのライブラリ関数は，TP1/EEの各製品のトランザクション種別によって異なります。トランザクションで使用できるライブラリ関数を，製品別に以降の表に示します。なお，トランザクション種別については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

表5‒2　トランザクションで使用できるライブラリ関数（TP1/EE）

ライブラリ関数名

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

ee_mcp_actcn

CBLEEMCP('ACTCN ')

×

×

○

○

○

○

○

○

○

○

ee_mcp_actcn_to

CBLEEMCP('ACTCNTO ')

×

×

○

○

○

○

○

○

○

○

ee_mcp_actle

CBLEEMCP('ACTLE ')

×

×

○

○

○

○

○

○

○

○

ee_mcp_cninfo

CBLEEMCP('CNINFO ')

○

○

○

○

○

○

○

○

○

○

ee_mcp_dctcn

CBLEEMCP('DCTCN ')

○

○

○

○

○

○

○

○

○

○

ee_mcp_dctle

CBLEEMCP('DCTLE ')

○

○

○

○

○

○

○

○

○

○

ee_mcp_send

CBLEEMCP('SEND ')

×

○

○

○

○

○

○

○

○

○

ee_mcp_sendrecv

CBLEEMCP('SENDRECV')

×

×

○

○

○

○

○

○

○

○

ee_mcp_sendsync

CBLEEMCP('SENDSYNC')

×

○

○

○

○

○

○

○

○

○

ee_mcp_utrace_put

CBLEEMCP('UTPUT ')

○

○

○

○

○

○

○

○

○

○

ee_mcp_utrace_put_long

CBLEEMCP('UTPUTL ')

○

○

○

○

○

○

○

○

○

○

（凡例）

○：使用できます。

×：使用できません。

表5‒3　トランザクションで使用できるライブラリ関数（MCP，TP1/FSP）

ライブラリ関数名

トランザクション種別

UI

MV

RL

UT

CU

JI

BS

ee_mcp_actcn

CBLEEMCP('ACTCN ')

×

○

○

×

○

×

×

ee_mcp_actcn_to

CBLEEMCP('ACTCNTO ')

×

○

○

×

○

×

×

ee_mcp_actle

CBLEEMCP('ACTLE ')

×

○

○

×

○

×

×

ee_mcp_cninfo

CBLEEMCP('CNINFO ')

○

○

○

○

○

○

×

ee_mcp_dctcn

CBLEEMCP('DCTCN ')

○

○

○

○

○

○

×

ee_mcp_dctle

CBLEEMCP('DCTLE ')

○

○

○

○

○

○

×

ee_mcp_send

CBLEEMCP('SEND ')

×

○

○

×

○

×

×

ee_mcp_sendrecv

CBLEEMCP('SENDRECV')

×

○

○

×

○

×

×

ee_mcp_sendsync

CBLEEMCP('SENDSYNC')

×

○

○

×

○

×

×

ee_mcp_utrace_put

CBLEEMCP('UTPUT ')

○

○

○

○

○

○

×

ee_mcp_utrace_put_long

CBLEEMCP('UTPUTL ')

○

○

○

○

○

○

×

（凡例）

○：使用できます。

×：使用できません。

5.2　ライブラリ関数（C言語）

C言語のライブラリ関数について説明します。

関数の説明形式

MCPのライブラリ関数の説明形式については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

サービス関数（SPP）の作成

SPPはサービスを提供するUAPです。ここでは，MCPでのSPPの文法について説明します。

形式

ANSI C，C++の形式

#include <eerpcsrv.h>
#include <eemcp.h>

void  関数名(char *in， EEULONG *in_len， char *out， EEULONG *out_len，
EERPC_INTERFACE_TBL *trninf)
{
サービスの処理
}

/* EERPC_INTERFACE_TBL構造体の形式 */
EERPC_INTERFACE_TBL {
  EEULONG    trn_len;
  EEULONG    group_len;
  char       servicegroup[32];
  EEULONG    service_len;
  char       service[32];
  char       trn_id[2];
  char       auto_block;
  char       commit_inf;
  EEULONG    thread_no;
  EEULONG    err_code;
  EEULONG    uifa_len;
  char       yobi_1[4];
  char       *uifa;
  EEULONG    usat_len;
  char       yobi_2[4];
  char       *usat;
  char       ans_inf;
  char       msg_inf;
  char       start_inf;
  char       before_end_inf;
  char       end_inf;
  char       thread_down_inf;
  char       uap_errtrn_inf;
  char       trninf_ex;
  EEULONG    rm_no;
  EELONG     rm_inf;
  EEULONG    es_group_len;
  char       es_servicegroup[32];
  EEULONG    es_service_len;
  char       es_service[32];
  EEULONG    abn_thread_no;
  char       yobi_3[4];
  union {
    TRNINF_SERVICE_EX   *trninf_service_ex;
    TRNINF_DBQ_EX       *trninf_dbq_ex;
    TRNINF_DBQ_OBS_EX   *trninf_dbq_obs_ex;
  } ex_inf;
void       *xtc_pt;
void       *mcp_pt;
          :
          :
}

機能

サービスを実行するSPPのサービス関数です。サービス関数は，上記の形式で任意に作成してください。

サービス関数名は，サービス関数のエントリポインタ（入り口点）の名称に対応します。この対応づけは，UAPの実行環境を設定するときに指定します。UAPの実行環境を設定する手順を次に示します。

TP1/EEでの設定

ユーザサービス関連定義で指定します。詳細については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

MCPでの設定

MCP後処理トランザクション起動サービス名は，eemcpfunc定義コマンドで指定します。詳細については，「4.3　MCP構成定義の詳細」の「eemcpfunc（アプリケーション定義）」を参照してください。

引数の指定

ここでは，引数の指定のうち，TP1/EEと異なる部分について説明します。そのほかの引数情報については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

トランザクション種別がRLの場合にサービス関数に値が渡される引数を次の表に示します。

表5‒4　トランザクション種別がRLの場合にサービス関数に値が渡される引数

項番

引数情報

参照可否

1

入力パラメタ

×

2

入力パラメタ長

×

3

サービス関数の応答

×

4

応答の長さ

×

5

トランザクションインタフェース情報

○

（凡例）

○：参照できます。

×：参照できません。

■入力パラメタと入力パラメタ長の関係

入力パラメタ（in）と入力パラメタ長（in_len）の関係を次の図に示します（単位：バイト）。

TCP/IPの場合

UDPの場合

制御ヘッダについては，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

なお，MCPではサービス関数の応答（out）を使用した応答送信はできません。

クライアントUAPから値が渡される引数

トランザクション種別がESの場合にTP1/EEと設定値が異なる引数を次に示します。そのほかの引数については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「TP1/EE/Extended Transaction Controller 使用の手引」を参照してください。

●in

トランザクションと同期して送信する非同期一方送信のメッセージ送信API（ee_mcp_send関数）の入力パラメタ（senddata）に設定した値（出力メッセージ編集UOC指定時は編集後の値※）が渡されます。

注※

メッセージの最大サイズを拡張している場合に，出力メッセージ編集UOCで不正なサイズを指定したときは，編集後の値を0バイトとします。また，入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合，編集後の値の末尾を切り捨てます。

●in_len

トランザクションと同期して送信する非同期一方送信のメッセージ送信API（ee_mcp_send関数）の入力パラメタ（sdataleng）に設定した値（出力メッセージ編集UOC指定時は編集後の値※）に8を加算した値が渡されます。

注※

メッセージの最大サイズを拡張している場合に，出力メッセージ編集UOCで不正なサイズを指定したときは，編集後の値を0バイトとします。また，入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合，編集後の値の末尾を切り捨てます。

●out_len

参照できません。

その他

次に示す内容については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

TP1/EEから値が返される引数

UAPで値を設定する引数

サービス関数の処理での注意

トランザクションとサービス関数の関係

リターン値

トランザクションインタフェース情報

ここでは，次に示す内容について説明します。

MCP後処理トランザクション

エラートランザクション（ERRTRNS）※

MCP拡張トランザクションインタフェース情報

注※

TP1/EEと異なる部分についてだけ説明します。

上記以外のトランザクションインタフェース情報の詳細については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

MCP後処理トランザクション

MCP後処理トランザクションはMCP固有のトランザクション種別です。MCP後処理トランザクションは，次に示すタイミングで起動します。

コネクションの確立または解放

論理端末の閉塞または閉塞解除

トランザクション種別がRLの場合に参照できるトランザクションインタフェース情報を次の表に示します。各トランザクションインタフェース情報については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

表5‒5　トランザクション種別がRLの場合のトランザクションインタフェース情報

項番

トランザクションインタフェース情報

参照可否

1

情報長（trn_len）

○

2

サービスグループ名長（group_len）

○

3

サービスグループ名（servicegroup）

○

4

サービス名長（service_len）

○

5

サービス名（service）

○

6

トランザクション種別（trn_id）

○

7

自動閉塞有無（auto_block）

×

8

コミット有無（commit_inf）

×

9

処理スレッド通番（thread_no）

○

10

エラー要因コード（err_code）

×

11

ユーザIFAエリアサイズ（uifa_len）

○

12

ユーザIFAエリアポインタ（*uifa）

○

13

ユーザSATエリアサイズ（usat_len）

○

14

ユーザSATエリアポインタ（*usat）

○

15

応答要否（ans_inf）

×

16

メッセージ状態（msg_inf）

○

17

プロセス起動要因（start_inf）

×

18

前回プロセス終了要因（before_end_inf）

×

19

プロセス終了要因（end_inf）

×

20

スレッドダウン種別（thread_down_inf）

×

21

異常発生トランザクション種別（uap_errtrn_inf）

×

22

拡張トランザクション種別（trninf_ex）

×

23

リソースマネジャ数（rm_no）

○

24

リソースマネジャ接続状態（rm_inf）

○

25

送信サービスグループ名長（es_group_len）

×

26

送信サービスグループ名（es_servicegroup）

×

27

送信サービス名長（es_service_len）

×

28

送信サービス名（es_service）

×

29

異常発生処理スレッド通番（abn_thread_no）

×

30

拡張トランザクションインタフェース情報（ex_inf）

×

31

XTC拡張トランザクションインタフェース情報（*xtc_pt）

△

32

MCP拡張トランザクションインタフェース情報（*mcp_pt）

○

33

メッセージ種別（msg_type）

×

34

エラートランザクション要因（errtrn_factor）

×

35

拡張ユーザIFAエリアサイズ（uifa_large_len）

○

36

拡張ユーザSATエリアサイズ（usat_large_len）

○

37

トランザクション起動要因（run_inf）

×

38

サーバ再起動回数（rerun_cnt）

×

39

トランザクション起動時刻（start_time）

○

40

送信元のノード識別子（node_id）

×

41

トランザクションレベル名長（trnlevel_len）

○

42

トランザクションレベル名（trnlevel）

○

（凡例）

○：参照できます。

×：参照できません。

△：XTCを使用している場合だけ参照できます。

エラートランザクション（ERRTRNS）

トランザクション種別がESの場合に，TP1/EEと設定値が異なるエラー要因コード（err_code）を次に示します。

■エラー要因コード

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_SENDER

送信障害が発生しました。

EEMCPER_TERM_HOLD

論理端末が閉塞中です。

EEMCPER_TIME

送信タイムアウトが発生しました。

EEMCPER_UOC_ERR

出力メッセージ編集UOCがエラーリターンしました。

EEMCPER_UOC_INVALID

出力メッセージ編集UOCで障害が発生しました。

次のトランザクションインタフェース情報についてはTP1/EEからSPPに渡されません。

送信サービスグループ名長

送信サービスグループ名

送信サービス名長

送信サービス名

MCP拡張トランザクションインタフェース情報

MCP拡張トランザクションインタフェース情報は，MCPエリアポインタmcp_ptに設定される情報です。次に示す場合に参照できます。

トランザクション種別が「MN」「E1」「E2」「E3」「ES」「ER」であり，かつメッセージ種別（msg_type）がEEMCP_MSGTYPE_TCPまたはEEMCP_MSGTYPE_UDPの場合

トランザクション種別がRLの場合

MCPエリアポインタmcp_ptが示す構造体（TRNINF_SERVICE_MCP）の形式を次に示します。

TRNINF_SERVICE_MCP {
  EELONG       cn_name_len;
  char         cn_name[9];
  char         yobi_1[3];
  EELONG       le_name_len;
  char         le_name[9];
  char         yobi_2[3];
  EELONG       pro_kind;
  EELONG       kind;
  EELONG       reason;
  char         yobi_3[4];
  void         *data1;
  void         *lebuf;
  EEULONG      lebuf_size;
  char         yobi_4[4];
  unsigned char  r_ipaddr[16];
  unsigned char  o_ipaddr[16];
  unsigned short r_port;
  unsigned short o_port;
  char         yobi[28];
}

●cn_name_len

コネクションIDのサイズが設定されます。

●cn_name

コネクションIDが設定されます。

●le_name_len

メッセージの入出力論理端末名のサイズが設定されます。

●le_name

メッセージの入出力論理端末名が設定されます。

●pro_kind

プロトコル種別として，次の値が設定されます。

EEMCP_UOC_PRO_TCP：TCP/IPプロトコル

EEMCP_UOC_PRO_UDP：UDPプロトコル

●kind

種別として，次の値が設定されます。

EEMCP_CN_OPEN：コネクションの確立通知

EEMCP_CN_CLOSE：コネクションの解放通知

EEMCP_LE_FREE：論理端末の閉塞解除通知

EEMCP_LE_HOLD：論理端末の閉塞通知

●reason

kindで設定される値のreason値の意味を次の表に示します。

表5‒6　各kindで設定される値のreason値の意味

項番

kind設定値

reason値

reason値

（数値）

意味

プロトコル

1

EEMCP_CN_OPEN

EEMCP_BY_API

1

ee_mcp_actcn関数またはee_mcp_actcn_to関数によるコネクションの確立

T

2

EEMCP_BY_COMMAND

2

eemcpactcnコマンドまたはeemcpactcntoコマンドによるコネクションの確立

T

3

EEMCP_BY_SYSTEM

5

システムによるコネクションの確立

T

4

EEMCP_CN_CLOSE

EEMCP_BY_API

1

ee_mcp_dctcn関数（EEMCPNRM設定時）によるコネクションの解放

T

5

EEMCP_BY_COMMAND

2

eemcpdctcnコマンドによるコネクションの解放

T

6

EEMCP_BY_API_F

3

ee_mcp_dctcn関数（EEMCPFRC設定時）によるコネクションの強制解放

T

7

EEMCP_BY_COMMAND_F

4

eemcpdctcnコマンド（-fオプションを指定時※1）によるコネクションの強制解放

T

8

EEMCP_BY_SYSTEM

5

システムによるコネクションの解放

T

9

EEMCP_BY_SYSTEM_F

6

システムによるコネクションの強制解放

T

10

EEMCP_RSN_CNNC

101

コネクション確立不可※2

T

11

EEMCP_RSN_CNER

102

コネクション解放（相手システムからの解放）

T

12

EEMCP_RSN_CNCL

103

コネクション解放（自システムからの解放）

T

13

EEMCP_RSN_RBOV

104

受信バッファオーバフロー

T

14

EEMCP_RSN_NOBF

105

受信バッファ不足

T

15

EEMCP_RSN_NTTO

106

後続メッセージ受信タイムアウト

T

16

EEMCP_RSN_RPLC

107

コネクションリプレースによる切断

T

17

EEMCP_RSN_INTV

108

タイマ値不正

T

18

EEMCP_RSN_TICD

109

タイマセット指示種別不正

T

19

EEMCP_RSN_SGED

110

セグメント完/未完種別不正

T

20

EEMCP_RSN_NTSZ

111

次メッセージのサイズ不正

T

21

EEMCP_RSN_NTAD

112

次メッセージの先頭アドレス不正

T

22

EEMCP_RSN_NWSZ

113

該当メッセージのサイズ不正

T

23

EEMCP_RSN_NWSS

114

残留該当メッセージのサイズ不正

T

24

EEMCP_RSN_NRTO

121

無通信状態監視タイムアウト

T

25

EEMCP_RSN_SRTO

122

同期型メッセージの送受信タイムアウト

T

26

UOCからのリターンコード

UOCからのリターンコード

入力セグメント判定UOCエラーリターン

T

27

EEMCP_LE_FREE

EEMCP_BY_API

1

ee_mcp_actle関数による論理端末の閉塞解除

T，U

28

EEMCP_BY_COMMAND

2

eemcpactleコマンドによる論理端末の閉塞解除

T，U

29

EEMCP_BY_SYSTEM

5

システムによる論理端末の閉塞解除

T，U

30

EEMCP_LE_HOLD

EEMCP_BY_API

1

ee_mcp_dctle関数による論理端末の閉塞

T，U

31

EEMCP_BY_COMMAND

2

eemcpdctleコマンドによる論理端末の閉塞

T，U

32

EEMCP_BY_SYSTEM

5

システムによる論理端末の閉塞

T，U

33

EEMCP_RSN_RBOV

104

受信バッファオーバフロー

T，U

34

EEMCP_RSN_NOBF

105

送受信バッファ不足

T，U

35

EEMCP_RSN_SBOV

115

送信バッファオーバフロー

T，U

36

EEMCP_RSN_BCNT

116

使用バッファ数不正

T，U

37

EEMCP_RSN_SEGM

117

有効セグメント不正

T，U

38

EEMCP_RSN_BADR

118

編集バッファアドレス不正

T，U

39

EEMCP_RSN_LENF

119

論理端末の閉塞解除不可※2

T，U

40

EEMCP_RSN_LECL

120

送受信失敗による論理端末の閉塞

T，U

41

UOCからのリターンコード

UOCからのリターンコード

入力メッセージ編集UOCまたは出力メッセージ編集UOCエラーリターン

T，U

（凡例）

T：pro_kindがEEMCP_UOC_PRO_TCP（TCP/IP）

U：pro_kindがEEMCP_UOC_PRO_UDP（UDP）

注※1

eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定する必要があります。

注※2

前に出力されたメッセージを確認してください。

●data1

MCPが使用する領域です。

●lebuf

MCPが使用する領域です。

●lebuf_size

MCPが使用する領域です。

●r_ipaddr

自システムのIPアドレスが設定されます。

下位4バイトに次の形式で設定されます。

●o_ipaddr

相手システムのIPアドレスが設定されます。

設定形式はr_ipaddrを参照してください。

●r_port

自システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●o_port

相手システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

r_ipaddr，o_ipaddr，r_port，o_portは次の条件をすべて満たした場合に設定されます。

pro_kindがEEMCP_UOC_PRO_TCP（TCP/IPプロトコル）

kindがEEMCP_CN_CLOSE（コネクション解放通知）以外

ee_mcp_actcn - コネクションの確立

機能

コネクションを確立します。

コネクションの確立後，MCP後処理トランザクションを起動します。

コネクションの確立は非同期で実行されるため，この関数で返されるリターン値がEE_OKの場合でも，コネクションの確立が失敗しているときがあります。コネクションの確立結果は，MCP後処理トランザクションによって通知されます。

この関数で指定したコネクションID中に，相手システム（eemcpcnオペランド -o）を省略したeemcpcnオペランドのコネクションIDが含まれていた場合は，指定した全コネクションIDのコネクション確立処理は実行されません。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_actcn(EEMCPCNINF *info， int flags)

UAPで値を設定する引数

●info

コネクションを確立するコネクションIDを設定したEEMCPCNINF構造体ポインタのアドレスを設定します。

typedef struct ee_mcp_cninf {
        int         con_num;
        char        con_id1[9];
        char        con_id2[9];
        char        con_id3[9];
        char        con_id4[9];
        char        con_id5[9];
        char        con_id6[9];
        char        con_id7[9];
        char        con_id8[9];
}EEMCPCNINF;

con_numにはコネクションを確立するコネクションID数を1〜8の範囲で設定します。

con_id1〜con_id8にはコネクションを確立するコネクションIDを設定します。con_id1〜con_id8に設定できるのは，eemcpcn定義コマンドの-yオプションのmodeオペランドにclientを指定したコネクションだけです。コネクションIDの長さは最大8バイトです。コネクションIDの後ろはNULL文字を付けてください。

コネクションIDは，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，con_numに1を設定しcon_id1に「*」または「先行文字列*」の形式で設定してください。

「*」を設定した場合はすべてのコネクションを確立します。「先行文字列*」を設定した場合は先行文字列で始まるすべてのコネクションを確立します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_CON_NAME

指定したコネクションIDの中に不正なコネクションIDがあります。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_INFO

infoに設定した値が間違っています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_NUM

con_numに設定した値が間違っています。

EEMCPER_OPTION

flagsに設定した値が間違っています。

EEMCPER_PART

一部のコネクションの確立に失敗しました。

EEMCPER_SYSERR

システムエラーが発生しました。

EEMCPER_ALREADY

指定したコネクションはすでに使用中です。

注意事項

コネクションの確立は非同期で行われます。したがって，この関数でのリターン値がEE_OKの場合でも，コネクションの確立に失敗していることがあります。コネクションの確立結果はMCP後処理トランザクションで通知されます。

ee_mcp_actcn_to - 相手システムを指定したコネクションの確立

機能

相手システムを指定してコネクションを確立します。

コネクション確立後，MCP後処理トランザクションを起動します。

eemcpcn定義の-oオプション指定値（相手システム情報）を無視します。

コネクションの確立は非同期で行われます。そのため，この関数で返されるリターン値がEE_OKであった場合でも，コネクションの確立が失敗しているときがあります。コネクションの確立結果はMCP後処理トランザクションによって通知されます。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_actcn_to(EEMCPCNINFTO *info, int flags)

UAPで値を設定する引数

●info

コネクションの確立を行う相手システムを設定したEEMCPCNINFTO構造体ポインタのアドレスを設定します。

typedef struct ee_mcp_cninf_to {
        char          con_id[9];
        char          resv01[7];
        unsigned char o_ipaddr[16];
        char          o_host[256];
        unsigned short o_port;
        char          resv02[6];
}EEMCPCNINFTO;

●con_id

コネクションを確立するコネクションIDを設定します。

コネクションIDの長さは最大8バイトです。後ろにNULL文字を付けてください。

8バイトに満たないコネクションIDを設定する場合は，コネクションIDの後ろにNULL文字を付けてください。

●resv01

領域をNULL文字で埋めます。

●o_ipaddr

相手システムのIPアドレスを設定します。

o_hostを設定した場合はo_ipaddrの設定は不要です。o_host，o_ipaddr共に設定した場合はo_ipaddr設定値が有効になります。

IPアドレスを設定する場合は，xxx.xxx.xxx.xxxの形式で設定します。xxxは，0〜255（10進数）で設定してください。ただし，0.0.0.0，255.255.255.255の設定は不可とします。

IPアドレスはo_ipaddrの下位4バイトに次の形式で設定します。

●o_host

相手システムのホスト名を設定します。

o_ipaddrを設定した場合はo_hostの設定は不要です。o_host，o_ipaddr共に設定した場合はo_ipaddr設定値が有効になります。

ホスト名の長さは最大255文字です。後ろにNULL文字を付けてください。255文字に満たないホスト名を設定する場合は，ホスト名の後ろにNULL文字を付けてください。

ホスト名は，/etc/hostsファイル，DNSなどで，IPアドレスとマッピングできるように指定する必要があります。

●o_port

相手システムのポート番号を設定します。

ポート番号はホストバイトオーダー形式の数値で設定してください。数値は，1〜65535の符号なし整数で設定してください。

●resv02

領域をNULL文字で埋めます。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に受け付けました。

EECOMER_ENVIRON

TP1/EE環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_CON_NAME

指定したコネクションIDが不正です。

EEMCPER_ADDRESS

指定したIPアドレスまたはホスト名が不正です。

EEMCPER_PORT

指定したポート番号が不正です。

EEMCPER_OPTION

flags設定した値が間違っています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_SYSERR

システムエラーが発生しました。

EEMCPER_INFO

infoに設定した値が間違っています。

EEMCPER_ALREADY

指定したコネクションはすでに使用中です。

ee_mcp_actle - 論理端末の閉塞解除

機能

論理端末を閉塞解除します。

論理端末の閉塞解除後，MCP後処理トランザクションを起動します。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_actle(EEMCPLEINF *info， int flags)

UAPで値を設定する引数

●info

閉塞解除する論理端末名を設定したEEMCPLEINF構造体ポインタのアドレスを設定します。

typedef struct ee_mcp_leinf {
        int         le_num;
        char        le_name1[9];
        char        le_name2[9];
        char        le_name3[9];
        char        le_name4[9];
        char        le_name5[9];
        char        le_name6[9];
        char        le_name7[9];
        char        le_name8[9];
}EEMCPLEINF;

le_numには閉塞解除する論理端末数を1〜8の範囲で設定します。

le_name1〜le_name8には閉塞解除する論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

論理端末名は，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，le_numに1を設定しle_name1に「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべての論理端末を閉塞解除します。「先行文字列*」の場合は先行文字列で始まるすべての論理端末を閉塞解除します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_INFO

infoに設定した値が間違っています。

EEMCPER_LE_NAME

指定した論理端末名の中に不正な論理端末名があります。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_NUM

le_numに設定した値が間違っています。

EEMCPER_OPTION

flagsに設定した値が間違っています。

EEMCPER_PART

一部の論理端末の閉塞解除に失敗しました。

EEMCPER_SYSERR

システムエラーが発生しました。

注意事項

指定した論理端末名がUDP端末の場合は，該当ポートをオープンします。

論理端末の閉塞解除は非同期で行われます。したがって，この関数でのリターン値がEE_OKであった場合でも，論理端末の閉塞解除に失敗している場合があります。論理端末の閉塞解除の結果はMCP後処理トランザクションで通知されます。

ee_mcp_cninfo - コネクション情報の取得

機能

コネクション情報を取得します。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_cninfo(EELONG action, char *idname,
                  EEMCPCONIDINF *info, int flags)

UAPで値を設定する引数

●action

情報を取得するコネクションの指定方法を次の形式で設定します。

｛EEMCPLE｜EEMCPCN｝

EEMCPLE

情報を取得するコネクションを論理端末名称で指定するときに設定します。

EEMCPCN

情報を取得するコネクションをコネクションIDで指定するときに設定します。

●idname

情報を取得するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定し，文字列の最後にNULL文字を付けます。

●info

コネクション状態を格納する領域ee_mcp_conid_infを設定します。

●flags

EENOFLAGSを設定します。

MCPから値が返される引数

●info

この関数の対象となったコネクションの情報が，構造体ee_mcp_conid_infで返されます。ただし，コネクション情報が設定されるのはリターン値がEE_OKの場合だけです。

構造体の形式を次に示します。

typedef struct ee_mcp_conid_inf {
        char           con_id[9];
        char           resv01[1];
        unsigned short id_len;
        char           pname[4];
        unsigned char  r_ipaddr[16];
        unsigned char  o_ipaddr[16];
        unsigned short r_port;
        unsigned short o_port;
        char resv02[4];
}EEMCPCONIDINF;

●con_id

要求したコネクションのコネクションIDが設定されます。

●resv01

領域をNULL文字で埋めます。

●id_len

要求したコネクションのコネクションIDの文字列長が設定されます。

●pname

要求したコネクションのプロトコル種別が文字列で設定されます。

''TCP''

TCP/IPプロトコル

●r_ipaddr

相手システムのIPアドレスを設定します。

o_hostを設定した場合はo_ipaddrの設定は不要です。o_host，o_ipaddr共に設定した場合はo_ipaddr設定値が有効になります。

IPアドレスを設定する場合は，xxx.xxx.xxx.xxxの形式で設定します。xxxは，0〜255（10進数）で設定してください。ただし，0.0.0.0，255.255.255.255の設定は不可とします。

IPアドレスはo_ipaddrの下位4バイトに次の形式で設定します。

●o_ipaddr

相手システムのIPアドレスを設定します。

IPアドレスの設定形式に関してはr_ipaddrを参照してください。

●r_port

相手システムのポート番号を設定します。

ポート番号はホストバイトオーダー形式の数値で設定してください。数値は，1〜65535の符号なし整数で設定してください。

●o_port

相手システムのポート番号を設定します。

ポート番号の設定形式に関してはr_portを参照してください。

●resv02

領域をNULL文字で埋めます。

リターン値

リターン値

意味

EE_OK

正常に受け付けました。

EECOMER_ENVIRON

TP1/EE環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EEMCPER_ACTION

actionに設定した値が間違っています。

EEMCPER_IDNAME

idnameに設定した値が間違っています。

EEMCPER_OPTION

flagsに設定した値が間違っています。

EEMCPER_ACT_BEGIN

指定したコネクションが確立処理中状態です。

EEMCPER_DCT

指定したコネクションが未確立状態です。

EEMCPER_DCT_BEGIN

指定したコネクションが解放処理中状態です。

EEMCPER_INFO

infoに設定した値が間違っています。

ee_mcp_dctcn - コネクションの解放

機能

コネクションを解放します。

コネクションの解放後，MCP後処理トランザクションを起動します。

形式

ANSI C，C++の形式

#include <eemcp.h>
int  ee_mcp_dctcn(EEMCPCNINF *info， char form， int flags)

UAPで値を設定する引数

●info

コネクションを解放するコネクションIDを設定したEEMCPCNINF構造体ポインタのアドレスを設定します。

typedef struct ee_mcp_cninf {
        int         con_num;
        char        con_id1[9];
        char        con_id2[9];
        char        con_id3[9];
        char        con_id4[9];
        char        con_id5[9];
        char        con_id6[9];
        char        con_id7[9];
        char        con_id8[9];
}EEMCPCNINF;

con_numにはコネクションを解放するコネクションID数を1〜8の範囲で設定します。

con_id1〜con_id8にはコネクションを解放するコネクションIDを設定します。コネクションIDの長さは最大8バイトです。コネクションIDの後ろはNULL文字を付けてください。

コネクションIDは，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，con_numに1を設定しcon_id1に「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべてのコネクションを解放します。「先行文字列*」の場合は先行文字列で始まるすべてのコネクションを解放します。

●form

コネクションの解放形態を設定します。この設定値は，eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定した場合に有効になります。finを指定した場合は，formの設定値に関係なくFINパケットを送信してコネクションを解放します。

EEMCPFRC

RSTパケットを送信して，コネクションを強制的に解放する場合に設定します。

EEMCPNRM

FINパケットを送信して，コネクションを解放する場合に設定します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_CON_NAME

指定したコネクションIDの中に不正なコネクションIDがあります。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_FORM

formに設定した値が間違っています。

EEMCPER_INFO

infoに設定した値が間違っています。

EEMCPER_NUM

con_numに設定した値が間違っています。

EEMCPER_OPTION

flagsに設定した値が間違っています。

EEMCPER_PART

一部のコネクションの解放に失敗しました。

EEMCPER_SYSERR

システムエラーが発生しました。

注意事項

コネクションの解放は非同期で行われます。したがって，この関数でのリターン値がEE_OKであった場合でも，コネクションの解放に失敗している場合があります。コネクションの解放結果はMCP後処理トランザクションで通知されます。

ee_mcp_dctle - 論理端末の閉塞

機能

論理端末を閉塞します。

論理端末の閉塞後，MCP後処理トランザクションを起動します。

形式

ANSI C，C++の形式

#include <eemcp.h>
int  ee_mcp_dctle(EEMCPLEINF *info， int flags)

UAPで値を設定する引数

●info

閉塞する論理端末名を設定したEEMCPLEINF構造体ポインタのアドレスを設定します。

typedef struct ee_mcp_leinf {
        int         le_num;
        char        le_name1[9];
        char        le_name2[9];
        char        le_name3[9];
        char        le_name4[9];
        char        le_name5[9];
        char        le_name6[9];
        char        le_name7[9];
        char        le_name8[9];
}EEMCPLEINF;

le_numには閉塞する論理端末数を1〜8の範囲で設定します。

le_name1〜le_name8には閉塞する論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

論理端末名は，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，le_numに1を設定しle_name1に「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべての論理端末を閉塞します。「先行文字列*」の場合は先行文字列で始まるすべての論理端末を閉塞します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_INFO

infoに設定した値が間違っています。

EEMCPER_LE_NAME

指定した論理端末名の中に不正な論理端末名があります。

EEMCPER_NUM

le_numに設定した値が間違っています。

EEMCPER_OPTION

flagsに設定した値が間違っています。

EEMCPER_PART

一部の論理端末の閉塞に失敗しました。

EEMCPER_SYSERR

システムエラーが発生しました。

注意事項

指定した論理端末名がUDP端末の場合は，該当ポートをクローズします。

論理端末の閉塞は非同期で行われます。したがって，この関数で返されるリターン値がEE_OKであった場合でも，論理端末の閉塞に失敗している場合があります。論理端末の閉塞結果はMCP後処理トランザクションで通知されます。

ee_mcp_send - 非同期一方送信メッセージの送信

機能

相手システムへ非同期一方送信メッセージを送信します。非同期一方送信メッセージは，一つのセグメントで構成されます。

TP1/FSPを使用する場合，eemcpfunc定義コマンドの-oオプションのoutputmessageオペランドが設定されているとき，またはTP1/EEのユーザサービス関連定義のservice_attr定義コマンドが設定されているときは，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

ANSI C，C++の形式

#include <eemcp.h>
int  ee_mcp_send(int action， int commform， char *termnam，
                 char *resv01，char *senddata， int sdataleng，
                 char *resv02， int opcd)

UAPで値を設定する引数

●action

送信する論理メッセージのセグメントを次の形式で指定します。

EEMCPEMI

単一セグメントを示すEEMCPEMIを設定します。

●commform

一方送信を示すEEMCPOUTを設定します。

●termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

●resv01

NULL文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は，sdatalengを参照してください。

TCP/IPの場合

UDPの場合

●sdataleng

送信するセグメントの長さを設定します。設定できる最大値は，メッセージの最大サイズを拡張しているかどうか（eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値）によって，次の表に示すとおり異なります。

表5‒7　メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし（msglenオペランドにnormalを指定）

32000※

32000※

あり（msglenオペランドにextendを指定）

8388608

65531※

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

●resv02

NULL文字を設定します。

●opcd

一方送信メッセージの送信属性を指定します。

EENOFLAGS以外を複数指定する場合は，論理和で指定します。

EENOFLAGS

メッセージを非永続属性で，かつUDP送信時の送信先をsenddataの制御ヘッダで指定する場合に設定します。

EEMCP_PERMANENCE

永続メッセージとする場合に設定します。

MCPをクラスタ構成に組み込んだ場合（XTCサービス定義のcluster_modeオペランドにYを指定）にだけ有効となります。

EEMCP_DEFADDR

UDP送信時の送信先をeemcple定義コマンドの-oオプションで指定する場合に設定します。

なお，この値を指定した場合は，制御ヘッダの内容に関係なく，MCP構成定義で指定した送信先が有効になります。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_ACTION

actionに設定した値が間違っています。

EEMCPER_ARGUMENT

senddataに設定した値が間違っています。

EEMCPER_COMMFORM

commformに設定した値が間違っています。

EEMCPER_CONDITION

発行条件が不正です。

ee_trn_rollback_mark関数が発行済みです。

EEMCPER_LE_NAME

termnamに設定した論理端末名が間違っています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_MESSAGE_TOO_BIG

sdatalengに，送信できる最大サイズを超える値を設定しています。

EEMCPER_MESSAGE_TOO_SHORT

sdatalengに0（UDPの場合は24）以下の値を設定しています。

EEMCPER_OPTION

opcdに設定した値が間違っています。

EEMCPER_TERM_HOLD

termnamに設定した論理端末名は閉塞中です。

注意事項

この関数発行後に，ee_mcp_sendsync関数を発行した場合，ee_mcp_sendsync関数で送信したメッセージが先に送信されます。

送信要求したトランザクションがロールバックした場合，送信メッセージは破棄されます。

ERRTRNS上でこの関数を発行して，送信障害などのエラーが発生した場合，ERRTRNSは起動されないで，送信メッセージは破棄されます。

この関数を発行したトランザクションでは，トランザクションの最適化を行いません。

非永続メッセージのあとに，永続メッセージを送信した場合，永続メッセージが先に送信されます。

この関数は，トランザクションのコミット時に実行されます。したがって，トランザクションの同期点を取得する処理でエラーが起こった場合，この関数の処理は無効となります。

TP1/FSPを使用する場合，次のリターン値のときは，「OJ（出力メッセージ）」は取得されません。

EECOMER_ENVIRON，EECOMER_CNDUOC，EEMCPER_MESSAGE_TOO_BIG，EEMCPER_LE_NAME，EEMCPER_ACTION，EEMCPER_OPTION，EEMCPER_COMMFORM，EEMCPER_MESSAGE_TOO_SHORT，EEMCPER_ARGUMENT

ee_mcp_sendrecv - 同期型メッセージの送受信

機能

相手システムへ同期送受信メッセージを送信します。同期送受信メッセージは，一つのセグメントで構成されます。

TP1/FSPを使用する場合，アプリケーション定義のeemcpfuncの-oオプションのoutputmessageが設定されている場合，または，ユーザサービス関連定義service_attrの-mオプションが設定されている場合に，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

ANSI C，C++の形式

P-8264-9311の場合

#include <eemcp.h>
int ee_mcp_sendrecv(int action, int commform, char *termnam, char *resv01,
                    char *senddata, int sdataleng, char *recvdata,
                    int *rdataleng, int inbufleng, int *time,
                    int watchtime, int opcd)

P-8864-9311の場合

#include <eemcp.h>
int ee_mcp_sendrecv(int action, int commform, char *termnam, char *resv01,
                    char *senddata, int sdataleng, char *recvdata,
                    int *rdataleng, int inbufleng, unsigned int *time,
                    int watchtime, int opcd)

UAPで値を設定する引数

●action

送信する論理メッセージのセグメントを次の形式で指定します。

EEMCPEMI

単一セグメントを示すEEMCPEMIを設定します。

●commform

同期型メッセージ送受信を示す，EEMCPIOを設定します。

●termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

●resv01

NULL文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は，sdatalengを参照してください。

TCP/IPの場合

UDPの場合

●sdataleng

送信するセグメントの長さを設定します。設定できる最大値は，メッセージの最大サイズを拡張しているかどうか（eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値）によって，次の表に示すとおり異なります。

表5‒8　メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし（msglenオペランドにnormalを指定）

32000※

32000※

あり（msglenオペランドにextendを指定）

8388608

65531※

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

●recvdata

セグメントを受信する領域を設定します。この領域は関数発行元で用意してください。

データ形式については，次の図を参照してください。

図5‒1　受信のデータ形式

●rdataleng

受信したセグメントの長さを格納する領域を設定します。この領域は関数発行元で用意してください。

受信セグメントの長さはrdatalengで指定します。rdatalengで設定される最大値を次の表に示します。

表5‒9　rdatalengで指定できる最大値

メッセージの最大サイズ拡張有無（eemcpfuncコマンドの-mオプションmsglenオペランドの指定）

受信メッセージ長に設定される最大値（単位：バイト）

なし（normalを指定）

TP1/EEサービス定義のrecv_message_buf_size（受信バッファサイズ）指定値

あり（extendを指定）

8388608（8M）

●inbufleng

セグメントを受信する領域の長さを設定します。領域の長さは，図5-1に示すinbuflengを参照してください。

領域の長さは，rdataleng＋8バイト以上の長さを設定してください。

●time

メッセージを受信した時刻を格納する領域を設定します。この領域は関数発行元で用意してください。

●watchtime

ee_mcp_sendrecvを呼び出してから終了するまでの最大時間（1〜65535 単位：秒）を設定します。0を設定した場合，MCP共通定義（eemcpcn -b sndrcvtim）で指定した同期送受信監視時間が仮定されます。負の値を設定した場合は，無限に待ち合わせをします。

●opcd

EENOFLAGS

指定した論理端末がすでに送信処理中の場合，送信可能となるまで待ち合わせるときに設定します。待ち合わせている間の時間は，watchtimeに設定した時間に含まれます。

EEMCP_NOWAIT

指定した論理端末がすでに送信処理中の場合，エラーリターンするときに設定します。

TP1/EEから値が返される引数

リターン値がEE_OKまたはEEMCPER_OVERFLOWの場合だけ，次に示すrecvdata，rdataleng，timeの領域は参照可能です。これ以外のリターン値の場合は参照しないでください。

●recvdata

受信したメッセージの先頭アドレスが返されます。

●rdataleng

受信したメッセージの長さが返されます。

●time

メッセージを受信した時刻が，1970年1月1日0時0分0秒からの通算の秒数で返されます。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_ENVIRON

TP1/EE環境下にありません。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_MESSAGE_TOO_BIG

sdatalengに送信できるサイズを超える値を設定しています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

送信バッファ数または受信バッファ数が不足しました。メッセージサイズがOBFサイズまたはIBFサイズを超過しました。

EEMCPER_LE_NAME

termnamに設定した論理端末名が間違っています。

EEMCPER_ACTION

actionに設定した値が間違っています。

EEMCPER_OPTION

opcdに設定した値が間違っています。

EEMCPER_COMMFORM

commformに設定した値が間違っています。

EEMCPER_MESSAGE_TOO_SHORT

sdatalengに0以下の値を設定しています。

EEMCPER_TERM_HOLD

termnamに設定した論理端末名は閉塞中です。または，メッセージ送信中にコネクションの解放を検知しました。

EEMCPER_TIME

watchtimeに設定した時間が経過しました。

EEMCPER_SENDER

システムに対する送信時に障害が発生しました。

EEMCPER_UOC_ERR

UOCがエラーリターンしました。

EEMCPER_UOC_INVALID

UOCで障害が発生しました。

EEMCPER_ARGUMENT

senddata，recvdata，rdataleng，time，watchtimeに設定した値が間違っています。

EEMCPER_OVERFLOW

inbuflengの指定値を超えるセグメントを受信しました。inbuflengの指定値を超えた部分は切り捨てられました。

EEMCPER_INBUFLENG

inbuflengの指定値が不足しています。9バイト以上の領域を確保してください。

EEMCPER_SENDER_RECV

メッセージ受信が仕掛かり中です。

EEMCPER_TERM_IN_USE

出力先の論理端末は，ほかのUAPで仕掛かり中です。

EEMCPER_SENDTIME

メッセージ送信完了監視タイマ（MCP構成定義eemcpcnの-bオプションsndcmptimオペランドに指定）のタイムアウトが発生しました。

EEMCPER_RECVER

受信待ちでコネクション障害が発生しました。

注意事項

ee_mcp_send関数発行後，同一UAP内でee_mcp_sendrecv関数を発行した場合，ee_mcp_sendrecv関数のメッセージが先に送信されます。

リターン値がEEMCPER_OVERFLOWの場合，rdatalengにはinbuflengの領域に格納できた受信データのサイズが設定されます。

TP1/FSPを使用する場合，次のリターン値のときは，OJは取得されません。

EECOMER_ENVIRON，EECOMER_CNDUOC，EEMCPER_CONDITION，EEMCPER_MESSAGE_TOO_BIG，EEMCPER_LE_NAME，EEMCPER_ACTION，EEMCPER_OPTION，EEMCPER_COMMFORM，EEMCPER_MESSAGE_TOO_SHORT，EEMCPER_ARGUMENT，EEMCPER_INBUFLENG

ee_mcp_sendsync - 同期一方送信メッセージの送信

機能

相手システムへ同期一方送信メッセージを送信します。同期一方送信メッセージは，一つのセグメントで構成されます。

TP1/FSPを使用する場合，eemcpfunc定義コマンドの-oオプションのoutputmessageオペランドが設定されているとき，またはTP1/EEのユーザサービス関連定義のservice_attr定義コマンドが設定されているときは，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

ANSI C，C++の形式

#include <eemcp.h>
int  ee_mcp_sendsync(int action， int commform， char *termnam，
                     char *resv01，char *senddata，
                     int sdataleng，char *resv02，
                     int watchtime，int opcd)

UAPで値を設定する引数

●action

送信する論理メッセージのセグメントを次の形式で指定します。

EEMCPEMI

単一セグメントを示すEEMCPEMIを設定します。

●commform

EENOFLAGSを設定します。

●termnam

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろはNULL文字を付けてください。

●resv01

NULL文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。データ形式については，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

●sdataleng

送信するセグメントの長さを設定します。設定できる最大値については，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

●resv02

NULL文字を設定します。

●watchtime

この関数を呼び出してから終了するまでの最大時間（単位：秒）を設定します。ここでの最大時間とは，ソケット空き待ち時間および送信開始から自システムのTCP/IPの送信バッファへの書き込み完了までの時間の合計をいいます。65535を最大値として，値を設定できます。

0を設定した場合，eemcpcn定義コマンドの-bオプションのsndsynctimオペランドで指定した，同期一方送信時のメッセージ送信完了待ち時間が仮定されます。負の値を設定した場合は，時間を監視しません。無限に送信完了を待ちます。UDPプロトコルを使用した通信時は無視されます。

●opcd

同期型メッセージの送信属性を指定します。

EENOFLAGS

UDP送信時の送信先をsenddataの制御ヘッダで指定する場合に設定します。

EEMCP_DEFADDR

UDP送信時の送信先をeemcple定義コマンドの-oオプションで指定する場合に設定します。

なお，この値を指定した場合は，制御ヘッダの内容に関係なく，MCP構成定義で指定した送信先が有効になります。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

UOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_ACTION

actionに設定した値が間違っています。

EEMCPER_ARGUMENT

senddata，およびwatchtimeに設定した値が間違っています。

EEMCPER_COMMFORM

commformに設定した値が間違っています。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_LE_NAME

termnamに設定した論理端末名が間違っています。

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

EEMCPER_MESSAGE_TOO_BIG

sdatalengに，送信できる最大サイズを超える値を設定しています。

EEMCPER_MESSAGE_TOO_SHORT

sdatalengに0（UDPの場合は24）以下の値を設定しています。

EEMCPER_OPTION

opcdに設定した値が間違っています。

EEMCPER_SENDER

システムに対する送信時に障害が発生しました。

EEMCPER_TERM_HOLD

termnamに設定した論理端末名は閉塞中です。

EEMCPER_TIME

watchtimeに設定した時間が経過しました。

EEMCPER_UOC_ERR

出力メッセージ編集UOCがエラーリターンしました。

EEMCPER_UOC_INVALID

出力メッセージ編集UOCで障害が発生しました。

注意事項

ee_mcp_send関数発行後に，この関数を発行した場合，この関数で送信したメッセージが先に送信されます。

TP1/FSPを使用する場合，次のリターン値のときは，「OJ（出力メッセージ）」は取得されません。

EECOMER_ENVIRON，EECOMER_CNDUOC，EEMCPER_MESSAGE_TOO_BIG，EEMCPER_LE_NAME，EEMCPER_ACTION，EEMCPER_OPTION，EEMCPER_COMMFORM，EEMCPER_MESSAGE_TOO_SHORT，EEMCPER_ARGUMENT

ee_mcp_utrace_put - ユーザトレースの取得

機能

ユーザ固有のトレースデータをMCPトレースに出力します。

出力したトレースデータは，eemcpedコマンドまたはeemcpdumpコマンドで編集できます。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_utrace_put(unsigned short   event_id，
                      unsigned short   datalen，
                      char             *buffaddr，
                      EELONG           flags)

UAPで値を設定する領域

●event_id

トレースを取得するイベントのイベントIDを設定します。0x0700〜0x0740の範囲のイベントIDを設定してください。

●datalen

トレースのデータ長を設定します（単位：バイト）。4〜32000の範囲のデータ長を設定してください。

●buffaddr

トレースデータが格納されているバッファの先頭ポインタを設定します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

ee_mcp_utrace_put関数を使用できないUOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_ARGUMENT

データ長以外の引数に設定した値が間違っています。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_MESSAGE_TOO_BIG

データ長に32000を超える値を設定しています。

EEMCPER_MESSAGE_TOO_SHORT

データ長に4未満の値を設定しています。

EEMCPER_STOP

トラブルシュート機能が縮退中です。

ee_mcp_utrace_put_long - ユーザトレースの取得（データ長拡張用）

機能

データ長拡張時に，ユーザ固有のトレースデータをMCPトレースに出力します。

出力したトレースデータは，eemcpedコマンドまたはeemcpdumpコマンドで編集できます。

形式

ANSI C，C++の形式

#include <eemcp.h>
int ee_mcp_utrace_put_long(unsigned short   event_id,
                           EEULONG          datalen,
                           char             *buffaddr,
                           EELONG           flags)

UAPで値を設定する領域

●event_id

トレースを取得するイベントのイベントIDを設定します。0x0700〜0x0740の範囲のイベントIDを設定してください。

●datalen

トレースのデータ長を設定します（単位：バイト）。4〜8388608の範囲のデータ長を設定してください。

●buffaddr

トレースデータが格納されているバッファの先頭ポインタを設定します。

●flags

EENOFLAGSを設定します。

リターン値

リターン値

意味

EE_OK

正常に終了しました。

EECOMER_CNDUOC

ee_mcp_utrace_put_long関数を使用できないUOCから発行しているため，この機能は使用できません。

EECOMER_ENVIRON

TP1/EEの環境下にありません。

EEMCPER_ARGUMENT

データ長以外の引数に設定した値が間違っています。

EEMCPER_CONDITION

発行条件が不正です。

EEMCPER_MESSAGE_TOO_BIG

データ長に8388608を超える値を設定しています。

EEMCPER_MESSAGE_TOO_SHORT

データ長に4未満の値を設定しています。

EEMCPER_STOP

トラブルシュート機能が縮退中です。

注意事項

トレースのデータ長がMCPトレースファイル出力用最大バッファサイズ（eemcptrc定義コマンドの-bオプションのbufferszオペランドで指定）よりも大きい場合，データの末尾を切り捨てて出力します。切り捨てが起きた場合に取得されるデータのサイズ（単位：バイト）は，次に示す計算式で求められます。

（（MCPトレースファイル出力用最大バッファサイズ × 1024）− 140）

5.3　ライブラリ関数（COBOL言語）

COBOL言語のライブラリ関数について説明します。

COBOL-UAP作成用プログラムの説明形式

COBOL-UAP作成用プログラムの説明形式については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

サービスプログラム（SPP）の作成

SPPはサービスを提供するUAPです。ここでは，MCPでのSPPの文法について説明します。

形式

PROGRAM-ID. プログラム名.
LINKAGE SECTION.
01一意名1.
  02 データ名A  PIC X(n).
01一意名2.
  02 データ名B  PIC S9(9) COMP.
01一意名3.
  02 データ名C  PIC X(n).
01 一意名4.
  02 データ名D  PIC S9(9) COMP.
01 一意名5.
  02 データ名E  PIC 9(9) COMP.       /*情報長                        */
  02 データ名F  PIC 9(9) COMP.       /*サービスグループ名長          */
  02 データ名G  PIC X(32).           /*サービスグループ名            */
  02 データ名H  PIC 9(9) COMP.       /*サービス名長                  */
  02 データ名I  PIC X(32).           /*サービス名                    */
  02 データ名J  PIC X(2).            /*トランザクション種別          */
  02 データ名K  PIC X(1).            /*自動閉塞有無                  */
  02 データ名L  PIC X(1).            /*コミット有無                  */
  02 データ名M  PIC 9(9) COMP.       /*処理スレッド通番              */
  02 データ名N  PIC 9(9) COMP.       /*エラー要因コード              */
  02 データ名O  PIC 9(9) COMP.       /*ユーザIFAエリアサイズ         */
  02 FILLER  PIC X(4).                /*予備                          */
  02 データ名P  ADDRESS.             /*ユーザIFAエリアポインタ       */
  02 データ名Q  PIC 9(9) COMP.       /*ユーザSATエリアサイズ         */
  02 FILLER  PIC X(4).                /*予備                          */
  02 データ名R  ADDRESS.             /*ユーザSATエリアポインタ       */
  02 データ名S  PIC X(1).            /*応答要否                      */
  02 データ名T  PIC X(1).            /*メッセージ状態                */
  02 データ名U  PIC X(1).            /*プロセス起動要因              */
  02 データ名V  PIC X(1).            /*前回プロセス終了要因          */
  02 データ名W  PIC X(1).            /*プロセス終了要因              */
  02 データ名X  PIC X(1).            /*スレッドダウン種別            */
  02 データ名Y  PIC X(1).            /*異常発生トランザクション種別  */
  02 データ名Z  PIC X(1).            /*拡張トランザクション種別      */
  02 データ名AA  PIC 9(9) COMP.      /*リソースマネジャ数            */
  02 データ名AB  PIC S9(9) COMP.     /*リソースマネジャ接続状態      */
  02 データ名AC  PIC 9(9) COMP.      /*送信サービスグループ名長      */
  02 データ名AD  PIC X(32).          /*送信サービスグループ名        */
  02 データ名AE  PIC 9(9) COMP.      /*送信サービス名長              */
  02 データ名AF  PIC X(32).          /*送信サービス名                */
  02 データ名AG  PIC 9(9) COMP.      /*異常発生処理スレッド通番      */
  02 FILLER  PIC X(4).                /*予備                          */
  02 データ名AH  ADDRESS.   /*拡張トランザクションインタフェース情報 */
  02 データ名AI  ADDRESS. /*XTC拡張トランザクションインタフェース情報*/
  02 データ名AJ  ADDRESS. /*MCP拡張トランザクションインタフェース情報*/
          :
          :

PROCEDURE DIVISION USING 一意名1 一意名2 一意名3 一意名4 一意名5
          :
サービスの処理
          :
EXIT PROGRAM.

機能

サービスを実行するSPPのサービスプログラムです。サービスプログラムは，上記の形式で任意に作成してください。

サービス名は，サービスプログラムのプログラムIDに対応させます。この対応づけは，UAPの実行環境を設定するときに指定します。UAPの実行環境を設定する手順を次に示します。

TP1/EEでの設定

ユーザサービス関連定義で指定します。詳細については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

MCPでの設定

MCP後処理トランザクション起動サービス名は，eemcpfunc定義コマンドで指定します。詳細については，「4.3　MCP構成定義の詳細」の「eemcpfunc（アプリケーション定義）」を参照してください。

データ領域の設定

ここでは，データ領域の設定のうち，TP1/EEと異なる部分について説明します。そのほかのデータ領域情報については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

トランザクション種別（データ名J）がRLの場合にサービスプログラムに値が渡されるデータ領域を次の表に示します。

表5‒10　トランザクション種別（データ名J）がRLの場合のサービスプログラムに値が渡されるデータ領域

項番

データ領域

参照可否

1

入力パラメタ

×

2

入力パラメタ長

×

3

サービスプログラムの応答

×

4

応答の長さ

×

5

トランザクションインタフェース情報

○

（凡例）

○：参照できます。

×：参照できません。

■入力パラメタと入力パラメタ長の関係

入力パラメタ（in）と入力パラメタ長（in_len）の関係を次の図に示します（単位：バイト）。

TCP/IPの場合

UDPの場合

制御ヘッダについては，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

なお，MCPではサービスプログラムの応答（データ名C）を使用した応答送信はできません。

クライアントUAPから値が渡されるデータ領域

トランザクション種別がESの場合にTP1/EEと設定値が異なるデータ領域を次に示します。そのほかのデータ領域については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」およびマニュアル「TP1/EE/Extended Transaction Controller 使用の手引」を参照してください。

●データ名A

トランザクションと同期して送信する非同期一方送信のメッセージ送信API（CBLEEMCP('SEND ')）の入力パラメタ（データ名W）に設定した値（出力メッセージ編集UOC指定時は編集後の値※）が渡されます。

注※

メッセージの最大サイズを拡張している場合に，出力メッセージ編集UOCで不正なサイズを指定したときは，編集後の値を0バイトとします。また，入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合，編集後の値の末尾を切り捨てます。

●データ名B

トランザクションと同期して送信する非同期一方送信のメッセージ送信API（CBLEEMCP('SEND ')）の入力パラメタ（データ名U）に設定した値（出力メッセージ編集UOC指定時は編集後の値※）に8を加算した値が渡されます。

注※

メッセージの最大サイズを拡張している場合に，出力メッセージ編集UOCで不正なサイズを指定したときは，編集後の値を0バイトとします。また，入力メッセージ編集UOCで編集後に送信バッファ不足が発生した場合，編集後の値の末尾を切り捨てます。

●データ名D

参照できません。

その他

次に示す内容については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

TP1/EEから値が返されるデータ領域

UAPで値を設定するデータ領域

サービスプログラムの処理での注意

トランザクションとサービスプログラムの関係

ステータスコード

トランザクションインタフェース情報

ここでは，次に示す内容について説明します。

MCP後処理トランザクション

エラートランザクション（ERRTRNS）※

MCP拡張トランザクションインタフェース情報

注※

TP1/EEと異なる部分についてだけ説明します。

上記以外のトランザクションインタフェース情報の詳細については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

MCP後処理トランザクション

MCP後処理トランザクション（RL）はMCP固有のトランザクション種別です。MCP後処理トランザクションは，次に示すタイミングで起動します。

コネクションの確立または解放

論理端末の閉塞または閉塞解除

トランザクション種別がRLの場合に参照できるトランザクションインタフェース情報を次の表に示します。各トランザクションインタフェース情報については，マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。

表5‒11　トランザクション種別がRLの場合のトランザクションインタフェース情報

項番

トランザクションインタフェース情報

参照可否

1

情報長（データ名E）

○

2

サービスグループ名長（データ名F）

○

3

サービスグループ名（データ名G）

○

4

サービス名長（データ名H）

○

5

サービス名（データ名I）

○

6

トランザクション種別（データ名J）

○

7

自動閉塞有無（データ名K）

×

8

コミット有無（データ名L）

×

9

処理スレッド通番（データ名M）

○

10

エラー要因コード（データ名N）

×

11

ユーザIFAエリアサイズ（データ名O）

○

12

ユーザIFAエリアポインタ（データ名P）

○

13

ユーザSATエリアサイズ（データ名Q）

○

14

ユーザSATエリアポインタ（データ名R）

○

15

応答要否（データ名S）

×

16

メッセージ状態（データ名T）

○

17

プロセス起動要因（データ名U）

×

18

前回プロセス終了要因（データ名V）

×

19

プロセス終了要因（データ名W）

×

20

スレッドダウン種別（データ名X）

×

21

異常発生トランザクション種別（データ名Y）

×

22

拡張トランザクション種別（データ名Z）

×

23

リソースマネジャ数（データ名AA）

○

24

リソースマネジャ接続状態（データ名AB）

○

25

送信サービスグループ名長（データ名AC）

×

26

送信サービスグループ名（データ名AD）

×

27

送信サービス名長（データ名AE）

×

28

送信サービス名（データ名AF）

×

29

異常発生処理スレッド通番（データ名AG）

×

30

拡張トランザクションインタフェース情報（データ名AH）

×

31

XTC拡張トランザクションインタフェース情報（データ名AI）

△

32

MCP拡張トランザクションインタフェース情報（データ名AJ）

○

33

メッセージ種別（データ名AK）

×

34

エラートランザクション要因（データ名AL）

×

35

拡張ユーザIFAエリアサイズ（データ名AM）

○

36

拡張ユーザSATエリアサイズ（データ名AN）

○

37

トランザクション起動要因（データ名AO）

×

38

サーバ再起動回数（データ名AP）

×

39

トランザクション起動時刻（データ名AQ）

○

40

送信元のノード識別子（データ名AR）

×

41

トランザクションレベル名長（データ名AS）

○

42

トランザクションレベル名（データ名AT）

○

（凡例）

○：参照できます。

×：参照できません。

△：XTCを使用している場合だけ参照できます。

エラートランザクション（ERRTRNS）

トランザクション種別がESの場合に，TP1/EEと設定値が異なるエラー要因コード（err_code）を次に示します。

■エラー要因コード

10030

メモリ不足が発生しました。

10025

送信障害が発生しました。

10020

論理端末が閉塞中です。

10007

送信タイムアウトが発生しました。

10021

出力メッセージ編集UOCがエラーリターンしました。

10022

出力メッセージ編集UOCで障害が発生しました。

次のトランザクションインタフェース情報についてはTP1/EEからSPPに渡されません。

送信サービスグループ名長

送信サービスグループ名

送信サービス名長

送信サービス名

MCP拡張トランザクションインタフェース情報

MCP拡張トランザクションインタフェース情報は，データ名AJに設定される情報です。次に示す場合に参照できます。

トランザクション種別（データ名J）が「MN」，「E1」，「E2」，「E3」，「ES」または「ER」でメッセージ種別（データ名AK）が5または6の場合

トランザクション種別（データ名J）が「RL」の場合

データ名AJが示す構造体の形式を次に示します。

01 一意名.
  02 データ名MA  PIC S9(9) COMP.  /*コネクションIDサイズ                */
  02 データ名MB  PIC X(9).        /*コネクションID                      */
  02 FILLER       PIC X(3).        /*予備                                */
  02 データ名MC  PIC S9(9) COMP.  /*メッセージの入出力論理端末名サイズ  */
  02 データ名MD  PIC X(9).        /*メッセージの入出力論理端末名        */
  02 FILLER       PIC X(3).        /*予備                                */
  02 データ名ME  PIC S9(9) COMP.  /*プロトコル種別                      */
  02 データ名MF  PIC S9(9) COMP. /*種別コード                           */
  02 データ名MG  PIC S9(9) COMP. /*理由コード                           */
  02 FILLER      PIC X(4).        /*MCP使用領域                         */
  02 FILLER      ADDRESS.         /*MCP使用領域                         */
  02 データ名MH  ADDRESS.         /*MCP使用領域                         */
  02 データ名MI  PIC S9(9) COMP.  /*MCP使用領域                         */
  02 FILLER      PIC X(4).        /*予備                                 */
  02 データ名MJ  PIC X(16).       /*自システムのIPアドレス              */
  02 データ名MK  PIC X(16).       /*相手システムのIPアドレス            */
  02 データ名ML  PIC S9(4) COMP.  /*自システムのポート番号              */
  02 データ名MM  PIC S9(4) COMP.  /*自システムのポート番号              */
  02 FILLER      PIC X(28).       /*予備                                 */

●データ名MA

コネクションIDサイズが設定されます。

●データ名MB

コネクションIDが設定されます。

●データ名MC

メッセージの入出力論理端末名サイズが設定されます。

●データ名MD

メッセージの入出力論理端末名が設定されます。

●データ名ME

プロトコル種別として，次の値が設定されます。

1：TCP/IPプロトコル

2：UDPプロトコル

●データ名MF

種別として，次の値が設定されます。

1：コネクションの確立通知

2：コネクションの解放通知

3：論理端末の閉塞解除通知

4：論理端末の閉塞通知

●データ名MG

データ名MFに対する値が設定されます。

データ名MFに対するデータ名MGの値の意味を次の表に示します。

表5‒12　データ名MFに対するデータ名MGの値の意味

項番

データ名MF

データ名MG

意味

プロトコル

1

1

1

CBLEEMCP('ACTCN ')関数またはCBLEEMCP('ACTCNTO ')関数によるコネクションの確立

T

2

2

eemcpactcnコマンドまたはeemcpactcntoコマンドによるコネクションの確立

T

3

5

システムによるコネクションの確立

T

4

2

1

CBLEEMCP('DCTCN ')関数（データ名Cに「VALUE 'F'」設定時）によるコネクションの解放

T

5

2

eemcpdctcnコマンドによるコネクションの解放

T

6

3

CBLEEMCP('DCTCN ')関数（データ名Cに「VALUE 'N'」設定時）によるコネクションの強制解放

T

7

4

eemcpdctcnコマンド（-fオプションを指定時※1）によるコネクションの強制解放

T

8

5

システムによるコネクションの解放

T

9

6

システムによるコネクションの強制解放

T

10

101

コネクション確立不可※2

T

11

102

コネクション解放（相手システムからの解放）

T

12

103

コネクション解放（自システムからの解放）

T

13

104

受信バッファオーバフロー

T

14

105

受信バッファ不足

T

15

106

後続メッセージ受信タイムアウト

T

16

107

コネクションリプレースによる切断

T

17

108

タイマ値不正

T

18

109

タイマセット指示種別不正

T

19

110

セグメント完/未完種別不正

T

20

111

次メッセージのサイズ不正

T

21

112

次メッセージの先頭アドレス不正

T

22

113

該当メッセージのサイズ不正

T

23

114

残留該当メッセージのサイズ不正

T

24

121

無通信状態監視タイムアウト

T

25

122

同期型メッセージの送受信タイムアウト

T

26

UOCからのリターンコード

入力セグメント判定UOCエラーリターン

T

27

3

1

CBLEEMCP('ACTLE ')関数による論理端末の閉塞解除

T，U

28

2

eemcpactleコマンドによる論理端末の閉塞解除

T，U

29

5

システムによる論理端末の閉塞解除

T，U

30

4

1

CBLEEMCP('DCTLE ')関数による論理端末の閉塞

T，U

31

2

eemcpdctleコマンドによる論理端末の閉塞

T，U

32

5

システムによる論理端末の閉塞

T，U

33

104

受信バッファオーバフロー

T，U

34

105

送受信バッファ不足

T，U

35

115

送信バッファオーバフロー

T，U

36

116

使用バッファ数不正

T，U

37

117

有効セグメント不正

T，U

38

118

編集バッファアドレス不正

T，U

39

119

論理端末の閉塞解除不可※2

T，U

40

120

送受信失敗による論理端末の閉塞

T，U

41

UOCからのリターンコード

入力メッセージ編集UOCまたは出力メッセージ編集UOCエラーリターン

T，U

（凡例）

T：pro_kindがEEMCP_UOC_PRO_TCP（TCP/IP）

U：pro_kindがEEMCP_UOC_PRO_UDP（UDP）

注※1

eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定する必要があります。

注※2

前に出力されたメッセージを確認してください。

●データ名MH

MCPが使用する領域です。

●データ名MI

MCPが使用する領域です。

●データ名MJ

自システムのIPアドレスが設定されます。

下位4バイトに次の形式で設定されます。

●データ名MK

相手システムのIPアドレスが設定されます。

設定形式はデータ名MJを参照してください。

●データ名ML

自システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●データ名MM

相手システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

データ名MJ，データ名MK，データ名ML，データ名MMは次の条件をすべて満たした場合に設定されます。

データ名MEが1（TCP/IPプロトコル）

データ名MFが2（コネクション解放通知）以外

CBLEEMCP('ACTCN ') - コネクションの確立

機能

コネクションを確立します。

コネクションの確立後，MCP後処理トランザクションを起動します。

コネクションの確立は非同期で実行されるため，この関数で返されるリターン値が00000の場合でも，コネクションの確立が失敗しているときがあります。コネクションの確立結果は，MCP後処理トランザクションによって通知されます。

この関数で指定したコネクションID中に，相手システム（eemcpcnオペランド -o）を省略したeemcpcnオペランドのコネクションIDが含まれていた場合は，指定した全コネクションIDのコネクション確立処理は実行されません。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'ACTCN   '.
    02  データ名B    PIC X(5).
    02  FILLER        PIC X(3).
    02  データ名Z    PIC S9(9) COMP VALUE ZERO.
01  一意名2.
    02  FILLER        PIC X(4).
    02  データ名C    PIC 9(9)  COMP.
    02  データ名D    PIC X(9).
    02  データ名E    PIC X(9).
    02  データ名F    PIC X(9).
    02  データ名G    PIC X(9).
    02  データ名H    PIC X(9).
    02  データ名I    PIC X(9).
    02  データ名J    PIC X(9).
    02  データ名K    PIC X(9).

UAPで値を設定する引数

●データ名A

コネクションの確立を示す要求コードを「VALUE 'ACTCN△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

コネクションを確立するコネクションID数を設定します。1〜8の範囲で指定してください。

●データ名D，E，F，G，H，I，J，K

コネクションを確立するコネクションIDを設定します。コネクションIDはeemcpcn定義コマンドの-yオプションのmodeオペランドにclientを指定したコネクションだけ設定できます。

コネクションIDの長さは最大8バイトです。コネクションIDの後ろは空白で埋めてください。

コネクションIDは，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，データ名Cに1を設定して，データ名Dに「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべてのコネクションを確立します。「先行文字列*」の場合は先行文字列で始まるすべてのコネクションを確立します。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10005

データ名Zに設定した値が間違っています。

10008

データ名Cに設定した値が間違っています。

10009

発行条件が不正です。

10010

指定したコネクションIDの中に不正なコネクションIDがあります。

10027

システムエラーが発生しました。

10028

一部のコネクションの確立に失敗しました。

10030

メモリ不足が発生しました。

10048

指定したコネクションはすでに使用中です。

注意事項

コネクションの確立は非同期で行われます。したがって，この関数で返されるステータスコードが「00000」であった場合でも，コネクションの確立に失敗している場合があります。コネクションの確立結果はMCP後処理トランザクションで通知されます。

CBLEEMCP('ACTCNTO ') - 相手システムを指定したコネクションの確立

機能

コネクションを確立します。

コネクション確立後，MCP後処理トランザクションを起動します。

eemcpcn定義の-oオプション指定値（相手システム情報）を無視します。

コネクションの確立は非同期で行われます。そのため，この関数のステータスコード値が00000であった場合でも，コネクションの確立が失敗しているときがあります。コネクションの確立結果はMCP後処理トランザクションによって通知されます。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

01  一意名1.
    02  データ名A    PIC X(8) VALUE 'ACTCNTO '.
    02  データ名B    PIC X(5).
    02  FILLER       PIC X(3).
    02  データ名Z    PIC S9(9) COMP VALUE ZERO.
01  一意名2.
    02  データ名C    PIC X(9).
    02  FILLER       PIC X(7).
    02  データ名D    PIC X(16).
    02  データ名E    PIC X(256).
    02  データ名F    PIC 9(4) COMP-X.
    02  FILLER       PIC X(6).

UAPで値を設定するデータ領域

●データ名A

コネクションの確立を示す要求コードを「VALUE 'ACTCNTO△'」と設定します。

●データ名Z

0を設定します。

●データ名C

コネクションを確立するコネクションIDを設定します。コネクションIDはMCP関連定義のeemcpcnオペランドの-y modeにclientを指定したものに限ります。コネクションIDの長さは最大8バイトです。後ろに空白を設定してください。8バイトに満たないコネクションIDを設定する場合は，後ろを空白で埋めてください。

●データ名D

相手システムのIPアドレスを設定します。

データ名Eを設定した場合はデータ名Dの設定は不要です。データ名E，データ名D共に設定した場合はデータ名D設定値が有効になります。

IPアドレスを設定する場合は，xxx.xxx.xxx.xxxの形式で設定します。xxxは，0〜255（10進数）で設定してください。ただし，0.0.0.0，255.255.255.255の設定は不可とします。

IPアドレスはデータ名Dの下位4バイトに次の形式で設定します。

●データ名E

相手システムのホスト名を設定します。

データ名Dを設定した場合はデータ名Eの設定は不要です。データ名D，データ名E共に設定した場合はデータ名D設定値が有効になります。

ホスト名の長さは最大255文字です。ホスト名の後ろに空白文字を付けてください。

ホスト名は，/etc/hostsファイル，DNSなどで，IPアドレスとマッピングできるように指定する必要があります。

●データ名F

相手システムのポート番号を設定します。

ポート番号はホストバイトオーダー形式の数値で設定してください。数値は，1〜65535の符号なし整数で設定してください。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に受け付けました。

00001

TP1/EE環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10009

発行条件が不正です。

10005

データ名Zに設定した値が間違っています。

10040

指定したIPアドレスまたはホスト名が不正です。

10041

指定したポート番号が不正です。

10010

指定したコネクションIDが不正です。

10030

メモリ不足が発生しました。

10027

システムエラーが発生しました。

10048

指定したコネクションはすでに使用中です。

CBLEEMCP('ACTLE ') - 論理端末の閉塞解除

機能

論理端末を閉塞解除します。

論理端末の閉塞解除後，MCP後処理トランザクションを起動します。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'ACTCN   '.
    02  データ名B    PIC X(5).
    02  FILLER       PIC X(3).
    02  データ名Z   PIC S9(9) COMP ZERO.
01  一意名2.
    02  データ名C    PIC 9(9)  COMP.
    02  データ名D    PIC X(9).
    02  データ名E    PIC X(9).
    02  データ名F    PIC X(9).
    02  データ名G    PIC X(9).
    02  データ名H    PIC X(9).
    02  データ名I    PIC X(9).
    02  データ名J    PIC X(9).
    02  データ名K    PIC X(9).

UAPで値を設定する引数

●データ名A

論理端末の閉塞解除を示す要求コードを「VALUE 'ACTLE△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

閉塞解除する論理端末数を設定します。

1〜8の範囲で設定してください。

●データ名D，E，F，G，H，I，J，K

閉塞解除する論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろは空白で埋めてください。

論理端末名は，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，データ名Cに1を設定しデータ名Dに「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべての論理端末を閉塞解除します。「先行文字列*」の場合は先行文字列で始まるすべての論理端末を閉塞解除します。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10005

データ名Zに設定した値が間違っています。

10008

データ名Cに設定した値が間違っています。

10009

発行条件が不正です。

10011

指定した論理端末名の中に不正な論理端末名があります。

10027

システムエラーが発生しました。

10028

一部の論理端末の閉塞解除に失敗しました。

10030

メモリ不足が発生しました。

注意事項

指定した論理端末名がUDP端末の場合は，該当ポートをオープンします。

論理端末の閉塞解除は非同期で行われます。したがって，この関数で返されるステータスコードが「00000」であった場合でも，論理端末の閉塞解除に失敗している場合があります。論理端末閉塞解除の結果は，MCP後処理トランザクションで通知されます。

CBLEEMCP('CNINFO ') - コネクション情報の取得

機能

コネクション情報を取得します。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2 一意名3

01  一意名1.
    02  データ名A    PIC X(8) VALUE 'CNINFO '.
    02  データ名B    PIC X(5).
    02  FILLER       PIC X(3).
    02  データ名Z    PIC S9(9) COMP VALUE ZERO.
01  一意名2.
    02  データ名C    PIC X(3).
    02  データ名D    PIC X(9).
    02  FILLER       PIC X(4).
01  一意名3.
    02  データ名E    PIC X(9).
    02  FILLER       PIC X(1).
    02  データ名F    PIC S9(4) COMP.
    02  データ名G    PIC X(4).
    02  データ名H    PIC X(16).
    02  データ名I    PIC X(16).
    02  データ名J    PIC 9(4) COMP-X.
    02  データ名K    PIC 9(4) COMP-X.
    02  FILLER       PIC X(4).

UAPで値を設定するデータ領域

●データ名A

コネクションの確立を示す要求コードを「VALUE 'CNINFO△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

情報を取得するコネクションの指定方法を次の形式で設定します。

VALUE 'LE△'

情報を取得するコネクションを論理端末名称で指定するときに設定します。

VALUE 'CN△'

情報を取得するコネクションをコネクションIDで指定するときに設定します。

●データ名D

情報を取得するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定し，文字列の最後に空白文字を付けます。

TP1/EEから値が返されるデータ領域

データ名Eからデータ名Kが設定されるのはステータスコードが00000の場合だけです。

●データ名E

要求したコネクションのコネクションIDが設定されます。

コネクションIDは8バイト以内で設定し，文字列の最後にNULL文字を付けます。

●データ名F

要求したコネクションのコネクションIDの文字列長が設定されます。

●データ名G

要求したコネクションのプロトコル種別が設定されます。

VALUE ' TCP△'

TCP/IPプロトコル

●データ名H

自システムのIPアドレスが設定されます。

IPアドレスはデータ名Hの下位4バイトに次の形式で設定されます。

●データ名I

相手システムのIPアドレスが設定されます。

IPアドレスの設定形式に関してはデータ名Hを参照してください。

●データ名J

自システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●データ名K

相手システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に受け付けました。

00001

TP1/EE環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10005

データ名Zに設定した値が間違っています。

10004

データ名Cに設定した値が間違っています。

10044

データ名Dに設定した値が間違っています。

10045

指定したコネクションが確立処理中状態です。

10046

指定したコネクションが解放処理中状態です。

10047

指定したコネクションが未確立状態です。

CBLEEMCP('DCTCN ') - コネクションの解放

機能

コネクションを解放します。

コネクションの解放後，MCP後処理トランザクションを起動します。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'DCTCN   '.
    02  データ名B    PIC X(5).
    02  FILLER        PIC X(3).
    02  データ名Z    PIC S9(9) COMP VALUE ZERO.
01  一意名2.
    02  データ名C    PIC X(1).
    02  FILLER        PIC X(3).
    02  データ名D    PIC 9(9)  COMP.
    02  データ名E    PIC X(9).
    02  データ名F    PIC X(9).
    02  データ名G    PIC X(9).
    02  データ名H    PIC X(9).
    02  データ名I    PIC X(9).
    02  データ名J    PIC X(9).
    02  データ名K    PIC X(9).
    02  データ名L    PIC X(9).

UAPで値を設定する引数

●データ名A

コネクションの解放を示す要求コードを「VALUE 'DCTCN△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

コネクション解放形態を設定します。この設定値は，eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定した場合に有効になります。finを指定した場合は，データ名Cの設定値に関係なくFINパケットを送信してコネクションを解放します。

VALUE 'F'

RSTパケットを送信して，コネクションを強制的に解放する場合に設定します。

VALUE 'N'

FINパケットを送信して，コネクションを解放する場合に設定します。

●データ名D

コネクションを解放するコネクションID数を設定します。1〜8の範囲で設定してください。

●データ名E，F，G，H，I，J，K，L

コネクションを解放するコネクションIDを設定します。コネクションIDの長さは最大8バイトです。コネクションIDの後ろは空白で埋めてください。

コネクションIDは，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，データ名Cに1を設定しデータ名Dに「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべてのコネクションを解放します。「先行文字列*」の場合は先行文字列で始まるすべてのコネクションを解放します。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10005

データ名Zに設定した値が間違っています。

10008

データ名Dに設定した値が間違っています。

10009

発行条件が不正です。

10010

指定したコネクションIDの中に不正なコネクションIDがあります。

10012

データ名Cに設定した値が間違っています。

10027

システムエラーが発生しました。

10028

一部のコネクションの解放に失敗しました。

注意事項

コネクションの解放は非同期で行われます。したがって，この関数で返されるステータスコードが「00000」であった場合でも，コネクションの解放に失敗している場合があります。コネクションの解放結果はMCP後処理トランザクションで通知されます。

CBLEEMCP('DCTLE ') - 論理端末の閉塞

機能

論理端末を閉塞します。

論理端末の閉塞後，MCP後処理トランザクションを起動します。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'DCTCN   '.
    02  データ名B    PIC X(5).
    02  FILLER        PIC X(3).
    02  データ名Z   PIC S9(9) COMP ZERO.
01  一意名2.
    02  データ名C    PIC 9(9)  COMP.
    02  データ名D    PIC X(9).
    02  データ名E    PIC X(9).
    02  データ名F    PIC X(9).
    02  データ名G    PIC X(9).
    02  データ名H    PIC X(9).
    02  データ名I    PIC X(9).
    02  データ名J    PIC X(9).
    02  データ名K    PIC X(9).

UAPで値を設定する引数

●データ名A

論理端末の閉塞を示す要求コードを「VALUE 'DCTLE△△△'」と設定します。

●データ名Z

0を設定します。

●データ名C

閉塞する論理端末数を設定します。

1〜8の範囲で設定してください。

●データ名D，E，F，G，H，I，J，K

閉塞する論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろは空白で埋めてください。

論理端末名は，*を使って一括指定できます。一括指定は一つだけ指定できます。一括指定する場合は，データ名Cに1を設定しデータ名Dに「*」または「先行文字列*」の形式で設定してください。

「*」の場合はすべての論理端末を閉塞します。「先行文字列*」の場合は先行文字列で始まるすべての論理端末を閉塞します。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10003

データ名Aに設定した値が間違っています。

10005

データ名Zに設定した値が間違っています。

10008

データ名Cに設定した値が間違っています。

10009

発行条件が不正です。

10011

指定した論理端末名の中に不正な論理端末名があります。

10027

システムエラーが発生しました。

10028

一部の論理端末の閉塞に失敗しました。

注意事項

指定した論理端末名がUDP端末の場合は，該当ポートをクローズします。

論理端末の閉塞は非同期で行われます。したがって，この関数で返されるステータスコードが「00000」であった場合でも，論理端末の閉塞に失敗している場合があります。論理端末閉塞の結果はMCP後処理トランザクションで通知されます。

CBLEEMCP('SEND ') - 非同期一方送信メッセージの送信

機能

相手システムへ非同期一方送信メッセージを送信します。非同期一方送信メッセージは，一つのセグメントで構成されます。

TP1/FSPを使用する場合，eemcpfunc定義コマンドの-oオプションのoutputmessageオペランドが設定されているとき，またはTP1/EEのユーザサービス関連定義のservice_attr定義コマンドが設定されているときは，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01  一意名1.
    02  データ名A   PIC X(8)  VALUE 'SEND    '.
    02  データ名B   PIC X(5).
    02  FILLER      PIC X(3).
    02  データ名C   PIC X(4)  VALUE SPACE.
    02  データ名D   PIC X(4)  VALUE SPACE.
    02  データ名E   PIC 9(8).
    02  データ名F   PIC 9(8).
    02  データ名G   PIC 9(9)  COMP VALUE ZERO.
    02  データ名H   PIC X(4).
    02  データ名I   PIC X(4)  VALUE SPACE.
    02  データ名J   PIC X(4).
    02  データ名K   PIC X(4).
    02  データ名L   PIC X(8)  VALUE SPACE.
    02  データ名M1  PIC X(4)  VALUE SPACE.
    02  データ名M2  PIC X(8)  VALUE SPACE.
    02  データ名M3  PIC X(4)  VALUE SPACE.
    02  データ名M4  PIC 9(9)  COMP VALUE ZERO.
    02  データ名M5  PIC 9(9)  COMP VALUE ZERO.
    02  データ名M6  PIC X(1)  VALUE SPACE.
    02  データ名M7  PIC X(1).
    02  データ名N   PIC X(14)  VALUE LOW-VALUE.
01  一意名2.
    02  データ名O   PIC X(4)  VALUE 'OUT '.
    02  データ名P   PIC X(8).
    02  データ名Q   PIC X(8)  VALUE SPACE.
    02  データ名R   PIC X(8)  VALUE SPACE.
    02  データ名T   PIC X(28)  VALUE LOW-VALUE.
01  一意名3.
    02  データ名U   PIC 9(9)  COMP.
    02  データ名V   PIC X(8).
    02  データ名W   PIC X(n).

UAPで値を設定する引数

●データ名A

一方送信メッセージの送信を示す要求コードを「VALUE 'SEND△△△△'」と設定します。

●データ名C，D

空白を設定します。

●データ名E，F

MCPで使用する領域です。

●データ名G

一方送信メッセージの送信属性を指定します。

0以外を複数指定する場合は，指定する数値を加算して設定します。

0

メッセージを非永続属性で，かつUDP送信時の送信先をデータ名Wの制御ヘッダで指定する場合に設定します。

1

永続メッセージとする場合に設定します。

MCPをクラスタ構成に組み込んだ場合（XTCサービス定義のcluster_modeオペランドにYを指定）にだけ有効となります。

2

UDP送信時の送信先をeemcple定義コマンドの-oオプションで指定する場合に設定します。

なお，この値を指定した場合は，制御ヘッダの内容に関係なく，MCP構成定義で指定した送信先が有効になります。

●データ名H

単一セグメントの送信を示す「VALUE 'EMI△'」を設定します。

●データ名I，J，K，L，M1，M2，M3

空白を設定します。

●データ名M4，M5

0を設定します。

●データ名M6，M7

空白を設定します。

●データ名N

MCPで使用する領域です。

●データ名O

一方送信を示す「VALUE 'OUT△'」を設定します。

●データ名P

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろは空白で埋めてください。

●データ名Q，R

空白を設定します。

●データ名T

MCPで使用する領域です。

●データ名U

送信するセグメントの長さを設定します。設定できる最大値は，メッセージの最大サイズを拡張しているかどうか（eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値）によって，次の表に示すとおり異なります。

表5‒13　メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし（msglenオペランドにnormalを指定）

32000※

32000※

あり（msglenオペランドにextendを指定）

8388608

65531※

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

●データ名V

空白を設定します。

●データ名W

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は，データ名Uを参照してください。

TCP/IPの場合

UDPの場合

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10001

データ名Uに，送信できる最大サイズを超える値を設定しています。

10002

データ名Uに0以下の値を設定しています。

10003

データ名A，Wに設定した値が間違っています。

10004

データ名Hに設定した値が間違っています。

10005

データ名Gに設定した値が間違っています。

10006

データ名Oに設定した値が間違っています。

10009

発行条件が不正です。

CBLEETRN('ROLLMARK')関数が発行済みです。

10011

データ名Pに設定した論理端末名が間違っています。

10020

データ名Pに設定した論理端末名は閉塞中です。

10030

メモリ不足が発生しました。

注意事項

この関数発行後に，CBLEEMCP('SENDSYNC')関数を発行した場合，CBLEEMCP('SENDSYNC')関数で送信したメッセージが先に送信されます。

送信要求したトランザクションがロールバックした場合，送信メッセージは破棄されます。

ERRTRNS上でこの関数を発行して，送信障害などのエラーが発生した場合，ERRTRNSは起動されないで，送信メッセージは破棄されます。

この関数を発行したトランザクションでは，トランザクションの最適化を行いません。

非永続メッセージのあとに，永続メッセージを送信した場合，永続メッセージが先に送信されます。

この関数は，トランザクションのコミット時に実行されます。したがって，トランザクションの同期点を取得する処理でエラーが起こった場合，この関数の処理は無効となります。

TP1/FSPを使用する場合，次のステータスコードのときは，「OJ（出力メッセージ）」は取得されません。

00001，00004，10001，10002，10003，10004，10005，10006，10011

CBLEEMCP('SENDRECV ') - 同期型メッセージの送受信

機能

相手システムへ同期送受信メッセージを送信します。同期送受信メッセージは，一つのセグメントで構成されます。

TP1/FSPを使用する場合，アプリケーション定義のeemcpfuncの-oオプションのoutputmessageが設定されている場合，または，ユーザサービス関連定義service_attrの-mオプションが設定されている場合に，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2 一意名3

01  一意名1.
    02  データ名A    PIC X(8) VALUE 'SENDRECV'.
    02  データ名B    PIC X(5).
    02  FILLER       PIC X(3).
    02  データ名C    PIC X(4) VALUE SPACE.
    02  データ名D    PIC X(4) VALUE SPACE.
    02  データ名E    PIC 9(8).
    02  データ名F    PIC 9(8).
    02  データ名G    PIC 9(9) COMP VALUE ZERO.
    02  データ名H    PIC X(4).
    02  データ名I    PIC 9(9) COMP.
    02  データ名J    PIC X(4) VALUE SPACE.
    02  データ名K    PIC X(4) VALUE SPACE.
    02  データ名L    PIC X(8) VALUE SPACE.
    02  データ名M1   PIC X(4) VALUE SPACE.
    02  データ名M2   PIC X(8) VALUE SPACE.
    02  データ名M3   PIC X(4) VALUE SPACE.
    02  データ名M4   PIC 9(9) COMP VALUE ZERO.
    02  データ名M5   PIC S9(9) COMP.
    02  データ名M6   PIC X(1) VALUE SPACE.
    02  データ名M7   PIC X(1).
    02  データ名N    PIC X(14) VALUE LOW-VALUE.
01  一意名2.
    02  データ名O    PIC X(4) VALUE 'IO '.
    02  データ名P    PIC X(8).
    02  データ名Q    PIC X(8) VALUE SPACE.
    02  データ名R    PIC X(8) VALUE SPACE.
    02  データ名T    PIC X(28) VALUE LOW-VALUE.
01  一意名3.
    02  データ名U    PIC 9(9) COMP.
    02  データ名V    PIC X(8).
    02  データ名W    PIC X(n).
01  一意名4.
    02  データ名X    PIC 9(9) COMP.
    02  データ名Y    PIC X(8)
    02  データ名Z    PIC X(n).

UAPで値を設定するデータ領域

●データ名A

同期型のメッセージの送受信を示す要求コードを「VALUE 'SENDRECV'」と設定します。

●データ名C,D

空白を設定します。

●データ名G

指定した論理端末がすでに送信処理中のとき，送信可能となるまで待ち合わせるか，エラーリターンとするかを，次のどちらかの数値で設定します。

0

送信可能となるまで待ち合わせる場合に設定します。

待ち合わせている間の時間は，watcitimeに設定した時間に含まれます。

1

エラーリターンする場合に設定します。

●データ名H

単一セグメントの送信を示す「VALUE 'EMI△'」を設定します。

●データ名I

セグメントを受信する領域の長さを設定します。領域の長さは，図5-2のデータ名Iを参照してください。

領域の長さは，データ名X＋8バイト以上の長さを設定してください。

●データ名J,K,L,M1,M2,M3

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLEEMCP('SENDRECV')を呼び出してから終了するまでの最大時間（1〜65535 単位：秒）を設定します。0を設定した場合，MCP共通定義（eemcpcn -b sndrcvtim）で指定した同期送受信監視時間が仮定されます。負の値を設定した場合は，無限に待ち合わせをします。

●データ名M6

空白を設定します。

●データ名M7

空白を設定します。

●データ名N

MCPで使用する領域です。

●データ名O

同期型のメッセージの送受信を示す「VALUE 'IO△△'」を設定します。

●データ名P

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名Q,R

空白を設定します。

●データ名T

MCPで使用する領域です。

●データ名U

送信するセグメントの長さを設定します。設定できる最大値は，メッセージの最大サイズを拡張しているかどうか（eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値）によって，次の表に示すとおり異なります。

表5‒14　メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし（msglenオペランドにnormalを指定）

32000※

32000※

あり（msglenオペランドにextendを指定）

8388608

65531※

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

●データ名V

MCPで使用する領域です。

●データ名W

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は，データ名Uを参照してください。

TCP/IPの場合

UDPの場合

●データ名Y

MCPで使用する領域です。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコードが00000または10031の場合だけ，次に示すデータ名E，データ名F，データ名X，データ名Zの領域は参照可能です。これ以外のステータスコードの場合は参照しないでください。

●データ名E

メッセージを受信した日付がYYYYMMDD(YYYY:西暦年 MM:月 DD:日)の形式で返されます。

●データ名F

メッセージを受信した日付がHHMMSS00(HH:時 MM:分 SS:秒)の形式で返されます。

●データ名X

受信したメッセージの長さが返されます。

●データ名Z

受信したセグメント内容が返されます。

図5‒2　受信のデータ形式

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EE環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10009

発行条件が不正です。

10001

データ名Uに送信サイズを超える値を設定しています。

10002

データ名Uに0以下の値を設定しています。

10003

データ名A,E,F, M5,W,X,Zに設定した値が間違っています。

10004

データ名Hに設定した値が間違っています。

10005

データ名Gに設定した値が間違っています。

10006

データ名Oに設定した値が間違っています。

10007

データ名M5に設定した時間が経過しました。

10011

データ名Pに設定した論理端末名が間違っています。

10020

データ名Pに設定した論理端末名は閉塞中です。

10021

出力メッセージ編集UOCがエラーリターンしました。

10022

出力メッセージ編集UOCで障害が発生しました。

10025

システムに対する送信時に障害が発生しました。

10030

メモリ不足が発生しました。

送信バッファ数または受信バッファ数が不足しました。メッセージサイズがOBFサイズまたはIBFサイズを超過しました。

10031

データ名Iの指定値を超えるセグメントを受信しました。データ名Iの指定値を超えた部分は切り捨てられました。

10032

データ名Iの指定値が不足しています。9バイト以上の領域を確保してください。

10033

メッセージ受信が仕掛かり中です。

10034

出力先の論理端末は，ほかのUAPで仕掛かり中です。

10035

メッセージ送信完了監視タイマ(MCP構成定義eemcpcnの-bオプションsndcmptimオペランドに指定)のタイムアウトが発生しました。

10036

受信待ちでコネクション障害が発生しました。

注意事項

CBLEEMCP('SEND ')関数発行後，CBLEEMCP('SENDRECV ')関数を発行した場合，CBLEEMCP('SENDRECV ')関数のメッセージが先に送信されます。

リターン値が10031の場合，データ名Xにはデータ名Iの領域に格納できた受信データのサイズが設定されます。

TP1/FSPを使用する場合，以下のステータスコードの場合，OJは取得されません。

00001，00004，10001，10002，10003，10004，10005，10006，10009，10011，10032

CBLEEMCP('SENDSYNC') - 同期一方送信メッセージの送信

機能

相手システムへ同期一方送信メッセージを送信します。

TP1/FSPを使用する場合，eemcpfunc定義コマンドの-oオプションのoutputmessageオペランドが設定されているとき，またはTP1/EEのユーザサービス関連定義のservice_attr定義コマンドが設定されているときは，送信データをUAP履歴情報のデータ種別「OJ（出力メッセージ）」として取得します。オペランドの関連性については，TP1/FSPの関連ドキュメントを参照してください。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01  一意名1.
    02  データ名A    PIC X(8)  VALUE 'SENDSYNC'.
    02  データ名B    PIC X(5).
    02  FILLER        PIC X(3).
    02  データ名C    PIC X(4)  VALUE SPACE.
    02  データ名D    PIC X(4)  VALUE SPACE.
    02  データ名E    PIC 9(8).
    02  データ名F    PIC 9(8).
    02  データ名G    PIC 9(9)  COMP VALUE ZERO.
    02  データ名H    PIC X(4).
    02  データ名I    PIC X(4)  VALUE SPACE.
    02  データ名J    PIC X(4)  VALUE SPACE.
    02  データ名K    PIC X(4)  VALUE SPACE.
    02  データ名L    PIC X(8)  VALUE SPACE.
    02  データ名M1   PIC X(4)  VALUE SPACE.
    02  データ名M2   PIC X(8)  VALUE SPACE.
    02  データ名M3   PIC X(4)  VALUE SPACE.
    02  データ名M4   PIC 9(9)  COMP VALUE ZERO.
    02  データ名M5   PIC S9(9) COMP.
    02  データ名M6   PIC X(1)  VALUE SPACE.
    02  データ名M7   PIC X(1).
    02  データ名N    PIC X(14)  VALUE LOW-VALUE.
01  一意名2.
    02  データ名O    PIC X(4)  VALUE SPACE.
    02  データ名P    PIC X(8).
    02  データ名Q    PIC X(8)  VALUE SPACE.
    02  データ名R    PIC X(8)  VALUE SPACE.
    02  データ名T    PIC X(28) VALUE LOW-VALUE.
01  一意名3.
    02  データ名U    PIC 9(9)  COMP.
    02  データ名V    PIC X(8).
    02  データ名W    PIC X(n).

UAPで値を設定する引数

●データ名A

同期一方送信のメッセージの送信を示す要求コードを「VALUE 'SENDSYNC'」と設定します。

●データ名C，D

空白を設定します。

●データ名E，F

MCPで使用する領域です。

●データ名G

同期型メッセージの送信属性を指定します。

0

UDP送信時の送信先をデータ名Wの制御ヘッダで指定する場合に設定します。

2

UDP送信時の送信先をeemcple定義コマンドの-oオプションで指定する場合に設定します。

なお，この値を指定した場合は，制御ヘッダの内容に関係なく，MCP構成定義で指定した送信先が有効になります。

●データ名H

単一セグメントの送信を示す「VALUE 'EMI△'」を設定します。

●データ名I，J，K，L，M1，M2，M3

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

この関数を呼び出してから終了するまでの最大時間（単位：秒）を設定します。ここでの最大時間とは，ソケット空き待ち時間および送信開始から自システムのTCP/IPの送信バッファへの書き込み完了までの時間の合計をいいます。65535を最大値として，値を設定できます。

0を設定した場合，eemcpcn定義コマンドの-bオプションのsndsynctimオペランドで指定した同期一方送信監視時間が仮定されます。負の値を設定した場合は，時間を監視しません。無限に送信完了を待ちます。UDPプロトコルを使用した通信時は無視されます。

●データ名M6，M7

空白を設定します。

●データ名N

MCPで使用する領域です。

●データ名O

空白を設定します。

●データ名P

出力先の論理端末名を設定します。論理端末名の長さは最大8バイトです。論理端末名の後ろは空白で埋めてください。

●データ名Q，R

空白を設定します。

●データ名T

MCPで使用する領域です。

●データ名U

送信するセグメントの長さを設定します。設定できる最大値は，メッセージの最大サイズを拡張しているかどうか（eemcpfunc定義コマンドの-mオプションのmsglenオペランド指定値）によって，次の表に示すとおり異なります。

表5‒15　メッセージの最大サイズ拡張有無による送信メッセージ長の違い

メッセージの最大サイズ拡張有無

送信メッセージ長に設定できる最大値（単位：バイト）

TCP/IPプロトコル使用時

UDPプロトコル使用時

なし（msglenオペランドにnormalを指定）

32000※

32000※

あり（msglenオペランドにextendを指定）

8388608

65531※

注※

TP1/EEサービス定義のsend_message_buf_sizeオペランドで指定した送信バッファサイズの方が小さい場合は，send_message_buf_sizeオペランドの指定値が設定されます。

●データ名V

MCPで使用する領域です。

●データ名W

送信するセグメントの内容を設定した領域を設定します。送信できる最大長は，データ名Uを参照してください。

TCP/IPの場合

UDPの場合

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため，この機能は使用できません。

10001

データ名Uに，送信できる最大サイズを超える値を設定しています。

10002

データ名Uに0以下の値を設定しています。

10003

データ名A，データ名W，およびデータ名M5に設定した値が間違っています。

10004

データ名Hに設定した値が間違っています。

10005

データ名Gに設定した値が間違っています。

10006

データ名Oに設定した値が間違っています。

10007

データ名M5に設定した時間が経過しました。

10009

発行条件が不正です。

10011

データ名Pに設定した論理端末名が間違っています。

10020

データ名Pに設定した論理端末名は閉塞中です。

10021

出力メッセージ編集UOCがエラーリターンしました。

10022

出力メッセージ編集UOCで障害が発生しました。

10025

システムに対する送信時に障害が発生しました。

10030

メモリ不足が発生しました。

注意事項

CBLEEMCP('SEND ')関数発行後に，この関数を発行した場合，この関数で送信したメッセージが先に送信されます。

TP1/FSPを使用する場合，次のステータスコードのときは，「OJ（出力メッセージ）」は取得されません。

00001，00004，10001，10002，10003，10004，10005，10006，10011

CBLEEMCP('UTPUT ') - ユーザトレースの取得

機能

ユーザ固有のトレースデータをMCPトレースに出力します。出力したトレースデータは，eemcpedコマンドまたはeemcpdumpコマンドで編集できます。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01  一意名1.
    02  データ名A  PIC X(8) VALUE 'UTPUT   '.
    02  データ名B  PIC X(5).
    02  FILLER     PIC X(3).
    02  データ名C  PIC S9(9) COMP VALUE ZERO.
01  一意名2.
    02  データ名D  PIC 9(9) COMP.
    02  データ名E  PIC 9(9) COMP.
    02  データ名F  PIC X(n).

UAPで値を設定する引数

●データ名A

ユーザ固有のトレースの取得を示す要求コードを「VALUE 'UTPUT△△△'」と設定します。

●データ名C

0を設定します。

●データ名D

トレースを取得するイベントのイベントIDを設定します。0x0700〜0x0740の範囲のイベントIDを設定してください。

●データ名E

トレースのデータ長を設定します（単位：バイト）。4〜32000の範囲のデータ長を設定してください。

●データ名F

トレースデータを取得する領域を設定します。トレースデータとして有効なデータは，データ名Eで設定した長さまでです。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

CBLEEMCP('UTPUT ')関数を使用できないUOCから発行しているため，この機能は使用できません。

10001

データ名Eに32000バイトを超える値を設定しています。

10002

データ名Eに4未満の値を設定しています。

10003

データ名E以外のデータ領域に設定した値が間違っています。

10009

発行条件が不正です。

10026

トラブルシュート機能が縮退中です。

CBLEEMCP('UTPUTL ') - ユーザトレースの取得（データ長拡張用）

機能

データ長拡張時に，ユーザ固有のトレースデータをMCPトレースに出力します。出力したトレースデータは，eemcpedコマンドまたはeemcpdumpコマンドで編集できます。

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEMCP' USING 一意名1 一意名2

DATA DIVISIONの指定

01 一意名1.
    02 データ名A  PIC X(8) VALUE 'UTPUTL  '.
    02 データ名B  PIC X(5).
    02 FILLER    PIC X(3).
    02 データ名C  PIC S9(9) COMP VALUE ZERO.
01 一意名2.
    02 データ名D  PIC 9(9) COMP.
    02 データ名E  PIC 9(9) COMP.
    02 データ名F  PIC X(n).

UAPで値を設定する領域

●データ名A

ユーザ固有のトレースの取得を示す要求コードを「VALUE 'UTPUTL△△'」と設定します。

●データ名C

0を設定します。

●データ名D

トレースを取得するイベントのイベントIDを設定します。0x0700〜0x0740の範囲のイベントIDを設定してください。

●データ名E

トレースのデータ長を設定します（単位：バイト）。4〜8388608の範囲のデータ長を設定してください。

●データ名F

トレースデータを取得する領域を設定します。トレースデータとして有効なデータは，データ名Eで設定した長さまでです。

TP1/EEから値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

リターン値

ステータスコード

意味

00000

正常に終了しました。

00001

TP1/EEの環境下にありません。

00004

CBLEEMCP('UTPUTL ')関数を使用できないUOCから発行しているため，この機能は使用できません。

10001

データ名Eに8388608バイトを超える値を設定しています。

10002

データ名Eに4未満の値を設定しています。

10003

データ名E以外のデータ領域に設定した値が間違っています。

10009

発行条件が不正です。

10026

トラブルシュート機能が縮退中です。

注意事項

トレースのデータ長がトレース定義のMCPトレースファイル出力用最大バッファサイズ（eemcptrc定義コマンドの-bオプションのbufferszオペランドで指定）よりも大きい場合，データの末尾を切り捨てて出力します。切り捨てが起きた場合に取得されるデータのサイズ（単位：バイト）は，次に示す計算式で求められます。

（（MCPトレースファイル出力用最大バッファサイズ × 1024）− 140）

5.4　ユーザオウンコーディング（UOC）

UOCは，C言語で作成します。COBOL言語では作成できません。ここでは，UOCの使用方法および作成例について説明します。

5.4.1　UOCインタフェース

メッセージの送受信をするUAPをより多様な業務に対応させるために補助するプログラムを，UOCといいます。UOCは保護区です。

MCPで使用できるUOCを次に示します。

入力セグメント判定UOC

入力メッセージ編集UOC

出力メッセージ編集UOC

コネクション確立UOC

UOCを使用する場合の手順は，次のとおりです。

C言語でUOCを作成する（COBOL言語では作成できません）。

MCP構成定義にUOC関数を登録する。

UOC関数のオブジェクトファイルやその他のUAPオブジェクトファイルをリンケージしてUAP共用ライブラリを作成する。

UOCで使用するローカル変数のサイズの合計は，各UOCで1024バイト以内になるよう作成してください。また，UOCの中で関数の再帰呼び出しはしないでください。

UOCの組み込みは，MCP構成定義で行います。論理端末ごとにUOCを組み込む場合は，eemcplefunc定義コマンドの-uオプションのownlsg，ownlmc，およびownlraオペランドにそれぞれのエントリポインタ名（C言語の関数名）を指定します。論理端末ごとにUOCを組み込まない場合は，eemcpfunc定義コマンドの-uオプションのownlsg，ownlmc，およびownlraオペランドにそれぞれのエントリポインタ名（C言語の関数名）を指定します。

5.4.2　UOCで使用できる関数

UOCでは，次の表に示す関数だけを使用できます。表に示す以外の関数を使用した場合，正常に動作しないことがあるためご注意ください。

表5‒16　UOCで使用できる関数

項番

関数

1

TP1/EEおよびMCPが提供するライブラリ関数

ユーザトレース取得関数（ee_mcp_utrace_put，およびee_mcp_utrace_put_long）※

2

メッセージログ出力関数（ee_logprint）

3

現在時刻取得関数（ee_thd_gettime）

4

標準関数

メモリ管理関数

メモリ確保（例：malloc）

メモリ解放（例：free）

5

メモリ操作関数

メモリ操作（例：memcpy）

文字列操作（例：strcpy）

6

時間取得関数

注※

入力メッセージ編集UOC，および出力メッセージ編集UOCにだけ使用できます。

5.4.3　UOCの実行タイミング

MCPが起動するUOCは，マルチスレッドでパラレルに実行します。UOCは，パラレルに呼び出されることを想定して，スレッドセーフとなるように作成してください。

ただし，入力セグメント判定UOC，入力メッセージ編集UOCおよびコネクション確立UOCは論理端末単位ではシリアルに実行しますが，出力メッセージ編集UOCはパラレルに実行します。

なお，eemcpfunc定義コマンドの-cオプションのuocexcオペランドにyesを指定することで，出力メッセージ編集UOCも論理端末単位でシリアルに実行できます。その場合は，入力メッセージ編集UOCおよび出力メッセージ編集UOCが同一論理端末単位でシリアルに実行されます。つまり，同一排他内で，入力メッセージ編集UOCおよび出力メッセージ編集UOCが実行されます。

5.4.4　入力セグメント判定UOC

入力セグメント判定UOCは，メッセージを受信したとき，そのメッセージでセグメントが完成しているかどうかを判定するUOCです。UOCは，相手システムからのメッセージを受信するたびに起動します。セグメントが未完成のとき（後続メッセージがある場合）は，後続メッセージに対して，監視タイマを設定できます。

ただし，UAPからUAP（タイマトランザクションなど）を起動する場合は，このUOCは起動しません。

入力セグメント判定UOCは，プロトコル種別がTCP/IPの場合にだけ使用できます。

(1)　入力セグメントの判定

受信したメッセージのセグメントが格納されている受信バッファを引き渡します。UOCでは，受信バッファを基にセグメントが完成しているかどうかを判定して，リターン値を設定します。ただし，判定には該当メッセージについての情報を設定する必要があります。そのため，次メッセージが含まれている場合には，次メッセージについての情報も設定してください。なお，セグメントが未完成と判定された場合に後続メッセージを受信した場合は，未完成セグメントのバッファの末尾に後続メッセージを結合して引き渡します。

(2)　後続メッセージ監視タイマの設定

セグメントが未完成の場合，必要に応じて後続メッセージ監視タイマを設定できます。後続メッセージ監視タイマのセットを指示したあとで，後続メッセージのタイムアウトが発生した場合は，コネクションを解放してMCP後処理トランザクションを起動します。このとき，該当メッセージは破棄されます。また，各パラメタに設定した値が不正の場合，コネクションを解放してMCP後処理トランザクションを起動します。

MCP構成定義でコネクション切断抑止を指定した場合は，後続メッセージに対する監視タイマを設定しないでください。

5.4.5　入力セグメント判定UOCインタフェース

入力セグメント判定UOCは，次に示す形式で呼び出します。

(1)　形式

ANSI C，C++の形式

#include <eemcp.h>
int  uoc_func(struct eemcp_uoc_segchk  *parm)

(2)　説明

入力セグメント判定UOCを呼び出すとき，MCPは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　eemcp_uoc_segchkの内容

typedef struct eemcp_uoc_segchk {
    int  pro_kind;               … プロトコル種別
    char le_name[9];             … 論理端末名称
    char reserve1[7];            … 予備
    int  rcv_prim;               … 受信サービスプリミティブ
    char *rcv_data_adr;          … 受信データ先頭アドレス
    int  rcv_data_size;          … 受信データ有効サイズ
    char reserve3[4];            … 予備
    char *uoc_inf_adr;           … MCP使用領域
    int  uoc_inf_size;           … MCP使用領域
    char reserve4[4];            … 予備
    EEMCPSEGUOCPROT *pro_indv_ifa;
                                 … プロトコル個別インタフェース領域アドレス
    EEMCPUOCTIMEINF *ptimerinf_adr;
                                 … プロトコルタイマ情報アドレス
    int  rtn_detail;             … 詳細リターンコード
    int  reserve2[3];            … 予備
    char *usat_adr;              … ユーザSATアドレス
    EEULONG usat_size;           … ユーザSATサイズ
    EEULONG lebuf_size;          … MCP使用領域
    void *lebuf;                 … MCP使用領域
    EEULONG64 usat_large_size;   … 拡張ユーザSATサイズ
    char reserve5[40];           … 予備
}EEMCPUOCSEGCHK;

(b)　eemcp_seguoc_protの内容

typedef struct eemcp_seguoc_prot {
    int  rest_data_size;         … 残っている該当メッセージのサイズ
    int  next_data_size;         … 次メッセージの有効長
    char *next_data_adr;         … 次メッセージの先頭アドレス
    int  now_data_size;          … 該当メッセージの有効長
    int  reserve[3];             … 予備
}EEMCPSEGUOCPROT;

(c)　eemcp_uoctimer_infの内容

typedef struct eemcp_uoctimer_inf {
    int timer_code;              … タイマセット指示
    int timer_value;             … 後続メッセージ監視タイマ値
    int timer_result;            … MCP使用領域
    int reserve1[3];             … 予備
}EEMCPUOCTIMEINF;

(d)　eemcp_uocbufheadの内容

typedef struct eemcp_uocbufhead {
    struct eemcp_uocbufhead *next_bufhead_adr;
                                 … 次バッファ情報のアドレス
    char *buf_adr;               … 受信データのバッファアドレス
    int  buf_size;               … 受信データのバッファサイズ
    char reserve[4];             … 予備
}EEMCPUOCBUFHEAD;

(4)　MCPが値を設定する項目

(a)　eemcp_uoc_segchk

●pro_kind

プロトコル種別として，次の値が設定されます。

EEMCP_UOC_PRO_TCP

TCP/IPプロトコル

●le_name

メッセージを入力した論理端末名が設定されます。

●rcv_prim

受信サービスプリミティブとして，次の値が設定されます。

EEMCP_UOC_RCV_BRD

一方送信メッセージの受信

EEMCP_UOC_RCV_REP_SR

同期送受信メッセージの受信

●rcv_data_adr

受信したメッセージの先頭アドレスが設定されます。

●rcv_data_size

受信したメッセージの有効長が設定されます。

●uoc_inf_adr

MCPで使用するパラメタです。

●uoc_inf_size

MCPで使用するパラメタです。

●pro_indv_ifa

プロトコル個別インタフェース領域アドレスです。

●ptimerinf_adr

プロトコルタイマ情報アドレスが設定されます。

●usat_adr

ユーザSATエリアのアドレスが設定されます。TP1/EEのサービス定義のメモリ関連定義のsystem_user_areaオペランドに0を指定した場合は，値を参照できません。

●usat_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

ユーザSATエリアのサイズが4ギガバイト以上の場合は，0が設定されます。0の場合，ユーザSATエリアのサイズは，usat_large_sizeのエリアを参照してください。なお，ユーザSATエリアのサイズが4ギガバイト未満の場合でも，usat_large_sizeのエリアからサイズを取得できます。

●lebuf_size

MCPで使用するパラメタです。

●lebuf

MCPで使用するパラメタです。

●usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

(b)　eemcp_uoctimer_inf（タイマ情報）

●ptimerinf_adr

プロトコルタイマ情報アドレスが設定されます。

●timer_result

MCPで使用するパラメタです。

(c)　eemcp_uocbufhead（受信バッファ情報）

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，eemcp_uoc_segchkのrcv_data_adrが指すパラメタです。受信したメッセージは複数の受信バッファに分割して渡します。

●next_bufhead_adr

次受信バッファ情報のアドレスが設定されます。最終受信バッファの場合，NULLが設定されます。

●buf_adr

受信バッファの先頭アドレスが設定されます。

●buf_size

受信バッファの有効長が設定されます。

(5)　ユーザが値を設定する項目

(a)　eemcp_uoc_segchk

●rtn_detail　　〜((-19999〜-19000))

詳細リターンコードを設定できます。このコードはUOCがEEMCP_UOC_SGCK_NGをリターンしたときにMCPに返されます。MCPは詳細リターンコードをメッセージログファイルに出力します。

詳細リターンコードは，-19999〜-19000の範囲で指定してください。

(b)　eemcp_seguoc_prot（領域アドレス）

●rest_data_size

残っている該当メッセージのサイズを設定します。

受信したメッセージのセグメントが未完成の場合は，不足分のメッセージサイズを設定します。EEMCP_UOC_SGCK_OK_NSEGでリターンした場合だけ有効です。

●next_data_size

次のメッセージサイズを設定します。受信したメッセージのセグメントが完成している場合，次のメッセージが含まれているときは，次のメッセージサイズを設定します。EEMCP_UOC_SGCK_OK_LASTでリターンした場合だけ有効です。

●next_data_adr

次のメッセージの先頭アドレスを設定します。next_data_sizeが0でない場合に設定します。

●now_data_size

該当するメッセージのサイズを設定します。next_data_sizeが0でない場合に設定します。

(c)　eemcp_uoctimer_inf

●timer_code

後続メッセージ監視タイマを設定します。

受信したメッセージのセグメントが未完成の場合，後続メッセージの受信に対して監視タイマをセットするかどうかを設定します。EEMCP_UOC_SGCK_OK_NSEGでリターンした場合だけ有効です。

EEMCP_TIME_SET

監視タイマをセットします。

EEMCP_TIME_NO_SET

監視タイマをセットしません。

●timer_value　　〜〈10進数字〉((1〜2550))（単位：秒）

後続メッセージの監視タイマの値を設定します。

この値は，監視タイマをセットする場合に設定します。timer_codeでEEMCP_TIME_SETを設定した場合だけ有効になります。監視時間は最大で１秒早くタイムアウトする場合があります。

(6)　リターン値

入力セグメント判定UOCは，次のコードでリターンしてください。

リターン値

意味

EEMCP_UOC_SGCK_OK_NSEG

正常リターン（セグメント未完成）

EEMCP_UOC_SGCK_OK_LAST

正常リターン（最終セグメント受信完了）

EEMCP_UOC_SGCK_NG

セグメント判定エラー

■EEMCP_UOC_SGCK_NGがリターンした場合

UOCからEEMCP_UOC_SGCK_NGでリターンした場合，コネクションを解放してMCP後処理トランザクションを起動します。該当するメッセージは破棄します。

■UOCのパラメタが不正の場合

UOCで設定した値に不正があった場合，MCPはメッセージログを出力して，コネクションを解放します。そのあと，MCP後処理トランザクションを起動します。該当するメッセージは破棄します。

■受信バッファオーバフロー

メッセージ長エリアにTP1/EEサービス定義で定義した受信バッファのサイズを超える値が設定されていた場合，MCPは受信バッファオーバフローと見なし，コネクションを解放してMCP後処理トランザクションを起動します。該当するメッセージは破棄します。

メッセージの最大サイズを拡張していて（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），かつメッセージ長エリアに設定された値が8388608を超える場合，MCPは受信バッファオーバフローと見なします。

(7)　セグメントの組み立て

入力セグメント判定UOCでのセグメントの分割・組み立てを次の図に示します。

図5‒3　入力セグメント判定UOCでのセグメントの分割・組み立て

未完成のセグメントを次の図に示します。

図5‒4　未完成のセグメント

完成済みのセグメント（次のメッセージが含まれている場合）を次の図に示します。

図5‒5　完成済みのセグメント

セグメントが未完成として判定されたあとに，後続メッセージを受信した場合のセグメントを次の図に示します。

図5‒6　セグメントが未完成として判定されたあとに後続メッセージを受信した場合のセグメント

(8)　受信メッセージ

受信メッセージの構成について説明します。

■メッセージの最大サイズを拡張していない場合

メッセージの最大サイズを拡張していない場合の受信メッセージの構成は，次の図に示すとおりです。

図5‒7　メッセージの最大サイズを拡張していない場合の受信メッセージの構成

■メッセージの最大サイズを拡張している場合

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）の受信メッセージの構成は，次の図に示すとおりです。

図5‒8　メッセージの最大サイズを拡張している場合の受信メッセージの構成

(9)　注意事項

入力セグメント判定UOCが登録されていない場合は，受信した単位（入力バッファに格納された単位）を論理メッセージ（セグメント）として，該当のサービスキューに登録します。

5.4.6　入力メッセージ編集UOC

入力メッセージ編集UOCは，一方受信メッセージまたは同期送受信の受信メッセージの編集をするUOCです（論理メッセージをユーザ任意の形式に編集します）。また，受信した論理メッセージを基に，ユーザ任意のサービス名を決定できます。

UOCは，UAPを起動するメッセージのセグメントを受信すると起動します。ただし，UAPからUAP（タイマトランザクションなど）を起動する場合は，このUOCは起動しません。

入力メッセージ編集UOCはプロトコル種別がTCP/IP，またはUDPの場合に使用できます。

(1)　入力メッセージの編集（一方受信メッセージおよび同期送受信の受信メッセージ）

受信したメッセージが格納されている受信バッファ，および定義で指定した編集バッファをリスト形式で引き渡します。UOCでは，これらのバッファを使用して，入力メッセージを編集できます。

UAPに通知するメッセージのセグメントは，受信バッファまたは編集バッファのどちらかに格納されたセグメントを使用できます。どちらを使用するかは，UOCから返されるリターンコードによって選択できます。

また，入力メッセージが不要な場合は，入力メッセージを破棄できます。

入力メッセージは，プロトコル種別がTCP/IPの場合はメッセージの先頭から，UDPの場合は制御ヘッダの先頭から引き渡します。制御ヘッダについては，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

(2)　サービス名の決定（一方受信メッセージ）

入力メッセージ編集UOCが登録されている場合，論理メッセージの受信と同時にサービス名を決定できます。

UOCでサービス名を決定する場合，サービス名の形式は，サービス名格納領域の先頭から，'¥0'の手前までの1〜31バイトの識別子です。先頭から32バイト目までに'¥0'がないときは，サービス名を不正として，エラートランザクション（ERRTRN1）を起動します。ただし，エラートランザクション（ERRTRN1）に通知するサービス名は先頭から31文字で31文字目に「*」を設定します。

(3)　入力メッセージプライオリティの決定（一方受信メッセージ）

入力メッセージ編集UOCが登録されている場合，入力メッセージのプライオリティ（優先度）を決定できます。

UOCで優先指定をした場合，該当するサービス（処理キュー）に登録されている通常メッセージよりも，優先的にアプリケーションを起動します。入力メッセージ編集UOCが登録されていない場合は，すべて通常メッセージ扱いになります。

(4)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，MCPはメッセージログを出力します。そのあと，MCP後処理トランザクションを起動して，論理端末を閉塞します。

(5)　UOCリターン処理

UOCからEEMCP_UOC_MSG_NGでエラーリターンした場合，MCPはメッセージログを出力して，MCP後処理トランザクションを起動します。

(6)　メッセージの破棄（一方受信メッセージ）

UOCからEEMCP_UOC_MSG_DESTRUCTでリターンした場合，MCPは入力メッセージを破棄します。サービスは起動しません。

同期送受信の受信メッセージの場合，破棄は指定しないでください。破棄を指定した場合，正常にメッセージを受信したとして扱います（EEMCP_UOC_MSG_OK_RCVと同じ扱いです）。

5.4.7　入力メッセージ編集UOCインタフェース

入力メッセージ編集UOCは，次に示す形式で呼び出します。

(1)　形式

ANSI C，C++の形式

#include <eemcp.h>
int  uoc_func(struct eemcp_uoc_min_n  *parm)

(2)　説明

入力メッセージ編集UOCを呼び出すとき，MCPは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　eemcp_uoc_min_nの内容

typedef struct eemcp_uoc_min_n {
    int  pro_kind;              … プロトコル種別
    char le_name[9];            … 論理端末名称
    char priority;              … プライオリティ
    char reserve1[6];           … 予備
    int  rcv_prim;              … 受信サービスプリミティブ
    EEMCPUOCBUFLIST *buflist_adr;
                                … 受信バッファリストアドレス
    EEMCPUOCBUFLIST *ebuflist_adr;
                                … 編集バッファリストアドレス
    char svname[32];            … サービス名
    char *pro_indv_ifa;         … MCP使用領域
    int  rtn_detail;            … 詳細リターンコード
    char reserve3[4];           … 予備
    char *usat_adr;             … ユーザSATアドレス
    EEULONG usat_size;          … ユーザSATサイズ
    EEULONG lebuf_size;         … MCP使用領域
    void *lebuf;                … MCP使用領域
    EEULONG64 usat_large_size;  … 拡張ユーザSATサイズ
    char reserve2[40];          … 予備
}EEMCPUOCMIN;

(b)　eemcp_uocbuff_list_nの内容

typedef struct eemcp_uocbuff_list_n {
    int  buf_num;               … バッファ情報数
    int  used_buf_num;          … 使用バッファ情報数
    char reserve1[8];           … 予備
    EEMCPUOCBUFINF buf_array[EEMCP_UOC_BUFF_MAX];
                                … バッファ情報
}EEMCPUOCBUFLIST;

(c)　eemcp_uocbufinf_nの内容

typedef struct eemcp_uocbufinf_n {
    char *buf_adr;              … バッファアドレス
    unsigned int buf_size;      … バッファ最大長
    unsigned int seg_size;      … バッファ使用長
    char reserve1[8];           … 予備
    eemcpuoc_w_type buff_id;    … MCP内部情報1
    char *buff_addr;            … MCP内部情報2
    char reserve2[8];           … 予備
}EEMCPUOCBUFINF；

(d)　eemcp_uocbufheadの内容

typedef struct eemcp_uocbufhead {
    struct eemcp_uocbufhead *next_bufhead_adr;
                                … 次バッファ情報のアドレス
    char *buf_adr;              … 受信データのバッファアドレス
    int  buf_size;              … 受信データのバッファサイズ
    char reserve[4];            … 予備
}EEMCPUOCBUFHEAD;

(4)　MCPが値を設定する項目

(a)　eemcp_uoc_min_n

●pro_kind

プロトコル種別として，次の値が設定されます。

EEMCP_UOC_PRO_TCP

TCP/IPプロトコル

EEMCP_UOC_PRO_UDP

UDPプロトコル

●le_name

メッセージを入力した論理端末名が設定されます。

●rcv_prim

受信サービスプリミティブとして，次の値が設定されます。

EEMCP_UOC_RCV_BRD

一方送信メッセージの受信

EEMCP_UOC_RCV_REP_SR

同期送受信メッセージの受信

●buflist_adr

受信用バッファリストのアドレスが設定されます。

●ebuflist_adr

編集用バッファリストのアドレスが設定されます。

メッセージ編集バッファが未定義の場合（eemcpbuf定義コマンドの-eオプションを省略した場合），ebuflist_adrにはNULLが設定されます。

●svname

eemcple定義コマンドの-vオプションで指定したサービス名が設定されます。

●pro_indv_ifa

MCPで使用するパラメタです。

●usat_adr

ユーザSATエリアのアドレスが設定されます。TP1/EEのサービス定義のメモリ関連定義のsystem_user_areaオペランドに0を指定した場合は，値を参照できません。

●usat_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

ユーザSATエリアのサイズが4ギガバイト以上の場合は，0が設定されます。0の場合，ユーザSATエリアのサイズは，usat_large_sizeのエリアを参照してください。なお，ユーザSATエリアのサイズが4ギガバイト未満の場合でも，usat_large_sizeのエリアからサイズを取得できます。

●lebuf_size

MCPで使用するパラメタです。

●lebuf

MCPで使用するパラメタです。

●usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

(b)　eemcp_uocbuff_list_n（バッファリスト）

●buf_num

バッファ情報の数として1が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），1以上の整数値が設定されます。

●buf_array

バッファ情報の配列が設定されます。バッファ情報が設定される数は一つです。

(c)　eemcp_uocbufinf_n（バッファ情報）

●buf_adr

バッファのアドレスが設定されます。

●buf_size

バッファの最大長が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），受信バッファリストでは，eemcp_uocbufheadのbuf_adrが示す受信バッファの最大長が設定されます。

●seg_size

バッファの使用長が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），メッセージの全体長が設定されます。

●buff_id

MCPで使用するパラメタです。

●buff_addr

MCPで使用するパラメタです。

(d)　eemcp_uocbufhead（受信バッファ情報）

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，eemcp_uocbufinf_n（受信用バッファリスト）のbuf_adrが指すパラメタです。受信したメッセージは複数の受信バッファに分割して渡します。

●next_bufhead_adr

次受信バッファ情報のアドレスが設定されます。最終受信バッファの場合，NULLが設定されます。

●buf_adr

受信バッファの先頭アドレスが設定されます。

●buf_size

受信バッファの有効長が設定されます。

(5)　ユーザが値を設定する項目

(a)　eemcp_uoc_min_n

同期送受信メッセージの受信メッセージの場合，priorityとsvnameの指定は無視します。

●priority

入力メッセージの優先度を設定します。

EEMCP_UOC_HI

優先

EEMCP_UOC_LOW（EEMCP_UOC_HI以外も含む）

通常

●svname

UOCで決定したサービス名を設定します。

サービス名の形式は，サービス名格納領域の先頭から，'¥0'の手前までの1〜31バイトの識別子で設定してください。

●rtn_detail　　〜((-19999〜-19000))

詳細リターンコードを設定します。

このコードは，UOCがEEMCP_UOC_MSG_NGでリターンした場合に，MCPに渡されます。MCPは，詳細リターンコードをメッセージログファイルに出力します。

詳細リターンコードは，-19999〜-19000の範囲で指定してください。

(b)　eemcp_uocbuff_list_n（バッファリスト）

●used_buf_num

使用したバッファ情報の数を設定します。

使用バッファ情報数は，buf_numと同じ値を設定してください。

(c)　eemcp_uocbufinf_n（バッファ情報）

●seg_size

バッファの使用長を設定します。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），編集後のメッセージの全体長を設定してください。

(d)　eemcp_uocbufhead（受信バッファ情報）

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，EEMCP_UOC_MSG_OK_RCVでリターンしたときに設定します。

●buf_size

受信バッファの有効長を設定します。UDPプロトコルを使用している場合，先頭の受信バッファには，制御ヘッダ以上のサイズを設定してください。

(6)　リターン値

入力メッセージ編集UOCは次のコードでリターンしてください。

リターン値

意味

EEMCP_UOC_MSG_OK

正常リターン（編集バッファでスケジューリング）

EEMCP_UOC_MSG_OK_RCV

正常リターン（受信バッファでスケジューリング）

EEMCP_UOC_MSG_DESTRUCT

メッセージ破棄

EEMCP_UOC_MSG_NG

メッセージ編集エラー

■メッセージの破棄

UOCからEEMCP_UOC_MSG_DESTRUCTでリターンした場合，MCPは入力メッセージを破棄します。このとき，サービスは起動しません。同期送受信メッセージの受信メッセージについては，正常にメッセージを受信したとして扱います（EEMCP_UOC_MSG_OK_RCVと同じ扱いです）。

■EEMCP_UOC_MSG_NGの場合

UOCからEEMCP_UOC_MSG_NGでエラーリターンした場合，論理端末を閉塞しMCP後処理トランザクションを起動します。

■UOCパラメタ不正の場合

UOCで設定した値に不正があった場合，MCPはメッセージログ出力後に，論理端末を閉塞して，MCP後処理トランザクションを起動します。

■受信バッファオーバフロー

EEMCP_UOC_MSG_OKでリターンした場合に，バッファの使用長（seg_size）にTP1/EEサービス定義で定義した受信バッファのサイズを超える値が設定されていたとき，MCPは受信バッファオーバフローと見なして，論理端末を閉塞します。そのあと，MCP後処理トランザクションを起動します。該当するメッセージは破棄します。

メッセージの最大サイズを拡張していて（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），かつバッファの使用長（seg_size）に設定された値が8388608を超える場合，MCPは受信バッファオーバフローと見なします。

■サービス名不正

サービス名の形式は，サービス名格納領域の先頭から，'¥0'の手前までの1〜31バイトの識別子です。先頭から32バイト目までに'¥0'がないときは，サービス名を不正として，エラートランザクション（ERRTRN1）を起動します。

■受信バッファ不足

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，EEMCP_UOC_MSG_OKでリターンしたとき，受信バッファ不足が発生すると，論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，該当するメッセージは破棄されます。

(7)　バッファとパラメタの関係

UOCインタフェース用のパラメタとバッファの関係を次の図に示します。

■メッセージの最大サイズを拡張していない場合

メッセージの最大サイズを拡張していない場合の受信メッセージの構成は，次の図に示すとおりです。

図5‒9　UOCインタフェース用のパラメタとバッファの関係（メッセージの最大サイズを拡張していない場合）

■メッセージの最大サイズを拡張している場合

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）の受信メッセージの構成は，次の図に示すとおりです。

図5‒10　UOCインタフェース用のパラメタとバッファの関係（メッセージの最大サイズを拡張している場合）

5.4.8　出力メッセージ編集UOC

出力メッセージ編集UOCは，一方送信メッセージおよび同期送受信の送信メッセージの編集をするUOCです（論理メッセージをユーザ任意の形式に編集します）。出力メッセージの編集UOCは，UAPが発行した送信メッセージを相手システムに実際に送信する前に処理するように位置させます。

出力メッセージ編集UOCはプロトコル種別がTCP/IP，またはUDPの場合に使用できます。

(1)　出力メッセージの編集

送信するメッセージが格納されている送信バッファ，および定義で指定した編集バッファを引き渡します。UOCでは，これらのバッファを使用して，出力メッセージの編集処理ができます。

また，UOCからのリターンコードによって，UAPに通知するメッセージとして送信バッファに格納されたメッセージを使用するか，編集バッファに格納されたメッセージを使用するかを選択できます。

プロトコル種別がTCP/IPの場合に，各パラメタに設定した値が不正なときは，MCP後処理トランザクションを起動して論理端末を閉塞します。

出力メッセージは，プロトコル種別がTCP/IPの場合はメッセージの先頭から，UDPの場合は制御ヘッダの先頭から引き渡します。制御ヘッダについては，「5.2　ee_mcp_send - 非同期一方送信メッセージの送信」の「UAPで値を設定する引数」を参照してください。

(2)　UOCエラーリターン処理

UOCからEEMCP_UOC_MSG_NGでエラーリターンした場合，MCPはメッセージログを出力し，MCP後処理トランザクションを起動して論理端末を閉塞します。該当するメッセージは破棄します。

(3)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，MCPはメッセージログを出力しMCP後処理トランザクションを起動して論理端末を閉塞します。該当するメッセージは破棄します。

5.4.9　出力メッセージ編集UOCインタフェース

出力メッセージ編集UOCは，次に示す形式で呼び出します。

(1)　形式

ANSI C，C++の形式

#include <eemcp.h>
int  uoc_func(struct eemcp_uoc_mout_n  *parm)

(2)　説明

出力メッセージ編集UOCを呼び出すとき，MCPは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　eemcp_uoc_mout_nの内容

typedef struct eemcp_uoc_mout_n {
    int pro_kind;                … プロトコル種別
    char le_name[9];             … 論理端末名称
    char reserve1[11];           … 予備
    EEMCPUOCBUFLIST *buflist_adr;
                                 … 送信バッファリストアドレス
    EEMCPUOCBUFLIST *ebuflist_adr;
                                 … 編集バッファリストアドレス
    int output_no;               … メッセージ出力通番
    char msg_type;               … メッセージ種別
    char outputno_flag;          … メッセージ出力通番有効フラグ
    char resend_flag;            … MCP使用領域
    char reserve2[1];            … 予備
    char *pro_indv_ifa;          … MCP使用領域
    int rtn_detail;              … 詳細リターンコード
    char reserve3[20];           … 予備
    EEULONG *usat_adr;           … ユーザSATアドレス
    int  usat_size;              … ユーザSATサイズ
    EEULONG lebuf_size;          … MCP使用領域
    void *lebuf;                 … MCP使用領域
    EEULONG64 usat_large_size;   … 拡張ユーザSATサイズ
    char *uifa_adr;              … ユーザIFAアドレス
    EEULONG64 uifa_large_size;   … ユーザIFAサイズ
    char reserve4[32];           … 予備
}EEMCPUOCMOUT;

(b)　eemcp_uocbuff_list_nの内容

typedef struct eemcp_uocbuff_list_n {
    int buf_num;                 … バッファ情報数
    int used_buf_num;            … 使用バッファ情報数
    char reserve1[8];            … 予備
    EEMCPUOCBUFINF buf_array[EEMCP_UOC_BUFF_MAX];
                                 …バッファ情報
}EEMCPUOCBUFLIST;

(c)　eemcp_uocbufinf_nの内容

typedef struct eemcp_uocbufinf_n {
    char *buf_adr;               … バッファアドレス
    unsigned int buf_size;       … バッファ最大長
    unsigned int seg_size;       … バッファ使用長
    char reserve1[8];            … 予備
    eemcpuoc_w_type buff_id;     … MCP内部情報1
    char *buff_addr;             … MCP内部情報2
    char reserve2[8];            … 予備
}EEMCPUOCBUFINF；

(d)　eemcp_uocbufheadの内容

typedef struct eemcp_uocbufhead {
    struct eemcp_uocbufhead *next_bufhead_adr;
                                 … 次バッファ情報のアドレス
    char *buf_adr;               … 送信データのバッファアドレス
    int  buf_size;               … 送信データのバッファサイズ
    char reserve[4];             … 予備
}EEMCPUOCBUFHEAD;

(4)　MCPが値を設定する項目

(a)　eemcp_uoc_mout_n

●pro_kind

プロトコル種別として，次の値が設定されます。

EEMCP_UOC_PRO_TCP

TCP/IPプロトコル

EEMCP_UOC_PRO_UDP

UDPプロトコル

●le_name

メッセージを入力した論理端末名が設定されます。

●buflist_adr

送信用バッファリストのアドレスが設定されます。

●ebuflist_adr

編集用バッファリストのアドレスが設定されます。

メッセージ編集バッファが未定義の場合（eemcpbuf定義コマンドの-eオプションを省略した場合），ebuflist_adrにはNULLが設定されます。

●output_no

MCPで使用するパラメタです。

●msg_type

メッセージ種別として，次の値が設定されます。

'n'

非同期一方送信メッセージ

's'

同期一方送信メッセージ

'v'

同期型送受信メッセージの送信メッセージ

●outputno_flag

MCPで使用するパラメタです。

●resend_flag

MCPで使用するパラメタです。

●pro_indv_ifa

MCPで使用するパラメタです。

●usat_adr

ユーザSATエリアのアドレスが設定されます。TP1/EEのサービス定義のメモリ関連定義のsystem_user_areaオペランドに0を指定した場合は，値を参照できません。

●usat_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

ユーザSATエリアのサイズが4ギガバイト以上の場合は，0が設定されます。0の場合，ユーザSATエリアのサイズは，usat_large_sizeのエリアを参照してください。なお，ユーザSATエリアのサイズが4ギガバイト未満の場合でも，usat_large_sizeのエリアからサイズを取得できます。

●lebuf_size

MCPで使用するパラメタです。

●lebuf

MCPで使用するパラメタです。

●usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

●uifa_adr

ユーザIFAエリアのアドレスが設定されます。

ユーザIFAエリアサイズが0の場合は，値を参照できません。

●uifa_large_size

ユーザIFAエリアのサイズが設定されます（単位：バイト）。

(b)　eemcp_uocbuff_list_n（バッファリスト）

●buf_num

バッファ情報の数として1が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），1以上の整数値が設定されます。

●buf_array

バッファ情報の配列が一つ設定されます。

(c)　eemcp_uocbufinf_n（バッファ情報）

●buf_adr

バッファのアドレスが設定されます。

●buf_size

バッファの最大長が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），送信バッファリストでは，eemcp_uocbufheadのbuf_adrが示す送信バッファの最大長が設定されます。

●seg_size

送信，または受信用バッファリストの場合だけ，バッファの使用長が設定されます。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），メッセージの全体長が設定されます。

●buff_id

MCPで使用するパラメタです。

●buff_addr

MCPで使用するパラメタです。

(d)　eemcp_uocbufhead（送信バッファ情報）

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，eemcp_uocbufinf_n（送信用バッファリスト）のbuf_adrが指すパラメタです。送信要求したメッセージは，複数の送信バッファに分割して渡します。

●next_bufhead_adr

次送信バッファ情報のアドレスが設定されます。最終送信バッファの場合，NULLが設定されます。

●buf_adr

送信バッファの先頭アドレスが設定されます。

●buf_size

送信バッファの有効長が設定されます。

(5)　ユーザが値を設定する項目

(a)　eemcp_uoc_mout_n

●rtn_detail　　〜((-19999〜-19000))

詳細リターンコードを設定します。

このコードは，UOCがEEMCP_UOC_MSG_NGでリターンしたときに，MCPに渡されます。MCPは詳細リターンコードをメッセージログファイルに出力します。

詳細リターンコードは，-19999〜-19000の範囲で指定してください。

(b)　eemcp_uocbuff_list_n（バッファリスト）

●used_buf_num

使用したバッファ情報の数として，buf_numと同じ値を設定してください。

(c)　eemcp_uocbufinf_n（バッファ情報）

●seg_size

バッファの使用長を設定します。メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），編集後のメッセージの全体長を設定してください。

(d)　eemcp_uocbufhead（送信バッファ情報）

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，EEMCP_UOC_MSG_OK_SNDでリターンしたときに設定します。

●buf_size

送信バッファの有効長を設定します。UDPプロトコルを使用している場合，先頭の送信バッファには，制御ヘッダ以上のサイズを設定してください。

(6)　リターン値

出力メッセージ編集UOCは次のコードでリターンしてください。

リターン値

意味

EEMCP_UOC_MSG_OK

正常リターン（編集バッファでスケジューリング）

EEMCP_UOC_MSG_OK_SND

正常リターン（送信バッファでスケジューリング）

EEMCP_UOC_MSG_NG

メッセージ編集エラー

■EEMCP_UOC_MSG_NGの場合

UOCからEEMCP_UOC_MSG_NGでエラーリターンした場合，MCP後処理トランザクションを起動します。

■UOCパラメタ不正の場合

UOCで設定した値に不正があった場合，MCPはメッセージログを出力して，MCP後処理トランザクションを起動します。

■送信バッファオーバフロー

EEMCP_UOC_MSG_OKでリターンした場合に，バッファの使用長（seg_size）に送信できる最大サイズを超える値が設定されていたとき，MCPは送信バッファオーバフローと見なします。そのあと，論理端末を閉塞してMCP後処理トランザクションを起動します。

メッセージの最大サイズを拡張していて（eemcpfunc定義コマンドのmsglenオペランドにextendを指定），かつバッファの使用長（seg_size）に設定された値が8388608を超える場合，MCPは送信バッファオーバフローと見なします。

■送信バッファ不足

メッセージの最大サイズを拡張している場合（eemcpfunc定義コマンドのmsglenオペランドにextendを指定）に，EEMCP_UOC_MSG_OKでリターンして，送信バッファ不足が発生すると，論理端末を閉塞してMCP後処理トランザクションを起動します。

(7)　バッファとパラメタの関係

UOCインタフェース用のパラメタとバッファの関係は，入力メッセージ編集UOCと同じです。「5.4.7(7)　バッファとパラメタの関係」を参照してください。

5.4.10　コネクション確立UOC

コネクション確立UOCは，相手システムからコネクション確立要求を受信するたびに起動し，その確立要求を受け入れるかどうかを判定できます（サーバ型コネクション）。

MCPは，コネクション確立UOCを呼び出すとき，コネクション確立要求を発行した相手システムのアドレス情報を通知します。コネクション確立UOCは，通知された相手システムのアドレス情報を基に，コネクション確立要求を受け入れるかどうかを判定します。

コネクション確立要求を受け入れる場合，MCPはコネクション確立のRLトランザクション（MCP後処理トランザクション）を起動することで，UAPへコネクションの確立を通知します。

コネクション確立要求を拒否する場合はコネクション確立のRLトランザクションを起動しません。この場合，相手システムにはコネクション確立後，MCPから即座にコネクションが解放されたように見えます。

なおコネクションリプレース処理は，UOCでコネクション確立を受け入れた場合に行います。

コネクション確立UOCは，プロトコル種別がTCP/IPの場合にだけ使用できます。

5.4.11　コネクション確立UOCインタフェース

(1)　形式

ANSI C，C++の形式

#include <eemcp.h>
int uoc_func(struct eemcp_uoc_con_n *parm)

(2)　説明

コネクション確立UOCを呼び出すとき，MCPは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　eemcp_uoc_con_nの内容

typedef struct eemcp_uoc_con_n {
    char con_id[9];                … コネクションID
    char reserve1[7];              … 予備
    unsigned char ripaddr[16];     … 自システムのIPアドレス
    unsigned char oipaddr[16];     … 相手システムのIPアドレス
    unsigned short rportno;        … 自システムのポート番号
    unsigned short oportno;        … 相手システムのポート番号
    EELONG reject_reason;          … コネクション確立拒否理由
    EELONG rtn_detail;             … 詳細リターンコード
    char reserve2[4];              … 予備
    char *usat_adr;                … ユーザSATアドレス
    EEULONG64 usat_large_size;     … ユーザSATサイズ（拡張）
    char reserve3[32];             … 予備
} EEMCPUOCCONN;

(4)　MCPが値を設定する項目

(a)　eemcp_uoc_con_n

●con_id

確立要求を受け付けたコネクションIDが設定されます。

●ripaddr

確立要求を受け付けた自システムのIPアドレスが設定されます。

IPアドレスはripaddrの下位4バイトに次の形式で設定されます。

●oipaddr

確立要求を行った相手システムのIPアドレスが設定されます。

IPアドレスの設定形式はripaddrを参照してください。

●rportno

確立要求を受け付けた自システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●oportno

確立要求を行った相手システムのポート番号が設定されます。

ポート番号はホストバイトオーダー形式の数値で設定されます。

●usat_adr

ユーザSATエリアのアドレスが設定されます。TP1/EEのサービス定義のメモリ関連定義のsystem_user_areaオペランドに0を指定した場合は，値を参照できません。該当領域に排他を掛けています。

●usat_large_size

ユーザSATエリアのサイズが設定されます（単位：バイト）。

(5)　ユーザが値を設定する項目

(a)　eemcp_uoc_con_n

●reject_reason

コネクション確立UOCがEEMCP_UOC_CON_OK_REJECT（コネクション確立拒否）でリターンするときの拒否理由を設定します。値は任意です。この拒否理由はログメッセージ（KFSB81406-I）に出力されます。

●rtn_detail

コネクション確立UOCがEEMCP_UOC_CON_NG（UOC異常終了）でリターンするときの詳細リターンコードを設定します。この詳細リターンコードはログメッセージ（KFSB51401-E）に出力されます。値は-19999〜-19000の範囲内で設定します。MCPは，値の範囲をチェックしません。

(6)　リターン値

コネクション確立UOCは次のコードでリターンしてください。

リターン値

意味

EEMCP_UOC_CON_OK_ACCEPT

正常リターン（コネクション確立要求を受け入れ）

EEMCP_UOC_CON_OK_REJECT

正常リターン（コネクション確立要求拒否）

EEMCP_UOC_CON_NG

コネクション確立要求判定エラー

注　上記以外のリターン値を設定した場合，EEMCP_UOC_CON_NGを設定したものとして扱います。

■EEMCP_UOC_CON_OK_REJECTの場合

UOCからEEMCP_UOC_CON_OK_REJECTでリターンした場合，MCPはメッセージログを出力し，コネクションの確立を拒否します。

■EEMCP_UOC_CON_NGの場合

UOCからEEMCP_UOC_CON_NGでリターンした場合，MCPはメッセージログを出力し，コネクションの確立を拒否します。

6　運用

この章では，MCPで取得するトレースファイルの運用，および運用コマンドについて説明します。

6.1　開始と終了

MCPはTP1/EE上で動作するため，MCPの開始および終了はTP1/EEに依存します。

TP1/EEの開始および終了については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

6.2　ファイルの運用

ファイルの運用方法について説明します。

■ステータスファイル

TP1/EEで使用するステータスファイル以外に，MCPが使用するステータスファイルはありません。したがって，MCPを使用する場合に，ステータスファイルの設計で考慮する項目はありません。

■TASKTMファイル

MCPを使用した場合，TASKTMファイルには，コネクションID，論理端末名称，およびUOC実行時間が項目として追加されます。MCP固有のTASKTMファイルはありません。

■統計情報ファイル

統計情報ファイルにはMCPの個別情報はありません。したがって，統計情報ファイルの設計でMCPを使用するときに考慮する項目はありません。

■メモリダンプファイル

メモリダンプファイルにはMCPの個別情報はありません。したがって，メモリダンプファイルの設計でMCPを使用するときに考慮する項目はありません。

■メッセージログファイル

MCPは，システムの稼働状況を示すメッセージをログファイルへ出力します。出力先はTP1/EEが出力するメッセージログファイルと同じファイルです。したがって，メッセージログファイルの保存，および障害時の運用については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

■MCPトレースファイル

MCPは保守情報として送受信イベントのMCPトレースを取得します。また，ユーザ任意のトレースも取得します。MCPトレースの運用については，「6.2.1 MCPトレースファイルの運用」を参照してください。

参考

TASKTMファイルとMCPトレースファイルを受信IDで関連づけることで，障害対策に役立てることができます。詳細については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

なお，マニュアル「TP1/Server Base Enterprise Option 使用の手引」では，"回線トレース"を"MCPトレース"に置き換えてお読みください。

6.2.1　MCPトレースファイルの運用

MCPトレースファイルには，送受信メッセージ，状態などの情報がシステムコール単位，または入出力ユーザメッセージ編集UOCのメッセージ単位で，MCPトレース情報として取得されます。

MCPトレースには，次に示す3種類があります。

■メッセージ送受信イベントトレース

MCPトレース送受信イベント情報（MCP保守用トレース）です。

eemcptrc定義コマンドの-mオプションのfilterオペランドの指定によって取得内容が決まります。

1回の送受信メッセージをトレースに取得する量は，eemcptrc定義コマンドの-mオプションの指定によって決まります。

詳細は，「(5)　MCPトレース情報の取得量の変更」を参照してください。

■ユーザトレース

入出力メッセージなどのユーザ情報トレースです。ee_mcp_utrace_put関数，またはee_mcp_utrace_put_long関数で要求したデータです。

■メッセージ送信結果トレース

出力メッセージ編集UOCでユーザトレースを取得した場合，メッセージ送信の成否に関係なく取得する結果トレースです。送受信メッセージの内容は取得しません。出力メッセージ編集UOCでユーザトレースを取得したあとに，UOCパラメタ不正などで実際に送信しなかった場合でも，保守情報として送信結果トレースを取得します。このトレースは，eemcptrc定義の-sオプションのsendresultオペランドにyesを指定した場合にだけ取得します。

通常，これらのMCPトレース情報は，イベント発生時の要求ごとに取得されます。

なお，MCPトレースは，TP1/EEシステム定義のmcp_useオペランドにYを指定した場合に機能します。

MCPトレースファイルに取得したMCPトレース情報は，eemcpedコマンドを実行して編集し，標準出力，またはCSV形式のファイルとして出力します。また，eemcpdumpコマンドを実行すると，コアファイルまたはメモリダンプファイルを入力情報として，MCPトレースファイルの編集結果を標準出力，またはCSV形式のファイルとして出力することもできます。

PPトレーススレッドの異常やI/Oが間延びしてバッファが不足した場合，eemcpedコマンドではMCPトレース情報を出力できません。ただし，eemcpfputコマンドを実行すると強制出力できます。

(1)　MCPトレースファイルの容量設定

MCPトレースファイルは，eemcptrc定義コマンドの-fオプションのfileszオペランドに指定したサイズで，TP1/EEのプロセスごとにUNIXファイルとして作成されます。プロセスごとに，eemcptrc定義コマンドの-fオプションのfilenoオペランドに指定した数のMCPトレースファイルが作成され，ラウンドロビン方式で使用されます。MCPトレースファイルのサイズおよびファイル数は，ノードで稼働するTP1/EEのプロセス数やノードのリソース容量などを考慮して，指定してください。

全体のMCPトレースファイルサイズの見積もり式を次に示します。

全体のMCPトレースファイルサイズ（T）
＝（（L ＋ 40） × x） ＋ （（M ＋ 40） × y）
  ＋（（N ＋ 40） × z） ＋ （40 × u）
  ＋（↑（（（（L + 40） × x） ＋ （（M ＋ 40） × y）
  ＋（（N ＋ 40） × z） ＋ （40 × u）） ÷ b）↑ × 96）
  ＋F

見積もり式の変数または定数を次の表に示します。

変数または定数

意味

L

メッセージ受信単位のバイト数

M

メッセージ送信単位のバイト数

N

ee_mcp_utrace_put関数で指定するトレースのデータ長

40

トレースヘッダバイト数

96

1ブロック単位に付加する情報のバイト数

F※

1ファイル単位に付加する情報のバイト数

x

受信メッセージ数

y

送信メッセージ数

z

ee_mcp_utrace_put関数の発行回数

u

出力メッセージ編集UOC内でee_mcp_utrace_put関数を発行して送信した送信回数

b

eemcptrc定義コマンドの-bオプションのbufferszオペランドに指定した値

注※

F ＝ 128 + 34 ×（サービス数）+ 16 ×（論理端末数）+ 16 ×（コネクションID数）+ 256

(2)　MCPトレースファイルの作成

MCPトレースファイルは，TP1/EEの起動時，$DCDIR/spool/dceeinf/mcpディレクトリ下にMCPが作成します。したがって，OpenTP1管理者はMCPトレースファイルを作成する必要はありません。MCPが作成するファイル名は，次に示す規則で付けられます。

サービスグループ名mcpXXX（XXXは，3けたのファイル通番）

(3)　MCPトレースファイルの削除

MCPの起動時に，前回のMCP稼働時のMCPトレースファイルが存在する場合は，最も古いMCPトレースファイルにMCPトレース情報を上書きします。したがって，OpenTP1管理者はMCPトレースファイルを削除する必要はありません。

(4)　MCPトレースファイルの保存

出力中のMCPトレースファイルのサイズが，eemcptrc定義コマンドの-fオプションのfileszオペランドに指定した値を超えた場合，出力先が新しいMCPトレースファイルに切り替わります。この場合，出力先が新しいMCPトレースファイルに切り替わることを通知するKFSB85400-Iメッセージが出力されます。このメッセージが出力されるタイミングで，MCPトレースファイルのバックアップを取得して，同一論理ボリューム上でファイル移動（mvコマンド）することをお勧めします。

MCPトレースファイル数が，eemcptrc定義コマンドの-fオプションのfilenoオペランドに指定した値を超えた場合，最も古いMCPトレースファイルにMCPトレース情報を上書きします。古いMCPトレースファイルのMCPトレース情報を保存したい場合は，MCPが上書きする前に，OpenTP1管理者がバックアップしてください。

使用中のMCPトレースファイルをバックアップした場合，編集結果が正しく表示できないことがあります。そのため，MCPトレースファイルを切り替えることを通知するメッセージが出力されてから，バックアップを取得してください。また，使用中のMCPトレースファイルは，移動または削除しないでください。

(5)　MCPトレース情報の取得量の変更

送受信データごとにMCPトレースを取得する場合，I/O処理の増加によって性能が低下したり，重要なMCPトレースが欠落したりすることがあります。これを防止するために，eemcptrc定義コマンドの-mオプションのfilterオペランドによって，送受信時のMCPトレース情報の取得内容を変更できます。

それぞれのオペランドの指定値別に，取得内容および取得サイズの差異について説明します。

00000000（デフォルト）

すべての送受信イベントをMCPトレース情報に取得します。送受信データは，1回の送受信イベントごとに最大で32000バイトを取得します。

00000010

すべての送受信イベントをMCPトレース情報に取得します。送受信データは，1回の送受信イベントごとにeemcptrc定義コマンドの-mオプションのmsgsizeオペランドに指定された最大サイズまでを取得します。msgsizeオペランドに0を指定した場合は，データ長0として取得します。

6.3　運用コマンド

ここでは，運用コマンドについて説明します。

運用コマンドの記述形式

運用コマンドの記述形式については，マニュアル「TP1/Server Base Enterprise Option 使用の手引」を参照してください。

運用コマンドの一覧

MCPの運用コマンド一覧を次の表に示します。

表6‒1　MCPで使用する運用コマンドの一覧

項番

機能

運用コマンド

オフライン

オンライン

API

1

コネクションの確立

eemcpactcn

×

○

○

2

相手システムを指定したコネクションの確立

eemcpactcnto

×

○

○

3

論理端末の閉塞解除

eemcpactle

×

○

○

4

コネクションの解放

eemcpdctcn

×

○

○

5

論理端末の閉塞

eemcpdctle

×

○

○

6

MCPトレースの編集，出力（コアファイルまたはメモリダンプファイル入力）

eemcpdump

○

○

○

7

MCPトレースの編集，出力

eemcped

○

○

○

8

MCPトレースの強制ファイル出力

eemcpfput

×

○

○

9

コネクション状態表示

eemcplscn

×

○

○

10

論理端末の状態表示

eemcplsle

×

○

○

（凡例）

オフライン：TP1/EEが起動していない状態での実行を示します。

オンライン：TP1/EEが起動している状態での実行を示します。

API：ee_adm_call_command関数での実行を示します。

○：実行できます。

×：実行できません。

eemcpactcn（コネクションの確立）

機能

コネクションを確立します。

コネクションの確立は非同期で実行されるため，このコマンドが正常終了した場合でも，コネクションの確立が失敗していることがあります。コネクションの確立結果は，MCP後処理トランザクションによって通知されます。

このコマンドの-cオプションに指定したコネクションID中に，相手システム（eemcpcn定義コマンドの-oオプション）を省略したeemcpcn定義コマンドのコネクションIDが含まれていた場合は，指定した全コネクションIDのコネクション確立処理は実行されません。

コマンドの形式

eemcpactcn -g サービスグループ名
           -c コネクションID

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-c コネクションID

　　〜〈1〜8文字の識別子〉

確立するコネクションIDを指定します。

クライアント型のコネクションID（eemcpcn定義コマンドの-cオプションの指定値）を指定してください。クライアント型のコネクションとは，eemcpcn定義コマンドの-yオプションのmodeオペランドにclientを指定したコネクションのことです。また，eemcpcn定義コマンドの相手システム（-oオプション）を指定したコネクションIDを指定してください。

コネクションIDは，一度に8個まで指定できます。複数のコネクションIDを指定するときは，引用符「"」で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。コネクションIDは重複して指定できません。

また，コネクションIDは，「*」を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべてのコネクションを確立します。

先行文字列*

先行文字列で始まるすべてのコネクションを確立します。

＜複数指定の例＞cnn1，cnn2，cnn3を指定する場合

-c "cnn1 cnn2 cnn3"

＜一括指定の例＞cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91420-I

ヘルプメッセージ

標準出力

KFSB91421-I

コネクションの確立を受け付けました。

標準出力

KFSB91422-E

コネクションの確立の受け付けに失敗しました。

標準エラー出力

KFSB91423-E

コネクションの確立に一部失敗しました。

標準エラー出力

eemcpactcnto（相手システムを指定したコネクションの確立）

機能

コネクションを確立する相手システムを指定し，コネクションを確立します。

コネクションの確立は非同期で行われます。そのため，このコマンドが正常終了した場合でも，コネクションの確立が失敗していることがあります。コネクションの確立結果はMCP後処理トランザクションによって通知されます。

eemcpcn定義の-oオプション指定値を無視します。

このコマンドで指定したコネクションIDのコネクションを切断後に，同じコネクションIDに対しeemcpactcnコマンド/ee_mcp_actcn関数でコネクション確立した場合，eemcpcnオペランドの相手システム（-o指定値）に対しコネクションを確立します。

コマンドの形式

eemcpactcnto -g サービスグループ名 -c コネクションID
           ｛-i 相手システムのIPアドレス | -n 相手システムのホスト名｝
             -p 相手システムのポート番号

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-c コネクションID

　　〜〈1〜8文字の識別子〉

確立するコネクションIDを指定します。

クライアント型のコネクションID（eemcpcn定義コマンドの-cオプションの指定値）を指定してください。クライアント型のコネクションとは，eemcpcn定義コマンドの-yオプションのmodeオペランドにclientを指定したコネクションのことです。eemcpcn定義コマンドの相手システム（-oオプション）を指定したコネクションIDを指定してください。

●-i 相手システムのIPアドレス

　　〜〈7〜15文字の符号無し数字〉

相手システムのIPアドレスを指定します。

IPアドレスを指定する場合は，xxx.xxx.xxx.xxxの形式で指定してください。xxxは，0〜255（10進数）で指定してください。ただし，0.0.0.0, 255.255.255.255の指定は不可とします。

●-n 相手システムのホスト名

　　〜〈1〜255文字のホスト名〉

相手システムのホスト名を指定します。

ホスト名は，/etc/hostsファイル，DNSなどで，IPアドレスとマッピングできるように指定する必要があります。

●-p 相手システムのポート番号

　　〜〈1〜65535〉

相手システムのポート番号を指定します。

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91471-I

ヘルプメッセージ

標準出力

KFSB91421-I

コネクションの確立を受け付けました。

標準出力

KFSB91422-E

コネクションの確立の受け付けに失敗しました。

標準エラー出力

eemcpactle（論理端末の閉塞解除）

機能

論理端末を閉塞解除します。

コマンドの形式

eemcpactle -g サービスグループ名
           -l 論理端末名

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

閉塞解除する論理端末名を指定します。eemcple定義コマンドの-lオプションで指定した論理端末名を指定してください。

論理端末名は，一度に8個まで指定できます。複数の論理端末名を指定するときは，引用符「"」で囲んで，論理端末名と論理端末名との間を空白で区切ります。論理端末名は重複して指定できません。

また，論理端末名は，「*」を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名とは，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべての論理端末を閉塞解除します。

先行文字列*

先行文字列で始まるすべての論理端末を閉塞解除します。

＜複数指定の例＞len1，len2，len3を指定する場合

-l "len1 len2 len3"

＜一括指定の例＞lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91445-I

ヘルプメッセージ

標準出力

KFSB91446-I

論理端末の閉塞解除を受け付けました。

標準出力

KFSB91447-E

論理端末の閉塞解除の受け付けに失敗しました。

標準エラー出力

KFSB91448-E

論理端末の閉塞解除に一部失敗しました。

標準エラー出力

eemcpdctcn（コネクションの解放）

機能

コネクションを解放します。該当コネクションが仕掛り中の場合でも，強制的に解放します。

コネクション解放後，MCP後処理トランザクションを起動します。

コマンドの形式

eemcpdctcn  -g サービスグループ名
            -c コネクションID 〔-f〕

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-c コネクションID

　　〜〈1〜8文字の識別子〉

コネクション解放を行うコネクションIDを指定します。

eemcpcn定義コマンドの-cオプションに指定したコネクションIDを指定してください。

コネクションIDは，一度に8個まで指定できます。複数の論理端末名を指定するときは，引用符「"」で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。コネクションIDは重複して指定できません。

また，コネクションIDは，「*」を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべてのコネクションを解放します。

先行文字列*

先行文字列で始まるすべてのコネクションを解放します。

＜複数指定の例＞cnn1，cnn2，cnn3を指定する場合

-c "cnn1 cnn2 cnn3"

＜一括指定の例＞cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-f

eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定した場合，RSTパケットを送信してコネクションを強制解放し，MCP後処理トランザクションを起動します。このオプションを指定していない場合は，eemcpcn定義コマンドの-fオプションのcnreleaseオペランドにrstを指定した場合でも，FINパケットを送信してコネクションを解放します。

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91425-I

ヘルプメッセージ

標準出力

KFSB91426-I

コネクションの解放を受け付けました。

標準出力

KFSB91427-E

コネクションの解放の受け付けに失敗しました。

標準エラー出力

eemcpdctle（論理端末の閉塞）

機能

論理端末を閉塞します。

コマンドの形式

eemcpdctle  -g サービスグループ名
            -l 論理端末名

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

閉塞する論理端末名を指定します。eemcple定義コマンドの-lオプションで指定した論理端末名を指定してください。

論理端末名は，一度に8個まで指定できます。複数の論理端末名を指定するときは，引用符「"」で囲んで，論理端末名と論理端末名との間を空白で区切ります。論理端末名は重複して指定できません。

また論理端末名は，「*」を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名は，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべての論理端末を閉塞します。

先行文字列*

先行文字列で始まるすべての論理端末を閉塞します。

＜複数指定の例＞len1，len2，len3を指定する場合

-l "len1 len2 len3"

＜一括指定の例＞lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91440-I

ヘルプメッセージ

標準出力

KFSB91441-I

論理端末の閉塞を受け付けました。

標準出力

KFSB91422-E

論理端末の閉塞の受け付けに失敗しました。

標準エラー出力

eemcpdump（MCPトレースの出力）

機能

指定されたコアファイルまたはメモリダンプファイルからMCPトレース情報を編集し，標準出力またはCSV形式でファイルに出力します。

TP1/EEプロセスがダウンした場合や特定のスレッドがダウンした場合に，MCP通信での障害情報を特定のトランザクションまたはIPアドレスなどで編集し，障害を調査するために使用します。

コマンドの形式

eemcpdump 〔-r ランID〕
          〔-s usr｜lin〕
          〔-x 中央処理通番の下限値，中央処理通番の上限値〕
          〔-l 論理端末名〔,論理端末名…〕〕
          〔-i IPアドレス〔,IPアドレス…〕〕
          〔-c CSV出力ファイル名〔-ｎ ファイル出力行〕〕 ファイル名

オプションの説明

●-r ランID

指定されたランIDを持つトレース情報だけ編集，出力します。

●-s usr｜lin

　　〜《usr》

usr：ユーザトレース情報だけを編集，出力します。

lin：MCPトレース情報だけを編集，出力します。

●-x 中央処理通番の下限値，中央処理通番の上限値

　　〜〈1〜8文字の16進数〉((0〜ffffffff))

指定されたカレント中央処理通番の範囲内の情報だけを編集，出力します。

-xオプションを指定する場合，上限値および下限値を必ず指定してください。

中央処理通番を指定する場合，最大値（4294967295）を考慮して指定してください。

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

指定された論理端末名を持つ情報だけ編集，出力します。eemcple定義コマンドの-lオプションで指定した論理端末名を指定してください。論理端末名は，最大10個指定できます。

●-i IPアドレス

　　〜〈7〜15文字の数字〉

IPアドレスを指定する場合は，nnn.nnn.nnn.nnnの形式で指定します。nnnは，0〜255（10進数）で指定します。IPアドレスは，最大10個指定できます。

●-c CSV出力ファイル名

　　〜〈パス名〉

編集結果を指定したファイルにCSV形式で出力します。標準出力には出力しません。CSVファイルに出力する場合，コンマで区切って出力します。10進数以外の場合，引用符「"」で囲んで出力します。

-nオプションを指定した場合は，パス名中のファイル名は，245文字以下としてください。-nオプション指定時にファイル名が246文字以上の場合はオプションエラーで，このコマンドが異常終了します。

●-n ファイル出力行

　　((10000〜100000))

-cオプションに指定したcsvファイルを分割して出力する場合に1ファイルに出力する行数を指定します。見出し行を含めて-nオプションに指定した行数を出力したときに，出力するファイルを切り替えます。切り替えた先のファイルには見出し行から出力します。

分割したファイルには，10進数の文字列をファイル名の末尾に付与します。付与する文字列は1から9999ファイルまでは「0001」からの連番で左に0を埋めた4けたの文字列とします。10000ファイルを超えた場合は左に0埋めをしません。ファイル名に「.」を含む場合は，最後の「.」の前に付与します。

ファイル名に文字列を付与する例を示します。

＜例1＞-cにxxxと指定した場合

xxx0001
xxx0002
 ：

＜例2＞-cにxxx.csvと指定した場合

xxx0001.csv
xxx0002.csv
 ：

このオプションを省略した場合は，ファイルを分割しないで1ファイルに出力します。

コマンド引数

●ファイル名

　　〜〈パス名〉

入力元のコアファイルまたはメモリダンプファイル名を指定します。

指定できるオプションの組み合わせを次の表に示します。

表6‒2　eemcpdumpコマンドのオプションの組み合わせ

オプション

-r

-s

-x

-l

-i

-c

-n

ファイル指定

usr

lin

-r

−

○

○

○

○

○

○

○

○

-s

usr

○

−

×

○

○

×

○

○

○

lin

○

×

−

×

×

○

○

○

○

-x

○

○

×

−

○

×

○

○

○

-l

○

○

×

○

−

×

○

○

○

-i

○

×

○

×

×

−

○

○

○

-c

○

○

○

○

○

○

−

○

○

-n

○

○

○

○

○

○

○

−

○

ファイル指定

○

○

○

○

○

○

○

○

−

（凡例）

○：指定できます。

×：指定できません。

−：該当しません。

出力形式

コマンド実行時の出力形式について説明します。

■-sにlinを指定した場合

■-sにusrを指定した場合

出力形式中の，右端の数字の意味を次に示します。

1：改行キーを含まないで，1行で出力します。

2：レコード数分出力します。

3：複数行を改行して出力します。

出力形式中の，各変数の意味を次に示します。

変数

意味

a1-a1-a1

コマンドを実行したTP1/EEのバージョン

a2-a2-a2

コマンドを実行したMCPのバージョン

bb....bb

このコマンドの引数

cc....cc

入力ファイル名

e1-e1-e1

ファイルを作成したTP1/EEのバージョン

e2-e2-e2

ファイルを作成したMCPのバージョン

e3-e3-e3

ファイルを作成したTP1/FSPのバージョン

TP1/FSPを使用した場合だけ出力します。

e3

MCPトレース情報取得タイプ

ff....ff

サービスグループ名（31文字以内）

gggggggg

TP1/EEのランID（16進数8けた）

hhhh/hh/hh hh:hh:hh hhh.hhh

MCPトレースを取得した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

ii....ii

イベント名（15文字以内）

イベントの前後で情報を取得するため，イベント名の後ろに,「前」または「後」が表示されます。また，ee_mcp_utrace_put関数，またはee_mcp_utrace_put_long関数で指定したIDを16進数で表示します。

jjjjjjjjjj

データ長（10進数10けた）

oooo/oo/oo oo:oo:oo ooo.ooo

実行時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

kkkkkkkk

該当レコードを取得した中央処理通番（16進数8けた）

kkkkkkkk1

該当レコードを取得した受信ID（16進数8けた）

lll

取得した機能種別（3文字）

usr：ユーザトレースAPI，またはMCPで取得

lin：MCPで取得

mm....mm

論理端末名（1〜8文字の識別子）

nn....nn

コネクションID（1〜8文字の識別子）

ppp.ppp.ppp.ppp

受信/送信先のIPアドレス（10進数15けた以内）

qq....qq

受信/送信先のポート番号（10進数5けた以内）

rr....rr

サービス名（1〜31文字の識別子）

0xss....ss

送信ID（16進数16けた）

0xtt....tt

リターンコード（16進数4けた以内）

tt2....tt2

リターンコード（10進数5けた以内）

uu....uu

実際に送受信したデータ長

vv vv vv vv vv vv vv vv vv vv vv vv vv vv vv vv vvvvvvvvvvvvvvvv

次に示すデータです。

-sオプションにusrを指定した場合

ユーザデータ，またはMCPで取得したデータ

-sオプションにlinを指定した場合

MCPで取得したデータ

wwww/ww/ww ww:ww:ww www.www

MCPトレース情報の出力を再開した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

yy....yy

すべての出力バッファが使用中となり，その間にMCPトレース情報出力要求が発生したため，破棄したレコード数

zzzz/zz/zz zz:zz:zz zzz.zzz

破棄を開始した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

yy....yy2

破棄を開始したレコードを取得した中央処理通番

該当しない場合は0を表示します。

yy....yy3

破棄を開始したレコードを取得した受信ID

該当しない場合は0を表示します。

■-nオプションを指定した場合の標準出力

日本語と英字共通

EARLIEST TIME               - LATEST TIME                 EARLIEST CPN - LATEST CPN FILE NAME
xxxx/xx/xx xx:xx:xx xxx.xxx - yyyy/yy/yy yy:yy:yy yyy.yyy     nnnnnnnn     mmmmmmmm zzz0001
xxxx/xx/xx xx:xx:xx xxx.xxx - yyyy/yy/yy yy:yy:yy yyy.yyy     nnnnnnnn     mmmmmmmm zzz0002
    :                                :                     :

項番

表示名称

出力形式

1

xxxx/xx/xx xx:xx:xx xxx.xxx

出力したMCPトレース情報の中でいちばん古い起動時刻

出力対象のMCPトレース情報がない場合は

「****/**/** **:**:** ***.***」

を出力します。

2

yyyy/yy/yy yy:yy:yy yyy.yyy

出力したMCPトレース情報の中でいちばん新しい起動時刻

出力対象のMCPトレース情報がない場合は

「****/**/** **:**:** ***.***」

を出力します。

3

nnnnnnnn

出力したMCPトレース情報の中でいちばん値の小さい中央処理通番。16進数8けた※

出力対象のMCPトレース情報がない場合は

「********」

を出力します。

出力対象のMCPトレース情報の中央処理通番がすべて0x00000000の場合は

「********」

を出力します。

4

mmmmmmmm

出力したMCPトレース情報の中でいちばん値の大きい中央処理通番。16進数8けた※

出力対象のMCPトレース情報がない場合は

「********」

を出力します。

出力対象のMCPトレース情報の中央処理通番がすべて0x00000000の場合は

「********」

を出力します。

5

zzz

-cオプションに指定した出力ファイル名

注※

出力対象のMCPトレース情報の中央処理通番が0x00000000，0x00000001，0x00000002の三つの場合，nnnnnnnnに表示される値は0x00000001で，mmmmmmmmに表示される値は0x00000002となり，0x00000000がnnnnnnnn，mmmmmmmmに表示されることはありません。

出力メッセージ

メッセージID

内容

出力先

KFSB91300-E

メモリを確保できません。

標準エラー出力

KFSB91301-E

コマンドの形式が不正です。

標準エラー出力

KFSB91302-E

コマンドのオプションが不正です。

標準エラー出力

KFSB91303-E

コマンドのオプションの組み合わせが不正です。

標準エラー出力

KFSB91308-E

編集できないファイルタイプです。

標準エラー出力

KFSB91310-E

ファイルのオープン処理で障害が発生しました。

標準エラー出力

KFSB91311-E

ファイルからのリード処理で障害が発生しました。

標準エラー出力

KFSB91312-E

ファイルへのライト処理で障害が発生しました。

標準エラー出力

KFSB91313-E

ファイルのクローズ処理で障害が発生しました。

標準エラー出力

KFSB91314-E

ファイルポインタの移動処理で障害が発生しました。

標準エラー出力

KFSB91315-Q

-cオプションに指定したファイルはすでに存在します。

標準出力

KFSB91316-E

指定したファイルに編集するデータがありません。

標準エラー出力

KFSB91317-E

データの編集途中でファイルの終わりに達しました。

標準エラー出力

KFSB91344-I

ヘルプメッセージ

標準出力

KFSB91357-Q

-cオプションに指定したファイルはすでに存在します。（-nオプション指定時）

標準出力

注意事項

編集対象のレコードがない場合，ヘッダ情報だけを表示します。

サービス名，論理端末名およびコネクションIDを表示する場合，表示する内容がないときは，「*」を表示します。

該当MCPトレース情報がMCPトレースファイルに出力される以前のMCPトレース出力時刻の場合は，「*」を表示します。

MCPトレース情報に欠落があった場合，欠落したレコード数を表示します。欠落したレコード数が4294967295を超えた場合，4294967295と表示します。

CSVファイルに出力する場合，コンマで区切って出力します。10進数以外の場合，引用符「"」で囲んで出力します。

CSVファイルに出力する場合，標準出力に出力しません。

MCPトレース情報取得時に障害が発生した場合など，情報が取得できないときは，0を表示します。

ファイル名に指定できるコアファイルまたはメモリダンプファイルは，コマンド実行時の環境で作成されたファイルだけです。バージョン，および適用OSが異なる製品で作成したファイルは指定できません。

CSVファイルに出力する場合，ファイル作成バージョンは「ファイル作成バージョン：dd-dd-dd」の形式で出力されます。

eemcped（MCPトレースの編集）

機能

指定されたファイルのMCPトレース情報を編集して，標準出力またはCSV形式でファイルに出力します。MCPを利用した通信で障害が発生した場合，特定の論理端末名またはIPアドレスなどで編集し，障害を調査するために使用します。

コマンドの形式

eemcped 〔-e 編集種別〕〔-t 〔開始時刻〕〔，終了時刻〕〕〔-r ランID〕
        〔-s usr｜lin〕
        〔-x 中央処理通番の下限値，中央処理通番の上限値〕
        〔-l 論理端末名〔,論理端末名…〕〕
        〔-i IPアドレス〔,IPアドレス…〕〕
        〔-c CSV出力ファイル名〔-ｎ ファイル出力行〕〕
         MCPトレースファイル名 〔MCPトレースファイル名…〕

オプションの説明

●-e 編集種別

　　〜《f》

編集種別を指定します。

r：レコード単位に編集，出力します。

f：ファイル情報一覧を出力します。

このオプションにfを指定した場合，その他のオプションを指定するとエラーになります。

●- t 開始時刻，終了時刻

指定された時刻内に，出力バッファに出力されたMCPトレース情報を編集，出力します。開始時刻，および終了時刻は，1970年1月1日0時0分0秒から当年当月当日の現在時刻までの範囲で指定します。

開始時刻または終了時刻のどちらか一方を必ず指定してください。開始時刻の指定を省略した場合は，MCPトレースファイルの先頭から指定した終了時刻までが出力範囲になります。終了時刻の指定を省略した場合は，指定した開始時刻からMCPトレースファイルの最後までが出力範囲になります。

開始時刻，および終了時刻は，「hhmmss〔MMDD〔YYYY〕〕」の形式で指定します。

hh：時（00≦hh≦23）：指定を省略できません。

mm：分（00≦mm≦59）：指定を省略できません。

ss：秒（00≦ss≦59）：指定を省略できません。

MM：月（01≦MM≦12）：指定を省略できます。※

DD：日（01≦DD≦31）：指定を省略できます。※

YYYY：年（西暦）（1970≦YYYY≦9999）：指定を省略できます。※

注※

開始時刻，または終了時刻の「年」の指定を省略した場合は，当年の指定月日時刻と見なされます。「年，月，日」の指定を省略した場合，当年当月当日の指定時刻とみなされます。「月，日」，「月」，または「日」だけを省略することはできません。省略した場合はエラーになります。「月」または「日」を省略したい場合は，「年」，「月」，「日」のすべてを省略してください。

-tオプションの指定を省略すると，指定したファイル内のすべての情報を編集，出力します。

●-r ランID

指定されたランIDを持つMCPトレース情報だけ編集，出力します。

●-s usr｜lin　

　　〜《usr》

usr：ユーザトレース情報だけを編集，出力します。

lin：MCPトレース情報だけを編集，出力します。

●-x 中央処理通番の下限値，中央処理通番の上限値

　　〜〈1〜8文字の16進数〉((0〜ffffffff))

指定されたカレント中央処理通番の範囲内の情報だけ編集，出力します。このオプションを指定する場合，上限値および下限値を必ず指定してください。

中央処理通番を指定する場合，最大値（4294967295）を考慮して指定してください。

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

指定された論理端末名を持つ情報だけ編集，出力します。eemcple定義コマンドの-lオプションで指定した論理端末名を指定してください。論理端末名は，最大10個指定できます。

●-i IPアドレス

　　〜〈7〜15文字の数字〉

IPアドレスを指定する場合は，nnn.nnn.nnn.nnnの形式で指定します。nnnは，0〜255（10進数）で指定します。IPアドレスは，最大10個指定できます。

●-c CSV出力ファイル名

　　〜〈パス名〉

指定したファイルに編集結果をCSV形式で出力します。標準出力には出力しません。CSVファイルに出力する場合，コンマで区切って出力します。10進数以外の場合，引用符「"」で囲んで出力します。

-nオプションを指定した場合は，パス名中のファイル名は，245文字以下としてください。-nオプション指定時にファイル名が246文字以上の場合はオプションエラーで，このコマンドが異常終了します。

●-n ファイル出力行

　　((10000〜100000))

-cオプションに指定したcsvファイルを分割して出力する場合に1ファイルに出力する行数を指定します。見出し行を含めて-nオプションに指定した行数を出力したときに，出力するファイルを切り替えます。切り替えた先のファイルには見出し行から出力します。

分割したファイルには，10進数の文字列をファイル名の末尾に付与します。付与する文字列は1から9999ファイルまでは「0001」からの連番で左に0を埋めた4けたの文字列とします。10000ファイルを超えた場合は左に0埋めをしません。ファイル名に「.」を含む場合は，最後の「.」の前に付与します。

ファイル名に文字列を付与する例を示します。

＜例1＞-cにxxxと指定した場合

xxx0001
xxx0002
 ：

＜例2＞-cにxxx.csvと指定した場合

xxx0001.csv
xxx0002.csv
 ：

このオプションを省略した場合は，ファイルを分割しないで1ファイルに出力します。

コマンド引数

●MCPトレースファイル名

　　〜〈パス名〉

編集するファイル名を指定します。-eオプションにfを指定した場合は，最大1024個のMCPトレースファイル名を指定できます。

指定できるオプションの組み合わせを次の表に示します。

表6‒3　eemcpedコマンドのオプションの組み合わせ

オプション

-e

-t

-r

-s

-x

-l

-i

-c

-n

ファイル指定

r

f

usr

lin

単一

複数

-e

r

−

×

○

○

○

○

○

○

○

○

○

○

×

f

×

−

×

×

×

×

×

×

×

×

×

○

○

-t

○

×

−

○

○

○

○

○

○

○

○

○

×

-r

○

×

○

−

○

○

○

○

○

○

○

○

×

-s

usr

○

×

○

○

−

×

○

○

×

○

○

○

×

lin

○

×

○

○

×

−

×

×

○

○

○

○

×

-x

○

×

○

○

○

×

−

○

×

○

○

○

×

-l

○

×

○

○

○

×

○

−

×

○

○

○

×

-i

○

×

○

○

×

○

×

×

−

○

○

○

×

-c

○

×

○

○

○

○

○

○

○

−

○

○

×

-n

○

×

○

○

○

○

○

○

○

○

−

○

×

ファイル指定

単一

○

○

○

○

○

○

○

○

○

○

○

−

−

複数

×

○

×

×

×

×

×

×

×

×

×

−

−

（凡例）

○：指定できます。

×：指定できません。

−：該当しません。

出力形式

コマンド実行時の出力形式について説明します。

■-sにlinを指定した場合

■-sにusrを指定した場合

出力形式中の，右端の数字の意味を次に示します。

1：改行キーを含まないで，1行で出力します。

2：レコード数分出力します。

3：複数行を改行して出力します。

出力形式中の，各変数の意味を次に示します。

変数

意味

a1-a1-a1

コマンドを実行したTP1/EEのバージョン

a2-a2-a2

コマンドを実行したMCPのバージョン

bb....bb

このコマンドの引数

cc....cc

入力ファイル名

dddd/dd/dd dd:dd:dd ddd.ddd

該当ファイルに出力を開始した日付

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

e1-e1-e1

ファイルを作成したTP1/EEのバージョン

e2-e2-e2

ファイルを作成したMCPのバージョン

e3-e3-e3

ファイルを作成したTP1/FSPのバージョン

TP1/FSPを使用した場合だけ出力します。

e3

MCPトレース情報取得タイプ

ff....ff

サービスグループ名（31文字以内）

gggggggg

TP1/EEのランID（16進数8けた）

hhhh/hh/hh hh:hh:hh hhh.hhh

MCPトレース情報を取得した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

ii....ii

イベント名（15文字以内）

イベントの前後で情報を取得するため，イベント名の後ろに,「前」または「後」が表示されます。また，ee_mcp_utrace_put関数，またはee_mcp_utrace_put_long関数で指定したIDを16進数で表示します。

jjjjjjjjjj

データ長（10進数10けた）

oooo/oo/oo oo:oo:oo ooo.ooo

実行時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

kkkkkkkk

該当レコードを取得した中央処理通番（16進数8けた）

kkkkkkkk1

該当レコードを取得した受信ID（16進数8けた）

lll

取得した機能種別（3文字）

usr：ユーザトレースAPI，またはMCPで取得

lin：MCPで取得

mm....mm

論理端末名（1〜8文字の識別子）

nn....nn

コネクションID（1〜8文字の識別子）

ppp.ppp.ppp.ppp

受信/送信先のIPアドレス（10進数15けた以内）

qq....qq

受信/送信先のポート番号（10進数5けた以内）

rr....rr

サービス名（1〜31文字の識別子）

0xss....ss

送信ID（16進数16けた）

0xtt....tt

リターンコード（16進数4けた以内）

tt2....tt2

リターンコード（10進数5けた以内）

uu....uu

実際に送受信したデータ長

vv vv vv vv vv vv vv vv vv vv vv vv vv vv vv vv vvvvvvvvvvvvvvvv

次に示すデータです。

-sオプションにusrを指定した場合

ユーザデータ，またはMCPで取得したデータ

-sオプションにlinを指定した場合

MCPで取得したデータ

wwww/ww/ww ww:ww:ww www.www

MCPトレース情報の出力を再開した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

yy....yy

すべての出力バッファが使用中となり，その間にMCPトレース情報出力要求が発生したため，破棄したレコード数

zzzz/zz/zz zz:zz:zz zzz.zzz

破棄を開始した時刻

「年/月/日△時間：分：秒 ミリ秒．マイクロ秒」の形式で表示します。

yy....yy2

破棄を開始したレコードを取得した中央処理通番

該当しない場合は0を表示します。

yy....yy3

破棄を開始したレコードを取得した受信ID

該当しない場合は0を表示します。

■-nオプションを指定した場合の標準出力

日本語と英字共通

EARLIEST TIME               - LATEST TIME                 EARLIEST CPN - LATEST CPN FILE NAME
xxxx/xx/xx xx:xx:xx xxx.xxx - yyyy/yy/yy yy:yy:yy yyy.yyy     nnnnnnnn     mmmmmmmm zzz0001
xxxx/xx/xx xx:xx:xx xxx.xxx - yyyy/yy/yy yy:yy:yy yyy.yyy     nnnnnnnn     mmmmmmmm zzz0002
    :                                :                     :

項番

表示名称

出力形式

1

xxxx/xx/xx xx:xx:xx xxx.xxx

出力したMCPトレース情報の中でいちばん古い起動時刻

出力対象のMCPトレース情報がない場合は

「****/**/** **:**:** ***.***」

を出力します。

2

yyyy/yy/yy yy:yy:yy yyy.yyy

出力したMCPトレース情報の中でいちばん新しい起動時刻

出力対象のMCPトレース情報がない場合は

「****/**/** **:**:** ***.***」

を出力します。

3

nnnnnnnn

出力したMCPトレース情報の中でいちばん値の小さい中央処理通番。16進数8けた※

出力対象のMCPトレース情報がない場合は

「********」

を出力します。

出力対象のMCPトレース情報の中央処理通番がすべて0x00000000の場合は

「********」

を出力します。

4

mmmmmmmm

出力したMCPトレース情報の中でいちばん値の大きい中央処理通番。16進数8けた※

出力対象のMCPトレース情報がない場合は

「********」

を出力します。

出力対象のMCPトレース情報の中央処理通番がすべて0x00000000の場合は

「********」

を出力します。

5

zzz

-cオプションに指定した出力ファイル名

注※

出力対象のMCPトレース情報の中央処理通番が0x00000000，0x00000001，0x00000002の三つの場合，nnnnnnnnに表示される値は0x00000001で，mmmmmmmmに表示される値は0x00000002となり，0x00000000がnnnnnnnn，mmmmmmmmに表示されることはありません。

出力メッセージ

メッセージID

内容

出力先

KFSB91300-E

メモリを確保できません。

標準エラー出力

KFSB91301-E

コマンドの形式が不正です。

標準エラー出力

KFSB91302-E

コマンドのオプションが不正です。

標準エラー出力

KFSB91303-E

コマンドのオプションの組み合わせが不正です。

標準エラー出力

KFSB91305-E

ファイルのヘッダ情報が不正です

標準エラー出力

KFSB91306-E

データブロックが不正です

標準エラー出力

KFSB91308-E

編集できないファイルタイプです。

標準エラー出力

KFSB91309-E

実行したコマンドのバージョンとファイル作成バージョンが不一致です。

標準エラー出力

KFSB91310-E

ファイルのオープン処理で障害が発生しました。

標準エラー出力

KFSB91311-E

ファイルからのリード処理で障害が発生しました。

標準エラー出力

KFSB91312-E

ファイルへのライト処理で障害が発生しました。

標準エラー出力

KFSB91313-E

ファイルのクローズ処理で障害が発生しました。

標準エラー出力

KFSB91315-Q

-cオプションに指定したファイルはすでに存在します。

標準出力

KFSB91331-I

ヘルプメッセージ

標準出力

KFSB91357-Q

-cオプションに指定したファイルはすでに存在します。（-nオプション指定時）

標準出力

注意事項

-eオプションにrを指定して，編集対象のレコードがない場合，-eオプションにfを指定したときの表示と同様の表示となります。

サービス名，論理端末名およびコネクションIDを表示する場合，表示する内容がないときは，「*」を表示します。

MCPトレース情報に欠落があった場合，欠落したレコード数を表示します。欠落したレコード数が4294967295を超えた場合，4294967295と表示します。

CSVファイルに出力する場合，コンマで区切って出力します。10進数以外の場合，引用符「"」で囲んで出力します。

CSVファイルに出力する場合，標準出力に出力しません。

MCPトレース情報取得時に障害が発生した場合などによって情報が取得できないときは，0を表示します。

-eオプションにfを指定した場合，その他のオプションの省略値を無視します。

CSVファイルに出力する場合，ファイル作成バージョンは「ファイル作成バージョン：ee-ee-ee」の形式で出力されます。

eemcpfput（MCPトレースの強制ファイル出力）

機能

MCPトレースバッファにスタックしているMCPトレース情報をファイルに強制出力して，ファイルをスワップします。

コマンドの形式

eemcpfput -g サービスグループ名

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

TP1/EEプロセスのサービスグループ名を指定します。

出力メッセージ

メッセージID

内容

出力先

KFSB91300-E

メモリを確保できません。

標準エラー出力

KFSB91301-E

コマンドの形式が不正です。

標準エラー出力

KFSB91302-E

コマンドのオプションが不正です。

標準エラー出力

KFSB91325-I

強制出力コマンドが成功しました。

標準出力

KFSB91326-E

強制出力コマンドが失敗しました。

標準エラー出力

KFSB91327-E

強制出力コマンドが失敗しました。

標準エラー出力

KFSB91328-E

コマンド実行中に内部矛盾が発生しました。

標準エラー出力

KFSB91335-I

ヘルプメッセージ

標準出力

eemcplscn（コネクション状態表示）

機能

コネクション状態を表示します。

コマンドの形式

eemcplscn -g サービスグループ名
          -c コネクションID 〔-d〕

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-c コネクションID

　　〜〈1〜8文字の識別子〉

状態表示するコネクションIDを指定します。

eemcpcn定義コマンドの-cオプションに指定したコネクションIDを指定してください。

コネクションIDは，一度に8個まで指定できます。複数のコネクションIDを指定する場合は，引用符「"」で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。コネクションIDは重複して指定できません。

またコネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべてのコネクション状態を表示します。

先行文字列*

先行文字列で始まるすべてのコネクション状態を表示します。

＜複数指定の例＞cnn1，cnn2，cnn3を指定する場合

-c "cnn1 cnn2 cnn3"

＜一括指定の例＞cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-d

コネクションの状態と該当するコネクションに対応する論理端末の情報を表示します。このオプションの指定を省略すると，コネクションの状態だけを表示します。

出力形式

コマンド実行時の出力形式について説明します。

■-dオプションを指定しない場合

■-dオプションを指定する場合

出力形式中の，各変数の意味を次に示します。

変数

意味

aa....aa

処理対象のTP1/EEサービスグループ名

bb....bb

コネクションID

ccc

プロトコル種別

TCP：TCP/IPプロトコル

ddd.ddd.ddd.ddd

接続先のIPアドレス

コネクション状態が未確立状態の場合は,「*」を表示します。

ee....ee

接続先のポート番号

コネクション状態が未確立状態の場合は,「*」を表示します。

fff

モード

CLT：クライアント型

SVR：サーバ型

ggg

コネクション状態

INA：未確立状態

BID：確立処理中

ACT：確立状態

OBS：解放処理中

hh....hh

論理端末名

iii

論理端末状態

INA：閉塞中

BID：閉塞解除処理中

ACT：閉塞解除中

OBS：閉塞処理中

jj....jj

端末キュー滞留数

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91405-E

コマンド処理でエラーが発生しました。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91430-I

ヘルプメッセージ

標準出力

eemcplsle（論理端末の状態表示）

機能

論理端末の状態を表示します。

コマンドの形式

eemcplsle -g サービスグループ名
          -l 論理端末名

オプションの説明

●-g サービスグループ名

　　〜〈1〜31文字の識別子〉

処理対象のサービスグループ名を指定します。

●-l 論理端末名

　　〜〈1〜8文字の識別子〉

状態表示する論理端末名を指定します。eemcple定義コマンドの-lオプションで指定した論理端末名を指定してください。

論理端末名は，一度に8個まで指定できます。複数の論理端末名を指定するときは，引用符「"」で囲んで，論理端末名と論理端末名との間を空白で区切ります。論理端末名は重複して指定できません。

また，論理端末名は，「*」を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名とは，混在して指定できません。一括指定をするときは，引用符「"」で囲んで指定します。

*

すべての論理端末の状態を表示します。

先行文字列*

先行文字列で始まるすべての論理端末の状態を表示します。

＜複数指定の例＞len1，len2，len3を指定する場合

-l "len1 len2 len3"

＜一括指定の例＞lenで始まるすべての論理端末を指定する場合

-l "len*"

出力形式

出力形式中の，各変数の意味を次に示します。

変数

意味

aa....aa

処理対象のTP1/EEサービスグループ名

bb....bb

論理端末名

ccc

プロトコル種別

TCP：TCP/IPプロトコル

UDP：UDPプロトコル

ddd

論理端末状態

INA：閉塞中

BID：閉塞解除処理中

ACT：閉塞解除中

OBS：閉塞処理中

ee....ee

端末キュー滞留数

出力メッセージ

メッセージID

内容

出力先

KFSB91401-E

領域の確保に失敗しました。

標準エラー出力

KFSB91402-E

通信障害が発生しました。

標準エラー出力

KFSB91403-E

コマンドの形式が不正です。

標準エラー出力

KFSB91404-E

フラグ引数が不正です。

標準エラー出力

KFSB91405-E

コマンド処理でエラーが発生しました。

標準エラー出力

KFSB91406-E

内部矛盾が発生しました。

標準エラー出力

KFSB91450-I

ヘルプメッセージ

標準出力

7　障害対策

この章では，MCP運用時の障害，および障害時の処理について説明します。

7.1　TCP/IPプロトコルに関連する障害

ここでは，TCP/IPプロトコルを使用して通信する場合の障害について説明します。

7.1.1　コネクション障害

コネクション障害時のMCPの処理について，次の表に示します。

表7‒1　コネクション障害時のMCPの処理（TCP/IP）

項番

障害の内容

MCPの処理

1

コネクション確立時障害（クライアント型）

コネクション確立時障害を通知するメッセージログを出力します。

MCP後処理トランザクションを起動します。

2

コネクション確立時障害（サーバ型）

サーバ側コネクション確立時障害を通知するメッセージログを出力します。

3

コネクション切断

コネクション障害を通知するメッセージログを出力します。

MCP後処理トランザクションを起動します。

端末キューを破棄します。

4

コネクション確立UOCエラーリターン

UOCエラーリターンを通知するメッセージログを出力します。

コネクション受け入れを拒否します。

MCP後処理トランザクションを起動しません。

5

無通信監視時間タイムアウト

無通信監視時間タイムアウトを通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します（入力メッセージは破棄されます）。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

7.1.2　受信障害

メッセージの受信障害時のMCPの処理について，次の表に示します。

表7‒2　メッセージの受信障害時のMCPの処理（TCP/IP）

項番

障害の内容

MCPの処理

1

サービス名未定義

サービス名不正を通知するメッセージログを出力します。

不正サービス名称検出通知トランザクション（ERRTRN1）を起動します。

2

入力メッセージ編集UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

3

入力メッセージ編集UOCエラーリターン

UOCエラーリターンを通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

4

受信バッファオーバフロー

メッセージ受信失敗を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

5

受信バッファ数不足

メモリ不足を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

6

入力セグメント判定UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

7

入力セグメント判定UOCエラーリターン

UOCエラーを通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

8

後続メッセージ時間タイムアウト

後続メッセージ監視タイムアウトを通知するメッセージログを出力します

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

9

リソース不足

メッセージ受信失敗を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

同期型送受信（ee_mcp_sendrecv）要求の場合は，エラーリターンします。

7.1.3　送信障害

メッセージの送信障害時のMCPの処理について，次の表に示します。

表7‒3　メッセージの送信障害時のMCPの処理（TCP/IP）

項番

障害の内容

MCPの処理

1

送信障害(コネクション障害)

送信障害を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求，および同期型送受信（ee_mcp_sendrecv）要求の場合エラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

2

出力メッセージ編集UOCエラーリターン

UOCエラーリターンを通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，出力メッセージは破棄されます。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求，および同期型送受信（ee_mcp_sendrecv）要求の場合はエラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

3

出力メッセージ編集UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，出力メッセージは破棄されます。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求，および同期型送受信（ee_mcp_sendrecv）要求の場合はエラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

4

送信バッファオーバフロー

送信失敗を通知するメッセージログを出力します。

同期一方送信（ee_mcp_sendsync）要求，非同期一方送信（ee_mcp_send）要求，および同期型送受信（ee_mcp_sendrecv）要求すべてエラーリターンします。

出力メッセージ編集後にオーバフローを検知した場合，送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求のときはエラーリターンします。

・一方送信（ee_mcp_send）要求のときは送信障害トランザクション（ERRTRNS）を起動します。

5

送信バッファ数不足

メモリ不足を通知するメッセージログを出力します。

同期一方送信（ee_mcp_sendsync）要求，非同期一方送信（ee_mcp_send）要求，および同期型送受信（ee_mcp_sendrecv）要求すべてエラーリターンします。

6

メッセージ送信完了時間のタイムアウト（eemcpcnのsndtim，sndsynctim，sndcmptim指定時間を超過）

送信失敗を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。

同期型一方送信（ee_mcp_sendsync）要求，同期型送受信（ee_mcp_sendrecv）要求の場合はエラーリターンします。

一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

7

メッセージ送受信完了時間のタイムアウト（eemcpcnのsndrcvtim，APIのwatchtime指定時間を超過）

送信失敗を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。

エラーリターンします。

7.1.4　トランザクションの起動の失敗（リソース不足によって処理キュー登録に失敗）

トランザクションの起動に失敗した場合のMCPの処理について，次の表に示します。

表7‒4　トランザクションの起動に失敗した場合のMCPの処理（TCP/IP）

項番

障害の内容

MCPの処理

1

メッセージ入力時

メモリ不足を通知するメッセージログを出力します。

コネクションを解放してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

2

コネクション確立時

メモリ不足を通知するメッセージログを出力します。

コネクション確立を通知するメッセージログを出力します。

MCP後処理トランザクションは起動しません。

3

コネクション解放時

メモリ不足を通知するメッセージログを出力します。

コネクション解放を通知するメッセージログを出力します。

MCP後処理トランザクションは起動しません。

4

論理端末の閉塞時

メモリ不足を通知するメッセージログを出力します。

論理端末の閉塞を通知するメッセージログを出力します。

MCP後処理トランザクションは起動しません。

5

論理端末の閉塞解除時

メモリ不足を通知するメッセージログを出力します。

論理端末の閉塞解除を通知するメッセージログを出力します。

MCP後処理トランザクションは起動しません。

6

送信障害通知時

メモリ不足を通知するメッセージログを出力します。

送信障害通知トランザクション（ERRTRNS）の起動失敗を通知するメッセージログを出力します。

7.1.5　ハーフコネクションに関連する障害

OS障害などで，RST/FINパケットが送信されないで相手システムがダウンすると，TP1/MCPの該当コネクションはハーフコネクション状態になります。この状態では，新規にコネクションを確立できないため，eemcpdctcnコマンドを実行，またはee_mcp_dctcn関数を発行し，コネクションを解放する必要があります。

7.2　UDPプロトコルに関連する障害

ここでは，UDPプロトコルを使用して通信する場合の障害について説明します。

7.2.1　論理端末の閉塞解除の失敗

論理端末の閉塞解除に失敗した場合のMCPの処理について，次の表に示します。

表7‒5　論理端末の閉塞解除に失敗した場合のMCPの処理（UDP）

項番

障害の内容

MCPの処理

1

論理端末の閉塞解除の失敗（ポートオープン失敗）

論理端末の閉塞解除の失敗を通知するメッセージログを出力します。

MCP後処理トランザクションを起動します（閉塞）。

7.2.2　受信障害

メッセージの受信障害時のMCPの処理について，次の表に示します。

表7‒6　メッセージの受信障害時のMCPの処理（UDP）

項番

障害の内容

MCPの処理

1

サービス名不正

サービス名不正を通知するメッセージログを出力します。

不正サービス名称検出通知トランザクション（ERRTRN1）を起動します。

2

受信バッファ数不足

バッファ不足を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

3

入力メッセージ編集UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

4

入力メッセージ編集UOCエラーリターン

UOCエラーリターンを通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

5

受信バッファオーバフロー

メッセージ受信失敗を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

端末キューを破棄します。

7.2.3　送信障害

メッセージの送信障害時のMCPの処理について，次の表に示します。

表7‒7　メッセージの送信障害時のMCPの処理（UDP）

項番

障害の内容

MCPの処理

1

送信障害

送信障害を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。

端末キューを破棄します。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求の場合はエラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

2

送信バッファ数不足

メモリ不足を通知するメッセージログを出力します。

同期一方送信（ee_mcp_sendsync）要求，非同期一方送信（ee_mcp_send）要求ともにエラーリターンします。

3

送信バッファオーバフロー

送信失敗を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。

端末キューを破棄します。

同期一方送信（ee_mcp_sendsync）要求，非同期一方送信（ee_mcp_send）要求ともにエラーリターンします。

出力メッセージ編集後にオーバフローを検知した場合，送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求のときはエラーリターンします。

・非同期一方送信（ee_mcp_send）要求のときは送信障害トランザクション（ERRTRNS）を起動します。

4

出力メッセージ編集UOCエラーリターン

UOCエラーリターンを通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。

端末キューを破棄します。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求の場合はエラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

5

出力メッセージ編集UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。

端末キューを破棄します。

送信形態によって処理が異なります。

・同期一方送信（ee_mcp_sendsync）要求の場合はエラーリターンします。

・非同期一方送信（ee_mcp_send）要求の場合は送信障害トランザクション（ERRTRNS）を起動します。

7.2.4　トランザクションの起動の失敗（リソース不足によって処理キュー登録に失敗）

トランザクションの起動に失敗した場合のMCPの処理について，次の表に示します。

表7‒8　トランザクションの起動に失敗した場合のMCPの処理（UDP）

項番

障害の内容

MCPの処理

1

メッセージ入力時

メモリ不足を通知するメッセージログを出力します。

論理端末を閉塞してMCP後処理トランザクションを起動します。このとき，入力メッセージは破棄されます。

2

論理端末の閉塞時

メモリ不足を通知するメッセージログを出力します。

論理端末を閉塞するメッセージログを出力します。

論理端末を閉塞します。

MCP後処理トランザクションを起動しません。

3

論理端末の閉塞解除時

メモリ不足を通知するメッセージログを出力します。

論理端末を閉塞するメッセージログを出力します。

論理端末を閉塞します。

MCP後処理トランザクションを起動しません。

4

送信障害通知時

メモリ不足を通知するメッセージログを出力します。

送信障害通知トランザクション（ERRTRNS）の起動失敗を通知するメッセージログを出力します。

付録

付録A　インストールディレクトリとファイル

MCPのインストールディレクトリの構成とファイルを次の図に示します。

この図の構成は，OSがLinuxの場合の構成です。OSがAIXの場合は次のとおり読み変えてください。

/opt/OpenTP1は，/BeTRANに読み変えてください。

libディレクトリ下のライブラリの拡張子は，.soから，.aに読み変えてください。

mcp_u8msgtxt.tp1ee（MCP用のメッセージカタログファイル(UTF-8)）は提供しません。

図A‒1　MCPのインストールディレクトリの構成とファイル

付録B　MCPのエラーコード一覧

MCPのAPIで返されるエラーコードの一覧と，各エラーコードの意味を説明します。

表B‒1　MCPのAPIで返されるエラーコード

項番

COBOL言語のステータスコード

C言語のリターン値

意味

1

00000

EE_OK

正常に終了しました。

2

00001

EECOMER_ENVIRON

TP1/EEの環境下にありません。

3

00004

EECOMER_CNDUOC

この関数を実行できないUOCから発行しているため，この機能は使用できません。

4

10001

EEMCPER_MESSAGE_TOO_BIG

次のどちらかを意味します。

データ長に指定できる最大サイズを超える値を設定しています。

sdatalengに送信できる最大サイズを超える値を設定しています。

5

10002

EEMCPER_MESSAGE_TOO_SHORT

次のどちらかを意味します。

データ長に4未満を設定しています。

sdatalengに0（UDPの場合は24）以下を設定しています。

6

10003

EEMCPER_ARGUMENT

次のどちらかを意味します。

データ長以外の引数に設定した値が間違っています。

senddata，およびwatchtimeに設定した値が間違っています。

EEMCPER_INFO

infoに設定した値が間違っています。

7

10004

EEMCPER_ACTION

actionに設定した値が間違っています。

8

10005

EEMCPER_OPTION

次のどちらかを意味します。

opcdに設定した値が間違っています。

flagsに設定した値が間違っています。

9

10006

EEMCPER_COMMFORM

commformに設定した値が間違っています。

10

10007

EEMCPER_TIME

watchtimeに設定した時間が経過しました。

11

10008

EEMCPER_NUM

次のどちらかを意味します。

le_numに設定した値が間違っています。

con_numに設定した値が間違っています。

12

10009

EEMCPER_CONDITION

発行条件が不正です。

13

10010

EEMCPER_CON_NAME

指定したコネクションIDの中に不正なコネクションIDがあります。

14

10011

EEMCPER_LE_NAME

次のどちらかを意味します。

termnamに設定した論理端末名が間違っています。

指定した論理端末名の中に不正な論理端末名があります。

15

10012

EEMCPER_FORM

formに設定した値が間違っています。

16

10020

EEMCPER_TERM_HOLD

termnamに設定した論理端末名は閉塞中です。

17

10021

EEMCPER_UOC_ERR

出力メッセージ編集UOCがエラーリターンしました。

18

10022

EEMCPER_UOC_INVALID

出力メッセージ編集UOCで障害が発生しました。

19

10025

EEMCPER_SENDER

システムに対する送信時に障害が発生しました。

20

10026

EEMCPER_STOP

トラブルシュート機能が停止中です。

21

10027

EEMCPER_SYSERR

システムエラーが発生しました。

22

10028

EEMCPER_PART

次のどちらかを意味します。

一部の論理端末の閉塞または閉塞解除に失敗しました。

一部のコネクションの確立または解放に失敗しました。

23

10030

EEMCPER_MEMORY_SHORT

メモリ不足が発生しました。

24

10031

EEMCPER_OVERFLOW

inbuflengの指定値を超えるセグメントを受信しました。inbuflengの指定値を超えた部分は切り捨てられました。

25

10032

EEMCPER_INBUFLENG

inbuflengの指定値が不足しています。9バイト以上の領域を確保してください。

26

10033

EEMCPER_SENDER_RECV

メッセージ受信が仕掛かり中です。

27

10034

EEMCPER_TERM_IN_USE

出力先の論理端末は，ほかのUAPで仕掛かり中です。

28

10035

EEMCPER_SENDTIME

メッセージ送信完了監視タイマのタイムアウトが発生しました。

29

10036

EEMCPER_RECVER

受信待ちでコネクション障害が発生しました。

30

10040

EEMCPER_ADDRESS

指定したIPアドレスまたはホスト名が不正です。

31

10041

EEMCPER_PORT

指定したポート番号が不正です。

32

10044

EEMCPER_IDNAME

idnameに設定した値が間違っています。

33

10045

EEMCPER_ACT_BEGIN

指定したコネクションが確立処理中状態です。

34

10046

EEMCPER_DCT_BEGIN

指定したコネクションが解放処理中状態です。

35

10047

EEMCPER_DCT

指定したコネクションが未確立状態です。

36

10048

EEMCPER_ALREADY

指定したコネクションはすでに使用中です。

付録C　運用コマンド実行機能でのMCPコマンドの実行可否

運用コマンド実行機能での，MCPコマンドの自TP1/EEプロセスに対する実行可否を次の表に示します。

表C‒1　運用コマンド実行機能でのMCPコマンドの自TP1/EEプロセスに対する実行可否

コマンド

トランザクション種別

MI

ME

MN

E1

E2

E3

E4

ES

ER

TM

UI

MV

RL

UT

CU

JI

eemcpactcn

×

×

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcpactcnto

×

×

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcpactle

×

×

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcpdctcn

×

○

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcpdctle

×

○

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcpdump

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

eemcped

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

○

eemcpfput

×

×

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcplscn

×

○

○

○

○

○

○

○

○

○

×

○

○

○

○

×

eemcplsle

×

○

○

○

○

○

○

○

○

○

×

○

○

○

○

×

（凡例）

○：実行できます。

×：実行できません。

■MCP後処理トランザクションで実行できないコマンド

TP1/EEおよびXTCが提供するコマンドのうち，次に示すコマンドについては，運用コマンド実行機能でのMCP後処理トランザクションで実行できません。

eeadmccsetup

eechgap

eedbqmstp

eedbqtblh

eedbqtblo

eemchotqend

eepcerefer

eerasget

eerpcnamdel

eesvstart

eetrbwtor

付録D　各バージョンの変更内容

各バージョンの変更内容を示します。

付録D.1　変更内容（3000-3-F57-50）

uCosminexus TP1/EE/Message Control Extension　02-04の製品の変更内容（3000-3-F57-50）を表に示します。

追加・変更内容

適用OSにAIX V7.2を追加した。

uCosminexus TP1/EE/Message Control Extension　Linux5，Linux6　02-02／Linux6，Linux7　02-04の製品の変更内容（3000-3-F57-50）を表に示します。

追加・変更内容

eemcptrc（トレース定義）の-bオプションのオペランドの説明を変更した。

次のライブラリ関数のトランザクション種別の使用有無を変更した。

ee_mcp_send，CBLEEMCP('SEND ')

ee_mcp_sendsync，CBLEEMCP('SENDSYNC')

ee_mcp_actcn，CBLEEMCP('ACTCN ')

ee_mcp_actle，CBLEEMCP('ACTLE ')

付録D.2　変更内容（3000-3-F57-40）

uCosminexus TP1/EE/Message Control Extension　02-03の製品の変更内容（3000-3-F57-40）を表に示します。

追加・変更内容

各バージョンの変更内容を追加した。

付録D.3　変更内容（3000-3-F57-30）

uCosminexus TP1/EE/Message Control Extension　02-02の製品の変更内容（3000-3-F57-30）を表に示します。

追加・変更内容

各バージョンの変更内容を追加した。

uCosminexus TP1/EE/Message Control Extension　02-01の製品の変更内容（3000-3-F57-30）を表に示します。

追加・変更内容

回線トレース情報をCSVファイル形式で出力する際，ファイルを分割できるようにした。

これに伴い，次のコマンドを変更した。

eemcpdump

eemcped

uCosminexus TP1/EE/Message Control Extension　02-00の製品の変更内容（3000-3-F57-30）を表に示します。

追加・変更内容

自システムからのメッセージ送信と，相手システムからの応答メッセージの受信を連続で行う同期型メッセージの送受信機能を追加した。

これに伴い，次のMCP構成定義を変更した。

コネクション定義（TCP/IP）

eemcpcn

論理端末定義（TCP/IP）

eemcple

次のライブラリ関数（C言語）を追加した。

ee_mcp_sendrecv

次のライブラリ関数（C言語）の説明を変更した。

トランザクションインタフェース情報

次のライブラリ関数（COBOL言語）を追加した。

CBLEEMCP('SENDRECV')

次のライブラリ関数（COBOL言語）の説明を変更した。

トランザクションインタフェース情報

CBLEEMCP('SEND ')

CBLEEMCP('SENDSYNC')

MCPで使用できるユーザオウンコーディング（UOC）に，コネクション確立UOCを追加した。

これに伴い，次のMCP構成定義を変更した。

論理端末アプリケーション定義

eemcplefunc

アプリケーション定義

eemcpfunc

次のライブラリ関数を追加した。

ee_mcp_cninfo

CBLEEMCP('CNINFO ')

クライアント型コネクションでは，相手システムを指定したコネクションを確立できるようにした。

これに伴い，次のMCP構成定義を変更した。

TCP/IP定義の開始

eemcptcpstart

コネクション定義（TCP/IP）

eemcpcn

次のライブラリ関数を追加した。

ee_mcp_actcn_to

CBLEEMCP('ACTCNTO ')

次のライブラリ関数（C言語）の説明を変更した。

トランザクションインタフェース情報

ee_mcp_actcn

次のライブラリ関数（COBOL言語）の説明を変更した。

トランザクションインタフェース情報

CBLEEMCP('ACTCN ')

次のコマンドの説明を変更した。

eemcpactcn

次のコマンドを追加した。

eemcpactcnto

任意のコネクションで，相手システムとの間で，メッセージの送信または受信がない無通信状態を監視できるようにした。

これに伴い，次のMCP構成定義を変更した。

コネクション定義（TCP/IP）

notrftime

次のライブラリ関数（C言語）の説明を変更した。

トランザクションインタフェース情報

論理端末の閉塞解除が成功した場合の処理と，論理端末の状態を確認する方法について説明を追加した。

MCPのシステム定義での注意事項を変更した。

MCPのエラーコード一覧の説明を追加した。

付録D.4　変更内容（3000-3-F57-20）

uCosminexus TP1/EE/Message Control Extension　01-04の製品の変更内容（3000-3-F57-20）を表に示します。

追加・変更内容

送受信するメッセージのデータ形式の変化，およびメッセージ送信先の指定について，説明を追加した。

UDPプロトコルで，メッセージ送信先をMCP構成定義で指定できるようにした。

これに伴い，次のオペランドを追加した。

eemcple（論理端末定義（UDP））

oipaddr

ohostname

oportno

また，次の関数の引数opcd，またはデータ名Gの指定値を変更した。

ee_mcp_send

ee_mcp_sendsync

CBLEEMCP('SEND ')

CBLEEMCP('SENDSYNC')

TP1/EE終了時のコネクションの解放形態を指定できるようにした。

これに伴い，次のオペランドを追加した。

eemcpcn（コネクション定義（TCP/IP））

endrelease

また，次のオペランドの説明を変更した。

eemcpcn（コネクション定義（TCP/IP））

cnrelease

MCP後処理トランザクションを起動する場合の設定について，説明を変更した。

論理端末ごとにアプリケーションを定義できるようにした。

これに伴い，次の定義を追加した。

eemcplefunc（論理端末アプリケーション定義）

TP1/EEのオプション製品として，TP1/FSPをサポートした。

これに伴い，次のオペランドを追加した。

eemcplefunc（論理端末アプリケーション定義）

rltrnlevel

eemcpfunc（アプリケーション定義）

rltrnlevel

outputmessage

outputfunction

次のトランザクションインタフェース情報を追加した。

トランザクション起動要因

サーバ再起動回数

トランザクション起動時刻

送信元のノード識別子

トランザクションレベル名長

トランザクションレベル名

次の関数の説明を変更し，注意事項を追加した。

ee_mcp_send

ee_mcp_sendsync

CBLEEMCP('SEND ')

CBLEEMCP('SENDSYNC')

次のコマンドの出力形式を変更した。

eemcpdump（MCPトレースの出力）

eemcped（MCPトレースの編集）

また，次のトランザクション種別を追加した。

UT，CU，JI

オンライン開始時の自動起動によるMCP後処理トランザクションが起動しない場合の条件を追加した。

エラートランザクションの起動について，説明を追加した。

メッセージ受信時のコネクション以外の場合（送信元でコネクションが再確立された場合）でも，応答メッセージを送信するかどうかを指定できるようにした。

これに伴い，次のオペランドを追加した。

eemcpfunc（アプリケーション定義）

reconnectsend

MCP定義オブジェクト生成ユティリティの出力メッセージを追加した。

また，定義オブジェクトファイルの互換性について，説明を追加した。

定義とオペランドの追加に伴い，システム構成例，および定義のコーディング例を変更した。

TP1/EEの各製品のトランザクションで使用できるMCPのライブラリ関数について，説明を追加した。

UOCの組み込みについて，説明を追加した。

UOCで使用できる関数に，TP1/EEの現在時刻取得関数（ee_thd_gettime）を追加した。

別プロセスによるトランザクション回復機能を削除した。これに伴い，関連するコマンドを削除した。

各バージョンの変更内容を追加した。

付録D.5　変更内容（3000-3-F57-10）

uCosminexus TP1/EE/Message Control Extension　01-02の製品の変更内容（3000-3-F57-10）を表に示します。

追加・変更内容

次に示す関数で扱うメッセージの最大サイズを拡張できるようにした。

ee_mcp_send

ee_mcp_sendsync

CBLEEMCP('SEND ')

CBLEEMCP('SENDSYNC')

これに伴い，メッセージの最大サイズを拡張した場合の次のトレース取得関数を追加した。

ee_mcp_utrace_put_long

CBLEEMCP('UTPUTL ')

また，次に示す定義のオペランドを追加，変更した。

eemcpfunc（アプリケーション定義）

msglen

eemcptrc（トレース定義）

entrysize

さらに，次に示すコマンドの出力形式を変更した。

eemcpdump（MCPトレースの出力）

eemcped（MCPトレースの編集）

TP1キャッシュ機能使用時のCL構成に，MCPを組み込めるようにした。

これに伴い，次のオペランドを追加した。

eemcpfunc（アプリケーション定義）

recvpermanence

また，次の関数，および定義に注意事項を追加した。

ee_mcp_send

CBLEEMCP('SEND ')

eemcpcn（コネクション定義（TCP/IP））

eemcple（論理端末定義（UDP））

eemcpfunc（アプリケーション定義）

MCPトレース情報の取得量を変更できるようにした。

これに伴い，次のオペランドを追加した。

eemcptrc（トレース定義）

filter

msgsize

送信結果トレースの取得有無をユーザが指定できるようにした。

これに伴い，次のオペランドを追加した。

eemcptrc（トレース定義）

sendresult

プロセス管理テーブルユーザエリア，およびスレッド対応インタフェースユーザエリアのサイズを拡張した。

これに伴い，トランザクションインタフェース情報に次の情報を追加した。

拡張ユーザIFAエリアサイズ

拡張ユーザSATエリアサイズ

トランザクションの同期点を取得する処理でエラーが発生した場合の，注意事項を追加した。

受信IDを出力することで，MCPトレースファイルとTASKTMファイルを関連づけられるようにした。

これに伴い，次のコマンドの出力形式を変更した。

eemcpdump（MCPトレースの出力）

eemcped（MCPトレースの編集）

MCPトレースファイルの容量算出式を変更した。

システム統計情報として，トラブルシュート情報を取得できるようにした。

これに伴い，次のコマンドの出力形式を変更した。

eemcpdump

eemcped

付録E　このマニュアルの参考情報

このマニュアルを読むに当たっての参考情報を示します。

付録E.1　関連マニュアル

このマニュアルの関連マニュアルを次に示します。必要に応じてお読みください。

OpenTP1 Version 7

関連製品

COBOL2002 使用の手引 手引編（3000-3-D42）

COBOL2002 使用の手引 操作編（3000-3-D43）

高信頼化システム監視機能 HAモニタ Linux(R)編（3000-9-132）

高信頼化システム監視機能 HAモニタ Linux(R)（x86）編（3000-9-201）

高信頼化システム監視機能 HAモニタ メッセージ（3000-9-203）

付録E.2　このマニュアルでの表記

(1)　製品名

このマニュアルで使用する製品名称の略称を次に示します。

略称

名称

Linux

Red Hat Enterprise Linux Server 6 (64-bit x86_64)

Red Hat Enterprise Linux Server 7 (64-bit x86_64)

Red Hat Enterprise Linux Server 8 (64-bit x86_64)

Red Hat Enterprise Linux Server 9 (64-bit x86_64)

MCP

uCosminexus TP1/EE/Message Control Extension

TP1/Client

TP1/Client/J

uCosminexus TP1/Client/J

TP1/Client/P

uCosminexus TP1/Client/P

TP1/Client/W

uCosminexus TP1/Client/W

TP1/EE

TP1/Server Base Enterprise Option

uCosminexus TP1/Server Base Enterprise Option

uCosminexus TP1/Server Base Enterprise Option(64)

TP1/FSP

uCosminexus TP1/Financial Service Platform

TP1/Server Base

uCosminexus TP1/Server Base

UNIX

UNIX(R)

XDB

uCosminexus TP1/EE/Extended Data Cache

XTC

uCosminexus TP1/EE/Extended Transaction Controller

(2)　インストールディレクトリのパス

このマニュアルでは，TP1/EEのインストールディレクトリを次のように表記しています。

このマニュアルでの表記

読み替え

インストールディレクトリ

/opt/OpenTP1

付録E.3　英略語

このマニュアルで使用する英略語の一覧を次に示します。

英略語

英字での表記

API

Application Programming Interface

CSV

Comma Separated Value

DB

Database

HA

High Availability

IP

Internet Protocol

LAN

Local Area Network

OS

Operating System

RPC

Remote Procedure Call

SDB

Structured Database

SPP

Service Providing Program

TCP/IP

Transmission Control Protocol/Internet Protocol

TTL

Time To Live

UAP

User Application Program

UDP

User Datagram Protocol

UOC

User Own Coding

XA

Extended Architecture

付録E.4　KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

付録F　用語解説

（英字）

CL連携

XTCとHAモニタの連携によって，高信頼性と高可用性を実現するクラスタリングのことです。

MCPトレース

MCPを使用して送受信したメッセージの状態に関する情報のうち，ユーザトレースの取得関数で取得した情報です。通常はイベント発生時の要求ごとに取得します。ただし，トランザクション実行中に要求された取得項目は，トランザクション終了時に一括して取得します。MCPトレースを編集，出力する場合は，MCPのコマンドを実行します。

OpenTP1管理者

OpenTP1を管理する，UNIX OSの利用者のことです。OpenTP1管理者をどの利用者名称とするかは，スーパユーザが決めます。OpenTP1管理者は，OpenTP1を使う上で重要な権限を持つユーザです。システムの機密保護上，利用者名称にはパスワードを必ず設定して，限られた人だけがOpenTP1管理者の利用者名称を使えるようにしてください。

RPC（Remote Procedure Call）

→リモートプロシジャコールの説明を参照してください。

SO_KEEPALIVE

OSが提供しているソケットオプションです。SO_KEEPALIVEを使用すると，コネクションがメッセージ送受信中でない場合に，相手システムに対して一定間隔でパケットを送信し，その間に応答がなければ障害と見なしてコネクションを切断します。この機能をキープアライブといいます。

ただし，キープアライブの仕様はOSの実装によって異なり，ネットワークの負荷を高める場合があります。そのため，コネクション障害を確実に検出したい場合だけ使用してください。

SO_REUSEADDR

OSが提供しているソケットオプションです。SO_REUSEADDRを使用すると，別のプロセスによって使用中のポートであっても，ポート番号を共用することで複数のプロセスで使用できるようなります。

SPP（Service Providing Program）

OpenTP1のUAPのうち，ファイルへのアクセスなどサーバの役割をするプログラムのことです。SPPは，クライアントUAPから要求されたサービスを実行するサービス関数と，サービス関数をまとめるメイン関数から構成されます。

TASKTM

TP1/EEが出力するトランザクションごとの統計情報です。トランザクションの開始からコミットまたはロールバックの間に，各スレッドで処理する事象発生回数や時間が，TASKTM情報としてファイルに格納されます。TASKTM情報を編集，出力する場合は，TP1/EEのコマンドを実行します。

TCP/IP

米国国防総省高等研究計画局（DARPA）のプロジェクトであるARPANETが開発したプロトコルのことです。TCP/IPプロトコルは，主にLANで使われます。TP1/EEでは，クライアント／サーバ形態の通信の通信プロトコルにTCP/IPを使用します。

TCP_NODELAY

OSが提供するソケットオプションです。TCP_NODELAYを使用すると，送信済みデータの応答待ちの状態でも遅延させることなくデータ送信できるようになります。

ただし，TCP_NODELAYの仕様はOSによって異なり，ネットワークの負荷を高める場合があります。TCP_NODELAYを使用する場合は，必要性を十分に検討した上で使用するようにしてください。

UAP（User Application Program）

ユーザの業務をプログラムとして作成したものです。アプリケーションプログラムともいいます。

UOC（User Own Coding）

メッセージ送受信のUAPをより多様な業務に対応させるためにユーザがコーディングするプログラムです。起動するアプリケーション名を決定したり，UAPが送信したメッセージを他システムに送信する前に編集できます。

（ア行）

アプリケーション

TP1/EEの業務処理の総称です。アプリケーションとして作成するプログラムをアプリケーションプログラム（またはユーザアプリケーションプログラム　UAP）といいます。

（カ行）

コネクション

メッセージ送受信の業務で，ほかのシステムとOpenTP1システムとの間に確立する論理的な通信路をコネクションといいます。

コミット

トランザクションの同期点を取得できたことをコミットといいます。コミットできた場合，該当するトランザクション処理が有効となります。

（サ行）

サービス

クライアント／サーバシステムでは，クライアントから要求された手続きを総称してサービスといいます。UAPのコーディング時には，C言語の場合は関数として，COBOL言語の場合はサブルーチンとして，サービスを作成します。作成したサービスのことを，C言語の場合はサービス関数，COBOL言語の場合はサービスプログラムといいます。

サービスグループ

OpenTP1のサーバUAPは，クライアントからの手続き要求を処理するサービスの集合です。このことから，サーバUAPのことをサービスグループといいます。TP1/EEのリモートプロシジャコールの関数ee_rpc_callでは，サービスを要求するときにサービスグループ名とサービス名を引数に設定します。

システムサービス

TP1/EEの個々の機能を指してシステムサービスといいます。

スーパユーザ（superuser）

UNIX OSの最高権限を持つユーザのことです。UNIXファイルシステムのすべてのファイルに対してアクセス権を持ちます。スーパユーザの利用者名称はrootで固定されています。

（タ行）

トランザクション

ファイルからデータを読み出して，変更したデータを書き込む処理（更新処理）では，データの一貫性を保持するため，途中で分けられません。このような処理の単位をトランザクションといいます。トランザクションの処理結果は，有効にするか無効にするかのどちらかに必ず決められます。

（ナ行）

ノード

ネットワークでつながれた，TP1/EEやTP1/Server Baseが稼働する一つのコンピュータのことです。

（ハ行）

プロセス

ユーザサーバ，またはTP1/EEが，OSの作業領域を使用することで生成される作業領域の処理をプロセスといいます。

ホスト

ネットワークにつながれた，TP1/EEが稼働する一つの計算機のことです。

（マ行）

マルチスレッド

一つのアプリケーションがスレッドと呼ばれる処理単位を複数生成し，並行して複数の処理を行うことをマルチスレッドといいます。TP1/EEは，TP1/Server Base機能の一部をマルチスレッドで実現します。

メッセージログ

TP1/EEシステムの稼働状況に関する情報です。稼働状況を管理したり，障害発生時の切り分けをしたりするために取得します。メッセージログファイルは，TP1/EEの起動時に，TP1/EEのサービスグループごとにUNIXファイルとしてTP1/EEが作成します。

（ラ行）

リソースマネジャ（Resource Manager）

分散処理システムでの，資源を管理する機能の総称です。DBMSはリソースマネジャです。

リモートAPI機能

クライアント側のノードにあるUAPが呼び出したAPIを，TP1/EEのプロセスで代理実行する機能をリモートAPI機能といいます。リモートAPI機能を要求するクライアント側のノードにあるUAPをrapクライアントといいます。rapクライアントが呼び出したAPIをrapサーバで実行します。TP1/EEは，rapクライアントとしても，rapサーバとしても動作します。リモートAPI機能で代理実行できるAPIは，ee_rpc_call関数，およびdc_rpc_call関数です。dc_rpc_call関数は，TP1/EEがrapサーバとして動作する場合だけ使用できます。

リモートプロシジャコール（Remote Procedure Call）

UAPを実行するプロセス間で通信する機能を，リモートプロシジャコール（RPC）といいます。TP1/EEのUAPは，ほかのシステムのUAPとRPCで通信します。TP1/Server Baseのネームサービスで，サーバUAPがあるノードのネットワークアドレスとサービスグループ名を管理しているので，RPCを使用するときは，通信相手がクライアント／サーバシステムのどのノードのUAPかを意識する必要はありません。

ロールバック

トランザクション処理を無効にする同期点処理をロールバックといいます。UAPから関数を呼び出す場合と，TP1/EEからUAPの処理を無効にする場合があります。

索引

C

CBLEEMCP('ACTCNTO ')[1]

CBLEEMCP('ACTCN ')[1]

CBLEEMCP('ACTLE ')[1]

CBLEEMCP('CNINFO ')[1]

CBLEEMCP('DCTCN ')[1]

CBLEEMCP('DCTLE ')[1]

CBLEEMCP('SENDRECV ')[1]

CBLEEMCP('SENDSYNC')[1]

CBLEEMCP('SEND ')[1]

CBLEEMCP('UTPUTL ')[1]

CBLEEMCP('UTPUT ')[1]

CLサーバでのMCP[1]

CL連携〔用語解説〕[1]

COBOL-UAP作成用プログラムの説明形式[1]

E

ee_mcp_actcn[1]

ee_mcp_actcn_to[1]

ee_mcp_actle[1]

ee_mcp_cninfo[1]

ee_mcp_dctcn[1]

ee_mcp_dctle[1]

ee_mcp_send[1]

ee_mcp_sendrecv[1]

ee_mcp_sendsync[1]

ee_mcp_utrace_put[1]

ee_mcp_utrace_put_long[1]

eemcpactcn[1]

eemcpactcnto[1]

eemcpactle[1]

eemcpbuf[1]

eemcpcn[1]

eemcpdctcn[1]

eemcpdctle[1]

eemcpdump[1]

eemcped[1]

eemcpfput[1]

eemcpfunc[1]

eemcpgen[1]

eemcplefunc[1]

eemcple〔TCP/IP〕[1]

eemcple〔UDP〕[1]

eemcplscn[1]

eemcplsle[1]

eemcptcpend[1]

eemcptcpstart[1]

eemcpthdgrp[1]

eemcptrc[1]

eemcpudpend[1]

eemcpudpstart[1]

M

MCP[1]

MCP後処理トランザクションの起動タイミングと内容[1]

MCPオブジェクト生成ユティリティ[1]

MCP拡張トランザクションインタフェース情報（COBOL言語）[1]

MCP拡張トランザクションインタフェース情報（C言語）[1]

MCP構成定義オブジェクトファイル[1]

MCP構成定義オブジェクトファイル〔格納場所〕[1]

MCP構成定義オブジェクトファイルの生成[1]

MCP構成定義の一覧[1]

MCP構成定義の記述順序[1]

MCP構成定義ファイル[1]

MCPで使用できるユーザオウンコーディング（UOC）[1]

MCPトレースの強制ファイル出力〔運用コマンド〕[1]

MCPトレースの出力〔運用コマンド〕[1]

MCPトレースの編集〔運用コマンド〕[1]

MCPトレースファイル[1]

MCPトレースファイルの運用[1]

MCPトレースファイルの削除[1]

MCPトレースファイルの作成[1]

MCPトレースファイルの保存[1]

MCPトレースファイルの容量設定[1]

MCPトレース〔用語解説〕[1]

MCPのエラーコード一覧[1]

MCPのライブラリ関数の一覧[1]

O

OpenTP1管理者〔用語解説〕[1]

R

Remote Procedure Call〔用語解説〕[1]

Resource Manager〔用語解説〕[1]

RPC〔用語解説〕[1]

S

SO_KEEPALIVE[1]

SO_KEEPALIVE〔用語解説〕[1]

SO_REUSEADDR[1]

SO_REUSEADDR〔用語解説〕[1]

SPP〔用語解説〕[1]

superuser〔用語解説〕[1]

T

TASKTMファイル[1]

TASKTM〔用語解説〕[1]

TCP_NODELAY[1]

TCP_NODELAY〔用語解説〕[1]

TCP/IP定義の開始[1]

TCP/IP定義の終了[1]

TCP/IP〔メッセージ送信先の指定〕[1]

TCP/IP〔用語解説〕[1]

TP1キャッシュ機能との連携[1]

U

UAP〔用語解説〕[1]

UDP定義の開始[1]

UDP定義の終了[1]

UDP〔メッセージ送信先の指定〕[1]

UOC[1]

UOCインタフェース[1]

UOCで使用できる関数[1]

UOCの組み込み[1]

UOCの実行タイミング[1]

UOC〔用語解説〕[1]

UOCを使用する場合の手順[1]

あ

相手アドレスのチェックを抑止しているコネクション[1]

相手システムを指定したコネクション確立機能[1]

相手システムを指定したコネクションの確立[1]

相手システムを指定したコネクションの確立〔COBOL言語〕[1]

相手システムを指定したコネクションの確立〔C言語〕[1]

アプリケーション定義[1]

アプリケーション〔用語解説〕[1]

い

一方受信メッセージ[1]

一方送信メッセージ[1]

インストール[1]

インストールディレクトリとファイル[1]

う

運用コマンド[1]

運用コマンド実行機能[1]

運用コマンドの一覧[1]

運用コマンドの記述形式[1]

え

永続メッセージ[1]

エラートランザクション[1]

お

オブジェクトファイル[1]

オンライン終了時[1]

か

開始と終了[1]

環境設定の手順[1]

関数の説明形式[1]

き

キープアライブ[1]

記述順序[1]

く

クライアント型コネクション[1]

クライアント型コネクションの確立[1]

こ

後続メッセージの時間監視（TCP/IPプロトコル使用時）[1]

コーディング例[1]

コネクション[1]

コネクション解放処理中（OBS）[1]

コネクション確立UOC[1]

コネクション確立UOCインタフェース[1]

コネクション確立処理中（BID）[1]

コネクション確立中（ACT）[1]

コネクション障害（TCP/IP）[1]

コネクション障害時[1]

コネクション状態表示〔運用コマンド〕[1]

コネクション情報の取得〔COBOL言語〕[1]

コネクション情報の取得〔C言語〕[1]

コネクション定義（TCP/IP）[1]

コネクションと論理端末の関係[1]

コネクションの解放[1]

コネクションの解放〔COBOL言語〕[1]

コネクションの解放〔C言語〕[1]

コネクションの解放〔運用コマンド〕[1]

コネクションの解放形態[1]

コネクションの確立[1]

コネクションの確立〔COBOL言語〕[1]

コネクションの確立〔C言語〕[1]

コネクションの確立〔運用コマンド〕[1]

コネクションの形態と通信構成定義との関係[1]

コネクションの再確立処理[1]

コネクションの自動解放[1]

コネクションの自動確立[1]

コネクションの手動解放[1]

コネクションの手動確立[1]

コネクションの状態遷移[1]

コネクションの状態と状態遷移[1]

コネクションの状態の意味[1]

コネクション未確立（INA）[1]

コネクション〔用語解説〕[1]

コネクションリプレース機能[1]

コミット〔用語解説〕[1]

さ

サーバ型コネクション[1]

サーバ型コネクションの確立[1]

サービス関数（SPP）の作成[1]

サービスグループ〔用語解説〕[1]

サービスプログラム（SPP）の作成[1]

サービス〔用語解説〕[1]

再確立処理[1]

し

時間監視[1]

システム構成例[1]

システムサービス〔用語解説〕[1]

システム定義での注意事項[1]

システム定義の設定[1]

自動確立[1]

受信障害（TCP/IP）[1]

受信障害（UDP）[1]

出力メッセージ編集UOC[1]

出力メッセージ編集UOCインタフェース[1]

手動確立[1]

す

スーパユーザ〔用語解説〕[1]

ステータスファイル[1]

スレッドグループ定義[1]

そ

送受信するメッセージの最大サイズ[1]

送受信するメッセージのデータ形式[1]

送信障害（TCP/IP）[1]

送信障害（UDP）[1]

送信処理中の論理端末に対するメッセージ送信[1]

た

端末キュー機能[1]

て

定義例[1]

と

同期一方送信[1]

同期一方送信〔処理の流れ〕[1]

同期一方送信メッセージの送信〔COBOL言語〕[1]

同期一方送信メッセージの送信〔C言語〕[1]

同期型メッセージ[1]

同期型メッセージの送受信〔COBOL言語〕[1]

同期型メッセージの送受信〔C言語〕[1]

統計情報ファイル[1]

トランザクションインタフェース情報〔COBOL言語〕[1]

トランザクションインタフェース情報〔C言語〕[1]

トランザクションの起動の失敗（TCP/IP）[1]

トランザクションの起動の失敗（UDP）[1]

トランザクション〔用語解説〕[1]

トレース定義[1]

に

入力セグメント判定UOC[1]

入力セグメント判定UOCインタフェース[1]

入力メッセージ編集UOC[1]

入力メッセージ編集UOCインタフェース[1]

の

ノード〔用語解説〕[1]

は

ハーフコネクションに関連する障害[1]

バッファ定義[1]

ひ

非永続メッセージ[1]

非同期一方送信[1]

非同期一方送信〔処理の流れ〕[1]

非同期一方送信メッセージの送信〔COBOL言語〕[1]

非同期一方送信メッセージの送信〔C言語〕[1]

ふ

ファイルの運用[1]

プロセス〔用語解説〕[1]

へ

閉塞[1]

閉塞解除[1]

ほ

ポートフリーのコネクション[1]

ホスト〔用語解説〕[1]

ま

マルチスレッド〔用語解説〕[1]

む

無通信状態監視[1]

め

メッセージ送信先の指定[1]

メッセージの永続化[1]

メッセージの送信完了待ち時間の監視（TCP/IPプロトコル使用時）[1]

メッセージログファイル[1]

メッセージログ〔用語解説〕[1]

メモリダンプファイル[1]

ゆ

ユーザオウンコーディング[1]

ユーザトレースの取得（データ長拡張用）〔COBOL言語〕[1]

ユーザトレースの取得（データ長拡張用）〔C言語〕[1]

ユーザトレースの取得〔COBOL言語〕[1]

ユーザトレースの取得〔C言語〕[1]

ら

ライブラリ関数（COBOL言語）[1]

ライブラリ関数（C言語）[1]

り

リソースマネジャ〔用語解説〕[1]

リモートAPI機能〔用語解説〕[1]

リモートプロシジャコール〔用語解説〕[1]

ろ

ロールバック〔用語解説〕[1]

論理端末アプリケーション定義[1]

論理端末定義（TCP/IP）[1]

論理端末定義（UDP）[1]

論理端末の管理[1]

論理端末の状態[1]

論理端末の状態遷移[1]

論理端末の状態と状態遷移[1]

論理端末の状態の意味[1]

論理端末の状態表示〔運用コマンド〕[1]

論理端末の定義数[1]

論理端末の閉塞[1]

論理端末の閉塞〔COBOL言語〕[1]

論理端末の閉塞〔C言語〕[1]

論理端末の閉塞〔運用コマンド〕[1]

論理端末の閉塞解除[1]

論理端末の閉塞解除〔COBOL言語〕[1]

論理端末の閉塞解除〔C言語〕[1]

論理端末の閉塞解除〔運用コマンド〕[1]

論理端末の閉塞解除状態[1]

論理端末の閉塞解除処理中（BID）[1]

論理端末の閉塞解除中（ACT）[1]

論理端末の閉塞解除の失敗（UDP）[1]

論理端末の閉塞状態[1]

論理端末の閉塞処理中（OBS）[1]

論理端末の閉塞中（INA）[1]

論理端末の閉塞と閉塞解除[1]

論理端末閉塞時（TCP/IPプロトコル使用時）[1]

論理端末閉塞時（UDPプロトコル使用時）[1]