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

普段ほとんどCOBOLには触らないCOBOL初心者です。暇つぶしに業務のCOBOLソースを読んでいたら下記のような記述があったのですが、REFERENCEとVALUEが何を意味しているのかよくわかりません。

CALL "abc" USING AAA
REFERENCE BBB
VALUE CCC

http://www.tsh-world.co.jp/sp/support/manual/V70 …
上のサイトなどで調べたところ、CALL文にはBY REFERENCEやBY VALUEなどが続く事があるようですが、それとは微妙に異なる気がします。それはBY REFERENCEは参照渡し、BY VALUEは値渡しを指定しているという認識ですので、2つを同時に指定するのはありえないという考えからです(BYの記述がないのも気になりますが)。
何かわかる方おりましたらご教示お願いします。
情報が足りなければ、その旨書いて頂ければ補足いたします。(といっても手元にソースがなかったり)

A 回答 (2件)

COBOLの文法をよく読んでください。



>2つを同時に指定するのはありえないという考えからです
引数毎にBY REFERENCE、BY VALUEが指定できます。

>CALL "abc" USING AAA
>REFERENCE BBB
>VALUE CCC
引数がAAA、BBB、CCCの3個で、
AAAはBY句が省略されているので、BY REFERENCE
BBBはREFERENCEなので、BY REFERENCE
CCCはVALUEなので、BY VALUE
です。
マニュアル読めばすぐに分かること。

参考URL:http://software.fujitsu.com/jp/manual/manualfile …
    • good
    • 0
この回答へのお礼

引数ごとに渡し方を指定しているというところが盲点でした。マニュアルはななめ読みぐらいはしたのですが、色々と不明点や思い込みがあり、理解が及びませんでした。適切な回答をいただきとても助かりました。ありがとうございます。

お礼日時:2011/02/01 22:18

JIS を確認できていないのでちょっとアレなところがありますが....



COBOL には「文法上書かなければならない語句」と「省略してもかまわない語句」とがあります. ここでの BY は「省略してもかまわない語句」であり, 従って BY REFERENCE と REFERENCE とは同義 (VALUE と BY VALUE も同義) です.

今の場合引数は AAA, BBB, CCC の 3つで AAA は省略時解釈による渡し方 (なんだろ? BY REFERENCE かな?), BBB は BY REFERENCE, CCC は BY VALUE で渡すことになります.

参考URL:http://www16.plala.or.jp/hiyokogumi/dic/a_call.h …
    • good
    • 0
この回答へのお礼

BYは省略してもよかったんですね。それとお恥ずかしい話ですが引数を複数渡しているという発想がありませんでした。。。とてもためになりました。ありがとうございます。

お礼日時:2011/02/01 22:12

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