Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第8章 CORBAサーバアプリケーションを開発する | > 8.4 留意事項 |
Apdesignerは、繰返し項目を、以下のようにsequenceデータ型にマッピングします。
次元数 |
オブジェクト指向COBOL |
---|---|
1次元 |
sequence型(固定長) |
2次元〜5次元 |
使用できません |
ここでは、繰り返し定義のIDLファイルへの展開について説明します。
1次元の場合は、sequence型にマッピングします。
データ型に4バイト整数、型名にa、繰り返し数に10を指定した場合の展開について示します。
typedef sequence<long, 10> a ;
ここでは、繰返し項目の操作について説明します。
繰返し項目の操作を以下に示します。以下のIDLファイルをコンパイルした場合、sequence型は、シーケンスクラスにマッピングされます。
module ODsample { typedef sequence<long,10> sampleseq; interface seqtest { sampleseq op1(in sampleseq param1, out sampleseq param2, inout sampleseq param3); }; };
シーケンスクラスのファクトリメソッド、オブジェクトメソッド、プロパティを以下に示します。
カテゴリ |
メソッド名/プロパティ名 |
機能 |
---|---|---|
ファクトリメソッド |
NEW-WITH-LENGTH |
指定の長さでシーケンスクラスを作成します。 |
オブジェクトメソッド |
GET-VALUE |
指定番号の要素の値を取得します。 |
SET-VALUE |
指定番号の要素に値を設定します。 |
|
CLONE |
シーケンスクラスを複製します。 |
|
プロパティ |
SEQ-MAXIMUM |
シーケンス最大長の値を取得します。 |
SEQ-LENGTH |
シーケンス長の値の取得/設定を行います。 |
METHOD-ID. OP1 AS "OP1" OVERRIDE. * <IDL-INFO-START> * sampleseq op1(in sampleseq param1,out sampleseq param2,inout sampleseq param3) * <IDL-INFO-END> DATA DIVISION. WORKING-STORAGE SECTION. 01 SEQ-VALUE TYPE CORBA-LONG. 01 I TYPE CORBA-UNSIGNED-LONG. LINKAGE SECTION. 01 復帰値 TYPE ODSAMPLE-SAMPLESEQ. 01 PARAM1 TYPE ODSAMPLE-SAMPLESEQ. 01 PARAM2 TYPE ODSAMPLE-SAMPLESEQ. 01 PARAM3 TYPE ODSAMPLE-SAMPLESEQ. PROCEDURE DIVISION USING PARAM1 PARAM2 PARAM3 RETURNING 復帰値 . * IN PARAMETER PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 INVOKE PARAM1 "GET-VALUE" USING I RETURNING SEQ-VALUE END-PERFORM. * OUT PARAMETER INVOKE SEQUENCE-LONG-10 "NEW" RETURNING PARAM2. MOVE 10 TO SEQ-LENGTH OF PARAM2. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 COMPUTE SEQ-VALUE = I * 100 INVOKE PARAM2 "SET-VALUE" USING I SEQ-VALUE END-PERFORM. * INOUT PARAMETER PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 INVOKE PARAM3 "GET-VALUE" USING I RETURNING SEQ-VALUE COMPUTE SEQ-VALUE = SEQ-VALUE * 100 INVOKE PARAM3 "SET-VALUE" USING I SEQ-VALUE END-PERFORM. * RESULT INVOKE SEQUENCE-LONG-10 "NEW" RETURNING 復帰値. MOVE 10 TO SEQ-LENGTH OF 復帰値. PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 COMPUTE SEQ-VALUE = I * 10000 INVOKE 復帰値 "SET-VALUE" USING I SEQ-VALUE END-PERFORM. END METHOD OP1.
パラメタ入力モードがin、inoutの場合は、実際のデータ領域はすでに存在するため新たに確保する必要はありませんが、outモード、復帰値の場合には実際の領域をサーバアプリケーションで確保する必要があります。
sequence型と同様に、in、 inoutモードの場合は、データ領域は呼び出し側にあるため確保する必要はありませんが、out、復帰値の場合には、データ領域をサーバアプリケーションに確保する必要があります。
目次 索引 |