CORBAサーバアプリケーション生成ウィザードで生成したビジネスメソッドクラスのひな型ソースに、メソッドの実装処理を記述してください。メインプログラムやサーバアプリケーション登録プログラムはそのまま使用可能です。
詳細は、"Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)"を参照してください。
ここでは、「加算プログラム」をCORBAサーバアプリケーション生成ウィザードで定義した例を示します。
// モジュール宣言 module SAMPLE { // ユーザインタフェース宣言 interface CALCULATE_ADD { long CALCULATE(in long param1, in long param2); }; };
IDENTIFICATION DIVISION. PROGRAM-ID. CALCULATE_ADD. ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. COPY CORBA--REP. COPY USCALCULATE_ADD--REP. . SPECIAL-NAMES. SYMBOLIC CONSTANT COPY CORBA--CONST. . DATA DIVISION. WORKING-STORAGE SECTION. COPY CORBA--COPY. COPY USCALCULATE_ADD--COPY. 01 API-NAME PIC X(50). 01 APL-NAME PIC X(64) VALUE "CALCULATE_ADD". 01 ORB USAGE OBJECT REFERENCE CORBA-ORB. 01 BOA USAGE OBJECT REFERENCE CORBA-BOA. 01 IMPL-REP USAGE OBJECT REFERENCE FJ-IMPLEMENTATIONREP. 01 IMPL USAGE OBJECT REFERENCE CORBA-IMPLEMENTATIONDEF. 01 REP-ID PIC X(128) VALUE "IDL:SAMPLE/CALCULATE_ADD:1.0". 01 OBJ USAGE OBJECT REFERENCE CORBA-OBJECT. 01 EXCEPT-ID USAGE OBJECT REFERENCE CORBA-STRING. 01 EXCEPT-ID-VALUE PIC X(50). LINKAGE SECTION. PROCEDURE DIVISION . * * ORBの初期化 * INVOKE CORBA "ORB_INIT" USING APL-NAME FJ-OM_ORBID RETURNING ORB. * * BOAの初期化 * INVOKE ORB "BOA_INIT" USING APL-NAME CORBA-BOA_OAID RETURNING BOA. * * インプリメンテーションリポジトリオブジェクトの取得 * INVOKE ORB "RESOLVE_INITIAL_REFERENCES" USING CORBA-OBJECTID_IMPLEMENTAT-001 RETURNING OBJ. INVOKE FJ-IMPLEMENTATIONREP "NARROW" USING OBJ RETURNING IMPL-REP. * * インプリメンテーション情報の取得 * INVOKE IMPL-REP "LOOKUP_ID" USING REP-ID RETURNING OBJ. INVOKE CORBA-IMPLEMENTATIONDEF "NARROW" USING OBJ RETURNING IMPL. * SET OBJ TO NULL. * * サーバの活性化をODに通知する * MOVE "CORBA::BOA::IMPL_IS_READY" TO API-NAME. INVOKE BOA "IMPL_IS_READY" USING IMPL. * STOP RUN. END PROGRAM CALCULATE_ADD.
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-CALCULATE_ADD--INIT. ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. CLASS SAMPLE-CALCULATE_ADD CLASS SAMPLE-CALCULATE_ADD-IMPL . DATA DIVISION. WORKING-STORAGE SECTION. LINKAGE SECTION. 01 RET USAGE OBJECT REFERENCE SAMPLE-CALCULATE_ADD. PROCEDURE DIVISION RETURNING RET . INVOKE SAMPLE-CALCULATE_ADD-impl "new" RETURNING RET. EXIT PROGRAM. END PROGRAM SAMPLE-CALCULATE_ADD--INIT.
CLASS-ID. SAMPLE-CALCULATE_ADD-IMPL AS "SAMPLE-CALCULATE_ADD-IMPL" INHERITS SAMPLE-CALCULATE_ADD . ENVIRONMENT DIVISION. CONFIGURATION SECTION. REPOSITORY. COPY CORBA--REP. COPY USCALCULATE_ADD--REP. . SPECIAL-NAMES. SYMBOLIC CONSTANT COPY CORBA--CONST. . OBJECT. DATA DIVISION. WORKING-STORAGE SECTION. COPY CORBA--COPY. COPY USCALCULATE_ADD--COPY. PROCEDURE DIVISION . METHOD-ID. CALCULATE AS "CALCULATE" OVERRIDE. * <IDL-INFO-START> * long CALCULATE(in long param1,in long param2) * <IDL-INFO-END> DATA DIVISION. WORKING-STORAGE SECTION. LINKAGE SECTION. 01 復帰値 PIC S9(9) COMP-5. 01 PARAM1 PIC S9(9) COMP-5. 01 PARAM2 PIC S9(9) COMP-5. PROCEDURE DIVISION USING PARAM1 PARAM2 RETURNING 復帰値 . COMPUTE 復帰値 = PARAM1 + PARAM2. END METHOD CALCULATE. END OBJECT. END CLASS SAMPLE-CALCULATE_ADD-IMPL.