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

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

7.4.1 初期化

 CORBAの初期化メソッドCORBA-ORB-INITを呼び出し初期化処理を行います。当関数の結果として、ORBのオブジェクトリファレンスが通知されます。このオブジェクトリファレンスは、以降で呼び出すORBインタフェースを使用する場合に指定します。

  IDENTIFICATION DIVISION. 
     PROGRAM-ID. "SERVER-MAIN".
     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. 
         . 
  *
     DATA DIVISION. 
  *
     WORKING-STORAGE SECTION. 
     COPY CONST IN CORBA. 
     01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 
     01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. 
     01 COPY BOA  IN CORBA REPLACING CORBA-BOA BY BOA. 
     01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ. 
     01 COPY REPOSITORYID IN CORBA REPLACING CORBA-REPOSITORYID BY INTF-REP. 
     01 COPY FJ-IMPLEMENTATIONDEF IN CORBA REPLACING FJ-IMPLEMENTATIONDEF BY IMPL-REP. 
     01 COPY INTERFACEDEF IN CORBA REPLACING CORBA-INTERFACEDEF BY INTF. 
     01 COPY IMPLEMENTATIONDEF IN CORBA REPLACING CORBA-IMPLEMENTATIONDEF BY IMPL. 
     01 COPY REFERENCEDATA IN CORBA REPLACING CORBA-REFERENCEDATA BY REF. 
     01 REF-P USAGE POINTER. 
     01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM. 
     01 NAME-A USAGE POINTER. 
     01 COPY COSNAMING-NAMINGCONTEXT IN CORBA REPLACING 
             COSNAMING-NAMINGCONTEXT BY COS-NAMING. 
     01 COPY COSNAMING-NAME IN CORBA REPLACING COSNAMING-NAME BY NAME. 
     01 COPY COSNAMING-NAMECOMPONENT IN CORBA REPLACING
             COSNAMING-NAMECOMPONENT BY NAME-COMPONENT. 
     01 NAME-COMPONENT-A USAGE POINTER. 
     01 STR-BUF PIC X(30). 
     01 INTF-INTF-A PIC X(25) VALUE "IDL:ODdemo/calculator:1.0".
     01 IMPL-INTF-A PIC X(25) VALUE "IDL:ODdemo/calculator:1.0".
     01 TEMP-BUF USAGE POINTER. 
     01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY STRING-LENGTH. 
     01 MESS PIC X(30). 
  *########## ORB SETTING PARAMETER #########
     01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY CURRENT-ARG-C. 
     01 CURRENT-ARG-V. 
        02 FILLER OCCURS 6. 
           03 CURRENT-ARG-V-VALUE USAGE POINTER. 
     01 APLI-NAME PIC X(8) VALUE "simple_s".
     01 TMP-STRING-BUF PIC X(20). 
     01 COPY LONG IN CORBA REPLACING CORBA-LONG BY ARG-COUNT. 
  * 
     LINKAGE SECTION. 
  *
     PROCEDURE DIVISION. 
  *
     MAIN. 
  * ObjectDirectorのObjectIDを設定
  * argument set : CURRENT-ARG-V-VALUE
         ACCEPT CURRENT-ARG-C FROM ARG-C. 
         COMPUTE CURRENT-ARG-C = CURRENT-ARG-C + 1. 

         PERFORM VARYING ARG-COUNT FROM 1 BY 1 UNTIL ARG-COUNT > CURRENT-ARG-C
            IF ARG-COUNT = 1
               MOVE APLI-NAME TO TMP-STRING-BUF
            ELSE
               ACCEPT TMP-STRING-BUF FROM ARG-V
            END-IF

            MOVE FUNCTION LENG (TMP-STRING-BUF) TO STRING-LENGTH
            CALL "CORBA-STRING-SET" USING
                              CURRENT-ARG-V-VALUE (ARG-COUNT) 
                              STRING-LENGTH
                              TMP-STRING-BUF
         END-PERFORM. 
         SET CURRENT-ARG-V-VALUE (ARG-COUNT) TO NULL. 
  * ObjectDirector初期化
         MOVE FUNCTION LENG (FJ-OM-ORB-ID) TO STRING-LENGTH. 
         CALL "CORBA-STRING-SET" USING
                  TEMP-BUF
                  STRING-LENGTH
                  FJ-OM-ORB-ID. 
         CALL "CORBA-ORB-INIT" USING
                  CURRENT-ARG-C
                  CURRENT-ARG-V
                  TEMP-BUF 
                  ENV
                  ORB. 
         CALL "CORBA-FREE" USING TEMP-BUF. 
         MOVE "CORBA-ORB-INIT" TO MESS. 
         PERFORM ENV-CHECK

 また、基本オブジェクトアダプタの初期化処理を行います。

  MOVE FUNCTION LENG (CORBA-BOA-OA-ID) TO STRING-LENGTH. 
       CALL "CORBA-STRING-SET" USING
                TEMP-BUF
                STRING-LENGTH
                CORBA-BOA-OA-ID. 
       CALL "CORBA-ORB-BOA-INIT" USING
                ORB
                CURRENT-ARG-C
                CURRENT-ARG-V
                TEMP-BUF
                ENV
                BOA. 
       CALL "CORBA-FREE" USING TEMP-BUF. 
       MOVE "CORBA-ORB-BOA-INIT" TO MESS. 
       PERFORM ENV-CHECK.

 なお、必要であればサーバアプリケーションの初期化も行います。


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

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