COBOL에서 현재 단락 이름을 가져 오는 방법을 알고 싶습니다 (MVS Enterprise COBOL V4.2 사용).현재 단락 이름을 가져 오는 방법은 무엇입니까?
의 내가 PROCEDURE 부문이 코드가 있다고 가정 해 봅시다 : 나는 현재 단락의 이름에 액세스 할 수 있도록하고 싶습니다
MAIN-LOGIC.
MOVE SPACE TO ABT-MSG
PERFORM PARAGRAPH-1
PERFORM PARAGRAPH-2
GO TO CLOSE-PROGRAM.
*
* SEARCH FOR A VALUE IN AN ARRAY AND GET THE RELATED INDEX
*
PARAGRAPH-1.
MOVE 42 TO SEARCH-VALUE
PERFORM VARYING I-SEARCH FROM 1 BY 1
UNTIL SOME-ARRAY(I-SEARCH) = SEARCH-VALUE
IF (I-SEARCH = MAX-ARRAY-POSITION)
MOVE SEARCH-ABORT TO ABT-MSG
MOVE 'PARAGRAPH-1' TO ABT-LOC
GO TO CLOSE-PROGRAM
END-IF
END-PERFORM
DISPLAY 'VALUE WAS FOUND AT POSITION ' I-SEARCH '.'.
*
* STORE A NEW VALUE AT THE END OF AN ARRAY
*
PARAGRAPH-2.
MOVE 42 TO STORAGE-VALUE
ADD 1 TO I-STORAGE
IF (I-STORAGE > MAX-ARRAY-POSITION)
MOVE STORAGE-ABORT TO ABT-MSG
MOVE 'PARAGRAPH-2' TO ABT-LOC
GO TO CLOSE-PROGRAM
END-IF
MOVE STORAGE-VALUE TO SOME-ARRAY(I-STORAGE).
*
* CLOSE THE PROGRAM
*
CLOSE-PROGRAM.
IF ABT-MSG > SPACE
DISPLAY ABT-MSG
DISPLAY '(FOUND IN ' ABT-LOC ')'
MOVE 20 TO RETURN-CODE
ELSE
DISPLAY SUCCESS-MESSAGE
END-IF
STOP RUN.
을 (및 ABT-LOC에 저장) 대신 쓰기 필요없이. 'CURR-PARA-NAME'등과 같은 COBOL 시스템 변수가 있습니까?
감사합니다.
------ UPDATE 1 -------
나는 그것이 더 구체적으로 만들기 위해 내 코드 예제를 업데이트했습니다. 실제 COBOL 프로그램에서 SEARCH-ABORT 및 STORAGE-ABORT 가능성이 여러 가지 있음을 알고 있습니다 (많은 배열로 작업하고 있습니다).
나는 코드를 가능한 한 잘 만들고 싶다. 따라서 현재 단락의 이름을 쓰지 않고 코드에 액세스하려고한다.
다시 한 번 감사드립니다.
------- 업데이트 2 ------ 다음
음. 나는 그것을 할 수없는 것 같다. (내 프로그램의 사용자는 아마 사용하지 않는 디버그 메시지를 거부 할 것이다. - 정보를 얻기 위해 나는 50 년 된 프로그램을 상향 GO TO와 같은 매우 나쁜 프로그래밍 실습으로 다시 작성하고있다. 폴 스루 로직 (Fall-Through Logic), ALTER (얼터너티브) 등이 있으며, 결국 같은 결과물을 얻고 싶습니다.
걱정하지 마십시오. 나는 오늘 밤 울지 않을 것입니다. 이것은 내 코드에 대한 심미적 인 개선이었으며, 나는 그것을 사용하지 않고 살 수있었습니다 (내 코드는 이미 내가 기반한 것보다 훨씬 더 예쁘다).
시간 내 주셔서 감사 드리며 좋은 시간 되시길 ... Stack Overday!
어떤 COBOL 컴파일러를 사용하고 있습니까? –
빌처럼 말했습니다. GnuCOBOL에는 특정 호스팅 된 변수를 표시하는 new-ish 확장이 있으며 단계 추적 데이터에 대한 포인터를 반환하기위한 작은 실험을 수행했습니다. 여기에는 현재 프로그램 ID (다른 정보를 얻는 다른 방법이 있음), 섹션, 단락, 소스 파일 및 줄 번호가 포함됩니다. CBL_OC_HOSTED에 가치있는 추가처럼 보이지만 실행 파일을 컴파일하는 동안'-ftrace' 또는'-ftraceall'을 설정하여 스텝 추적 프로그램 데이터를 추적해야합니다. 들어가면 CBL_OC_HOSTED "USING paraptr"단락 "RETURNING err-indicator'이됩니다. 성공시'paraptr'가'char *'로 설정됩니다. –
@BrianTiffin 작성해야합니다. 다른 경로로 가고 있었는데 ... –