付録 C - 基本データのフォーマット変換

identifier-2 内の基本データ項目は、次の処理手順で変換されます。これらの手順の一部はオプションです。

文字フォーマットへの変換:

基本のデータ項目は、データ項目のタイプに応じて文字フォーマットに変換されます。

  • 次のデータ項目は、Unicode エンコーディングが必要な場合を除いて、文字フォーマットに変換されません。
    • 英字
    • 英数字
    • 英数字編集
    • DBCS
    • 外部浮動小数点数
    • 各国文字
    • 各国文字編集
    • 数字編集
  • 次のデータ項目は文字フォーマットに変換されます。
    • 固定小数点数
      • COMPUTATIONAL-5 (COMP-5) バイナリ データ項目または TRUNC(BIN) コンパイラ指令でコンパイルされたバイナリ データ項目以外の固定小数点数は、次をともなう数字編集項目に移行された場合のように変換されます。
        • 数字データ項目にあるのと同程度の数の整数位置 (ただし少なくとも 1 つの整数位置をともなう (ゼロの可能性もある))、および数字データ項目と同数の小数桁位置。
        • 数字データ項目に少なくとも 1 つの小数桁位置がある場合、明示的な小数点。特殊名段落の DECIMAL-POINT IS COMMA 句は指定されていても無視されます。
        • データ項目が符号付きの場合 (つまり、データ項目の PICTURE 句に S がある場合)、先頭の '-' ピクチャ シンボル。
      • COMPUTATIONAL-5 (COMP-5) バイナリ データ項目または TRUNC(BIN) コンパイラ オプションでコンパイルされたバイナリ データ項目である固定小数点数は、上記のように変換されますが、小数桁位置の数がピクチャ文字列にある「9」シンボルの数によって次のように異なります。
        • データ項目に 1 個から 4 個の「9」ピクチャ シンボルがある場合、5 から小数位の数を引いた数。
        • データ項目に 5 個から 9 個の「9」ピクチャ シンボルがある場合、10 から小数位の数を引いた数。
        • データ項目に 10 個から 18 個の「9」ピクチャ シンボルがある場合、20 から小数位の数を引いた数。
    • 内部浮動小数点数
      • 内部浮動小数点データ項目は、それらが次のようなデータ項目に移行した場合のように変換されます。
        • COMP-1 では、PICTURE -9.9(8)E+99 をともなう外部浮動小数点データ項目
        • COMP-2 では、PICTURE -9.9(17)E+99 をともなう外部浮動小数点データ項目 (桁数のために無効)
    • 外部浮動小数点数
      • 外部浮動小数点データ項目は、精度およびスケールが同じで次をともなう別の外部浮動小数点データ項目に移行した場合のように変換されます。
        • 仮数の - 記号。
        • . PICTURE シンボルで示される実小数点。
        • 指数の + 記号。

        たとえば、PICTURE -9(4)V9(2)E-99 で定義された外部浮動小数点数項目は、PICTURE -9(4).9(2)E+99 で定義された外部浮動小数点数項目に移行した場合のように変換されます。

    • 索引データ項目
      • 索引データ項目は、それらが宣言された USAGE COMP-5 PICTURE S9(9) の場合のように変換されます。

トリミング

トリミングは、文字フォーマットへの変換後に行われます。詳細については、「付録 D - 生成された JSON データのトリミング」を参照してください。

ターゲット エンコーディングへの変換

identifier-1 が各国文字データ項目でない限り、すべての値は UTF-8 形式で表されます。identifier-1 が各国文字データ項目の場合、各国文字以外の値は各国文字のフォーマットに変換されます。

エスケープ文字

次の表に、共通文字から 2 文字のエスケープ シーケンスへの変換を示します。

注: 文字 NX'0022' (") および NX'005C' (\) はそれぞれ \" および \\ としてエスケープされます。
コーディングされた値 エスケープ シーケンス 説明
NX'0008' \b Backspace
NX'0009' \t タブ
NX'000A' \n 改行
NX'000C' \f 改ページ
NX'000D' \r キャリッジ リターン
NX'0085' \x 次の行

範囲 NX'0000'NX'001F' 内の残りの文字は、\uhhhh としてエスケープされます。ここで、h は 0 ~ F の 16 進数を表します。