コピーブック パーサーのリファレンス

Mainframe Connector では、2 つのバージョンのコピーブック パーサーがサポートされています。

  • ネイティブ コピーブック パーサー: ネイティブ コピーブック パーサーは ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。これは、推奨されるバージョンのパーサーです。
  • レガシー コピーブック パーサー: レガシー コピーブック パーサーは、非常に限定されたコピーブック形式をサポートする古いバージョンのパーサーです。

使用するパーサーは、コピーブックに基づいて定義できます。使用するパーサーの定義の詳細については、コピーブック パーサーを定義するをご覧ください。

ネイティブ コピーブック パーサー

ネイティブ コピーブック パーサーはパーサーの最新バージョンであり、デフォルトで使用されます。ネイティブ コピーブック パーサーは ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。

このセクションでは、ネイティブ コピーブック パーサーによって実行される前処理タスクについて説明します。また、ネイティブ コピーブック パーサーでサポートされているデータ型と、その使用制限についても説明します。

Preprocessing

ネイティブ コピーブック パーサーは、コピーブックを解析する前にデータを前処理し、次のタスクを実行します。

  • コメント行を削除します。
  • 行の継続を解決します。
  • 行番号領域と列 73 領域を空白にします。
  • EJECTSPACETITLE などのプリプロセッサ固有のステートメントを保持します。これらのフィールドは解析されますが、無視されます。COPY REPLACING で使用できるプリプロセッサ パラメータを含むコピーブックは、ネイティブ コピーブック パーサーではサポートされていません。これらのコピーブックでは、識別子はコロンで囲まれています(:)。

サポートされているデータ型と制限事項

ネイティブ コピーブック パーサーでサポートされているデータ型と、その使用制限は次のとおりです。

  • レベル 66(ALIAS)または 77(STANDALONE)はサポートされていません。
  • PICTURE フィールドのみを使用します。次の PICTURE フィールドがサポートされています。
    • Pic A、Pic、B、Pic G(DBCS)、Pic N(national または DBCS)、Pic U(UTF8)、Pic X、ゾーン付き 10 進数(最大精度 38、最大スケール 38)
  • IBM 16 進浮動小数点(HFP)がサポートされています。
  • REDEFINES はサポートされていません。
  • 次の COMP フィールドのみを使用します。ALIGN と OCCURS はサポートされていません。
    • COMP
    • COMP4
    • BINARY
    • COMP3
    • PACKED-DECIMAL
  • DATE と TIMESTAMP がサポートされています。
  • null インジケーターがサポートされています。
  • ダブルバイト文字セット(DBCS)フィールド Pic G と Pic N がサポートされています。非推奨となった Pic T の代わりに使用する必要があります。USAGE DISPLAY-1 を指定せずに Pic N フィールドを DBCS として使用するには、NSYMBOL 環境変数を DBCS に設定する必要があります。デフォルトでは、NSYMBOLNATIONAL に設定され、USAGE NATIONALUSAGE 句のない Pic N フィールドに設定されます。NSYMBOLNATIONAL または DBCS にのみ設定できます。
  • 可変長の文字列がサポートされています。
  • SIGN 句がサポートされています。
  • すべてのフィールドを両端揃えにし、インデント レベルを 1 つ使用する必要があります。
  • コメントがサポートされています。

日付フィールドとタイムスタンプ フィールドのサポート

Mainframe Connector は、BigQuery との間で日付データとタイムスタンプ データを移動できます。これを行うには、SUFFIX という単語で始まる環境変数を次の形式で定義する必要があります。

SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"

次のリストに、この形式について詳しく説明します。

  • SUFFIX_SUFFIX_STRING: 日付とタイムスタンプ データを定義するために使用できる環境変数。SUFFIX_STRING 名は、コピーブックでフィールド名の接尾辞として使用する場合に、日付またはタイムスタンプとして解釈される必要がある接尾辞 -SUFFIX_STRING または _SUFFIX_STRING に対応します。SUFFIX_STRING にハイフンやアンダースコアが含まれていないことを確認します。
  • command: フィールドの解析に使用するデコーダを定義します。サポートされているコマンドは date-convertertimestamp-converter です。
  • --format: 日付またはタイムスタンプの形式を定義するパラメータ。最大で 5 つの異なる形式をカンマで区切って指定できます。 複数の形式が特定の入力と一致する場合は、最初に一致した形式が BigQuery への読み込みに使用されます。エクスポートに複数の形式が指定されている場合、最初の形式のみが使用されます。有効な形式の詳細については、サポートされている日付とタイムスタンプの形式をご覧ください。
  • --timezone: TIMESTAMP 型のオプションのパラメータ。 デフォルトのタイムゾーンは UTC です。サポートされているタイムゾーン形式の詳細については、サポートされているタイムゾーン形式をご覧ください。
  • --omitsuffix(省略可): このパラメータを指定すると、BigQuery に表示されるフィールド名から -SUFFIX_STRING または _SUFFIX_STRING が削除されます。

SUFFIX_SUFFIX_STRING のエイリアスを追加するには、環境変数 SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING を設定します。

例:

  • 環境変数を SUFFIX_DT8="date-converter --format yyyyMMdd" として定義すると、-DT8 または _DT8 の接尾辞付きのフィールドは、BigQuery で DATE 型のフィールドになり、そのパターンは yyyyMMdd になります。
  • 環境変数を SUFFIX_DT10="date-converter --format MM-dd-yyyy" として定義すると、-DT10 または _DT10 の接尾辞付きのフィールドは、BigQuery で DATE 型のフィールドになり、そのパターンは MM-dd-yyyy になります。
  • 環境変数を SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'" として定義すると、-DT または _DT の接尾辞付きのフィールドは、BigQuery で DATE 型のフィールドになり、そのパターンは MM-dd-yyyy または MM/dd/yyyy になります。
  • 2 つの環境変数を SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"SUFFIX_TS=$SUFFIX_TIMESTAMP として定義すると、-TIMESTAMP_TIMESTAMP-TS_TS の接尾辞付きのフィールドは、BigQuery で TIMESTAMP 型フィールドになり、そのパターンはタイムゾーン America/New_Yorkyyyy-MM-dd HH:mm:ss.SSSSSS になります。

null インジケーターのサポート

Mainframe Connector は、バージョン 5.13.0 以降で null インジケーターをサポートしています。 null インジケータを使用するには、SUFFIX という単語で始まる環境変数を次の形式で定義する必要があります。

SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"

NULL_INDICATOR_NAME は、コピーブックでフィールド名の接尾辞として使用する場合に、null インジケーターとして解釈される接尾辞 -NULL_INDICATOR_NAME または _NULL_INDICATOR_NAME に対応します。

次のリストに、これらの環境変数で使用できるパラメータを示します。

  • command: 値は null-indicator にする必要があります。
  • –null-value: 値 null indicator は、参照先のフィールドが null であることを示します。--null-value の値は文字列または小数数値にする必要があります。
  • –not-null-value: (省略可)指定すると、値 null indicator は、参照先のフィールドが null ではないことを示します。このパラメータが設定されていない場合、–value-null 以外の値が使用できます。–not-null-value の値は、文字列または小数で指定する必要があります。
  • –keep: (省略可)指定すると、null-indicator フィールドは Optimized Row Columnar(ORC)ファイル形式の列として保持されます。デフォルトでは、このフィールドは ORC 形式で保持されません。
  • -force-type: (省略可)フィールドをバイトまたはバイナリとして強制的にデコードする 2 つのオプション(bytesbinary)をサポートします。バイトの場合、nullnot-null の値は HEX として表されます(例: FA3AB5)。HIGH 定数と LOW 定数は、すべての FF またはすべての 00 と同等です。バイナリの場合、値は通常の整数です。

null-indicator に参照されるフィールドがない場合、Mainframe Connector はエラー メッセージを表示し、ファイルの処理を停止します。

例:

コピーブック スニペット

10 COL1-NID1            PIC S9(4) USAGE COMP.
10 COL1                 PIC S9(6) USAGE COMP.

10 FIELD       PIC        X(10).
10 FIELD-NID2  PIC        X(1).

10 COL2       PIC        X(10).
10 COL2-NULL  PIC        X(1).

環境変数の定義

SUFFIX_NID1="null-indicator --null-value -1 --not-null-value 0"
# Copybook fields with NID1 suffix null indicator configuration.
SUFFIX_NID2="null-indicator --null-value '?'"
# Copybook fields with NID2 suffix null indicator configuration.
SUFFIX_NULL="null-indicator --null-value '?' --keep"
# Copybook fields with NULL suffix null indicator configuration.

DBCS フィールドのサポート

DBCS フィールドを使用する場合は、次の点を確認してください。

  • PIC G または Pic N DBCS フィールドを使用する場合は、gsutil cp コマンドまたは bq export コマンドを使用するときに、encoding オプションまたは ENCODING 環境変数で、次の有効なマルチバイト文字セット(MBCS)エンコードのいずれかを指定する必要があります。
    • x-IBM930
    • x-IBM933
    • x-IBM935
    • x-IBM937
    • x-IBM939
    • x-IBM942
    • x-IBM942C
    • x-IBM943
    • x-IBM943C
    • x-IBM949
    • x-IBM949C
    • x-IBM950
    • x-IBM964
    • x-IBM970
    • x-IBM1364
  • コピーブック フィールドに DBCS バイトのみが含まれ、これらのバイトがシフトアウト(0x0E)とシフトイン(0x0F)で囲まれていない場合は、これらのバイトが DBCS バイトとしてデコードされるように、フィールド名に接尾辞 _DBCS を追加する必要があります。

たとえば、コピーブック フィールド 03 FLD01 PIC N USAGE DISPLAY-1 に対応するデータに、0x0E0x0F で囲まれていない、エンコード x-IBM930 のバイト 0x430xC5 が含まれている場合、DBCS データを正しくデコードするために、コピーブック フィールドを 03 FLD01-DBCS PIC N USAGE DISPLAY-1 に名前変更する必要があります。

可変長の文字列のサポート

ネイティブ コピーブック パーサーは、次の struct フィールドをサポートしています。

  • 10 var
  • 15 var-LEN PIC 9(4) USAGE COMP
  • 15 var-TEXT PIC X(n)

struct フィールドの最初のフィールドは、2 番目のフィールド(文字列フィールド)の長さです。次の図に示すように、レコードの長さに基づいてレコードの末尾にパディングを追加しなければならない場合があります。

可変長文字列に追加されたパディング。
図 1。可変長の文字列に追加されたパディング。

Mainframe Connector は、BigQuery にデータを保存する前に変数名から接尾辞を削除します。この例では、変数名は var です。

struct フィールドを使用するには、環境変数 BQSH_FEATURE_VARIABLE_LENGTH_ENABLEDyes または true に設定します。

struct フィールドを使用する場合は、次の点に注意してください。

  • struct の最初のパラメータの接尾辞は -LEN です。別の接尾辞を使用する場合は、環境変数 BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX を、使用する接尾辞に設定する必要があります。
  • struct の 2 つ目のパラメータの接尾辞は -TEXT です。別の接尾辞を使用する場合は、環境変数 BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX を、使用する接尾辞に設定する必要があります。

サポートされていないフィールドと構造

以降のセクションでは、サポートされていないフィールドと構文について説明します。

COBOL 構文

COBOL 構文はサポートされていません。これらの構文をコピーブックで使用すると、Mainframe Connector でエラーが表示されます。

  • dataAlignedClause
  • dataBlankWhenZeroClause
  • dataCommonOwnLocalClause
  • dataIntegerStringClause
  • dataJustifiedClause
  • dataOccursClause
  • dataReceivedByClause
  • dataRecordAreaClause
  • dataRenamesClause
  • dataSignClause
  • dataSynchronizedClause
  • dataThreadLocalClause
  • dataTypeClause
  • dataTypeDefClause
  • dataUsingClause

データ型

COMP-1 や COMP-2 などの COBOL データ型がサポートされています。

レガシー コピーブック パーサー

レガシー コピーブック パーサーは、非 COBOL 機能をサポートする古いバージョンのパーサーです。DSL ベースのコピーブックを使用している場合は、ネイティブ コピーブック パーサーによりエラーが発生する可能性があるため、レガシー パーサーの方が適している可能性があります。

コピーブック DD は、次の制限付きで使用できます。

  • レベル 66(ALIAS)または 77(STANDALONE)はサポートされていません。
  • REDEFINES はサポートされていません。
  • コメント行はサポートされていません。
  • 長さが 10 で、名前が DATE または DT で終わるフィールドは日付です。これらのフィールドのデコードは異なります。
  • 次の COMP フィールドのみを使用します。ALIGN と OCCURS はサポートされていません。
    • COMP
    • COMP4
    • BINARY
    • COMP3
    • PACKED-DECIMAL
  • PICTURE フィールドのみを使用します。PICTURE フィールドは、フィールド名の直後に同じ行に定義します。
  • すべてのフィールドを両端揃えにし、レベルを 1 つ使用する必要があります。コメントはサポートされていません。
  • 列 1 ~ 6 には常に空白を入力してください。