$CALL issues a call to another routine and performs the following actions: 1. Searches a list of linkage pairs referenced in previous invocations of the $CALL and $LINKAGE_PAIR macros. If a linkage pair is already in the list, $CALL uses the linkage pair from the previous invocation. Otherwise, $CALL stores the linkage pair of the called routine in the caller's linkage section and adds the linkage pair to the caller's list. If you use $CALL within a routine defined with the $ROUTINE macro, $CALL and $LINKAGE_PAIR reset the list of linkage pairs for each routine. 2. Allocates stack space for arguments if necessary. 3. Generates instructions to load the arguments to the called routine. 4. Sets the value in the argument information register, R25. 5. Generates the following instruction sequence to perform the actual call based on the location of the linkage pair generated from step 1 and the address specified or defaulted with the LS argument. The register specified with the Rls argument is assumed to point to the base of the linkage section as shown in the following example: LDQ R26, code_address_offset(Rls) ; load code address LDQ R27, procedure_descriptor_address_offset(Rls) ; load ; procedure ; descriptor ; address JSR R26, R26 6. Frees argument stack space, if any, and if the called routine does not return a value on the stack.