Mainframe Connector는 다음과 같은 두 가지 버전의 카피북 파서를 지원합니다.
- 네이티브 카피북 파서: 네이티브 카피북 파서는 ANTLR4 기반 파서를 구현하고 COBOL 카피북을 지원하며 파서의 권장 버전입니다.
- 레거시 카피북 파서: 레거시 카피북 파서는 매우 제한된 메모장 형식을 지원하는 이전 버전의 파서입니다.
카피북을 기준으로 사용할 파서를 정의할 수 있습니다. 사용할 파서를 정의하는 방법에 대한 자세한 내용은 카피북 파서 정의를 참조하세요.
네이티브 카피북 파서
네이티브 카피북 파서는 최신 버전의 파서이며 기본적으로 사용됩니다. 네이티브 카피북 파서는 ANTLR4 기반 파서를 구현하고 COBOL 카피북을 지원합니다.
이 섹션에는 네이티브 카피북 파서에서 실행하는 사전 처리 작업이 나와 있습니다. 또한 네이티브 카피북 파서에서 지원하는 데이터 유형과 사용 시 제한사항을 간략히 설명합니다.
사전 처리
카피북을 파싱하기 전에 네이티브 카피북 파서는 데이터를 사전 처리하고 다음 작업을 수행합니다.
- 주석 줄을 삭제합니다.
- 줄 연속을 해결합니다.
- 행 번호 영역과 열 73 영역을 비웁니다.
EJECT
,SPACE
,TITLE
와 같은 프리프로세서별 문을 보존합니다. 이러한 필드는 파싱되지만 무시됩니다.COPY REPLACING
에서 사용할 수 있는 전처리기 매개변수가 포함된 카피북은 기본 카피북 파서에서 지원되지 않습니다. 이러한 카피북에서 식별자는 콜론(:)으로 묶입니다.
지원되는 데이터 유형 및 제한사항
다음은 네이티브 카피북 파서에서 지원하는 데이터 유형과 사용 제한사항입니다.
- 수준 66(ALIAS) 또는 77(STANDALONE)은 지원되지 않습니다.
- PICTURE 필드만 사용하세요. 지원되는 PICTURE 필드는 다음과 같습니다.
- Pic A, Pic, B, Pic G(DBCS), Pic N(국가 또는 DBCS), Pic U(UTF8), Pic X, 영역 십진수(최대 정밀도 38, 최대 배율 38)
- IBM 16진수 부동 소수점(HFP)이 지원됩니다.
- REDEFINES는 지원되지 않습니다.
- 다음 COMP 필드만 사용하세요. ALIGN 및 OCCURS는 지원되지 않습니다.
- COMP
- COMP4
- 바이너리
- COMP3
- PACKED-DECIMAL
- DATE 및 TIMESTAMP가 지원됩니다.
- null 표시기가 지원됩니다.
- 더블 바이트 문자 집합(DBCS) 필드 Pic G 및 Pic N이 지원되며 현재 지원 중단된 Pic T 대신 사용해야 합니다.
USAGE DISPLAY-1
을 지정하지 않고 Pic N 필드를 DBCS로 사용하려면NSYMBOL
환경 변수를DBCS
로 설정해야 합니다. 기본적으로NSYMBOL
은NATIONAL
로 설정되어USAGE NATIONAL
을USAGE
절이 없는 Pic N 필드로 설정합니다.NSYMBOL
은NATIONAL
또는DBCS
로만 설정할 수 있습니다. - 가변 길이 문자 문자열이 지원됩니다.
- SIGN 절이 지원됩니다.
- 모든 필드를 양쪽 맞춤 적용하고 단일 들여쓰기 수준을 사용해야 합니다.
- 댓글이 지원됩니다.
날짜 및 타임스탬프 필드 지원
Mainframe Connector는 BigQuery 안팎으로 날짜 및 타임스탬프 데이터를 이동하는 것을 지원합니다. 이렇게 하려면 SUFFIX
단어로 시작하는 환경 변수를 다음 형식으로 정의해야 합니다.
SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"
다음 목록에서는 형식을 자세히 설명합니다.
SUFFIX_SUFFIX_STRING
: 날짜 및 타임스탬프 데이터를 정의하는 데 사용할 수 있는 환경 변수입니다. SUFFIX_STRING 이름은 복사본에서 필드 이름의 서픽스로 사용될 경우 날짜 또는 타임스탬프로 해석되어야 하는 서픽스-SUFFIX_STRING
또는_SUFFIX_STRING
에 해당합니다. SUFFIX_STRING에 하이픈이나 밑줄이 포함되어 있지 않은지 확인합니다.command
: 필드를 파싱하는 데 사용해야 하는 디코더를 정의합니다. 지원되는 명령어는date-converter
및timestamp-converter
입니다.--format
: 날짜 또는 타임스탬프의 형식을 정의하는 파라미터입니다. 쉼표로 구분하여 최대 5개의 서로 다른 형식을 지정할 수 있습니다. 지정된 입력과 일치하는 형식이 여러 개인 경우 일치하는 첫 번째 형식이 BigQuery에 로드하는 데 사용됩니다. 내보내기에 여러 형식을 지정하면 첫 번째 형식만 사용됩니다. 유효한 형식에 관한 자세한 내용은 지원되는 날짜 및 타임스탬프 형식을 참고하세요.--timezone
:TIMESTAMP
유형의 선택적 매개변수입니다. 기본 시간대는 UTC입니다. 지원되는 시간대 형식에 관한 자세한 내용은 지원되는 시간대 형식을 참고하세요.--omitsuffix
(선택사항): 이 매개변수를 지정하면-SUFFIX_STRING
또는_SUFFIX_STRING
이 BigQuery에 표시되는 필드 이름에서 삭제됩니다.
SUFFIX_SUFFIX_STRING
에 별칭을 추가하려면 환경 변수 SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
을 설정하면 됩니다.
예를 들면 다음과 같습니다.
- 환경 변수를
SUFFIX_DT8="date-converter --format yyyyMMdd"
로 정의하면 서픽스가-DT8
또는_DT8
인 필드는 BigQuery에서DATE
유형 필드가 되고 패턴은yyyyMMdd
가 됩니다. - 환경 변수를
SUFFIX_DT10="date-converter --format MM-dd-yyyy"
로 정의하면 서픽스가-DT10
또는_DT10
인 필드는 BigQuery에서DATE
유형 필드가 되고 패턴은MM-dd-yyyy
가 됩니다. - 환경 변수를
SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'"
로 정의하면 서픽스가-DT
또는_DT
인 필드는 BigQuery에서DATE
유형 필드가 되며 패턴은MM-dd-yyyy
또는MM/dd/yyyy
가 될 수 있습니다. - 환경 변수 두 개를
SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"
및SUFFIX_TS=$SUFFIX_TIMESTAMP
로 정의하는 경우 서픽스(-TIMESTAMP
,_TIMESTAMP
,-TS
또는_TS
) 중 하나는 BigQuery의TIMESTAMP
유형 필드가 되고, 패턴은 시간대가America/New_York
인yyyy-MM-dd HH:mm:ss.SSSSSS
입니다.
null 표시기 지원
Mainframe Connector는 버전 5.13.0부터 null 표시기를 지원합니다. null 표시기는 SUFFIX
단어로 시작하는 환경 변수를 다음 형식으로 정의해야 합니다.
SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"
NULL_INDICATOR_NAME은 카피북에서 필드 이름의 서픽스로 사용될 경우 null 표시기로 해석되는 서픽스 -NULL_INDICATOR_NAME
또는 _NULL_INDICATOR_NAME
에 해당합니다.
다음 목록에서는 이러한 환경 변수와 함께 사용할 수 있는 파라미터를 설명합니다.
command
: 값은null-indicator
여야 합니다.–null-value
: 값null indicator
는 참조된 필드가 null임을 나타냅니다.--null-value
값은 문자열 또는 십진수여야 합니다.–not-null-value
: (선택사항) 지정된 경우 값null indicator
는 참조된 필드가 null이 아님을 나타냅니다. 이 파라미터가 설정되지 않은 경우–value-null
이 아닌 모든 값이 허용됩니다.–not-null-value
값은 문자열 또는 십진수여야 합니다.–keep
: (선택사항) 지정된 경우null-indicator
필드는 최적화된 행 열 형식 (ORC) 파일 형식의 열로 유지됩니다. 기본적으로 이 필드는 ORC 형식으로 유지되지 않습니다.-force-type
: (선택사항) 필드를 각각 바이트 또는 바이너리로 디코딩하도록 강제하는 두 가지 옵션(bytes
및binary
)을 지원합니다. 바이트의 경우null
및not-null
값은HEX
로 표현됩니다 (예:FA3AB5
). 모든FF
또는 모든00
와 동일한HIGH
및LOW
상수를 사용할 수 있습니다. 바이너리의 경우 값은 일반 정수입니다.
null-indicator
에 참조된 필드가 없으면 Mainframe Connector에 오류 메시지가 표시되고 파일 처리가 중지됩니다.
예를 들면 다음과 같습니다.
카피북 스니펫
10 COL1-NID1 PIC S9(4) USAGE COMP.
10 COL1 PIC S9(6) USAGE COMP.
10 FIELD PIC X(10).
10 FIELD-NID2 PIC X(1).
10 COL2 PIC X(10).
10 COL2-NULL PIC X(1).
환경 변수 정의
SUFFIX_NID1="null-indicator --null-value -1 --not-null-value 0"
# Copybook fields with NID1 suffix null indicator configuration.
SUFFIX_NID2="null-indicator --null-value '?'"
# Copybook fields with NID2 suffix null indicator configuration.
SUFFIX_NULL="null-indicator --null-value '?' --keep"
# Copybook fields with NULL suffix null indicator configuration.
DBCS 필드 지원
DBCS 필드를 사용할 때는 다음 사항을 확인하세요.
- PIC G 또는 Pic N DBCS 필드를 사용하는 경우
gsutil cp
또는bq export
명령어를 사용할 때encoding
옵션 또는ENCODING
환경 변수에서 다음과 같은 유효한 멀티바이트 문자 집합(MBCS) 인코딩 중 하나를 제공해야 합니다.- x-IBM930
- x-IBM933
- x-IBM935
- x-IBM937
- x-IBM939
- x-IBM942
- x-IBM942C
- x-IBM943
- x-IBM943C
- x-IBM949
- x-IBM949C
- x-IBM950
- x-IBM964
- x-IBM970
- x-IBM1364
- 카피북 필드에 DBCS 바이트만 포함되어 있지만 이러한 바이트가 시프트 아웃(0x0E) 및 시프트 인(0x0F)으로 둘러싸여 있지 않은 경우 이러한 바이트가 DBCS 바이트로 디코딩되도록 필드 이름에 서픽스
_DBCS
를 추가해야 합니다.
예를 들어, 카피북 필드 03 FLD01 PIC N USAGE DISPLAY-1
에 해당하는 데이터에 0x0E
및 0x0F
로 둘러싸여 있지 않은 x-IBM930 인코딩에 바이트 0x43
및 0xC5
가 포함되어 있는 경우, DBCS 데이터를 올바르게 디코딩하려면 카피북 필드 이름을 03 FLD01-DBCS PIC N USAGE DISPLAY-1
로 바꿔야 합니다.
가변 길이 문자 문자열 지원
네이티브 카피북 파서는 다음 struct
필드를 지원합니다.
- 10 var
- 15 var-LEN PIC 9(4) USAGE COMP
- 15 var-TEXT PIC X(n)
struct
필드의 첫 번째 필드는 두 번째 필드인 문자열 필드의 길이입니다. 다음 그림과 같이 레코드 길이에 따라 레코드 끝에 패딩을 추가해야 할 수 있습니다.
Mainframe Connector는 BigQuery에 데이터를 저장하기 전에 변수 이름에서 접미사를 삭제합니다. 이 예에서 변수 이름은 var
입니다.
struct
필드를 사용하려면 환경 변수 BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
를 yes
또는 true
로 설정합니다.
struct
필드를 사용할 때는 다음 사항을 확인하세요.
struct
의 첫 번째 매개변수의 접미사는-LEN
입니다. 다른 서픽스를 사용하려면 사용하려는 서픽스로 환경 변수BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
를 설정해야 합니다.struct
의 두 번째 매개변수의 접미사는-TEXT
입니다. 다른 서픽스를 사용하려면 사용하려는 서픽스로 환경 변수BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
를 설정해야 합니다.
지원되지 않는 필드 및 구조
다음 섹션에서는 지원되지 않는 필드 및 구조를 설명합니다.
COBOL 생성물
COBOL 구성은 지원되지 않지만 이러한 구성을 코드북에 사용하면 Mainframe Connector에 오류가 표시됩니다.
dataAlignedClause
dataBlankWhenZeroClause
dataCommonOwnLocalClause
dataIntegerStringClause
dataJustifiedClause
dataOccursClause
dataReceivedByClause
dataRecordAreaClause
dataRenamesClause
dataSignClause
dataSynchronizedClause
dataThreadLocalClause
dataTypeClause
dataTypeDefClause
dataUsingClause
데이터 유형
COMP-1 및 COMP-2와 같은 COBOL 데이터 유형이 지원됩니다.
레거시 카피북 파서
레거시 카피북 파서는 비COBOL 기능을 지원하는 이전 버전의 파서입니다. DSL 기반 카피북을 사용하는 경우 네이티브 카피북 파서로 인해 오류가 발생할 수 있으므로 레거시 파서가 더 적합할 수 있습니다.
카피북 DD 사용 시 다음과 같은 제한사항이 있습니다.
- 수준 66(ALIAS) 또는 77(STANDALONE)은 지원되지 않습니다.
- REDEFINES는 지원되지 않습니다.
- 주석 행은 지원되지 않습니다.
- 이름이 DATE 또는 DT로 끝나는 길이 10의 필드는 날짜입니다. 이러한 필드는 디코딩이 다릅니다.
- 다음 COMP 필드만 사용하세요. ALIGN 및 OCCURS는 지원되지 않습니다.
- COMP
- COMP4
- 바이너리
- COMP3
- PACKED-DECIMAL
- PICTURE 필드만 사용하세요. 필드 이름 바로 뒤의 같은 줄에 PICTURE 필드를 정의합니다.
- 모든 필드를 양쪽 맞춤 적용하고 단일 수준을 사용해야 합니다. 주석은 지원되지 않습니다.
- 1~6열에는 항상 공백이 포함되어야 합니다.