2010-07-02 4 views
4

COBOL 프로그램을 통해 의도적으로 비정상 종료 할 수 있습니까? 헤더, 세부 정보 및 예고편 레코드가있는 입력 파일이 있다고 가정합니다. 이 파일을 읽는 COBOL pgm을 쓸 것입니다.이 파일에 세부 레코드가 없으면 일부 비정상 종료 메시지와 비정상 종료 코드를 제공하여 작업을 중단하고 싶습니다. 가능한가요?의도적으로 비정상 종료하는 방법

답변

7

프로그램을 중단하거나 RETURN-CODE을 설정 하시겠습니까?

내가 메시지 을을 writting 다음 STOP RUN 또는 GOBACK 비아 프로그램을 종료하는 RETURN-CODE를 설정 의심하는 것은 당신이 정말로 원하는 모든 것을입니다. 실제 ABEND가 필요하지 않을 수도 있습니다.

IBM 배치 환경에서 프로그램에 의해 설정된 RETURN-CODE는 프로그램이 실행 된 JCL 작업 단계에 대한 RC가됩니다. 이것은 일반적으로 당신이 설정하고 테스트하려는 입니다.

RETURN-CODE은 숫자 값으로 MOVE으로 설정됩니다. 예를 들어 :

  DISPLAY 'No Detail Records found in file.' 
     MOVE 16 TO RETURN-CODE 
     GOBACK. 

는 또한 CEE3DMP--Generate dump 유틸리티를 사용하여 언어 환경에서 실행하는 프로그램 (IBM 메인 프레임 옵션)에서 프로그램 덤프를 발행 할 수있다.

이전 IBM 메인 프레임 COBOL 프로그램에서 ILBOABN0 루틴 호출을 볼 수 있습니다. 이 전화 이 프로그램을 이상 종료하고 덤프를 발행했습니다. 이 루틴은 이제 위에 요약 된 기법을 사용하여 depreciated입니다.

마지막으로 실제로 오래된 프로그램에는 이상 종료가 생성되는 코드가있을 수 있습니다. 이 방법의 수에서 수행 할 수 있지만, 0으로 나누기는 종종 마음에 드는 이었다

 DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER. 

때마다 작품!

개인적으로는 ILBOABN0이나 데이터 예외 기술을 통해 RETURN-CODE을 설정하는 것이 좋습니다.

참고 : RETURN-CODE 특수 레지스터는 COBOL-85 표준의 일부가 아닙니다. IBM 확장 언어로 사용할 수 있습니다. 비 IBM 호환 환경에서 작업하는 경우 다른 메커니즘을 사용해야 할 수도 있습니다.

3

Abened 코드를 강제로 적용 할뿐만 아니라 JCL 작업 단계로 다시 전달 된 리턴 코드를 설정하는 방법에 대한 다음 링크를 참조하십시오. http://www.tek-tips.com/viewthread.cfm?qid=1058302&page=22

+1

ILBOABN0는 (링크 된 페이지에서 언급 한) 지금은 사용되지 않습니다. 외부 링크는 대답이 아니므로 여기에 요약해야합니다. 더 유쾌한 것 외에도 사이트와 연결된 사이트는 항상 주변에 머 무르지 않는 경향이 있습니다. "tek-tips.com"에 대한 구글과 당신은 사람들이 불평했다 적어도 두 개의 정지 기간의 언급 찾을 수 있습니다. – Abacus

0

실행이 비정상적으로 끝나는 한 가지 방법은 프로그램이있는 컴퓨터의 유형에 따라 메시지를 사용자 단말기 또는 메인 프레임 컴퓨터 센터의 운영자에게 출력하고 필요한 경우 프린터에 출력하는 것입니다 계속 달릴거야. cobol에서는 DISPLAY UPON ..을 사용할 수 있으며 ENVIRONMENT DIVISION의 SPECIAL-NAMES 섹션에있는 항목에 정의 된대로 터미널, 운영자 콘솔 또는 프린터에 대한 식별자를 사용할 수 있습니다.운영에 OUT-OP2 및 DISPLAY "보고서에 -"상세 기록, 중단 RUN 오류 "예 운영자 콘솔 디스플레이와 특수 이름에 OUT-OP2 귀하의 경우에 대한 올바른 장치 이름을 사용하여이 유사 할 수있다 MANAGER "OUT-OP2 및 STOP RUN이됩니다. 프로 시저 부문. 상황에 참조는 어떤 직업이나 매크로 및 작동 지침에 포함시킬 필요가있다.

2

첫째, 당신은 당신의 자신의 상점의/사이트의 작업 표준에 의해 허용되는 것을 확인해야합니다. 대부분의 팀은 이미 의도적으로 '논리'이유로 프로그램을 파기하는 허용 된 방법을 가질 것입니다. 나는에서 근무 한 회사는 그냥 프로그램 비정상 종료로라고 어셈블러로 작성된 것으로 판단 SYSABND2라는 아주 간단한 프로그램을 가지고 있습니다. 말했다

, 이상 종료 (그냥 설정 리턴 코드)에, 당신은 모듈 CEE3ABD (또는 현재 사용되지 않으며 이전 버전 ILBOABN0) 호출해야합니다.

대한 자세한 내용은 다음을 참조하십시오

0

예, 그것은 단순히 존재하지 않는 하나 개의 모듈을 호출하여 COBOL 프로그램을 통해 의도적으로 이상 종료 작업을 할 수 있습니다. S806 abend 코드를 제공합니다.

+1

프로그램에서 동적 호출을 사용하지 않으면 어떻게됩니까? S806은 어떻게 생성됩니까? –

관련 문제