本页面介绍了 Mainframe Connector 支持的所有数据类型。
通用字段修饰符
所有大小的基本 COBOL 字段都支持以下通用转码器字段修饰符(使用 defaults、field_suffixes 或 field_overrides 进行配置):
null_if:根据指示器字段的值对NULL进行解码或编码。null_if_empty:如果字段中的所有字节均为0x00(低值),则解码为NULL;将NULL编码为0x00字节。decode_as_null:如果所有字节都与配置的hex_bytes值(例如,EBCDIC 空格为"40",低值为"00",高值为"FF")匹配,或者解码后的值与values列表匹配,则解码为NULL。encode_null_as:将NULL编码为重复的hex_byte或特定的默认value。null_if_invalid:将无效字段数据解码为NULL,而不是将 遭拒记录发送到溢出数据集。bytes:替换该字段,以在不进行字符解码的情况下读取和写入原始BYTES。filler:从解码后的输出架构中排除该字段,并在编码期间用hex_byte(默认0x40)填充该字段 。chain:按顺序应用多个字段修饰符。
COBOL 数据类型映射表
| COBOL 用法类型 | 其他受支持的字段修饰符 | Copybook 或修饰符条件 | 逻辑类型 | ORC 类型 | BigQuery 数据类型 |
|---|---|---|---|---|---|
COMP-1,COMP-2( COMPUTATIONAL-1,COMPUTATIONAL-2)
|
hfp |
COMP-1(4 字节单精度)或 COMP-2(8 字节双精度),不带 PICTURE 子句,或任何带有 hfp 修饰符的 4 字节或 8 字节字段。 |
Double |
double |
FLOAT64 |
BINARY、COMP、COMPUTATIONAL、COMP-4、COMP-5(有符号) |
binaryformat_date
|
二进制字段的默认值,或 binary.signedness 设置为 SIGNED 时的默认值。按精度划分的字节大小 ( p):
binary 修饰符的 1、2、4 或 8 字节字段。)
|
Long |
bigint |
INT64 |
BINARY、COMP、COMPUTATIONAL、COMP-4、COMP-5(无符号) |
binaryformat_date
|
应用 binary 修饰符,并将 signedness 设置为 UNSIGNED。 |
Long |
bigint |
INT64 |
DISPLAY(或任何大小的字段,以原始字节表示) |
bytes |
任何具有静态字节大小且应用了 bytes 字段修饰符(通过 field_overrides、field_suffixes 或 defaults)的字段。 |
Bytes |
binary |
BYTES |
DISPLAY(或整数 Long 字段)作为日期 |
format_datestring
|
字符串字段(DISPLAY、DISPLAY-1、NATIONAL、UTF-8)或整数字段(Long 逻辑类型),带有 format_date 修饰符和与字段的字符长度(对于字符串)或数字精度(对于整数)匹配的格式条目。 |
Date |
date |
DATE |
DISPLAY(字符串)作为时间戳 |
format_timestampstring
|
具有 format_timestamp 修饰符且格式条目与字段字节大小匹配的字符串字段。 |
Timestamp |
timestamp |
TIMESTAMP |
DISPLAY (*)(字母数字) |
string |
USAGE DISPLAY(或省略的 USAGE)与字母数字、字母或字母数字编辑的 PICTURE(X、A、B、0、/)搭配使用。
|
String |
string |
STRING |
DISPLAY-1 (DBCS) |
string |
将 USAGE DISPLAY-1 替换为 PIC G(可选择搭配 B)或 PIC N。每个符号占用 2 个字节。 |
String |
string |
STRING |
NATIONAL |
string |
USAGE NATIONAL 替换为 PIC N(或省略 USAGE 替换为 PIC N)。每个符号占用 2 个字节。 |
String |
string |
STRING |
UTF-8 |
string |
将 USAGE UTF-8 替换为 PIC U(或将省略的 USAGE 替换为 PIC U)。 |
String |
string |
STRING |
DISPLAY (GROUP)(可变长度字符串) |
varlen |
一个包含两个子字段且带有 varlen 修饰符的组字段:
|
String |
string |
STRING |
PACKED-DECIMAL( COMP-3,COMPUTATIONAL-3)
|
packed_decimalformat_date(当 Long 时)
|
precision ≤ 18 和 scale = 0(或 packed_decimal.logical_type 设置为 LONG)
|
Long |
bigint |
INT64 |
PACKED-DECIMAL( COMP-3,COMPUTATIONAL-3)
|
packed_decimal |
precision ≤ 18 和 scale > 0(或 packed_decimal.logical_type 设置为 DECIMAL64)
|
Decimal64 |
decimal(p, s) |
NUMERIC |
PACKED-DECIMAL( COMP-3,COMPUTATIONAL-3)
|
packed_decimal |
19 ≤ precision ≤ 38 和 scale = 0(或 packed_decimal.logical_type 设置为 BIG_INTEGER)
|
BigInteger |
decimal(38, 0) |
|
PACKED-DECIMAL( COMP-3,COMPUTATIONAL-3)
|
packed_decimal |
19 ≤ precision ≤ 38 和 scale > 0(或 packed_decimal.logical_type 设置为 BIG_DECIMAL)
|
BigDecimal |
decimal(p, s) |
|
ZONED( DISPLAY,数字 PICTURE)
|
zoned_decimalformat_date
|
precision ≤ 18 和 scale = 0(或 zoned_decimal.logical_type 设置为 LONG)
|
Long |
bigint |
INT64 |
ZONED( DISPLAY,数字 PICTURE)
|
zoned_decimal |
precision ≤ 18 和 scale > 0(或 zoned_decimal.logical_type 设置为 DECIMAL64)
|
Decimal64 |
decimal(p, s) |
NUMERIC |
ZONED( DISPLAY,数字 PICTURE)
|
zoned_decimal |
19 ≤ precision ≤ 38 和 scale = 0(或 zoned_decimal.logical_type 设置为 BIG_INTEGER)
|
BigInteger |
decimal(38, 0) |
|
ZONED( DISPLAY,数字 PICTURE)
|
zoned_decimal |
19 ≤ precision ≤ 38 和 scale > 0(或 zoned_decimal.logical_type 设置为 BIG_DECIMAL)
|
BigDecimal |
decimal(p, s) |
|