PL/I's default storage class for codice_150 variables is codice_151, similar to that of other block-structured languages influenced by ALGOL, like the "auto" storage class in the C language, and default storage allocation in Pascal and "local-storage" in IBM COBOL. Storage for codice_151 variables is allocated upon entry into the codice_153, procedure, or ON-unit in which they are declared. The compiler and runtime system allocate memory for a stack frame to contain them and other housekeeping information. If a variable is declared with an codice_154, code to set it to an initial value is executed at this time. Care is required to manage the use of initialization properly. Large amounts of code can be executed to initialize variables every time a scope is entered, especially if the variable is an array or structure. Storage for codice_151 variables is freed at block exit: codice_156 or codice_94 variables are used to retain variables' contents between invocations of a procedure or block. codice_95 storage is also managed using a stack, but the pushing and popping of allocations on the stack is managed by the programmer, using codice_102 and codice_160 statements. Storage for codice_94 variables is managed using codice_162, but instead of a stack these allocations have independent lifetimes and are addressed through codice_163 or codice_43 variables.