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 |
△ |
△ |
△ |
− |
|
継続問い合わせ応答形態 |
◎ |
○ |
◎ |
− |
− |
− |
○ |
(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 |
× |
× |
− |
× |
− |
− |
× |
− |
− |
関数名 |
通信プロトコル対応製品とアプリケーションの型 |
|||||
---|---|---|---|---|---|---|
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 |
× |
× |
○ |
× |
× |
− |
関数名 |
通信プロトコル対応製品とアプリケーションの型 |
|||||
---|---|---|---|---|---|---|
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 |
× |
− |
− |
× |
× |
○ |