TPSVCSTART
名称
サービスルーチンの開始
形式
01 TPSVCDEF-REC.
COPY TPSVCDEF.
01 TPTYPE-REC.
COPY TPTYPE.
01 DATA-REC.
COPY Data record definition.
01 TPSTATUS-REC.
COPY TPSTATUS.
CALL "TPSVCSTART" USING TPSVCDEF-REC TPTYPE-REC DATA-REC
TPSTATUS-REC.
機能
TPSVCSTARTは,サービスルーチンをコーディングするときに最初に呼ばれます。TPSVCSTARTを呼ぶ前に,サービスルーチン内でほかのXATMIの呼び出しをするとエラーになります。TPSVCSTARTは,サービスへのパラメタとデータを検索するために使います。このルーチンは,TPCALLまたはTPACALLルーチンからのサービス要求を受け取るために使われます。同様にTPCONNECT,TPSEND,TPRECVの要求を受け取るためにも使われます。
TPCALLまたはTPACALLを経由して実行されたサービス要求を処理するサービスルーチンは,多くても一つの入力されたメッセージ(TPSVCSTARTが正常リターンしたこと)を受信して,一つの応答(TPRETURNでサービスルーチンを出たこと)を送信します。
他方,会話型サービスは,オープンコネクションを参照する手段のほかに,多くても一つの入力メッセージを伴った,コネクション要求で呼び出されます。TPSVCSTARTが正常に終了すると,コネクション要求を出したプログラムも,会話型サービスも,アプリケーションで定義したデータを送信したり受信したりできるようになります。コネクションは半二重となっています。つまり,プログラムは,コネクションの制御権を通信相手が明示的に放棄するまで,会話を制御(つまり,データを送信する)できます。
トランザクションに関しては,トランザクションモードで起動した場合,サービスルーチンは,少なくとも一つのトランザクションに参加できます。サービスルーチンの作成者は,トランザクションは,サービスルーチンから戻ることで終了すると考えてください。サービスルーチンをトランザクションモードで起動しない場合,サービスルーチンは,必要なだけのトランザクションをTXBEGIN,TXCOMMIT,TXROLLBACKを使うことで開始します。
Note:TPRETURNは,トランザクションの完了には使われません。したがって,サービスルーチン内で起こったトランザクションを解決しないままにしてTPRETURNを呼ぶと,エラーになります。
DATA-RECには,読む応答がどこにあるかを,そしてLENにはDATA-RECに入れるバイトの最大値を設定します。TPSVCSTARTが正常リターンすると,LENにはDATA-RECに入った実際の長さが設定されます。REC-TYPEとSUB-TYPEにはそれぞれ,データのtypeとsubtypeが設定されます。DATA-RECの値よりも応答が大きい場合は,DATA-RECにはレコードに入るだけのバイトが格納されます。応答の残りの部分は捨てられて,TPSVCSTARTはTPTRUNCATEを返します。
TPSVCSTARTが正常に終了した場合に,LENが0であるときは,応答にはデータ部がなく,DATA-RECは変更されません。LENに0を設定した場合はエラーになります。
TPSVCSTARTが正常に終了した場合,SERVICE-NAMEには要求するプログラムを起動するために使ったサービス名が設定されます。
『データ領域』
『●TPSVCDEF-REC
サービスルーチンの呼び出され方を示す値が設定されます。設定される値と意味は,以降説明します。』
『●TPTYPE-REC
受信データのデータ型と,subtypeのレコード名が設定されます。』
『●DATA-REC
受信データが設定されます。』
『●TPSTATUS-REC
TPSVCSTARTの実行結果を示すリターン値が設定されます。』
TPSVCSTARTがリターンしたときに有効になるTPSVCDEF-RECの値を,次に示します。
リターン値
成功した場合,TPSVCSTARTはTP-STATUSにTPOKを設定します。受信したデータの長さが入力のLENに設定した長さを超えた場合は,TPTRUNCATEが設定され,LENで示す長さ分だけ,DATA-RECに格納されます。受信したデータの残りの部分は捨てられます。
エラー
次のような場合,TPSVCSTARTはエラーリターンして,次のうちどれか一つの値をTP-STATUSに設定します。
関連項目
TPACALL,TPCALL,TPCONNECT,TPRETURN