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

第7章 アプリケーションの開発(COBOL)> 7.4 サーバアプリケーションのプログラミング(静的スケルトンインタフェース)

7.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.

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005