The enclave defines the scope and visibility of the following
types of data
Automatic
data: Automatic data is allocated with the same value on entry and
reentry into a routine if it has been initialized to that value in
the semantics of the language used, for example, data declared using
the PL/I INIT() option. Values of the data at exit from the routine
are not retained for the next entry into the routine. The scope of
automatic data is a routine invocation within an enclave.
External data: External data persists over the lifetime of an
enclave and retains last-used values whenever a routine is reentered.
The scope of external data is that of the enclosing enclave; all routines
invoked within the enclave recognize the external data. Examples are
C or C++ data
objects of extern storage class, COBOL data items
defined with the EXTERNAL attribute, Fortran common
blocks, and PL/I data
declared as EXTERNAL.
Local data: The scope of local data is
that of the enclosing enclave; however, local data is recognized only
by the routine that defines it. Examples are any C or PL/I variable
with block scope, any Fortran data
declared as AUTOMATIC, and any non-EXTERNAL data item in COBOL.