ページの先頭行へ戻る
Interstage Business Application Server アプリケーション開発ガイド
FUJITSU Software

14.4.3 COBOLサーバアプリケーションの作成・修正

業務ロジックを作成し、アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成、または修正します。業務ロジックを作成するCOBOLソースファイルは、COBOLソース生成ウィザードを使用して作成します。COBOLソース生成ウィザードについては、“NetCOBOL Studio ユーザーズガイド”の“COBOLソース生成ウィザード”を参照してください。

サーバアプリケーションには、業務処理と任意の出口処理(初期処理、終了処理、前処理、後処理、エラー処理、トランザクション後メッセージ編集処理)を作成します。

COBOLサーバアプリケーションの作成方法、および修正方法について説明します。

サーバアプリケーション作成時の注意事項については、“22.2 サーバアプリケーションを作成する場合の注意”を参照してください。

14.4.3.1 業務処理の作成

アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成するためには、サーバアプリケーションで使用するパラメタに、以下の順番で値を指定する必要があります。

ユーザ任意のパラメタを使用する場合は、COBOL実行基盤インタフェース生成時に、COBOL登録集で定義したデータ名をCOBOLプログラムに渡すパラメタとして指定する必要があります。COBOLプログラムに渡すパラメタの指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■パラメタと復帰値情報”を参照してください。
アプリケーション作業域を使用するかどうかは、COBOL実行基盤インタフェース生成時に設定します。処理結果情報および例外情報は、アプリケーションの実行時にアプリケーション連携実行基盤がパラメタとして付加して呼び出します。

サーバアプリケーションで使用するパラメタの記述例を以下に示します。

* サーバアプリケーションの手続き部見出しの例
PROCEDURE DIVISION USING FROM-DATE
                        TO-DATE                  *> ユーザ任意の登録集に対応するパラメタ
                         …
                        APFW_USERWORK            *> アプリケーション作業域
                        APFW_USERWORK_LENGTH     *> アプリケーション作業域長
                        APFW_RTN                 *>  処理結果情報
                        APFW_EXCEPTION.          *>  例外情報

サーバアプリケーションパラメタのデータ型

受け渡しに使用するデータ型は、パラメタの方向(IN、OUT、およびINOUT)に関係なく共通です。

サーバアプリケーションの返却値

PROGRAM-STATUSの値を受け取り、その値をサーバアプリケーションの呼出し元に返却するようなCOBOL実行基盤インタフェースを生成するためには、COBOL実行基盤インタフェース生成時に、PROGRAM-STATUSの値を返却するように指定する必要があります。PROGRAM-STATUSの値を返却するかどうかの指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■パラメタと復帰値情報”を参照してください。
なお、特殊レジスタPROGRAM-STATUSは、暗黙的に次のように定義されます。

01 PROGRAM-STATUS PIC S9(9) COMP-5.

PROGRAM-STAUSの値は、同期アプリケーション実行基盤のJavaクライアント、および非同期アプリケーション実行基盤では、4バイトに変換して格納されます。
このため、64ビットに対応した環境では、PROGRAM-STAUSは8バイトの大きさになりますが、4バイトを超える値を同期アプリケーション実行基盤のJavaクライアント、および非同期アプリケーション実行基盤で受け取ることはできません。

なお、同期アプリケーション実行基盤のJavaクライアントで受け取る場合は、intなど4バイトの大きさで受け取ってください。また、非同期アプリケーション実行基盤の場合は、復帰値を設定する業務データとして、int型の業務データを指定してください。

■アプリケーション作業域

アプリケーション作業域は、初期処理で初期化された情報を共通に参照する領域です。領域はアプリケーション連携実行基盤で獲得されます。

COBOL実行基盤インタフェース生成時に、アプリケーション作業域を使用するように指定した場合に、使用します。アプリケーション作業域を使用するかどうかの指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■オプション情報”を参照してください。

注意

アプリケーション作業域を使用する場合、あわせて運用時の設定として、アプリケーション連携実行基盤定義ファイルでアプリケーション作業域のサイズも指定する必要があります。
設定方法の詳細は、“Interstage Business Application Server セットアップガイド”の“アプリケーション連携実行基盤定義ファイルの作成”を参照してください。

ポイント

アプリケーション作業域を設定するために、以下のCOBOL登録集を提供しています。

  • ファイル名:APFW_USERWORK.cbl

  • 格納先:/opt/FJSVibs/copy/

  • ファイル名:APFW_USERWORK.cbl

  • 格納先:[Interstageのインストールディレクトリ]\BAS\copy


アプリケーション作業域は以下のように定義されています。

01 APFW_USERWORK POINTER.
01 APFW_USERWORK_LENGTH PIC S9(9) COMP-5.

■処理結果情報

処理結果情報は、アプリケーションの処理結果(アプリケーション連携実行基盤での動作指示情報)を表すパラメタです。
COBOL実行基盤インタフェースの生成時に、処理結果情報を使用するように指定した場合に使用します。処理結果情報を使用するかどうかの指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■オプション情報”を参照してください。

ポイント

処理結果情報を設定するために、以下のCOBOL登録集を提供しています。

  • ファイル名:APFW_RTN.cbl

  • 格納先:/opt/FJSVibs/copy/

  • ファイル名:APFW_RTN.cbl

  • 格納先:[Interstageのインストールディレクトリ]\BAS\copy


処理結果情報は以下のように定義されています。

01 APFW_RTN PIC S9(9) COMP-5.

処理結果情報には、以下の値を設定できます。

処理結果

トランザクション情報

設定値

正常

Commit

0

正常

Rollback

1(注)

異常または例外

Rollback

2

リトライ

Rollback

3

注)同期アプリケーション連携実行基盤でだけ有効です。非同期アプリケーション連携基盤では“0”を指定したものとして処理が行われます。

なお、処理結果情報に何も値を設定しないで復帰した場合、アプリケーション連携実行基盤では“2”が設定されたものとして処理が行われます。

外情

例外情報は、アプリケーションの処理結果が異常または例外の場合に設定します。同期処理の場合は、呼出し元に例外情報が通知されます。
なお、サーバアプリケーションのインタフェースから処理結果情報を省略する場合には、例外情報も同時に省略されます。

注意

  • 処理結果情報に“2”、または“3”を設定してください。“0”または“1”が設定されている場合には例外情報として扱われません。

  • 通知する情報として、APFW_EXCEPTION_CODE(エラーコード)、APFW_EXCEPTION_MESSAGE(エラーメッセージ)、およびAPFW_EXCEPTION_DATA(エラー詳細)を設定することができます。

  • APFW_EXCEPTION_MESSAGEには、APFW_MESSAGE_ADDRにエラーメッセージを格納した領域のアドレス、APFW_MESSAGE_LENにエラーメッセージの長さを設定します。なお、設定した値はコード変換されます。

  • APFW_EXCEPTION_DATAには、バイナリデータとしてエラー詳細を設定します。なお、設定した値についてはコード変換されません。

  • APFW_MESSAGE_ADDR、APFW_ADDRに値を設定する際には、“APFW_SEQUENCE_OCTET_ALLOCBUF”を使用して動的に領域を獲得する必要があります。獲得した領域は、COBOL実行基盤インタフェースで自動的に解放されます。以下に記述例を示します。

    LINKAGE SECTION.
        COPY    APFW_RTN.
        COPY    APFW_EXCEPTION.
    01  ERROR_MESSAGE PIC X(13).
    01  ERROR_DATA.
        02 MINOR_CODE PIC S9(9) COMP-5.
    PROCEDURE DIVISION USING APFW_RTN
                             APFW_EXCEPTION.
        MOVE    1212                        TO APFW_EXCEPTION_CODE.
        MOVE    13                          TO APFW_MESSAGE_LEN.
        CALL    "APFW_SEQUENCE_OCTET_ALLOCBUF" 
                USING   APFW_MESSAGE_LEN    APFW_MESSAGE_ADDR.
        SET     ADDRESS OF ERROR_MESSAGE    TO  APFW_MESSAGE_ADDR.
        MOVE    "Error Message"             TO  ERROR_MESSAGE.
        MOVE    4                           TO  APFW_AREA_LEN.
        MOVE    4                           TO  APFW_VAL_LEN.
        CALL    "APFW_SEQUENCE_OCTET_ALLOCBUF"
                USING   APFW_AREA_LEN APFW_ADDR.
        SET     ADDRESS OF ERROR_DATA       TO APFW_ADDR.
        MOVE    9999                        TO MINOR_CODE.

ポイント

例外情報を設定するために、以下のCOBOL登録集を提供しています。

  • ファイル名:APFW_EXCEPTION.cbl

  • 格納先:/opt/FJSVibs/copy/

  • ファイル名:APFW_EXCEPTION.cbl

  • 格納先:[Interstageのインストールディレクトリ]\BAS\copy


例外情報は以下のように定義されています。

01  APFW_EXCEPTION.
    02  APFW_EXCEPTION_CODE   PIC  9(9) COMP-5.
    02  APFW_EXCEPTION_MESSAGE.
      03  APFW_MESSAGE_LEN     PIC  9(9) COMP-5.
      03  APFW_MESSAGE_ADDR    USAGE POINTER.
    02  APFW_EXCEPTION_DATA.
      49  APFW_AREA_LEN          PIC  9(9) COMP-5.
      49  APFW_VAL_LEN           PIC  9(9) COMP-5.
      49  APFW_ADDR              USAGE POINTER.

14.4.3.2 未設定データの判定

サーバアプリケーションの呼出し元から入力データを設定しないでサーバアプリケーションを呼び出す場合や、サーバアプリケーションの終了時に出力データを設定しないで、次のサーバアプリケーションへ実行を遷移する場合があります。これらのデータに対して、設定されていない状態を判定したり、設定されていない状態を指定したりすることができます。送受信するデータが不要な場合、未設定のデータとして扱うことで、回線上に流れるデータ量を抑制することが可能です。
以下のデータ型を未設定データとして使用できます。ただし、集団項目内の基本項目には設定できません。

ポイント

未設定データを判定または設定するために、以下のCOBOL登録集を提供しています。

  • ファイル名:INVALID_MARKER.cbl

  • 格納先:/opt/FJSVibs/copy/

  • ファイル名:INVALID_MARKER.cbl

  • 格納先:[Interstageのインストールディレクトリ]\BAS\copy



未設定データの判定に使用する識別値は以下のように定義されています。

* 未設定データ判定マーカ
01 INVALID-MARKER       PIC X(2) VALUE X"7FFF".
01 INVALID-MARKER2  REDEFINES INVALID-MARKER PIC N(1).

未設定データの判定処理は、未設定であることを識別するための値をあらかじめ定義し、この値とパラメタの値を比較します。このため、判定に使用する値は実行時にパラメタの値として使用されない値である必要があります。実行時にパラメタとして使用されない値を決定できない場合は、未設定データ判定処理を使用できません。また判定に使用する値は、デフォルトの値としてCOBOL登録集INVALID_MARKER.cblに“7FFF”が定義されています。ほかの値に変更する場合は、INVALID_MARKER.cblの定義を変更してください。

注意

INVALID_MARKER.cblの定義を変更する場合は、値だけ変更し、長さは変更しないでください。

未設定データは、以下の場合に、引数の単位での判定および設定を行うことができます。
集団項目の場合、判定および設定は、集団項目内の項目それぞれではなく集団項目に対して行います。

サーバアプリケーションでは、次のようにCOPY文でCOBOL登録集INVALID_MARKER.cblを取り込みます。

…
 WORKING-STORAGE SECTION.
      COPY INVALID_MARKER.
  …

サーバアプリケーション側で、入力パラメタが未設定かどうかを判定するためには、この登録集で定義したデータ名INVALID-MARKERまたはINVALID-MARKER2を使用して、以下のように判定します。

なお、入力パラメタの領域サイズが未設定データの識別値INVALID-MARKERより小さい場合は、有効なデータとみなされます。

これらの判定処理では、類似の名前を持つCOBOLの関数が使用されています。返却値が以下のように異なるので注意してください。

また、サーバアプリケーション側の出力パラメタが未設定データであることを設定するには、以下のように記述します。
未設定データはデフォルトでは設定されていないため、未設定にしたい出力パラメタすべてについて設定する必要があります。なお、復帰する際に入力専用パラメタ(INPUT)に未設定データを設定する必要はありません。

Javaクライアントでパラメタにnullを設定した場合、上記の未設定データ判定マーカの条件を満たしている項目については、サーバアプリケーションでは未設定データとして判定されます。
またJavaクライアントの仕様上、パラメタに明示的に値を設定しなくてもnullが設定される場合にも、同様の動作となります。例として、beanのメンバにjava.lang.String、配列、class、バイナリがある場合が該当します。Mapではキー自体が設定されない場合が該当します。

14.4.3.3 初期処理、終了処理の作成

アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、初期処理、および終了処理を作成します。

それぞれの処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。

初期処理

ワークユニット起動時に1つのプロセスについて1回だけ呼び出す処理です。1ワークユニット上に複数のサーバアプリケーションを配備する場合でも、1つだけ作成してください。
初期処理のインタフェースは、以下のように作成する必要があります。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. 任意の名前.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.
000080 COPY APFW_RTN. 
000090 COPY APFW_EXCEPTION.
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110     APFW_RTN APFW_EXCEPTION.

初期処理はサーバアプリケーションとは別の定義で実行基盤インタフェースを作成する必要があります。以下の条件に従って初期処理用のアプリケーション情報を作成し、実行基盤インタフェースを生成してください。アプリケーション情報の追加方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”を参照してください。

初期処理の記述例

初期処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションとは別のファイルに記述してください。
初期処理の記述例を以下に示します。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. INIT_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000080 COPY APFW_RTN.             *> 処理結果情報(使用しない場合、省略可能)
000090 COPY APFW_EXCEPTION.       *> 例外情報(使用しない場合、省略可能)
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110 APFW_RTN APFW_EXCEPTION.
000120* 初期処理を実施
000130     EXIT PROGRAM.
000140 END PROGRAM INIT_SERVER_APL.

終了処理

ワークユニット終了時に1つのプロセスについて1回だけ呼び出す処理です。1ワークユニット上に複数のサーバアプリケーションを配備する場合でも、1つだけ作成してください。
終了処理のインタフェースは、以下のように作成する必要があります。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. 任意の名前.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.
000080 COPY APFW_RTN.
000090 COPY APFW_EXCEPTION.
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110     APFW_RTN APFW_EXCEPTION.

終了処理はサーバアプリケーションとは別の定義で実行基盤インタフェースを作成する必要があります。
以下の条件に従って終了処理用のアプリケーション情報を作成し、実行基盤インタフェースを生成してください。アプリケーション情報の追加方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”を参照してください。

終了処理の記述例

終了処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションとは別のファイルに記述してください。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. TERM_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000080 COPY APFW_RTN.             *> 処理結果情報(使用しない場合、省略可能)
000090 COPY APFW_EXCEPTION.       *> 例外情報(使用しない場合、省略可能)
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110 APFW_RTN APFW_EXCEPTION.
000120* 終了処理を実施(任意)
000130     EXIT PROGRAM.
000140 END PROGRAM TERM_SERVER_APL.

14.4.3.4 前処理、後処理の作成

アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、前処理、および後処理を作成します。

前処理、および後処理は、COBOL実行基盤インタフェースの生成時に、それぞれの処理を使用するように指定した場合に使用します。前処理、後処理を使用する場合の指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■オプション情報”を参照してください。

注意

COBOL実行基盤インタフェースの生成時に、前処理、および後処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。

それぞれの処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。

前処理

アプリケーション連携実行基盤からの要求ごとに、業務処理の直前に呼び出す処理です。
前処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報が前処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. PRE_業務処理の関数名.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.
000080 COPY APFW_RTN.
000090 COPY APFW_EXCEPTION.
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110     APFW_RTN APFW_EXCEPTION.
前処理の記述例

前処理の記述例を以下に示します。
なお、前処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. PRE_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000080 COPY APFW_RTN.             *> 処理結果情報(使用しない場合、省略可能)
000090 COPY APFW_EXCEPTION.       *> 例外情報(使用しない場合、省略可能)
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110 APFW_RTN APFW_EXCEPTION.
000120*前処理を実施(任意)
000130     EXIT PROGRAM.
000140 END PROGRAM PRE_SERVER_APL.

後処理

アプリケーション連携実行基盤からの要求ごとに、業務処理の直後に呼び出す処理です。
後処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報が後処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. POST_業務処理の関数名.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.
000080 COPY APFW_RTN.
000090 COPY APFW_EXCEPTION.
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110     APFW_RTN APFW_EXCEPTION.
後処理の記述例

後処理の記述例を以下に示します。
なお、後処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. POST_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000080 COPY APFW_RTN.             *> 処理結果情報(使用しない場合、省略可能)
000090 COPY APFW_EXCEPTION.       *> 例外情報(使用しない場合、省略可能)
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110 APFW_RTN APFW_EXCEPTION.
000120*後処理を実施(任意)
000130     EXIT PROGRAM.
000140 END PROGRAM POST_SERVER_APL.

14.4.3.5 エラー処理の作成

アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、エラー処理を作成します。

エラー処理は、COBOL実行基盤インタフェースの生成時に、エラー処理を使用するように指定した場合に使用します。COBOL実行基盤インタフェース生成時のエラー処理を使用する場合の指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■オプション情報”を参照してください。

注意

COBOL実行基盤インタフェース生成時に、エラー処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。

エラー処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。

エラー処理

業務処理が異常終了した場合に、その直後に呼び出す処理です。
エラー処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報がエラー処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. ERROR_業務処理の関数名.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.
000080 COPY APFW_RTN.
000090 COPY APFW_EXCEPTION.
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110     APFW_RTN APFW_EXCEPTION.
エラー処理の記述例

エラー処理では、前処理、業務処理、後処理で発生した例外情報を集団項目APFW_EXCEPTIONに受け取ります。例外情報を更新したい場合には、処理結果情報に“異常/例外”を設定したうえで、集団項目APFW_EXCEPTIONの設定情報を変更してください。
例外情報を更新しない場合には、処理結果情報に“2”(異常/例外)を設定したうえで、集団項目APFW_EXCEPTIONの設定情報を変更しないで復帰してください。
アプリケーション連携実行基盤に例外情報を返す必要がなくなった場合には、処理結果情報に“0”(正常)を設定して復帰してください。
例外情報のエラーコードを判定して、例外情報を更新する場合のエラー処理の記述例を以下に示します。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. ERROR_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000080 COPY APFW_RTN.             *> 処理結果情報
000090 COPY APFW_EXCEPTION.       *> 例外情報
000100 PROCEDURE DIVISION USING APFW_USERWORK APFW_USERWORK_LENGTH
000110 APFW_RTN APFW_EXCEPTION.
000120     EVALUATE APFW_EXCEPTION_CODE
000130     WHEN 0
000140* サーバアプリケーションを正常終了させる
000150     MOVE 0 TO APFW_RTN    *> 処理結果情報に"正常終了"を設定
000160
000170     WHEN 1
000180* エラーに対するリカバリを実施する
000190  ...
000200* リカバリに成功したら、サーバアプリケーションを正常終了させる
000210     MOVE 0 TO APFW_RTN    *> 処理結果情報に"正常終了"を設定
000220  ...
000230*  リカバリに失敗したら、例外情報のエラーコードの値を更新する
000240     MOVE 2 TO APFW_RTN    *> 処理結果情報に"異常/例外"を設定
000250  ...
000260     WHEN OTHER            *> エラー処理を更新しない
000270     MOVE 2 TO APFW_RTN    *> 処理結果情報に"異常/例外"を設定
000280     END-EVALUATE.
000290
000300     EXIT PROGRAM.
000310 END PROGRAM ERROR_SERVER_APL.

14.4.3.6 トランザクション後メッセージ編集処理の作成

アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、トランザクション後メッセージ編集処理を作成します。

トランザクション後メッセージ編集処理は、COBOL実行基盤インタフェースの生成時に、トランザクション後メッセージ編集処理を使用するように指定した場合に使用します。COBOL実行基盤インタフェース生成時のトランザクション後メッセージ編集処理を使用する場合の指定方法については、“14.4.5.3 COBOL実行基盤インタフェースを生成するアプリケーション情報の追加”の“■オプション情報”を参照してください。

注意

COBOL実行基盤インタフェース生成時に、トランザクション後メッセージ編集処理関数を使用するように指定した場合には、必ず該当する処理関数を作成してください。

トランザクション後メッセージ編集処理の内容については、“12.1.1 初期処理/終了処理/前処理/後処理/エラー処理/トランザクション後メッセージ編集処理”を参照してください。

トランザクション後メッセージ編集処理

同期アプリケーション連携実行基盤で管理しているトランザクションの完了後に呼び出される処理です。トランザクション完了の結果により、アプリケーション連携実行基盤に返却するメッセージを編集する場合に使用します。
トランザクション後メッセージ編集処理のインタフェースは、以下のように作成する必要があります。
アプリケーション作業域、および処理結果情報がトランザクション後メッセージ編集処理のインタフェースに必要であるかは、サーバアプリケーションの設定に準じます。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. POSTTRN_業務処理の関数名.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_DB_RESULT. 
000080 COPY APFW_USERWORK.
000090 COPY APFW_RTN. 
000100 COPY APFW_EXCEPTION.
000110 PROCEDURE DIVISION USING APFW_DB_RESULT APFW_USERWORK APFW_USERWORK_LENGTH
000120     APFW_RTN APFW_EXCEPTION.
トランザクション後メッセージ編集処理の記述例

トランザクション後メッセージ編集処理では、前処理、業務処理、後処理、エラー処理の処理結果情報を、集団項目APFW_DB_RESULT、および集団項目APFW_EXCEPTIONに受け取ります。例外情報を更新したい場合には、処理結果情報に“異常/例外”を設定したうえで、集団項目APFW_EXCEPTIONの設定情報を変更してください。例外情報を設定する必要がない場合には、処理結果情報に“正常”を設定してください。
トランザクション後メッセージ編集処理の記述例を以下に示します。
なお、トランザクション後メッセージ編集処理は、サーバアプリケーションと同一ファイルに記述することも、別ファイルに記述することも可能です。

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. POSTTRN_SERVER_APL.
000030 ENVIRONMENT    DIVISION.
000040 DATA           DIVISION.
000050 WORKING-STORAGE SECTION.
000060 LINKAGE SECTION.
000070 COPY APFW_DB_RESULT.       *> トランザクション完了操作の結果情報
000080 COPY APFW_USERWORK.        *> アプリケーション作業域(使用しない場合、省略可能)
000090 COPY APFW_RTN.             *> 処理結果情報
000100 COPY APFW_EXCEPTION.       *> 例外情報
000110 PROCEDURE DIVISION USING APFW_DB_RESULT APFW_USERWORK APFW_USERWORK_LENGTH
000120 APFW_RTN APFW_EXCEPTION.
000130*トランザクション後メッセージ編集処理を実施(任意)
000140     EXIT PROGRAM.
000150 END PROGRAM POSTTRN_SERVER_APL.

■トランザクション後メッセージ編集処理で参照可能な情報

トランザクション後メッセージ編集処理では、トランザクションの処理結果やSQLステータスを参照することができます。

ポイント

トランザクションの処理結果やSQLステータスを参照するために以下のCOBOL登録集を提供しています。

  • ファイル名:APFW_DB_RESULT.cbl

  • 格納先:/opt/FJSVibs/copy/

  • ファイル名:APFW_DB_RESULT.cbl

  • 格納先:[Interstageのインストールディレクトリ]\BAS\copy

COBOL登録集APFW_DB_RESULT.cblは、次に示す内容でありトランザクション情報およびSQLの結果情報を参照するための識別値を定義しています。

01  APFW_DB_RESULT.
    02  TRANSACTION_INFORMATION.
      03  TRANMODE         PIC S9(9) COMP-5.
      03  TRANSTATUS       PIC S9(9) COMP-5.
    02  SQL_INFORMATION.
      03  DBSTATE          PIC X(5).
      03  FILLER           PIC X(3).
      03  DBCODE           PIC S9(18).
      03  DBMSG            PIC X(2048).