| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第7章 アプリケーションの開発(COBOL) | > 7.8 データ型に対するマッピング |
IDL言語で属性宣言(attribute)を指定した場合、オブジェクトのデータ設定/取得を行う関数(関数名は"モジュール名-インタフェース名--set(get)-変数名"。以降、データ設定関数/データ設定関数と呼ぶ)がIDLコンパイラで生成されます。
以降では、以下のIDL定義例をもとに説明します。
module ODsample{
interface attrtest{
attribute long para1;
attribute string para2;
readonly attribute long para3;
};
};
IDENTIFICATION DIVISION.
PROGRAM-ID. " ODSAMPLE-ATTRTEST--SET-PARA1".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
*オブジェクトリファレンス
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
* 設定値
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM
*例外情報
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
データ設定関数でデータ設定に使用するデータ域はinパラメタと同様に扱われます。また、データ取得関数でデータ取得に使用するデータ域は復帰値と同様に扱われます。このため、可変長データでは、その領域が不要になった時点でCORBA-FREE関数で領域を解放する必要があります。
.IDENTIFICATION DIVISION.
PROGRAM-ID. " ODSAMPLE-ATTRTEST".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 COPY OBJECT IN CORBA REPLACING CORBA-OBJECT BY OBJ.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY RET-NUM.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY LSIZE.
01 STR1 USAGE POINTER.
01 STR-WORK PIC X(30).
01 RET-STR1 USAGE POINTER.
01 ERR-MSG PIC X(30).
01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV.
PROCEDURE DIVISION.
MAIN.
MOVE 2 TO NUM.
CALL "ODSAMPLE-ATTRTEST--SET-PARA1" USING
OBJ
NUM
ENV.
CALL "ODSAMPLE-ATTRTEST--GET-PARA1" USING
OBJ
ENV
RET-NUM.
DISPLAY "ODsample_attrtest_get_para1 returns " RET-NUM.
MOVE "test" TO STR-WORK.
MOVE 5 TO LSIZE.
CALL "CORBA-STRING-SET" USING
STR1
LSIZE
STR-WORK.
CALL "ODSAMPLE-ATTRTEST--SET-PARA2" USING
OBJ
STR1
ENV.
CALL "ODSAMPLE-ATTRTEST--GET-PARA2" USING
OBJ
ENV
RET-STR1.
MOVE "ODsample_attrtest__get_para2" TO ERR-MSG.
PERFORM ENV-CHECK.
DISPLAY "ODsample_attrtest_get_para2 returns "RET-STR1.
CALL "CORBA-FREE" USING
RET-STR1.
CALL "ODSAMPLE-ATTRTEST--GET-PARA3" USING
OBJ
ENV
RET-NUM.
DISPLAY "ODsample_attrtest_get_para3 returns " RET-NUM.
MAIN-END.
ENV-CHECK SECTION.
EVALUATE TRUE
WHEN CORBA-NO-EXCEPTION OF MAJOR OF ENV
CONTINUE
WHEN CORBA-USER-EXCEPTION OF MAJOR OF ENV
DISPLAY "USER-EXCEPTION : " MESS
MOVE FUNCTION LENG (MESS) TO STRING-LENGTH
CALL "CORBA-STRING-GET" USING
IDL-ID OF ENV
STRING-LENGTH
MESS.
DISPLAY "ID : " MESS
EXIT PROGRAM
WHEN CORBA-SYSTEM-EXCEPTION OF MAJOR OF ENV
DISPLAY "SYSTEM-EXCEPTION : " MESS
MOVE FUNCTION LENG (MESS) TO STRING-LENGTH
CALL "CORBA-STRING-GET" USING
IDL-ID OF ENV
STRING-LENGTH
MESS
DISPLAY "ID : " MESS
EXIT PROGRAM
END-EVALUATE.
ENV-CHECK-END.
EXIT.
データ設定関数でデータ設定に使用するデータ域はinパラメタと同様に扱われ、スケルトンで自動的に獲得/解放されます。データ取得関数でデータ取得に使用するデータ域は復帰値と同様に扱われます。可変長データではデータ域獲得関数で領域獲得する必要があります。獲得した領域はスケルトンで自動的に解放されます。
関数間でデータを受け渡すにはGLOBAL句で変数を定義します(以降の例では変数GNUM,GSTRを使用)。
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-ATTRTEST-GET-PARA1".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
LINKAGE SECTION.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 ENV.
03 MAJOR PIC 9(9) COMP-5.
88 CORBA-NO-EXCEPTION VALUE 0.
88 CORBA-USER-EXCEPTION VALUE 1.
88 CORBA-SYSTEM-EXCEPTION VALUE 2.
03 IDL-ID USAGE POINTER.
03 MINOR PIC 9(9) COMP-5.
03 IDL-STATUS PIC 9(9) COMP-5.
03 PARAM USAGE POINTER.
03 MAGIC PIC 9(9) COMP-5.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY RET-NUM.
PROCEDURE DIVISION DIVISION USING
OBJ
ENV.
MAIN.
MOVE GNUM TO RET-NUM.
MAIN-END.
END PROGRAM "ODSAMPLE-ATTRTEST--GET-PARA1".
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-ATTRTEST--SET-PARA1".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
LINKAGE SECTION.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY NUM.
01 ENV.
03 MAJOR PIC 9(9) COMP-5.
88 CORBA-NO-EXCEPTION VALUE 0.
88 CORBA-USER-EXCEPTION VALUE 1.
88 CORBA-SYSTEM-EXCEPTION VALUE 2.
03 IDL-ID USAGE POINTER.
03 MINOR PIC 9(9) COMP-5.
03 IDL-STATUS PIC 9(9) COMP-5.
03 PARAM USAGE POINTER.
03 MAGIC PIC 9(9) COMP-5.
PROCEDURE DIVISION DIVISION USING
OBJ
NUM
ENV.
MAIN.
MOVE NUM TO GNUM.
MAIN-END.
END PROGRAM "ODSAMPLE-ATTRTEST--SET-PARA1".
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-ATTRTEST--GET-PARA2".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
01 WSTR USAGE IS POINTER.
LINKAGE SECTION.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 ENV.
03 MAJOR PIC 9(9) COMP-5.
88 CORBA-NO-EXCEPTION VALUE 0.
88 CORBA-USER-EXCEPTION VALUE 1.
88 CORBA-SYSTEM-EXCEPTION VALUE 2.
03 IDL-ID USAGE POINTER.
03 MINOR PIC 9(9) COMP-5.
03 IDL-STATUS PIC 9(9) COMP-5.
03 PARAM USAGE POINTER.
03 MAGIC PIC 9(9) COMP-5.
01 STR1 USAGE IS POINTER.
PROCEDURE DIVISION DIVISION USING
OBJ
ENV
STR1.
MAIN.
MOVE GSTR TO STR1.
MAIN-END.
END PROGRAM "ODSAMPLE-ATTRTEST--GET-PARA2".
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-ATTRTEST--SET-PARA2".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
LINKAGE SECTION.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 STR1 USAGE IS POINTER.
01 ENV.
03 MAJOR PIC 9(9) COMP-5.
88 CORBA-NO-EXCEPTION VALUE 0.
88 CORBA-USER-EXCEPTION VALUE 1.
88 CORBA-SYSTEM-EXCEPTION VALUE 2.
03 IDL-ID USAGE POINTER.
03 MINOR PIC 9(9) COMP-5.
03 IDL-STATUS PIC 9(9) COMP-5.
03 PARAM USAGE POINTER.
03 MAGIC PIC 9(9) COMP-5.
PROCEDURE DIVISION DIVISION USING
OBJ
STR1
ENV.
MOVE STR1 TO GSTR
MAIN-END.
END PROGRAM "ODSAMPLE-ATTRTEST--SET-PARA2".
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-ATTRTEST--GET-PARA3".
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CONST IN CORBA.
LINKAGE SECTION.
01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB.
01 ENV.
03 MAJOR PIC 9(9) COMP-5.
88 CORBA-NO-EXCEPTION VALUE 0.
88 CORBA-USER-EXCEPTION VALUE 1.
88 CORBA-SYSTEM-EXCEPTION VALUE 2.
03 IDL-ID USAGE POINTER.
03 MINOR PIC 9(9) COMP-5.
03 IDL-STATUS PIC 9(9) COMP-5.
03 PARAM USAGE POINTER.
03 MAGIC PIC 9(9) COMP-5.
01 COPY LONG IN CORBA REPLACING CORBA-LONG BY RET-NUM.
PROCEDURE DIVISION DIVISION USING
OBJ
ENV
RET-NUM.
MAIN.
MOVE GNUM TO RET-NUM.
MAIN-END.
END PROGRAM "ODSAMPLE-ATTRTEST--GET-PARA3".
目次
索引
![]()
|