Passthrough Control Parameters

Control cards can be read with one of the following options:

Option | Description
C | Control statements.
D | Dependency INCLUDE statements.
I | INCLUDE statements.
X | Executable OBJ code (or LOAD/NCAL) data.

These options control what is written to the output file MDHFLAT. The use of this output file is optional and you can pass the original input into the linker.

Option I- INCLUDES

INCLUDES for non-dependency files are always copied to MDHFLAT as they are essential for link processing. For example:

- INCLUDE OBJ(MODULE)

- INCLUDE NCAL(MODULE)

- INCLUDE LOAD(MODULE)

Option D- DEPENDENCY INCLUDES

INCLUDES for dependency files are not generally needed by the linker once all the real INCLUDES that they contain have been flattened out. However, you can request them as follows:

- -pd0: does not include dependency includes.

- -pd1: (default) includes dependency includes.

For example:

- INCLUDE DEP(MYDEPS)

- INCLUDE OBJ(MYDEPS)

The nature of the include is decided by the data that the member contains. A member that has no executable code, but does have other INCLUDE statements, is considered to be a dependency file.

Option C - Control Cards

Other control cards may be encountered and you can optionally include them in the output:

- -pc0: does not output control cards.

- -pc1: (default) outputs control cards

Example:

NAME FOOBAR(R)

Option X - Executable Code

There are three methods that you can use to handle modules that mix executable (OBJ) records with control statements:

- -px0: does not output the OBJ code, but continues scanning for embedded control cards (if the PDS is FB-80).

- -px1: outputs the OBJ data directly into MDHFLAT. This produces ’instream’ OBJ records for the linker.

- -px2: (default) when an x record is encountered, stops scanning for includes, and marks this as a non-dependency file.

Order of Output Lines

You can optionally output the INCLUDE line before or after the data that the included file contains. If the control statements refer to particular modules, ordering is important, and -po1 (the default) is recommended. For example, some control statements refer to the CSECT that comes next in the data stream.

- -po0: uses the recursive order (depth first). The body is expanded first.

- -po1: (default) uses the normal order. The INCLUDE line comes before the body.

Examples:

Content of the file MODA:

A-START

INCLUDE OBJ(MODB)

A-END

Content of the file MODB:

B-START

INCLUDE OBJ(MODC)

B-END

Content of the file MODC:

C-START

C-END

Content of MDHFLAT using -po0:

A-START

B-START

C-START

C-END

INCLUDE OBJ(MODC)

B-END

INCLUDE OBJ(MODB)

A-END

INCLUDE OBJ(MODA)

Content of MDHFLAT using -po1:

INCLUDE OBJ(MODA)

A-START

INCLUDE OBJ(MODB)

B-START

INCLUDE OBJ(MODC)

C-START

C-END

B-END

A-END