Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSI-TP編


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

同期型とは,自システムのUAPが,送信または受信を要求し,各要求の処理の準備がすべて完了してからリターンする形態をいいます。同期型のメッセージには,送信,および受信をそれぞれ単独でするものと,送受信を連続してするものとがあります。使用できるのは,sendsync関数,recvsync関数,およびsendrecv関数です。

〈この項の構成〉

(1) 同期型のメッセージの送信

自システムからメッセージを送信する形態です。論理端末の端末タイプはany,アプリケーションの型は非応答型です。

UAPは,SENDSYNC文またはsendsync関数でTP1/NET/OSI-TPにメッセージの送信要求をします。TP1/NET/OSI-TPはメッセージを送信用バッファに格納し,相手システムに送信します。メッセージの送信が完了したあと,送信を要求したUAPにリターンします。このとき,メッセージの送信の完了を受信するまで,TP1/NET/OSI-TP内で待ち続けます。なお,無制限に待つことを避けるため,待ち時間を指定できます。

(2) 同期型のメッセージの受信

相手システムからのメッセージを受信する形態です。論理端末の端末タイプはany,アプリケーションの型は非応答型です。

相手システムからのメッセージを受信すると,TP1/NET/OSI-TPはメッセージを受信用バッファに格納します。UAPは,RECVSYNC文またはrecvsync関数でTP1/NET/OSI-TPにメッセージの受信を要求します。相手システムからのメッセージを受信していた場合,メッセージの受信を要求したUAPに渡します。

また,相手システムからのメッセージを受信していない場合,相手システムからのメッセージを受信するまで,TP1/NET/OSI-TP内で待ち続けます。この場合,無制限に待つことを避けるため,待ち時間を指定できます。相手システムからのメッセージを受信した時点で,メッセージの受信を要求したUAPに渡します。

(3) 同期型のメッセージの送受信

メッセージの送信と受信とを連続して行う形態です。送信,および受信の要求を一度にできるため,処理を簡略化できます。論理端末の端末タイプはany,アプリケーションの型は非応答型です。

UAPは,SENDRECV文またはsendrecv関数でTP1/NET/OSI-TPにメッセージの送受信を要求します。TP1/NET/OSI-TPは,メッセージの送信処理をします。送信処理が完了したあとも,UAPにリターンしないで,引き続き受信処理をします。受信までの処理がすべて完了した時点で,UAPにリターンします。このとき,メッセージの受信を完了するまで,TP1/NET/OSI-TP内で待ち続けます。なお,無制限に待つことを避けるため,待ち時間を指定できます。

同期型メッセージの送信,受信,および送受信を次の図に示します。

図2‒22 同期型のメッセージの送信,受信,および送受信

[図データ]

(4) 同期型のメッセージの送受信に関する注意事項

相手システムの処理遅延などが原因で,メッセージの送受信が完了する前に待ち時間が満了すると,同期型のメッセージ送受信で使用する関数(sendsync関数,recvsync関数,およびsendrecv関数)がエラーリターンします。このときUAPには,リターン値DCMCFRTN_73005またはステータスコード73005が返却されます。

この場合は,自システムと相手システムのコネクションの状態をリセットする必要があります。次のどちらかの方法でコネクションを強制解放してください。