3.6.1 メッセージの通信形態
- 〈この項の構成〉
(1) MHPで使えるメッセージの通信形態
MHPで使えるメッセージの通信形態を次に示します。使えるメッセージの通信形態は,通信プロトコル別で異なります。
-
相手システムからdc_mcf_receive関数【CBLDCMCF('RECEIVE ')】でメッセージを受け取って,dc_mcf_reply関数【CBLDCMCF('REPLY ')】で応答メッセージを返す形態です。
-
問い合わせ応答形態を連続させる形態です。dc_mcf_receive関数でメッセージを受け取って,dc_mcf_reply関数で応答メッセージを返してから,続けて問い合わせ応答の処理をします。継続問い合わせ応答はdc_mcf_contend関数【CBLDCMCF('CONTEND ')】で終了させます。
メッセージの通信形態を次の図に示します。
|
|
(2) MHPの各通信形態,およびSPPで任意に使えるメッセージ通信機能
MHPとSPPで任意に使えるメッセージ通信機能を次に示します。
-
相手システムからのメッセージ受信後に,メッセージを同期的に送信(dc_mcf_sendsync関数【CBLDCMCF('SENDSYNC')】),同期的に受信(dc_mcf_recvsync関数【CBLDCMCF('RECVSYNC')】),および同期的に送受信(dc_mcf_sendrecv関数【CBLDCMCF('SENDRECV')】)できます。送信処理または受信処理が完了するまで,関数はリターンしません。
SPPからdc_mcf_send関数を呼び出す場合は,そのSPPの処理はトランザクションとして稼働していることが前提です。
(3) メッセージの通信形態とアプリケーションの型
メッセージ送受信機能を使うMHPは,使うメッセージの通信形態によってアプリケーションの型を指定しておきます。アプリケーションの型は,MCFアプリケーション定義アプリケーション属性定義(mcfaalcap)のtypeオペランドで指定します。アプリケーションの型には次の三つがあります。
dc_mcf_receive関数で受信したメッセージを,dc_mcf_send関数で入力元の論理端末に送信する形態も,noans型とします。
MHPには,メッセージを処理する形態に合ったアプリケーションの型を指定してください。
指定したアプリケーションの型とメッセージを処理する形態に矛盾がある場合は,メッセージ送受信の関数がエラーリターンするか,またはMHPの処理がロールバックされます。矛盾がある例を次に示します。
-
応答型のMHPで,dc_mcf_reply関数を使わないで終了した場合,またはほかの応答型のMHPをdc_mcf_execap関数【CBLDCMCF('EXECAP ')】で起動しないで終了した場合
-
非応答型のMHPでdc_mcf_reply関数を使った場合(非応答型のMHPからの問い合わせ応答をしない(UAP共通定義(mcfmuap)の-cオプションのnoansreplyオペランドにnoを指定)場合)
MCFイベント処理用MHPのアプリケーションの型は,通知されたMCFイベントによって決まります。MCFイベント処理用MHPのアプリケーションの型については,「3.10 MCFイベント」を参照してください。
アプリケーションの型と使えるメッセージ送受信関数を次の表に示します。
|
メッセージの形態 |
アプリケーションの型 |
メッセージを処理する関数 |
||||||
|---|---|---|---|---|---|---|---|---|
|
receive |
send |
reply |
sendrecv |
recvsync |
sendsync |
tempput, tempget, contend |
||
|
問い合わせ応答形態 |
◎ |
○ |
◎ |
△※1 |
△※1 |
− |
− |
|
|
非問い合わせ応答形態(一方受信形態) |
◎ |
○ |
○※2 |
△ |
△ |
△ |
− |
|
|
継続問い合わせ応答形態 |
◎ |
○ |
◎ |
− |
− |
− |
○ |
|
- (凡例)
-
◎:必ず使います。
○:使えます。
△:プロトコル製品によって異なります。詳細については「3.6.1(4) 通信プロトコル対応製品と通信形態で使える関数」を参照してください。
−:使えません。
- 注※1
-
TP1/NET/User AgentまたはTP1/NET/OSAS-NIFを使った場合に呼び出せます。ただし,dc_mcf_recvsync関数は,複数セグメントを送信したdc_mcf_sendrecv関数を呼び出したときに,先頭セグメント以外のセグメントを受け取る目的にだけ使えます。
- 注※2
-
非応答型のMHPからの問い合わせ応答をする(UAP共通定義(mcfmuap)の-cオプションのnoansreplyオペランドにyesを指定)場合に呼び出せます。
(4) 通信プロトコル対応製品と通信形態で使える関数
通信プロトコル対応製品と通信形態別で使える関数の対応を,以降の表に示します。
|
関数名 |
通信プロトコル対応製品とアプリケーションの型 |
||||||||
|---|---|---|---|---|---|---|---|---|---|
|
TP1/NET/OSAS-NIF |
TP1/NET/OSI-TP |
TP1/NET/SLU - TypeP2 |
|||||||
|
noans型 |
ans型 |
cont型 |
noans型 |
ans型 |
cont型 |
noans型 |
ans型 |
cont型 |
|
|
dc_mcf_commit |
○ |
× |
− |
○ |
− |
− |
○ |
− |
− |
|
dc_mcf_receive※ |
○ |
○ |
− |
○ |
− |
− |
○ |
− |
− |
|
dc_mcf_execap |
○ |
○ |
− |
× |
− |
− |
○ |
− |
− |
|
dc_mcf_reply※ |
△ |
○ |
− |
× |
− |
− |
× |
− |
− |
|
dc_mcf_rollback |
○ |
○ |
− |
○ |
− |
− |
○ |
− |
− |
|
dc_mcf_send※ |
○ |
○ |
− |
× |
− |
− |
○ |
− |
− |
|
dc_mcf_resend※ |
○ |
○ |
− |
× |
− |
− |
○ |
− |
− |
|
dc_mcf_sendrecv※ |
○ |
○ |
− |
○ |
− |
− |
○ |
− |
− |
|
dc_mcf_sendsync※ |
× |
× |
− |
○ |
− |
− |
× |
− |
− |
|
dc_mcf_recvsync※ |
□ |
□ |
− |
○ |
− |
− |
□ |
− |
− |
|
dc_mcf_contend |
× |
× |
− |
× |
− |
− |
× |
− |
− |
|
dc_mcf_tempget |
× |
× |
− |
× |
− |
− |
× |
− |
− |
|
dc_mcf_tempput |
× |
× |
− |
× |
− |
− |
× |
− |
− |
- (凡例)
-
○:該当する通信プロトコル対応製品で使えます。
×:使えません。
□:通信プロトコル対応製品で固有な使い方をします。
△:非応答型のMHPからの問い合わせ応答をする(UAP共通定義(mcfmuap)の-cオプションのnoansreplyオペランドにyesを指定)場合に使えます。
−:該当する通信プロトコル対応製品では使えない通信形態です。
- 注※
-
通信プロトコル対応製品によって,関数の使い方が異なる場合があります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
|
関数名 |
通信プロトコル対応製品とアプリケーションの型 |
|||||
|---|---|---|---|---|---|---|
|
TP1/NET/TCP/IP |
TP1/NET/User Agent |
|||||
|
noans型 |
ans型 |
cont型 |
noans型 |
ans型 |
cont型 |
|
|
dc_mcf_commit |
○ |
× |
× |
○ |
× |
− |
|
dc_mcf_receive※ |
○ |
○ |
○ |
○ |
○ |
− |
|
dc_mcf_execap |
○ |
○ |
○ |
○ |
○ |
− |
|
dc_mcf_reply※ |
△ |
○ |
○ |
△ |
○ |
− |
|
dc_mcf_rollback |
○ |
○ |
○ |
○ |
○ |
− |
|
dc_mcf_send※ |
○ |
○ |
○ |
○ |
○ |
− |
|
dc_mcf_resend※ |
○ |
○ |
○ |
○ |
○ |
− |
|
dc_mcf_sendrecv※ |
○ |
× |
× |
○ |
○ |
− |
|
dc_mcf_sendsync※ |
○ |
× |
× |
× |
× |
− |
|
dc_mcf_recvsync※ |
○ |
× |
× |
□ |
□ |
− |
|
dc_mcf_contend |
× |
× |
○ |
× |
× |
− |
|
dc_mcf_tempget |
× |
× |
○ |
× |
× |
− |
|
dc_mcf_tempput |
× |
× |
○ |
× |
× |
− |
- (凡例)
-
○:該当する通信プロトコル対応製品で使えます。
×:使えません。
□:通信プロトコル対応製品で固有な使い方をします。
△:非応答型のMHPからの問い合わせ応答をする(UAP共通定義(mcfmuap)の-cオプションのnoansreplyオペランドにyesを指定)場合に使えます。
−:該当する通信プロトコル対応製品では使えない通信形態です。
- 注※
-
通信プロトコル対応製品によって,関数の使い方が異なる場合があります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
|
関数名 |
通信プロトコル対応製品とアプリケーションの型 |
|||||
|---|---|---|---|---|---|---|
|
TP1/NET/UDP |
TP1/NET/XMAP3 |
|||||
|
noans型 |
ans型 |
cont型 |
noans型 |
ans型 |
cont型 |
|
|
dc_mcf_commit |
○ |
− |
− |
○ |
× |
× |
|
dc_mcf_receive※ |
○ |
− |
− |
○ |
○ |
○ |
|
dc_mcf_execap |
○ |
− |
− |
○ |
○ |
○ |
|
dc_mcf_reply※ |
× |
− |
− |
△ |
○ |
○ |
|
dc_mcf_rollback |
○ |
− |
− |
○ |
○ |
○ |
|
dc_mcf_send※ |
○ |
− |
− |
○ |
○ |
○ |
|
dc_mcf_resend※ |
○ |
− |
− |
○ |
○ |
○ |
|
dc_mcf_sendrecv※ |
× |
− |
− |
× |
× |
× |
|
dc_mcf_sendsync※ |
○ |
− |
− |
× |
× |
× |
|
dc_mcf_recvsync※ |
× |
− |
− |
× |
× |
× |
|
dc_mcf_contend |
× |
− |
− |
× |
× |
○ |
|
dc_mcf_tempget |
× |
− |
− |
× |
× |
○ |
|
dc_mcf_tempput |
× |
− |
− |
× |
× |
○ |
- (凡例)
-
○:該当する通信プロトコル対応製品で使えます。
×:使えません。
△:非応答型のMHPからの問い合わせ応答をする(UAP共通定義(mcfmuap)の-cオプションのnoansreplyオペランドにyesを指定)場合に使えます。
−:該当する通信プロトコル対応製品では使えない通信形態です。
- 注※
-
通信プロトコル対応製品によって,関数の使い方が異なる場合があります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。