WSDL および JSON での可変長配列の処理 - ネイティブ COBOL

WSDL ファイルまたは JSON スキーマに可変サイズの (一般的には無制限の) 配列がある場合、特にそのような配列が入れ子になっていると、生成されるサービスまたはクライアントのインターフェイス構造のサイズが大きくなることがあり、コンパイラの制限を超えることもあります。解決方法は、このような可変サイズの配列を実行時に動的に割り当てるように配列処理を構成することです。動的割り当てを行うように可変長配列が指定されている場合、生成されるメインまたは外側のインターフェイス構造に可変長配列は含まれません。代わりに、COBOL ポインターを使用して、配列があるメモリ内の個別の領域が示されます。配列のサイズは、COBOL ポインターの直前にある数値フィールドによって示されます。[Generate Web Service] ダイアログ ボックスの [Inline-Array-Size-Limit] フィールドでは、可変長配列を動的割り当てで個別の構造として生成する最小サイズとして、0 (ゼロ) から 32767 の数値を指定できます。たとえば、Inline-Array-Size-Limit のデフォルト値 0 (どの配列も動的に割り当てないことを意味する) を使用している場合に、生成されたサービスまたはクライアント プログラムとコピーブックが、実用的でないほど大きいときや、コンパイルできないときは、[Inline-Array-Size-Limit] を 1 または 2 に設定して生成を行ってみてください。詳細については、「[Generate Web Service] ダイアログ ボックス」を参照してください。

注: imtkmake コマンドの inlineoccurslimit パラメーターは、[Generate Web Service] ダイアログ ボックスの [Inline-Array-Size-Limit] フィールドに相当するコマンド ライン オプションです。詳細については、「imtkmake コマンド」のトピックを参照してください。

WSDL および JSON スキーマの内容
WSDL の可変長配列:
<element name="in_0_5" minOccurs="1" maxOccurs="5">
   <simpleType>
      <restriction base="string">
         <length value="8"/>
      </restriction>
   </simpleType>
</element>
JSON スキーマの可変長配列:
{
   "in_0_5":
   {
      "type": "array",
      "maxItems": 5,
      "minItems": 1,
      "items":
      {
         "type": "string",
         "maxLength": 8
      }
   }
}
生成されるデータ構造
デフォルトでの生成:
すべての配列構造がメイン構造内に生成されます。
05 in-0-5-occurs   pic 9(9) comp-5.
05 in-0-5          pic x(8) occurs 5.
動的割り当てでの生成:
配列サイズ用およびメモリ内の配列へのポインター用の各構造が、メイン構造内に生成されます。
05 in-0-5-occurs   pic 9(9) comp-5.
05 in-0-5-cont0001 pointer.

配列自体は個別のグループ構造内に生成されます。

01 cont0001-in-0-5.
  03 in-0-5        pic x(8) occurs 1 count in in-0-5-occurs.