您可以在 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 |
指定記錄的篩選條件。 篩選條件是以部分一般運算語言 (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 |
十六進位浮點數 (COMP-1、COMP-2) 欄位的預設值。 |
national |
指定全國 (PIC N) 欄位的預設值。 |
numeric_display |
指定數值顯示 (分區十進位) 欄位的預設值。 |
packed_decimal |
為封裝十進位 (COMP-3) 欄位指定預設值。 |
utf8 |
指定 UTF-8 (PIC U) 欄位的預設值。 |
FieldModifier
欄位修飾符可讓您修改特定欄位的編碼或解碼。 請注意,並非所有修飾符都能套用至所有欄位。 詳情請參閱特定修飾符的說明文件。
| JSON 表示法 |
|---|
{ "binary": object ( |
| 欄位 | |
|---|---|
binary |
覆寫二進位數字欄位的預設設定。 |
bytes |
將欄位視為原始位元組序列,忽略先前的類型資訊。 |
chain |
鏈結多個修飾符,依序套用。 |
decode_as_null |
定義空值的解碼方式。 |
encode_null_as |
定義空值的編碼方式。 |
filler |
排除處理和輸出作業中的欄位。 |
format_date |
將字串欄位格式設為日期。 |
format_timestamp |
將字串欄位格式化為時間戳記。 |
hfp |
將欄位解讀為十六進位浮點數 (HFP)。 |
null_if |
根據另一個欄位的值,有條件地將欄位設為空值。 |
null_if_empty |
如果欄位內容視為空白,則將欄位設為空值。 |
null_if_invalid |
如果發生轉碼錯誤,系統會將欄位設為空值,避免記錄溢位。 |
packed_decimal |
覆寫封裝十進位欄位的預設設定。 |
string |
覆寫字串欄位的預設設定。 |
varlen |
將記錄設為變數長度欄位。 |
zoned_decimal |
覆寫分區十進位欄位的預設設定。 |
二進位檔
忽略先前的任何修飾符,並將這個欄位視為二進位數字。
| JSON 表示法 |
|---|
{ "signedness": enum ( |
| 欄位 | |
|---|---|
signedness |
數字的帶正負號狀態。 |
位元組數
將欄位視為原始位元組序列。 這個修飾符會覆寫任何先前的型別資訊,導致欄位的原始位元組資料會原封不動地保留,不會經過特定字元編碼或數值解譯。 無論原始類型或大小為何,您都可以將這個修飾符套用至任何欄位。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
DecodeAsNull
定義在解碼過程中如何解讀空值。 由於 COBOL 本身不支援空值,這個參數會指定必須視為空值的值。
| JSON 表示法 |
|---|
{ "hex_bytes": string, "values": string |
| 欄位 | |
|---|---|
hex_bytes |
單一位元組的十六進位表示法清單。
如果欄位包含重複的任何位元組,系統會將其視為空值。
舉例來說,所有高點都使用 |
values |
字串表示法清單。將欄位初步解碼為字串形式後,如果欄位內容符合任何這些值,系統就會將其視為空值。 |
EncodeNullAs
定義編碼程序期間的空值表示方式。
| JSON 表示法 |
|---|
{ "hex_byte": string, "value": string |
| 欄位 | |
|---|---|
hex_byte |
如果來源值為空值,請對這個特定位元組序列 (以十六進位字串表示) 進行編碼。舉例來說,雙位元組欄位的 |
value |
如果來源值為空值,請將這個特定值編碼。 確認字串符合欄位類型。 |
填補
指定在處理期間要忽略的欄位。 系統不會從輸入內容解碼該欄位,也不會將該欄位編碼至輸出內容,且在解碼期間,該欄位會從產生的結構定義和資料表中排除。 您可以將這個修飾符套用至任何具有靜態已知大小的欄位。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
FormatDate
使用其中一種支援的格式,將字串或數字欄位格式設為日期。 您只能將這個修飾符套用至已設定大小的欄位。 如果是數值欄位,系統會先動態轉換為字串表示法 (不含任何符號標記),再進行格式化。系統會假設日期值為正數;不支援負數日期,且無法剖析這類日期。 在解碼過程中,系統會依序測試格式,直到其中一種格式與字串相符為止。 在編碼過程中,系統會使用第一個格式,並忽略其餘格式。
| JSON 表示法 |
|---|
{ "formats": object ( |
| 欄位 | |
|---|---|
formats |
日期格式清單。 |
DateTimeFormat
將欄位轉換為日期時要使用的大小和模式。
| JSON 表示法 |
|---|
{ "pattern": string, "size": int |
| 欄位 | |
|---|---|
pattern |
指定日期格式化程式模式。 如要進一步瞭解有效的格式化工具模式,請參閱「Class DateTimeFormatter」。 |
size |
指定要套用此模式的欄位大小。 |
FormatTimestamp
使用其中一種提供的格式,將字串格式化為時間戳記。 這項功能僅適用於已調整大小的欄位。 解碼期間,系統會依序測試格式,直到其中一種格式與字串相符為止。 編碼時,系統會使用第一個格式,並忽略其餘格式。
| JSON 表示法 |
|---|
{ "formats": object ( |
| 欄位 | |
|---|---|
formats |
時間戳記格式清單。 |
HFP
將這個欄位設為十六進位浮點數。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
ModifierChain
指定修飾符鏈結,依序套用多個修飾符。系統會按照指定順序套用修飾符。
| JSON 表示法 |
|---|
{ "modifiers": object ( |
| 欄位 | |
|---|---|
modifiers |
指定要套用的修飾符清單。 |
NullIf
如果符合條件,請將欄位設為空值。您必須指定 null_value 或 non_null_value,或同時指定兩者。
如要建立空值指標欄位,可以使用含有 null_if 欄位修飾符的 FieldSuffix,並將 is_inverse 設為 true,如下列範例所示:
範例:空值指標
如要建立空值指標欄位,可以使用null_if 欄位修飾符,如下所示:
{
"field_suffixes": [
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "?",
"target_field": "$self"
}
}
}
]
}
NID 後置字元的欄位,都會成為有效的空值指標,如下列副本程式碼片段所示:01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
範例:二進位空值指標
如要建立binary 空值指標欄位,可以使用 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 空值指標。範例:位元組空值指標
如要建立bytes 空值指標欄位,可以使用 bytes 和 null_if 欄位修飾符,如下所示。空值和非空值的值會以 HEX 表示。
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"bytes": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "FF",
"target_field": "$self"
}
}
}
]
}
NID 後置字元的欄位,都能有效成為 bytes 空值指標,並使用先前範例中的相同副本。
| 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,則欄位應設為空值。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
NullIfInvalid
如果轉碼失敗,請將值視為空值。
您只能將這個修飾符套用至已設定大小的欄位。
根據預設,如果欄位無法解碼,系統會將整筆記錄移至溢位 (錯誤) 資料集,並從輸出內容中排除,其餘載入作業則會以有效記錄完成。
設定 null_if_invalid 修飾符時,Mainframe Connector 會保留無效記錄,並將這個欄位設為空值。
只有在您想保留這類含有空值的資料列時才使用,而不是為了讓載入作業成功,因為預設會略過錯誤的記錄。
系統會忽略這項錯誤,且不會記錄在溢位資料集中。
在解碼過程中,這項記錄的欄位值會為空值。
在編碼過程中,如果無法寫入資料,整個欄位都會填入空值位元組。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
PackedDecimal
將這個欄位設為 PackedDecimal。
| JSON 表示法 |
|---|
{ "logical_type": enum ( |
| 欄位 | |
|---|---|
logical_type |
覆寫邏輯型別。 根據預設,Mainframe Connector 會根據精確度和比例,使用最佳邏輯型別。 |
negative_sign_nibble |
指定用於負號的半位元。 x'B' 和 x'D' 都是有效的負號,但某些大型主機系統或應用程式可能需要其中一個。 |
字串
設定與字串解碼和編碼相關的各種選項。 只能套用至字串欄位。
| JSON 表示法 |
|---|
{ "encoding": string, "pad_char": string, "trim_suffix": boolean |
| 欄位 | |
|---|---|
encoding |
欄位的編碼方式。 |
pad_char |
使用 |
trim_suffix |
設為 true 時,字串結尾的所有空白字元都會遭到修剪。 trim_suffix 只會影響解碼,編碼會忽略 trim_suffix。 請注意,如果字串只包含空白字元,就會變成空字串。 |
VarLen
代表可變長度欄位。
可變長度欄位包含三個部分:
- 包含兩個子欄位的群組項目。
- 群組項目中的欄位,內含交易資料的長度。
- 群組項目中包含資料的欄位。
可變長度欄位的名稱會是群組名稱。
提供空白的 JSON 物件,如下所示:
| JSON 表示法 |
|---|
{ |
ZonedDecimal
設定與分區十進位編碼和解碼相關的各種選項。 您只能在十進位欄位套用這項修飾符。
| 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 |
指定修飾符是否為「反向」欄位修飾符。
反向欄位修飾符會將修飾符套用至另一個欄位,該欄位與具有修飾符的欄位同名,但沒有修飾符。舉例來說,如果同一筆記錄中同時存在 使用反向欄位修飾符時,只要傳統上可使用欄位名稱參照帶有後置字元的欄位,即可使用特殊識別碼 舉例來說,如要建立空值指標欄位,您可以使用 |
modifier |
指定要套用至相符欄位的修飾符。 |
suffix |
系統會對含有這個後置字元的欄位套用修飾符。 |
轉換
檢視轉換作業可用於修改資料表與 QSAM 檔案之間的關係。 轉換一律從資料的角度來表達。 這個概念與 BigQuery 中的檢視表類似。
| JSON 表示法 |
|---|
{ "exclude": object ( |
| 欄位 | |
|---|---|
exclude |
|
move |
|
rename |
|
split |
|
target_table |
選用。指定要套用轉換的目標資料表 (檢視) 名稱。 根據預設,轉換會套用至主表格 ( 注意:分割轉換本身無法成為目標,如果設定 |
unnest |
|
排除
從產生的表格中排除欄位,但仍會進行解碼或編碼。 如果欄位不需要轉移至資料表,但轉碼時必須使用,這就非常實用。 舉例來說,表格可以省略空值指標或長度欄位。
如要完全略過轉碼程序,請套用填補修飾符。
| JSON 表示法 |
|---|
{ "field": string |
| 欄位 | |
|---|---|
field |
指定要排除的欄位。 |
移動
移動記錄中的欄位。
| JSON 表示法 |
|---|
{ "field": string, "offset": int |
| 欄位 | |
|---|---|
field |
指定要移動的欄位。 |
offset |
指定欄位要向前或向後移動的位數。 |
重新命名
根據規則運算式比對結果,重新命名一或多個欄位。
舉例來說,如要將所有連字號替換為底線,請使用下列 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 |
指定要當做主鍵的欄位名稱。 |
拆分
取消巢狀結構欄位。
| JSON 表示法 |
|---|
{ "field": string, "format": string |
| 欄位 | |
|---|---|
field |
指定要取消巢狀結構的欄位 |
format |
指定新的欄位格式。
如為未巢狀結構體, 對於未巢狀化的陣列和清單, |
列舉
BinarySignedness
| 列舉 | |
|---|---|
SIGNED |
二進位數字帶有正負號。 |
UNSIGNED |
二進位數字為無符號。 |
UNSPECIFIED |
請嘗試從現有鏈結推斷簽署狀態。 |
DecimalLogicalType
用於十進位欄位的邏輯類型。
| 列舉 | |
|---|---|
AUTO |
根據比例和精確度,使用最合適的型別。 |
BIG_DECIMAL |
將值儲存為無限制的小數值。這是最慢的選項,但支援任何精確度的任何小數。 |
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
指定解碼或編碼分區十進位欄位時要使用的編碼。
| 列舉 | |
|---|---|
ASCII |
使用 ASCII 編碼。 |
EBCDIC |
使用 EBCDIC 編碼。 |
UNSPECIFIED |
保留修飾符鏈中指定的編碼方式。
如未指定修飾符,則會使用 EBCDIC。 |