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 。