Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第7章 アプリケーションの開発(COBOL) | > 7.5 データ型に対するマッピング |
IDL言語で文字列型stringを指定した場合、COBOLではPOINTERでデータ宣言します。
以降では、以下のIDL定義例をもとに説明します。
module ODsample{ interface stringtest{ string op1(in string str1, out string str2, inout string str3); }; };
IDENTIFICATION DIVISION. PROGRAM-ID. "ODSAMPLE-STRINGTEST-OP1". ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. COPY CONST IN CORBA. *オブジェクトリファレンス 01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. * inパラメタ 01 STR1 USAGE POINTER. * outパラメタ 01 STR2 USAGE POINTER. * inoutパラメタ 01 STR3 USAGE POINTER. *例外情報 01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. *復帰値 01 RET USAGE POINTER. PROCEDURE DIVISION. CALL "ODSAMPLE-STRINGTEST-OP1" USING ORB STR1 STR2 STR3 ENV RET.
クライアントアプリケーションのパラメタの扱いについて、以下に示します。
パラメタ |
サーバへ渡すパラメタ |
サーバから渡されたパラメタ |
in |
CORBA-STRING-SET関数を使用して、文字列+終端文字'\0'分の領域獲得と文字列設定を行います。 |
− |
inout |
(inパラメタと同じ) |
領域はスタブで自動的に獲得されます。 |
out |
− |
(inoutパラメタと同じ) |
クライアントおよびスタブで獲得した領域は、不要になった時点でCORBA-FREE関数で解放する必要があります。
以下にクライアントアプリケーションでのDATA DIVISIONおよびPROCEDURE DIVISIONの処理例を示します。
DATA DIVISION. WORKING-STORAGE SECTION. COPY CONST IN CORBA. 01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. 01 STR1 USAGE POINTER. 01 STR2 USAGE POINTER. 01 STR3 USAGE POINTER. 01 RET USAGE POINTER. 01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 01 RET USAGE POINTER. 01 COPY LONG IN CORBA REPLACING CORBA-LONG BY LSIZE. 01 STR-WORK PIC X(30). PROCEDURE DIVISION. * inパラメタの設定 MOVE "IN" TO STR-WORK. MOVE 3 TO LSIZE. CALL "CORBA-STRING-SET" USING STR1 LSIZE STR-WORK. * inoutパラメタの設定 MOVE "INOUT:1" TO STR-WORK. MOVE 8 TO LSIZE. CALL "CORBA-STRING-SET" USING STR2 LSIZE STR-WORK. CALL "ODSAMPLE-STRINGTEST-OP1" USING ORB STR1 STR2 STR3 ENV RET. * 復帰値用領域の解放 CALL "CORBA-FREE" USING RET. * inパラメタ用領域の解放 CALL "CORBA-FREE" USING STR1. * outパラメタ用領域の解放 CALL "CORBA-FREE" USING STR2. * inoutパラメタ用領域の解放 CALL "CORBA-FREE" USING STR3.
目次
索引
![]() ![]() |