rig*_*old 5 cobol calling-convention
COBOL 中的语句BY CONTENT
和语句之间有什么区别?BY VALUE
CALL
BY CONTENT
在a CALL
上将标识符的内容复制到编译器管理的存储区域,然后隐式地将其"通过引用"传递给CALLed程序.
这意味着CALLed程序可以更改数据,但CALLed程序中的任何更改都不会影响CALLing程序中的原始数据.
对于编译器有效的任何大小的任何标识符都可以按BY CONTENT使用(受限于任何限制,如果存在,则为特定编译器记录 - 您永远不知道).
虽然您可以更改CALLed程序中的值,但这样做似乎有点模糊.
BY VALUE
是一个完全不同的野兽.它非常有限,因为"传递"的值可以是"整数"或单字节的字母数字值.它也可以是文字.
在PROCEDURE DIVISION USING ...
已经知道,在通过值的情况下,即是如此,通过以等同的方式将其指定到呼叫.关于CALL的参考和内容都是程序划分使用的参考.
具体如何实现取决于具体的编译器.IBM Enterprise COBOL将值本身放在"参数列表"中.