2012-02-13 14 views
-1

私は、次の呼び出し文を持っている:Cobolダイナミックコールは、グループをプログラム識別子として使用してどのように動作しますか?

​​

この呼び出しは動的であり、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

だから私の質問は、COBOLがどこまで知っているかである私も、名前が3つのまたは4フィールド上にある他の例をした、とPROGNAME長は常に8

ではありませんグループ内の良いプログラム名を選んでください。解決ルールとは何ですか?

設定:私はMicrofocus Net Expressコンパイラを使用しています。環境はUniKixです。

+0

質問は、「CALLリテラル」が動的なCALLであること、または問題の製品のコンパイラーマニュアルに文書化されていることを認識していないことさえあります。 –

答えて

3

COBOLの動的呼び出しルールは非常に簡単です。以下のようなものを考える:

CALL WS-NAME USING... 

COBOLは現在 線形検索に基づいて、それが利用可能な ロードモジュールライブラリに対してWS-NAMEに格納されているプログラム名を解決します。 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文字未満の場合、末尾の文字は受信フィールドの空白には に設定されます。たとえば、

ここではWS-SHORT-NAMEの長さは6文字です。もはやPIC X型変数にMOVING WS-SHORT-NAMEのように:

MOVE WS-SHORT-NAME TO WS-NAME 

WS-NAME値を引き受けることになる 'AAAABB BB '(2つの末尾のスペースに注意してください)。

CALL WS-NAME 

または

CALL-WS-SHORT-NAME 

そして、彼らは同じに解決されます:一致するエントリポイント名のlibary検索 中は、末尾のスペースは、あなたが のいずれかを使用することができCALLステートメントにそれほど重要ではありませんエントリーポイント。

MicroFocus COBOLの長さの規則はわかりませんが、動的に呼び出されるIBM z/oの場合は、 プログラム名は8文字を超えることはできません(名前が8文字に切り捨てられます)。

+0

詳細な回答ありがとうございます!マイクロフォーカスの場合、私には限界がありませんので、グループ全体を取ると思います。 –

1

Micro Focus COBOLに関する具体的な情報をNeilBに少し追加します。

fyi:PROGRAM-ID、ENTRY-POINTSは30〜31文字に制限されています(ドキュメントの「システム制限とプログラミングの制限」を参照)。

関連する問題