Subroutine Vs. Macro
Macros can only be used in the program the are defined in and only after the definition are expanded at compilation / generation.
Subroutines (FORM) can be called from both the program the are defined in and other programs.
A MACRO is more or less an abbreviation for some lines of code that are used more than once or twice. A FORM is a local subroutine (which can be called external). A FUNCTION is (more or less) a subroutine that is called external.
Since debugging a MACRO is not really possible, prevent the use of them (I’ve never used them, but seen them in action). If the subroutine is used only local (called internal) use a FORM. If the subroutine is called external (used by more than one program) use a FUNCTION.