Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


1.2.1 サービスを利用するUAP(SUP)

クライアント専用のUAPを,サービス利用プログラム(SUP)といいます。SUPは,サーバUAP(SPP)にサービスを要求して,クライアント/サーバ形態の通信を開始する役割のUAPです。

SUPでできる通信は,SPPにサービスを要求するだけです。ほかのUAPにサービスとして提供するための関数は作成できません。

SUPの概要を次の図に示します。

図1‒7 SUPの概要

[図データ]

〈この項の構成〉

(1) SUPの開始

SUPを実行する場合,OpenTP1の開始と一緒に開始する方法と,OpenTP1の開始後に任意に開始する方法の2とおりがあります。OpenTP1の開始と一緒に開始すると,OpenTP1の開始と同時にUAPの業務を開始できます。作成したSUPの業務内容に応じて,開始する時期を選べます。

(a) OpenTP1の開始と一緒に開始する場合

OpenTP1を開始する前に,OpenTP1と一緒に開始する指定をしておきます。指定方法を次に示します。

  • TP1/Server Baseの場合

    ユーザサービス構成定義のdcsvstart定義コマンドに,開始するSUPのユーザサーバ名を指定します。

  • TP1/LiNKの場合

    ユーザサーバ環境を設定するときに,開始するSUPが自動起動するように設定します。

(b) OpenTP1の開始後に任意に開始する場合

OpenTP1の開始後にSUPを開始する場合は,dcsvstartコマンドの引数にSUPのユーザサーバ名を指定して実行します。

(2) SUPの稼働時

SUPのプロセスは,一つの常駐プロセスとして確保しておきます。

オンライン中にSUPのプロセスで障害が起こった場合は,自動的に別プロセスで開始できます。別プロセスに自動的に開始させる場合,TP1/Server Baseのときは,ユーザサービス定義のauto_restartオペランドにYを指定してください。TP1/LiNKのときは,自動的に開始するように設定されています。

OpenTP1で自動的に開始できない場合は,dcsvstartコマンドで開始させてください。

(3) SUPの終了

SUPの終了はOpenTP1で制御しません。業務終了後にSUPを正常終了させる場合は,SUP自身で終了するように作成してください。SUPの処理からトランザクションを開始しているときは,関数でトランザクションをコミット(同期点を取得)してから終了させてください。処理がうまくいかなかったためSUPを異常終了させたい場合は,exit()またはabort()を使って,SUP自身で終了するように作成してください。

SUPは,dcsvstopコマンドで正常終了させることはできません。ただし,SUPを強制停止させたい場合に限り,dcsvstop -fコマンドで終了できます。

SUPのプロセスを,killコマンドで終了させないでください。

(4) SUPの処理の概要

SUPでは,UAPの開始(dc_rpc_open関数【CBLDCRPC('OPEN ')】)を呼び出したあとに,サーバの起動完了をOpenTP1に連絡するために,ユーザサーバの開始処理完了の報告(dc_adm_complete関数【CBLDCADM('COMPLETE')】)を必ず呼び出してください。

SUPの処理の概要を次の図に示します。

図1‒8 SUPの処理の概要(C言語の例)

[図データ]