Mainframe Connector では、2 つのバージョンのコピーブック パーサーがサポートされています。
- ネイティブ コピーブック パーサー: ネイティブ コピーブック パーサーは、ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。これは、パーサーの推奨バージョンです。
- レガシー コピーブック パーサー: レガシー コピーブック パーサーは、非常に限定されたコピーブック形式をサポートする古いバージョンのパーサーです。
コピーブックに基づいて、使用するパーサーを定義できます。使用するパーサーの定義の詳細については、コピーブック パーサーの定義をご覧ください。
ネイティブ コピーブック パーサー
ネイティブ コピーブック パーサーはパーサーの最新バージョンで、デフォルトで使用されます。ネイティブのコピーブック パーサーは ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。
このセクションでは、ネイティブ コピーブック パーサーでサポートされているデータ型によって実行される前処理タスクと、その使用上の制限事項を示します。
前処理
コピーブックを解析する前に、ネイティブ コピーブック パーサーはデータを前処理して、次のタスクを実行します。
- コメント行を削除します。
- 行の継続を解決します。
- 行番号の領域と列 73 の領域を空白にします。
EJECT
、SPACE
、TITLE
などのプリプロセッサ固有のステートメントを保持します。これらのフィールドは解析されますが、無視されます。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 がサポートされています。
- ダブルバイト文字セット(DBCS) フィールドの Pic G と Pic N がサポートされており、現在非推奨になった Pic T の代わりに使用する必要があります。
USAGE DISPLAY-1
を指定せずに Pic N フィールドを DBCS として使用するには、NSYMBOL
環境変数をDBCS
に設定する必要があります。デフォルトでは、NSYMBOL
はNATIONAL
に設定され、USAGE NATIONAL
はUSAGE
句がない Pic N フィールドに設定されます。NSYMBOL
はNATIONAL
またはDBCS
にのみ設定できます。 - 可変長の文字列がサポートされています。
- SIGN 句がサポートされています。
- すべてのフィールドを両端揃えにし、インデント レベルを 1 つ使用する必要があります。
- コメントがサポートされています。
日付フィールドとタイムスタンプ フィールドのサポート
Mainframe Connector は、BigQuery との間で日付とタイムスタンプのデータの移動をサポートしています。これを行うには、SUFFIX
という単語で始まる環境変数を次の形式で定義する必要があります。
SUFFIX_SUFFIX_STRING="--bqtype TYPE --format FORMAT --timezone TIMEZONE"
形式の詳細については、次のリストをご覧ください。
SUFFIX_SUFFIX_STRING
: 日付とタイムスタンプのデータの定義に使用できる環境変数。SUFFIX_STRING 名は、コピーブックでフィールド名の接尾辞として使用する場合に、日付またはタイムスタンプとして解釈される必要がある接尾辞-SUFFIX_STRING
または_SUFFIX_STRING
に対応します。SUFFIX_STRING にハイフンやアンダースコアが含まれていないことを確認します。--bqtype
: BigQuery フィールドの TYPE を定義します。サポートされている BigQuery の型はDATE
とTIMESTAMP
です。--format
: 日付またはタイムスタンプの形式を定義するパラメータ。最大で 5 つの異なる形式をカンマで区切って指定できます。 複数の形式が特定の入力と一致する可能性がある場合、最初に一致した形式が BigQuery への読み込みに使用されます。エクスポートに複数の形式が指定されている場合は、最初の形式のみが使用されます。有効な形式の詳細については、サポートされている日付とタイムスタンプの形式をご覧ください。--timezone
:TIMESTAMP
型のオプションのパラメータ。 デフォルトでは、タイムゾーンは UTC です。サポートされているタイムゾーン形式の詳細については、サポートされているタイムゾーン形式をご覧ください。--omitsuffix
(省略可): このパラメータを指定すると、BigQuery に表示されるフィールド名から-SUFFIX_STRING
または_SUFFIX_STRING
が削除されます。
SUFFIX_SUFFIX_STRING
のエイリアスを追加するには、環境変数 SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
を設定します。
例:
- 環境変数を
SUFFIX_DT8="--bqtype DATE --format yyyyMMdd"
として定義すると、-DT8
または_DT8
の接尾辞付きのフィールドは、BigQuery でDATE
型のフィールドになり、そのパターンはyyyyMMdd
になります。 - 環境変数を
SUFFIX_DT10="--bqtype DATE --format MM-dd-yyyy"
として定義すると、-DT10
または_DT10
の接尾辞付きのフィールドは、BigQuery でDATE
型のフィールドになり、そのパターンはMM-dd-yyyy
になります。 - 環境変数を
SUFFIX_DT="--bqtype DATE --format 'MM-dd-yyyy,MM/dd/yyyy'"
として定義すると、-DT
または_DT
の接尾辞付きのフィールドは、BigQuery でDATE
型のフィールドになり、そのパターンはMM-dd-yyyy
またはMM/dd/yyyy
になります。 - 2 つの環境変数を
SUFFIX_TIMESTAMP="--bqtype TIMESTAMP --format 'yyyy-MM-dd HH:mm:ss.SSSSSS' --timezone America/Los_Angeles"
とSUFFIX_TS=$SUFFIX_TIMESTAMP
として定義すると、-TIMESTAMP
、_TIMESTAMP
、-TS
、_TS
の接尾辞付きのフィールドは、BigQuery でTIMESTAMP
型フィールドになり、そのパターンはタイムゾーンAmerica/Los_Angeles
でyyyy-MM-dd HH:mm:ss.SSSSSS
になります。
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
に対応するデータに、0x0E
と 0x0F
で囲まれていない、エンコード x-IBM930 のバイト 0x43
と 0xC5
が含まれている場合、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 番目のフィールド(文字列フィールド)の長さです。次の図に示すように、レコード長に基づいて、レコードの末尾にパディングが必要になる場合があります。
Mainframe Connector は、BigQuery にデータを保存する前に、変数名から接尾辞を削除します。この例では、変数名は var
になります。
struct
フィールドを使用するには、環境変数 BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
を yes
または 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 はサポートされていません。
- コメント行はサポートされていません。
- 名前が DATE または DT で終わる長さ 10 のフィールドは日付です。これらのフィールドではデコードが異なります。
- 次の COMP フィールドのみを使用します。ALIGN と OCCURS はサポートされていません。
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- PICTURE フィールドのみを使用します。フィールド名の直後に、同じ行の PICTURE フィールドを定義します。
- すべてのフィールドを両端揃えにし、レベルを 1 つ使用する必要があります。コメントはサポートされていません。
- 1 ~ 6 列目は常に空白にします。