ENTMF 

JSON PARSE 文

JSON PARSE 文は、JSON テキストを COBOL データ形式に変換する。JSON の名前/値のペアを COBOL の一意名と照合して、値を設定する。

一般形式

JSON PARSE Statement

phrase-1

phrase-1 JSON PARSE

using-phrase-1

using-phrase-1 JSON PARSE

一般規則

  1. identifier-1 は、JSON テキストを含むデータ項目である。
  2. identifier-1 で識別される JSON テキストは、UTF-8 でエンコードされていると見なされる。
  3. identifier-1 に無効な JSON 構文が含まれていると、文が例外条件で終了して、identifier-2 が部分的に変更される可能性がある。
  4. identifier-2 は、JSON テキストが設定される集団項目または基本項目である。
  5. WITH DETAIL 指定を記述すると、非例外条件と例外条件の両方でランタイム エラー メッセージが生成される。
  6. NAME OF 指定を使用すると、JSON の名前/値のペアと COBOL のデータ項目の名前を照合する際に、照合アルゴリズムで必要とされるものとは異なるデータ名を使用できる。詳細については、「Appendix C - Matching Algorithm Examples」を参照。
  7. NAME OF 指定の結果、名前の指定があいまいになってはならない。この指定は、JSON PARSE 文が実行されている間にわたって有効になる。
  8. SUPPRESS 指定を使用すると、identifier-2 の下位の項目を解析対象から除外できる。
  9. CONVERTING 指定を使用すると、JSON BOOLEAN の名前/値のペアとして解析する項目を指定できる。複数の項目を指定するには、ALSO キーワードを使用する。
  10. 例外が発生した場合は、ON EXCEPTION 指定が記述されていれば制御が imperative-statement-1 に渡される。NOT ON EXCEPTION 指定は記述されていても無視される。ON EXCEPTION 指定が記述されていない場合は、制御が文の最後に移される。このような状況は、JSON テキストの形式が正しくない場合や、JSON テキストを identifier-2 に設定する際に問題が生じた場合に発生する。
  11. 例外が発生すると、解析処理は中止されるが、identifier-2 が部分的に変更される可能性がある。
  12. 例外が発生した場合、特殊レジスタ JSON-CODE に例外コードが格納される。詳細については、「JSON-CODE 例外コード」を参照。
  13. 特殊レジスタ JSON-STATUS に 0 以外の値が格納されることもある。この値は、例外が発生する前に発生した 1 つ以上の非例外条件を示す。詳細については、「JSON-STATUS 非例外コード」を参照。
  14. 例外が発生しなかった場合は、NOT ON EXCEPTION 指定が記述されていれば制御が imperative-statement-2 に渡される。記述されていない場合は、制御が文の最後に移され、文の実行後に特殊レジスタ JSON-CODE に 0 が格納される。
  15. 文の実行中に非例外条件が発生すると、特殊レジスタ JSON-STATUS が 0 以外の値に設定され、identifier-2 が部分的に変更される可能性がある。
  16. 解析中は、空白文字 (SP、HT、LF、および CR) は無視される。文字列内にある場合はその限りではない。数値内にある場合は無効になる。
  17. OMITTED を指定して、最上位の親名が指定されない匿名の JSON オブジェクトを解析できる。
  18. using-phrase-1 を使用して、解析中に JSON BOOLEAN の true 値または false 値が検出された際に identifier-5 に転記する値を指定する。

構文規則

  1. identifier-1 は、項類が英数字の基本データ項目または英数字の集団項目のいずれかを参照しなければならない。
  2. identifier-1 が英数字の集団項目を参照する場合は、項類が英数字の基本データ項目であるかのように扱われる。
  3. identifier-1 を JUSTIFIED 句で定義してはならない。
  4. identifier-1 を動的長集団項目または動的長基本項目にすることはできない。
  5. identifier-1 に関数一意名は指定できない。
  6. identifier-1 は添え字付けまたは部分参照が可能である。
  7. identifier-1 は、identifier-2 と重複してはならない。
  8. identifier-2 は、英数字の集団項目か、項類が英数字の基本データ項目でなければならない。
  9. identifier-2 (JSON テキストを保持するための集団項目または基本項目) は、部分参照することはできないが、添え字付けすることはできる。
  10. identifier-2 に関数一意名は指定できない。
  11. identifier-2 は、identifier-1 と重複してはならない。
  12. identifier-1 を動的長集団項目または動的長基本項目にすることはできない。
  13. identifier-2 では、UNBOUNDED 句および RENAMES 句は指定できない。UNBOUNDED 句は下位のデータでも指定できない。
  14. identifier-2 で指定する次のデータ項目は、JSON PARSE 文では無視される。
    • 名前のない下位の基本データ項目。
    • 基本 FILLER データ項目。
    • SYNCHRONIZED データ項目に挿入される遊びバイト。
    • REDEFINES 句で定義された下位項目、またはそのような再定義項目の下位の項目。
    • RENAMES 句で定義された下位項目。
    • 下位データ項目がすべて無視される集団項目。
  15. identifier-2 で指定する、上記の規則に従って無視されないデータ項目は、次の条件に従っている必要がある。
    • 基本データ項目が少なくとも 1 つ存在する必要がある。
    • 基本データ項目には、DISPLAY-1、FUNCTION-POINTER、INDEX、OBJECT REFERENCE、POINTER、PROCEDURE-POINTER 以外の USAGE が必要である。
    • FILLER 以外の各データ名は、identifier-2 内で一意でなければならない。
    • identifier-2 (またはその下位項目) のデータ宣言に OCCURS DEPENDING ON 句が含まれている場合、その句のターゲットは identifier-2 の下位項目であってはならない。したがって、OCCURS DEPENDING ON 句の右辺は JSON PARSE 文によって更新されない。
  16. identifier-3 は、identifier-2 またはその下位項目の 1 つを参照しなければならない。
  17. identifier-3 には、関数一意名、部分参照、添え字を指定できない。
  18. identifier-3 では、上記の制約事項に従って無視されるデータ項目は指定できない。
  19. identifier-3 は複数回指定できるが、最後の指定だけが使用される。
  20. literal-1 は、identifier-3 に関連付ける JSON 名を含む英数字定数または各国文字定数でなければならない。
  21. identifier-4 は、それ以外の場合には上記の制約事項に従って無視されない、identifier-2 の下位の項目を参照する必要がある。
  22. identifier-4 には、関数一意名、添え字、部分参照を指定できない。
  23. identifier-4 では表全体を参照できる。
  24. identifier-4 で集団項目を指定すると、その集団項目およびすべての下位項目が除外される。
  25. identifier-4 の重複した指定は許可される。
  26. 特定のデータ項目が NAME 指定と SUPPRESS 指定の両方に指定されている場合、そのデータ項目は除外される。
  27. identifier-5 は、データ定義項に PICTURE X を含む 1 バイトの英数字の基本データ項目とする。
  28. condition-name-1 は、identifier-5 に直接従属するレベル 88 の項目でなければならない。VALUE 句と WHEN SET TO FALSE 指定の両方を使用して記述する必要がある。VALUE 句の最初の定数 (複数の指定が可能なため) が、JSON BOOLEAN の true 値を解析する際に identifier-5 の値を設定するために使用される。JSON BOOLEAN の false 値を解析する際には、FALSE 値が identifier-5 に設定される。
  29. condition-name-2 および condition-name-3 は、identifier-5 に直接従属するレベル 88 の項目でなければならない。それらの VALUE 句は、JSON BOOLEAN の true 値または false 値をそれぞれ解析する際に identifier-5 の値を設定するために使用される。どちらの場合も、VALUE 句の最初の定数が使用される。
  30. literal-2 および literal-3 は、1 バイトの英数字定数とする。literal-2 および literal-3 は、JSON BOOLEAN の true 値または false 値をそれぞれ解析する際に identifier-5 の値を設定するために使用される。