Translator options

The command-level language translator has a list of options that you can select from to translate your COBOL, C, C++, PL/I, and Assembler programs. Each translator option is explained and lists the languages that you can use it with.

APOST
(COBOL only)
APOST indicates that literals are delineated by the apostrophe or a quotation mark. QUOTE is the alternative option, which indicates double quotation marks.

This translator option determines the appropriate value for all delimiters in COBOL source code, including those in copybooks, CICS® statements and COBOL literals in the source. Although COBOL allows delimiters in COBOL source code to be apostrophes, quotation marks, or a mix of both in the same program, if the CICS stand-alone translator is used, then all beginning and ending delimiters in the COBOL program must match the CICS option specified. Literals continued across multiple lines must also start and end with the specified delimiter.

Note that the CICS-supplied COBOL copybooks have a single quotation mark. If you are using any CICS-supplied copybooks in your application to interface to a CICS component, ensure that you use the APOST option, not the QUOTE option, and code the delimiters in your program accordingly.

CBLCARD
(COBOL only) Abbreviation: CBL
CBLCARD specifies that the translator is to generate a CBL statement. CBLCARD is the default; the alternative is NOCBLCARD.

The COBOL compiler LIB option is not required for COBOL Version 5 and later. The compiler options that result from the CBLCARD translator option do not include the LIB option. When translating source to be processed by COBOL compilers earlier than Version 5, you must specify the LIB option without relying on CBLCARD.

CICS
CICS specifies that the translator is to process EXEC CICS commands. It is the default specification in the translator. CICS is also an old name for the XOPTS keyword for specifying translator options, which means that you can specify the CICS option explicitly either by including it in your XOPTS list, or by using it in place of XOPTS to name the list. The only way to indicate that there are no CICS commands is to use the XOPTS keyword without the option CICS . You must do this in a batch DL/I program using EXEC DLI commands. For example, to translate a batch DL/I program written in assembler language, specify:
*ASM XOPTS(DLI)
To translate a batch program written in COBOL, containing EXEC API commands, specify:
CBL XOPTS(EXCI)
COBOL2
(COBOL only) Abbreviation: CO2
COBOL2 specifies that the translator is to generate temporary variables for use in the translated EXEC statements. In all other respects, the program is translated in the same manner as with the COBOL3 option. COBOL2 and COBOL3 are mutually exclusive. COBOL2 is the default for COBOL.
Note: If you specify COBOL2 and COBOL3 by different methods, the COBOL3 option is always used, regardless of where the two options have been specified. If you specify both COBOL2 and COBOL3 , the translator issues a warning message.
COBOL3
(COBOL only) Abbreviation: CO3
COBOL3 specifies that the translator is to translate programs that are Language Environment-conforming. COBOL3 and COBOL2 options are mutually exclusive. For information about which Language Environment-conforming compilers are available, see Programming languages and Language Environment.
CPP
(C++ only)
CPP specifies that the translator is to translate C++ programs for compilation by a supported C++ compiler.
CPSM
CPSM specifies that the translator is to process EXEC CPSM commands. The alternative is NOCPSM , which is the default.
DBCS
(COBOL only)
DBCS specifies that the source program might contain double-byte characters. The DBCS option causes the translator to treat hexadecimal codes X'0E' and X'0F' as shift-out (SO) and shift-in (SI) codes, respectively, wherever they appear in the program.
For more detailed information about how to program in COBOL using DBCS, see the section on DBCS character strings in Enterprise COBOL for z/OS Language Reference.
DEBUG
(COBOL, C, C++, and PL/I only)
DEBUG instructs the translator to produce code that passes the line number through to CICS for use by the execution diagnostic facility (EDF). DEBUG is the default; NODEBUG is the alternative.
DLI
DLI specifies that the translator is to process EXEC DLI commands. You must specify it with the XOPTS option, that is, XOPTS(DLI).
EDF
EDF specifies that the execution diagnostic facility is to apply to the program. EDF is the default; the alternative is NOEDF.
EPILOG
(Assembler language only)
EPILOG specifies that the translator is to insert the macro DFHEIRET at the end of the program being translated. DFHEIRET returns control from the issuing program to the program which invoked it. If you want to use any of the options of the RETURN command, use RETURN and specify NOEPILOG.

EPILOG is the default; the alternative NOEPILOG prevents the translator from inserting the macro DFHEIRET. (See DFHECALL macro for programming information about the DFHEIRET macro.)

EXCI
EXCI specifies that the translator is to process EXEC API commands for the External CICS Interface (EXCI). EXCI API commands must be used only in batch programs, and so the EXCI translator option is mutually exclusive to the CICS translator option, or any translator option that implies the CICS option. An error message is produced if both CICS and EXCI are specified, or EXCI and a translator option that implies CICS are specified.
The EXCI option is also mutually exclusive to the DLI option. EXEC API commands for the External CICS Interface cannot be coded in batch programs using EXEC DLI commands. An error message is produced if both EXCI and DLI translator commands are specified.
The EXCI translator option is specified by XOPTS , that is, XOPTS(EXCI).
FEPI
FEPI allows access to the FEPI API commands of the CICS Front End Programming Interface (FEPI). The alternative is NOFEPI . For more information about FEPI, see Developing with the FEPI API.
FLAG (I, W, E, or S)
(COBOL, C, C++, and PL/I only) Abbreviation: F
FLAG specifies the minimum severity of error in the translation that requires a message to be listed.
I
All messages.
W
(Default) All except information messages.
E
All except warning and information messages.
S
Only severe and unrecoverable error messages.
GDS
(C, C++, and assembler language only)
GDS specifies that the translator is to process CICS GDS (generalized data stream) commands. For programming information about these commands, see CICS API commands.
GRAPHIC
(PL/I only)
GRAPHIC specifies that the source program might contain double-byte characters. The GRAPHIC option causes the translator to treat hexadecimal codes X'0E' and X'0F' as shift-out (SO) and shift-in (SI) codes, respectively, wherever they appear in the program.
It also prevents the translator from generating parameter lists that contain the shift-out and shift-in values in hexadecimal form. Wherever these values would ordinarily appear, the translator expresses them in binary form, so that there are no unintended DBCS delimiters in the data stream that the compiler receives.
If the compiler you are using supports DBCS, you need to prevent unintended shift-out and shift-in codes, even if you are not using double-byte characters. Prevent unintended shift-out and shift-in codes by specifying the GRAPHIC option for the translator, so that it does not create them, or by specifying NOGRAPHIC on the compile step, so that the compiler does not interpret them as DBCS delimiters.
For more detailed information about how to program in PL/I using DBCS, see the relevant language reference manual.
LEASM
(Assembler language only)
LEASM instructs the translator to generate code for a Language Environment-conforming assembler MAIN program.
If the LEASM option is specified, the DFHEISTG, DFHEIENT, DFHEIRET, and DFHEIEND macros expand differently to create a Language Environment-conforming assembler MAIN program, instead of the form of macro expansion used for assembler subroutines in a CICS environment. The LEASM option allows customer programs that have used NOPROLOG and NOEPILOG and coded their own DFHEIENT and other macros to take advantage of Language Environment support without changing their program source. For example, all programs that require more than one code base register are in this category because the translator does not support multiple code base registers.

For an example of an assembler program translated using the LEASM option, see Example assembler language program with LEASM.

LENGTH
(COBOL, assembler language and PL/I only)
LENGTH instructs the translator to generate a default length if the LENGTH option is omitted from a CICS command in the application program. The alternative is NOLENGTH.
LINECOUNT(n)
Abbreviation: LC
LINECOUNT specifies the number of lines to be included in each page of translator listing, including heading and blank lines. The value of n must be an integer in the range 1 through 255; if n is less than 5, only the heading and one line of listing are included on each page. The default is 60.
LINKAGE
(COBOL only) Abbreviation: LIN
LINKAGE requests the translator to modify the LINKAGE SECTION and PROCEDURE DIVISION statements in top-level programs according to the existing rules.
This means that the translator inserts a USING DFHEIBLK DFHCOMMAREA statement in the PROCEDURE DIVISION, if one does not exist, and ensures that the LINKAGE SECTION (creating one if necessary) contains definitions for DFHEIBLK and DFHCOMMAREA.
LINKAGE is the default; the alternative is NOLINKAGE.
MAIN
(C only)
MAIN specifies the program contains a main procedure and so the translator will include structures and declarations for the CICS API. This is the default.
MARGINS(m,n[,c])
(C, C++, and PL/I only) Abbreviation: MAR
MARGINS specifies the columns of each line or record of input that contain language or CICS statements. The translator does not process data that is outside these limits, though it does include it in the source listings.
The MARGINS option can also specify the position of an American National Standard printer control character to format the listing produced when the SOURCE option is specified; otherwise, the input records are listed without any intervening blank lines. The margin parameters are as follows:
m
Column number of left margin.
n
Column number of right margin. It must be greater than m.
Note: When used as a C or C++ compiler option, the asterisk (*) is allowable for the second argument on the MARGIN option. For the translator, however, a numeric value between 1 and 100 inclusive must be specified. When the input data set has fixed-length records, the maximum value allowable for the right margin is 80. When the input data set has variable-length records, the maximum value allowable is 100.
c
Column number of the American National Standard printer control character. It must be outside the values specified for m and n. A zero value for c means no printer control character. If c is nonzero, only the following printer control characters can appear in the source:
(blank)
Skip one line before printing.
0
Skip two lines before printing.
-
Skip three lines before printing.
+
No skip before printing.
1
New page.
The default for C and C++ is MARGINS(1,72,0) for fixed-length records, and for variable-length records it is the same as the record length (1,record length,0). The default for PL/I is MARGINS(2,72,0) for fixed-length records, and MARGINS(10,100,0) for variable-length records.
NATLANG(EN or KA)
NATLANG specifies which language is to be used for the translator message output:
CS
Simplified Chinese.
EN
(Default) English.
KA
Kanji.
(Take care not to confuse this option with the NATLANG API option.)
NOCBLCARD
(COBOL only)
NOCBLCARD specifies that the translator is not to generate a CBL statement. The compiler options that CICS requires are specified by the DFHYITVL procedure. Ensure that RENT and NODYNAM are specified.
NOCPSM
NOCPSM specifies that the translator is not to process EXEC CPSM commands. NOCPSM is the default, the alternative is CPSM.
NODEBUG
(COBOL, C, C++, and PL/I only)
NODEBUG instructs the translator not to produce code that passes the line number through to CICS for use by the execution diagnostic facility (EDF).
NOEDF

NOEDF specifies that the execution diagnostic facility is not to apply to the program. There is no performance advantage in specifying NOEDF , but the option can be useful to prevent commands in well-debugged subprograms appearing on EDF displays.

NOEPILOG
(Assembler language only)
NOEPILOG instructs the translator not to insert the macro DFHEIRET at the end of the program being translated. DFHEIRET returns control from the issuing program to the program which invoked it. If you want to use any of the options of the EXEC CICS RETURN command, use EXEC CICS RETURN and specify NOEPILOG. NOEPILOG prevents the translator inserting the macro DFHEIRET. The alternative is EPILOG , which is the default.
NOFEPI
NOFEPI disallows access to the FEPI API commands of the CICS Front End Programming Interface (FEPI). NOFEPI is the default; the alternative is FEPI.
NOLENGTH
(COBOL, assembler language and PL/I only)
NOLENGTH instructs the translator not to generate a default length if the LENGTH option is omitted from a CICS command in the application program. The default is LENGTH.
NOLINKAGE
(COBOL only)
NOLINKAGE requests the translator not to modify the LINKAGE SECTION and PROCEDURE DIVISION statements to supply missing DFHEIBLK and DFHCOMMAREA statements, or insert a definition of the EIB structure in the LINKAGE section.
The NOLINKAGE option means that you can provide COBOL copybooks to define a COMMAREA and use the EXEC CICS ADDRESS command.
LINKAGE is the default.
NOMAIN
(C only)
NOMAIN specifies the program does not contain a main procedure and so the translator will not include structures for the CICS API. The DFHEIPTR pointer is declared as external. This allows multiple C programs to be link-edited together.
NONUM
(COBOL only)
NONUM instructs the translator not to use the line numbers appearing in columns one through six of each line of the program as the line number in its diagnostic messages and cross-reference listing, but to generate its own line numbers. NONUM is the default, the alternative is NUM.
NOOPSEQUENCE
(C, C++, and PL/I only) Abbreviation: NOS
NOOPSEQUENCE specifies the position of the sequence field in the translator output records. The default for C and C++ is OPSEQUENCE(73,80) for fixed-length records and NOOPSEQUENCE for variable-length records. For PL/I, the default is OPSEQUENCE(73,80) for both types of records.
NOOPTIONS
Abbreviation: NOP
NOOPTIONS instructs the translator not to include a list of the options used during this translation in its output listing.
NOPROLOG
(Assembler language only)
NOPROLOG instructs the translator not to insert the macros DFHEISTG, DFHEIEND, and DFHEIENT into the program being assembled. These macros define local program storage and execute at program entry.
NOSEQ
(COBOL only)
NOSEQ instructs the translator not to check the sequence field of the source statements, in columns 1-6. The alternative, SEQ , is the default. If SEQ is specified and a statement is not in sequence, it is flagged.
NOSEQUENCE
(C, C++, and PL/I only) Abbreviation: NSEQ
NOSEQUENCE specifies that statements in the translator input are not sequence numbered and that the translator must assign its own line numbers.
The default for fixed-length records is SEQUENCE(73,80). For variable-length records in C and C++, the default is NOSEQUENCE and for variable-length records in PL/I, the default is SEQUENCE(1,8).
NOSOURCE
NOSOURCE instructs the translator not to include a listing of the translated source program in the translator listing.
NOSPIE
NOSPIE prevents the translator from trapping unrecoverable errors; instead, a dump is produced. Use NOSPIE only when requested to do so by the IBM® support center.
NOVBREF
(COBOL, C, C++ and PL/I only)
NOVBREF instructs the translator not to include a cross-reference of commands with line numbers in the translator listing. ( NOVBREF used to be called NOXREF; for compatibility, NOXREF is still accepted.) NOVBREF is the default, the alternative is VBREF.
NUM
(COBOL only)
NUM instructs the translator to use the line numbers appearing in columns one through six of each line of the program as the line number in its diagnostic messages and cross-reference listing. The alternative is NONUM , which is the default.
OPMARGINS(m,n[,c])
(C, C++ and PL/I only) Abbreviation: OM
OPMARGINS specifies the translator output margins, that is, the margins of the input to the following compiler. Normally these margins are the same as the input margins for the translator. For a definition of input margins and the meaning of m , n , and c , see MARGINS . The default for C and C++ is OPMARGINS(1,72,0) and for PL/I, the default is OPMARGINS(2,72,0).
The maximum n value allowable for the OPMARGINS option is 80. The output from the translator is always of a fixed-length record format.
If the OPMARGINS option is used to set the output from the translator to a certain format, it might be necessary to change the input margins for the compiler being used. If the OPMARGINS value is allowed to default, it is not necessary to change the input margins for the compiler being used.
OPSEQUENCE(m,n)
(C, C++, and PL/I only) Abbreviation: OS
OPSEQUENCE specifies the position of the sequence field in the translator output records. For the meaning of m and n , see SEQUENCE . The default for C and C++ is OPSEQUENCE(73,80) for fixed-length records and NOOPSEQUENCE for variable-length records. For PL/I, the default is OPSEQUENCE(73,80) for both types of records.
OPTIONS
Abbreviation: OP
OPTIONS instructs the translator to include a list of the options used during this translation in its output listing.
PROLOG
(Assembler language only)
PROLOG instructs the translator to insert the macros DFHEISTG, DFHEIEND, and DFHEIENT into the program being assembled. These macros define local program storage and execute at program entry.
QUOTE
(COBOL only) Abbreviation: Q
QUOTE indicates that literals are delineated by the double quotation mark (”). The same value must be specified for the translator step and the following compiler step. Although COBOL allows delimiters in COBOL source code to be apostrophes, quotation marks, or a mix of both in the same program, if the CICS stand-alone translator is used, then all beginning and ending delimiters in the COBOL program must match the CICS option specified. Literals continued across multiple lines must also start and end with the specified delimiter.

Note that the CICS-supplied COBOL copybooks have a single quotation mark. If you are using any CICS-supplied copybooks in your application to interface to a CICS component, ensure that you use the APOST option, not the QUOTE option, and code the delimiters in your program accordingly.

SEQ
(COBOL only)
SEQ instructs the translator to check the sequence field of the source statements, in columns 1-6. SEQ is the default; the alternative is NOSEQ . If a statement is not in sequence, it is flagged.
SEQUENCE(m,n)
(C, C++, and PL/I only) Abbreviation: SEQ
SEQUENCE specifies that statements in the translator input are sequence numbered and the columns in each line or record that contain the sequence field. The translator uses this number as the line number in error messages and cross-reference listings. No attempt is made to sort the input lines or records into sequence. If no sequence field is specified, the translator assigns its own line numbers. The SEQUENCE parameters are:
m
Leftmost sequence number column.
n
Rightmost sequence number column.
The sequence number field must not exceed eight characters and must not overlap the source program (as specified in the MARGINS option).
The default for fixed-length records is SEQUENCE(73,80). For variable-length records in C and C++, the default is NOSEQUENCE and for variable-length records in PL/I, the default is SEQUENCE(1,8).
SOURCE
Abbreviation: S
SOURCE instructs the translator to include a listing of the translated source program in the translator listing. SOURCE is the default; the alternative is NOSOURCE.
SP
SP must be specified for application programs that contain special (SP) CICS commands or they are rejected at translate time. These commands are ACQUIRE, COLLECT, CREATE, DISABLE, DISCARD, ENABLE, EXTRACT, INQUIRE, PERFORM, RESYNC, and SET. Theses commands are used by system programmers. For programming information about these commands, see System commands.
SPACE(1 or 2 or 3)
(COBOL only)
SPACE indicates the type of spacing to be used in the output listing: SPACE(1) specifies single spacing, SPACE(2) double spacing, and SPACE(3) triple spacing. SPACE(3) is the default.
SPIE
SPIE specifies that the translator is to trap unrecoverable errors. SPIE is the default; the alternative is NOSPIE.
SYSEIB
SYSEIB indicates that the program is to use the system EIB instead of the application EIB. The SYSEIB option allows programs to execute CICS commands without updating the application EIB, making that aspect of execution transparent to the application. Use this option only in special situations because it imposes restrictions on the programs using it. A program translated with the SYSEIB option must:
  • Execute in AMODE(31), because the system EIB is assumed to be located in TASKDATALOC(ANY) storage.
  • Obtain the address of the system EIB using the ADDRESS EIB command (if the program is translated with the SYSEIB option, this command automatically returns the address of the system EIB).
  • The use of the SYSEIB option implies the use of the NOHANDLE option on all CICS commands issued by the program. Commands can use the RESP option as required.
VBREF
(COBOL, C, C++, and PL/I only)
VBREF specifies whether the translator is to include a cross-reference of commands with line numbers in the translator listing. VBREF used to be called XREF , and is still accepted.)