繰返し項目を、以下のようにsequenceデータ型にマッピングします。
次元数 | オブジェクト指向COBOL |
---|---|
1次元 | sequence型(固定長) |
2次元~5次元 | 使用できません |
繰り返し定義のIDLファイルへの展開
ここでは、繰り返し定義の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モードのパラメタまたは復帰値の場合には実際の領域をサーバアプリケーションで確保する必要があります。