EGL ライブラリー XMLLib
このトピックでは、XMLLib 関数と変数の定義について説明します。
下の表に、XMLLib ライブラリーのシステム関数を示します。
| システム関数およびシステム呼び出し | 説明 |
|---|---|
| convertFromXML (XMLstring in, variable out) | XML 文字列を非構造化レコードに変換します。 |
| result = convertToXML (variable in) | 非構造化レコードを XML 文字列に変換します。 |
COBOL 生成の互換性および制限に関する考慮事項:
- すべてのシステムの場合:
- EGL 言語は、フレキシブル・レコードのみを XMLLib の関数に渡します。 デバッガー、JavaGen、または RUI では、XMLLib 関数に対する引数として構造化レコードはサポートされていません。 そのため、CobolGen でもこれらの構造化レコードはサポートされません。 この制限を回避するために、ご使用の構造化レコードから互換フレキシブル・レコードを常に作成し、move byName ステートメントを実行してデータを受け渡すことができます。
- デバッガー、JavaGen、および RUI では、XMLLib 関数に渡すためにタイプ Any のフィールドを扱うことができますが、CobolGen では扱うことができません。 CobolGen は、生成プログラムが、渡される EGL レコードに固有の COBOL コードを生成することを必要とするためです。 これにより、関数引数としてタイプ Any のフィールドを渡す機能が妨げられます。
- EGL では、動的配列が、ストリング、文字、その他のプリミティブ型、またはレコードの動的配列のいずれであってもサポートされます。 ただし、EGL では複数レベルの動的配列はサポートされません。 つまり、レコード内の要素も動的配列であるようなレコードの動的配列はコーディングできません。
- フレキシブル・レコードで動的配列を使用する場合、デフォルトの項目数は 100 です。 動的配列に初期サイズが指定されている場合は、動的配列の maxSize アノテーションで指定変更されない限り、このサイズが使用されます。 MaxSize は、初期サイズに続く、サイズの第一選択項目として使用され、次にデフォルトの 100 が使用されます。 COBOL コンパイラー用に固定長の COBOL 構造を作成しなければならないため、生成プログラムはこのサイズを認識する必要があります。
- フレキシブル・レコードでストリングを使用する場合、maxLen アノテーションが指定されていない限り、デフォルト長は 256 文字です。 MaxLen は、デフォルトの 256 に続く、最大サイズの第一選択項目として使用されます。 COBOL コンパイラー用に固定長の COBOL 構造を作成しなければならないため、生成プログラムはこの長さを認識する必要があります。
- XMLLib 関数によって作成または使用されるストリングの最大サイズは 32767 文字です。 ただし、シンボリック・パラメーター MAXIMUMSTRINGSIZE によって、許容される最大長を上書きできます。 そのため、必要であれば、より大きいサイズを使用することができます。 これは、シンボリック・パラメーターで生成されるすべてのストリングの最大サイズに作用することに注意してください。 基本的には、このパラメーターは一般に COBOL コンパイラーの作業域およびプログラム・ロード・モジュールのサイズに影響します。 また、より大きいストリングを別のプログラムに渡す場合は、そのプログラムでも MAXIMUMSTRINGSIZE を大きくする必要があることに注意してください。 そうでないと、使用時にストリング・データの一部が切り捨てられるおそれがあります。
- 同じレコードの複数のオカレンスを、渡すフレキシブル・レコードの一部として定義できます。 ただし、これらのオカレンスが最上位にある場合に限られます。 ただし、同じレコードを、組み込みレコードの一部として複数回定義することはできません。
- Rational Business Developer では、EGL アノテーション @XMLRootElement、@XMLElement、および @XMLAttribute がサポートされます (iSeries の場合は、以下の属性に関する制約事項を参照してください)。
- @XMLRootElement、@XMLElement、および @XMLAttribute の各アノテーションでは、Name アノテーション・サブ値がサポートされます。 Name アノテーションにサブ値が定義されている場合は、その値が使用されます。定義されていない場合は、フィールド名が大文字への変換なしでそのまま使用されます。
- iSeries システムの場合:
- convertToXML 関数を使用する場合、iSeries COBOL コンパイラーでは属性引数はサポートされません。 つまり、XML の作成時に、XML ファイルではどの xxx="..." 属性の作成も行われません。 ただし、EGL で作成される、生成された COBOL ソースでは、入力属性はすべてサポートされます。 つまり、convertFromXML 関数は、iSeries COBOL コンパイラーでサポートされていなくても、XML で属性をサポートします。