CALL 声明

COBOL 可以使用静态链接进行以下语句。对于编译时已知的所有外部符号,GnuCOBOL 默认使用动态链接,即使符号是文字:

CALL "subprogram" USING a b c *> run a (possibly static linked) sub program
                              *> passing three fields

CALL some-prog USING a b c    *> some-prog is a PIC X item and can be changed
                              *> at run-time to do a dynamic lookup

此语句强制编译时链接编辑解析。 (非标准,语法扩展)

CALL STATIC "subprogram" USING a b c

COBOL 中的字段可以传递 BY REFERENCE(默认情况下,直到覆盖 - 覆盖是从左到右的顺序),BY CONTENT(副本通过参考传递),或者在某些情况下直接传递给 BY VALUE

CALL "calculation" USING BY REFERENCE a BY VALUE b BY CONTENT c RETURNING d
    ON EXCEPTION DISPLAY 'No linkage to "calculation"' UPON SYSERR
END-CALL 

COBOL 被设计为 BY REFERENCE 语言,因此使用 BY VALUE 可能会出现问题。例如,字面数字没有显式类型,COBOL 规范没有明确的类型提升规则。因此,开发人员不得不担心使用 BY VALUE 文字进行调用框架设置。

有关详细信息,请参见 http://open-cobol.sourceforge.net/faq/index.html#call