サービスプログラムの作成(MHP)

形式

PROGRAM-ID. プログラム名.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
        :
DATA DIVISION.
WORKING-STORAGE SECTION.
        :
        :
PROCEDURE DIVISION.
        :
        :
サービスの処理
        :
        :
EXIT PROGRAM.

機能

サービスを実行して結果を返すMHPのサービスプログラムです。MCFでメッセージを受信すると,アプリケーション名に該当するサービスプログラムがあるMHPが起動されます。

MHPのサービスプログラムは,上記の形式で任意に作成してください。サービス名は,サービスプログラムのプログラムIDの名称に対応させます。この対応づけはサービスプログラムを実行するプロセスのユーザサービス定義で指定します。

サービス名とアプリケーション名の対応づけは,MCFアプリケーション定義で指定します。

データ領域の設定

なし。

サービスプログラムの処理での注意

  1. サービスプログラムが,COBOLの初期化プログラム(プログラムの見出し部にINITIAL句を指定)である場合,データ項目などの値はサービスプログラムが1回実行されるたびに初期化されます。プログラムの見出し部にINITIAL句を指定しない場合,データ項目には前回のサービスプログラムの処理で設定した値が残っているので,必要であれば初期化してから使ってください。
  2. MHPのサービスプログラムから呼び出せないCOBOL-UAP作成用プログラムを次に示します。
    CBLDCRPC('OPEN ') - アプリケーションプログラムの開始
    CBLDCRPC('CLOSE ') - アプリケーションプログラムの終了
    CBLDCADM('COMPLETE') - ユーザサーバの開始処理完了の報告
    CBLDCRSV('MAINLOOP') - SPPのサービス開始
    CBLDCMCF('MAINLOOP') - MHPのサービス開始
    CBLDCMCF('OPEN ') - MCF環境のオープン
    CBLDCMCF('CLOSE ') - MCF環境のクローズ
    サービスプログラムからプログラムの処理を抜ける命令文は使わないでください。このような命令文を使った場合のUAPの動作は保証しません。また,子プロセスを生成するシステムコールを使った場合,生成した子プロセスではOpenTP1のCOBOL-UAP作成用プログラムを呼び出せません。
  3. MHPのサービスプログラムへは,ほかのUAPから CBLDCRPC('CALL ')でサービスを要求できません。
  4. CBLDCMCFの一意名1などのデータ領域は,必ず偶数番地から始まるよう設定してください。一意名1などのデータ領域の先頭アドレスが奇数番地だとバスエラーが発生します。
    例えば,CBLDCMCFで使用する一意名3を配列で定義し,送信データが奇数バイトで,かつ構造体にSYNCの指定がない(境界調整されていない)場合,配列の2件目のデータをCBLDCMCFの引数に設定すると,関数の処理中にバスエラーが発生します。

ステータスコード

ステータスコードはありません。サービスプログラムから-1をリターンしてもロールバックを要求したことにはなりません。