AWS Mainframe Modernization Service(관리형 런타임 환경 환경 환경)는 더 이상 신규 고객에게 공개되지 않습니다. AWS Mainframe Modernization Service(관리형 런타임 환경 환경)와 유사한 기능의 경우 AWS Mainframe Modernization Service(자체 관리형 환경)를 살펴보세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 AWS Mainframe Modernization 가용성 변경을 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터베이스 유틸리티
이 섹션에서는 데이터베이스 관련 유틸리티에 대해 설명합니다. 레거시 플랫폼에서 이러한 프로그램은 일반적으로 DB2 데이터베이스에서 작동하는 반면, 대체 데이터베이스는 최신 환경에서 선택됩니다(AWS Aurora가 인기 있는 선택임).
DSNTEP2/DSNTEP4
DSNTEP2/DSNTEP4 용도
DNSTEP 유틸리티는 입력 데이터 세트에서 SQL 쿼리를 실행하고 결과를 출력 데이터 세트에 기록합니다. 현대화된 대상 데이터베이스(DB2 이상)에 대한 레거시 SQL 쿼리를 자동으로 다시 작성하고 스트림, Blusam SYSIN 데이터 세트, 플랫 파일, GDG 생성 및 데이터 세트 연결과 같은 여러 데이터 세트 유형을 지원합니다.
DSNTEP2/DSNTEP4 서명
유틸리티는 인수를 사용하지 않고 두 개의 데이터 세트를 사용합니다.
-
SYSIN: SQL 문이 포함된 입력 데이터 세트 -
SYSPRINT: 쿼리 결과에 대한 출력 데이터 세트(SELECT쿼리만 해당)
DSNTEP2/DSNTEP4 관련 구성 파라미터
유틸리티의 동작은 다음 구성 파라미터의 영향을 받습니다.
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestamphasGraphicforcedDatefrozenDate
이러한 파라미터 구성에 대한 선택적 웹 애플리케이션에 사용할 수 있는 속성 자세한 내용은 섹션을 참조하세요.
DSNTEP2/DSNTEP4 검사/오류 처리
-
어떤 이유로든 쿼리 실행 중에 예외가 발생하면 오류 메시지가 로깅되고
StopRunUnitException가 발생하여 현재 실행 단위가 중지됩니다. -
SYSIN가 다양한 데이터 세트의 연결이고 데이터 세트가 지원되지 않는 경우RuntimeException이 발생합니다. 현재 DSNTEP2/4에서 입력으로 사용되는 경우 플랫 파일 및 GDG 생성 유형만 연결된 파일의 일부로 지원됩니다.
DSNTEP2/DSNTEP4 샘플 사용량
다음은 DNSTEP4의 샘플 JCL 사용량입니다.
//******************************************************************** //* RETRIEVE DATA FROM TABLE AP_JBI7_INVOICE * //******************************************************************** //* //DSNTEP03 EXEC PGM=DSNTEP4,DYNAMNBR=20 //SYSPRINT DD DSN=output(out012.txt), // DISP=SHR,DCB=(RECFM=FB,LRECL=1152) //SYSIN DD * SELECT * FROM BUR000.AP_JBI7_INVOICE WITH UR;
및 일치하는 현대화된 groovy 스크립트 조각:
def stepDSNTEP03(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("DSNTEP03", "DSNTEP4", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSPRINT") .path("output(out012.txt)").recordSize(1152) .disposition("SHR") .build() .fileSystem("SYSIN") .stream( """ SELECT * FROM BUR000.AP_JBI7_INVOICE WITH UR; """, getEncoding()) .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("DSNTEP4") }) } } }
SQL 쿼리는 수정 없이 DSNTEP2/4 유틸리티에 "있는 그대로" 제공됩니다.
DSNUTILB
DSNUTILB 용도
데이터 로드, 복사 및 관리를 위한 데이터베이스 유틸리티입니다. 일반적으로 레거시 DB2 데이터베이스에서 작동하며, 현대화된 버전은 AWS Aurora 및 기타 대상 데이터베이스를 지원합니다.
DSNUTILB 서명
기본적으로 DSNUTILB는 현대화된 작업 스크립트에서 직접적으로 호출하기 위한 것입니다.
인수를 가져오지 않고 SYSIN 데이터 세트에서 명령을 읽습니다.
지원되는 명령은 다음과 같습니다.
TEMPLATE(데이터 세트의 동적 할당)LISTDEF(데이터베이스 객체를 목록으로 그룹화, 다른 명령에서 사용 가능)COPY(데이터베이스 객체의 복사본 생성)LOAD(레코드를 테이블에 로드)DISCARD(테이블에서 레코드 삭제)
명령에 대한 자세한 내용은 관련 적절한 레거시 설명서를 참조하세요.
DSNUTILB 관련 구성 파라미터
유틸리티의 동작은 다음 구성 파라미터의 영향을 받습니다.
unload.useDatabaseConfigurationload.format.localDateload.format.dbDateload.format.localTimeload.format.dbTimeload.sqlCodePointShiftconvertGraphicDataToFullWidth
이러한 파라미터 구성에 대한 선택적 웹 애플리케이션에 사용할 수 있는 속성 자세한 내용은 섹션을 참조하세요.
DSNUTILB 검사/오류 처리
-
SYSIN데이터 세트에 사용 가능한 명령이 없는 경우RuntimeException이 발생합니다. -
데이터베이스 작업 중에 예외가 발생하면 오류 메시지가 로깅되고 반환 코드가 8로 설정되며이
StopRunUnitException발생합니다(현재 실행 단위 중지).
DSNUTILB 샘플 사용량
다음은 JCL 스크립트에서 DSNUTILB의 샘플 사용입니다.
//******************************************************************** //* LOAD DATA IN TABLE AP_JBI7_INVOICE. * //******************************************************************** //DSN01 EXEC PGM=DSNUTILB,DYNAMNBR=20 //SYSREC DD DSN=input(input021.data), // DISP=SHR // DCB=(RECFM=FB,LRECL=76) //SYSIN DD DSN=input(dsn01.card), // DISP=SHR
레거시 플랫폼에서 내보낸 플랫 파일에서 데이터베이스에 데이터를 로드하는 데 사용되는 명령 카드 콘텐츠(dsn01.card) --:
LOAD DATA INDDN SYSREC RESUME NO LOG YES NOCOPYPEND SORTDEVT SYSDA SORTNUM 12 SORTKEYS 100000 DISCARDS 0 INTO TABLE BUR000.AP_JB17_INVOICE WHEN (76:76) = 'L' ( IDENTIFIER POSITION(1:1) SMALLINT ,CUST_ID POSITION(10) VARCHAR NULLIF(39) = '?' ,CUST_KD POSITION(40:43) CHAR ,INVC_AMNT POSITION(44:49) NUMERIC ,INVC_DAT POSITION(50:75) TIMESTAMP EXTERNAL(26) )
및 일치하는 groovy 현대화된 스크립트 조각:
// STEP DSN01 - PGM - DSNUTILB**************************************************** def stepDSN01(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("DSN01", "DSNUTILB", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSREC") .path("input(input021.data)").recordSize(76) .disposition("SHR") .build() .fileSystem("SYSIN") .path("input(dsn01.card)") .disposition("SHR") .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("DSNUTILB") }) } } }
INFUTILB/INZUTILB
INFUTILB 목적
INFUTILB/INZUTILB는 데이터베이스 -- 언로드 -- (레거시 환경의 DB2)에서 데이터를 추출하고 이를 다양한 출력 형식으로 변환하는 데 사용되는 유틸리티 프로그램입니다.
레거시 SQL 쿼리는 최신 대상 데이터베이스 요구 사항(지원되는 엔진: PostgreSQL, Oracle 및 DB2)에 맞게 on-the-fly 자동으로 조정됩니다.
INFUTILB / INZUTILB 서명
다음 프로그램 별칭을 사용할 수 있습니다(및 해당 레거시 정렬 유틸리티 이름과 일치).
INFUTILBINZUTILB
유틸리티는 인수를 취하지 않고 SYSIN 데이터 세트에서 실행할 명령("제어 카드")을 읽습니다. 데이터베이스에서 추출된 레코드는 SYSREC 데이터 세트에 기록되고 선택적 SYSPUNCH 데이터 세트는 데이터를 다시 로드하는 데 사용할 수 있는 제어 카드를 저장하는 데 사용됩니다(예DSNUTILB:와 같은 다른 유틸리티 사용).
기본적으로 INFUTILB/INZUTILB는 대부분 현대화된 작업 스크립트에서 호출하기 위한 것입니다.
지원되는 명령에 대한 세부 정보는 적절한 레거시 설명서를 참조하세요. INFUTILB/INZUTILB는 레거시 "컨트롤 카드" 데이터세트 "있는 그대로"를 사용하고 있습니다.
INFUTILB/INZUTILB 관련 구성 파라미터
유틸리티의 동작은 다음 구성 파라미터의 영향을 받습니다.
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestampunload.columnFillerunload.varCharIsNullunload.DFSIGDCBhasGraphicforcedDatefrozenDate
이러한 파라미터 구성에 대한 선택적 웹 애플리케이션에 사용할 수 있는 속성 자세한 내용은 섹션을 참조하세요.
INFUTILB/INZUTILB 검사/오류 처리
-
대상 데이터베이스가 지원되는 데이터베이스 엔진(PostgreSQL, Oracle 및 DB2)의 일부가 아닌 경우 프로그램 반환 코드가 8로 설정되고
UnsupportedOperationException이 발생합니다. -
프로그램이 임시 파일을 삭제하지 못하면 반환 코드가 4로 설정되고 오류 메시지가 로깅되지만 프로그램 실행은 중단되지 않습니다.
-
다음 모든 경우에 프로그램 반환 코드는 4 또는 8로 설정되고
AbendException가 발생합니다(프로그램 실행 중지).SYSREC데이터 세트가 지원되는 종류(GDG 또는 파일 시스템 기반 데이터 세트) 중 하나가 아닌 경우 코드 4를 반환합니다.SYSPUNCH데이터 세트가 지원되는 종류(GDG 또는 파일 시스템 기반 데이터 세트 또는DUMMY) 중 하나가 아닌 경우 코드 4를 반환합니다.프로그램이
SYSREC데이터 세트 레코드 크기(데이터 세트 카탈로그에 설정되지 않았거나 정의되지 않음)를 검색할 수 없는 경우 코드 8을 반환합니다.프로그램이
SYSPUNCH데이터 세트 레코드 크기(데이터 세트 카탈로그에 설정되지 않았거나 정의되지 않음)를 검색할 수 없는 경우 코드 8을 반환합니다.SYSREC데이터 세트 콘텐츠를 생성하는 데 사용된 쿼리가 유효하지 않은 경우(오류 쿼리가 로깅됨), 코드 4를 반환합니다.데이터베이스에서 데이터를 가져오는 동안 예외가 발생하면 코드 8을 반환합니다.
데이터
SYSIN세트에OUTDDN명령이 없는 경우 언로드 작업의 경우 코드 8을 반환합니다.SYSIN데이터 세트에서 유효한 명령을 찾을 수 없는 경우 코드 8을 반환합니다.
INFUTILB / INZUTILB 샘플 사용량
다음은 샘플 레거시 jcl 스크립트 조각입니다.
//******************************************************************** //* UNLOAD DATA FROM TABLE AP_JBI7_INVOICE. * //******************************************************************** //INF1 EXEC PGM=INFUTILB //SYSREC DD DSN=output(out032.data), // DISP=SHR // DCB=(RECFM=FB,LRECL=90) //SYSIN DD DSN=input(inf12.card), // DISP=SHR
는 다음 명령 카드(inf12.card)를 사용하여 데이터베이스에서 일부 데이터를 언로드합니다(여기서 레코드는 날짜를 기준으로 선택됨).
UNLOAD SELECT * FROM BUR000.AP_JB17_INVOICE WHERE INVC_DAT >= CONCAT(STRIP(CHAR(YEAR(CURRENT DATE - 100 YEAR))),'-01-01-00.00.00.000000') AND INVC_DAT >= CONCAT('2025-01-01-',CONCAT((CURRENT TIME),'.000000')) AND INVC_DAT >= (CURRENT TIMESTAMP - 100 YEAR) ORDER BY identifier ASC OUTDDN (SYSREC) FORMAT DSNTIAUL
및 일치하는 groovy 스크립트 조각, 자동화된 jcl 현대화의 결과:
// STEP INF1 - PGM - INFUTILB***************************************************** def stepINF1(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("INF1", "INFUTILB", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSREC") .path("output(out032.data)").recordSize(90) .disposition("SHR") .build() .fileSystem("SYSIN") .path("input(inf12.card)") .disposition("SHR") .build() .getFileConfigurations(fcmap)) .withParameters(params) .runProgram("INFUTILB") }) } } }
JXHDBCLR
JXHDBCLR 목적
JXHDBCLR은 GS21 플랫폼에서 찾을 수 있는 데이터베이스 정리 유틸리티 프로그램으로, 명령 카드에 있는 제공된 특정 문에 따라 테이블을 잘라냅니다.
JXHDBCLR 서명
인수는 취하지 않지만 SYSIN 데이터 세트(명령 카드)에서 문을 읽습니다.
특성상 현대화된 작업 스크립트에서 주로 호출하기 위한 것입니다.
JXHDBCLR 관련 구성 파라미터
유틸리티의 동작은 다음 구성 파라미터의 영향을 받습니다.
unload.sqlCodePointShiftunload.noPadunload.nbi.whenNullunload.nbi.whenNotNullunload.useDatabaseConfigurationunload.format.dateunload.format.timeunload.format.timestamphasGraphicforcedDatefrozenDate
이러한 파라미터 구성에 대한 선택적 웹 애플리케이션에 사용할 수 있는 속성 자세한 내용은 섹션을 참조하세요.
JXHDBCLR 검사/오류 처리
잘라낼 테이블을 찾을 수 없는 경우 경고 메시지가 기록되지만 프로그램 실행은 중단되지 않습니다.
테이블 잘라내기 중에 일부 오류가 발생하면 프로그램 반환 코드가 4로 설정되고 오류 메시지가 기록되지만 프로그램 실행은 중단되지 않습니다.
다음 조건 중 하나에 대해 프로그램 반환 코드가 8로 설정되고 AbendException이 발생합니다(프로그램 실행 중지).
명령 카드 콘텐츠가 비어 있는 경우
명령 처리 구문 분석 중에 예외가 발생하는 경우
JXHDBCLR 샘플 사용량
인라인 명령 카드를 사용한 샘플 JXHDBCLR 사용:
//******************************************************************* //** Step 1 - JXHDBCLR UTILITY - DBCLEAR TYPE=2/3 //******************************************************************* //STEP01 EXEC PGM=JXHDBCLR,REGION=256K,PARM='LINECNT=0' //SYSPRINT DD SYSOUT=* //SYSIN DD * DBCLEAR SCHEMA=MUSICSCH,TYPE=3,CHECK=YES DEFINE RANGE=(SINGERDEST) END
및 일치하는 현대화된 groovy 스크립트 조각:
// STEP STEP01 - PGM - JXHDBCLR*************************************************** def stepSTEP01(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("STEP01", "JXHDBCLR", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .fileSystem("SYSIN") .stream( """ DBCLEAR SCHEMA=MUSICSCH,TYPE=3,CHECK=YES DEFINE RANGE=(SINGER) END""", getEncoding()) .build() .getFileConfigurations()) .withArguments(getParm("LINECNT=0")) .withParameters(params) .runProgram("JXHDBCLR") }) } } }
레거시의 인라인 카드는 스트림을 사용하여 "있는 그대로" 유지됩니다.