| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第7章 アプリケーションの開発(COBOL) | > 7.5 データ型に対するマッピング |
IDL言語でワイド文字列型wstringを指定した場合、COBOLではPOINTERでデータ宣言します。
以降では、以下のIDL定義例をもとに説明します。
module ODsample{
interface wstringtest{
wstring op1(in wstring str1, out wstring str2, inout wstring str3);
};
};
IDENTIFICATION DIVISION.
PROGRAM-ID. "ODSAMPLE-WSTRINGTEST-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-WSTRINGTEST-OP1" USING
ORB
STR1
STR2
STR3
ENV
RET.
クライアントアプリケーションのパラメタの扱いについて、以下に示します。
|
パラメタ |
サーバへ渡すパラメタ |
サーバから渡されたパラメタ |
|
in |
CORBA-WSTRING-SET関数を使用して、文字列+終端文字'\0\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 N(30).
PROCEDURE DIVISION.
* inパラメタの設定
MOVE N"イン" TO STR-WORK.
COMPUTE LSIZE = FUNCTION LENGTH(STR-WORK).
CALL "CORBA-WSTRING-SET" USING
STR1
LSIZE
STR-WORK.
* inoutパラメタの設定
MOVE N"インアウト" TO STR-WORK.
COMPUTE LSIZE = FUNCTION LENGTH(STR-WORK).
CALL "CORBA-WSTRING-SET" USING
STR2
LSIZE
STR-WORK.
CALL "ODSAMPLE-WSTRINGTEST-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.
目次
索引
![]()
|