JSON 匿名配列の生成
NAME IS OMITTED 句を使用しているときに、JSON GENERATE ステートメントで表のデータ名を指定することにより、JSON 無名配列を生成することができます。
次の例を考えてみましょう。
Identification division.
Program-id. myprog.
Data division.
Working-storage section.
1 ACT.
2 B1 occurs 2.
3 C1.
4 M1 pic 9.
4 D1 occurs 2.
5 N1 pic 9.
1 json-text pic u dynamic.
Procedure division.
move 1 to M1(1)
move 2 to M1(2)
move 3 to N1(1 1)
move 4 to N1(1 2)
move 5 to N1(2 1)
move 6 to N1(2 2)
move spaces to json-text
json generate json-text from b1
name b1 is omitted
end-json
goback
.
End program myprog.このプログラムを実行すると、項目 json-textに以下の JSON テキストが生成されます。[{"C1":{"M1":1,"D1":[{"N1":3},{"N1":4}]}},{"C1":{"M1":2,"D1":[{"N1":5},{"N1":6}]}}]JSON GENERATE 送信側 b1 は、 b1のすべてのオカレンスを参照するために添え字が付けられていないことに注意してください。次の例では、表
b1 が 2 つのディメンションを持ち、以下のように別の表内にネストされています。 Identification division.
Program-id. myprog.
Data division.
Working-storage section.
1 ACT.
2 TOPTABLE occurs 3.
3 B1 occurs 2.
4 C1.
5 M1 pic 9.
5 D1 occurs 2.
6 N1 pic 9.
1 json-text pic u dynamic.
Procedure division.
move 1 to M1(1 1)
move 2 to M1(1 2)
move 3 to N1(1 1 1)
move 4 to N1(1 1 2)
move 5 to N1(1 2 1)
move 6 to N1(1 2 2)
move spaces to json-text
json generate json-text from b1(1)
name b1 is omitted
end-json
goback
.
End program myprog.
このプログラムを実行すると、項目 json-textに以下の JSON テキストが生成されます。[{"C1":{"M1":1,"D1":[{"N1":3},{"N1":4}]}},{"C1":{"M1":2,"D1":[{"N1":5},{"N1":6}]}}]b1(1) は、JSON GENERATE ステートメントで単一の索引添え字を使用して指定されたことに注意してください。 添え字 1 の値は、テーブル TOPTABLE の最初のオカレンスが生成されることを示します。 2 番目の索引を省略すると、(2 番目の索引添え字が指定された場合に発生する可能性のある b1の単一オカレンスではなく) ステートメントが表 b1 全体で動作することを JSON GENERATE ステートメントに示します。 このパターンは、通常、複数のネストされたテーブルに適用されます。つまり、NAME IS OMITTED 句を組み合わせて、次元より 1 つ少ない添え字で送り出し項目を指定することによって、無名配列を生成することができます。