2012-02-13 2 views
-1

나는 다음과 같은 호출 문이 있습니다Cobol 동적 호출이 그룹을 프로그램 식별자로 사용하여 작동하는 방식은 무엇입니까?

038060  CALL  PROG USING 
038070     DFH 
038080     L000 
038090     ZONE-E 
038100     ZONE-S. 

이 호출은 동적이며 PROG을 사용합니다.

XX00-S06

: 실제 progname이 저장된 사용 보인다

018630 01     XX00. 
018640  10   PROG. 
018650   15   XX00-S06 PICTURE X(6) 
018660       VALUE SPACE. 
018670   15   XX00-S02 PICTURE X(2) 
018680       VALUE SPACE. 
018690  10   XX00-S92 PICTURE 9(02) 
018700       VALUE ZERO. 
018710  10   XX00-S91 PICTURE 9(1) 
018720       VALUE ZERO. 
018730  10   XX00-S9Z PICTURE 9(1) 
018740       VALUE ZERO. 
018750  10   XX00-9B0 PICTURE X(05) 
018760       VALUE SPACE. 
018770  10   XX00-0B0 PICTURE X(02) 
018780       VALUE SPACE. 
018790  10   XX00-BB1 PICTURE X(01) 
018800       VALUE SPACE. 
018810  10   XX00-SFN PICTURE X(07) 
I cut here but there is a lot of field after... 

:로

PROG 정의 기이고

XX00-S02

그래서 제 질문은 코볼이 곳 방법을 알고 입니다 또한 이름이 3 개 또는 4 필드에 다른 경우를했습니다, 그리고 progname 길이는 항상 8

아니다 그룹에서 좋은 프로그램 이름을 골랐습니까? 해결 규칙은 무엇입니까?

구성 : Microfocus Net Express 컴파일러를 사용하며 환경은 UniKix입니다.

+0

"CALL 리터럴"은 동적 CALL이 될 수도 있고 문제의 제품에 대한 컴파일러 매뉴얼에 문서화되어 있음을 인정하지도 않습니다. 잠재적으로 공급 업체와 공급 업체의 차이점이 있습니다. –

답변

3

COBOL의 동적 호출 규칙은 매우 간단합니다. COBOL 현재 선형 검색을 기반으로 그것을 사용할 수있는로드 모듈 라이브러리 에 대해 WS-NAME에 저장된 프로그램의 이름을 확인합니다

CALL WS-NAME USING... 

: 같은 감안할 때 뭔가. WS-NAME과 일치하는 최초로 일치하는로드 모듈 진입 점 이름이 사용됩니다.

WS-NAME의 정의가 얼마나 복잡하거나 간단하지 않아도 상관 없습니다. 이름이 인 총 길이는 WS-NAME의 길이와 같습니다. 예를 들어 :

01 WS-NAME. 
     05 WS-NAME-FIRST-PART  PIC X(3). 
     05 WS-NAME-MIDDLE-PART PIC X(2). 
     05 WS-NAME-LAST-PART  PIC X(3). 

WS-NAME은 8 자 총을주는 3 개 하위 필드로 구성되어있다. 개별적으로 입력하거나 무언가를 전체적으로 WS-NAME으로 옮길 수 있습니다. WS-NAME의 길이가 8 자 미만이면 수신 필드의 뒤 문자는 으로 공백으로 설정됩니다. 예를 들면 다음과 같습니다

01 WS-SHORT-NAME. 
    05 WS-SHORT-NAME-FIRST-PART   PIC X(4) VALUE 'AAAA'. 
    05 WS-SHORT-NAME-LAST-PART   PIC X(2) VALUE 'BB'. 

WS-SHORT-NAME은 6 자입니다. 더 이상 PIC X 유형의 변수에 MOVING WS-SHORT-NAME 같이 :

MOVE WS-SHORT-NAME TO WS-NAME 

WS-NAME이 값에 복용을 초래할 것 'AAAABB BB '(두 후행 공백에주의).

CALL WS-NAME 

또는

CALL-WS-SHORT-NAME 

그리고 그들은 동일하게 해결할 수 : 일치하는 항목 포인트 이름 libary 검색 동안, 후행 공백은 를 사용할 수있는 CALL 문에 이렇게 중요하지 않습니다 진입 지점.

나는 길이 규칙 (그들이 할 경우, 이름이 8 자 잘립니다) 동적으로 8자를 초과 할 수 없습니다 프로그램 이름을 불리는 IBM의 z/OS 용, 마이크로 포커스 COBOL위한 것입니다하지만 확실하지 않다.

+0

자세한 답변을 보내 주셔서 감사합니다. Microfocus의 경우 제한이 없으므로 전체 그룹을 선택하는 것이 좋습니다. –

1

Micro Focus COBOL에 대한 특정 정보를 NeilB에 더 추가 할 것입니다.

fyi : PROGRAM-ID, ENTRY-POINTS는 30-31 자로 제한됩니다 (문서의 "시스템 제한 사항 및 프로그래밍 제한 사항"섹션 참조).

관련 문제