WSDL および JSON での可変長配列の処理 - CICS COBOL

WSDL ファイルまたは JSON スキーマに可変サイズの (一般的には無制限の) 配列がある場合、特にそのような配列が入れ子になっていると、生成されるサービスまたはクライアントのインターフェイス構造のサイズが大きくなることがあり、コンパイラの制限を超えることもあります。解決方法は、このような可変サイズの配列を実行時に動的に割り当てるように配列処理を構成することです。CICS Web サービスの生成では、動的割り当てを行うように可変長配列が指定されている場合、生成される外側のインターフェイス構造に可変長配列は含まれません。代わりに、COBOL 文字列を使用して、可変長配列が格納されている個別の CICS コンテナーの名前が識別されます。配列のサイズは、COBOL 文字列の直前にある数値フィールドによって示されます。[Generate Web Service] ダイアログ ボックスの [Inline-Array-Size-Limit] フィールドでは、可変長配列が動的割り当てで CICS コンテナー内に生成される際の最小サイズとして、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
<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
      }
   }
}
生成されるデータ構造
Default generation:
All array structures are generated into the main structure.
05 in-0-5-occurs   pic 9(9) comp-5.
05 in-0-5          pic x(8) occurs 1 to 5
                   count in in-0-5-occurs
                   of op1
                   of op1-input-parms.
Dynamic allocation generation:
Structures for the array size and a COBOL string that identifies a container are generated into the main structure:
05 in-0-5-occurs   pic 9(9) comp-5.
05 in-0-5-cont0001 pic x(16).

The array is generated into a separate group structure:

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