Mainframe Connector では、2 つのバージョンのコピーブック パーサーがサポートされています。
- ネイティブ コピーブック パーサー: ネイティブ コピーブック パーサーは ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。これは、推奨されるバージョンのパーサーです。
- レガシー コピーブック パーサー: レガシー コピーブック パーサーは、非常に限定されたコピーブック形式をサポートする古いバージョンのパーサーです。
使用するパーサーは、コピーブックに基づいて定義できます。使用するパーサーの定義の詳細については、コピーブック パーサーを定義するをご覧ください。
ネイティブ コピーブック パーサー
ネイティブ コピーブック パーサーはパーサーの最新バージョンであり、デフォルトで使用されます。ネイティブ コピーブック パーサーは ANTLR4 ベースのパーサーを実装し、COBOL コピーブックをサポートします。
このセクションでは、ネイティブ コピーブック パーサーによって実行される前処理タスクについて説明します。また、ネイティブ コピーブック パーサーでサポートされているデータ型と、その使用制限についても説明します。
Preprocessing
ネイティブ コピーブック パーサーは、コピーブックを解析する前にデータを前処理し、次のタスクを実行します。
- コメント行を削除します。
- 行の継続を解決します。
- 行番号領域と列 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 がサポートされています。
- null インジケーターがサポートされています。
- ダブルバイト文字セット(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="command --format FORMAT --timezone TIMEZONE"
次のリストに、この形式について詳しく説明します。
SUFFIX_SUFFIX_STRING
: 日付とタイムスタンプ データを定義するために使用できる環境変数。SUFFIX_STRING 名は、コピーブックでフィールド名の接尾辞として使用する場合に、日付またはタイムスタンプとして解釈される必要がある接尾辞-SUFFIX_STRING
または_SUFFIX_STRING
に対応します。SUFFIX_STRING にハイフンやアンダースコアが含まれていないことを確認します。command
: フィールドの解析に使用するデコーダを定義します。サポートされているコマンドはdate-converter
とtimestamp-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_York
でyyyy-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 つのオプション(bytes
とbinary
)をサポートします。バイトの場合、null
とnot-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
に対応するデータに、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 はサポートされていません。
- コメント行はサポートされていません。
- 長さが 10 で、名前が DATE または DT で終わるフィールドは日付です。これらのフィールドのデコードは異なります。
- 次の COMP フィールドのみを使用します。ALIGN と OCCURS はサポートされていません。
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- PICTURE フィールドのみを使用します。PICTURE フィールドは、フィールド名の直後に同じ行に定義します。
- すべてのフィールドを両端揃えにし、レベルを 1 つ使用する必要があります。コメントはサポートされていません。
- 列 1 ~ 6 には常に空白を入力してください。