PL/1 provides a number of storage attributes. The default is AUTOMATIC, which is allocated on entry to a block,possibly with initialization, and freed at exit. STATIC storage exists throughout the life of the program,CONTROLLED strorage must be explicitly allocated by the program, analogous to a pushdown stack in which freeing the current generation pops up the previous allocationif any. BASED storage provides a mapping for storage otherwise allocated or referenced, or may also be explicitly allocated and freed. EXTERNAL storage resembles STATIC, but may be referenced by other separately-compiled programs