業務ロジックを作成し、アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成、または修正します。業務ロジックを作成するCOBOLソースファイルは、COBOLソース生成ウィザードを使用して作成します。COBOLソース生成ウィザードについては、“NetCOBOL Studio ユーザーズガイド”の“COBOLソース生成ウィザード”を参照してください。
サーバアプリケーションには、業務処理と任意の出口処理(初期処理、終了処理、前処理、後処理、エラー処理、トランザクション後メッセージ編集処理)を作成します。
COBOLサーバアプリケーションの作成方法、および修正方法について説明します。
サーバアプリケーション作成時の注意事項については、“22.2 サーバアプリケーションを作成する場合の注意”を参照してください。
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションを作成するためには、サーバアプリケーションで使用するパラメタに、以下の順番で値を指定する必要があります。
ユーザ任意のパラメタ(任意)
アプリケーション作業域とアプリケーション作業域長(任意)
処理結果情報(任意)
例外情報(任意)
ユーザ任意のパラメタを使用する場合は、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. |
サーバアプリケーションの呼出し元から入力データを設定しないでサーバアプリケーションを呼び出す場合や、サーバアプリケーションの終了時に出力データを設定しないで、次のサーバアプリケーションへ実行を遷移する場合があります。これらのデータに対して、設定されていない状態を判定したり、設定されていない状態を指定したりすることができます。送受信するデータが不要な場合、未設定のデータとして扱うことで、回線上に流れるデータ量を抑制することが可能です。
以下のデータ型を未設定データとして使用できます。ただし、集団項目内の基本項目には設定できません。
集団項目
バイナリのデータ
英数字項目、または日本語項目
ポイント
未設定データを判定または設定するために、以下の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を使用して、以下のように判定します。
英数字または集団項目の場合
IF FUNCTION LENG(IN-PARAM) > FUNCTION LENG(INVALID-MARKER) AND IN-PARAM(1:FUNCTION LENGTH(INVALID-MARKER)) NOT = INVALID-MARKER THEN 《入力パラメタ設定時の処理》 ELSE 《入力パラメタ未設定時の処理》 END-IF. … |
日本語項目の場合
IF FUNCTION LENG(IN-PARAM) > FUNCTION LENG(INVALID-MARKER2) AND IN-PARAM(1:FUNCTION LENGTH(INVALID-MARKER)) NOT = INVALID-MARKER2 THEN 《入力パラメタ設定時の処理》 ELSE 《入力パラメタ未設定時の処理》 END-IF. … |
なお、入力パラメタの領域サイズが未設定データの識別値INVALID-MARKERより小さい場合は、有効なデータとみなされます。
これらの判定処理では、類似の名前を持つCOBOLの関数が使用されています。返却値が以下のように異なるので注意してください。
LENG関数:データ項目、定数のバイト数を返します。
LENGTH関数:データ項目、定数の文字数を返します。
また、サーバアプリケーション側の出力パラメタが未設定データであることを設定するには、以下のように記述します。
未設定データはデフォルトでは設定されていないため、未設定にしたい出力パラメタすべてについて設定する必要があります。なお、復帰する際に入力専用パラメタ(INPUT)に未設定データを設定する必要はありません。
英数字または集団項目の場合
MOVE INVALID-MARKER TO OUT -PARAM(1:FUNCTION LENGTH(INVALID-MARKER)). |
日本語項目の場合
MOVE INVALID-MARKER2 TO OUT -PARAM(1:FUNCTION LENGTH(INVALID-MARKER2)). |
Javaクライアントでパラメタにnullを設定した場合、上記の未設定データ判定マーカの条件を満たしている項目については、サーバアプリケーションでは未設定データとして判定されます。
またJavaクライアントの仕様上、パラメタに明示的に値を設定しなくてもnullが設定される場合にも、同様の動作となります。例として、beanのメンバにjava.lang.String、配列、class、バイナリがある場合が該当します。Mapではキー自体が設定されない場合が該当します。
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、初期処理、および終了処理を作成します。
それぞれの処理の内容については、“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実行基盤インタフェースを生成するアプリケーション情報の追加”を参照してください。
基本情報
項目名 | 設定値 | 省略可否 |
---|---|---|
サーバアプリケーション名 | 任意の値 | 不可 |
プログラム名 | 任意の値 | 不可 |
実行基盤インタフェースの出力情報
項目名 | 設定値 | 省略可否 | |
---|---|---|---|
サーバアプリケーションの実行基盤インタフェースの出力形式 | - | - | |
| 出力ファイルのプレフィクス | 任意の値 | 不可 |
コメントファイル名 | 任意の値 | 可 | |
クライアントアプリケーションで使用するソースファイルの出力形式(注) | - | - | |
| クライアントアプリケーションを出力する | チェックしない | 不可 |
パッケージ名 | - | - | |
コメントファイル名 | - | - | |
コメントに生成日付を挿入する | 任意の値 | 可 |
注)[クライアントアプリケーションで使用するソースファイルの出力形式]の設定項目は、サーバアプリケーションを動作させる実行基盤の種別が同期アプリケーション連携実行基盤のときのみ表示されます。サーバアプリケーションを動作させる実行基盤の種別の指定方法は、“14.4.5.2 COBOL実行基盤インタフェース生成画面の起動”を参照してください。
パラメタと復帰値情報
項目名 | 設定値 | 省略可否 |
---|---|---|
COBOLプログラムに渡すパラメタ | 指定なし | 不可 |
PROGRAM-STATUSの値を返却する | PROGRAM-STATUSの値を返却する | 不可 |
オプション情報
項目名 | 設定値 | 省略可否 | |
---|---|---|---|
サーバアプリケーションのオプション情報 | - | - | |
| アプリケーション作業域を使用する | チェックする | 不可 |
処理結果情報および例外情報を使用する | チェックする | 不可 | |
前処理を使用する | チェックしない | 不可 | |
後処理を使用する | チェックしない | 不可 | |
エラー処理を使用する | チェックしない | 不可 | |
トランザクション後メッセージ編集処理を使用する(注1) | チェックしない | 不可 | |
COBOL実行基盤インタフェースの形式 | - | - | |
| 2進項目整数データをString型にマッピングする | チェックしない | 不可 |
パラメタを初期化する | チェックしない | 不可 | |
サーバアプリケーションで未設定データ判定処理を使用する | チェックしない | 不可 | |
日本語項目をビッグエンディアンとして処理する(注2) | チェックしない | 不可 |
注1)[トランザクション後メッセージ編集処理を使用する]の選択は、[使用する実行基盤の種別]が“同期アプリケーション連携実行基盤”である場合のみ表示されます。
注2)[日本語項目をビッグエンディアンとして処理する] の選択は、Linux、Windows のサーバアプリケーションを開発する場合、またはリモート開発の設定がされていない場合に表示されます。開発するサーバアプリケーションのプラットフォームは、アプリケーション開発用プロジェクトの [プロパティ] の [リモート開発] ページで確認することができます。
初期処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションとは別のファイルに記述してください。
初期処理の記述例を以下に示します。
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実行基盤インタフェースを生成するアプリケーション情報の追加”を参照してください。
基本情報
項目名 | 設定値 | 省略可否 |
---|---|---|
サーバアプリケーション名 | 任意の値 | 不可 |
プログラム名 | 任意の値 | 不可 |
実行基盤インタフェースの出力情報
項目名 | 設定値 | 省略可否 | |
---|---|---|---|
サーバアプリケーションの実行基盤インタフェースの出力形式 | - | - | |
| 出力ファイルのプレフィクス | 任意の値 | 不可 |
コメントファイル名 | 任意の値 | 可 | |
クライアントアプリケーションで使用するソースファイルの出力形式(注) | - | - | |
| クライアントアプリケーションを出力する | チェックしない | 不可 |
パッケージ名 | - | - | |
コメントファイル名 | - | - | |
コメントに生成日付を挿入する | 任意の値 | 可 |
注)[クライアントアプリケーションで使用するソースファイルの出力形式]の設定項目は、サーバアプリケーションを動作させる実行基盤の種別が“同期アプリケーション連携実行基盤”のときのみ表示されます。サーバアプリケーションを動作させる実行基盤の種別の指定方法は、“14.4.5.2 COBOL実行基盤インタフェース生成画面の起動”を参照してください。
パラメタと復帰値情報
項目名 | 設定値 | 省略可否 |
---|---|---|
COBOLプログラムに渡すパラメタ | 指定なし | 不可 |
PROGRAM-STATUSの値を返却する | チェックしない | 不可 |
オプション情報
項目名 | 設定値 | 省略可否 | |
---|---|---|---|
サーバアプリケーションのオプション情報 | - | - | |
| アプリケーション作業域を使用する | チェックする | 不可 |
処理結果情報および例外情報を使用する | チェックする | 不可 | |
前処理を使用する | チェックしない | 不可 | |
後処理を使用する | チェックしない | 不可 | |
エラー処理を使用する | チェックしない | 不可 | |
トランザクション後メッセージ編集処理を使用する(注1) | チェックしない | 不可 | |
COBOL実行基盤インタフェースの形式 | - | - | |
| 2進項目整数データをString型にマッピングする | チェックしない | 不可 |
パラメタを初期化する | チェックしない | 不可 | |
サーバアプリケーションで未設定データ判定処理を使用する | チェックしない | 不可 | |
日本語項目をビッグエンディアンとして処理する(注2) | チェックしない | 不可 |
注1)[トランザクション後メッセージ編集処理を使用する]の選択は、[使用する実行基盤の種別]が“同期アプリケーション連携実行基盤”である場合のみ表示されます。
注2)[日本語項目をビッグエンディアンとして処理する] の選択は、Linux、Windows のサーバアプリケーションを開発する場合、またはリモート開発の設定がされていない場合に表示されます。開発するサーバアプリケーションのプラットフォームは、アプリケーション開発用プロジェクトの [プロパティ] の [リモート開発] ページで確認することができます。
終了処理は、サーバアプリケーションとは別のライブラリとして作成する必要があるため、ソースファイルもサーバアプリケーションとは別のファイルに記述してください。
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. |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、前処理、および後処理を作成します。
前処理、および後処理は、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. |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、エラー処理を作成します。
エラー処理は、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. |
アプリケーション連携実行基盤から呼び出されるサーバアプリケーションの、トランザクション後メッセージ編集処理を作成します。
トランザクション後メッセージ編集処理は、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). |