기타/기타 유틸리티 - AWS 메인프레임 현대화

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

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

기타/기타 유틸리티

이 섹션에서는 기존 범주에 연결할 수 없는 기타 용도의 다양한 유틸리티 프로그램을 다룹니다.

다음 단락에서 PICTURE는 필드 데이터 유형 및 형식을 설명하는 데 사용되는 COBOL PICTURE 키워드로 이해되어야 합니다.

CBL_AND/CBL_OR/CBL_XOR/CBL_EQ/CBL_IMP/CBL_NOT

용도

이는 일부 COBOL 언어(Micro Focus)에 있는 데이터 항목에 대한 비트별 논리 작업 지원과 관련이 있습니다. AWS Transform을 사용한 자동 리팩터링은 Cobol MF 언어에서 java로의 비트 연산자 사용량 변환을 처리합니다(아래 샘플 사용량 참조). 현대화된 코드가 제대로 실행되려면 유틸리티 애플리케이션을 함께 배포해야 합니다.

지원되는 연산자:

  • 단항 연산자:

단항 연산자 details
CBL_NOT 비트 보완(~대상)
  • 이진 연산자:

이진 연산자 details
CBL_AND Bitwise AND(소스 및 대상)
CBL_OR Bitwise OR(소스 | 대상)
CBL_XOR Bitwise exclusive OR(소스 ^ 대상)
CBL_EQ 비트 단위 동등성(~(소스 ^ 대상))
CBL_IMP 비트별 영향(~소스 | 대상)

서명

피연산자(대상)가 하나만 있는 CBL_NOT을 제외하고 다른 모든 작업에는 데이터 항목인 피연산자가 두 개 이상 있습니다. 첫 번째 피연산자는 소스이고 두 번째 피연산자는 대상입니다. 추가 선택적 인수(길이)는 처리할 바이트 수를 제공합니다(왼쪽에서 오른쪽으로). 길이를 생략하면 기본적으로 최소 소스 및 대상 크기(바이트)로 설정됩니다. 작업 결과는 대상에 저장됩니다. 프로그램의 반환 코드는 0입니다(예외가 발생하지 않는 한).

검사/오류 처리

  • 사용 가능한 각 연산자에 대해 필요한 인수 수가 확인됩니다. 필요한 최소 인수 수가 충족되지 않으면 IllegalArgumentException이 발생합니다.

  • 선택적 길이 정수 인수에 긍정이 있는지 확인합니다. 제공된 길이가 음수인 경우 로그에 메시지가 표시되고 연산자는 적용되지 않습니다.

샘플 사용량

  • 단항 연산자 샘플:

다음은 CBL_NOT의 코볼 사용량입니다.

* TARGET: 00000101 * OPERATION: NOT * EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) MOVE X'0500' to TARGET CALL "CBL_NOT" USING TARGET BY VALUE 1.

및 해당 Java 현대화:

/* TARGET: 00000101 OPERATION: NOT EXPECTED: 11111010 = 64000 dec (2nd byte unchanged - all 0) */ ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_NOT", CallBuilder.newInstance() .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);
  • 이진 연산자 샘플:

CBL_AND를 사용하는 다음 COBOL 코드는 단원을 참조하십시오.

* SOURCE: 00000011 * OPERATION: AND * TARGET: 00000101 * EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) MOVE X'0300' to SRC MOVE X'0500' to TARGET CALL "CBL_AND" USING SRC TARGET BY VALUE 1.

및 Java 현대화:

/* SOURCE: 00000011 OPERATION: AND TARGET: 00000101 EXPECTED: 00000001 = 256 dec (2nd byte unchanged - all 0) */ ctx.getSrc().getSrcReference().setBytes(new byte[]{ 3, 0 }); ctx.getTarget().getTargetReference().setBytes(new byte[]{ 5, 0 }); ctrl.callSubProgram("CBL_AND", CallBuilder.newInstance() .byReference(ctx.getSrc().getSrcReference()) .byReference(ctx.getTarget().getTargetReference()) .byValue(1) .getArguments(), ctx);

CEE3ABD

용도

이 유틸리티 프로그램은 동일한 이름의 레거시 프로그램의 동작을 모방합니다.이 프로그램의 역할은 Abend(비정상 종료) 코드와 선택적 정리 타이밍으로 프로그램을 종료하는 것입니다. AWS 변환 엔진은 CEE3ABD에 대한 호출의 자동 현대화를 처리합니다. 현대화된 코드가 제대로 실행되려면 유틸리티 애플리케이션을 함께 배포해야 합니다.

프로그램은 제공된 abend 코드를 사용하여 현재 실행 단위를 중지합니다. 지정된 코드로 사용자 종료가 호출되었음을 지정하는 정보 메시지가 로그에 인쇄됩니다. 지금은 타이밍 파라미터를 고려하지 않지만 현대화 호환성을 위한 인수로 존재합니다.

서명

프로그램은 0 또는 2개의 인수를 허용합니다. 두 인수는 다음과 같습니다.

  • Abend 코드(양수 값으로 해석할 수 있어야 하는 데이터 항목)

  • 정리 타이밍(양수 값으로 해석할 수 있어야 하는 데이터 항목) -- 무시됨

인수가 제공되지 않으면 다음 기본값이 사용됩니다.

  • Abend 코드: 0

  • 정리 타이밍: 0

검사/오류 처리

  • 0개 또는 2개의 인수가 제공되고 있는지 확인합니다. 그렇지 않으면 IllegalArgumentException이 발생합니다.

  • 두 개의 인수가 제공된 경우 abend 코드가 0~4095(둘 다 포함), 타이밍이 0~5(둘 다 포함)인지 확인합니다.

이러한 테스트에 실패하면가 트리거됩니다IllegalArgumentException.

샘플 사용량

다음은 Carddemo 애플리케이션의 COBOL 프로그램의 샘플 사용량입니다.

9999-ABEND-PROGRAM. DISPLAY 'ABENDING PROGRAM' MOVE 0 TO TIMING MOVE 999 TO ABCODE CALL 'CEE3ABD'.

및 해당 현대화된 Java 코드:

public void _9999AbendProgram(final Cbtrn03cContext ctx, final ExecutionController ctrl) { DisplayUtils.display(ctx, ctrl, LOGGER, "ABENDING PROGRAM"); ctx.getTiming().setTiming(0); ctx.getAbcode().setAbcode(999); ctrl.callSubProgram("CEE3ABD", CallBuilder.newInstance() .getArguments(), ctx); }

CEEDATE

용도

CEEDATE 유틸리티는 제공된 형식을 사용하여 Lilian 날짜(1582년 10월 15일 이후 일수)를 나타내는 숫자를 문자 기반 날짜 표현으로 변환합니다.

동일한 이름을 가진 레거시 시스템 유틸리티의 동작을 모방합니다.

서명

CEEDATE 유틸리티는 그 특성상 프로그램에서 직접 호출하기 위한 것입니다.

3개 또는 4개의 인수를 사용합니다(마지막 인수는 선택 사항).

  • 필수 첫 번째 인수는 값이 Lilian 날짜로 통합되는 숫자 데이터 항목입니다.

  • 필수 두 번째 인수는 날짜-문자 변환에 사용되는 PICTURE 문자열을 포함하는 영숫자 데이터 항목입니다.

  • 필수 세 번째 인수는 대상 영숫자 데이터 항목으로, 두 번째 인수를 로 사용하여 첫 번째 인수를 변환한 결과를 보관합니다. PICTURE

  • 네 번째 선택적 인수는 유틸리티의 피드백 코드를 저장하는 데 사용되는 데이터 항목입니다.

검사/오류 처리

  • 유틸리티에 전달된 인수 수가 3개 또는 4개가 아닌 경우이 발생합니다BluageWrapperException.

  • 제공된 첫 번째 숫자 인수를 Lilian 날짜(범위 밖)로 올바르게 평가할 수 없는 경우 오류 메시지가 기록됩니다. 선택적 피드백 코드 소유자가 있는 경우 심각도 3의 피드백 코드와 메시지 번호 2512가 제공됩니다.

  • 제공된 잘못된 로 인해 날짜 변환 중에 예외가 발생하면 PICTURE오류 메시지가 로깅됩니다. 선택적 피드백 코드 소유자가 있는 경우 심각도 3의 피드백 코드와 메시지 번호 2518이 제공됩니다.

  • 어떤 이유로든 변환을 제대로 수행할 수 없는 경우 출력 데이터 항목이 공백으로 채워집니다.

  • 변환이 성공하면 선택적 피드백 코드 소유자에게 심각도 0의 피드백 코드가 제공됩니다(메시지 없음).

샘플 사용량

다음은 COBOL 프로그램의 샘플 호출입니다(피드백 코드 소유자 FC의 구조에는 줄임표가 포함되어 있습니다. 여기에 표시되지 않은 수백 개의 조건(레벨 88) 항목이 포함되어 있습니다).

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 TIMESTAMP-OUT PIC X(80). 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. 01 FC. ... * lilian date for 4 June 1990 MOVE SPACES TO MASK-STR MOVE 148887 TO LILIANS. MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEEDATE-ROUTINE USING LILIANS MASK TIMESTAMP-OUT FC.

CEELOCT

용도

CEELOCT 유틸리티는 로컬 날짜/시간을 다음 세 가지 형식으로 반환하는 데 사용됩니다.

  • Lilian date(1582년 10월 14일 이후 일수)

  • 릴리안 초(1582년 10월 14일 00:00:00 이후 초 수)

  • 그레고리어 문자열( 형식YYYYMMDDHHMISS999)

동일한 이름을 가진 레거시 시스템 유틸리티의 동작을 모방합니다.

서명

CEELOCT 유틸리티는 그 특성상 프로그램에서 직접 호출하기 위한 것입니다.

3개 또는 4개의 인수를 사용합니다(마지막 인수는 선택 사항).

  • 필수 첫 번째 인수는 Lilian 날짜를 저장하는 데 사용되는 데이터 항목입니다.

  • 필수 두 번째 인수는 Lilian 초를 저장하는 데 사용되는 데이터 항목입니다.

  • 필수 세 번째 인수는 위에 제공된 양식을 사용하여 그레고리 날짜를 저장하는 데 사용되는 데이터 항목입니다.

  • 선택적 네 번째 인수는 유틸리티의 피드백 코드를 저장하는 데 사용되는 데이터 항목입니다.

검사/오류 처리

  • 유틸리티에 전달된 인수 수가 3개 또는 4개가 아닌 경우이 발생합니다BluageWrapperException.

  • 로컬 날짜/시간에서 출력 형식으로의 변환을 처리하는 동안 예외가 발생하는 경우: 첫 번째 및 두 번째 인수는 0으로 설정되고 세 번째 인수는 변경되지 않은 상태로 유지됩니다. 오류 메시지가 로깅됩니다. 선택적으로 피드백 코드 소유자에게 심각도 3의 피드백 코드와 메시지 번호 2531이 제공됩니다.

  • 성공하면 세 인수 모두 적절한 콘텐츠로 채워지고 선택적 피드백 코드는 심각도 0의 코드와 함께 제공됩니다.

샘플 사용량

다음은 CEELOCT 유틸리티 사용을 보여주는 샘플 COBOL 코드 조각입니다. 피드백 코드 소유자 구조 FC에는 수백 개의 조건(레벨 88) 항목이 포함되어 있으므로 전체가 제공되지 않습니다.

WORKING-STORAGE SECTION. 01 LILIANS PIC S9(9) BINARY. 01 GREGORN PIC X(80). 01 SECONDS COMP-2. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... CALL CEELOCT-ROUTINE USING LILIANS SECONDS GREGORN FC.

CEERAN0

용도

CEERAN0 프로그램은 지정된 시드를 사용하여 0.0에서 1.0 사이의 의사 임의 번호를 생성하기 위해 호출됩니다. 이는 사용자 지정 시드가 필요한 다중 통합 메서드 알고리즘을 기반으로 합니다. 시드로 0을 사용하면 시드가 실제로 Greenwich 평균 시간에서 계산되는 특정 모드가 트리거됩니다(프로그램이 실행되는 시점). 그렇지 않으면 시드가 있는 그대로 사용됩니다. 의사 무작위 시퀀스는 예측할 수 있습니다.

서명

CEERAN0 프로그램은 세 가지 파라미터를 사용합니다.

  • 시드(입력 파라미터), 양의 정수로 해석할 수 있는 데이터 항목(0 포함)

  • 난수(출력 파라미터), 배정밀도 부동 숫자로 해석할 수 있는 데이터 항목(값은 0.0에서 1.0 사이, 제외), 프로그램의 결과입니다.

  • 무작위 숫자 계산에 대한 프로그램의 피드백을 저장하는 데 사용되는 12바이트의 데이터 항목인 선택적 피드백 코드(출력 파라미터)

검사/오류 처리

  • 인수 수가 2 또는 3이 아닌 경우이 발생합니다IllegalArgumentException.

  • 시드 값은 0에서 2147483646 사이여야 합니다. 시드 값이 이러한 범위를 벗어나면 오류 메시지가 로깅되고 피드백 코드가 심각도 3으로 설정되고 메시지 번호가 2524로 설정됩니다. 결과 난수는 -1.0(아날로그에서 레거시 동작으로)으로 설정됩니다.

  • 시드 값이 0으로 설정되었지만 시스템에서 Greewich 평균 시간(어떤 이유로든)을 검색할 수 없는 경우 값 1을 대체로 사용하여 계산되고 피드백 코드는 심각도 1로 설정되고 메시지 번호는 2523으로 설정됩니다. 난수 계산은 폴백 시드 값으로 계속됩니다(레거시 동작과 유사).

샘플 사용량

이 Java 샘플은 여러 계층(엔터티, 서비스)의 비트와 함께 피드백 코드를 포함한 모든 파라미터를 사용하여 CEERAN0 프로그램을 사용하는 방법을 보여줍니다.

//Entity layer public class Randomin extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMIN"); private final Elementary randomin = new Elementary(root,new BinaryIntegerType(4, true),new BigDecimal("0")).named("RANDOMIN"); ... public class Randomout extends RecordEntity { private final Group root = new Group(getData()).named("RANDOMOUT"); private final Elementary randomout = new Elementary(root,new DoubleFloatingPointType(),new BigDecimal("0")).named("RANDOMOUT"); ... public class Returncode1 extends RecordEntity { private final Group root = new Group(getData()).named("RETURNCODE"); private final Elementary returncode1 = new Elementary(root,new AlphanumericType(12)," ").named("RETURNCODE"); ... // Service layer CallHandler.newInstance(ctrl, ctx, ctx.getErrorContext()) .byReference(ctx.getRandomin().getRandominReference(), ctx.getRandomout().getRandomoutReference(), ctx.getReturncode1().getReturncode1Reference()) .call("CEERAN0");

CEESECS

용도

CEESECS 유틸리티는 타임스탬프 문자열 표현을 Lilian 초(1582년 10월 14일 00:00:00 이후 초 수)로 변환합니다.

서명

CEESECS 유틸리티는 그 특성상 프로그램에서 직접 호출하기 위한 것입니다.

3개 또는 4개의 인수를 사용합니다(마지막 인수는 선택 사항).

  • 필수 첫 번째 인수는 값이 타임스탬프로 통합되는 데이터 항목입니다.

  • 필수 두 번째 인수는 첫 번째 인수를 해석하는 방법을 지정하는 데 사용되는 PICTURE 문자열을 포함하는 영숫자 데이터 항목입니다.

  • 필수 세 번째 인수는 두 번째 인수를 로 사용하여 첫 번째 인수를 변환한 결과를 보관하는 데이터 항목입니다. PICTURE

  • 네 번째 선택적 인수는 유틸리티의 피드백 코드를 저장하는 데 사용되는 데이터 항목입니다.

검사/오류 처리

  • 유틸리티에 전달된 인수 수가 3개 또는 4개가 아닌 경우이 발생합니다BluageWrapperException.

  • 인수로 유틸리티에 전달된 타임스탬프가 유효하지 않은 경우 오류 메시지가 로깅되고 선택적으로 피드백 코드 소유자에게 심각도 3의 피드백 코드와 메시지 번호 2513이 제공됩니다.

  • 유틸리티에 인수로 전달된 사진이 유효하지 않은 경우 오류 메시지가 기록되고 선택적으로 피드백 코드 소유자에게 심각도 3의 피드백 코드와 메시지 번호 2518이 제공됩니다.

  • 어떤 이유로든 릴리안 초 출력을 계산할 수 없는 경우 세 번째 인수(출력)는 0으로 설정됩니다.

샘플 사용량

다음은 COBOL 프로그램에서 CEESECS 유틸리티에 대한 샘플 호출입니다.

WORKING-STORAGE SECTION. 01 SECONDS COMP-2. 01 TIMESTAMP-IN. 05 TIMESTAMP-IN-LEN PIC S9(4) BINARY. 05 TIMESTAMP-IN-STR. 10 TIMESTAMP-IN-CHAR PIC X OCCURS 0 TO 256 DEPENDING ON TIMESTAMP-IN-LEN. 01 MASK. 05 MASK-LEN PIC S9(4) BINARY. 05 MASK-STR. 10 MASK-CHR PIC X OCCURS 0 TO 256 DEPENDING ON MASK-LEN. 01 FC. ... 01 ROUTINE-NAMES. 05 CEESECS-ROUTINE PIC X(08) VALUE 'CEESECS '. 05 CEELOCT-ROUTINE PIC X(08) VALUE 'CEELOCT '. 05 CEEDATE-ROUTINE PIC X(08) VALUE 'CEEDATE '. ... ... * date for lilian second 12,799,191,601.123 MOVE '1988-5-16-19:00:01.123' TO TIMESTAMP-IN-STR MOVE 23 TO MASK-LEN MOVE 'YYYY-MM-DD-HH:MI:SS.999' TO MASK-STR CALL CEESECS-ROUTINE USING TIMESTAMP-IN MASK SECONDS FC.

ILBOABN0

용도

ILBOABN0 프로그램의 목적은 사용자가 제공한 abend(비정상 종료) 코드를 사용하여 제어된 방식으로 현재 실행 단위를 중단하는 것입니다. 전용 프로그램을 오류 처리하는 데 자주 사용됩니다.

현재 실행 단위의 중단은를 발생시켜 발생합니다StopRunUnitException.

서명

ILBOABN0 프로그램은 abend 코드를 포함하는 데이터 항목인 단일 필수 인수를 사용합니다(정수로 해석 가능해야 함).

검사/오류 처리

현재 실행 단위 실행을 중단StopRunUnitException하기 위해를 발생시키는 동안 프로그램은 반환 코드를 첫 번째 인수로 제공된 값으로 설정합니다. 또한 정보 메시지가 기록됩니다.

샘플 사용량

다음은 AWS 변환을 통한 COBOL 현대화로 인한 ILBOABN0 프로그램의 Java 샘플 사용입니다.

77 WS-ABND-CODE COMP PIC S9(4) VALUE +1234. ... ... 1970-ABNDIT. CALL 'ILBOABN0' USING WS-ABND-CODE.

및 일치하는 Java 현대화:

//Entity layer private final Group root = new Group(getData()); private final Elementary wsAbndCode = new Elementary(root,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("1234")); ... //Service layer @Override public void _1970Abndit(final MyPgmContext ctx, final ExecutionController ctrl) { ctrl.callSubProgram("ILBOABN0", CallBuilder.newInstance() .byReference(ctx.getWsAbndCode().getWsAbndCodeReference()) .getArguments(), ctx);