JSON ファイルに必要な構成を追加することで、Mainframe Connector トランスコーダを構成できます。このファイルは、トランスコーダ構成ファイルと呼ばれます。構成セクションで指定されているように構成を定義する必要があります。qsam encode コマンドと qsam decode コマンドは、トランスコーダー構成ファイルを使用してデータ トランスコーディングを実行します。
このページでは、Mainframe Connector トランスコーダを構成するさまざまな方法について説明します。
構成
Configuration オブジェクトは、トランスコーダー構成のルートです。これには、トランスコーダのすべての構成オプションが含まれています。
| JSON 表現 |
|---|
{ "defaults": object ( |
| フィールド | |
|---|---|
defaults |
Cobol アーキタイプのデフォルトのフィールド修飾子を指定します。 |
field_overrides |
フィールドのオーバーライドを指定します。 |
field_suffixes |
フィールドの接尾辞を指定します。 |
header_records_to_skip |
スキップする最初のレコードの数を指定します。 |
record_filter_condition |
レコードのフィルタ条件を指定します。 フィルタは Common Expression Language(CEL)のサブセットに基づいており、次のものをサポートしています。
例:
|
schema_validation_mode |
スキーマ検証モードを指定します。 |
transformations |
フィールド変換を指定します。 |
DefaultsSection
DefaultsSection オブジェクトを使用して、cobol 型によるデフォルトの変更を指定できます。これらは、接尾辞やオーバーライドの変更の前に適用されます。
| JSON 表現 |
|---|
{ "alpha_numeric_display": object ( |
| フィールド | |
|---|---|
alpha_numeric_display |
英数字(PIC X)フィールドのデフォルト値を指定します。 |
binary |
バイナリ数値(COMP)フィールドのデフォルトを指定します。 |
dbcs |
dbcs(DISPLAY-1)フィールドのデフォルト。 |
hexadecimal_floating_point |
16 進浮動小数点(COMP-1、COMP-2)フィールドのデフォルト。 |
national |
国別(PIC N)フィールドのデフォルトを指定します。 |
numeric_display |
数値表示(ゾーン 10 進数)フィールドのデフォルトを指定します。 |
packed_decimal |
パック 10 進数(COMP-3)フィールドのデフォルト値を指定します。 |
utf8 |
UTF-8(PIC U)フィールドのデフォルトを指定します。 |
FieldModifier
フィールド修飾子を使用すると、特定のフィールドのエンコードまたはデコードを変更できます。すべての修飾子がすべてのフィールドに適用できるわけではありません。特定の修飾子については、ドキュメントをご覧ください。
| JSON 表現 |
|---|
{ "binary": object ( |
| フィールド | |
|---|---|
binary |
バイナリ数値フィールドのデフォルト構成をオーバーライドします。 |
bytes |
フィールドをバイトの未加工のシーケンスとして扱い、事前分布の型情報を無視します。 |
chain |
複数の修飾子を連鎖させて、順番に適用します。 |
decode_as_null |
null 値のデコード方法を定義します。 |
encode_null_as |
null 値のエンコード方法を定義します。 |
filler |
フィールドを処理と出力から除外します。 |
format_date |
文字列フィールドを日付としてフォーマットします。 |
format_timestamp |
文字列フィールドをタイムスタンプとしてフォーマットします。 |
hfp |
フィールドを 16 進浮動小数点(HFP)数として解釈します。 |
null_if |
別のフィールドの値に基づいて、フィールドを条件付きで null に設定します。 |
null_if_empty |
コンテンツが空と見なされる場合、フィールドを null に設定します。 |
null_if_invalid |
トランスコーディング エラーが発生した場合は、フィールドを null に設定して、レコードのスピルオーバーを防ぎます。 |
packed_decimal |
パック 10 進数フィールドのデフォルト構成をオーバーライドします。 |
string |
文字列フィールドのデフォルト構成をオーバーライドします。 |
varlen |
レコードを可変長フィールドとして設定します。 |
zoned_decimal |
ゾーン付き 10 進数フィールドのデフォルト構成をオーバーライドします。 |
バイナリ
以前の修飾子を無視し、このフィールドをバイナリ数として扱います。
| JSON 表現 |
|---|
{ "signedness": enum ( |
| フィールド | |
|---|---|
signedness |
数値の符号付きかどうか。 |
バイト
フィールドをバイトの未加工のシーケンスとして扱います。この修飾子は、以前の型情報をオーバーライドし、特定の文字エンコードや数値解釈なしで、フィールドの未加工のバイトデータをそのまま保持します。この修飾子は、元の型やサイズに関係なく、任意のフィールドに適用できます。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
DecodeAsNull
デコード プロセスで null 値がどのように解釈されるかを定義します。COBOL は null をネイティブにサポートしていないため、このパラメータは null として扱う必要がある値を指定します。
| JSON 表現 |
|---|
{ "hex_bytes": string, "values": string |
| フィールド | |
|---|---|
hex_bytes |
1 バイトの 16 進数表現のリスト。フィールドにこれらのバイトのいずれかが含まれている場合、null として扱われます。たとえば、すべての高値に |
values |
文字列表現のリスト。フィールドを文字列形式にデコードした後、フィールドの内容がこれらの値のいずれかと一致する場合、null として扱われます。 |
EncodeNullAs
エンコード プロセスで null 値をどのように表現するかを定義します。
| JSON 表現 |
|---|
{ "hex_byte": string, "value": string |
| フィールド | |
|---|---|
hex_byte |
ソース値が null の場合は、この特定のバイト シーケンス(16 進数文字列で表される)をエンコードします。たとえば、2 バイトのフィールドの |
value |
ソース値が null の場合は、この特定の値がエンコードされます。文字列がフィールドの型に対して有効であることを確認します。 |
フィラー
処理中にフィールドが無視されることを指定します。このフィールドは入力からデコードされず、出力にエンコードされません。また、デコード時に結果のスキーマとデータテーブルから除外されます。この修飾子は、静的で既知のサイズを持つ任意のフィールドに適用できます。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
FormatDate
サポートされている形式のいずれかを使用して、文字列フィールドまたは数値フィールドを日付形式に設定します。この修飾子は、サイズ指定されたフィールドにのみ適用できます。数値フィールドの場合、書式設定の前に、動的に文字列表現に変換されます(符号マーカーは除きます)。日付値は正の値と想定されます。負の数値の日付は対象外であり、解析に失敗します。デコード プロセスでは、いずれかの形式が文字列と一致するまで、形式が順番にテストされます。エンコード プロセスでは、最初の形式が使用され、残りは無視されます。
| JSON 表現 |
|---|
{ "formats": object ( |
| フィールド | |
|---|---|
formats |
日付形式のリスト。 |
DateTimeFormat
フィールドを日付に変換する際に使用するサイズとパターン。
| JSON 表現 |
|---|
{ "pattern": string, "size": int |
| フィールド | |
|---|---|
pattern |
日付フォーマッタ パターンを指定します。有効なフォーマッタ パターンの詳細については、クラス DateTimeFormatter をご覧ください。 |
size |
このパターンが適用されるフィールドのサイズを指定します。 |
FormatTimestamp
指定された形式のいずれかを使用して、文字列をタイムスタンプにフォーマットします。これは、サイズ設定されたフィールドにのみ適用できます。デコード中、形式は、いずれかの形式が文字列と一致するまで順番にテストされます。エンコード時には、最初の形式が使用され、残りは無視されます。
| JSON 表現 |
|---|
{ "formats": object ( |
| フィールド | |
|---|---|
formats |
タイムスタンプ形式のリスト。 |
HFP
このフィールドを 16 進浮動小数点として設定します。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
ModifierChain
修飾子チェーンを指定して、複数の修飾子を連続して適用します。修飾子は、指定された順序で適用されます。
| JSON 表現 |
|---|
{ "modifiers": object ( |
| フィールド | |
|---|---|
modifiers |
適用する修飾子のリストを指定します。 |
NullIf
条件が満たされた場合にフィールドを null に設定します。null_value、non_null_value、またはその両方を指定する必要があります。
null インジケーター フィールドを作成するには、次の例に示すように、null_if フィールド修飾子を使用して FieldSuffix を使用し、is_inverse を true に設定します。
例: Null-indicator
null インジケータ フィールドを作成するには、次のようにnull_if フィールド修飾子を使用します。
{
"field_suffixes": [
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "?",
"target_field": "$self"
}
}
}
]
}
NID を持つすべてのフィールドが実質的に null インジケーターになります。01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
例: バイナリ null 指標
binary null インジケータ フィールドを作成するには、次のように binary と null_if フィールド修飾子を使用します。
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"binary": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "15",
"target_field": "$self"
}
}
}
]
}
NID を持つすべてのフィールドが、前の例と同じコピーブックを使用して、実質的に binary null インジケーターになります。例: バイトの null インジケーター
bytes null インジケーター フィールドを作成するには、次のように bytes と null_if のフィールド修飾子を使用します。null と null 以外の値は HEX として表されます。
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"bytes": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "FF",
"target_field": "$self"
}
}
}
]
}
NID を持つすべてのフィールドが、前の例と同じコピーブックを使用して bytes null インジケーターとして機能します。
| JSON 表現 |
|---|
{ "non_null_value": string, "non_null_values": string, "null_value": string, "null_values": string, "target_field": string |
| フィールド | |
|---|---|
non_null_value |
指定された場合、 |
non_null_values |
指定された場合、 |
null_value |
指定された場合、 |
null_values |
指定された場合、 |
target_field |
値を確認するフィールドを指定します。フィールドはスコープ内にある必要があります。ネストされたフィールドにアクセスするには、ドット表記(「GROUP.FIELD」など)を使用します。 |
NullIfEmpty
フィールド内のすべてのバイトが 0 の場合、フィールドは null に設定する必要があります。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
NullIfInvalid
トランスコードに失敗した場合は、値を null として扱います。この修飾子は、サイズ指定されたフィールドにのみ適用できます。デフォルトでは、フィールドのデコードに失敗すると、レコード全体がスピルオーバー(エラー)データセットに移動され、出力から除外されます。残りの読み込みは有効なレコードで完了します。null_if_invalid 修飾子を設定すると、Mainframe Connector は無効なレコードを保持し、このフィールドを null に設定します。このオプションは、null 値を含む行を保持する場合にのみ使用してください。デフォルトでは不良レコードはスキップされるため、読み込みを成功させるためだけに使用しないでください。エラーは無視され、スピルオーバー データセットに記録されません。デコード プロセス中、このレコードのこのフィールドの値は null になります。エンコード プロセス中にデータを書き込めない場合、フィールド全体が null バイトで埋められます。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
PackedDecimal
このフィールドを PackedDecimal に設定します。
| JSON 表現 |
|---|
{ "logical_type": enum ( |
| フィールド | |
|---|---|
logical_type |
論理型をオーバーライドします。デフォルトでは、メインフレーム コネクタは精度とスケールに基づいて最適な論理型を使用します。 |
negative_sign_nibble |
負の符号に使用するニブルを指定します。x'B' と x'D' はどちらも有効な負の符号ですが、メインフレーム システムやアプリケーションによっては、どちらか一方を必要とする規則がある場合があります。 |
文字列
文字列のデコードとエンコードに関連するさまざまなオプションを設定します。文字列フィールドにのみ適用できます。
| JSON 表現 |
|---|
{ "encoding": string, "pad_char": string, "trim_suffix": boolean |
| フィールド | |
|---|---|
encoding |
フィールドがエンコードされるエンコード。 |
pad_char |
|
trim_suffix |
true に設定すると、文字列の末尾にある空白が切り捨てられます。trim_suffix はデコードにのみ影響し、エンコードでは無視されます。空白文字のみで構成される文字列は空の文字列になります。 |
VarLen
可変長フィールドを表します。
可変長フィールドは次の 3 つの部分で構成されます。
- 2 つのサブフィールドを含むグループ項目。
- トランザクション データの長さを含むグループ アイテム内のフィールド。
- データを含むグループ アイテム内のフィールド。
可変長フィールドの名前はグループ名になります。
次のように空の JSON オブジェクトを指定します。
| JSON 表現 |
|---|
{ |
ZonedDecimal
ゾーン 10 進数のエンコードとデコードに関連するさまざまなオプションを設定します。この修飾子は、小数フィールドにのみ適用できます。
| JSON 表現 |
|---|
{ "encoding": enum ( |
| フィールド | |
|---|---|
encoding |
フィールドがエンコードされるエンコード。 |
logical_type |
フィールドのデコードまたはエンコード時に使用する論理型を指定します。 |
FieldOverride
指定されたフィールドのデコード チェーンとエンコード チェーンをオーバーライドまたは変更します。
| JSON 表現 |
|---|
{ "field": string, "modifier": object ( |
| フィールド | |
|---|---|
field |
修飾子を適用するフィールドの名前を指定します。 |
modifier |
一致するフィールドに適用する修飾子を指定します。 |
FieldSuffix
フィールド接尾辞は、接尾辞を持つすべてのフィールドに適用されます。
フィールドは、末尾がハイフン(-)またはアンダースコア(_)で、その後に接尾辞が続く場合に一致します。
接尾辞では大文字と小文字が区別されません。
FieldSuffix 修飾子は、FieldOverride 修飾子の後に適用されます。
たとえば、接尾辞 NID に定義された修飾子は、FLD-NID という名前のフィールドに適用されますが、FUNID という名前のフィールドには適用されません。
| JSON 表現 |
|---|
{ "is_inverse": boolean, "modifier": object ( |
| フィールド | |
|---|---|
is_inverse |
修飾子が逆フィールド修飾子かどうかを指定します。逆フィールド修飾子は、修飾子なしのフィールドと同じ名前の別のフィールドに修飾子を適用します。たとえば、同じレコードに 逆フィールド修飾子を使用する場合、フィールド名を使用してサフィックス付きのフィールドを参照できるときはいつでも、特別な識別子 たとえば、null インジケーター フィールドを作成するには、 |
modifier |
一致するフィールドに適用する修飾子を指定します。 |
suffix |
この接尾辞が付いたフィールドには、修飾子が適用されます。 |
変換
ビュー変換は、テーブルと QSAM ファイルの関係を変更するために使用されます。変換は常にデータの視点から表現されます。このコンセプトは、BigQuery のビューテーブルに似ています。
| JSON 表現 |
|---|
{ "exclude": object ( |
| フィールド | |
|---|---|
exclude |
|
move |
|
rename |
|
split |
|
target_table |
省略可。変換を適用するターゲット テーブル(ビュー)の名前を指定します。 デフォルトでは、変換はメインテーブル( 注: 分割変換自体はターゲットにできません。 |
unnest |
|
除外
結果のテーブルからフィールドを除外しますが、デコードまたはエンコードは行います。これは、フィールドをテーブルに転送する必要はないが、トランスコードには必要である場合に便利です。たとえば、null インジケーターや長さフィールドをテーブルから省略できます。
トランスコードを完全にバイパスするには、フィラー修飾子を適用します。
| JSON 表現 |
|---|
{ "field": string |
| フィールド | |
|---|---|
field |
除外するフィールドを指定します。 |
移動
レコード内のフィールドを移動します。
| JSON 表現 |
|---|
{ "field": string, "offset": int |
| フィールド | |
|---|---|
field |
移動するフィールドを指定します。 |
offset |
フィールドを移動する場所の数を前方または後方に指定します。 |
名前を変更
正規表現の一致に基づいて 1 つ以上のフィールドの名前を変更します。
たとえば、すべてのハイフンをアンダースコアに置き換えるには、次の JSON 形式を使用します。
{"find": "\\-", "replace":"_"}。
| JSON 表現 |
|---|
{ "find": string, "replace": string |
| フィールド | |
|---|---|
find |
名前を変更するフィールドを識別する Java 正規表現パターンを指定します。 パターンは完全なフィールド名と照合されます。パターンがフィールド名の一部と一致する場合、フィールドは一致と見なされます。 例:
|
replace |
一致したフィールドの新しい名前を指定します。
例:
|
分割
| JSON 表現 |
|---|
{ "field": string, "foreign_key": string, "primary_key": string |
| フィールド | |
|---|---|
field |
分割するフィールドを指定します。 |
foreign_key |
新しいスキーマに追加されるフィールドの名前を指定します。このフィールドに主キーの値が格納されます。指定しない場合、主キー名が使用されます。 |
primary_key |
主キーとして使用するフィールド名を指定します。 |
Unnest
フィールドのネストを解除します。
| JSON 表現 |
|---|
{ "field": string, "format": string |
| フィールド | |
|---|---|
field |
ネスト解除するフィールドを指定する |
format |
新しいフィールド形式を指定します。
ネストされていない構造体の場合、 ネストされていない配列とリストの場合、 |
列挙型
BinarySignedness
| 列挙型 | |
|---|---|
SIGNED |
2 進数は符号付きです。 |
UNSIGNED |
2 進数は符号なしです。 |
UNSPECIFIED |
終了チェーンから符号付きかどうかを推測しようとします。 |
DecimalLogicalType
10 進数フィールドに使用する論理型。
| 列挙型 | |
|---|---|
AUTO |
スケールと精度に基づいて最適なタイプを使用します。 |
BIG_DECIMAL |
値は上限のない小数値として保存します。これは最も遅いオプションですが、任意の精度で任意のスケールの任意の 10 進数をサポートします。 |
BIG_INTEGER |
値を無制限の整数値として保存します。これは最も遅いオプションですが、任意の精度の任意の整数をサポートします。 |
DECIMAL64 |
値を保存するには 64 ビットを使用します。この修飾子は、精度が 18 以下の数値に対してのみ機能します。 |
LONG |
値を保存するには 64 ビットを使用します。この修飾子は、精度が 18 以下でスケールが 0 の数値に対してのみ機能します。 |
PackedDecimalNegativeNibble
| 列挙型 | |
|---|---|
NIBBLE_B |
デフォルトでは x'B' が使用されます。 |
NIBBLE_D |
負の符号ニブルには x'D' を使用します。 |
SchemaValidationMode
コピーブックのコンパイル時に使用するスキーマ検証モードを指定します。このモードでは、特定のターゲット データ形式との互換性が検証されます。
| 列挙型 | |
|---|---|
BIG_QUERY |
BigQuery 互換性のためのスキーマ検証モード。このモードでは、デフォルトの検証が拡張され、コピーブックのスキーマが BigQuery のデータ型と互換性があることが検証されます。 |
DEFAULT |
デフォルトのスキーマ検証モード。このモードでは、一意のフィールド名がコピーブックに含まれていることを確認します。 |
MYSQL |
MySQL 互換性のためのスキーマ検証モード。このモードでは、デフォルトの検証が拡張され、コピーブックのスキーマが MySQL データ型と互換性があることが検証されます。 |
POSTGRES |
PostgreSQL との互換性のためのスキーマ検証モード。このモードでは、デフォルトの検証が拡張され、コピーブックのスキーマが PostgreSQL データ型と互換性があることが検証されます。 |
ZonedDecimalEncoding
ゾーン付き 10 進数フィールドをデコードまたはエンコードするときに使用するエンコードを指定します。
| 列挙型 | |
|---|---|
ASCII |
ASCII エンコードを使用します。 |
EBCDIC |
EBCDIC エンコードを使用します。 |
UNSPECIFIED |
修飾子チェーンで指定されたエンコードを保持します。修飾子が指定されていない場合は、EBCDIC が使用されます。 |