CBLDCRSV('MAINLOOP')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLDCRSV' USING 一意名1
DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'MAINLOOP'. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO.
機能
SPPにあるサービスプログラムへのスケジュールを受け付けます。
CBLDCRSV('MAINLOOP')は,SPPのメインプログラムから呼び出します。プロセスで1回だけ呼び出してください。
CBLDCRSV('MAINLOOP')を呼び出してから,OpenTP1からSPPの終了が要求されるまで,CBLDCRSV('MAINLOOP')はリターンしません。OpenTP1からSPPの終了が要求されるのは,次に示す場合です。
-
次に示すOpenTP1の終了コマンドを実行したため,終了処理に入ったとき
dcstopコマンド(正常終了)
dcstop -n(強制正常終了)
dcstop -a(計画停止A)
dcstop -b(計画停止B)
-
SPPのプロセスを,次に示すサーバの終了コマンドを実行したために,終了処理に入ったとき
dcsvstopコマンド(正常終了)
-
SPPのプロセスが,ユーザサービス定義の最大プロセス数の指定を超えたために,OpenTP1からプロセスを終了させられるとき
-
SPPを非常駐プロセスで実行しているときには,サービスの処理を終了したとき
-
SPPをマルチサーバで負荷分散しているときは,該当するサービスグループへのサービス要求が減少したとき
UAPで値を設定するデータ領域
●データ名A
SPPのサービス開始を示す要求コードを「VALUE 'MAINLOOP'」と設定します。
●データ名C
0を設定します。
OpenTP1から値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
OpenTP1からSPPの終了が要求されました。SPPはすぐにプロセスの終了処理をして,CBLDCRPC('CLOSE ')を呼び出してから,メインプログラムをSTOP RUNで終了してください。 |
00301 |
データ名に設定した値が間違っています。要求コード(データ名A)が間違っている場合も含みます。 |
00302 |
CBLDCRSV('MAINLOOP')を呼び出す前に,CBLDCRPC('OPEN ')を呼び出していません。 |
CBLDCRSV('MAINLOOP')か CBLDCMCF('MAINLOOP')が,すでに呼び出されています。 |
|
00303 |
SPPのサービスを開始できませんでした。 |
注意事項
CBLDCRSV('MAINLOOP')は,OpenTP1から終了要求があるとリターンします。ただし,次に示す場合には,CBLDCRSV('MAINLOOP')がリターンしないまま,プロセスが終了します。
-
OpenTP1を強制停止するコマンド(dcstop -fコマンド)や,ユーザサーバを強制停止するコマンド(dcsvstop -fコマンド)を実行したために,SPPが終了するとき
-
UAPまたはOpenTP1の不良が原因で,プロセスが異常終了したとき
-
サービスプログラムで,プログラムの処理を抜ける命令文を使ったとき
-
ハードウェアやオペレーティングシステム,またはOpenTP1そのものが障害になったとき
上記のような場合には,CBLDCRSV('MAINLOOP')が正常に終了したあとで終了処理をするようにコーディングしてあっても,その処理は実行されませんので注意してください。