Would you please describe the use of the #BALI macro? For example, when is it required, and what exactly does it do?
Either by INCLUDE IDMSBALI during link edit or by coding the #BALI macro in your user-mode assembler application program, you are including IDCSACON in your program which is a small CSECT that contains a fullword to hold the IDMS CSA address which is needed for many IDMS Assembler commands/macros.
DML REF GUIDE ASSEMBLER
Chapter: DML Precompile, Assembly, and Link-Edit JCL
section Link-Edit Considerations
"The modules involved in the link edit of an application program contain six external references. Some must be resolved depending on the mode of operation. The following table lists and explains the external references; unresolved references should be checked against this table to ensure proper linkage to the program."
Relevant portion of the table:
Should be resolved
Must be resolved; alternatively, include the #BALI macro in the application program if you use the #RETURN macro