트랜스코더 구성

JSON 파일에 필요한 구성을 추가하여 메인프레임 커넥터 트랜스코더를 구성할 수 있습니다. 이 파일을 트랜스코더 구성 파일이라고 합니다. 구성 섹션에 지정된 대로 구성을 정의해야 합니다. qsam encodeqsam decode 명령어는 트랜스코더 구성 파일을 사용하여 데이터 트랜스코딩을 실행합니다.

이 페이지에서는 Mainframe Connector 트랜스코더를 구성하는 다양한 방법을 설명합니다.

구성

Configuration 객체는 트랜스코더 구성의 루트입니다. 여기에는 트랜스코더의 모든 구성 옵션이 포함되어 있습니다.

JSON 표현
{
    "defaults": object (DefaultsSection),
    "field_suffixes": object (FieldSuffix),
    "field_overrides": object (FieldOverride),
    "transformations": object (Transformation),
    "schema_validation_mode": enum (SchemaValidationMode)
}
필드
defaults

object (DefaultsSection)

Cobol 아키타입의 기본 필드 수정자를 지정합니다.

field_suffixes

object (FieldSuffix)

필드 접미사를 지정합니다.

field_overrides

object (FieldOverride)

필드 재정의를 지정합니다.

transformations

object (Transformation)

필드 변환을 지정합니다.

schema_validation_mode

enum (SchemaValidationMode)

스키마 유효성 검사 모드를 지정합니다.

DefaultsSection

DefaultsSection 객체는 cobol 유형별로 기본 수정사항을 지정하는 데 사용할 수 있습니다. 이는 접미사 또는 재정의 수정 전에 적용됩니다.

JSON 표현
{
    "alpha_numeric_display": object (FieldModifier),
    "numeric_display": object (FieldModifier),
    "binary": object (FieldModifier),
    "packed_decimal": object (FieldModifier),
    "national": object (FieldModifier),
    "utf8": object (FieldModifier),
    "dbcs": object (FieldModifier),
    "hexadecimal_floating_point": object (FieldModifier)
}
필드
alpha_numeric_display

object (FieldModifier)

영숫자 (PIC X) 필드의 기본값을 지정합니다.

numeric_display

object (FieldModifier)

숫자 표시 (지역화된 소수점) 필드의 기본값을 지정합니다.

binary

object (FieldModifier)

바이너리 숫자 (COMP) 필드의 기본값을 지정합니다.

packed_decimal

object (FieldModifier)

패킹된 소수점 (COMP-3) 필드의 기본값을 지정합니다.

national

object (FieldModifier)

국가 (PIC N) 필드의 기본값을 지정합니다.

utf8

object (FieldModifier)

UTF-8 (PIC U) 필드의 기본값을 지정합니다.

dbcs

object (FieldModifier)

dbcs (DISPLAY-1) 필드의 기본값입니다.

hexadecimal_floating_point

object (FieldModifier)

16진수 부동 소수점 (COMP-1, COMP-2) 필드의 기본값입니다.

FieldSuffix

필드 접미사는 접미사가 있는 모든 필드에 적용됩니다.

필드가 하이픈 (-) 또는 밑줄 (_)로 끝나고 그 뒤에 접미사가 오는 경우 필드가 일치합니다.

접미사는 대소문자를 구분하지 않습니다.

FieldSuffix 수정자는 FieldOverride 수정자 뒤에 적용됩니다.

예를 들어 NID 접미사에 정의된 수정자는 FLD-NID라는 필드에는 적용되지만 FUNID 필드에는 적용되지 않습니다.

JSON 표현
{
    "suffix": string,
    "is_inverse": boolean,
    "modifier": object (FieldModifier)
}
필드
suffix

string

이 접미사가 있는 필드에는 수정자가 적용됩니다.

is_inverse

boolean

수정자가 필드 수정자인지 여부를 지정합니다. 역 필드 수정자는 수정자가 있는 필드와 이름이 동일한 다른 필드에 수정자를 적용합니다(수정자 없이). 예를 들어 동일한 레코드에 FLD-NID 필드와 FLD 필드가 모두 있는 경우 수정자가 FLD에 적용됩니다.

역 필드 수정자를 사용할 때는 필드 이름을 접미사가 있는 필드를 참조하는 데 전통적으로 사용할 수 있는 경우마다 특수 식별자 $self를 사용할 수 있습니다.

예를 들어 null 표시기 필드를 만들려면 is_inversetrue로 설정하고 null_if 필드 수정자를 사용하면 됩니다. 자세한 내용은 NullIf를 참고하세요.

modifier

object (FieldModifier)

일치하는 필드에 적용할 수정자를 지정합니다.

FieldOverride

지정된 필드의 디코딩 및 인코딩 체인을 재정의하거나 수정합니다.

JSON 표현
{
    "field": string,
    "modifier": object (FieldModifier)
}
필드
field

string

수정자를 적용할 필드의 이름을 지정합니다.

modifier

object (FieldModifier)

일치하는 필드에 적용할 수정자를 지정합니다.

변환

뷰 변환은 테이블과 QSAM 파일 간의 관계를 수정하는 데 사용됩니다. 변환은 항상 데이터의 관점에서 표현됩니다. 개념은 BigQuery에서 테이블을 보는 것과 유사합니다.

JSON 표현
{
    "exclude": object (Exclude),
    "unnest": object (Unnest),
    "move": object (Move),
    "rename": object (Rename)
}
필드
exclude

object (Exclude)

unnest

object (Unnest)

move

object (Move)

rename

object (Rename)

FieldModifier

필드 수정자를 사용하면 특정 필드의 인코딩 또는 디코딩을 수정할 수 있습니다. 일부 수정자는 일부 필드에만 적용할 수 있습니다. 자세한 내용은 특정 수정자의 문서를 참고하세요.

JSON 표현
{
    "filler": object (Filler),
    "null_if": object (NullIf),
    "format_date": object (FormatDate),
    "chain": object (ModifierChain),
    "zoned_decimal": object (ZonedDecimal),
    "binary": object (Binary),
    "packed_decimal": object (PackedDecimal),
    "null_if_invalid": object (NullIfInvalid),
    "bytes": object (Bytes),
    "varlen": object (VarLen),
    "string": object (String),
    "null_if_empty": object (NullIfEmpty),
    "format_timestamp": object (FormatTimestamp),
    "hfp": object (HFP)
}
필드
filler

object (Filler)

필드를 무시하고 제외합니다.

null_if

object (NullIf)

조건에서 기본 필드의 값을 null로 설정합니다.

format_date

object (FormatDate)

문자열 필드의 형식을 날짜로 지정합니다.

chain

object (ModifierChain)

여러 수정자를 함께 체이닝합니다.

zoned_decimal

object (ZonedDecimal)

영역화된 필드 소수점 구성 재정의

binary

object (Binary)

바이너리 필드 구성을 재정의합니다.

packed_decimal

object (PackedDecimal)

패킹된 소수점 필드 구성을 재정의합니다.

null_if_invalid

object (NullIfInvalid)

오류가 발생할 때 선을 스필하는 대신 필드를 null로 설정합니다.

bytes

object (Bytes)

바이트 필드를 재정의합니다.

varlen

object (VarLen)

레코드를 가변 길이 필드로 설정합니다.

string

object (String)

문자열 필드 구성 재정의

null_if_empty

object (NullIfEmpty)

필드가 비어 있으면 기본 필드의 값을 null로 설정합니다.

format_timestamp

object (FormatTimestamp)

문자열 필드의 형식을 타임스탬프로 지정합니다.

hfp

object (HFP)

이 필드를 16진수 부동 소수점으로 설정합니다.

제외

결과 테이블에서 필드를 제외하지만 디코딩 또는 인코딩은 계속 진행합니다. 이 방법은 필드를 테이블로 전송할 필요는 없지만 트랜스코딩에 필수인 경우에 유용합니다. 예를 들어 null 표시기 또는 길이 필드는 테이블에서 생략할 수 있습니다.

트랜스코딩을 완전히 우회하려면 필러 수정자를 적용합니다.

JSON 표현
{
    "field": string
}
필드
field

string

제외할 필드를 지정합니다.

Unnest

필드의 중첩을 해제합니다.

JSON 표현
{
    "field": string,
    "format": string
}
필드
field

string

중첩을 해제할 필드 지정

format

string

새 필드 형식을 지정합니다.

${parent}는 중첩 해제된 필드의 이름으로 해제됩니다.

중첩되지 않은 구조체의 경우 ${field}가 구조체 필드의 이름으로 대체됩니다.

중첩되지 않은 배열과 목록의 경우 ${index}는 배열의 색인으로 대체됩니다.

이동

레코드에서 필드를 이동합니다.

JSON 표현
{
    "field": string,
    "offset": int
}
필드
field

string

이동할 필드를 지정합니다.

offset

int

필드를 이동해야 하는 앞뒤 위치 수를 지정합니다.

이름 바꾸기

정규 표현식 일치를 기반으로 하나 이상의 필드 이름을 바꿉니다.

예를 들어 모든 하이픈을 밑줄로 바꾸려면 다음 JSON 형식({"find": "\\-", "replace":"_"})을 사용합니다.

JSON 표현
{
    "find": string,
    "replace": string
}
필드
find

string

이름을 바꿀 필드를 식별하는 Java 정규 표현식 패턴을 지정합니다.

패턴은 전체 필드 이름과 일치합니다. 패턴이 필드 이름의 일부와 일치하면 필드가 일치하는 것으로 간주됩니다.

예:

  • "\\-" (하이픈이 포함된 모든 필드와 일치)
  • "^field_name$" (이름이 field_name인 필드와 일치)
  • "^field_(.*)$" (field_로 시작하는 모든 필드와 일치하고 나머지는 캡처)
  • "part_of_name" (part_of_name가 포함된 모든 필드와 일치)

replace

string

일치하는 필드의 새 이름을 지정합니다.

find 정규 표현식의 캡처 그룹은 $1, $2와 같은 역참조를 사용하여 replace 문자열에서 사용할 수 있습니다. 이렇게 하면 원래 필드 이름의 일부를 기반으로 더 복잡한 변환을 수행할 수 있습니다.

예:

  • "new_field_name" (고정된 이름으로 필드를 바꿉니다.)
  • "new_$1" (find의 첫 번째 캡처 그룹 사용)
  • "${1}_new" (캡처 그룹의 대체 문법)
  • "prefix_$1_suffix" (캡처 그룹을 사용하고 접두사/접미사를 추가함)

가축 영양제

필드를 디코딩하거나 인코딩하지 않도록 지정합니다. 또한 디코딩 프로세스 중에 결과 테이블에서 제외됩니다. 크기가 알려진 모든 필드에 이 수정자를 적용할 수 있습니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

NullIf

조건이 충족되면 필드를 null로 설정합니다. null_value, non_null_value 또는 둘 다를 지정해야 합니다.

null 표시기 필드를 만들려면 null_if 필드 수정자를 사용하여 FieldSuffix를 사용하고 다음 예와 같이 is_inversetrue로 설정하면 됩니다.

: 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 표시기 필드를 만들려면 다음과 같이 binarynull_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 표시기 필드를 만들려면 다음과 같이 bytesnull_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,
    "non_null_value": string
}
필드
target_field

string

값을 확인하려는 필드를 지정합니다. 필드가 범위에 있어야 합니다.

null_value

string

지정된 경우 target_field가 이 값과 같으면 필드가 디코딩 또는 인코딩되지 않고 값이 null로 설정됩니다.

non_null_value

string

지정된 경우 target_field가 이 값과 같지 않으면 필드가 디코딩 또는 인코딩되지 않고 값이 null로 설정됩니다.

FormatDate

지원되는 형식 중 하나를 사용하여 문자열의 형식을 날짜로 지정합니다. 이 수정자는 크기가 지정된 필드에만 적용할 수 있습니다. 디코딩 프로세스 중에 형식 중 하나가 문자열과 일치할 때까지 형식이 순서대로 테스트됩니다. 인코딩 프로세스 중에 첫 번째 형식이 사용되고 나머지는 무시됩니다.

JSON 표현
{
    "formats": object (DateTimeFormat)
}
필드
formats

object (DateTimeFormat)

날짜 형식 목록입니다.

ModifierChain

수정자 체인을 지정하여 여러 수정자를 연속으로 적용합니다. 수정자는 지정된 순서대로 적용됩니다.

JSON 표현
{
    "modifiers": object (FieldModifier)
}
필드
modifiers

object (FieldModifier)

적용할 수정자 목록을 지정합니다.

ZonedDecimal

시간대 구분 소수점의 인코딩 및 디코딩과 관련된 다양한 옵션을 설정합니다. 이 수정자는 소수점 필드에만 적용할 수 있습니다.

JSON 표현
{
    "logical_type": enum (DecimalLogicalType),
    "encoding": enum (ZonedDecimalEncoding)
}
필드
logical_type

enum (DecimalLogicalType)

필드를 디코딩하거나 인코딩할 때 사용할 논리적 유형을 지정합니다.

encoding

enum (ZonedDecimalEncoding)

필드가 인코딩되는 인코딩입니다.

바이너리

이전의 모든 수정자를 무시하고 이 필드를 바이너리 숫자로 취급합니다.

JSON 표현
{
    "signedness": enum (BinarySignedness)
}
필드
signedness

enum (BinarySignedness)

숫자의 부호입니다.

PackedDecimal

이 필드를 PackedDecimal로 설정합니다.

JSON 표현
{
    "logical_type": enum (DecimalLogicalType)
}
필드
logical_type

enum (DecimalLogicalType)

논리 유형을 재정의합니다. 기본적으로 Mainframe Connector는 정밀도와 확장을 기반으로 최적의 논리 유형을 사용합니다.

NullIfInvalid

트랜스코딩에 실패하면 값을 null로 취급합니다. 이 수정자는 크기가 지정된 필드에만 적용할 수 있습니다. 이 오류는 무시되며 오버플로 데이터 세트에 로깅되지 않습니다. 디코딩 프로세스 중에 이 레코드의 이 필드 값은 null입니다. 인코딩 프로세스 중에 데이터를 쓸 수 없는 경우 전체 필드가 null 바이트로 채워집니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

바이트

수정자 체이닝을 무시하고 데이터를 원시 바이트로 취급합니다. 이 수정자는 크기에 관계없이 모든 필드에 적용할 수 있습니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

VarLen

가변 길이 필드를 나타냅니다.

가변 길이 필드에는 다음 세 부분이 포함됩니다.

  1. 하위 필드 2개가 포함된 그룹 항목입니다.
  2. 그룹 항목 내의 필드로, 트랜잭션 데이터의 길이가 포함됩니다.
  3. 데이터가 포함된 그룹 항목 내 필드입니다.

가변 길이 필드의 이름은 그룹 이름이 됩니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

문자열

문자열 디코딩 및 인코딩과 관련된 다양한 옵션을 설정합니다. 문자열 필드에만 적용할 수 있습니다.

JSON 표현
{
    "encoding": string,
    "trim_suffix": boolean,
    "pad_char": string
}
필드
encoding

string

필드가 인코딩되는 인코딩입니다.

trim_suffix

boolean

true로 설정하면 문자열 끝의 공백이 잘립니다. trim_suffix는 디코딩에만 영향을 미치며 인코딩은 trim_suffix를 무시합니다. 공백으로만 구성된 문자열은 빈 문자열이 됩니다.

pad_char

string

pad_char로 패딩 내보내기 문자열을 설정합니다. 설정된 경우 pad_char의 길이는 1이어야 합니다. pad_char는 인코딩에만 영향을 미치며 디코딩은 pad_char를 무시합니다.

NullIfEmpty

필드의 모든 바이트가 0이면 필드를 null로 설정해야 합니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

FormatTimestamp

제공된 형식 중 하나를 사용하여 문자열을 타임스탬프로 형식 지정합니다. 크기 필드에만 적용할 수 있습니다. 디코딩 중에 형식 중 하나가 문자열과 일치할 때까지 형식이 순서대로 테스트됩니다. 인코딩 중에 첫 번째 형식이 사용되고 나머지는 무시됩니다.

JSON 표현
{
    "formats": object (DateTimeFormat)
}
필드
formats

object (DateTimeFormat)

타임스탬프 형식 목록입니다.

HFP

이 필드를 16진수 부동 소수점으로 설정합니다.

다음과 같이 빈 JSON 객체를 제공합니다.

JSON 표현
{
}

DateTimeFormat

필드를 날짜로 변환할 때 사용할 크기 및 패턴입니다.

JSON 표현
{
    "size": int,
    "pattern": string
}
필드
size

int

이 패턴이 적용되는 필드의 크기를 지정합니다.

pattern

string

날짜 형식 지정자 패턴입니다. 유효한 형식 지정자 패턴에 관한 자세한 내용은 DateTimeFormatter 클래스를 참고하세요.

BinarySignedness

십진수 필드에 사용할 논리 유형입니다.

열거형
UNSPECIFIED 규모와 정밀도에 따라 가장 최적의 유형을 사용합니다.
SIGNED 64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하이고 척도가 0인 숫자에만 작동합니다.
UNSIGNED 64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하인 숫자에만 작동합니다.

DecimalLogicalType

십진수 필드에 사용할 논리 유형입니다.

열거형
AUTO 규모와 정밀도에 따라 가장 최적의 유형을 사용합니다.
LONG 64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하이고 척도가 0인 숫자에만 작동합니다.
DECIMAL64 64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하인 숫자에만 작동합니다.
BIG_DECIMAL 값을 무제한 십진수 값으로 저장합니다. 가장 느린 옵션이지만 모든 크기에서 모든 정밀도의 소수점을 지원합니다.
BIG_INTEGER 값을 제한되지 않은 정수 값으로 저장합니다. 가장 느린 옵션이지만 정밀도가 어떤 정수든지 지원합니다.

ZonedDecimalEncoding

존 십진수 필드를 디코딩하거나 인코딩할 때 사용할 인코딩을 지정합니다.

열거형
UNSPECIFIED 수정자 체인에 지정된 인코딩을 유지합니다. 수정자가 지정되지 않은 경우 EBCDIC이 사용됩니다.
EBCDIC EBCDIC 인코딩을 사용합니다.
ASCII ASCII 인코딩을 사용합니다.

SchemaValidationMode

Copybook 컴파일 중에 사용되는 스키마 유효성 검사 모드입니다. 이 모드를 사용하면 특정 대상 데이터 형식과의 호환성을 보장할 수 있습니다.

열거형
DEFAULT 기본 스키마 유효성 검사 모드입니다. 이 모드를 사용하면 카피북 내에서 고유한 필드 이름을 보장할 수 있습니다.
BIG_QUERY BigQuery 호환성을 위한 스키마 유효성 검사 모드입니다. 이 모드는 기본 유효성 검사를 확장하여 문서의 스키마가 BigQuery의 데이터 유형과 호환되도록 합니다.