ENTMF 

JSON PARSE 文

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

一般形式

JSON PARSE Statement

一般規則

  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. 例外が発生した場合は、ON EXCEPTION 指定が記述されていれば制御が imperative-statement-1 に渡されます。NOT ON EXCEPTION 指定は記述されていても無視されます。ON EXCEPTION 指定が記述されていない場合は、制御が文の最後に移されます。このような状況は、JSON テキストの形式が正しくない場合や、JSON テキストを identifier-2 に設定する際に問題が生じた場合に発生します。
  10. 例外が発生すると、解析処理は中止されますが、identifier-2 が部分的に変更される可能性があります。
  11. 例外が発生した場合、特殊レジスタ JSON-CODE に例外コードが格納されます。詳細については、「JSON-CODE 例外コード」を参照してください。
  12. 特殊レジスタ JSON-STATUS に 0 以外の値が格納されることもあります。この値は、例外が発生する前に発生した 1 つ以上の非例外条件を示します。詳細については、「JSON-STATUS 非例外コード」を参照してください。
  13. 例外が発生しなかった場合は、NOT ON EXCEPTION 指定が記述されていれば制御が imperative-statement-2 に渡されます。記述されていない場合は、制御が文の最後に移され、文の実行後に特殊レジスタ JSON-CODE に 0 が格納されます。
  14. 文の実行中に非例外条件が発生すると、特殊レジスタ JSON-STATUS が 0 以外の値に設定され、identifier-2 が部分的に変更される可能性があります。
  15. 解析中は、空白文字 (SP、HT、LF、および CR) は無視されます。文字列内にある場合はその限りではありません。数値内にある場合は無効になります。

構文規則

  1. identifier-1 は、項類が英数字の基本データ項目または英数字の集団項目のいずれかを参照しなければなりません。
  2. identifier-1 が英数字の集団項目を参照する場合は、項類が英数字の基本データ項目であるかのように扱われます。
  3. identifier-1 を JUSTIFIED 句で定義してはなりません。
  4. identifier-1 に関数一意名は指定できません。
  5. identifier-1 は添え字付けすること、または部分参照することができます。
  6. identifier-1 は、identifier-2 と重複してはなりません。
  7. identifier-2 は、英数字の集団項目か、項類が英数字の基本データ項目でなければなりません。
  8. identifier-2 (JSON テキストを保持するための集団項目または基本項目) は、部分参照することはできませんが、添え字付けすることはできます。
  9. identifier-2 に関数一意名は指定できません。
  10. identifier-2 は、identifier-1 と重複してはなりません。
  11. identifier-2 では、UNBOUNDED 句および RENAMES 句は指定できません。UNBOUNDED 句は下位のデータでも指定できません。
  12. identifier-2 で指定する以下のデータ項目は、JSON PARSE 文では無視されます。
    • 名前のない下位の基本データ項目。
    • 基本 FILLER データ項目。
    • SYNCHRONIZED データ項目に挿入される遊びバイト。
    • REDEFINES 句で定義された下位項目、またはそのような再定義項目の下位の項目。
    • RENAMES 句で定義された下位項目。
    • 下位データ項目がすべて無視される集団項目。
  13. 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 文によって更新されません。
  14. identifier-3 は、identifier-2 またはその下位項目の 1 つを参照しなければなりません。
  15. identifier-3 には、関数一意名、部分参照、添え字を指定できません。
  16. identifier-3 では、上記の制約事項に従って無視されるデータ項目は指定できません。
  17. identifier-3 は複数回指定できますが、最後の指定だけが使用されます。
  18. literal-1 は、identifier-3 に関連付ける JSON 名を含む英数字定数または各国文字定数でなければなりません。
  19. identifier-4 は、それ以外の場合には上記の制約事項に従って無視されない、identifier-2 の下位の項目を参照する必要があります。
  20. identifier-4 には、関数一意名、添え字、部分参照を指定できません。
  21. identifier-4 では表全体を参照できます。
  22. identifier-4 で集団項目を指定すると、その集団項目およびすべての下位項目が除外されます。
  23. identifier-4 の重複した指定は許可されます。
  24. 特定のデータ項目が NAME 指定と SUPPRESS 指定の両方に指定されている場合、そのデータ項目は除外されます。