Chapter Contents

Previous

Next
Preprocessing, Compiling, and Linking

COOL Options

COOL Options lists the options available for the COOL utility and the systems to which these options apply. A description of each option follows the table.

COOL Options
Option TSO CMS OS/390 Batch
ALLRESIDENT
X X
AUTO

X
CICS
X X
CICSVSE
X X
CXX
X X
ENTRY
X

ENXREF
X X X
EXTNAME
X X X
GLOBAL

X
LIB
X

LKED

X
LOAD
X
X
LOADLIB
X

PREM
X X X
PRINT
X
SPE
X X
TERM
X X X
UPPER
X X X
WARN
X X X

ALLRESIDENT
specifies use of the all-resident library. Under CMS, this option issues GLOBAL TXTLIB commands for LCARES, LC370BAS, and LC370STD TXTLIBs. Under TSO, the following keyword, when used with either the CICS or CICSVSE keywords, names SASC.CICS.ARESOBJ, SASC.CICSOBJ, and SASC.BASEOBJ to be used automatically as call libraries:

ALLRESIDENT
This option should be specified when linking all-resident programs. See also the CICS and CICSVSE options.

AUTO
specifies that COOL should resolve external references by searching for object files whose filenames match the external reference. This is the default. NOAUTO suppresses resolution of external references by object files. The AUTO option is similar to the AUTO option of the CMS LOAD command. When AUTO is in effect, COOL attempts to resolve external references by searching for files named ref TEXT, where ref is the name of the external reference. If no TEXT file with that name can be found, COOL attempts to resolve the reference from the GLOBAL TXTLIBs.

CICS
under CMS, makes the required TEXT libraries global for linking programs that execute in CICS. Usually, the LC370BAS and LC370CIC TXTLIBs are global. If you specify this option with the ALLRESIDENT option, the CICSARES, LC370CIC, and LC370BAS TXTLIBs are global. If you specify this option with the SPE option, the LC370BAS and LC370SPC TXTLIBs are global.

Under TSO, by default, this option specifies that SASC.BASEOBJ and SASC.CICSOBJ are to be used automatically as call libraries. If you specify this option with the ALLRESIDENT option, the SASC.CICS.ARESOBJ data set is also used as an autocall library. If you specify this option with the SPE option, the SASC.CICS.SPEOBJ and SASC.BASEOBJ data sets are used automatically as call libraries.

CICSVSE
under CMS, makes the required TEXT libraries global for linking programs that execute in CICS under VSE. Usually, the LC370BAS and LC370VSE TXTLIBs are global. If you specify this option with the ALLRESIDENT option, the CICSARES, LC370VSE, and LC370BAS TXTLIBs are global. If you specify this option with the SPE option, the LC370BAS and LC370SPC TXTLIBs are global.

Under TSO, by default, this option specifies that SASC.BASEOBJ and SASC.VSEOBJ are to be used automatically as call libraries. If you specify this option with the ALLRESIDENT option, the SASC.CICS.ARESOBJ data set is also used as an autocall library. If you specify this option with the SPE option, the SASC.CICS.SPEOBJ and SASC.BASEOBJ data sets are used automatically as call libraries.

CXX
specifies that the object code being linked is produced by compiling output from the C++ translator. This option must be used when linking C++ translator output. NOCXX specifies that the object code being linked is not produced by compiling output from the C++ translator. NOCXX is the default.

ENTRY
under TSO, identifies the program's entry point, or allows the linkage editor to determine the entry point when written in the following format:

ENTRY (name)

The ENTRY keyword can be specified in the following ways:

ENTRY(MAIN)
for a program containing a main function. The actual entry point is MAIN.

ENTRY(DYN)
for a re-entrant, dynamically loaded (via loadm ) module. The actual entry point is #DYNAMN.

ENTRY(CSPE)
for a CICS SPE application with initial function cicsmain . The actual entry point is #CICSEP.

ENTRY(NONE)
to allow the linkage editor to select the entry point itself. Use of ENTRY(NONE) is recommended only if a linkage-editor ENTRY statement is present in one of the input files.

If ENTRY is not specified, ENTRY(MAIN) is assumed, unless SPE is specified; in that case, ENTRY(NONE) is assumed.

ENXREF
controls the production of one or more of the three cross-references generated by COOL in a table that follows all other COOL output. These three cross-references are SNAME , CID , and LINKID . The cross-reference SNAME is in alphabetic order by the SNAME that uniquely identifies an object file. CID displays the extended names in alphabetic order by the C identifier. LINKID displays the extended names in alphabetic order by a linkid that COOL assigns. NOENXREF suppresses the production of all extended names cross-references.

Under TSO, the ENXREF option takes the following form:

ENXREF('NOSNAME,NOCID,NOLINKID')

For example, the following option suppresses the SNAME cross-reference:

ENXREF('NOSNAME')

Under CMS, the ENXREF option takes the following form: 9pt

ENXREF <NOSNAME> <NOCID> <NOLINKID>

For example, the following option suppresses the SNAME cross-reference:

ENXREF NOSNAME

Under OS/390 batch, the ENXREF option takes the following form:

ENXREF(NOSNAME,NOCID,NOLINKID)

For example, the following option suppresses the SNAME cross-reference:

ENXREF(NOSNAME)

EXTNAME
specifies that COOL is to process extended names. This is the default. NOEXTNAME specifies that COOL will not process extended names.

The SAS/C Compiler provides extended names support that enables compiler processing of extended names of up to 64K in length. An extended name is any name that identifies an external variable, or that identifies an external or static function and fits either of the following criteria:

Note:    If you specify the EXTNAME option, be sure to include the appropriate header files for library functions that you use. Some library functions, such as localtime and setlocale , are more than eight characters long and, therefore, fit the criteria for extended names. The library header files for these functions all contain #pragma map statements that change the function names to names that are not extended.  [cautionend]

If you do not include the appropriate library header file for a library function, the compiler creates unpredictable external symbols that cannot be resolved from the standard library. For more information on #pragma map , refer to Chapter 2, "Source Code Conventions," in the SAS/C Compiler and Library User's Guide.

GLOBAL
specifies that the COOL EXEC should query the GLOBALV variable TXTLIBS in the group LC370 for the name or names of TXTLIBs that are to be global before COOL begins execution. This is the default. NOGLOBAL suppresses automatic query of the GLOBALV variable TXTLIBS: the EXEC does not issue a GLOBAL TXTLIB command based on the GLOBALV variable.

LIB
specifies the data set name of an autocall object library containing functions that are to be linked automatically into the program if referenced. (Load module libraries cannot be used.) Here is the form of the keyword:
LIB (dsname)
If the library belongs to another user, the fully qualified name of the data set must be given, and the name must be preceded and followed by three apostrophes. No final qualifier is assumed for a LIB data set.

LKED
specifies that the COOL EXEC is to issue an LKED command for COOL370 TEXT using the LKED options specified. The LKED option must follow any use of any other option on the command line. The LKED option causes the COOL EXEC to issue the following CMS command after COOL has created the COOL370 TEXT file:
LKED COOL370 (options)
where options are any LKED command options specified following the LKED keyword.

LOAD
names the data set into which the linkage editor stores the output load module. Typically, this will be the name of an application load library appearing in the CICS DFHRPL DDname concatenation of libraries. Here is the form of the keyword:
LOAD(dsname)

This keyword should specify a partitioned data set member. If the data set belongs to another user, the fully qualified name of the data set must be given, and the name must be preceded and followed by three apostrophes. If the data set name is not specified within three apostrophes, it is assumed to be a data set name with a final qualifier of LOAD . Additional considerations follow:

LOADLIB
specifies the data set name of an autocall load library containing functions that are to be linked automatically into the program if referenced. Here is the form of the keyword:
LOADLIB(dsname)

If the library belongs to another user, the fully qualified name of the data set must be given, and the name must be preceded and followed by three apostrophes. Functions in the LOADLIB data set are resolved by the linkage editor, not by COOL. COOL diagnoses these functions as unresolved. No final qualifier is assumed for a LOADLIB data set. You must use LOADLIB , rather than LIB , to reference libraries that are associated with IBM products such as ISPF and GDDM because those libraries are stored in load module format.

PREM
specifies that COOL is to remove pseudoregisters from the output object module. COOL creates a pseudoregister map. NOPREM specifies that COOL is not to remove pseudoregisters from the output object module. PREM is the default under CMS; NOPREM is the default under OS/390. The PREM option is rarely used in TSO or under OS/390. However, if you are linking programs for CICS/VSE, you must specify this option.

PRINT
indicates the destination for COOL and linkage editor output listings. The following keyword indicates that the COOL and linkage editor output listings should be printed at the terminal:
PRINT(*)

The following keyword specifies that the COOL and linkage editor listings should be stored in the named data set:

PRINT (dsname)

This data set must be sequential; a partitioned data set member is not allowed. If the data set belongs to another user, the fully qualified name of the data set must be given, and the name must be preceded and followed by three apostrophes. If the data set name is not specified within three apostrophes, it is assumed to be a data set name with a final qualifier of LINKLIST.

The following keyword specifies that no linkage editor or COOL listing is to be produced:

NOPRINT

If you use the NOPRINT operand with CLK370, COOL and linkage-editor output (except for diagnostic messages) is suppressed.

If neither PRINT nor NOPRINT is used, the default is NOPRINT .

SPE
When SPE is used while also specifying the CICS or CICSVSE keywords, the CICS SPE libraries are used to link the application. Under CMS, the GLOBAL TXTLIB command is issued for the LC370SPC and LC370BAS TXTLIBs. Under TSO, the GLOBAL TXTLIB command causes the SASC.CICS.SPEOBJ and SASC.BASEOBJ data sets to be used automatically as call libraries.

TERM
specifies that COOL error messages be written to stderr (SYSTERM) in addition to stdout . NOTERM suppresses the error message listing to stderr . This is the default.

UPPER
produces all output messages in uppercase.

WARN
specifies that warning messages (which are associated with RC=4) be issued. This is the default. NOWARN suppresses warning messages.


Chapter Contents

Previous

Next

Top of Page

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.