Generation Panel

Options on this panel define the output generated by the compiler.

See General Dialog Help for information on *CMDDFT settings and pushbutton help.

Generation options

Authority
Specifies the object authority to users who do not have specific authority to the object. The user may not be on the authorization list, or whose group has no specific authority to the object. You can select one of the following values in this field::

*CMDDFT
Refers to the object authority currently set as default for your system.

*LIBCRTAUT
Public authority for the object is taken from the CRTAUT keyword of the target library (the library that contains the created object). This value is determined when the object is created. If the CRTAUT value for the library changes after the object is created, the new value does not affect any existing objects.

*ALL
Provides authority for all operations on the object except those that are limited to the owner or controlled by the authorization list management authority. Any user can control the object's existence, specify its security, and perform basic functions on it but cannot transfer its ownership.

*CHANGE
Provides all data authority and the authority to perform all operations on the object except those that are limited to the owner or controlled by object authority and object management authority. The object can be changed and basic functions performed upon it.

*EXCLUDE
Users without special authority cannot access the object.

*USE
Provides object operational authority, read authority, and authority for basic operations on the object. Users without specific authority are prevented from changing the object.

Target release
Specifies the release level of the operating system for the object being created. You can select one of the following values in this field:

*CMDDFT
Refers to the release level currently set as default for your system.

*CURRENT
The object being compiled is intended for use on an operating system with the same or greater release level than the operating system currently running on your system. For example, if the compiling system is at release level V2R3M5, selecting this option will produce an object that can run on a system with releaselevel V2R3M5 or greater installed.

*PRV
The object being compiled is intended for use on an operating system one level back from the operating system being used on the compiling system. For example, if the compiling system is at release level V2R3M5, selecting this option will produce an object that can run on a system with release level V2R2 or greater installed.

You can also type the target release-level directly into this field. Specify the release using the format VxRxMx, where Vx is the version, Rx is the release, and Mx is the modification level. For example, V4R3M0 is version 4, release 3, modification level 0.

Optimization
Specifies the level of optimization applied to the compiled object. You can select one of the following values in this field:

*CMDDFT
Refers to the optimization level currently set as default for your system.

10
Generated code is not optimized. This level has the shortest compile time.

20
Some optimization is performed on the generated code

30
Full optimization is performed on the generated code.

40
All optimizations done at level 30 are performed on the generated code. In addition, code is eliminated from procedure prologue and epilogue routines that enable instruction trace and call trace system functions. Eliminating this code enables the creation of leaf procedures. Leaf procedures do not contain calls to other procedures, and procedure calls to leaf procedures are significantly faster than calls to normal procedures.

Enum size
Specifies how much storage an enum will occupy. You can select one of the following values in this field:

*CMDDFT
Uses the enum size currently set as default for your system.

1
Makes all enum variables 1 byte in size.

2
Makes all enum variables 2 bytes in size.

4
Makes all enum variables 4 bytes in size.

*INT
Uses the ANSI C Standard enum size ( 4-bytes signed).

*SMALL
Selects the smallest size that will accomodate the enum variable.

Storage model
Specifies the type of storage (static and automatic) that the module object will use. You can select one of the following values in this field:

*CMDDFT
Refers to the enum size currently set as default for your system.

*SNGLVL
The module or program will use the traditional single level storage model. Static and automatic storage for the object are allocated from single-level store, and can only be accessed using 16-byte pointers. The module may optionally access teraspace dynamic storage if the TERASPACE(*YES) option is specified.

*TERASPACE
The module or program will use the teraspace storage model. This storage model provides up to a 1-terabyte local address space for a single job. Static and automatic storage for the object are allocated from teraspace and can be accessed using either 8-byte or 16-byte pointers.

*INHERIT
The module created can use either single level or teraspace storage. The type of storage used will depend on the type of storage required by the caller.

Intermediate language data
If this checkbox is selected, intermediate language data is stored with the object module being compiled.

Default char type
If this checkbox is selected, the compiler treats char as a signed type. Otherwise, char is treated as an unsigned type.

Profiling data
If this checkbox is selected, program profiling is turned on for the program or module being compiled. Code is generated that will collect profiling data at object creation time, including the number of times basic block within procedures are executed and the number of times procedures are called. Profiling can improve the use of cache lines and memory pages in ILE applications, leading to better program performance.

Notes:

  1. You cannot profile a stand-alone *MODULE object.

  2. This option has effect only when the following options on the Generation options panel are also enabled:
    • Optimization is set to *FULL, 30, or higher.
    • Target release is set to *CURRENT.

Teraspace options

Teraspace storage addresses
If this checkbox is selected, the compiler will generate code enabled to handle teraspace storage addresses, including parameters passed from other teraspace-enabled programs and service programs. Selecting this checkbox also enables the following checkbox:

Teraspace storage functions
If this checkbox is selected, the compiler will use teraspace versions of storage functions, such as malloc or schmat, without requiring changes to the program source code. The compiler defines the __TERASPACE__ macro, and maps certain storage function names to their teraspace-enabled equivalents. For example, selecting this compiler option causes the malloc() storage function to be mapped to _C_TS_malloc().

If this checkbox is not selected, the compiler will not use teraspace-enabled versions of storage functions, such as malloc() or schmat().