Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
|
目次
索引

|
6.4.3 インタフェース実装関数
初期化処理の後、サーバアプリケーションで実装するインタフェースの処理を記述します。インタフェース実装関数のパラメタには、オブジェクトリファレンス、IDLで定義したパラメタ、CORBA_Environmen構造体へのポインタが渡されます。
IDENTIFICATION DIVISION.
* calculateメソッドの実装関数
PROGRAM-ID. "ODDEMO-CALCULATOR-CALCULATE".
AUTHOR. OD/IDLCOMPILER VER.2.0.
INSTALLATION. IDL FILE NAME IS COBSAMPLE.IDL.
SECURITY. THIS SOURCE CODE WAS GENERATED BASE ON YOUR IDL FILE.
WHEN THIS STUB/SKELETON SOURCE CODE IS CHANGED, THE OPERATION.
GURANTEED IS NOT DONE.
DATE-WRITTEN. TUE MAY 6 11:03:40 1997
*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
ARGUMENT-NUMBER IS ARG-C
ARGUMENT-VALUE IS ARG-V
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
.
*
INPUT-OUTPUT SECTION.
*
DATA DIVISION.
*
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
01 MESS PIC X(30).
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY STRING-LENGTH.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 COPY BOA IN CORBA REPLACING CORBA-BOA BY BOA.
01 STRING-TMP PIC X(10).
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY FLAGS.
01 TEMP-BUF USAGE POINTER.
01 EXCEP.
03 COPY LONG IN CORBA REPLACING CORBA-LONG BY EXCEP-L.
01 EXCEP-A USAGE POINTER.
01 EX-ODDEMO-CALCULATOR-ZEROPARAM PIC X(35) VALUE "IDL:ODdemo/calculator/ZEROPARAM:1.0".
01 COPY EXCEPTION-TYPE IN CORBA REPLACING CORBA-EXCEPTION-TYPE BY EX-STATUS.
01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY C-ARG-C.
01 C-ARG-V.
02 FILLER OCCURS 2.
03 ARG-V-VALUE USAGE POINTER.
01 APLI-NAME PIC X(8) VALUE "simple_s".
LINKAGE SECTION.
01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY PARAM1.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY PARAM2.
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
01 A-RESULT.
02 COPY LONG IN CORBA REPLACING CORBA-LONG BY ADD-RESULT.
02 COPY LONG IN CORBA REPLACING CORBA-LONG BY SUBTRACT-RESULT.
02 COPY LONG IN CORBA REPLACING CORBA-LONG BY MULTIPLE-RESULT.
02 COPY FLOAT IN CORBA REPLACING CORBA-FLOAT BY DEVIDE-RESULT.
*
PROCEDURE DIVISION USING
* サーバのオブジェクトリファレンス
OBJ
* 入力値
PARAM1
* 入力値
PARAM2
* エラー値
ENV
* 演算結果
A-RESULT.
*
MAIN.
COMPUTE C-ARG-C = 1.
MOVE FUNCTION LENG (APLI-NAME) TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
ARG-V-VALUE (1)
STRING-LENGTH
APLI-NAME.
SET ARG-V-VALUE(2) TO NULL.
MOVE 12 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
FJ-OM-ORB-ID.
CALL "CORBA-ORB-INIT" USING
C-ARG-C
C-ARG-V
TEMP-BUF
ENV
ORB.
MOVE "CORBA-ORB-INIT" TO MESS.
PERFORM ENV-CHECK
CALL "CORBA-FREE" USING
TEMP-BUF.
MOVE 15 TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-BOA-OA-ID.
CALL "CORBA-ORB-BOA-INIT" USING
ORB
C-ARG-C
C-ARG-V
TEMP-BUF
ENV
BOA.
MOVE "CORBA-ORB-BOA-INIT" TO MESS.
PERFORM ENV-CHECK.
* 0除算チェック
IF PARAM2 = 0
MOVE 1 TO FLAGS
MOVE FUNCTION LENG(EX-ODDEMO-CALCULATOR-ZEROPARAM) TO STRING-LENGTH
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
EX-ODDEMO-CALCULATOR-ZEROPARAM
MOVE 0 TO EXCEP-L OF EXCEP
MOVE FUNCTION ADDR (EXCEP) TO EXCEP-A
CALL "CORBA-BOA-SET-EXCEPTION" USING
BOA
FLAGS
TEMP-BUF
EXCEP-A
ENV
ELSE
* Calculate
COMPUTE ADD-RESULT OF A-RESULT = PARAM1 + PARAM2
COMPUTE SUBTRACT-RESULT OF A-RESULT = PARAM1 - PARAM2
COMPUTE MULTIPLE-RESULT OF A-RESULT = PARAM1 * PARAM2
COMPUTE DEVIDE-RESULT OF A-RESULT = PARAM1 / PARAM2
END-IF.
EXIT PROGRAM.
MAIN-END.
Copyright 2005 FUJITSU LIMITED