アプリ版:「スタンプのみでお礼する」機能のリリースについて

z/OS COBOL LINKAGEの値に関しての質問です。
----COBOL-------------------------
PROGRAM-ID TESTPRG1.

LINKAGE SECTION.
01 JCL-PARM.
03 JCL-PARM-LEN PIC S9(04) COMP.
03 JCL-PARM-INFO PIC X(10).

PROCEDURE DIVISION USING JCL-PARM.
----JCL---------------------------
①パラメータを指定し実行すると
//STEP010 EXEC PGM=TESTPRG1,PARM='1234567890'
 ◎JCL-PARM-LENの値は、10となる。

②パラメータを指定せず実行すると
//STEP010 EXEC PGM=TESTPRG1
 ◎JCL-PARM-LENの値は、0となる。

②でプログラムをメモリーへ展開する際、プログラムへ引き渡す際
パラメータが無い時、LINKAGEのJCL-PARM領域には何がセットされるのでしょうか?

実行し確認した処、LOW-VALUEがセットされている様ですが、OS上保証されますか?
メモリー展開で位置付いたアドレスの残骸がそのまま引き渡される様な事はないのでしょうか?

★②の期待値としては、常にLOW-VALUEであって欲しいのですが。

何方か、詳しい方ご教授願います!

質問者からの補足コメント

  • うーん・・・

    SC88-9121-04 COBOLプログラミングやSC88-4745-00 COBOL言語解説書を調べてみましたが見あたりません。記載箇所があれば合わせて教えてください!
    ※パラメータのレングスだけでも0で引き渡されると助かるのですが…

      補足日時:2015/07/31 08:35

A 回答 (1件)

>②でプログラムをメモリーへ展開する際、プログラムへ引き渡す際


>パラメータが無い時、LINKAGEのJCL-PARM領域には何がセットされるのでしょうか?
上記質問の意味が判りません。
以下の記載と同じと思うのですが、何が違うのでしょうか?
>②パラメータを指定せず実行すると
>//STEP010 EXEC PGM=TESTPRG1
> ◎JCL-PARM-LENの値は、0となる。
つまり、「メモリーへ展開する際、プログラムへ引き渡す際」と「実行する」の質問上での違いは何でしょう?

質問が不明瞭と思いながらも強いて回答を付けるとしたら、プログラムがメモリに展開された段階ではJCL-PARM領域の値は不定。実行権が渡る段階ではJCL-PARM-LENの値に0が設定されJCL-PARM-INFOの値は不定です。
LOW-VALUEを期待していると、コンパイラのバージョンアップ等により保障されなくなることが考えられるので不安を残します。どうしてもと言うなら、プログラムの最初でJCL-PARM-LEN=0ならLOW-VALUEを設定すべきでしょう。
(特定のコンパイラについての話では無く、COBOL一般で考えての回答としています)
    • good
    • 0
この回答へのお礼

yokohamahope様
不明瞭な質問にも関わらず、ご教授頂き有難うございます。
実行権が渡る段階でJCL-PARM-LENの値に0が設定されとの事。
JCL-PARM-LEN‡0の時のみ、JCL-PARM-INFOの内容を参照する様に致します。

これで、一安心です。有難うございました!

お礼日時:2015/07/31 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!