명령 유틸리티 - AWS 메인프레임 현대화

AWS Mainframe Modernization Service(관리형 런타임 환경 환경 환경)는 더 이상 신규 고객에게 공개되지 않습니다. AWS Mainframe Modernization Service(관리형 런타임 환경 환경)와 유사한 기능은 AWS Mainframe Modernization Service(자체 관리형 환경)를 참조하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 AWS Mainframe Modernization 가용성 변경을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

명령 유틸리티

이 섹션은 제어 카드를 사용하여 제공되는 사용자 명령을 처리하는 역할을 하는 유틸리티 프로그램과 관련이 있습니다.

IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH

IKJEFT1A 목적

IKJEFT1A 및 해당 별칭은 대화형 TSO 세션, 비대화형 배치 및 대화형 TSO 환경을 연결하지 않고도 배치 작업에서 TSO(T ime S haring O ption) 명령을 실행합니다.

환경별 차이와 함께 레거시 IKJEFT1A 동작을 모방합니다. 예를 들어 DB2 TERM(inate) 명령은 최신 환경에서 무시됩니다(정보 제공으로 로깅됨).

참고

여기에 명령 구문이 자세히 설명되어 있지 않음 - IKJEFT1A는 레거시 명령 데이터 세트를 변경 없이 사용합니다. TSO 명령 세부 정보는 레거시 플랫폼 설명서를 참조하세요.

IKJEFT1A 서명

명령 입력(JCL DD 지시문을 통해 정의됨)에 데이터 SYSTSIN 세트를 사용합니다. 현대화된 버전은 변경되지 않은 동일한 데이터 세트를 사용합니다. 현대화된 Groovy 작업 스크립트에서만 호출됩니다.

IKJEFT1A 관련 구성 파라미터

유틸리티의 동작은 다음 구성 파라미터의 영향을 받습니다.

  • systin.encoding

이 파라미터 구성에 대한 선택적 웹 애플리케이션에 사용할 수 있는 속성 자세한 내용은 섹션을 참조하세요.

IKJEFT1A 검사/오류 처리

지원되지 않는 명령이 SYSTSIN 데이터 세트에 있으면 RuntimeException이 발생합니다.

IKJEFT1A 샘플 사용량

레거시 JCL 스크립트(DD *명령을 사용하여 SYSTSIN 데이터 세트의 인라인 콘텐츠를 사용)

//********************************************************************* //* READ THE TEMPORARY INPUT FILE * //********************************************************************* // IF IDCM00032.RC = 1 THEN //067FILEKEY EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSIN DD * DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END /* //TEMPVSAM DD DSN=IDXVIDEO.TEMPVSAM,DISP=SHR //FKOUT DD DSN=output(out067.txt),DISP=(NEW,CATLG) // ENDIF //*********************************************************************

및 일치하는 현대화된 스크립트(groovy) -- SYSTSIN 데이터 세트의 인라인 콘텐츠는 "스트림" --

// STEP 067FILEKEY - PGM - IKJEFT01*********************************************** def step067FILEKEY(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("067FILEKEY", "IKJEFT01", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSTSIN") .stream( """ DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END """, getEncoding()) .build() .bluesam("TEMPVSAM") .dataset("IDXVIDEO.TEMPVSAM") .disposition("SHR") .build() .fileSystem("FKOUT") .path("output(out067.txt)") .disposition("NEW") .normalTermination("CATLG") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IKJEFT01") }) } } }

QCMDEXC

QCMDEXC 목적

이 유틸리티 프로그램은 런타임 시 동적 방식으로 시스템 명령을 실행하는 데 사용되는 AS/400 시스템 유틸리티 QCMDEXC의 동작을 에뮬레이션합니다.

기능:

  • 명령을 동적으로 구문 분석하고 실행합니다.

  • 명명된 파라미터 형식과 위치 파라미터 형식을 지원합니다.

QCMDEXC 서명

1~2개의 파라미터를 허용합니다.

  • 첫 번째: 실행할 명령이 포함된 영숫자 데이터

  • 두 번째(선택 사항): 첫 번째 파라미터에서 읽을 바이트 길이(기본값은 전체 길이)

QCMDEXC 검사/오류 처리

다음과 같은 경우가 발생합니다RuntimeException.

  • 제공된 인수 수가 1~2개가 아닌 경우

  • 명령 인수가 비어 있거나 실행할 명령을 인식할 수 없는 경우

  • 어떤 이유로든 명령 실행이 실패하면 프로그램의 반환 코드가 1로 설정됩니다.

QCMDEXC 샘플 사용량

다음은 레거시 COBOL 프로그램의 샘플 사용량입니다. 데이터 항목에는 명령이 적용된 후,이 명령CL-COMMANDX이 QCMDEXC 프로그램 호출의 인수로 사용됩니다.

INITIALIZE CL-COMMANDX. STRING "CPYF FROMFILE(PLAYERS) TOFILE(" DELIMITED BY SIZE, "NEWFILE" DELIMITED BY SIZE, ") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)" DELIMITED BY SIZE INTO CL-COMMANDX END-STRING. CALL "QCMDEXC" USING CL-COMMANDX CLENGTHX.

Java 코드로 현대화되면 다음과 같이 됩니다.

DataUtils.initialize(ctx.getClCommandx().getClCommandxReference()); StringConcatenationBuilder.newInstance(ctx.getClCommandx().getClCommandxReference()) .addDelimitedBySize("CPYF FROMFILE(PLAYERS) TOFILE(") .addDelimitedBySize("NEWFILE") .addDelimitedBySize(") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)") .end(); ctrl.callSubProgram("QCMDEXC", CallBuilder.newInstance() .byReference(ctx.getClCommandx().getClCommandxReference()) .byReference(ctx.getClengthx().getClengthxReference()) .getArguments(), ctx);

레거시 명령 콘텐츠는 수정 없이 현대화된 코드에서 "있는 그대로" 사용되고 있습니다.