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