Let's dive into program calls, and as you can see here there's just a whole lot going on. The scenario picture gives us an opportunity to discuss cross memory services and advanced address space facilities. The user issues a link passing controls to the program manager. The program manager as part of its search algorithm, will program call across to the library, look aside the LLA. Because the module has been cached in the LLA data space, LLA will then program call across to the VLF address space. VLF will use advanced address-based facilities to move a copy of the module from the data space to the user's address space. That's how it ends up over there. When the user task was originally dispatched, control registers 1,7, and 13, had identical content, that is, all three pointed to the users segment table. When those registers are not equal, we are now by definition, in cross memory mode. The PC oath address space, which has already been discussed in part is important to this topic. It has tables which make the execution of a program call possible. In order for linkage to work, the called program must save the status of its caller. z/OS provides each unit of work, that's the TCB or SRB, with its own area called the linkage stack to save the execution state information. The linkage stack is used to save status information automatically for a stacking program call instruction. When the program call instruction is issued, the calling programs address register, general register, PSW, and so forth are automatically saved by the processor in the linkage stack. Control is then returned to the calling program with the program register instruction, which also restores the callers status from the linkage stack and removes the entry from the stack. The branch and stack instruction also uses the linkage stack for the branch type of program linkage. Branch and stack is shortened to BAKR., and it's used upon entry to the receiving routine to save the status of the caller. The program return then returns control to the calling program and life goes on. The linkage stack is an area of protected storage which the system gives a program in order to save status information at the time of a branch or program call. Saving status is an important part of addressability and a required part of program linkage. This status includes general purpose registers, access registers, the PSW, and other important information. The first thing of program does when it receives control, is saves the status and the last thing a program does before it returns control is, restore the status. Perhaps the best way to save and restore status is to allow the system to do it for you through the linkage stack, and the linkage stack saves you work by doing the following. First of, the chain of status save areas is located in one place rather than all throughout storage, so diagnostic information appears in sequence on the stack. Second, the linkage stack provides a place for re-entrant programs to save the caller's complete status before the re-entrant programs dynamically obtain the working storage. Then once a program has saved the caller status on its linkage stack, it has all of the general purpose registers and address registers available to establish its working environment. Third, your programs do not have to obtain and chains 72 bytes save areas, providing all caller programs are using the linkage stack. We can envision the linkage stack here. We've got a call from Program 1 to Program 2, and all of the callers status automatically goes into the linkage stack. Then when Program 2 returns to Program 1, it automatically restores all the callers status and removes the entry from the linkage stack. The system provides each work unit. The TCBs is an SRBs with its own linkage stack. The stack is then available to all programs which the work unit represents. Those programs can run in primary or address-based control mode, ASC. In the next lesson, we'll cover access registers and how to establish the addressability.