Programmers are advised to use externrefs, though GT.M will continue to support the $ZCALL function. Externrefs have the following advantages:
Externrefs are part of the MDC Type A standard, while the $ZCALL function is not standard.
Externrefs may serve as a subroutine or a function, while $ZCALL may serve only as a function.
Externrefs allow you to pass variables by reference, while the $ZCALL function does not.
Externrefs are easier to read because the arguments correspond exactly to the input lines in the external call table. In the $ZCALL function, on the other hand, the first argument specifies the callname; the second argument thus corresponds to the first input line, the third argument to the second input line, and so on. This is explained further in the section on "External Call Tables", below.
Externrefs may be faster because their addresses can be resolved by the linker rather than at run-time.