Using the Compiler | Linking |
This chapter lists and describes the directives you can use to control the Compiler . The first section is intended to help you find directives for particular purposes; it lists their names, organized into categories, with a very brief description of the purpose of each. The second section contains complete descriptions of the directives, in alphabetical order.
These are categories of Compiler directives. Select one to see a list of directives in that category. You can then select a directive to see its parameters and other details.
Enabling Language Features
Choosing Run-time Behavior
Compiler Control
Compiling for Debugging
Format of Your Data Files
Object Code, Size and Optimization
Reserved Directives
An asterisk (*) next to the description of a directive means you need an add-on product before you can use it. If you use it without the appropriate add-on product, the Compiler does not give an error message but the directive does not have the desired effect.
These directives change which language features your Compiler accepts.
CICS | * Enable CICS |
CICS-CPY | * Insert COPY "CICS-CPY" |
CONSTANT | Define constant |
FCDREG | Registers for files |
PREPROCESS | * Source from preprocessor |
REWRITE-LS | REWRITE on LINE SEQUENTIAL files |
SEQCHK | Check line numbers |
SOURCEFORMAT | Enable free format code |
SQL | Allow EXEC SQL |
ANS85 | ANSI'85 |
COBOL370 | IBM COBOL/370 |
COMS85 | ANSI'85 Communications |
DBCHECK | Check for DBCS |
DBCS | DBCS Support |
DG | Data General |
DOSVS | IBM DOS/VS COBOL |
FLAG | Flag for dialect |
FLAGCD | Flag conflicts |
FLAGSTD | Flag ANSI'85 level |
IBM-MS | IBM / Microsoft COBOL V1.0 |
JAPANESE | Double-byte extensions |
MF | Level of Micro Focus COBOL |
MF-OO | Object Orientation |
MS | Microsoft COBOL V1 or V2 |
NCHAR | Double-byte extensions |
OSVS | IBM OS/VS COBOL |
PC1 | IBM / Microsoft COBOL V1.0 |
RM | Ryan-McFarland |
SAA | Systems Application Architecture |
XOPEN | X/Open |
VSC2 | IBM VS COBOL II |
AREACHECK | Area A check |
CMPR2 | Mainframe compatible |
CONVERTPTR | REDEFINE pointers |
DBCSSOSI | Shift-in, -out |
LIBRARIAN | Allow -INC |
MAPNAME | IBM program-names |
PANVALET | Allow ++INCLUDE |
PROGID-COMMENT | Comment in PROGRAM-ID |
RDEFPTR | Redefine POINTER |
RDW | Variable length records |
TRUNCCOPY | Copyfile-names |
ADDRSV | Add reserved word |
ADDSYN | Add synonym |
MAKESYN | Make synonymous |
OVERRIDE | Change meaning |
REMOVE | De-reserve |
ALTER | Allow ALTER |
FASTLINK | Restrict parameters |
NESTCALL | Allow nested programs |
QUAL | Allow qualification |
QUALPROC | Allow qualification |
SEG | Allow segmentation |
TRICKLE | Restrict PERFORM |
TRICKLECHECK | Flag trickling |
These directives change the definition of language features and so change the logic of your program.
Some directives listed under Dialect also affect behavior.
ACCEPTREFRESH | ACCEPT statement |
ARITHMETIC | Evaluate expressions |
ASSIGN | EXTERNAL or DYNAMIC |
ASSIGN-PRINTER | Printer output |
BWZSTAR | BWZ with PIC * |
CHARSET | * ASCII or EBCDIC |
CHECKDIV | Allow divide by zero |
CHECKNUM | Check numeric fields |
CHECKSTACK | Check for stack corruption |
COBFSTATCONV | EXTFH status codes |
CONVERTRET | RETURNING item type |
CURRENCY-SIGN | Currency sign |
CURRENT-DATE | DDMMYY or MMDDYY |
DEFAULTBYTE | Initialize Data Division |
DEFAULTCALLS | CALL convention |
DETECT-LOCK | Detect record locks |
EARLY-RELEASE | Early User Syntax |
FOLD-CALL-NAME | Fold call-name |
FOLD-COPY-NAME | Fold copyfile-names |
HOST-NUMCOMPARE | Numeric comparisons |
INDD | Transform ACCEPTs to READs |
INITCALL | Execute a module |
LOCKTYPE | Read locked records |
LOGICOPT | Optimize CBL_logic |
MFSCCS | * Search SCCS for file |
NATIVE | Collating sequence |
NLS | National Language Support |
OUTDD | Transform DISPLAYs to WRITEs |
PRINT-EXT | Printing extension |
PROTECT-LINKAGE | Protect linkage |
REPORT-LINE | Report Writer lines |
SERIAL |
Specifies that the program is to be run in a multi-threaded environment. |
SIGNCOMPARE | EBCDIC comparisons |
SPZERO | Space = zero in numerics |
STICKY-LINKAGE | Keep parameters linked |
TERMPAGE | Pad out report page |
TRACE | Enable READY TRACE |
ZEROLENGTHFALSE | Zero length tests |
ZWB | Numeric comparisons |
ALPHASTART | Numbering in ALPHABET |
COMP-6 | COMP-6 items format |
DBSPACE | DBCS space |
FP-ROUNDING | Floating-point items |
INTDATE | Starting date for integer format dates used with date intrinsic functions |
OPTIONAL-FILE | All files optional |
PERFORM-TYPE | Returns from PERFORM |
RETRYLOCK | Retry locked record |
STICKY-PERFORM | Behavior of PERFORM |
SYMBSTART | Numbering in SYMBOLIC |
TRUNC | Truncation of binary |
AUTOLOCK | Default locking |
COMP | Computational subset |
COMP-5 | COMP-5 behavior |
DE-EDIT | Numeric-edited behavior |
EXTINDEX | External INDEX |
FILESHARE | Default locking |
IOCONV | READ-INTO/WRITE-FROM |
MF | Level of Micro Focus COBOL |
OLDBLANKLINE | BLANK LINE |
OLDINDEX | Indexes = subscripts |
OLDNEXTSENTENCE | NEXT SENTENCE |
OLDREADINTO | READ INTO |
OLDSTRMIX | Allow PIC X and N |
OLDSTRSUB | STRING subscripts |
WRITELOCK | Default locking |
APOST | QUOTE = ' |
AMODE | Compatibility with mainframe-style pointers. |
BYTE-MODE-MOVE | Control overlapping moves |
CASE | Case of program-name |
DYNAM | Ignore CANCEL |
FDCLEAR | Clear record buffer after write |
FP-ROUNDING | Floating-point items |
HOSTNUMMOVE | IBM MOVE statements |
IBMCOMP | Word-storage mode |
MAPNAME | IBM program-names |
ODOSLIDE | Variable length table |
ODOOSVS | OS/VS-style OCCURS DEPENDING ON |
OLDCOPY | ANSI'68 COPY |
QUOTE | QUOTE = " |
SIGN | Included signs |
SYSIN | SYSIN and SYSOUT maps |
ALIAS | Subscripts |
ALIGN | Data alignment |
BOUND | Bound-check |
BOUNDOPT | Optimize tables |
FIXOPT | Control placing of control areas |
GNTLEVEL | Faster interprogram calls |
LINKCHECK | Check Linkage Section items |
PARAMCOUNTCHECK | Omit parameters |
PERFORMOPT | Optimize PERFORM of empty paragraph |
TABLESEGCROSS | Segment crossed |
CANCELLBR | Close COPY .lbr file |
CONVSPACE | Source code spaces |
COPYLBR | Copy library = .lbr file |
DEFFILE | Produce .def file |
DEFFILETYPE | Target for .def |
DLL | .dll or .exe |
GNT | File for object code |
INT | File for intermediate code |
KEYCHECK | Check the number of keys |
INTLEVEL | Portability level |
KEEP-INT | Keep .int files |
LINKLIB | Link-libraries |
OBJ | File for object code |
OSEXT | Source filename ext |
PREPROCESS | * Preprocess source |
ASSUME | Modify directives |
COBOLDIR | Use/ignore cobol.dir |
CONFIRM | Display directives |
DIRECTIVES | File of directives |
DIRECTIVES-IN-COMMENTS | Enable directives in comment lines |
SETTING | Print directives |
SHOW-DIR | Print directives files |
USE | File of directives |
BRIEF | No message texts |
CHANGE-MESSAGE | Change message severity |
EDITOR | Error file for Editor |
ERRLIST | Print messages only |
ERRQ | Pause on error |
FLAG | Flag outside the dialect |
FLAG-CHIP | Flag chip problems |
FLAGAS | Show flags as errors |
FLAGCD | Conflicting directives |
FLAGMIG | OSVS and VSC2 differences |
FLAGQ | Pause on flag |
FLAGSINEDIT | Flags in error file |
FLAGSTD | Flag above ANSI'85 level |
HIDE-MESSAGE | Set message to hide |
INFORETURN | Information message return value |
MAX-ERROR | Limit number of Compiler errors |
MOVE-LEN-CHECK | Check source and target lengths for alphanumeric MOVE operations |
QUERY | Pause if copyfile missing |
STDERR | Write messages to STDERR |
WARNING | Level of message to output |
ASM | Produce object code list |
ASMLIST | File for assembly listing |
COPYEXT | Copyfile extensions |
COPYLIST | List copyfiles |
DATE | Date for listings |
FORM | Page length |
LINE-COUNT | Controls detail of information at end of listing |
LIST | File for source listing |
LISTPATH | Specify the list-file path |
LISTWIDTH | Page width |
MASM | For Microsoft MASM |
MFCOMMENT | Alternate-format comments |
PARAS | Paragraphs code addresses |
PREPLIST | Preprocess debug list |
File for source listing | |
RAWLIST | Static list |
REF | List paragraph addresses |
REFNO | Show Compiler version number in listings |
RESEQ | Generate line numbers |
SEQCHK | Check line numbers |
SETTING | Print directives |
SHOW-DIR | Print directives files |
SHOWSHUFFLE | Show 01SHUFFLE results |
SOURCEASM | Source in assembly listing |
TIME | Put time on listings |
VERBOSE | Compiler messages |
XREF | Produce cross-ref listing |
ZEROSEQ | Zeros in line numbers |
BELL | Beep when stop |
CONFIRM | Display directives |
ECHO | Display errors |
ECHOALL | Display full listing |
SUPFF | No page-headings |
These directives make the Compiler create files containing extra information about the program, for input to software used for debugging.
ANIM | For animating |
COBIDY | Path for Animator file |
EANIM | For CodeView |
EDITOR | Error file for Editor |
FLAGSINEDIT | Flags in error file |
GANIM | For animating generated code (obselete) |
INCLUDE-FILLER | FILLER information in .idy |
PROFILE | For Profiler |
RNIM | Animate, don't compile |
SOURCE-EXT | Source ext for CodeView |
TRACE | Turn on READY TRACE |
XNIM | Compile and animate |
ANALYZE | * For Analyze |
BROWSE | * Create .sbr file |
CSI | * For CSI |
GANIM | For Xilerator |
GNTANLZ | * .gnt code analyzer |
STRUCT | * For Structure Animator |
These directives change the format in which data is stored in your data files.
CALLFH | External file handler |
DATACOMPRESS | Data compression |
FILETYPE | Data file format |
IDXFORMAT | Indexed file structure |
KEYCOMPRESS | Key compression |
RECMODE | Fixed or variable length |
SEQUENTIAL | Variants of SEQUENTIAL organization |
These directives change the object code produced without changing the logic of your program.
CALLFH | External file handler |
CALLSORT | External sort handler |
CALLADIS | External ACCEPT/DISPLAY |
CALLMAP | External CALL handler |
CALLMCS | External MCS handler |
WRITETHROUGH | Unbuffered writes |
LITLINK | Literals public |
LITVAL-SIZE | BY VALUE size |
REGPARM | Parameter passing |
RTNCODE-SIZE | RETURN-CODE size |
SEGCROSS | Parameters on segments |
SMALLDD | Parameters in segments |
OMF | .obj or .gnt |
PUBLICENTRY | Public entry points |
REALOVL | Overlaying from disk |
01SHUFFLE | Segment boundaries |
64KPARA | Segment breaking |
64KSECT | Segment breaking |
BADSIGNS | Illegal sign nibbles |
CHIP | Chip architecture |
CICSOPT | * Optimize BLL cells |
DATALIT | Literals in data segment |
EXPANDDATA | Program compression |
FIXING | Optimizing jumps |
HOSTSIGNS | Illegal sign nibbles |
LINKCOUNT | Number of linked items |
LNKALIGN | Assume linkage aligned |
MODEL | Model type |
OBJLITE | Assembler-like code |
OPT | Optimization level |
OPTSIZE | Optimize for size |
OPTSPEED | Optimize for speed |
PROTMODE | Protect mode only |
SEG | Segmentation |
SEGSIZE | Automatic segmentation |
TARGET | Chip specific instructions |
These directives are reserved or are maintained for compatibility with earlier products and have no effect. Do not use them.
ADV | Adds control characters to print files |
WB | * Interface to other products |
ENSUITE | * |
FASTSORT | |
FILECASE | |
LOCALCOUNT | |
NESTLOCALSTORAGE | |
OLDFILEIO | |
WB2 | * |
WB3 | * |
Descriptions for all of the Compiler directives appear alphabetically. Each description contains the following entries.
A brief description of the function of DIRECTIVE-NAME.
Syntax in the form:
+-------------- v | >>-.---.-.-------DIRECTIVE-NAME--"parameter(s)"-.->< .-/-+ ..----.-DIRECTIVE-NAME-----------------+ .-NO-+
The syntax of the Compiler directives is shown using diagrams called "railroad
tracks", in which a directive and its parameters are shown joined by
lines indicating the order in which they should be written. You read these
diagrams from left-to-right. Each diagram starts with >>
and ends with '"
. Sometimes the track forks to show
alternatives and then joins up again. The length of a track has no
significance.
The loop over the parameter in the above example indicates that it can be repeated one or more times.
Parameters for directives are shown in quotation marks (" "), although you can use parentheses instead unless otherwise stated. On UNIX, the equals sign (=) can be used as an alternative. When quotation marks are used the parameter can contain spaces, whereas no spaces are allowed in a parameter surrounded by parentheses.
On DOS, Windows and OS/2, if a parameter is specified after a comma, but the filename is omitted, the directive must be preceded by a slash (/). Otherwise, the directive is incorrectly assumed to be a filename.
On UNIX, if you use quotation marks or the equals sign, you must escape them using the backslash character (\). The slash (/) in the syntax diagrams is for use on DOS, Windows and OS/2. It should be ignored for UNIX environments and does not appear in diagrams for UNIX-specific directives.
Lists and describes valid parameter(s), if any, for the directive.
Default: | Indicates the directive's default setting | ||||||||
Phase: | Shows the phase controlled by this directive. One of: Syntax check Generate Both |
||||||||
Environment: | Specifies the environments in which this
directive can be used:
See your Object COBOL User Guide for more information about environments. |
||||||||
$SET: | Shows whether you can put the directive on a $SET statement in your source program; "Initial" in this entrymeans it is only allowed on a $SET statement before the first line of COBOL code. The directives specified by a $SET statement in the source code must not exceed column 72. |
Shows if the setting of this directive changes the setting of any other directives, or if any other directives affect the setting of this directive.
There are a number of different cases, identified under this heading by the following keywords:
immediately | The change specified is done immediately, as a part of the processing of this directive. This enables you to reset the value by specifying the second directive after the first. Don't do this unless you know what you are doing. |
at end | The change specified takes place when all the directives have been processed. This prevents you from overriding the new value. |
Contains any additional information about the directive.
In the menus, an asterisk (*) next to the name of a directive means you need an add-on product before you can use it. If you use it without the appropriate add-on product, the Compiler does not give an error message but the directive does not have the desired effect.
Changes the addresses of level-01 items in the Working-Storage Section so that they do not cross 64K segment boundaries.
>>-.---.-.----.--01SHUFFLE----------------->< .-/-+ .-NO-+
None
Default: | NO01SHUFFLE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to NO01SHUFFLE at end by NESTCALL.
If a data item would cross as segment boundary, specifying 01SHUFFLE causes the level-01 item to be moved in memory so that it starts at a segment boundary. The gap left is filled by any following level-01 items that fit. This results in level-01 items not being contiguous in memory when the program is loaded.
Use of this directive can cause an increase in the size of the data segment of a program. This directive is not valid for nested programs.
Although this directive does work with 32-bit COBOL systems, it is only really useful with the 16-bit COBOL system.
REF Compiler directive
SHOWSHUFFLE Compiler directive
Makes the Compiler produce segment-breaking information more often than at each paragraph, for programs containing paragraphs that produce more than 64K of code.
>>-.---.-.----.--64KPARA------------------->< .-/-+ .-NO-+
None
Default: | NO64KPARA |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Must set SEGSIZE"integer" so integer is nonzero.
Use of this directive lengthens the compilation process slightly but does not affect the code produced.
This directive is mandatory for programs which contain paragraphs that produce more than 64K of code.
64KSECT Compiler directive
SEGSIZE Compiler directive
Makes the Compiler produce segment-breaking information at each paragraph instead of each section, for programs containing sections that produce more than 64K of code.
>>-.---.-.----.--64KSECT------------------->< .-/-+ .-NO-+
None
Default: | NO64KSECT |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Must set SEGSIZE"integer" so integer is nonzero.
Use of this directive lengthens the compilation process slightly but does not affect the code produced.
This directive is mandatory for programs which contain sections that produce more than 64K of code.
64KPARA Compiler directive
SEGSIZE Compiler directive
Specifies whether the data areas associated with Screen Section data are updated from their corresponding Working-Storage Section items before an ACCEPT statement.
>>-.---.-.----.--ACCEPTREFRESH------------->< .-/-+ .-NO-+
None
Default: | NOACCEPTREFRESH |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to ACCEPTREFRESH immediately by MS, IBM-MS or PC1.
With ACCEPTREFRESH specified, before an ACCEPT statement that references a Screen Section data item, all data areas associated with Screen Section items subsidiary to the item being accepted are modified as follows:
With NOACCEPTREFRESH specified, the Screen Section data area is left as it was following the last ACCEPT or DISPLAY.
Adds one or more specific reserved words to the reserved word list so that they are recognized as reserved words in your program. The specified reserved words are added, whatever dialect directives are in force.
+---------- v | >>--.---.--ADDRSV--"rsv-word"-------------->< .-/-+
rsv-word |
A reserved word in some dialect of COBOL, but not necessarily in a dialect specified for this compilation |
Default: | No additional reserved words are created. |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The specified reserved words are added, whatever dialect directives are in force.
This directive does not appear in the list created with the SETTING directive.
SETTING Compiler directive
Defines a user-defined reserved word to be synonymous with an existing reserved word.
On DOS, Windows and OS/2:
>>-.---.--ADDSYN--"rsv-word" = "user-word"->< .-/-+
On UNIX:
>>--ADDSYN-"(rsv-word) == (user-word)"-----'"
rsv-word |
Existing reserved word. |
user-word |
Any COBOL word not the same as an existing reserved word. |
Default: | No reserved word synonyms are created. |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The equals signs (==) must be surrounded by spaces.
This directive does not appear in the list created with the SETTING directive.
Causes a control character to be inserted at the start of each line in a print file. This is for compatibility with mainframe operation.
>>-.---.-.----.--ADV----------------------->< .-/-+ .-NO-+
None
Default: | NOADV |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
ADV has no effect unless FILETYPE"11" is set.
FILETYPE Compiler directive
Prevents the Compiler from performing certain optimizations that are unsafe when a program uses aliasing.
>>-.---.-.----.--ALIAS--------------------->< .-/-+ .-NO-+
None
Default: | NOALIAS |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Using the SET ADDRESS OF statement you can access the same data in two different ways; that is, in the Working-Storage Section and as an item in the Linkage Section. This technique is known as "aliasing". Any program that uses aliasing must be compiled with ALIAS specified.
Specifies the memory boundaries on which data items of level-01 or level-77 are aligned.
>>-.---.--ALIGN--"integer"----------------->< .-/-+
integer |
The distance from the start of one level-01 to the start of the next is a multiple of this. Can take any value from 1 to 255. |
Default: | ALIGN"8" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to ALIGN"8" immediately by IBMCOMP or NORM.
Set to ALIGN"2" immediately by RM or RM"ANSI".
Data items of level-01 are aligned on byte boundaries that are multiples of the value given.
This can help produce more efficient execution results but does mean more memory might be used.
Setting integer to a number that is not a multiple of four could impair the efficiency of the generated code.
Sets the number from which the Compiler counts positions in the collating sequence when compiling the ALPHABET clause.
>>-.---.--ALPHASTART--"integer"------------>< .-/-+
integer |
The number to be used. |
Default: | ALPHASTART"1" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
For ANSI conformance use ALPHASTART"1".
With ALPHASTART"1", the COBOL statement:
alphabet myalpha is 66, 67
declares an alphabet consisting of "A" and "B" since, counting from 1, these are the 66th and 67th characters in the ASCII collating sequence. With ALPHASTART"0", MYALPHA consists of "B" and "C".
Allows ALTER statements in your program.
>>-.---.-.----.--ALTER--------------------->< .-/-+ .-NO-+
None
Default: | ALTER |
Phase: | Both |
Environment: | 16-bit |
$SET: | Initial |
If ASSUME is set, set to NOALTER at end by NOTRICKLE during the generate phase.
If you know there are no ALTER statements in your program, specifying NOALTER enables the Compiler to produce slightly more efficient code.
Provides compatibility with mainframe-style pointers.
>>--+---+---+----+--AMODE----"format"-------->< |-/-| |-NO-|
format | Specifies the storage format of pointers |
Default: | NOAMODE |
Phase: | Syntax check |
Environment: | 16-bit, and 32-bit systems on Windows NT and OS/2 |
$SET: | Initial |
The AMODE directive must be used with any program module which:
In general, to eliminate potential problems that might occur when trying to be selective about which programs are compiled with this directive, we strongly recommended that you use the AMODE directive on all programs in the application, and that you use the same format for each subprogram.
The possible values of format are:
24 | All pointers are stored in a 24-bit format. This format is compatible with 'below-the-line' storage on the mainframe. The top 8 bits of the pointer are masked off when the address of a linkage item is set from the pointer. This means that, as on the mainframe, the top 8 bits can be manipulated directly by the user's code. |
31 | All pointers are stored in a 31-bit format. This format is compatible with 'above-the-line' storage on the mainframe. The top bit of the pointer is masked off when the address of a linkage item is set from the pointer. This means that, as on the mainframe, the top bit can be manipulated directly by the user's code. |
The AMODE directive cannot be used for programs that need to call a Micro Focus call-by-name or call-by-number routine or an external API that expects pointer items to be in the native machine format.
The directives RDEFPTR and CONVERTPTR must not be used with the AMODE directive.
Makes the Compiler produce extra information so that you can use the Analyzer feature of Advanced Animator and Animator V2.
>>-.---.-.----.--ANALYZE------------------->< .-/-+ .-NO-+
None
Default: | NOANALYZE |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
ANALYZE sets ANIM immediately.
This directive is reserved for use with products containing the Analyzer facility, such as Workbench and Object COBOL for UNIX. Do not change its setting unless you have an appropriate COBOL system.
Makes the Compiler produce extra information so that you can debug your program using use Animator or Animator V2, or Xilerator with the 16-bit COBOL system.
>>-.---.-.----.--ANIM---------------------->< .-/-+ .-NO-+
None
Default: | NOANIM |
Phase: | Both |
Environment: | All |
$SET: | Initial |
Set to ANIM immediately by WB.
Set to ANIM at end by ANALYZE, BROWSE, CSI, GANIM or STRUCT.
Set to NOANIM at end by NOINT or RNIM.
An intermediate code file is created, during the syntax check phase in the format required to enable the program to be animated.
In the generate phase, ANIM is treated the same as GANIM.
The intermediate code is held in a file with the extension .int (unless the OPT"0" directive is specified). This can be animated directly.
If you specify the OPT"0" directive, the intermediate code is held in a file with the extension .obj. This file has to be linked before it can be animated.
In all cases, a file with extension .idy, is also created. This contains the additional information needed to animate the program.
With the 16-bit COBOL system, the .idy file also contains information for debugging native code using Xilerator.
With the 32-bit COBOL system on Windows NT and OS/2 V2, an .obj file containing native code, and a file with extension .gdy are also created. The .gdy file contains information needed to animate native code. You must link the .obj file to create an .exe or a .dll file before you can debug native code.
The location of the .idy file is controlled by the COBIDY directive.
COBIDY Compiler directive
DEFFILE Compiler directive
GANIM Compiler directive
LINKLIB Compiler directive
OPT Compiler directive
Specifies that words reserved in the ANSI'85 COBOL Standard are to be treated as reserved words, and changes the behavior of certain features to be compatible with that Standard.
>>-.---.-.-------ANS85--"SYNTAX"--.-------->< .-/-+ ..----.-ANS85------------+ .-NO-+
SYNTAX | Makes the directive affect syntax only and not behavior. |
Default: | ANS85 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to ANS85 at end by VSC2 or SAA.
This directive causes the following behavior changes:
Makes the Compiler interpret the figurative constant QUOTE as the single-quote character (').
>>-------APOST-----------------------------><
None
Default: | QUOTE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The opposite of this directive is the directive QUOTE which causes the double-quote character (") to be used.
QUOTE Compiler directive
Causes the Compiler to treat any token which starts in area A in the Procedure Division as a paragraph or section label, regardless of the preceding tokens.
>>-.---.-.----.--AREACHECK----------------->< .-/-+ .-NO-+
None
Default: | NOAREACHECK |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If AREACHECK is not specified, only tokens which follow a period are treated as possible labels. This directive provides closer compatibility with mainframe error handling, where omitting a period before the label produces a less serious message. It is recommended that such erroneous source code is corrected.
Specifies how arithmetic expressions are to be evaluated.
>>-.---.--ARITHMETIC--"arith-type"--------->< .-/-+
arith-type |
The behavior to adopt. |
Default: | ARITHMETIC"MF" |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
The possible values of arith-type are:
OSVS | Truncate according to the rules of OS/VS COBOL. |
VSC2 | Truncate according to the rules of VS COBOL II and COBOL/370. |
MF | Do not truncate intermediate results. |
With ARITHMETIC"MF" specified, expressions are calculated as accurately as possible because no truncation takes place.
On the 16-bit COBOL system, controls the presence of an assembly listing in the report-file produced by the generate-phase.
On the 32-bit COBOL system for OS/2 and Windows, controls the presence of the report-file (.grp) produced by the generate-phase.
On the 16-bit COBOL system:
>>-.---.-.----.--ASM----------------------->< .-/-+ .-NO-+
On 32-bit COBOL systems for OS/2 and Windows:
>>-.---.-.-------ASM-.-"destination"..----->< .-/-+ | .-()-----------+| ..----.-ASM-----------------+ .-NO-+
destination |
A full file specification or a device-name. |
Default: | NOASM |
Phase: | Generate |
Environment: | 16-bit, and 32-bit for OS/2 and Windows |
$SET: | Initial |
On the 16-bit COBOL system:
NOASM sets NOMASM at end.
Set to ASM immediately by ASMLIST.
16-bit:
On the 16-bit COBOL system, specifying ASM causes the Compiler to insert
disassembled generated code into the Generator report (.grp) file.
The presence of the file is controlled by the ASMLIST directive. You can
produce a .grp file which contains Generator messages without
assembler code by specifying ASMLIST() NOASM (in that order).
32-bit on OS/2 and Windows NT:
On 32-bit COBOL systems for OS/2 and Windows NT, the report file always
contains an assembly listing. When NOASM is specified, no listing file is
produced. If you specify ASM with no filename, the assembly listing is sent
to the screen. If you specify an existing file it is overwritten. ASM()
causes the assembly listing to be put in the file source-name.grp
where source-name is the root of the name of the program being
compiled. If you specify ASM ASMLIST, the Compiler creates a listing file
containing a hex dump of the generated code as well as assembler mnemonics.
This is required by some Assemblers.
ASMLIST Compiler directive
On the 16-bit COBOL system, controls the presence of the report-file (.grp) created during the generate-phase.
On 32-bit COBOL systems for Windows and OS/2, controls the presence of a hex dump in the report-file created during the generate-phase.
On the 16-bit COBOL system:
>>-.---.-.-------ASMLIST-.-"destination"..->< .-/-+ | .-()-----------+| ..----.-ASMLIST-----------------+ .-NO-+
On 32-bit COBOL systems:
>>-.---.-.----.--ASMLIST------------------->< .-/-+ .-NO-+
destination |
A full file specification or a device-name. |
Default: | NOASMLIST |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
On the 16-bit COBOL system:
ASMLIST sets ASM immediately.
NOASMLIST sets NOREF at end.
16-bit:
On the 16-bit COBOL system, when NOASMLIST is specified, no listing file is
produced. If you specify ASMLIST with no filename, the assembly listing is
sent to the screen. If you specify an existing file it is overwritten.
ASMLIST() causes the assembly listing to be put in the file source-name.grp
where source-name is the root of the name of the program being
compiled. Specifying ASMLIST() NOASM produces a report file containing no
assmbly listing, just error messages.
On the 16-bit COBOL system, if you use ASMLIST together with SOURCEASM and you follow ASMLIST by the word NOASM, you get an assembly listing showing source code but not assembly code. This is useful because of the "BADCODE" comments you get on the source lines.
32-bit on OS/2 and Windows NT:
On 32-bit COBOL systems for OS/2 and Windows NT, the presence of the listing
file is controlled by the ASM directive.
ASM Compiler directive
MASM Compiler directive
PARAS Compiler directive
SOURCEASM Compiler directive for details of "BADCODE".
Specifies how to assign a filename when neither EXTERNAL nor DYNAMIC appear in the SELECT statement.
>>-.---.--ASSIGN--"assign-type"------------>< .-/-+
assign-type |
EXTERNAL or DYNAMIC. Defines the method. |
Default: | ASSIGN"DYNAMIC" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
For more details, see your Programmer's Guide to File Handling.
Under DOS, Windows and OS/2 (16-bit), for any indexed files or for all files if the program is compiled using the CALLFH directive, filename mapping overrides any syntax definition or use of the ASSIGN directive.
Specifies how to assign the output from an ASSIGN TO PRINTER clause when the clause does not specify a filename.
>>-.---.-.-----ASSIGN-PRINTER.-"filename"-..->< .-/-+ | .-()---------+| .-NO--ASSIGN-PRINTER--------------+
filename |
The file to be associated with the ASSIGN TO PRINTER clause. |
Default: | NOASSIGN-PRINTER |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
This directive has no effect if you specify a filename as part of the ASSIGN TO PRINTER clause.
On DOS, Windows and OS/2, NOASSIGN-PRINTER causes the output to be sent to the device LST:. On UNIX it causes the output to be placed in a file called LPT1.
ASSIGN-PRINTER"filename" causes the output to be directed to the filename specified. The filename can be fully specified, including a path-name, base-name, and extension.
ASSIGN-PRINTER() results in the same behavior as including the following COBOL statement:
select filename-1 assign to printer filename-1
That is, the filename used in your COBOL program is also used as the filename for your output. If the internal filename is too long for your operating system to handle, it is truncated to the maximum length the operating system allows.
By default, the filename does not include an extension, but you can specify an extension by using the PRINT-EXT directive.
PRINT-EXT Compiler directive
Controls the interaction between certain Generator directives.
>>-.---.-.----.--ASSUME-------------------->< .-/-+ .-NO-+
None
Default: | ASSUME |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
If ASSUME then the following dependencies apply:
NOTRICKLE sets NOALTER at end.
REGPARM"OUT" sets LITLINK at end.
REGPARM"IN" sets NOFASTLINK at end.
Makes the default locking AUTOMATIC rather than EXCLUSIVE for files opened I-O or EXTEND in a multi-user environment.
>>-.---.-.----.--AUTOLOCK------------------>< .-/-+ .-NO-+
None
Default: | NOAUTOLOCK |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive does not appear in the SETTING list if its state is the same as WRITELOCK. In this case, the state of the two directives is indicated by the FILESHARE directive.
This directive is included for compatibility with earlier file-sharing products. When writing new programs you should use the locking syntax rather than this directive.
Allows arithmetic with COMP-3 items with illegal sign nibbles (such as those produced by a redefinition of the item) to produce the desired result.
With 32-bit COBOL systems, this directive has been replaced by the HOSTSIGNS directive.
>>-.---.-.----.--BADSIGNS------------------>< .-/-+ .-NO-+
None
Default: | NOBADSIGNS |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Specifying BADSIGNS causes COMP-3 arithmetic to be performed by a nonoptimized route, thus reducing the efficiency of your programs. For smaller, faster code you should not specify BADSIGNS.
Makes the bell sound at points such as when compilation stops, either because of an error or because it has finished.
>>-.---.-.----.--BELL---------------------->< .-/-+ .-NO-+
None
Default: | NOBELL |
Phase: | Synatx check |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | Initial |
Specifies that the subscript or index value is to be checked to ensure it is within the limits defined by the OCCURS clause.
>>-.---.-.----.--BOUND--------------------->< .-/-+ .-NO-+
None
Default: | BOUND |
Phase: | Both |
Environment: | All |
$SET: | Initial |
BOUND sets NOTABLESEGCROSS and NOBOUNDOPT at end.
For multi-dimensional tables, only the composite subscript is checked. If any of the individual subscripts or indices is beyond its limit, but the reference remains within the table, no error is produced.
Optimizes the code generated for USAGE DISPLAY subscripts.
>>-.---.-.----.--BOUNDOPT------------------>< .-/-+ .-NO-+
None
Default: | BOUNDOPT |
Phase: | Generate |
Environment: | All |
$SET: | Initial (on DOS, Windows and OS/2) No (on UNIX) |
Set to NOBOUNDOPT at end by BOUND or TABLESEGCROSS.
If BOUNDOPT is used, any digits in a USAGE DISPLAY subscript above the size of the table are ignored.
Can only be used when NOBOUND is specified, and only affects generated code created with OPT"1" or above. NOBOUNDOPT must be specified if a program references beyond the end of a table.
For example, for a table with 50 entries, a PIC 9(3) subscript is treated as PIC 9(2), with the most significant digit ignored.
Makes the Compiler produce only error numbers and no message texts.
>>-.---.-.----.--BRIEF--------------------->< .-/-+ .-NO-+
None
Default: | NOBRIEF |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Makes the Compiler create an .sbr file for use with the Microsoft Source Browser supplied with the Microsoft utilities. Requires the Microsoft components to be present at compile time.
>>-.---.-.----.--BROWSE-------------------->< .-/-+ .-NO-+
None
Default: | NOBROWSE |
Phase: | Syntax check |
Environment: | DOS, Windows and OS/2 |
$SET: | Any |
BROWSE sets ANIM immediately.
Determines whether the BLANK WHEN ZERO clause is allowed in the Data Division for those fields defined with the "*" PICTURE symbol.
>>-.---.-.----.--BWZSTAR------------------->< .-/-+ .-NO-+
None
Default: | NOBWZSTAR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The BWZSTAR directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
If BWZSTAR is specified, the BLANK WHEN ZERO clause is allowed with fields defined using the "*" PICTURE symbol, and BLANK WHEN ZERO is effective when the field is the target of an editing operation and the result is zero. If NOBWZSTAR is specified, a BLANK WHEN ZERO clause associated with a PIC * field is rejected.
EARLY-RELEASE Compiler directive
Controls the granule size for moves between overlapping data items.
>>-.---.-.----.--BYTE-MODE-MOVE------------>< .-/-+ .-NO-+
None
Default: | NOBYTE-MODE-MOVE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The Compiler also accepts the directive-name without hyphens; that is BYTEMODEMOVE.
This directive is provided for compatibility with IBM mainframe compilers in the handling of forward overlapping moves - that is, where the start of the target data item overlaps the end of the source data item.
If BYTE-MODE-MOVE is specified, data is moved one byte at a time from the source to the target.
If NOBYTE-MODE-MOVE is specified, the data is moved in granules of two, four or more bytes at a time (depending on environment) from the source to the target. Consequently, if the overlap is less than the size of the granule, each granule moved overwrites part of the next granule to be moved.
Causes all format 1 ACCEPT, DISPLAY and EXHIBIT statements to be routed through the specified handler. The output generated by TRACE is also routed through the specified handler.
>>-.---.-.-------CALLADIS--"handler-name"-.>< .-/-+ ..----.-CALLADIS-----------------+ .-NO-+
handler-name |
Root-name of a program to be called to act as the handler. |
Default: | NOCALLADIS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The CALLADIS directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this product.
If handler-name is not specified, EXTADIS is assumed.
EARLY-RELEASE Compiler directive
Makes the Compiler generate direct calls for all file I/O operations, using the Callable File Handler interface.
>>-.---.-.-------CALLFH--"handler-name"-.-->< .-/-+ ..----.-CALLFH-----------------+ .-NO-+
handler-name |
Root-name of a program to be called to act as the file handler. |
Default: | NOCALLFH (on the 16-bit COBOL system) CALLFH"EXTFH" (on 32-bit COBOL systems) |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
handler-name can be one of the following:
EXTFH | The file handler supplied with this COBOL system |
FHREDIR | For use with Fileshare Version 2 |
XFH2BTR | For use with the ExtFH-to-Btrieve call conversion module |
XFH2RLIO | For use with the ExtFH-to-RLIO conversion module in the 32-bit COBOL system for OS/2 V2. |
Your own file handler |
If NOCALLFH is specified, file I/O is handled by the run-time system. When CALLFH is specified, all file I/O statements are converted to calls to the file handler specified by the directive.
If handler-name is not specified, EXTFH is assumed.
This directive is also used to direct all file handling calls through converter modules, such as XFH2BTR, to make use of non-COBOL file handlers.
Use this directive to make your programs call your file handler instead of the standard file handler.
Causes all call operations to be converted to calls to the specified call handler program.
>>-.---.-.----.--CALLMAP--"handler-name"--->< .-/-+ .-NO-+
handler-name |
Root-name of a program to be called to act as the handler. |
Default: | NOCALLMAP |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The CALLMAP directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
EARLY-RELEASE Compiler directive
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
Causes all Message Control System operations to be routed through the specified handler.
>>-.---.-.-------CALLMCS--"mcs-name"-.----->< .-/-+ ..----.-CALLMCS-------------+ .-NO-+
mcs-name |
Root-name of a program to be called to process message control system (mcs) operations. |
Default: | NOCALLMCS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
If handler-name is not specified, EXTMCS is assumed.
Defines the program to be called to handle all SORT and MERGE operations.
>>-.---.-.-------CALLSORT--"sort-name"-.--->< .-/-+ ..----.-CALLSORT--------------+ .-NO-+
sort-name |
Root-name of a program to be called to process sorts and merges. |
Default: | CALLSORT"_SORT" (on the 16-bit COBOL system) CALLSORT"EXTSM" (on 32-bit COBOL systems) |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Makes the Compiler close an .lbr file used as a library in a COPY statement once that copy operation is complete.
>>-.---.-.----.--CANCELLBR----------------->< .-/-+ .-NO-+
None
Default: | CANCELLBR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
NOCANCELLBR causes such .lbr files to be left open until the end of the compilation. Subsequent COPY statements that do not specify a library search for the copyfile in all open .lbr libraries (last one opened is searched first) before the current directory.
This directive is only relevant if COPYLBR is on.
[NO]CANCELLBR can be used on any $SET statement. Only .lbr libraries referenced in COPY statements after the $SET statement are affected. Any left open from previous COPY statements are only closed if specified again on a COPY statement following a CANCELLBR directive.
Prevents external symbols (such as Program-ID and names of called programs) being converted to upper case.
>>-.---.-.----.--CASE---------------------->< .-/-+ .-NO-+
None
Default: | NOCASE |
Phase: | Generate |
Environment: | All |
$SET: | Any |
This is useful if you are calling a program written in C, where names are case dependent.
Changes the severity of errors/messages. Messages can also be supressed or returned to their original severity.
+------------- v | >>-.---.-.-----CHANGE-MESSAGE--"error svrty"-.->< .-/-+ .-NO--CHANGE-MESSAGE----------------+
error |
Number of message to be changed or ALL meaning all messages. | ||||||||||||
svrty |
New severity :
|
Default: | NOCHANGE-MESSAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
CHANGE-MESSAGE overrides the general settings of directives such as FLAGAS.
CHANGE-MESSAGE can take as many parameter pairs as required. If CHANGE-MESSAGE is specified multiple times the effects are cumulative.
CHANGE-MESSAGE replaces the HIDE-MESSAGE Compiler directive. However, if you use HIDE-MESSAGE in conjunction with CHANGE-MESSAGE the effects are also cumulative.
Serious errors cannot have their severity reduced unless they were changed to serious (from a lower severity) by another CHANGEMESSAGE directive or the FLAGAS or FLAGCD directives.
CHANGE-MESSAGE"ALL R" CHANGEMESSAGE"10 S 135 E 100 N"
FLAGAS Compiler directive
FLAGCD Compiler directive
HIDE-MESSAGE Compiler directive
Defines the character set of the environment.
>>-.---.--CHARSET--"char-set"-------------->< .-/-+
char-set |
ASCII or EBCDIC. |
Default: | CHARSET"ASCII" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
CHARSET"ASCII" sets DEFAULTBYTE"32", SIGN"ASCII"
and NATIVE"ASCII" immediately.
CHARSET"EBCDIC" sets DEFAULTBYTE"0" immediately and SIGN"EBCDIC"
and NATIVE"EBCDIC" at end.
DOS, WINDOWS and OS/2:
On DOS, Windows and OS/2, to use this directive you must have the full Micro
Focus COBOL Workbench system.
16-bit:
With the 16-bit COBOL system, do not change its setting if your application
is to be linked with the static-linked run-time system.
All literals and collating sequences are handled in the character set specified.
For current limitations see you Programmer's Guide to Writing Programs.
With CHARSET"EBCDIC" set, COBOL system library routines that receive or return alpahnumeric data in any parameters do not work. The alphanumeric data must be in ASCII.
Controls the behavior of your program if it tries to divide by zero in a statement that has no ON SIZE ERROR phrase.
>>-.---.-.-------CHECKDIV--"dialect"-.----->< .-/-+ ..----.-CHECKDIV------------+ .-NO-+
dialect |
Must be ANSI, OSVS, VSC2, or COBOL370. |
Default: | CHECKDIV"ANSI" |
Phase: | Both (16-bit), Syntax check (32-bit) |
Environment: | All |
$SET: | Initial |
With CHECKDIV or CHECKDIV"ANSI" specified, the program continues with an undefined result if it tries to divide by zero. With NOCHECKDIV set, the behavior is undefined. Setting NOCHECKDIV results in optimal code for divides.
Specifying CHECKDIV"OSVS", CHECKDIV"VSC2", or CHECKDIV"COBOL370" has the same effect; trying to divide by zero produces run-time error 048 (Attempt to divide by zero). This error can be disabled using the -O RTS switch.
This directive has no effect on arithmetic statements that use the ON SIZE ERROR phrase.
O RTS switch
Checks whether numeric fields contain valid data before performing operations on them.
>>-.---.-.----.--CHECKNUM------------------>< .-/-+ .-NO-+
None
Default: | NOCHECKNUM |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
Specifying this directive causes extra code to be generated to ensure that numeric fields contain valid data before any operations are performed on them. With CHECKNUM set, run-time error message 163 ("Illegal character in numeric field") is displayed if any numeric field is found to contain nonnumeric data. This error can be disabled using the -F RTS switch.
Specifying CHECKNUM causes extra code to be produced, reducing the efficiency of your programs. For smaller, faster code you should not specify CHECKNUM.
F RTS switch
Adds code to all calls to check the stack and report if an incorrect number of parameters has been passed.
>>-.---.-.----.--CHECKSTACK---------------->< .-/-+ .-NO-+
None
Default: | NOCHECKSTACK |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Extra code is added for all calls, including calls to the system library routines (CBL_).
If an incorrect number of parameters has been used, the code tries to detect the resulting stack corruption and give run-time system error 168 ("Stack Overflow") at run-time.
The extra instructions slightly reduce run-time performance, so the directive should only be used when debugging.
Tells the Compiler that a specific microprocessor architecture is in use.
>>-.---.-.-----CHIP--"integer"-.----------->< .-/-+ .-NO--CHIP------------+
integer |
Must be 16. |
Default: | CHIP"16" |
Phase: | Syntax check |
Environment: | 16-bit |
$SET: | Initial |
The information produced is only relevant for 16-bit environments.
In the case of the Intel 80x86 family, the use of CHIP"16" indicates that the maximum segment addressability is given by 16 bits, and anything over this size is split over an addressing boundary. Knowing this, the Compiler can alter certain code structures to avoid potential crossing boundaries conditions (for example, the internal print buffer used with Report Writer syntax).
When used with the directive FLAG-CHIP, this directive causes the Compiler to indicate chip specific boundary conditions. These might indicate potential problems or performance losses on the particular chip.
Enables the use of CICS by updating BLL cells.
>>-.---.-.----.--CICS---------------------->< .-/-+ .-NO-+
None
Default: | NOCICS |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive is reserved for use with add-on CICS products supplied by Micro Focus. Do not change its setting unless you have an appropriate add-on product. This is not for use with CICS OS/2.
With CICS, if CICS-CPY is also set, the Compiler inserts:
COPY "CICS.CPY"
at the beginning of your Linkage Section. If your program has no Linkage Section, the Compiler inserts one as follows:
LINKAGE SECTION. COPY "CICS.CPY". 01 DFHCOMMAREA PIC X(n).
where the parameters are:
CICS.CPY
|
Contains a definition of the CICS EXEC INTERFACE BLOCK and DLI INTERFACE BLOCK compatible with Version 1, Release 6 (or earlier) of CICS. | ||||
n |
Takes one of the following values:
|
The Linkage Section item following the DFHCOMMAREA record is assumed to contain the BLL cells, each named and with the description PIC S9(8) COMP. The BLL cells are matched with the corresponding Linkage Section records according to CICS rules.
If the Compiler inserts the DFHCOMMAREA record, it is not visible during animation or in printer listings. However, the record can be queried during animation. If you intend to animate a program that uses BLL cells, set this directive on.
Inserts the statement COPY "CICS.CPY" provided the CICS directive is specified.
>>-.---.-.----.--CICS-CPY------------------>< .-/-+ .-NO-+
None
Default: | CICS-CPY |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive is reserved for use with add-on CICS products supplied by Micro Focus. Do not change its setting unless you have an appropriate add-on product. This is not for use with CICS OS/2.
CICS Compiler directive
Optimizes the handling of CICS BLL cells.
>>-.---.-.----.-.-CICSOPT------.----------->< .-/-+ .-NO-+ .-CICSOPTIMISE-+ .-CICSOPTIMIZE-+
None
Default: | NOCICSOPTIMIZE |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive is reserved for use with add-on CICS products supplied by Micro Focus. Do not change its setting unless you have an appropriate add-on product. This is not for use with CICS OS/2.
With NOCICSOPTIMIZE, the Compiler inserts instructions whenever a BLL-cell is updated to ensure that the addressability of Linkage Section items corresponds to the current values in the BLL cells. With CICSOPTIMIZE, the Compiler does not insert these instructions. You must use the SERVICE RELOAD instruction to ensure that the addressability is updated.
For compatibility with the mainframe compiler option of the same name which returns behavior of the COBOL 370, VS COBOL II version 3 and VS COBOL II version 4 compilers to that of the VS COBOL II version 2 compiler.
>>-.---.-.----.--CMPR2--------------------->< .-/-+ .-NO-+
None
Default: | NOCMPR2 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Requires VSC2"3", VSC2"4" or COBOL370 flagging to be selected.
A conflicting directives message is issued (with FLAGCD only) if one of the required flagging levels is not selected.
Setting this directive is not quite the same as setting VSC2"2". It emulates the mainframe behavior quite closely, and also causes different run-time behavior in some cases. If you use this directive on the mainframe with one of the specified compilers, use this directive instead of VSC2"2".
The FLAGMIG directive flags the items that give different run-time behavior.
FLAGMIG Compiler directive
Causes the Callable File Handler ExtFH to use the user-supplied module specified in the COBFSTATCONV environment variable to convert the file status codes if an I/O error is encountered on a file.
>>-.---.-.----.--COBFSTATCONV-------------->< .-/-+ .-NO-+
None
Default: | NOCOBFSTATCONV |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Specifies the path where the Animator information file (.idy file) and COBOL Source Information file (.csi) are to be written.
>>-.---.-.-------COBIDY--"pathname"-.----->< .-/-+ ..----.-COBIDY--------------+ .-NO-+
pathname |
Path specification. |
Default: | NOCOBIDY |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
If you do not specify pathname, the pathname in the COBIDY environment variable is used; if the environment variable contains multiple path-names the first of them is used. With NOCOBIDY, the .idy and .csi files are written to the same path as the object program.
The .csi files are only produced if the CSI directive is used. This should only be used if you have Object COBOL for UNIX or Workbench.
CSI Compiler directive
Specifies that words reserved in IBM COBOL/370 are to be treated as reserved words, and allows features selectively for compatibility with a given level of that product.
>>-.---.-.-------COBOL370--"integer"-.----->< .-/-+ ..----.-COBOL370------------+ .-NO-+
integer |
1 or 2. The level of IBM COBOL/370 to be compatible with. |
Default: | NOCOBOL370 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
COBOL370 sets DBSPACE and DBCS"3" immediately.
Specifying COBOL370 without a parameter is the same as specifying COBOL370"1". This specifies compatibility with Version 1 Release 1 of IBM COBOL/370.
Setting integer to:
1 | Specifies compatibility with Version 1 Release 1 of IBM COBOL/370 |
2 | Specifies compatibility with Version 1 Release 2 of IBM COBOL for MVS & VM |
Specifying COBOL370 without a parameter is the same as specifying COBOL370"2".
Specifies whether the Compiler should process the directives in a cobol.dir file or ignore it.
>>-.---.-.----.--COBOLDIR------------------>< .-/-+ .-NO-+
None
Default: | COBOLDIR |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
Makes the Compiler produce very compact and efficient code for some statements involving COMP data items, by treating COMP items as COMP-X.
>>-.---.-.----.--COMP---------------------->< .-/-+ .-NO-+
None
Default: | NOCOMP |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This COMP code produced by the Compiler behaves in a way that is not the ANSI standard in cases of numeric overflow. You should use this directive only if you know that your program does not lead to numeric overflow, or if you want to use the defined (but nonstandard) behavior on overflow.
Specifies whether the sign is to be dropped when a value is stored in an unsigned COMP-5 data item.
>>-.---.--COMP-5--"integer"---------------->< .-/-+
integer |
Must be 1 or 2. |
Default: | COMP-5"2" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of integer are:
1 | Behavior as in earlier versions of this Compiler. The sign is dropped. |
2 | The sign is not dropped. Negative numbers are stored in two's complement form, so that, except for their byte-order being machine dependent, unsigned COMP-5 items behave like COMP-X. This results in highly efficient arithmetic on unsigned COMP-5 items. |
Specifies whether COMP-6 data is to be held in binary or packed decimal format.
>>-.---.--COMP-6--"integer"---------------->< .-/-+
integer |
Must be 1 or 2. |
Default: | COMP-6"2" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
RM or MF must be set.
RM and RM"ANSI" set COMP-6"1".
NORM sets COMP-6"2".
The possible values of integer are:
1 | A binary format is used for COMP-6 data, as described in the appendix Ryan McFarland COBOL V2.0 Syntax Support in your Language Reference - Additional Topics. |
2 | Packed decimal format is used. If the item is signed, the format is identical to COMP-3. If the item is unsigned, no sign field is present. |
Even if you specify the COMP-6 directive, the reserved word COMP-6 is recognized only if it belongs to the dialect specified by RM or MF"10".
With COMP-6"2" specified:
PIC 99 COMP-6 VALUE 87 is stored in one byte as x"87"
PIC S99 COMP-6 VALUE 87 is stored in two bytes as x"087C"
Allows your program to contain syntax introduced in the Communications Module of the ANSI'85 COBOL Standard.
>>-.---.-.----.--COMS85-------------------->< .-/-+ .-NO-+
None
Default: | NOCOMS85 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Makes the Compiler echo all subsequent directives to the screen.
>>-.---.-.----.--CONFIRM------------------->< .-/-+ .-NO-+
None
Default: | NOCONFIRM |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | No |
Set to CONFIRM immediately by VERBOSE.
Declares a constant for use in the program.
>>-.---.-CONSTANT-const-name-.-(numeric-lit)--.->< .-/-+ .-"alphanum-lit"-+
const-name |
Data-name. The constant's name. |
numeric-lit |
Numeric literal. The constant's value. Must be zero or a positive integer. |
alphanum-lit |
Alphanumeric literal. The constant's value. |
Default: | Not set |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The effect is as if the constant const-name had been defined in the program in a level-78. Its value is that given in the parentheses or quotation marks. If parentheses are used, the constant is of category numeric; if quotation marks are used it is of category alphanumeric.
To declare several figurative constants using this feature, use the CONSTANT directive repeatedly.
Specifies whether POINTER data items can be redefined as PIC 9(9) COMP data items.
>>-.---.-.----.--CONVERTPTR---------------->< .-/-+ .-NO-+
None
Default: | NOCONVERTPTR |
Phase: | Syntax check |
Environment: | 16-bit shared run-time system, 32-bit |
$SET: | Initial |
IBM VS COBOL II and COBOL/370 let you use the REDEFINES clause on a POINTER data item, to redefine it as a PIC 9(9) COMP data item. You can then perform arithmetic operations on this item, giving the program the ability to shift the address referred to by a pointer up or down.
If CONVERTPTR is specified, pointers are held in a form that is reversed with respect to native byte ordering. They are converted to the native form immediately before any statement of the form:
SET ADDRESS OF linkage-item TO pointer
and immediately after any statement of the form:
SET pointer TO ADDRESS OF ...
The CONVERTPTR directive has no effect on PROCEDURE-POINTER data items.
On the 16-bit COBOL system, unexpected behavior might occur if the arithmetic carried out causes the pointer to cross the boundary of a data segment.
If you specify the CONVERTPTR directive, you cannot use a format 4 SET statement in your program.
Causes COMP and COMP-X items specified in CALL ... RETURNING and EXIT PROGRAM ... RETURNING phrases to be converted to COMP-5.
>>-.---.-.----.--CONVERTRET---------------->< .-/-+ .-NO-+
None
Default: | NOCONVERTRET |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Converts double-byte space characters in COBOL source files to single-byte spaces on input.
>>-.---.-.----.--CONVSPACE----------------->< .-/-+ .-NO-+
None
Default: | CONVSPACE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
CONVSPACE only has an effect when the DBSPACE Compiler directive is off.
Specifies, in part, the filename extension of the copyfile that the Compiler is to look for if a filename in a COPY statement is specified without an extension.
+-------------. v | >>-.---.--COPYEXT-"extension-.-------------.-"-->< .-/-+ .-,-extension-+
extension |
A filename extension. |
Default: | COPYEXT"cbl,cpy" (on DOS, Windows and OS/2) COPYEXT",cbl,cpy" (on UNIX) |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Up to eight extensions can be specified, each extension being up to 10 characters long. A null extension is used to represent an extension of spaces; for example:
COPYEXT"src,,txt"
would first look for files with the extension .src, then for files with no extension, and then for files with the extension .txt.
If the filename specified in a COPY statement has no extension or trailing period then a list of possible extensions are tried in turn until a file is sucessfully found or the list is exhausted (and an error reported.) The list is derived from a combination of the values of the COPYEXT and OSEXT directives. The first extension in the list is either the value in the OSEXT directive or the first value in the COPYEXT directive depending on which of the two directives was last specified. The remainder of the list is the remainder of the values in the COPYEXT directive (values 2 through to the end). For example:
COPYEXT"cpy,cbl,txt" OSEXT"src"
would have the same effect as:
COPYEXT"src,cbl,txt"
If you have many COPY statements that do not specify an extension, using COPYEXT can improve the compilation speed of your program. For example, if all of your copyfiles have the extension .cpy, specifying COPYEXT"CPY,CBL" would avoid unnecessary file access attempts.
OSEXT Compiler directive
Makes the Compiler treat the library specified in a COPY statement as an .lbr file.
>>-.---.-.----.--COPYLBR------------------->< .-/-+ .-NO-+
None
Default: | NOCOPYLBR |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
With NOCOPYLBR, the Compiler assumes that the library is a path-name.
Makes the Compiler list the contents of files named in COPY statements.
>>-.---.-.----.--COPYLIST-.-----------.---->< .-/-+ .-NO-+ .-"integer"-+
integer |
Must be 0 or between 50 and 99. |
Default: | COPYLIST |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
integer is the number of a COBOL segment. It must be 0 or in the range 50 through 99. If it is not specified, the contents of all copyfiles are listed. If it is specified, the contents of all copyfiles in the first three divisions (that is, the Identification, Environment and Data Divisions), the root, and the given segment are listed. An integer of 0 refers to the first three divisions and all root segments.
NOCOPYLIST prevents the listing of the contents of any copyfiles. If a segment-number is specified with NOCOPYLIST, only copyfiles in that segment are listed. For example:
COPYLIST"53" | List all copyfiles in the first three divisions, the root segment, and segment 53. |
NOCOPYLIST"53" | List only copyfiles that are in segment 53. |
Whatever the state of this directive, the name of any copyfile open when a page heading is output is given in that heading.
Makes the Compiler produce extra information so that you can use CSI.
>>-.---.-.----.--CSI----------------------->< .-/-+ .-NO-+
None
Default: | NOCSI |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
CSI sets ANIM at end.
This directive is reserved for use with products containing CSI, such as Workbench and Object COBOL for UNIX. Do not change its setting unless you have an appropriate add-on product.
The CSI file has extension .csi. Its location is controlled by the COBIDY directive.
COBIDY Compiler directive
Specifies the currency sign to be recognized in the PICTURE clause.
>>-.---.--CURRENCY-SIGN--"integer"--------->< .-/-+
integer |
ASCII code of the character, in decimal. |
Default: | CURRENCY-SIGN"36" (that is, "$") |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
You cannot specify a valid PICTURE clause symbol. See your Language Reference for a list of these.
Specifies the format of the date stored in the CURRENT-DATE special register.
>>-.---.--CURRENT-DATE--"date-format"------>< .-/-+
date-format |
Either DDMMYY or MMDDYY. |
Default: | CURRENT-DATE"MMDDYY" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The DDMMYY parameter causes CURRENT-DATE to be stored in European format. The parameter can be specified in either upper case or lower case.
Specifies the type of data compression to be done on sequential and indexed files.
>>-.---.-.-----DATACOMPRESS--"integer"-.--->< .-/-+ .-NO--DATACOMPRESS------------+
integer |
Must be one of:
|
Default: | NODATACOMPRESS |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The only values that can be specified for data compression supported by this system are 1 and 3. Values in the range 128 through 255 indicate user-defined compression routines.
You need to specify data compression only when creating the file. Subsequently, the data compression is detected when the file is opened.
To get data compression on an individual file, use $SET statements in your source so that this directive is in effect only for the part of the source containing the file's SELECT statement.
Data compression is supported only by the Callable File Handler, ExtFH. All indexed files are processed by ExtFH. However, if you want to use data compression with sequential files, every program referencing those files must be compiled with the directive CALLFH"EXTFH".
CALLFH Compiler directive
Makes the Compiler put literals in the DATA segment of the program rather than the CODE segment.
>>-.---.-.----.--DATALIT------------------->< .-/-+ .-NO-+
None
Default: | DATALIT |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Set to NODATALIT at end by OPT"0".
For segmented programs, specifying NODATALIT gives the advantage of being able to have literals in the CODE segment so that they can then be swapped out with the code that references them. There is generally no advantage in specifying NODATALIT for a nonsegmented program. However, if you are running generated code (.gnt files) under DOS, specifying NODATALIT lets you discard any unreferenced code segment.
Puts the date in the Date-Compiled paragraph and at the top of each page of the listing.
>>-.---.-.-------DATE--"string"-.---------->< .-/-+ ..----.-DATE-----------+ .-NO-+
string |
An alphanumeric literal. |
Default: | DATE |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
The date and time, available from the operating system, are automatically inserted when you specify DATE. You can, however, enter the date yourself as the parameter. With NODATE, the paragraph is left unaltered.
With DATE, the operating system date or the string you enter appears at the top of each page of the listing. With NODATE, spaces are used instead.
Makes the Compiler check that any Double-byte Character Set (DBCS) literals only contain valid 16-bit DBCS characters.
>>-.---.-.----.--DBCHECK------------------->< .-/-+ .-NO-+
None
Default: | NODBCHECK |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
If you specify DBCHECK in environments that support validation of DBCS data, any literal that does not contain only valid 16-bit DBCS characters results in syntax error 1048 (DBCS literal includes invalid data).
Makes the Compiler accept characters of the Double-byte Character Set (DBCS) for use in ideographic languages such as Japanese, Chinese and Korean.
>>-.---.-.-------DBCS--"integer"-.--------->< .-/-+ ..----.-DBCS------------+ .-NO-+
integer |
Must be 1, 2 or 3. Indicates which compatibility is required. |
Default: | NODBCS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to DBCS"2" immediately by SAA, VSC2"2", VSC2"3"
or MF"7".
Set to DBCS"3" immediately by COBOL370 or MF"integer"
where integer > 7.
The possible values of integer are:
1 | Behavior as in earlier versions of this Compiler. |
2 | Provides full System Application Architecture (SAA) DBCS support. This directive sets DBSPACE. |
3 | Includes DBCS support as in IBM COBOL/370. This includes the use of PIC N, PIC G, and DBCS literals specified with "delimiter N". |
Defines the two characters used as the shift-out and shift-in delimiters in DBCS literals.
>>-.---.-.----DBCSSOSI-"integer-1"-"integer-2"-.>< .-/-+ .-NO-DBCSSOSI-------------------------+
integer-1 |
ASCII code of the shift-out character, in decimal. |
integer-2 |
ASCII code of the shift-in character, in decimal. |
Default: | NODBCSSOSI |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When shift-out and shift-in characters are specified by this directive, every DBCS literal must have the shift-out character immediately after the opening quotation mark and the shift-in character immediately before the closing quotation mark.
They act as additional delimiters to the literal, and are not part of its value. With NODBCSSOSI, no shift-out and shift-in characters are needed or recognized.
Makes the Compiler interpret the figurative constant SPACE, when used as a DBCS figurative constant, as the double-byte space character supplied by the system.
>>-.---.-.----.--DBSPACE------------------->< .-/-+ .-NO-+
None
Default: | Depends on the setting of MF"integer". If integer is greater than 7, the default is DBSPACE. Otherwise, it is NODBSPACE. |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
DBSPACE set immediately by COBOL370, NCHAR"2", SAA, VSC2"2"
or VSC2"3".
DBSPACE set immediately by MF"integer" where integer
> 7
With DBSPACE, the Compiler uses the system-supplied double-byte space character. NODBSPACE provides compatibility with previous versions of this Compiler, where the double-byte space character was two ASCII space characters (x"2020").
Specifies the behavior of de-editing moves from numeric-edited items to other numeric-edited items or to numeric items.
>>-.---.--DE-EDIT--"integer"--------------->< .-/-+
integer |
Must be 1 or 2. Indicates which compatibility required. |
Default: | DE-EDIT"2" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The possible values of integer are:
1 | Behavior as in earlier versions of this Compiler. Ignores the PICTURE clause of the sending field. |
2 | De-edits according to the PICTURE clause of the sending field. This provides ANSI'85 conformance. |
01 a pic 909V99 value "30456". 01 b pic 9(5). ... move a to b
With DE-EDIT"1", b contains 30456. With DE-EDIT"2", b contains 00034; the 0 after the 3 is dropped because it corresponds to the insertion character 0 in the picture-string of a, and the .56 is dropped because B has no decimal places.
Initializes each otherwise undefined byte of the Data Division to the character given.
>>-.---.--DEFAULTBYTE--"integer"----------->< .-/-+
integer |
ASCII code of the character, in decimal. |
Default: | DEFAULTBYTE"32" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to DEFAULTBYTE"32" immediately by CHARSET"ASCII".
Set to DEFAULTBYTE"0" immediately by CHARSET"EBCDIC",
MS, IBM-MS or PC1.
integer is a decimal value. For example, if you want to specify an EBCDIC space use DEFAULTBYTE"64"; to specify an ASCII space use DEFAULTBYTE"32".
Specifies the default calling convention.
>>-.---.-.-------DEFAULTCALLS--"integer"-.->< .-/-+ ..----.-DEFAULTCALLS------------+ .-NO-+
integer |
Default CALL convention |
Default: | NODEFAULTCALLS |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
DEFAULTCALLS without the optional parameter specifies that the calling convention specified in the PROCEDURE DIVISION USING statement is to be used as the default calling convention.
DEFAULTCALLS"integer" specifies that the calling convention indicated by "integer" is to be used as the default calling convention.
NODEFAULTCALLS is equivalent to DEFAULTCALLS"0".
Individual CALL statements can override these defaults (see your Language Reference). See your Programmer's Guide to Writing Programs for a list of available calling conventions.
Makes the Compiler produce a module definition file (.def file), for use by the Linker.
>>-.---.-.-------DEFFILE--"filename"--.---->< .-/-+ ..----.-DEFFILE--------------+ .-NO-+
filename |
A full file specification. |
Default: | NODEFFILE |
Phase: | Generate |
Environment: | 16-bit on Windows and OS/2 32-bit on Windows NT and OS/2 V2 |
$SET: | Any |
If OMF"GNT", DEFFILE sets OMF"OBJ" at end.
This directive only affects .obj files.
The name of this file is included on the command line to the Linker.
If filename is omitted, the name of the file created is obj-name.def, where obj-name is the name of the object file without an extension. filename can be specified as *.ext to set the extension but use obj-name as the base-name.
The module definition file created is used when linking to create an executable file for Windows, Windows NT or OS/2. The exact contents of the file is determined by the settings of the DLL and DEFFILETYPE directives, as follows:
DEFFILE"*.dfa" DEFFILETYPE"OS2" DLL
creates a file called obj-name.dfa containing the lines:
LIBRARY INITINSTANCE PROTMODE DATA NONSHARED EXPORTS source-name @1
DEFFILETYPE Compiler directive
DLL Compiler directive
Specifies the type of module definition file (.def file) to be produced when the DEFFILE directive is specified.
>>-.---.--DEFFILETYPE--"type"-------------->< .-/-+
type |
Must be WIN, NT or OS2. |
Default: | DEFFILETYPE"OS2" DEFFILETYPE"NT" (on 32-bit COBOL system for Windows NT) |
Phase: | Generate |
Environment: | 16-bit on Windows and OS/2 32-bit on Windows NT and OS/2 V2 |
$SET: | Initial |
Produces a .def file suitable for linking to create an .exe file or a .dll file for use on the environment specified by type:
WIN | Windows |
NT | Windows NT |
OS2 | OS/2 |
On the 16-bit COBOL system, the DLL directive indicates if the module definition file is to be used to create an .exe or a .dll file.
This directive affects only .obj files.
DEFFILE Compiler directive
DLL Compiler directive
Makes READ statements detect when a record is locked by another program.
>>-.---.-.----.--DETECT-LOCK--------------->< .-/-+ .-NO-+
None
Default: | DETECT-LOCK |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The Compiler also accepts the name without a hyphen; that is DETECTLOCK
With DETECT-LOCK, if a READ statement reads a record locked by another program, it returns an I/O status of 9/068. With NODETECT-LOCK, it returns 0/000. In both cases it reads the record successfully.
If a READ statement attempts to lock a record (that is, if the statement LOCK MODE IS AUTOMATIC has been specified, or a WITH LOCK phrase is used on the READ statement), and the record is locked by another program, an I/O status of 9/068 is returned. If NODETECT-LOCK is specified, and the READ statement is not attempting to lock a record an I/O status of 0/000 is returned.
Changes the behavior of certain features to be compatible with Data General Interactive COBOL rev 1.30.
>>-.---.-.----.--DG------------------------>< .-/-+ .-NO-+
None
Default: | NODG |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
See your Language Reference for details of syntax support for Data General Interactive COBOL rev 1.30.
Makes the Compiler read directives from a file.
>>-.---.-.-DIRECTIVES-.-"filename"--------->< .-/-+ .-DIR--------+
filename |
A full file specification. |
Default: | None |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | Any |
A directives file is a text file containing directives. Directives are separated by a space or the end of line. A directive cannot be broken across two lines.
You can include a comment line with an ampersand (&) in column 1, followed by a space. If you omit the space the comment is treated as a directive, and the syntax check on that file fails.
The directives are read from the file until the end of file is reached or another DIRECTIVES directive is encountered. The maximum length of a line is 128 characters.
You can specify more than one directives file in a program by specifying several DIRECTIVES"filename". If you specify the DIRECTIVES directive in a directives file, the Compiler switches to the new directives file, reads all the directives in it, returns to the original directives file, and continues to read the directives specified after the DIRECTIVES directive. You can nest directives files to any depth.
The directives file is searched for in the current and COBOL system directories. If no extension is specified, a file extension of .dir is assumed. If no file is found, the search is repeated with no extension.
USE Compiler directive
Makes the Compiler process $SET statements held in comment lines.
>>-.---.-.----.--DIRECTIVES-IN-COMMENTS---->< .-/-+ .-NO-+
None
Default: | NODIRECTIVES-IN-COMMENTS |
Phase: | Syntax Check |
Environment: | All |
$SET: | Any |
This directive enables sources to contain directives used when compiling with the Micro Focus Compiler, but ignored (as comment lines) by any other compiler, such as a mainframe compiler.
$SET can appear anywhere on a line, provided it is the first thing on the line. However, if this directive is set, the $SET statement is processed even if the line is a comment line (asterisk in column 7).
Makes the Compiler produce a module definition file suitable for creating a .dll file instead of an .exe file when you specify the DEFFILE directive.
>>-.---.-.----.--DLL----------------------->< .-/-+ .-NO-+
None
Default: | DLL |
Phase: | Generate |
Environment: | 16-bit on Windows and OS/2 |
$SET: | Initial |
This directive only affects .obj files.
DEFFILE DEFFILETYPE"WIN" NODLL
causes the Compiler to produce a module definition file of name source-name.def suitable for creating an .exe file for Windows.
DEFFILE Compiler directive
DEFFILETYPE Compiler directive
Specifies that words reserved in IBM DOS/VS COBOL are to be treated as reserved words.
>>-.---.-.----.--DOSVS--------------------->< .-/-+ .-NO-+
None
Default: | NODOSVS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to NODOSVS immediately by OSVS.
OSVS Compiler directive
Specifies that CANCEL statements are not to be ignored.
>>-.---.-.----.--DYNAM--------------------->< .-/-+ .-NO-+
None
Default: | DYNAM |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
With NODYNAM, CANCEL statements in the program are ignored.
Makes the Compiler put information about line numbers and symbols into the .obj file for use by a run-time debugger such as Microsoft CodeView.
>>-.---.-.-------EANIM--"integer"----.----->< .-/-+ ..----.-EANIM---------------+ .-NO-+
integer |
Indicates the type of debugger support to enable. |
Default: | NOEANIM |
Phase: | Both |
Environment: | 16-bit |
$SET: | No |
If OMF"GNT", EANIM sets OMF"OBJ" at end.
If OPT"0", EANIM sets OPT"1" at end.
EANIM sets ANIM immediately.
integer can be one of two values:
1 | Enables support for versions of Microsoft Codeview other than V3.50, and other .exe level debuggers. COBOL data types cannot be examined directly, but the CodeView command DB can be used to give a memory dump of a COBOL variable. |
2 | Enables support for Microsoft CodeView V3.50, such that you can examine and modify most COBOL data types in the debugger. |
Specifying EANIM is the same as specifying EANIM"2".
For CodeView V3.00 and V3.1x, you can use either EANIM or EANIM"1". For CodeView V4.xx you must use EANIM"1", and you must use the Linker that came with your copy of CodeView.
This directive affects only .obj files.
If you subsequently link the program using the options /CO, the debugging information is copied into the .exe file.
EANIM causes FILLER data items to be placed in the dictionary, as is required by CodeView V3.50.
Enables support for Early User Syntax.
>>-.---.-.----.--EARLY-RELEASE------------->< .-/-+ .-NO-+
None
Default: | NOEARLY-RELEASE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
If NOEARLY-RELEASE and MF are set, MF defaults to MF"10".
If EARLY-RELEASE and MF are set, MF defaults to MF"11".
You must specify this directive if you want to use any of the early-release directives.
Makes the Compiler display error lines and error messages on the screen.
>>-.---.-.----.--ECHO---------------------->< .-/-+ .-NO-+
None
Default: | ECHO |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Set to NOECHO immediately by ECHOALL.
For each error, the source line is displayed together with an error number and (unless BRIEF is set) an explanatory message.
BRIEF Compiler directive
Sends a full listing to the screen as well as to a printer or other device specified with the LIST or PRINT directive.
>>-.---.-.----.--ECHOALL------------------->< .-/-+ .-NO-+
None
Default: | NOECHOALL |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
ECHOALL sets NOECHO immediately.
Makes the Compiler send error messages to a file in a format compatible with a specified editor.
>>-.---.-.-----EDITOR--"editor-id"-.------->< .-/-+ .-NO--EDITOR--------------+
editor-id |
Must be MF, MF2 or MS. |
Default: | NOEDITOR |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | No |
EDITOR"MS" sets NOENSUITE immediately.
EDITOR"MF" sets ENSUITE"1" immediately.
The possible values of editor-id are:
MF | Micro Focus Editor |
MF2 | Micro Focus Animator V2 |
MS | Microsoft Programmer's Workbench |
You are recommended to use the NOECHO and NOQUERY directives in addition to the EDITOR directive.
ECHO Compiler directive
FLAGSINEDIT Compiler directive
QUERY Compiler directive
Reserved for internal use only.
Specifies that the listing is to contain no source lines except those that have errors or flags.
>>--.---.--.----.---ERRLIST---"option"-------->< .-/-+ .-NO-+
option | Type of listing produced. See Comments below. |
Default: | ERRLIST"EMBED" |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
ERRLIST"END"is switched to ERRLIST"VERBOSE" if FLAGQ or ERRQ are set.
The possible values of option are:
TERSE | Only lines containing errors are shown in the list file. Both source line and error are shown. |
EMBED | List file contains source listing with error messages embedded within it at the point they occur. |
END | List file contains source listing followed by error messages separately. In a batch compile, no error messages are echoed to screen unless a screen listing is selected. |
VERBOSE | List file contains source listing with error messages embedded within it at the point they occur followed by error messages relisted separately. |
Makes the Compiler ask, each time it gives an error message, whether you want to stop compiling.
>>-.---.-.----.--ERRQ---------------------->< .-/-+ .-NO-+
None
Default: | NOERRQ |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Makes the Compiler store the program data in uncompressed form.
>>-.---.-.----.--EXPANDDATA---------------->< .-/-+ .-NO-+
None
Default: | NOEXPANDDATA |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
This directive only affects .obj files.
Normally the COBOL system stores the program data in compressed form and expands it when the program is loaded. Specifying EXPANDDATA when compiling to an .obj file causes the data to be stored in its expanded form.
This saves a small amount of time at initial program entry, and on DOS it gives a smaller .exe file because information to guide the expansion can be omitted; DOS always allocates the space for the expanded form in any case. On OS/2 it gives a slightly bigger .exe file.
When data is stored in this way, it is only initialized once, when the program is physically loaded. Hence the IS INITIAL phrase in the Program-Id paragraph does not work. Also, a program which is canceled and called again is only reinitialized if it is a separate module, such that this cancel/call cycle causes a physical reload from disk. The directive is ignored when compiling to a.gnt file.
Specifies that index-names defined in a table in an EXTERNAL record are to be treated as EXTERNAL.
This directive is provided for compatibility with earlier releases of this COBOL system. It should not be used with new programs, and existing programs should be recoded to make the use of this directive unnecessary. It will be removed in a future release.
>>-.---.-.----.--EXTINDEX------------------>< .-/-+ .-NO-+
None
Default: | NOEXTINDEX |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
With EXTINDEX, behavior is as in earlier versions of this Compiler. With NOEXTINDEX, such items are not regarded as EXTERNAL, thus conforming to the ANSI'85 standard.
Tells the Compiler that the parameters in the USING clauses of the Procedure Division statement and each ENTRY statement conform to certain restrictions. This enables it to produce faster code.
>>-.---.-.----.--FASTLINK------------------>< .-/-+ .-NO-+
None
Default: | NOFASTLINK |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
If OMF"GNT", FASTLINK sets OMF"OBJ" at end.
If ASSUME is set, set to NOFASTLINK at end by REGPARM"IN".
This directive only affects .obj files.
The restrictions are:
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
>>-.---.-.----.--FASTSORT------------------>< .-/-+ .-NO-+
None
Default: | FASTSORT |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Makes the Compiler define special-registers giving access to File Control Descriptions (FCD) and Key Definition Blocks.
>>-.---.-.----.--FCDREG-------------------->< .-/-+ .-NO-+
None
Default: | NOFCDREG |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
FCDREG causes a special register, FH--FCD, to be created for each File Definition (FD) in the program. This register points to the File Control Description (FCD) for the file. Thus the program can read or change information in the FCD.
For each indexed file, an additional special register, FH--KEYDEF, is created. This register points to the Key Definitions Block for the file.
The layout of the FCD and the Key Definitions Block is given in your Programmer's Guide to File Handling.
Specifies that the record buffer for a file should be cleared after every write operation. The buffer is cleared to the value specified by the DEFAULTBYTE directive.
>>-.---.-.----.--FDCLEAR------------------->< .-/-+ .-NO-+
None
Default: | NOFDCLEAR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The FDCLEAR directive is effective while the SELECT clauses are being processed. Use $SET statements before and after each SELECT clause to apply this feature to selected files. Alternatively, use it once before processing any SELECT statements to apply it to all files in a program.
The FDCLEAR directive is ignored for files subject to a SAME RECORD AREA clause in the I-O-Control paragraph.
In the following code, FDCLEAR is applied only to file-2:
file-control. select file-1 ... $set fdclear select file-2 ... $set nofdclear select file-3 ...
Causes the default locking to become AUTOMATIC rather than EXCLUSIVE for files in a multi-user environment, and automatically locks records on a WRITE or REWRITE statement when the program is locking multiple records.
This directive is not related in any way to Fileshare Version 2.
You must not use this directive when using Fileshare V2.
>>-.---.-.----.--FILESHARE----------------->< .-/-+ .-NO-+
None
Default: | NOFILESHARE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive is included for compatibility with earlier file-sharing products. When writing new programs you should use the locking syntax rather than this directive.
FILESHARE is equivalent to WRITELOCK and AUTOLOCK together. NOFILESHARE is equivalent to NOAUTOLOCK and NOWRITELOCK together.
Specifies the file format to use when creating files.
>>-.---.--FILETYPE--"integer"-------------->< .-/-+
integer |
An integer representing the type to use. |
Default: | FILETYPE"0" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
FILETYPE"integer" sets IDXFORMAT"integer" immediately.
The possible values of integer are:
0 | System specific default. For DOS, Windows and OS/2, this is the same as specifying 3. For UNIX, this is the same as specifying 1. |
1 | C-ISAM format. |
2 | Micro Focus Level II format. |
3 | Micro Focus indexed file format. |
4 | Optimized Micro Focus indexed file format, for fast duplicate file handling. |
5 | Btrieve format (with ANSI conformance emulation). (DOS, Windows and OS/2 only.) |
6 | Btrieve format (without ANSI conformance emulation). (DOS, Windows and OS/2 only.) |
7 | RLIO format indexed files |
8-10 | Reserved. |
11 | Mainframe print file format. |
12-13 | Reserved. |
14 | Heap file. |
15-255 | Reserved. |
Type 14 is available for all file organizations only in the 16-bit COBOL system, and for indexed files in the 32-bit COBOL system for OS/2 V2.
This directive only works on files processed by the Callable File Handler. Use the CALLFH directive if you are processing files other than indexed files.
To produce print files in the style of an IBM mainframe using FILETYPE"11", you must also:
select printfile assign "print" organization is sequential.
(Print files in the style of an IBM mainframe have print control character in the first column.)
ADV Compiler directive
CALLFH Compiler directive
Tells the Compiler how many times to perform its final pass which shortens jump instructions.
>>-.---.--FIXING--"integer"---------------->< .-/-+
integer |
Must be between 1 and 99. |
Default: | FIXING"99" |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Any |
The Compiler tries to convert 80x86 jump instructions into their shorter form if possible; this gives smaller object code. Shortening some jump instructions might result in other jumps becoming eligible to be shortened and so further fixing passes might result in further size reduction.
The Compiler does this very quickly, so there should be no need to change this directive. It is maintained only for compatibility with earlier versions of the Compiler.
Changes the way in which generated code accesses the Data Division in object (.obj) code.
>>--.---.--.----.-------FIXOPT-------------->< .-/-+ .-NO-+
None
Default: | NOFIXOPT |
Phase: | Generate |
Environment: | 32-bit for Windows NT and OS/2 V2 |
$SET: | Initial |
If you receive code generation error 78 (Too many code relocations (limit=limit, actual=actual-relocations)) when creating object code, you must recompile specifying FIXOPT.
Makes the Compiler produce language-level certification flags when it finds syntax that is not part of a specified dialect of COBOL.
>>-.---.-.-----FLAG--"dialect"-.----------->< .-/-+ .-NO--FLAG------------+
dialect |
A literal identifying the dialect. |
Default: | NOFLAG |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The possible values of dialect are:
MF | Micro Focus |
ANS74 | ANSI COBOL standard X3.23, 1974 |
ANS85 | ANSI COBOL standard X3.23, 1985 |
SAA | Full implementation of IBM's System Application Architecture definition of COBOL |
VSC2 | IBM VS COBOL II |
OSVS | IBM OS/VS COBOL |
DOSVS | IBM DOS/VS COBOL |
COBOL370 | IBM COBOL/370 |
You cannot use DG, RM or MS as a dialect.
When creating a program that is to be fully ANSI'85 conforming, use:
ANS85 FLAG"ANS85"
and correct anything that causes a flagging message to be produced.
For VSC2, the flagging given depends on the version of VS COBOL II selected by the VSC2 directive. For SAA, the flagging given depends on the level of SAA selected by the SAA directive. For COBOL370, the flagging depends on the level of COBOL/370 selected by the COBOL370 directive.
Makes the Compiler produce informational messages indicating potential problem areas on the chip architecture in use.
>>-.---.-.----.--FLAG-CHIP----------------->< .-/-+ .-NO-+
None
Default: | NOFLAG-CHIP |
Phase: | Syntax check |
Environment: | 16-bit |
$SET: | Any |
You must set the CHIP directive and ensure that WARNING"3" is set.
Causes the Compiler to generate special informational messages for potential problem areas for the chip architecture given by the CHIP directive. It has no effect if NOCHIP is set. To see the messages, you also need to set WARNING"3". See the chapter Writing Programs in your Programmer's Guide to Writing Programs for more details.
Makes the Compiler output flagging messages as error messages, warning messages or informational messages.
>>-.---.-.-----FLAGAS--"severity"-.-------->< .-/-+ .-NO--FLAGAS-------------+
severity |
A literal showing the severity to assign to flag messages. |
Default: | NOFLAGAS |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The possible values of severity are:
S | Severe error |
E | Error |
W | Warning |
I | Informational |
When used with the FLAG directive, FLAGCD flags any directive settings that cause incompatibility with the specified dialect of COBOL.
>>-.---.-.--------FLAGCD--"severity"-.----->< .-/-+ ..----.--FLAGCD-------------+ .-NO-+
severity |
A literal showing the severity to assign to flag messages arising from conflicting directives. |
Default: | NOFLAGCD |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The possible values of severity are:
S | Severe error |
E | Error |
W | Warning |
I | Informational |
If FLAGCD is specified with no parameters, the messages are assigned the severity given by the FLAGAS directive, if specified; if FLAGAS is not specified, they are produced as flagging messages.
Causes the Compiler to flag any syntax that behaves differently at run time depending on the setting of CMPR2.
>>-.---.-.----.--FLAGMIG------------------->< .-/-+ .-NO-+
None
Default: | NOFLAGMIG |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Such syntax receives W-level messages, with the additional text "MIGR" in the message line to show the warning results from specifying the FLAGMIG directive.
CMPR2 Compiler directive
Makes the Compiler ask, each time it gives a flagging message, whether you want to stop compiling.
>>-.---.-.----.--FLAGQ--------------------->< .-/-+ .-NO-+
None
Default: | NOFLAGQ |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Specifies whether flagging messages are to be included in an error file.
>>-.---.-.----.--FLAGSINEDIT--------------->< .-/-+ .-NO-+
None
Default: | FLAGSINEDIT |
Phase: | Both |
Environment: | All |
$SET: | No |
This directive has no effect if NOEDITOR is specified. If EDITOR and FLAGSINEDIT are specified, the error file produced contains all flagging messages produced by the Compiler.
EDITOR Compiler directive
Makes the Compiler produce language-level certification flags when it finds syntax that is not part of a specified level of the ANSI'85 Standard.
>>-.---.-.-----FLAGSTD--"string"-.--------->< .-/-+ .-NO--FLAGSTD-----------+
string |
List of language levels |
Default: | NOFLAGSTD |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
string contains a list of parameters, each defining a language level or optional module of the ANSI Standard. A feature is not flagged if it is in one of the specified levels or below, or in one of the specified optional modules. A feature is flagged if it is an extension, in a higher level of the Standard, or in an optional module not specified. In addition, it is possible to flag elements identified as Obsolete by the ANSI Standard.
string consists of a combination of the following parameters:
M | ANSI'85 defined Minimum COBOL subset |
I | ANSI'85 defined Intermediate COBOL subset |
H | ANSI'85 defined High COBOL subset |
C1 | Communications optional module level 1 |
C2 | Communications optional module level 2 |
D1 | Debug optional module level 1 |
D2 | Debug optional module level 2 |
S1 | Segmentation optional module level 1 |
S2 | Segmentation optional module level 2 |
R | Report writer optional module |
O | Obsolete language elements |
They can appear in any order but must be separated by at least one space. The following combination of flags can be specified:
FLAG and FLAGSTD provide similar functionality and thus only one can be used.
The ANS85 directive must be on.
Folds the identifier/literal associated with CALL, CANCEL, ENTRY, and CHAIN statements and the program-name in the PROGRAM-ID paragraph to upper or lower case.
>>-.---.-.-----FOLD-CALL-NAME--"case"-.---->< .-/-+ .-NO--FOLD-CALL-NAME---------+
case |
UPPER or LOWER |
Default: | NOFOLD-CALL-NAME |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The Compiler also accepts the directive-name without hyphens; that is FOLDCALLNAME.
In a CALL identifier statement, the name called is given the case specified by this directive, but the actual contents of identifier are not changed.
The FOLD-CALL-NAME directive can help in the transfer of COBOL code from an environment with filenames which are not case specific to one which is. For example, from OS/2 to UNIX.
It also makes the Compiler conform with the ANSI'85 standard interprogram communications module, in which the case of a program-name in a CALL statement does not matter.
With NOFOLD-CALL-NAME, by normal COBOL convention the program-name is folded to upper case unless enclosed in quotes. This also applies to the root program of a nested program. All the subprogram-names are folded to upper case even when in quotes. (Enclosing program-names in quotes is a Micro Focus extension. See the section The Program-Id Paragraph in your Language Reference.)
The program-name is also accessible as an entry point in a fully linked executable.
Determines whether copyfile-names should be converted to upper case or lower case.
>>-.---.-.-----FOLD-COPY-NAME--"case"-.---->< .-/-+ .-NO--FOLD-COPY-NAME---------+
case |
"UPPER" or "LOWER". |
Default: | NOFOLD-COPY-NAME |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The Compiler also accepts the directive-name without hyphens; that is FOLDCOPYNAME.
The FOLD-COPY-NAME directive affects both text and library-names regardless of whether they are specified as user-defined words or literals.
Specifying FOLD-COPY-NAME"UPPER" converts copyfile names to upper case (also known as folding to upper case).
Specifies the number of lines on each page of the listing.
>>-.---.-.-----FORM--"integer"-.----------->< .-/-+ .-NO--FORM------------+
integer |
Must be greater than 3. |
Default: | FORM"60" |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | Any |
Set to NOFORM at end by NOLIST or MASM.
Set to FORM"60" immediately by LIST.
With FORM"integer", a form-feed character is always produced at the head of the listing file. With NOFORM, no form-feed characters or page headings are produced anywhere in the listing.
Determines whether one floating-point receiving item can affect the results of other, nonfloating-point receiving items.
>>-.---.-.-----FP-ROUNDING--"dialect"---.-->< .-/-+ .-NO--FP-ROUNDING--------------+
dialect |
Must be VSC2 or OSVS. |
Default: | NOFP-ROUNDING |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
In OS/VS COBOL and VS COBOL II, if any of the sending data items of an arithmetic statement are floating-point, all receiving fields are rounded, regardless of the presence or absence of the ROUNDED phrase and regardless of whether or not the receiving fields are floating-point.
In VS COBOL II, if any receiving data item is defined as floating-point, rounding takes place for all receiving data items regardless of the presence or absence of the ROUNDED phrase, of whether or not the receiving field is floating-point, and of whether or not there are any sending items which are floating-point.
With NOFP-ROUNDING, no rounding takes place for fixed-point targets in calculations involving floating-point operands unless the ROUNDED phrase is explicitly used in the source.
If two data items are defined as follows:
05 numeric-field pic 999. 05 floating-field comp-1.
and the following statement is executed:
compute numeric-field floating-field = 7.7 + 1
specifying FP-ROUNDING"VSC2" results in numeric-field containing 9 (rounded), whereas specifying NOFP-ROUNDING or FP-ROUNDING"OSVS" would result in numeric-field containing 8 (truncated).
If, using the same two data items, the following statement is executed:
compute numeric-field = +7.6E0
specifying FP-ROUNDING"VSC2" or FP-ROUNDING"OSVS" results in numeric-field containing 8 (rounded), whereas specifying NOFP-ROUNDING results in numeric-field containing 7 (truncated).
Makes the Compiler produce extra information so that you can use Xilerator (16-bit COBOL system only) or Animator V2 (32-bit COBOL system for Windows NT and OS/2 V2) to debug generated code.
This directive is retained for compatibility with earlier versions of this COBOL system, and will be removed in a future version. With this version, use the ANIM directive instead.
>>-.---.-.----.--GANIM--------------------->< .-/-+ .-NO-+
None
Default: | NOGANIM |
Phase: | Both |
Environment: | 16-bit COBOL system and 32-bit COBOL system for Windows NT and OS/2 V2. |
$SET: | No |
GANIM sets ANIM and NORNIM at end.
If OPT"0", GANIM sets OPT"1" at end.
On the 16-bit COBOL system, the Compiler produces an .idy file containing information required for debugging generated code using Xilerator. The .idy file created can also be used to animate the intermediate code with Animator or Animator V2.
With the 32-bit COBOL systems on Windows NT and OS/2 V2, the Compiler produces a .gdy file for animating native code using Animator V2.
Specifies the name of the object code file.
>>-.---.--.---GNT---.--"path-name\filename"--.---.--->< .-/-+ . .--"path-name/filename"--. . . .--"path-name\"----------. . . .--"path-name/"----------. . . .--"filename"------------. . . .--()--------------------+ . .-NO--GNT------------------------------+
pathname | Path or environment variable specifying the path. |
filename | A full file specification. |
Default: | GNT"source-name.gnt" (with OMF"GNT") GNT"source-name.obj" (with OMF"OBJ") |
Phase: | Generate |
Environment: | 16-bit, 32-bit for Windows NT and OS/2 V2 |
$SET: | Any |
In the 16-bit COBOL system, OBJ and GNT are synonymous. Setting NOGNT also sets NOOBJ.
With NOGNT, no object code file is produced.
In the 16-bit COBOL system, setting this directive does not imply OMF"GNT". To ensure that your .gnt file contains .gnt format object code you must make sure that OMF"GNT" is also specified.
On 32-bit COBOL systems, use this directive in preference to the OMF directive.
On 32-bit COBOL systems, this directive creates a file in the format specified, with the name specified. For example, if you specify GNT"myprog.gnt", then a file myprog.gnt is produced that contains generated code.
This directive is reserved for use with add-on products. Do not change its setting unless you have the appropriate add-on product.
Specifying GNTANLZ enables the GNT Analzyer, which counts the number of times each COBOL statement has been executed.
>>-.---.-.-----GNTANLZ--"count-type"-.----->< .-/-+ .-NO--GNTANLZ---------------+
count-type |
The type of count needed |
Default: | NOGNTANLZ |
Phase: | Syntax check |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | Initial |
Possible values of count-type are:
COUNT | Count the number of times each block is executed |
TICK | For each block of code, set the count to one when it is executed. This uses less memory than COUNT. |
For more details, see the chapter Analyzing Your Applications in your Workbench User Guide.
Enables faster interprogram calls.
>>-.---.--GNTLEVEL--"level"---------------->< .-/-+
level |
The level of support needed. Must be 1 or 2. |
Default: | GNTLEVEL"2" |
Phase: | Generate |
Environment: | 32-bit |
$SET: | Initial |
Possible values of level are:
1 | Produces generated code which is compatible with Micro Focus COBOL V3.1 (or earlier) for UNIX. |
2 | Produces generated code which has faster interprogram calls and is compatible with Micro Focus COBOL V3.2 (or later) for UNIX. |
This directive has been replaced by the directive CHANGE-MESSAGE. It remains for compatibility only, and will be removed in a future release.
Registers the number of a syntax check error message to "hide" so that if the error is encountered it is ignored.
>>-.---.-.-----HIDE-MESSAGE--"integer"-----.---->< .-/-+ | | .-NO--HIDE-MESSAGE--.-----------.-+ .-"integer"-+
integer |
The number of the syntax check error message to hide. |
Default: | NOHIDE-MESSAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The Compiler also accepts the directive-name without a hyphen; that is HIDEMESSAGE.
HIDE-MESSAGE"integer" adds integer to a list of syntax check error message numbers. To hide several error message numbers using this feature, you must use the HIDE-MESSAGE directive repeatedly.
When the program is being syntax checked, any message with severity E, W, I, or flag with its number in the list is not shown in any listing. It is not included in the error summary at the end of the compilation.
Messages with severity S can be hidden only if they were made severity S by the CHANGE-MESSAGE, FLAGAS or FLAGCD directives. Normally, they are always shown, even if their number appears in this list.
NOHIDE-MESSAGE clears the list of numbers so no messages are hidden.
NOHIDE-MESSAGE"integer" removes only the specified message number from the list.
CHANGE-MESSAGE Compiler directive
FLAGAS Compiler directive
FLAGCD Compiler directive
Controls the operation of comparisons between integer numeric data items of USAGE DISPLAY and alphanumeric literals or figurative constants.
>>--.---.--.------HOST-NUMCOMPARE--"integer"--.-->< .-/-+ .-NO---HOST-NUMCOMPARE-------------+
integer | Must be 1 or 2 |
Default: | NOHOST-NUMCOMPARE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The HOST-NUMCOMPARE directive is Early User Syntax support. You must use the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system. integer can be:
1 |
If the ZWB directive is also specified, HOST-NUMCOMPARE only affects comparisons involving unsigned numeric data items. If NOZWB is specified, HOST-NUMCOMPARE affects comparisons involving both signed and unsigned data items. If HOST-NUMCOMPARE is specified, affected comparisons are treated as if the numeric data item were redefined as an alphanumeric item of the same length, and the comparison made against this redefinition. If NOHOST-NUMCOMPARE is specified, the numeric field is first moved to an elementary alphanumeric data item of the same size, and the content of this alphanumeric item is then compared to the literal. |
2 | Improves compatibility with IBM mainframe compilers for a subset of IF statements involving comparisons between numeric data items and numeric literals. Setting HOST-NUMCOMPARE(2) does not provide 100% compatibility with the IBM mainframe behavior, but does provide emulation for the most common cases. |
The HOST-NUMCOMPARE directive only affects comparisons where the numeric data item contains nonnumeric data at the time of the comparison.
You cannot use the HOST-NUMCOMPARE(2) in conjunction with the HOST-NUMCOMPARE(1).
ZWB Compiler directive
Ensures that run-time error 163 (illegal characters in numeric fields) does not occur when certain MOVE statements are executed on numeric display data items.
>>--.---.--.------HOST-NUMMOVE--"integer"--.-->< .-/-+ .-NO---HOST-NUMMOVE-------------+
integer | Must be 1 or 2. |
None
Default: | NOHOST-NUMMOVE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Possible values of integer are:
1 | The HOST-NUMMOVE directive is Early User
Syntax support. You must use the EARLY-RELEASE directive to enable this
feature. This directive might change or be removed in a later revision of
this COBOL system.
This directive is provided to improve compatibility with IBM mainframe compilers. However, although this directive causes the error to be suppressed, the result of moving the invalid data is not the same as on the mainframe. |
2 | Improves compatibility with IBM mainframe compilers for a subset of MOVE statements involving numeric/alphanumeric data types and numeric/numeric data types. |
HOST-NUMMOVE"2" does not provide 100% compatibility with the IBM mainframe behavior, but does provide emulation for the most common cases.
You cannot use the HOST-NUMMOVE(2) directive in conjunction with the HOST-NUMMOVE directive.
EARLY-RELEASE Compiler directive
RTS error 163
Allows arithmetic and moves with COMP-3 items with illegal sign nibbles (such as those produced by a redefinition of the item) to produce the desired result.
This directive is synonymous with the BADSIGNS directive in the 16-bit COBOL system.
On the 16-bit COBOL system:
>>-.---.-.--------HOSTSIGNS--"integer"-.--->< .-/-+ ..----.--HOSTSIGNS------------+ .-NO-+
On the 32-bit COBOL system:
>>-.---.-.----.---HOSTSIGNS---------------->< .-/-+ .-NO-+
integer |
Must be 1 or 2. |
Default: | NOHOSTSIGNS |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
Specifying HOSTSIGNS or HOSTSIGNS"1" causes COMP-3 arithmetic to be performed by a nonoptimized route, reducing the efficiency of your programs.
Specifying HOSTSIGNS"2" applies this to arithmetic and moves of COMP-3 data items.
For smaller, faster code you should not specify HOSTSIGNS.
Specifies that words reserved in IBM COBOL V1.00 are to be regarded as reserved words, and changes the behavior of certain features to be compatible with that COBOL system.
>>-.---.-.----.--IBM-MS-------------------->< .-/-+ .-NO-+
None
Default: | NOIBM-MS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
IBM-MS sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.
This directive is synonymous with the PC1 and MS"1" directives.
Turns on word-storage mode.
>>-.---.-.----.--IBMCOMP------------------->< .-/-+ .-NO-+
None
Default: | NOIBMCOMP |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
IBMCOMP sets ALIGN"8" immediately.
In word-storage mode every data item of USAGE COMP or COMP-5 occupies either two bytes or a multiple of four bytes. If you specify IBMCOMP and you use the SYNCHRONIZED clause on any items defined as USAGE COMP or COMP-5 in your program, do not specify ALIGN"1".
If you are calling any Micro Focus systems routines directly, use IBMCOMP with great care. It might cause the parameters you specify to these routines to be incorrectly aligned and sized, causing the routines to give incorrect results. This includes parameters for the CBL_ library routines, calls to Adis or direct calls to the Callable File Handler, Extfh.
Specifies the format to use when creating indexed files.
This directive has been replaced by the FILETYPE directive and will be removed in a future release.
>>-.---.--IDXFORMAT--"integer"------------->< .-/-+
integer |
An integer representing the type to use. |
Default: | IDXFORMAT"0" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Set to IDXFORMAT"integer" immediately by FILETYPE"integer".
The possible values of integer are:
0 | System specific default. For DOS, Windows and OS/2, this is the same as specifying 3. For UNIX, this is the same as specifying 1. |
1 | C-ISAM format. |
2 | Micro Focus Level II format. |
3 | Micro Focus indexed file format. |
4 | Optimized Micro Focus indexed file format, for fast duplicate file handling. |
5 | Btrieve format (with ANSI conformance emulation). (DOS, Windows and OS/2 only.) |
6 | Btrieve format (without ANSI conformance emulation). (DOS, Windows and OS/2 only.) |
7 | RLIO format indexed files |
8 | Large indexed. |
9-10 | Reserved. |
11 | Mainframe print file format. |
12-13 | Reserved. |
14 | Heap file. |
15-255 | Reserved. |
Existing files in any of the given formats are processed correctly without the need for this directive. This directive controls the format used when creating new files.
Specifying 3 always causes the format used by this COBOL system to be created; if you specify 0, and you are using your program with a file handler from a different system, the default for that system is created.
Specifying 4 might make the files larger than their IDXFORMAT"3" equivalents.
Micro Focus Level II format files are compatible with Micro Focus products such as Level II COBOL, Professional COBOL V1.2, and VS COBOL Workbench versions up to and including V1.3. (See your Programmer's Guide to File Handling for further information.)
You must not use the ANS85 directive to enable ANSI'85 behavior when using IDXFORMAT"2". However, you can use ANS85"SYNTAX" to enable ANSI'85 syntax.
Causes information regarding FILLER data items to be stored in the .idy file.
>>-.---.-.----.--INCLUDE-FILLER------------>< .-/-+ .-NO-+
None
Default: | NOINCLUDE-FILLER |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
INCLUDE-FILLER makes FILLER data items visible to tools in Object COBOL for UNIX and Workbench.
Including these data items increases the size of the .idy file.
Causes ACCEPT statements to be read from a specified file.
>>-.---.-.-------INDD--"fname rsize rtype ctype"-.>< .-/-+ .-------INDD--"fname rsize rtype"-------© .-------INDD--"fname rsize"-------------© .-------INDD--"fname"-------------------© ..----.-INDD----------------------------+ .-NO-+
fname |
Name of file to be read for the specified ACCEPT statements. When this parameter is not specified the name used is SYSIN. |
rsize |
Size of the data records in the file. When this parameter is not specified the size used is 80. |
rtype |
Either L for Line Sequential or R for Record Sequential. When this parameter is not specified, L is used. |
ctype |
Either A for ASCII or E for EBCDIC. When this parameter is
not specified, A is used.
E only has effect when the CHARSET"EBCDIC" directive is used. |
Default: | NOINDD |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
INDD sets NOSYSIN immediately
Set to NOINDD immediately by SYSIN
When INDD is specified, all format 1 ACCEPT statements which either have no FROM option or specify FROM SYSIN (or the mnemonic-name associated with SYSIN) are transformed into READ statements, reading from a file with the specified external filename.
The filename can be mapped onto physical filenames in the same way as other files with external filenames; that is, by using environment variables or the External File Mapper, MFExtmap.
The default settings for this directive are the same as those that would be used for this type of ACCEPT statement when the SYSIN directive is used.
ACCEPT statement
OUTDD Compiler directive
SYSIN Compiler directive
Specifies the return-code value returned by the Compiler when it produces only informational messages.
>>-.---.--INFORETURN--"integer"------------>< .-/-+
integer |
Must be between 0 and 4. |
Default: | INFORETURN"0" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When the Compiler terminates it returns a value that can be tested by an operating system command to determine the success or otherwise of the compilation. The values for termination are described in your Object COBOL User Guide. This directive enables you to set the value to be returned if the Compiler only outputs informational messages.
Specifies modules to be called immediately before the first statement of the program is executed.
>>-.---..-----INITCALL--"module"-.------------..>< .-/-+| .-"priority"-+| .-NO--INITCALL-------------------------+
module |
The module to be called. |
priority |
The priority to assign to the execution of the module. |
Default: | NOINITCALL |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of priority are:
H | High priority (the default if no priority is specified) |
L | Low priority |
Specifying INITCALL causes the Compiler to insert a call to the named module. At run time, the module specified is called before any procedural code is executed. You cannot pass parameters to the called module.
To call several modules using this feature, you must use the INITCALL directive repeatedly. NOINITCALL clears the list of modules to be called.
Calls specified with a high priority are placed before all calls with a low priority, as well as other calls made by the Compiler. Low priority calls are placed after other calls made by the Compiler. Calls with the same priority are executed in the order they are specified.
Specifies the name of the intermediate code file.
>>-.---.-.-----INT-.-"pathname\filename"--.-.-->< .-/-+ | .-"pathname/filename"--© | | .-"pathname\"----------© | | .-"pathname/"----------© | | .-"filename"------------© | | .-()--------------------+ | .-NO--INT---------------------------+
pathname |
Pathname, or environment variable specifying the pathname. |
filename |
A full file specification. |
Default: | INT"source-name.int" |
Phase: | Syntax check |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | No |
NOINT sets NOANIM and NOSTRUCT immediately.
When no .obj file is required from the Compiler, or when the ANIM directive is used, an intermediate code file is produced. This directive specifies the name for that file.
Specifying NOINT prevents the intermediate code file being produced.
If you specify an existing file, it is overwritten.
If filename is not specified, the Compiler uses the source filename (source-name) with the extension .int attached. If you specify pathname but no filename, the Compiler uses the pathname, with the filename source-name.int attached.
INT() causes intermediate code to be put in the standard file source-name.int. With this format you must use parentheses not quotation marks. So, INT"" does not give this result.
Use the INT directive with caution. Incorrect use can abort the compilation process.
Selects the starting date for integer format dates used with date intrinsic functions.
>>-.---.------INTDATE---"type"----->< .-/-+
type | The type of starting-date. |
Default: | ANSI |
Phase: | Syntax Check |
Environment: | All |
$SET: | Any |
The INTDATE directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
This directive selects the starting date for integer format dates used with date intrinsic functions (that is, DATE-OF-INTEGER,DAY-OF-INTEGER, INTEGER-OF-DATE, INTEGER-OF-DAY).
type can be:
ANSI | Instructs the compiler to use the ANSI COBOL Standard starting date (where Day 1 = Jan 1, 1601). |
LILIAN | Instructs the compiler to use the Lilian starting date (where Day 1 = Oct 15, 1582). |
For more details on the date intrinsic functions, see your Language Reference.
When intermediate code is being created by the Compiler, this directive controls the level of portability of the code created to different versions of Micro Focus COBOL systems in other environments.
>>-.---.-.-----INTLEVEL--"integer"-.------->< .-/-+ .-NO--INTLEVEL------------+
integer |
The level of portability. Can be 1 or 2. |
Default: | INTLEVEL"2" |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
Full details of intermediate code portability are included with the relevant COBOL systems.
NOINTLEVEL causes intermediate code to be created that is suitable for execution only in this environment.
INTLEVEL"integer" creates intermediate code that can be executed by some versions of Micro Focus products in other environments. For portability between environments, the value of integer used for compilation must be supported by the Micro Focus COBOL system on each environment on which you want to execute the intermediate code.
INTLEVEL"integer" can limit the syntax that can be used in your program.
Selects between a straight group move and conversion of elementary record descriptions (ANSI behavior) when processing READ ... INTO and WRITE ... FROM statements.
>>-.---.-.----.--IOCONV-------------------->< .-/-+ .-NO-+
None
Default: | IOCONV |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
NOIOCONV causes a straight group move for READ ... INTO and WRITE ... FROM operations. This is for backward compatibility.
IOCONV causes conversion of elementary record descriptions when required. This is normal ANSI behavior, and the default.
Enables the use of Micro Focus Japanese Language Extension (PIC N, Japanese data-names and Japanese procedure-names).
>>-.---.-.-------JAPANESE--"integer"-.----->< .-/-+ ..----.-JAPANESE------------+ .-NO-+
integer |
Must be 1 or 2. The level of support required. |
Default: | NOJAPANESE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of integer are:
1 | Compatibility with previous versions of Nihongo Micro Focus products |
2 | Enhanced PIC N support. This setting enables the DBSPACE directive. |
Specifying JAPANESE with no parameter is the same as specifying JAPANESE"2".
This directive is provided for compatibility purposes only. It has been replaced by the NCHAR directive. JAPANESE and NCHAR are synonymous. The JAPANESE and DBCS directives are mutually exclusive.
DBCS Compiler directive
DBSPACE Compiler directive
NCHAR Compiler directive
Specifies whether the Compiler should produce intermediate code for an unsuccessful compilation; that is a compilation that produces serious or unrecoverable errors.
>>-.---.-.----.--KEEP-INT------------------>< .-/-+ .-NO-+
None
Default: | KEEP-INT |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The Compiler also accepts the directive-name without a hyphen; that is KEEPINT.
In the case of segmented programs, should any segment have an unsuccessful compilation with NOKEEP-INT selected then intermediate code is not produced for any of the segments.
Specifies whether the number of keys should be checked when a file is opened.
>>---.---.--.----.-----KEYCHECK---------->< .-/-+ .-NO-+
Default: | KEYCHECK |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
By specifying NOKEYCHECK the file handler will not check the number of keys specified in the SELECT statement against the number of keys held in the files information area.
Specifies the type of key compression to be done on indexed files.
>>-.---.-.-----KEYCOMPRESS--"integer"-.---->< .-/-+ .-NO--KEYCOMPRESS------------+
integer |
Must be between 0 and 7. |
Default: | NOKEYCOMPRESS |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
integer can contain any combination of the following values:
1 | Suppress repetitions of duplicate keys. |
2 | Suppress leading characters that are the same as in the previous key. |
4 | Suppress trailing spaces. |
You can specify any combination of these numbers by adding these values together.
KEYCOMPRESS"0" is equivalent to NOKEYCOMPRESS.
You need specify key compression only when creating the file. Subsequently, the key compression is detected when the file is opened.
To get key compression on an individual file, use $SET statements in your source so that this directive is in effect only for the part of the source containing the relevant KEY clause in the file's SELECT statement.
Allows -INC statements in your program.
>>-.---.-.----.--LIBRARIAN----------------->< .-/-+ .-NO-+
None
Default: | NOLIBRARIAN |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The -INC statement specifies a file for inclusion in the source program. The string -INC must be written as a contiguous sequence of upper case characters starting in column 1, followed by one or more spaces, and then, on the same line, by the name of a file containing COBOL source. This file is included in the program at the point where the -INC statement appears.
Controls the detail of information displayed at the end of a source listing.
>>-.---.-.-------LINE-COUNT--"integer"-.---->< .-/-+ ..----.-LINE-COUNT------------+ .-NO-+
integer |
Must be 1 or 2. |
Default: | NOLINE-COUNT |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
LINE-COUNT"2" sets CSI immediately.
integer controls the detail displayed, as follows:
1 | The number of source lines checked, excluding blank lines and comments, is displayed at the end of the source listing. |
2 | As well as number of source lines checked, many additional details are displayed at the end of the source listing. These include the number of calls, number of sections and number of conditions in the program. (This requires CSI to be present in your COBOL system. Without it the information displayed is not accurate.) |
Specifying LINE-COUNT with no integer is the same as specifying LINE-COUNT"2".
CSI Compiler directive
LIST Compiler directive
Specifies that each time a Linkage Section item is referenced a check is to be made that it exists.
>>-.---.-.----.--LINKCHECK----------------->< .-/-+ .-NO-+
None
Default: | NOLINKCHECK |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
16-bit only:
On the 16-bit COBOL system, the PARAMCOUNTCHECK directive must also be specified if you intend to use the LINKCHECK directive.
If reference is made to a Linkage Section item that does not exist, a run-time error 203 (CALL parameter not supplied) is generated.
PARAMCOUNTCHECK Compiler directive
Specifies the maximum number of Linkage Section items, external data items, and external files (as defined for interprogram communication) allowed.
>>-.---.-.----.--LINKCOUNT--"integer"------>< .-/-+ .-NO-+
integer |
The number allowed (maximum 65535). |
Default: | LINKCOUNT"64" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The LINKCOUNT directive is only required if your program contains file or data records (in the Data Division) that are marked as EXTERNAL. If you have none of these, you can allocate as many Linkage Section records as you like.
If you do have external items in your Data Division, when it encounters the first such item, the Compiler has to create a fixed length area to contain the references to all external areas and Linkage Section items. In this case, you use the LINKCOUNT directive to specify how many references this area needs to hold. It must be enough for all the external data items and Linkage Section items in your program.
integer must not be less than the total number of Linkage Section data items, external data items, and external files. It represents a count of every separately-addressable data item in these structures.
integer has a maximum value of 65535. However, the maximum size will depend on how many other data items are defined. If it is set too high a 781-S 'Maximum number of data items exceeded' error might occur. In this case the value in LINKCOUNT should be lowered.
Specifies the link library or libraries where the Linker is to look for the run-time support routines.
>>-.---.-.-----LINKLIB--"library-names"-.-->< .-/-+ .-NO--LINKLIB------------------+
library-names |
The names of one or more link libraries. |
Default: | LINKLIB"COBLIB+COBAPI" |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Specifying library-names as NUL is the same as NOLINKLIB. The choice of libraries can be subsequently overridden by a directive to the Linker.
The names must be separated by a plus sign (+). If a name has no extension, .lib is assumed.
Specifies the destination of the source listing file.
>>-.---.-.-------LIST-.-"destination"-..--->< .-/-+ | .-()------------+| ..----.-LIST------------------+ .-NO-+
destination |
A full file specification or a device-name. |
Default: | NOLIST |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | Any (for LIST and NOLIST) None (for LIST"filename" and LIST()) |
NOLIST sets NOFORM, NOREF, NOSETTING, NOSOURCEASM and NOXREF at end.
LIST sets FORM"60" immediately.
Set to LIST by ASM immediately.
Set to NOLIST by RNIM at end.
If you specify an existing file, it is overwritten.
When NOLIST is specified, no source listing is produced. If you specify LIST with no destination, the source listing is sent to the screen. If you specify either destination or (), you cannot use this directive in a $SET statement.
destination can be the name of any suitable device. On DOS, Windows and OS/2, use CON: for the screen. On UNIX, the device selected must not be under the control of a system spooler.
NOLIST and LIST with no parameter can be used in $SET statements in a program to list selected parts of the program. The destination of the listing cannot be changed in this way.
LIST() causes the source listing to be put in the file source-name.lst, where source-name is the root of the name of the program being compiled. When used with the 16-bit Generator this creates the file source-name.grp.
If you want to list the source to a file for every compilation you do, place the LIST() directive in the cobol.dir file. This overrides the default NOLIST.
Alternatively, if you already have a LIST directive in your cobol.dir, making every listing go to the screen, you can override it by using LIST() on the command line.
Specifies a path on which the list file is to be written. The name of the list file is source-name.lst.
>>-.---.-.----.--LISTPATH--"list-path"----->< .-/-+ .-NO-+
list-path |
Path to which the list file is written, or an environment variable specifying the path to which the list file is written. |
Default: | NOLISTPATH |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Sets the width of the listing.
>>-.---.--.-LISTWIDTH-.-"width"------------>< .-/-+ .-LW--------+
width |
Width in characters. It must be between 72 and 132. |
Default: | LISTWIDTH"80" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If REF is set, and width is less than 90, sets LISTWIDTH"90" immediately. If width is less than 90, sets NOREF at end.
LISTWIDTH"132" causes additional information to be displayed for each line listed. This includes the first eight characters of the current copyfile-name (spaces for the main file) together with the number of the line relative to the start of that file.
REF Compiler directive
Makes the Compiler declare the literals in CALL literal statements as public symbols, so they are resolved at link time rather than run time. (Calls generated in this way are referred to as litlinked.)
With the 16-bit Compiler:
>>-.---.-.----.-LITLINK-------------------->< .-/-+ .-NO-+
With a 32-bit Compiler:
>>-.---.-.-----LITLINK-.-----------.-.----->< .-/-+ | .-"integer"-+ | .-NO--LITLINK---------------+
integer |
Must be 1 or 2. |
Default: | NOLITLINK |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
If OMF"GNT", LITLINK sets OMF"OBJ" at end.
Set to LITLINK at end by MODEL"SMALL", MODEL"COMPACT" or
OBJLITE.
If ASSUME is set, set to LITLINK at end by REGPARM"OUT".
This directive only affects .obj files.
With NOLITLINK on 16-bit and LITLINK"2" on 32-bit, if the name in a CALL literal statement starts with a single underscore - "_name" - a litlinked call to entry-name _name is generated. If it starts with a double underscore - "__name", a litlinked call to entry-name name is generated. (That is the entry-names are declared as public symbols.)
With LITLINK on all environments or LITLINK"1" on 32-bit, all CALL literal statements generate litlinked calls, regardless of the inclusion of underscores at the start of the literal.
With NOLITLINK on 32-bit, no CALL literal statements generate litlinked calls, regardless of the inclusion of underscores at the start of the literal.
LITLINK"2" is only intended to provide backward compatibility with code written for the 16-bit COBOL system. You should use call-convention 8 for new programs.
Specifies the number of bytes to pass if the SIZE clause is omitted when passing numeric literals BY VALUE.
>>-.---.--LITVAL-SIZE--"integer"----------->< .-/-+
integer |
A number up to 4. The number of bytes to pass. |
Default: | LITVAL-SIZE"4" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Indicates that any linkage records specified in a USING statement are 01 or level-77 items, aligned according to the ALIGN directive.
>>-.---.-.----.--LNKALIGN------------------>< .-/-+ .-NO-+
None
Default: | NOLNKALIGN |
Phase: | Generate |
Environment: | 32-bit |
$SET: | No |
Using LNKALIGN can reduce the time needed to access a linkage item at run time. However, take care when using it. You must use the correct ALIGN directive setting when compiling your program. No checks are made to ensure that the items are aligned.
The results of using this directive are machine-dependent, and you should not use it if you are in any doubt as to its effect. Unpredictable results might occur if you pass linkage items that are not aligned.
ALIGN Compiler directive
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use , and its setting should not be changed.
>>-.---.--LOCALCOUNT--"integer"------------>< .-/-+
integer |
Must be in the range 0 to 65536 |
Default: | LOCALCOUNT"0" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Specifies the type of record locking.
>>-.---.--LOCKTYPE--"integer"-------------->< .-/-+
integer |
0 or 1. The type of locking. |
Default: | LOCKTYPE"0" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of integer are:
0 | Programs can read locked records, but not access them in other ways. This is the standard method with this COBOL system. |
1 | Programs cannot access locked records at all. This is as in languages other than COBOL. |
2 | Creates a new file with the same basename as the file being opened but with a .lck extension. Any record locks are recorded in this file. This enables the file handler to read and write to files up to 4 Gigabytes in size regardless of whether the file is shared or locked. You cannot set this value for striped files. |
This directive only has an effect if the CALLFH directive is used.
CALLFH Compiler directive
Optimizes calls to the CBL_ logical routines so that they do not affect RETURN-CODE.
>>-.---.-.----.--LOGICOPT------------------>< .-/-+ .-NO-+
None
Default: | NOLOGICOPT |
Phase: | Generate |
Environment: | 32-bit |
$SET: | No |
Specifying LOGICOPT optimizes COBOL logical calls, such as CBL_AND, so that they do not affect RETURN-CODE.
Makes one reserved word synonymous with another.
On DOS, Windows and OS/2:
>>-.---.-MAKESYN-"rsv-word-1" = "rsv-word-2"->< .-/-+
On UNIX:
>>--MAKESYN-"(rsv-word-1) == (rsv-word-2)"---><
rsv-word-1 |
A reserved word. |
rsv-word-2 |
The reserved word whose meaning is to be changed. |
Default: | No reserved word synonyms are created. |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The equals sign must be surrounded by spaces.
This directive does not appear in the list created with the SETTING directive.
Makes the Compiler alter program-names and entry-points to make them compatible with OS/VS COBOL, DOS/VS COBOL, VS COBOL II and COBOL/370.
>>-.---.-.----.--MAPNAME------------------->< .-/-+ .-NO-+
None
Default: | NOMAPNAME |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Specifying MAPNAME affects program-names and entry-points defined in the compilation and those referenced by the program as follows:
When a name is found to be incompatible a warning message is given and a modified name is used in the object program. The rules enforced and the modifications made are:
0 becomes J 1 - 9 become A - I
Makes the Compiler produce a listing file that can be submitted to Microsoft MASM to produce an .obj file.
>>-.---.-.----.--MASM---------------------->< .-/-+ .-NO-+
None
Default: | NOMASM |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
MASM sets NOFORM at end.
Set to NOMASM by NOASM or OMF"GNT".
This directive only affects .obj files.
You could use this directive to investigate the performance of small sections of code, as it enables you to edit the generated output. You should only use this directive on programs with one code segment, or the code produced does not work correctly.
You must set the ASMLIST directive to specify the destination of the MASM-compatible listing. You can still use SOURCEASM to enable you to include source lines as comments. An .obj file is still generated, although it might differ slightly from the .obj file produced by MASM.
Causes the Compiler to abort when the specified number of errors have been produced.
>>-.---.-.-----MAX-ERROR--"err-cnt-.-------.-"-.->< .-/-+ | .-svrty-+ | .-NO--MAX-ERROR-----------------------+
err-cnt |
The maximum number of errors | ||||||||||
svrty |
The minimum level of severity to be counted.
Only messages of the severity specified and greater are counted. One of:
If omitted, assumes F. |
Default: | NOMAX-ERROR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The Compiler also accepts the directive-name without a hyphen; that is MAXERROR.
If the maximum number of messages of at least the specified severity is reached then the compilation stops. The messages are only counted if produced and after any modification to the severity of the message.
Specifying the directive:
MAX-ERROR"100 E"
causes the compilation to terminate when 101 messages of severity E or S have been produced.
CHANGEMESSAGE Compiler directive
FLAG Compiler directive
FLAGAS Compiler directive
FLAGSTD Compiler directive
HIDEMESSAGE Compiler directive
WARNING Compiler directive
Facilitates forward compatibility with Micro Focus COBOL systems by selectively enabling Micro Focus-specific reserved words and changing the behavior of certain features to be compatible with particular versions.
>>-.---.-.-------.-MF------.-"integer"-.--->< .-/-+ | .-MFLEVEL-+ | ..----.-.-MF------.-----------+ .-NO-+ .-MFLEVEL-+
integer |
The level of Micro Focus COBOL to be compatible with. |
Default: | MF"10" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
MF"7" sets DBCS"2" immediately.
If integer > 7, sets DBCS"3" and DBSPACE immediately.
If NOEARLY-RELEASE and MF are set, MF defaults to MF"10".
If EARLY-RELEASE and MF are set, MF defaults to MF"11".
The possible values of integer are:
1 | Professional COBOL V1.0, V1.1, and V1.2 Level II COBOL V2.5 and V2.6 Level II COBOL/ET V1.1 |
2 | VS COBOL Workbench V1.2 VS COBOL V1.2 |
3 | VS COBOL Workbench V1.3 VS COBOL Workbench V2.0 Professional COBOL V2.0 VS COBOL V1.5 |
4 | COBOL/2 V1.1 Professional COBOL/2 COBOL/2 Workbench V2.2 Microsoft COBOL V3.0 |
5 | COBOL/2 V1.2 COBOL/2 Workbench V2.3 |
6 | COBOL/2 V2.4 COBOL/2 Workbench V2.4 Microsoft COBOL V4.0 |
7 | COBOL/2 V2.5 COBOL/2 Workbench V2.5 Microsoft COBOL V4.5 |
8 | COBOL V3.0 COBOL Workbench V3.0 Microsoft COBOL V5.0 |
9 | COBOL V3.1 COBOL Workbench V3.1 |
10 | COBOL V3.1 with Early Release syntax enabled COBOL Workbench V3.1 with Early Release syntax enabled COBOL V3.2 and V3.3 COBOL Workbench V3.2 and V3.3 Object COBOL V3.2 and V3.3 COBOL V4.0 (UNIX) |
11 | COBOL V3 V4.0 (UNIX) with Early Release syntax enabled |
Behavior of the BLANK LINE phrase in previous versions of this COBOL system can be implemented using the OLDBLANKLINE directive. Behavior of the NEXT SENTENCE phrase in previous versions of this COBOL system can be implemented using the OLDNEXTSENTENCE directive.
MF"11" contains all reserved words in MF"10" together with those that are part of the Early Release syntax. Specifying MF without a parameter sets MF"11" if the EARLY-RELEASE directive has already been set. Otherwise, it sets MF"10". It is not possible to set MF"11" unless EARLY-RELEASE has already been set.
EARLY-RELEASE Compiler directive
OLDBLANKLINE Compiler directive
OLDNEXTSENTENCE Compiler directive
Treats lines with an asterisk (*) in column 1 the same as comment lines but does not show them in the source listing.
>>-.---.-.----.--MFCOMMENT----------------->< .-/-+ .-NO-+
None
Default: | MFCOMMENT |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Set to NOMFCOMMENT at end by SOURCEFORMAT"FREE".
With MFCOMMENT, lines with an asterisk in column 1 are ignored by the Compiler and do not appear in the source listing (though they do appear in Animator). With NOMFCOMMENT, the asterisk forms part of the sequence number and has no special significance.
Enables the object orientation (OO) facilities in the Compiler.
>>-.---.-.-----MF-OO-.--------------------->< .-/-+ .-NO--MF-OO-+
None
Default: | NOMF-OO |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
MF-OO sets MF immediately.
Specifies whether to look for files in a Source Code Control System (SCCS).
>>-.---.-.----.--MFSCCS-------------------->< .-/-+ .-NO-+
None
Default: | NOMFSCCS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive is only available with the appropriate add-on system. Do not change its setting unless you have the appropriate COBOL system.
If you are using the Micro Focus COBOL Workbench SCCS interface, specifying MFSCCS causes the Compiler to search the SCCS if it cannot find a file.
Specifies the memory model.
>>-.---.--MODEL--"type"-------------------->< .-/-+
type |
SMALL, COMPACT, MEDIUM, LARGE, or HUGE. |
Default: | MODEL"HUGE" (for programs with more than 64K of data) MODEL"LARGE" (for programs with less than 64K of data) |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
MODEL"SMALL" and MODEL"COMPACT" set LITLINK at end.
This directive only affects .obj files.
The possible values of type are:
SMALL | small data, small code |
COMPACT | large data, small code |
MEDIUM | small data, large code |
LARGE | large data, large code |
HUGE | large data, large code, data items might cross segment boundaries |
where small means up to 64K and large means greater than 64K.
You need to depart from the default MODEL setting only for certain cases of interlanguage working where the other language uses a model other than large. See the manuals of your other languages for information relating to the correct settings to use. With the 16-bit COBOL system, you should not change this directive when you link with the shared run-time system, COBLIB.
If you specify a model of SMALL, MEDIUM or COMPACT, the LITLINK directive is set automatically, requiring you to resolve all external references to the Linker.
Local-Storage Section is only supported for LARGE and HUGE models.
Dynamic calling is supported only in LARGE or HUGE model, as by its nature dynamic calling gives large code and large data.
Programs with a Data Division less than 64K are treated as MODEL"LARGE".
When linking a program compiled with MODEL"SMALL" or MODEL"MEDIUM" for use on OS/2, you must use the Linker option /DOSSEG.
Causes the compiler to check source and target lengths for alphanumeric MOVE operations.
>>-.---.--.----.-----MOVE-LEN-CHECK------>< .-/-+ .-NO-+
Default: | NOMOVE-LEN-CHECK |
Phase: | Syntax Check |
Environment: | All |
$SET: | Any |
The MOVE-LEN-CHECK directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
This directive causes the compiler to check source and target lengths for alphanumeric MOVE operations and issues a warning message (166) if they are different.
Any warnings messages produced by enabling this directive are only visible if WARNINGS"2" or WARNINGS"3" is selected.
Facilitates forward compatibility with Microsoft COBOL systems by selectively enabling Microsoft-specific reserved words and changing the behavior of certain features to be compatible with particular versions.
>>-.---.-.-------MS--"version"-.----------->< .-/-+ ..----.-MS------------+ .-NO-+
version |
Must be 1 or 2. The version. |
Default: | NOMS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
MS sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.
The possible values of version are:
1 | Microsoft COBOL Version 1. |
2 | Microsoft COBOL Version 2. |
Specifying MS with no parameters is the same as specifying MS"2". MS"1" is identical to IBM-MS and PC1.
This directive is for compatibility with Microsoft COBOL before version 3.0. For compatibility with V3.0 and later, use:
NOMS MF"integer"
The value of integer to use is shown in the description of the MF directive.
MF Compiler directive
Specifies the default collating sequence for comparisons.
>>-.---.--NATIVE--"coll-seq"--------------->< .-/-+
coll-seq |
Either "ASCII" or "EBCDIC". |
Default: | NATIVE"ASCII" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to NATIVE"ASCII" immediately by CHARSET"ASCII".
Set to NATIVE"EBCDIC" at end by CHARSET"EBCDIC".
For more details, see the rules for PROGRAM COLLATING SEQUENCE in your Language Reference.
The keys in an indexed file are always ordered by the ASCII collating sequence.
Enables the use of Micro Focus Double-byte Language Extension (PIC N, Japanese data-names and Japanese procedure-names).
>>-.---.-.-------NCHAR--"integer"-.-------->< .-/-+ ..----.-NCHAR------------+ .-NO-+
integer |
Must be 1 or 2. The level of support required. |
Default: | NONCHAR |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of integer are:
1 | Compatibility with previous versions of Nihongo Micro Focus products |
2 | Enhanced PIC N support. This setting enables the DBSPACE directive. |
Specifying NCHAR with no parameter is the same as specifying NCHAR"2".
This directive is synonymous with, and should be used in preference to, the JAPANESE directive.
The NCHAR and DBCS directives are mutually exclusive.
When a PIC X is moved to a PIC N, with NCHAR"2", a space (x"20") is expanded to one double-byte space, and so x"2020" is expanded to two double-byte spaces. With NCHAR"1", x"2020" is expanded to one double-byte space.
DBCS Compiler directive
DBSPACE Compiler directive
JAPANESE Compiler directive
Allows nested programs to appear in your program.
>>-.---.-.----.--NESTCALL------------------>< .-/-+ .-NO-+
None
Default: | NONESTCALL |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
NESTCALL sets NO01SHUFFLE at end.
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
Allows Local-Storage Section in nested programs.
>>-.---.-.----.--NESTLOCALSTORAGE---------->< .-/-+ .-NO-+
None
Default: | NONESTLOCALSTORAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The NESTLOCALSTORAGE directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
EARLY-RELEASE Compiler directive
Enables the National Language Support facility.
>>-.---.-.----.--NLS----------------------->< .-/-+ .-NO-+
None
Default: | NONLS |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
NLS enables your program to adapt itself automatically at run time to the character set, currency symbol and editing symbols appropriate to your user's country.
National Language Support routines
Specifies the name of the object code file.
On the 16-bit COBOL system:
>>-.---.-.-----OBJ--"filename"-.----------->< .-/-+ .-NO--OBJ-------------+
On 32-bit COBOL systems:
>>-.---.-.-----OBJ-.-------------..-------->< .-/-+ | .-"filename"--+| .-NO--OBJ----------------+
filename |
A full file specification. |
Default: | OBJ"source-name.obj" (with OMF"OBJ") OBJ"source-name.gnt" (with OMF"GNT") |
Phase: | Generate |
Environment: | 16-bit and 32-bit for OS/2 and Windows NT |
$SET: | Any |
On the 16-bit COBOL system:
OBJ and GNT are synonymous. Setting NOOBJ also sets NOGNT.
With NOOBJ, no object code file is produced. If this directive is not specified, the name of the object code file is the same as the source file with an extension of .obj.
16-bit:
With the 16-bit COBOL system, setting this directive does not imply OMF"OBJ".
To ensure that your .obj file contains .obj format object
code you must make sure that OMF"OBJ" is also specified.
16-bit:
On the 16-bit COBOL system, the OBJ directive also changes the name of the
main entry point of a program unless your program contains a Program-ID
paragraph. So, if you want to change the name of your .obj file, but
retain the same entry-point-name, use the Program-ID paragraph.
Compiling the program tictac.cbl with no OBJ directive produces an object module called tictac.obj with main entry point tictac. Compiling with the directive OBJ"tictac2.obj" produces an object module called tictac2.obj with main entry point tictac2.
32-bit on Windows NT and OS/2 V2
On the 32-bit COBOL systems for Windows NT and OS/2 V2, this directive does
not change the entry-point-name. If you are developing applications for both
16-bit and 32-bit targets, and require to use the OBJ directive, use the
Program-ID paragraph to ensure portability.
32-bit
On 32-bit COBOL systems, use this directive in preference to the OMF
directive. On 32-bit COBOL systems, this directive creates a file in the
format specified, with the name specified. For example, if you specify OBJ"myprog.obj",
then a file myprog.obj is produced that contains generated code.
Produces a version of your program that functions very much like an assembler subroutine.
>>-.---.-.----.--OBJLITE------------------->< .-/-+ .-NO-+
None
Default: | NOOBJLITE |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Set to NOOBJLITE at end by OPT"0" or OMF"GNT".
OBJLITE sets LITLINK at end.
This directive affects only .obj files.
Calling a program that was generated using OBJLITE is much faster than calling a normal program.
The following are limitations for programs generated using OBJLITE:
Makes the evaluation of OCCURS DEPENDING ON items more compatible with the OS/VS COBOL compiler.
>>-.---.-.----.--ODOOSVS------------------->< .-/-+ .-NO-+
None
Default: | NOODOOSVS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
ODOOSVS sets ODOSLIDE at end.
When ODOOSVS is specified, the length of variable-length groups and the address of items following variable-length tables is evaluated at the time when the OCCURS DEPENDING ON item is modified, rather than at the time when the variable-length group or sliding data item is referenced.
Moves data items that follow a variable-length table in the same record as the table's length changes.
>>-.---.-.----.--ODOSLIDE------------------>< .-/-+ .-NO-+
None
Default: | NOODOSLIDE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to ODOSLIDE at end by ODOOSVS.
This affects data items that appear after a variable-length table in the same record; that is, after an item with an OCCURS DEPENDING clause, but not subordinate to it.
With ODOSLIDE, these items always immediately follow the table, whatever its current size; this means their addresses change as the table's size changes. With NOODOSLIDE, these items have fixed addresses, and begin after the end of the space allocated for the table at its maximum length.
Changes the behavior of the BLANK LINE clause in the Screen Section.
>>-.---.-.----.--OLDBLANKLINE-------------->< .-/-+ .-NO-+
None
Default: | NOOLDBLANKLINE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When OLDBLANKLINE is specified, the BLANK LINE clause behaves exactly the same as ERASE EOL; that is all characters to the right of the cursor are deleted.
With NOOLDBLANKLINE specified, the BLANK LINE clause causes the whole line to be deleted.
Makes COPY statements follow the ANSI'68 Standard.
>>-.---.-.----.--OLDCOPY------------------->< .-/-+ .-NO-+
None
Default: | NOOLDCOPY |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included here for completeness. It is not intended for your use, and its setting should not be changed.
>>-.---.-.----.--OLDFILEIO----------------->< .-/-+ .-NO-+
None
Default: | NOOLDFILEIO |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Causes indexes to be compiled as subscripts.
>>-.---.-.----.--OLDINDEX------------------>< .-/-+ .-NO-+
None
Default: | NOOLDINDEX |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to NOOLDINDEX immediately by NORM.
Set to OLDINDEX immediately by RM and RM"ANSI".
This directive is for compatibility with earlier products.
Changes the behavior of the NEXT SENTENCE statement.
>>-.---.-.----.--OLDNEXTSENTENCE----------->< .-/-+ .-NO-+
None
Default: | NOOLDNEXTSENTENCE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When OLDNEXTSENTENCE is specified, the NEXT SENTENCE statement behaves like a CONTINUE statement.
For more details on CONTINUE and NEXT SENTENCE, see your Language Reference.
CONTINUE statement
Changes the behavior of the READ ... INTO statement.
>>-.---.-.----.--OLDREADINTO--------------->< .-/-+ .-NO-+
None
Default: | NOOLDREADINTO |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When OLDREADINTO is specified, the implicit move from the file's record area to the data item specified in the INTO phrase is executed even when the READ is not successful. If NOOLDREADINTO is specified, the MOVE only happens if the READ is successful.
Allows PIC X and PIC N fields to be specified in the same STRING, UNSTRING or INSPECT statement.
>>-.---.-.----.--OLDSTRMIX----------------->< .-/-+ .-NO-+
None
Default: | NOOLDSTRMIX |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
This directive is provided for forward compatibility only.
We recommend that you do not use it as it can lead to unexpected results and the corruption of double-byte data.
Changes the point at which subscripts are evaluated during STRING, UNSTRING and INSPECT statements.
>>-.---.-.----.--OLDSTRSUB----------------->< .-/-+ .-NO-+
None
Default: | NOOLDSTRSUB |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When OLDSTRSUB is specified, subscripts are evaluated after implicit move operations with STRING, UNSTRING or INSPECT statements.
Since the resultant run-time behavior is not ANSI'85 compliant, this directive should be used only to maintain compatibility with versions of Micro Focus COBOL/2 and LEVEL II COBOL.
Specifies which format of object code to produce.
>>-.---.--OMF--"code"---------------------->< .-/-+
code |
Either OBJ or GNT. |
Default: | OMF"OBJ" |
Phase: | Generate |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | No |
On the 16-bit COBOL system:
Set to OMF"OBJ" at end by DEFFILE, EANIM, FASTLINK or LITLINK.
OMF"GNT" sets NOOBJLITE and NOMASM at end.
If OPT"0", OMF"GNT" sets OPT"1" at end.
The possible values of code are:
OBJ | Produce object code. |
GNT | Produce generated code. |
Generated code is the Micro Focus standard format for native code. It is relocatable, dynamically linked and managed by an advanced version of the shared run-time system. It is not suitable for input to the Linker.
32-bit
On 32-bit COBOL systems, use the directives OBJ or GNT in preference to this
directive.
Specifies the level of optimization of the code produced in the .obj file.
>>-.---.--OPT--"integer"------------------->< .-/-+
integer |
0, 1, or 2. |
Default: | OPT"2" |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Any |
If OPT"0", set to OPT"1" at end by EANIM, GANIM or OMF"GNT".
OPT"0" sets NOOBJLITE and NODATALIT at end.
The possible values of integer are:
0 | Intermediate code as produced by the first pass of the Compiler. This is generally smaller than native code, but is slower for processor-bound operations. Programs compiled with OPT"0" cannot be linked with the static linked run-time system, LCOBOL. |
1 | Standard generated native code. |
2 | Optimized generated code. Optimization does not change the logic of your program, but there might be incidental effects because some statements might have no associated machine code and statement order is not preserved. For example, PERFORM n TIMES of an empty paragraph causes no code to be generated, so this construct cannot be used to form a delay loop. |
Makes the Compiler treat all files opened for I-O or EXTEND as optional.
>>-.---.-.----.--OPTIONAL-FILE------------->< .-/-+ .-NO-+
None
Default: | OPTIONAL-FILE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to OPTIONAL-FILE immediately by NORM.
Set to NOOPTIONAL-FILE immediately by RM or RM"ANSI".
Under ANSI'85 Standard COBOL, a file is treated as optional only if it has the OPTIONAL phrase in its SELECT statement. For compatibility with the ANSI'85 Standard you must specify the NOOPTIONAL-FILE directive.
Makes the Compiler treat the size of the object program as a higher priority than its speed, within the constraints imposed by other directives.
>>-.---.--OPTSIZE-------------------------->< .-/-+
None
Default: | OPTSIZE |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
The directives OPTSPEED and OPTSIZE are alternates. Hence, if you don't want OPTSIZE specify OPTSPEED.
Makes the Compiler treat the speed of the object program as a higher priority than its size, within the constraints imposed by other directives.
>>-.---.--OPTSPEED------------------------->< .-/-+
None
Default: | OPTSIZE |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
The directives OPTSPEED and OPTSIZE are alternates. Hence, if you don't want OPTSPEED specify OPTSIZE.
Other directives such as TRUNC also affect the speed of the program.
Tells the Compiler what extension to expect by default on the names of source files. It can also affect the extension used for copyfiles.
>>-.---.--OSEXT--"ext"--------------------->< .-/-+
ext |
The extension. |
Default: | OSEXT"cbl" (on DOS, Windows and OS/2) OSEXT"" (on UNIX) |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If the source filename used in the command or prompt does not have an extension or a trailing period the value in this directive is added.
If the filename specified in a COPY statement has no entension or trailing period then a list of possible extensions are tried in turn until the file is sucessfully found or the list is exhausted (and an error reported.) The list is derived from a combination of the values of the COPYEXT and OSEXT directives. The first extension in the list is either the value in the OSEXT directive or the first value in the COPYEXT directive depending on which of the two directives was last specified. The remainder of the list is the remainder of the values in the COPYEXT directive (values 2 through to the end). For example:
COPYEXT"cpy,cbl,txt" OSEXT"src"
would have the same effect as:
COPYEXT"src,cbl,txt"
Specifying a null extension (OSEXT"") indicates that the filename has no extension.
COPYEXT Compiler directive
Specifies that words reserved in IBM OS/VS COBOL are to be treated as reserved words.
>>-.---.-.----.--OSVS---------------------->< .-/-+ .-NO-+
None
Default: | NOOSVS |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
OSVS sets NODOSVS immediately.
DOSVS Compiler directive
Causes DISPLAY and EXHIBIT statements to be written to a specified output file. Also causes the output from TRACE to be sent to the specified output file.
>>-.---..-------OUTDD--"fname rsize rtype ctype"-.'" .-/-+.-------OUTDD--"fname rsize rtype"-------+ .-------OUTDD--"fname rsize"-------------+ .-------OUTDD--"fname"-------------------+ ..----.-OUTDD----------------------------+ .-NO-+
fname |
Name of file to be written for the specified DISPLAY statements, EXHIBIT statements and for the TRACE output. When this parameter is not specified the name used is SYSOUT. |
rsize |
Size of the data records in the file. When this parameter is not specified the size used is 132. |
rtype |
Either L for Line Sequential or R for Record Sequential. When this parameter is not specified, L is used. |
ctype |
Either A for ASCII or E for EBCDIC. When this
parameter is not specified, A is used.
E only has effect when the CHARSET(EBCDIC) directive is used. |
Default: | NOOUTDD |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
OUTDD sets NOSYSIN immediately
Set to NOOUTDD immediately by SYSIN
When OUTDD is specified, all format 1 DISPLAY statements which either have no UPON option or specify UPON SYSOUT, and all EXHIBIT statements and the output from TRACE are transformed into WRITE statements, writing to a file with the specified external filename.
The filename can be mapped onto physical filenames in the same way as other files with external filenames; that is, by using environment variables or the External File Mapper, MFExtmap.
The default settings for this directive are the same as those that would be used for this type of DISPLAY and EXHIBIT statement and TRACE output, when the SYSIN directive is used.
DISPLAY statement
EXHIBIT statement
INDD Compiler directive
SYSIN Compiler directive
TRACE Comopiler directive
Replaces a reserved word by a new one.
On DOS, Windows and OS/2:
+------------------------ v | >>-.---.-OVERRIDE--"rsv-word" = "user-word"-->< .-/-+
On UNIX:
+--------------------------- v | >>-OVERRIDE--"(rsv-word) == (user-word)"-----><
rsv-word |
Existing reserved word. |
user-word |
Any COBOL word not the same as an existing reserved word. |
Default: | No change of reserved words takes place. |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive equates an existing reserved word to the specified user-defined word, so that, in the program, user-word is treated as a reserved word, and rsv-word can be used as a user-defined word.
The equals signs must be surrounded by spaces. If the parameters are repeated they must be separated by spaces.
This directive does not appear in the list created with the SETTING directive.
Allows ++INCLUDE statements in your program.
>>-.---.-.----.--PANVALET------------------>< .-/-+ .-NO-+
None
Default: | NOPANVALET |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The ++INCLUDE statement specifies a file for inclusion in the source program. The string ++INCLUDE must be written as a contiguous sequence of upper-case characters starting in Area A or Area B, followed by one or more spaces, and then, on the same line, by the name of a file containing COBOL source. This file is included in the program at the point where the ++INCLUDE statement appears.
If you specify PANVALET and LIBRARIAN together, a warning message is given advising that the compiled program might not be mainframe-compatible.
Enables the program to be called with fewer parameters than are specified in the relevant entry-point's USING clause.
>>-.---.-.----.--PARAMCOUNTCHECK----------->< .-/-+ .-NO-+
None
Default: | NOPARAMCOUNTCHECK (with OMF"OBJ") PARAMCOUNTCHECK (with OMF"GNT") |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
You must use this directive if any of the following apply:
Otherwise the program can be compiled with NOPARAMCOUNTCHECK for efficiency. A program to be called from a language other than COBOL must be compiled with NOPARAMCOUNTCHECK.
Unless you specify the LINKCHECK directive, trying to reference a Linkage Section item that does not exist might result in a system hang on DOS, or a protection violation on OS/2.
LINKCHECK Compiler directive
STICKY-LINKAGE Compiler directive
Creates a list of paragraphs and sections in a program.
>>-.---.-.----.--PARAS--------------------->< .-/-+ .-NO-+
None
Default: | NOPARAS |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Specifying PARAS causes the generated code addresses of all paragraphs and sections to be produced. This list is placed in the listing file specified by the ASMLIST directive. The assembler listing that is normally in this file is suppressed if PARAS is specified.
The ANIM directive must also be specified for the PARAS directive to work.
ASMLIST Compiler directive
ANIM Compiler directive
Specifies that words reserved in IBM COBOL V1.00 are to be regarded as reserved words, and changes the behavior of certain features to be compatible with that COBOL system.
>>-.---.-.----.--PC1----------------------->< .-/-+ .-NO-+
None
Default: | NOPC1 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
PC1 sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.
This directive is synonymous with the IBM-MS and MS"1" directives.
Specifies the behavior of return jumps from nested PERFORM statements.
>>-.---.--PERFORM-TYPE--"dialect"---------->< .-/-+
dialect |
MF, OSVS, or RM. |
Default: | PERFORM-TYPE"MF" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
PERFORM-TYPE"OSVS" sets TRICKLE at end.
The possible values of dialect are:
MF | Only the exit point of the innermost PERFORM currently being executed is recognized and its return jump taken. |
OSVS | The exit point of any PERFORM statement
currently being executed is recognized if reached; the return jump taken is
the first reached. PERFORM statements with the same exit point can be nested
to a depth of two (one inner and one outer). If they are nested deeper, they
do not return correctly. The end of a section is regarded as the same point
as the end of its last paragraph.
PERFORM-TYPE"OSVS" provides compatibility with the mainframe behavior of OS/VS COBOL, DOS/VS COBOL, VS COBOL II and COBOL/370. |
RM | The exit point of any PERFORM statement currently being executed is recognized if reached; the return jump taken is the first reached. PERFORM statements with the same exit point cannot be nested; if they are they do not return correctly. The end of a section is regarded as a separate point from the end of its last paragraph. |
STICKY-PERFORM Compiler directive
Determines if the Compiler should optimize out code to PERFORM empty paragraphs in generated native code.
>>-.---.--PERFORMOPT--------------------->< .-/-+
None
Default: | PERFORMOPT |
Phase: | Generate |
Environment: | All |
$SET: | Initial |
For greatest efficiency the Compiler normally does not generate code for a PERFORM statement that references an empty paragraph. If you require the code to be left in, for example for timing purposes, specify NOPERFORMOPT.
Causes the list file produced during a compilation to show both the original and modified source created by the preprocessor as well as to show all data passed to the Compiler by a preprocessor.
>>-.---.-.----.--PREPLIST------------------>< .-/-+ .-NO-+
None
Default: | NOPREPLIST |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive is provided as a debugging aid to preprocessor writers.
This directive only affects what the listing file, if produced, contains. It does not determine if a listing file is produced, or the name of the file.
Makes the Compiler take the source program from a preprocessor instead of a source file.
>>-.---..----.-PREPROCESS-.-"name".------..------..>< .-/-+| .-P----------+ .-dirs-+.-ENDP-+| .-NO-.-PREPROCESS-.-----------------------+ .-P----------+
name |
The preprocessor to use. |
dirs |
Directives to be passed directly to the preprocessor. |
Default: | NOPREPROCESS |
Phase: | Syntax check |
Environment: | All |
$SET: | On very first source line only No (with NOPREPROCESS) |
This directive informs the Compiler that an integrated preprocessor is to be used.
For more information on using this directive, see the chapter Integrated Preprocessor Interface in your Programmer's Guide to Writing Programs.
Specifies the destination of the source listing file.
>>-.---.-.-------PRINT-.-"destination"-..-->< .-/-+ | .-()------------+| ..----.-PRINT------------------+ .-NO-+
destination |
A full file specification, or a device-name. |
Default: | NOPRINT |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
PRINT is synonymous with LIST. All rules that apply to LIST also apply to PRINT.
LIST Compiler directive
Specifies the extension to be added to the filename associated with the ASSIGN TO PRINTER clause.
>>-.---.--PRINT-EXT--"extension"----------->< .-/-+
extension |
The extension to be added. |
Default: | No extension is added |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
This directive is ignored unless ASSIGN-PRINTER() is specified with no filename.
ASSIGN-PRINTER Compiler directive
Includes code in your program to produce detailed performance statistics each time you run the program.
>>-.---.-.----.--PROFILE------------------->< .-/-+ .-NO-+
None
Default: | NOPROFILE |
Phase: | Syntax check |
Environment: | UNIX |
$SET: | No |
This directive is accepted by the DOS, Windows and OS/2 Compilers, but the intermediate code created will not run under DOS, Windows and OS/2, and cannot be generated to native code in these environments. However, the intermediate code can be ported to a UNIX environment where it will run.
Allows comments following the PROGRAM-ID in the Program-Id paragraph.
>>-.---.-.----.--PROGID-COMMENT------------>< .-/-+ .-NO-+
None
Default: | NOPROGID-COMMENT |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive is provided for compatibility with earlier versions of this COBOL system.
Extends the standard COBOL semantics so that the lengths of parameters can differ between the calling and the called program.
Normally, the result of ignoring the constraints would give undefined results, possibly including severe errors such as protection violations or memory access faults.
>>-.---.-.----.--PROTECT-LINKAGE----------->< .-/-+ .-NO-+
None
Default: | NOPROTECT-LINKAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The ANSI COBOL standard states in the general rules for each parameter passed by the CALL statement that "The description of the data item in the called program must describe the same number of character positions as described by the description of the corresponding data item in the calling program." This restriction must be observed when using this COBOL system unless the program is compiled with the PROTECT-LINKAGE directive.
The restriction is lifted when the PROTECT-LINKAGE directive is set. The called program only uses mismatched parameters as sending items in a statement and does not use them as receiving items.
Any character positions in a parameter for which there is no correspondence in the called and calling programs is a mismatched character. The contents of any mismatched character is undefined for a parameter used as a sending item in a called program.
Using this directive affects the performance of your application.
Calling program:
... 03 x1 pic x. 03 x2 pic x(100). procedure division. ... call subprog using x1 ...
Subprogram:
$set protect-linkage working-storage section. 01 y1 pic x(1000). linkage section. 01 z1 pic x(1000). procedure division using z1. move z1 to y1 * This operation works, and transfers the contents of x1. It * also transfers any data following x1 in the calling program, * up to 1000 bytes or the end of allocated memory, whichever * occurs first. If less than 1000 bytes is transferred, the * remainder of y1 is space filled. move y1 to z1. * This operation is not protected and fails, either by * corrupting data beyond x1 in the calling program, or * trying to write beyond allocated memory, which might * result in a protection violation.
Causes the Compiler to optimize certain statements in such a way that the resulting object code can only be run in protect mode environments.
>>-.---.-.----.--PROTMODE------------------>< .-/-+ .-NO-+
None
Default: | NOPROTMODE |
Phase: | Generate |
Environment: | 16-bit (If DOS, only under XM) |
$SET: | Initial |
The statements optimized are SET ADDRESS OF, SET ... UP and SET ... DOWN.
Code created with PROTMODE can only be run under DOS with XM, OS/2, or Windows. If you try to run it under DOS without XM, a run-time error occurs.
SET statement
Specifies whether entry-points in .obj files are to be declared as public.
>>-.---.-.----.--PUBLICENTRY--------------->< .-/-+ .-NO-+
None
Default: | PUBLICENTRY |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
NOPUBLICENTRY specifies that entry-points in .obj files are not to be declared as public. This is useful if you want to link two or more .obj files which have common entry-point-names.
This directive affects only .obj files.
Allows qualified data-names and procedure-names in your program.
>>-.---.-.----.--QUAL---------------------->< .-/-+ .-NO-+
None
Default: | QUAL |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If you have no qualified data-names or procedure-names in your source code, you can specify NOQUAL. This improves compilation speed.
QUALPROC Compiler directive
Allows qualified procedure-names in your program.
>>-.---.-.----.--QUALPROC------------------>< .-/-+ .-NO-+
None
Default: | QUALPROC |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If you have no qualified procedure-names in your source code, you can specify NOQUALPROC. This improves compilation speed. If you have qualified data-names but no qualified procedure-names, you should specify QUAL and NOQUALPROC.
QUAL Compiler directive
Makes the Compiler ask, each time it is unable to find a copyfile, what it should do.
>>-.---.-.----.--QUERY--------------------->< .-/-+ .-NO-+
None
Default: | QUERY (DOS, Windows and OS/2) NOQUERY (UNIX) |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
With QUERY, if the Compiler cannot find a copyfile it asks you whether to terminate the compilation, try the search again, produce an error message and continue, or try again with an alternative path specified by you.
With NOQUERY, the Compiler simply produces an error message and continues.
Makes the Compiler interpret the figurative constant QUOTE as the double-quote character (").
>>-.---.--QUOTE---------------------------->< .-/-+
None
Default: | QUOTE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The opposite of this directive is the directive APOST which causes the single-quote character to be used.
Prevents changeable information, such as page headers, date, time, Compiler release level, from being included in any listing file produced.
>>-.---.-.----.--RAWLIST------------------->< .-/-+ .-NO-+
None
Default: | NORAWLIST |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Specifying this directive does not affect whether a listing is produced or the name of the listing file.
LIST Compiler directive
Causes COMP redefinitions of POINTER data items to be stored in machine-specific format; that is, treated as COMP-5 data items.
>>-.---.-.----.--RDEFPTR------------------->< .-/-+ .-NO-+
None
Default: | NORDEFPTR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The RDEFPTR directive is Early User Syntax support. You must set the EARLY-RELEASE directive to enable this feature. This directive might change or be removed in a later revision of this COBOL system.
IBM VS COBOL II and COBOL/370 let you use the REDEFINES clause on a POINTER data item to redefine it as a PIC 9(9) COMP data item. You can perform arithmetic operations on this item, giving the program the ability to shift the address referred to by a pointer up or down.
If RDEFPTR is specified, COMP redefinitions of POINTER data items are held in machine-specific format; that is, they are treated as COMP-5 data items. This means that arithmetic carried out on the redefinition should have the expected effect on the pointer, though, on the 16-bit COBOL system, unexpected behavior might occur if the arithmetic causes the pointer to cross the boundary of a data segment.
EARLY-RELEASE Compiler directive
Enables you to find out the length of a record that has just been read from a variable-length sequential file.
>>-.---.-.----.--RDW----------------------->< .-/-+ .-NO-+
None
Default: | NORDW |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
If you specify the RDW directive, a four-byte record-length field is allocated immediately before the record area for the file. After a READ, the length (in binary) of the record just read is put in the first two bytes of this record area. The length returned includes the record-length field itself, so is four bytes longer than the actual record length.
You can access this field by defining the record area as a table, and using negative or zero subscripting.
The RDW directive is intended only for mainframe compatibility; for new programs you should use the RECORD IS VARYING DEPENDING ON phrase of the FD statement.
fd file-1. 01 rec-1 pic x(100). 01 rec-2. 03 rdw-table pic x(4) occurs 25. Working-storage section. 01 rdw-area. 03 rec-length pic 9(4) comp. 03 filler pic 9(4) comp. procedure division. ... read file-1 move rdw-table (0) to rdw-area ...
FD statement
Causes overlays to be regarded as real rather than pseudo so that overlaying is done from disk.
>>-.---.-.----.--REALOVL------------------->< .-/-+ .-NO-+
None
Default: | REALOVL |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
This directive affects only .obj files.
This directive affects only programs that use COBOL segmentation. It affects only the generated .lnk file. REALOVL makes the overlays real by putting them in brackets in the file. NOREALOVL makes overlays pseudo.
If you are compiling a segmented program for use on OS/2, you should specify NOREALOVL.
Specifies the default format of files.
>>-.---.--RECMODE--"format"---------------->< .-/-+
format |
F, V, or OSVS. |
Default: | RECMODE"F" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The possible values of format are:
F | Fixed length record format. |
V | Variable length record format. |
OSVS | Fixed or variable depending on a file's record
definitions. If all record definitions for the file have the same length and
are fixed length, the file is fixed length record format. Otherwise it is in
variable length record format.
This setting is compatible with OS/VS COBOL and DOS/VS COBOL. When compiled with their CMPR2 directive, both VS COBOL II COBOL/370 are also compatible with RECMODE"OSVS". |
VSC23 | Fixed or variable length depending on the file's record definitions. If all record definitions for the file are the same length, and are fixed length and/or the FD entry has a RECORD CONTAINS x CHARACTERS clause, the file is fixed length record format. Otherwise it is in variable record format. This setting is compatible with VS COBOL II and COBOL/370 when compiled with NOCMPR2. |
For an individual file this directive is overridden if the FD contains either a RECORD IS VARYING phrase (which specifies variable format) or a RECORDING MODE clause.
Makes the Compiler include in the source listing the intermediate code address of each data item or Procedure Division statement.
On DOS, Windows and OS/2, it includes in the object code listing, the address of each Procedure Division statement.
>>-.---.-.----.--REF----------------------->< .-/-+ .-NO-+
None
Default: | NOREF |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | Any |
REF sets LISTWIDTH"90" immediately unless LISTWIDTH already has
a value greater than 90.
Set to NOREF at end by NOASMLIST, NOLIST or LISTWIDTH with a value less than
90.
The address is four digits long and appears on the right-hand side.
Using both source and object code listings together, you can identify the code generated for each line of source code. This directive can also be useful in determining the locations reported in run-time error messages.
If the 01SHUFFLE directive is set, the addresses shown in the listing for data items are likely to be different to those in the compiled code.
01SHUFFLE Compiler directive
LISTWIDTH Compiler directive
Makes the Compiler display its internal reference number at the start of a compilation as well as at the bottom of every listing.
>>-.---.-.----.--REFNO--------------------->< .-/-+ .-NO-+
None
Default: | NOREFNO |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
Makes the object program use an alternative parameter-passing mechanism, used in some other COBOL compilers.
>>-.---.-.-------REGPARM--"when-used"-.---->< .-/-+ ..----.-REGPARM--------------+ .-NO-+
when-used |
IN or OUT. |
Default: | NOREGPARM |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
If ASSUME is set, REGPARM"IN" sets NOFASTLINK at end.
If ASSUME is set, REGPARM"OUT" sets LITLINK at end.
This directive affects only .obj files.
when-used shows when the alternative mechanism is to be used. Its possible values are:
IN | For parameters passed to the program. |
OUT | For passing parameters to other programs. |
REGPARM with neither parameter causes this mechanism to be used in both cases.
With this alternative mechanism, the first parameter is passed in ES:DI, the second in DS:SI, and subsequent parameters on the stack, such that the third item in the USING clause is popped off the stack last, and the last item popped first.
The BP register is saved over calls, emulating the call functions of other COBOL compilers
If this directive is used with FASTLINK, no USING clause should have more than three parameters. If REGPARM"OUT" is used, LITLINK is assumed; do not try to turn it off with NOLITLINK.
REGPARM cannot be used with BY VALUE parameters.
Removes words from the reserved word list, so that they can be used as user-defined words.
+----------. v | >>-.---.--REMOVE--"rsv-word"--------------->< .-/-+
rsv-word |
A reserved word. |
Default: | No reserved words are removed. |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive does not appear in the list created with the SETTING directive.
Specifies the maximum length of a Report Writer line.
>>-.---.-.-----REPORT-LINE--"integer"-.---->< .-/-+ .-NO--REPORT-LINE------------+
integer |
The maximum length, in characters. |
Default: | REPORT-LINE"256" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Makes the Compiler produce line numbers.
>>-.---.-.----.--RESEQ--------------------->< .-/-+ .-NO-+
None
Default: | RESEQ |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to RESEQ immediately by XREF.
Set to NORESEQ immediately by SEQCHK.
Set to NORESEQ at end by SOURCEFORMAT"FREE".
These are COBOL line sequence numbers, starting at 1 and increasing in increments of 1.
Specifies that when a READ statement finds that a record is locked the read operation is to be retried repeatedly until the record is available.
>>-.---.-.----.--RETRYLOCK----------------->< .-/-+ .-NO-+
None
Default: | NORETRYLOCK |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Set to NORETRYLOCK immediately by NORM.
Set to RETRYLOCK immediately by RM or RM"ANSI".
This directive affects a file only if the file has a FILE STATUS item but there is no declarative specifically for that file.
With the 16-bit COBOL system, RETRYLOCK overrides the setting of the R run-time switch. You should use this directive instead of the R switch.
R RTS switch
Allows REWRITE statements on line sequential files.
>>-.---.-.----.--REWRITE-LS---------------->< .-/-+ .-NO-+
None
Default: | REWRITE-LS |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
You must make sure that the record you write is the same size as the one it replaces.
Specifies that words reserved in Ryan-McFarland COBOL V2.0 are to be regarded as reserved words, and changes the behavior of certain features to be compatible with that COBOL system.
>>-.---.-.-------RM--"ANSI"-.-------------->< .-/-+ ..----.-RM---------+ .-NO-+
ANSI |
See Comments. |
Default: | NORM |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
RM sets SEQUENTIAL"LINE", NOTRUNC, OLDINDEX, NOOPTIONAL-FILE,
RETRYLOCK, COMP-6"1" and ALIGN"2" immediately.
RM"ANSI" sets SEQUENTIAL"RECORD", NOTRUNC, OLDINDEX,
NOOPTIONAL-FILE, RETRYLOCK, COMP-6"1" and ALIGN"2"
immediately.
NORM sets SEQUENTIAL"RECORD", TRUNC"ANSI", NOOLDINDEX,
OPTIONAL-FILE, NORETRYLOCK, COMP-6"2" and ALIGN"8"
immediately.
With the ANSI parameter these features behave as they do when a program is compiled in that COBOL system with the ANSI switch set. See your Language Reference.
Causes Animator to be invoked instead of the Compiler.
>>-.---.-.----.--RNIM---------------------->< .-/-+ .-NO-+
None
Default: | NORNIM |
Phase: | Syntax check |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | No |
RNIM sets NOLIST, NOANIM and NOXREF immediately.
Set to NORNIM at end by GANIM.
The effect is as if you had invoked Animator in the normal way.
You must have already compiled the program using the ANIM directive to prepare it for animation.
You can use Animator directives with RNIM.
With RNIM, no object file is produced by default.
Animator Directives
Specifies the size of the RETURN-CODE special register and its alignment in memory.
>>-.---.--RTNCODE-SIZE--"integer"---------->< .-/-+
integer |
2 or 4. |
Default: | RTNCODE-SIZE"2" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to RTNCODE-SIZE"4" immediately by XOPEN.
The possible values of integer are:
2 | PIC S9(4) COMP: size 2 bytes, aligned on a two-byte boundary. |
4 | PIC S9(9) COMP: size 4 bytes, aligned on a four-byte boundary. |
If a program with a four-byte RETURN-CODE calls a program with a two-byte RETURN-CODE, on return the value from the called program is in the lower two bytes of the four-byte RETURN-CODE. The content of the upper two bytes is undefined.
If a program with a two-byte RETURN-CODE calls a program with a four-byte RETURN-CODE, on return the lower two bytes of the value from the called program are in the two-byte RETURN-CODE. The content of the upper two bytes is lost.
Specifies that words reserved under the Systems Application Architecture (SAA) definition of COBOL are to be treated as reserved words.
>>-.---.-.-------SAA--"level"-.------------>< .-/-+ ..----.-SAA----------+ .-NO-+
level |
An integer specifying the level of SAA support required. |
Default: | NOSAA |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
SAA sets DBSPACE and DBCS"2" immediately.
SAA"2" sets ANS85 at end.
The possible values of level are:
1 | SAA level 1 supported |
2 | SAA level 2 supported |
Specifying SAA with no parameters is the same as specifying SAA"2".
Turns on COBOL segmentation.
>>-.---.-.----.--SEG----------------------->< .-/-+ .-NO-+
None
Default: | SEG |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
With NOSEG, the Compiler treats all section numbers in the code as if they were zero. This means that the Compiler ignores segmentation and creates one program with no overlays.
Tells the Compiler which Linkage Section records cross segment boundaries.
>>-.---.-.----.-SEGCROSS-.------------.---->< .-/-+ .-NO-+ .-"integers"-+
integers |
One or more integers giving the ordinal positions of Linkage Section items. |
Default: | NOSEGCROSS (less than 64K of data) SEGCROSS (64K or more of data) |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
integers must be separated by commas, and must be enclosed in quotes. They cannot be enclosed in parentheses.
If a program has less than 64K of its own data, the Compiler assumes that any parameters passed into the program do not cross segment boundaries. If this is not the case, SEGCROSS"integer" must be specified for all Linkage Section items that might cross a segment boundary.
If a program has 64K or more of its own data, the Compiler assumes that Linkage Section items do cross segment boundaries. You can specify NOSEGCROSS"integer" for any Linkage Section item that does not cross a segment boundary. This results in more efficient code.
With NOSEGCROSS, the code generated follows the rules given under the SMALLDD directive. With SEGCROSS"integer-1, integer-2,...", the setting of SMALLDD is ignored.
Look at the following Linkage Section:
linkage section. 01 a pic x(10). 01 b pic 9(8). 01 c. 03 c1 pic x(10). 03 c2 pic x(20). 01 d pic 9(4). 01 e pic 9(8) comp-x.
If you know that b and c never cross a segment boundary, you can specify SEGCROSS"1,4,5" to indicate that boundary crossing code is only to be produced for a, d and e.
SMALLDD Compiler directive
Specifies the maximum code segment size, beyond which the Compiler automatically segments the code.
>>-.---.--SEGSIZE--"integer"--------------->< .-/-+
integer |
The maximum size. |
Default: | SEGSIZE"0" |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
If integer is zero, no automatic segmentation is done. This reduces compilation time and creates more efficient code.
SEGSIZE"65536" causes automatic segmentation if the code is bigger than 65536 bytes.
64KPARA Compiler directive
64KSECT Compiler directive
Makes the Compiler check the sequence numbers in columns 1 through 6 and identify source lines that are out of sequence.
>>-.---.-.----.--SEQCHK-------------------->< .-/-+ .-NO-+
None
Default: | NOSEQCHK |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
SEQCHK sets NORESEQ immediately.
Set to NOSEQCHK at end by SOURCEFORMAT"FREE".
Specifies the default file type for files defined (implicitly or explicitly) as ORGANIZATION SEQUENTIAL.
>>-.---.--SEQUENTIAL--"type"--------------->< .-/-+
type |
ADVANCING, ANSI, LINE, or RECORD. |
Default: | SEQUENTIAL"RECORD" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to SEQUENTIAL"RECORD" immediately by NORM or RM"ANSI".
Set to SEQUENTIAL"LINE" immediately by RM.
The possible values of type are:
ADVANCING | RECORD SEQUENTIAL with LINE ADVANCING. |
ANSI | ANSI-conforming RECORD SEQUENTIAL. |
LINE | LINE SEQUENTIAL. |
RECORD | RECORD SEQUENTIAL (a standard SEQUENTIAL file). |
Specifies that the program is to be run in a multi-threaded environment.
>>---.----.----SERIAL--------->< .-NO-+
None
Default: | NOSERIAL |
Phase: | Generate |
Environment: | 32-bit |
$SET: | Initial |
If you specify this directive, thread-checking code is created that enables the run-time system to detect program entry. If this is not the first active COBOL program, the run-time system blocks on program entry until the previous program has exited. This enables COBOL programs to exist safely in a multi-threaded environment. This directive should be used on the first COBOL program to be executed on any given thread.
Note that the thread checking code takes time and is called on every program entry. Programs should only be compiled with this directive if they are going to run in a multi-threaded environment.
thread_safe run-time tunable
Makes the Compiler include in the source listing a list of the settings of directives.
>>-.---.-.-------.-SETTING--.-.----------.-.->< .-/-+ | .-SETTINGS-+ .-"format"-+ | ..----.-.-SETTING--.--------------+ .-NO-+ .-SETTINGS-+
format |
The layout of the listing. Only affects the listing given during the syntax check phase. |
Default: | NOSETTING |
Phase: | Both |
Environment: | All (syntax check), 16-bit (generate) |
$SET: | Any |
Set to NOSETTING by NOLIST at end.
When used in the check phase, format can be one of:
LINE | Lines of directives, each separated from the next by a space. |
COL | One directive per line. |
COL3 | Three directives per line in columns. |
If format is not specified, LINE is assumed.
A few directives provided only for compatibility with other COBOL systems (for example, COMMIT) are not shown. Also not shown are directives that control code generation, make specific changes to the reserved word list, or are synonymous with other directives.
If the directive is specified other than on a $SET statement, the directives list is produced before processing the program source. If the directive is specified on a $SET statement, the list is produced once all the directives on that statement have been processed. In each case, the list contains the state of each directive at that point.
When used with the generate phase, the .grp file contains only those directives that are relevant to that phase.
LIST Compiler directive
Makes the Compiler show the contents of directives files in the source listing.
>>-.---.-.----.--SHOW-DIR------------------>< .-/-+ .-NO-+
None
Default: | NOSHOW-DIR |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
A directives file means cobol.dir or a file that appears in a DIRECTIVES or USE directive. For the contents of cobol.dir to appear in the source listing, SHOW-DIR must be specified at the start of cobol.dir, as this file is processed before any other directive.
You can use SHOW-DIR and NOSHOW-DIR selectively so that only parts of the directives file are output to the listing.
Displays the results of the level-01 data items moved by the 01SHUFFLE directive.
>>-.---.-.----.--SHOWSHUFFLE--------------->< .-/-+ .-NO-+
None
Default: | NOSHOWSHUFFLE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
SHOWSHUFFLE only produces information if the 01SHUFFLE directive is specified. Otherwise it has no effect.
01SHUFFLE Compiler directive
REF Compiler directive
Specifies whether, for numeric DISPLAY items with included signs, the signs are to be interpreted according to the ASCII or EBCDIC convention.
>>-.---.--SIGN--"convention"--------------->< .-/-+
convention |
Either ASCII or EBCDIC. |
Default: | SIGN"ASCII" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to SIGN"ASCII" immediately by CHARSET"ASCII".
Set to SIGN"EBCDIC" at end by CHARSET"EBCDIC".
Affects the way some numeric comparisons are performed in a program using the EBCDIC character set.
>>-.---.-.----.--SIGNCOMPARE--------------->< .-/-+ .-NO-+
None
Default: | NOSIGNCOMPARE |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Any |
When the SIGNCOMPARE directive is set in a program using the EBCDIC character set, the way that some numeric comparisons are performed is changed. For example, an unsigned data item that contained 1234 would be equal to a signed data item that contained +1234.
Setting SIGNCOMPARE causes these comparisons to be much less efficient than usual. The behavior of intermediate code with NOSIGNCOMPARE specified is the same as the behavior of generated code with SIGNCOMPARE specified. That is to say, if you use the default setting of this directive, the behavior in intermediate code and generated code is different.
Comparisons with COMP-3 items with illegal sign nibbles (such as those produced by redefining the item) are also allowed by this directive.
Tells the Compiler that no Linkage Section record less than 64K long crosses a segment boundary.
>>-.---.-.----.--SMALLDD------------------->< .-/-+ .-NO-+
None
Default: | SMALLDD |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
SMALLDD improves efficiency by enabling the Compiler to generate boundary-crossing code only for records longer than 64K. With NOSMALLDD, boundary-crossing code is generated for all Linkage Section records. If your Data Division is longer than 64K, SMALLDD is ignored and NOSMALLDD is assumed.
You should use SEGCROSS instead of SMALLDD, as this allows an individual setting for each Linkage Section item rather than having one setting for all of them.
You can find out which data items in the calling program cross segment boundaries by using the CHIP and FLAG-CHIP directives when compiling it. This makes the Compiler report on data items that cross a segment boundary. You can then rearrange their definitions so they do not do so. This can be performed automatically by specifying the 01SHUFFLE directive.
01SHUFFLE Compiler directive
CHIP Compiler directive
FLAG-CHIP Compiler directive
SEGCROSS Compiler directive
Specifies the filename extension of the source file that a run-time debugger is to look for. This information is included in the .obj file.
>>-.---.--SOURCE-EXT--"ext"---------------->< .-/-+
ext |
A filename extension. |
Default: | SOURCE-EXT"cbl" |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
This directive affects only .obj files.
Makes the Compiler include source code statements in the assembler listing.
>>-.---.-.----.--SOURCEASM----------------->< .-/-+ .-NO-+
None
Default: | NOSOURCEASM |
Phase: | Generate |
Environment: | All |
$SET: | No |
Set to NOSOURCEASM by NOLIST at end.
SOURCEASM sets ANIM at end.
Arithmetic and moves of numeric items can produce very fast code provided you use only simple syntax; for example, if you have only one receiving field.
On the 16-bit COBOL system, if you use a complicated form of one of these statements, "BADCODE" appears by it on the listing to show you that here is a place where you could speed up your program.
Selects free or fixed format for COBOL source.
>>-.---.--SOURCEFORMAT--"format-type"------>< .-/-+
format-type |
FIXED or FREE. The format of COBOL source. |
Default: | SOURCEFORMAT"FIXED" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
SOURCEFORMAT"FREE" sets NOMFCOMMENT, NORESEQ and NOSEQCHK at end.
See the Language Reference for details on free and fixed format code.
Causes space characters in numeric data items of USAGE DISPLAY to be treated as zeros.
>>-.---.-.----.--SPZERO-------------------->< .-/-+ .-NO-+
None
Default: | NOSPZERO |
Phase: | Both (16-bit COBOL system) Generate (32-bit COBOL systems) |
Environment: | All |
$SET: | Any |
With NOSPZERO, space characters in numeric data items give unpredictable results.
Allows EXEC SQL statements in your program.
>>-.---.-.----SQL-.----------------------..>< .-/-+ | | +-----.---.-----. || | | | .-,-+ | || | | v | || | .-(.-option=setting-.)-+| | | | | | .-NO-option------+ | .-NO-SQL-------------------------+
option |
One of the SQL options (see below) |
setting |
The setting for the option |
Default: | NOSQL |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Available options are:
ACCESS | Specifies the name of the access plan to be created by precompiler services and stored in the database. |
BIND | Specifies the name of the bind file to be created by precompiler services. |
BLOCK | Specifies the record blocking mode to be used on plan creation. |
COMMIT | Specifies where implicit COMMIT statements should be generated. |
CTRACE | Causes listing output to contain diagnostics showing calls to precompiler services. |
DB | Specifies the name of the database that the program accesses. |
DB2 | Specifies that data items defined outside the scope of a Declare Section are allowed as host variables. This is for compatibility with IBM mainframes. |
DBMAN | Specifies the database engine family that is being used at both compilation and run time. |
ECSPP | This directive is reserved for use with the add-on products "Micro Focus HOST Compatibility Option for IBM Database Manager" and "Micro Focus DB2 Option". Do not change its setting. |
FORMAT | Determines the date and time format when date/time fields are assigned to string representations in host variables. |
INIT | Makes the program initialize SQL, log on to the database, and register a process to protect the database on abnormal program termination. |
ISOLATION | Specifies the isolation level to use. |
NOT | Specifies the value to use for the NOT character (ª). |
PASS | Specifies the userid and password of the database. |
PRE | Enables SQL programs to be animated or run by preloading the database API modules. |
STDLVL | Specifies the standards level of the database manager. |
To process EXEC SQL statements for access to a database engine, you must specify the SQL directive. If you want to have EXEC SQL statements processed as standard EXEC syntax (see your Language Reference for details), you must explicitly specify the directive NOSQL.
In previous versions of Micro Focus COBOL each of the options specified here was a separate directive; except the DBMAN option which was part of the SQL directive, and the INIT option which was a combination of the directives SQLINIT and SQLPROT. All these directives work in this system, but they will be removed in a future version. We recommend that you change to the new format as soon as possible.
Each of the following lines has the same effect:
SQL(FORMAT=LOC, DBMAN=IBM, DB=SAMPLE, NOBIND) SQL(FORMAT=LOC DBMAN=IBM DB=SAMPLE NOBIND) SQL(FORMAT=LOC IBM DB=SAMPLE NOBIND) SQL(FORMAT=LOC) SQL(IBM) SQL(DB=SAMPLE) SQL(NOBIND)
Specifies the name of the access plan to be created by precompiler services and stored in the database.
>>-.-------ACCESS=--access-plan-.->< ..----.-ACCESS---------------+ .-NO-+
access-plan |
The root of a filename, or a null string. |
Default: | ACCESS |
The name of the access plan is not a filename and so must not have an extension.
If you specify ACCESS, the access plan is given the same name as the compiled program, without path or extension.
The name of the access plan is always folded to upper case as required by DDCS/2.
If no access plan is to be created, use NOACCESS.
Specifies the name of the bind file to be created by precompiler services.
>>-.-------BIND=--bindfile-name-.->< ..----.-BIND-----------------+ .-NO-+
bindfile-name |
A full file specification or a null string. |
Default: | NOBIND |
If you specify BIND, the bind file is given the same name as the compiled program, except that the file extension becomes .bnd.
On OS/2 and Windows, the bindfile-name is always folded to upper case. This is required by DDCS/2 and is transparent in all other cases.
If no bind file is to be created, use NOBIND.
Specifies the record blocking mode to be used on plan creation.
>>---BLOCK=--block-mode-----------><
block-mode |
The blocking mode to be used. |
Default: | BLOCK=UNAMBIG |
The possible values of block-mode are:
ALL | Blocking occurs for fetch-only cursors. Ambiguous cursors are treated as fetch-only. |
UNAMBIG | Blocking occurs for fetch-only cursors. Ambiguous cursors are treated as updatable. |
NO | Blocking does not occur. |
Specifies where implicit COMMIT statements should be generated.
>>---COMMIT=--level---------------><
level |
The level number. |
Default: | COMMIT=2 |
To preserve the integrity of a database on an abnormal program termination, code can be generated to roll back changes when the database manager shuts down. Code can also be generated at strategic points in your program to commit changes made to the database up to that point. The level number in the COMMIT SQL option specifies where these statements should be generated, as follows:
1 | No COMMIT statements implicitly generated |
2 | COMMIT statements are implicitly generated on STOP RUN statements and at the end of the program |
3 | COMMIT statements are implicitly generated on STOP RUN and EXIT PROGRAM statements and at the end of the program |
4 | COMMIT statements are implicitly generated after every SQL statement |
This option requires INIT to be set.
Causes listing output to contain diagnostics showing calls to precompiler services.
>>-.----.--CTRACE----------------->< .-NO-+
None
Default: | NOCTRACE |
This option only affects what the listing file, if produced, contains. It does not determine if a listing file is produced, or the name of the file.
Specifies the name of the database that the program accesses.
>>-.-----DB=--database-name-.----->< .-NO--DB-----------------+
database-name |
An alphanumeric string obeying the rules for a Database Manager database name. |
Default: | NODB |
This option should always be specified.
On OS/2 and Windows, the database-name is always folded to upper case. This is required by DDCS/2 and is transparent in all other cases.
Specifies that data items defined outside the scope of a Declare Section are allowed as host variables. This is for compatibility with IBM mainframes.
>>-.----.--DB2-------------------->< .-NO-+
None
Default: | DB2 |
With NODB2, any data item that is defined outside a Declare Section and is used in an SQL statement is assumed to be an SQLDA.
With DB2 set, data items are inspected to see if they are host variables or an SQLDA. This provides compatibility with DB2 on IBM mainframes.
This option also allows the use of group host variables for compatibility with IBM mainframes.
This option does not affect other DB2 extensions provided by the Compiler.
Specifies the database engine family that is being used at both compilation and run time.
>>--.--------.--database-manager-->< .-DBMAN=-+
database-manager |
The type of database engine to use. |
Default: | DBMAN=IBM |
The possible values of database-manager are IBM or MSSQL. Use IBM if you are using one of the following database engines:
IBM OS/2 Extended Edition Database Manager
IBM Extended Services/2 V1.0 Database Manager
IBM DB2/2 V1.0
IBM DB2/2 V1.2
IBM DB2/6000 V1
IBM DB2 V2.0 (with functionality limited to that of V1.x)
Use MSSQL if you are using Microsoft SQL Server V4.2 or later with Microsoft embedded SQL for COBOL developers kit V4.21 or later.
This option is reserved for use with the add-on products "Micro Focus HOST Compatibility Option for IBM Database Manager" and "Micro Focus DB2 Option". Do not change its setting.
>>-.-------ECSPP=--parameter-.---->< ..----.-ECSPP-------------+ .-NO-+
parameter |
This parameter has no effect on the behavior of this option. It is included for compatibility purposes. |
Default: | NOECSPP |
Determines the date and time format when date/time fields are assigned to string representations in host variables.
>>---FORMAT=--date-format---------><
date-format |
Identifies the format to use. |
Default: | FORMAT=LOC |
The possible values of date-format are:
DEF | determined by country code |
USA | mm/dd/yyyy hh:mm xM (AM/PM) |
EUR | dd.mm.yyyy hh.mm.ss |
ISO | yyyy-mm-dd hh.mm.ss |
JIS | yyyy-mm-dd hh:mm:ss |
LOC | Local form |
When DEF or LOC is specified, these are the formats used:
-------------------------------------------------------------- Country LOC date LOC time DEF date DEF time -------------------------------------------------------------- 001 USA mm-dd-yyyy hh:mm:ss mm/dd/yyyy hh:mm xM 002 Canada/Fr dd-mm-yyyy hh.mm.ss yyyy-mm-dd hh.mm.ss 044 UK dd/mm/yyyy hh:mm:ss dd/mm/yyyy hh:mm:ss 033 France dd/mm/yyyy hh:mm:ss dd.mm.yyyy hh.mm.ss 049 Germany dd/mm/yyyy hh.mm.ss yyyy-mm-dd hh.mm.ss 034 Spain dd/mm/yyyy hh:mm:ss dd/mm/yyyy hh:mm:ss 039 Italy dd/mm/yyyy hh:mm:ss dd/mm/yyyy hh:mm:ss 046 Sweden dd/mm/yyyy hh.mm.ss yyyy-mm-dd hh.mm.ss 045 Denmark dd-mm-yyyy hh.mm.ss yyyy-mm-dd hh.mm.ss 047 Norway dd/mm/yyyy hh.mm.ss dd.mm.yyyy hh.mm.ss 031 Netherlands dd-mm-yyyy hh:mm:ss yyyy-mm-dd hh.mm.ss 032 Belgium dd/mm/yyyy hh:mm:ss dd/mm/yyyy hh:mm:ss --------------------------------------------------------------
See your SQL Reference or equivalent for more details.
Makes the program initialize SQL and log on to the database.
>>-.-------INIT=--mode-.---------->< ..----.-INIT--------+ .-NO-+
mode |
Specifies whether the database is to be used in shared or exclusive mode. |
Default: |
INIT causes the program to initialize the connection to the database. As part of this process it registers a procedure so that the database is always properly closed down when a STOP RUN occurs. Without this you can leave the database in a corrupt condition if the program terminates before completion; for example, if you terminate an animation session before completing the program.
The possible values of mode are:
PROT | For SQL programs that need to protect the database on STOP RUN but do not want to initialize. |
S | Database to be used in shared mode |
X | Database to be used in exclusive mode |
NOINIT should be specified for SQL programs that are called by other SQL programs. It can also be specified for the first SQL program in a run-unit, but the program must contain one of the following before executing any other EXEC SQL statement:
Specifies the isolation level to use.
>>---ISOLATION=--isol-level-------><
isol-level |
The isolation level to use. |
Default: | ISOLATION=CS |
The possible values of isol-level are:
RR | Repeatable read |
CS | Cursor stability |
UR | Uncommitted read |
Specifies the value to use for the NOT character (ª).
>>---NOT=--integer----------------><
integer |
The ASCII value, in decimal, of the character to use. |
Default: | NOT=170 |
You can specify any value from 0 through 255 for integer. This option is provided for use on operating systems that do not use 170 to represent the not (ª) character.
Specifies the userid and password of the database.
>>-.-----PASS=--"usid.passwd"-.--->< .-NO--PASS-----------------+
usid.passwd |
An alphanumeric string obeying the rules for a userid and password, separated by a period. The period can be omitted. |
Default: | NOPASS |
If the database has no password, use NOPASS. This option should only be specified if you are compiling against a remote database.
Enables SQL programs to be animated or run by preloading the database API modules.
>>-.-------PRE=--set-level-.------>< ..----.-PRE-------------+ .-NO-+
set-level |
Specifies which set of modules to preload |
Default: | PRE=ALL |
The possible values of set-level are:
ALL | All modules |
REQ | Only those modules that are used by EXEC SQL statements |
On 32-bit OS/2 systems, REQ and ALL are synonymous.
Specifying this option causes a call to be generated to a module which preloads the API modules required when running an SQL program. This ensures that any SQL calls generated by embedded SQL commands or coded in the program can be resolved when running or animating. If you make no calls to SQL, you can use PRE=REQ, which causes the start-up code to be executed more quickly.
Applications that are to be linked to create a .dll or .exe file might not need this option to be specified. See the chapter SQL Database Interface in your Programmer's Guide to File Handling for more information.
This option has no effect on UNIX.
Specifies the standards level of the database manager.
>>---STDLVL=--standard-level------><
standard-level |
The standard level to be used. |
Default: | STDLVL=NONE |
Possible values for standard-level are:
NONE | FOR UPDATE clause is required on cursor declarations if tables are updated through the cursor. |
MIA | FOR UPDATE clause is optional. Using this option might degrade performance. |
Causes error messages to be echoed to STDERR rather than to the console (STDOUT).
>>-.---.-.----.--STDERR-------------------->< .-/-+ .-NO-+
None
Default: | NOSTDERR (on DOS, Windows and OS/2) STDERR (on UNIX) |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Makes parameters to the program remain linked during subsequent calls of the program.
>>-.---.-.------STICKY-LINKAGE--"integer"-.->< .-/-+ .-NO---STICKY-LINKAGE------------+
integer |
Either 1 or 2 |
Default: | NOSTICKY-LINKAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
The purpose of the COBOL Linkage Section is to provide a linkage between a level 01 or level 77 data item declared in the Linkage Section (a linkage item) and some dynamically specified data item so that they appear to share the same storage area. The linkage is established by one of three means: a CALL statement referencing a program-name, a CALL statement referencing an entry-name or a SET statement. The first mechanism is the standard one specified by ANSI. The other two are COBOL language extensions that are supported by this COBOL system.
In ANSI COBOL, the Linkage Section enables a called program to access the parameters passed to it by a CALL statement. The number of parameters in the USING phrase of the CALL statement must equal the number of parameters in the USING phrase of the PROCEDURE DIVISION header. Any level 01 or level 77 data item in the Linkage Section that does not appear in the USING phrase of the PROCEDURE DIVISION header must not be referenced.
The ENTRY statement is a COBOL language extension that provides an alternative entry point into a program. The ENTRY statement takes a USING phrase in the same way as the PROCEDURE DIVISION header, and, in a similar fashion, linkage items must not be referenced if they do not appear in the USING phrase associated with the entry-name by which the program was invoked.
The SET statement enables a POINTER value that identifies a storage location to be used to link a linkage item. Such a linkage item can then be referenced in order to reference the data held at that storage location.
The following details explain in conceptual terms when linkage items are linked and unlinked.
This COBOL system checks at run time when a linkage item is referenced, to ensure it is linked to a data item. It gives a run-time error if it is not linked to any storage location. To facilitate this check, on each invocation immediately before executing the first statement in the program, all linkage items are first unlinked and then linkage items that have corresponding parameters passed by the calling program are linked. This means that a linkage item in a called program that is linked to a data item by the SET statement does not remain linked on subsequent invocations of the program; the SET statement needs to be executed in each invocation.
Many other COBOL implementations are less rigorous in enforcing the ANSI rules and the STICKY-LINKAGE directive takes a parameter to specify two alternative and less rigorous regimes.
STICKY-LINKAGE"1" specifies that only the linkage items that appear in the USING phrase of the called program are unlinked; other linkage items retain any previous linkage. If the program was called using the program-name this is the USING phrase of the PROCEDURE DIVISION header. Otherwise, this is the USING phrase associated with the entry-point by which the program was invoked.
Under this regime, if the calling program provides insufficient parameters and a reference is made to a linkage item that appears in the USING phrase but has no corresponding parameter in the USING phrase of the CALL statement, a run-time error is still given.
STICKY-LINKAGE"2" specifies that, except when the program is in its initial state at startup or after it is referenced in a CANCEL statement, no linkage items are unlinked when the program is called. All linkage items retain any linkage established during previous invocations unless the calling program provides a parameter or a SET statement is used to change the linkage.
Note: No particular implementation method is implied in the above paragraphs and indeed, on this COBOL system, emulating the non-ANSI conformant behaviour using this directive can have a detrimental effect on program size and execution speed.
If the following program is compiled without the STICKY-LINKAGE directive and run, a run-time error 203, CALL parameter not supplied, is given after the second CALL statement passes control to "ent" and the DISPLAY statement references two linkage items that do not appear in the USING phrase of ENTRY "ent".
If the program is then compiled with STICKY-LINKAGE"1" and run, execution progresses until it fails again after the third CALL statement passes control to "sub" and the DISPLAY statement references a linkage item that does appear in the USING phrase of the PROCEDURE DIVISION header but has no corresponding parameter passed by the CALL statement.
If the program is compiled with STICKY-LINKAGE"2" and run, the program successfully executes to completion.
program-id. main. working-storage section. 01 param pic x value "a". procedure division. call "sub" using param call "ent" call "sub" stop run. end program main. program-id. sub. linkage section. 01 link-1 pic x. 01 link-2 pic x. procedure division using link-1. set address of link-2 to address of link-1 display link-1 link-2 exit program. entry "ent" display link-1 link-2 exit program.
If STICKY-LINKAGE"2" is used for a called program, it can be called only by a COBOL program. If the called program is to be generated to object code in 16-bit environments, the PARAMCOUNTCHECK Compiler directive must be specified.
PARAMCOUNTCHECK Compiler directive
Specifies the behavior of PERFORM statements when a program is reentered.
>>-.---.-.----.--STICKY-PERFORM------------>< .-/-+ .-NO-+
None
Default: | NOSTICKY-PERFORM |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive has an effect only if your program was compiled with either PERFORM-TYPE"OSVS" or PERFORM-TYPE"RM" specified.
If you specified PERFORM-TYPE"OSVS" or PERFORM-TYPE"RM" when compiling, PERFORM statements are implemented by having a storage area, or bucket, associated with each place in the program that can be the end of a PERFORM statement's range. When a PERFORM statement is executed the return address is stored in the bucket, and at the end of the PERFORM statement's range the bucket is read to determine where control should return to and then cleared.
By default, an EXIT PROGRAM statement clears these buckets, so that if the program is reentered, none of the return addresses of the previously executed PERFORM statements remains. Specifying STICKY-PERFORM stops the buckets from being cleared by an EXIT PROGRAM statement. This means that on reentry, the return addresses of all previously executed PERFORM statements remain.
A STOP RUN or CANCEL statement clears the buckets regardless of the setting of this directive.
PERFORM-TYPE Compiler directive
Makes the Compiler produce extra information so that you can use the structure feature of Animator.
>>-.---.-.----.--STRUCT-------------------->< .-/-+ .-NO-+
None
Default: | NOSTRUCT |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
STRUCT sets ANIM at end.
Set to NOSTRUCT at end by NOINT.
This directive is reserved for use with Structure Animator, supplied in Workbench, Object COBOL for UNIX and other similar COBOL systems. Do not change its setting unless you have an appropriate COBOL system.
Suppresses form-feed characters on the compilation listing if it is sent to the screen.
>>-.---.-.----.--SUPFF--------------------->< .-/-+ .-NO-+
None
Default: | SUPFF |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
Sets the number from which the Compiler counts positions in the collating sequence when compiling the SYMBOLIC CHARACTERS clause.
>>-.---.--SYMBSTART--"integer"------------->< .-/-+
integer |
The number to be used. |
Default: | SYMBSTART"1" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
For ANSI conformance use SYMBSTART"1"; for compatibility with previous products use SYMBSTART"0".
With SYMBSTART"1", the COBOL statement:
symbolic characters bee is 67
declares a symbolic character bee representing "B" since, counting from 1, "B" is the 67th character in the ASCII collating sequence. With SYMBSTART"0", bee represents "C".
Causes ACCEPT, DISPLAY and EXHIBIT statements to be mapped onto files SYSIN and SYSOUT. Also causes the output from TRACE to be sent to the SYSOUT file.
This directive has been replaced by the directives INDD and OUTDD. It will be removed in a future version of this COBOL system.
>>-.---.-.----.--SYSIN--------------------->< .-/-+ .-NO-+
None
Default: | NOSYSIN |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to NOSYSIN immediately by INDD and OUTDD
SYSIN sets NOINDD and NOOUTDD immediately
When SYSIN is specified, all format 1 ACCEPT statements which either have no FROM option or specify FROM SYSIN (or the mnemonic-name associated with SYSIN) are transformed into READ statements, reading from a file with external name SYSIN.
Similarly, all EXHIBIT statements and all format 1 DISPLAY statements which either have no UPON option or specify UPON SYSOUT are transformed into WRITE statements, writing to a file with external name SYSOUT.
These files behave as though they were defined as ORGANIZATION LINE SEQUENTIAL. The text is always in ASCII regardless of the setting of the CHARSET directive.
The maximum record size for SYSIN is 80 characters, and for SYSOUT 132 characters. Larger records are truncated to these maximums. Their names can be mapped onto physical filenames in the same way as other files with external filenames; that is, by using environment variables or the External File Mapper, MFExtmap.
ACCEPT statement, format 1
DISPLAY statement, format 1
EXHIBIT statement
TRACE Compiler directive
Makes the Compiler assume that a table defined as not crossing a segment boundary might actually cross a segment boundary.
>>-.---.-.----.--TABLESEGCROSS------------->< .-/-+ .-NO-+
None
Default: | NOTABLESEGCROSS |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
TABLESEGCROSS sets NOBOUNDOPT at end.
TABLESEGCROSS must be specified in a program that defines a table as being smaller than 64K, but references beyond the end of the table, across a 64K segment boundary. This technique is commonly used in OSVS COBOL programs where the maximum size of a level-01 item is 32K.
Specifying TABLESEGCROSS makes the code produced for your program much less efficient. For smaller and faster code you should not specify TABLESEGCROSS.
BOUNDOPT Compiler directive
Tells the Compiler whether it can generate certain instructions available only on certain microprocessors. Use of these instructions increases the speed and slightly reduces the size of the code.
>>-.---.--TARGET--"processor-id"----------->< .-/-+
processor-id |
Identifies the processor type |
Default: | TARGET"86" with the 16-bit Generator TARGET"386" with the 32-bit Windows NT and OS/2 V2 Generator |
Phase: | Generate |
Environment: | 16-bit, 32-bit on Windows NT, OS/2 V2 and SCO UNIX |
$SET: | Initial |
In the 16-bit Generator, the possible values of processor-id are:
86 | The code must execute on all 8086, 8088, 80186, 80286, and 80386 processors. |
286 | The code can include instructions available only on the 80186, 80188, 80286, and 80386 processors. |
386-16 | The code can include instructions available only in 16-bit mode on the 80386 processor. |
386-32 | This is the same as 386-16 except, under certain circumstances, the code includes some instructions which use 32-bit registers. |
In the above, 80386 includes 80486 and Pentium processors.
In the 32-bit Generator, the possible values of processor-id are:
386 | The code executes on 80386, 80486 and Pentium processors. |
486 | Includes instructions that are available only on 80486 and Pentium processors. |
PENTIUM | As for "486", but switches on certain optimizations which improve code speed when run on a Pentium processor, at the cost of increased code size. None of these optimizations prevent the code running on a 486. |
Determines whether the last page of a report file is to be padded with blank lines until it is a full page in length.
>>-.---.-.----.--TERMPAGE------------------>< .-/-+ .-NO-+
None
Default: | TERMPAGE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Specifying TERMPAGE causes the last page of a report to be padded with blank lines until it is a full page in length.
This directive affects any report file for which the PAGE phrase is specified in its Report Description (RD) entry.
Puts the time at the top of each page of the listing.
>>-.---.-.----.--TIME---------------------->< .-/-+ .-NO-+
None
Default: | TIME |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive has no effect if NODATE is specified.
DATE Compiler directive
Enables READY TRACE and RESET TRACE statements.
>>-.---.-.----.--TRACE--------------------->< .-/-+ .-NO-+
None
Default: | NOTRACE |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
When TRACE is set, the READY TRACE statement turns on the trace facility at run time. With this facility on, the name of each paragraph or section heading is displayed as it is executed. RESET TRACE turns this facility off. With NOTRACE, the READY TRACE and RESET TRACE statements have no effect.
SYSIN Compiler directive
Tells the Compiler that the program contains legal but unstructured perform-ranges, and that certain optimizations cannot, therefore, be made.
>>-.---.-.----.--TRICKLE------------------->< .-/-+ .-NO-+
None
Default: | TRICKLE |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
Set to TRICKLE at end by PERFORM-TYPE"OSVS".
If ASSUME is set, NOTRICKLE sets NOALTER at end.
NOTRICKLE tells the Compiler that nowhere in the program could control "trickle" from one perform-range into another. Such a program has structured flow of control: it contains no paragraph or section that is entered both by being performed and by control falling into it from the preceding code, and none that is at the end of the range of one PERFORM and in the middle of the range of another PERFORM.
With NOTRICKLE, the Compiler can generate more efficient code for PERFORM statements.
TRICKLECHECK Compiler directive
Returns a run-time error message if trickling occurs in a program that you want to generate with NOTRICKLE.
>>-.---.-.----.--TRICKLECHECK-------------->< .-/-+ .-NO-+
None
Default: | NOTRICKLECHECK |
Phase: | Generate |
Environment: | 16-bit |
$SET: | Initial |
If your program is unstructured and you specified NOTRICKLE, undefined behavior results. If you suspect that a problem is being caused by trickling, you can locate any instance of trickling by specifying TRICKLECHECK.
When a program generated with TRICKLECHECK tries to trickle, a run-time system error 199 ("Operating System error code lies outside expected range") is returned. Information about the program-name, segment number and offset in the segment is displayed. This can be related to a source code location by referring to an assembler listing, produced by specifying ASMLIST or SOURCEASM, or a listing of the offset of each paragraph, produced by specifying PARAS.
ASMLIST Compiler directive
PARAS Compiler directive
SOURCEASM Compiler directive
TRICKLE Compiler directive
Specifies whether data being stored into a USAGE COMP, USAGE BINARY or USAGE COMP-4 item is to be truncated to the size given by the item's PICTURE clause or to the maximum size the item can hold.
>>-.---.-.-------TRUNC--"method"-.--------->< .-/-+ ..----.-TRUNC-----------+ .-NO-+
method |
See Comments. |
Default: | TRUNC"ANSI" |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Set to TRUNC"ANSI" immediately by NORM.
Set to NOTRUNC immediately by RM or RM"ANSI".
The possible values of this directive are:
TRUNC | Truncate in decimal to the number of digits given by the PICTURE clause, on all stores into COMP, BINARY and COMP-4 items. |
NOTRUNC | Truncate in binary to the capacity of the allocated storage, on all stores into COMP, BINARY and COMP-4 items. |
TRUNC"ANSI" | Truncate in decimal to the number of digits given by the PICTURE clause, on nonarithmetic stores into COMP, BINARY and COMP-4 items. On arithmetic statements that cause the size error condition and that have no ON SIZE ERROR phrase, the result is undefined. |
Specifies whether to truncate the names of copyfiles and ++INCLUDE files.
>>-.---.-.----TRUNCCOPY--"integer"-.------->< .-/-+ .-NO-TRUNCCOPY------------+
integer |
The number of characters to truncate the name of the copyfile to. Value between 8 and 255 inclusive. |
Default: | NOTRUNCCOPY |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
Makes the Compiler read directives from a file.
>>-.---.--USE--"filename"------------------>< .-/-+
filename |
A full file specification. |
Default: | Not set |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
USE is synonymous with DIRECTIVES. All rules that apply to DIRECTIVES also apply to USE.
DIRECTIVES Compiler directive
Sends messages from the Compiler to the screen.
>>-.---.-.----.--VERBOSE------------------->< .-/-+ .-NO-+
None
Default: | VERBOSE (on DOS, Windows and OS/2) NOVERBOSE (on UNIX) |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
VERBOSE sets CONFIRM immediately.
When VERBOSE is specified, messages concerning accepted directives and the size of code and data areas are displayed on the screen.
Specifies that words reserved in IBM VS COBOL II are to be treated as reserved words, and enables selected features for compatibility with a given level of that COBOL system.
>>-.---.-.-------VSC2--"integer"-.--------->< .-/-+ ..----.-VSC2------------+ .-NO-+
integer |
The level of IBM VS COBOL II to be compatible with. |
Default: | NOVSC2 |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
If integer > 1, VSC2"integer" sets DBSPACE
and DBCS"2" immediately.
If integer > 2, VSC2"integer" sets ANS85 at
end.
The possible values of integer are:
When VSC2 is specified without integer, VSC2"4" is assumed.
ANSI'85 status codes are used when VSC2"3" is selected.
Do not use the NOANS85 directive after VSC2"3"; it turns off some of the ANSI'85 behavior turned on by VSC2"3".
Specifies the lowest severity level of errors to report.
>>-.---.-.----.-WARNING--.-"integer"-.----->< .-/-+ | .-WARNINGS-+ | .-NO-.-WARNING--.-----------+ .-WARNINGS-+
integer |
1, 2 or 3. |
Default: | WARNING"1" |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The possible values of integer are:
1 | Only those of level U, S, or E. |
2 | Only those of level U, S, E, or W. |
3 | All levels, that is, levels U, S, E, W, and I. |
With NOWARNING only those of level U or S are reported.
FLAGAS Compiler directive
FLAGCD Compiler directive
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
>>-.---.-.----.--WB------------------------>< .-/-+ .-NO-+
None
Default: | NOWB |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
WB sets ANIM immediately.
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
>>-.---.-.----.--WB2----------------------->< .-/-+ .-NO-+
None
Default: | NOWB2 |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
This directive is reserved for internal use by this COBOL system. Because it might appear in the list of settings, it is included for completeness. It is not intended for your use, and its setting should not be changed.
>>-.---.-.----.--WB3----------------------->< .-/-+ .-NO-+
None
Default: | NOWB3 |
Phase: | Syntax check |
Environment: | All |
$SET: | No |
Makes the WRITE and REWRITE statements acquire a record lock when the program is locking multiple records in a shared data file in a multi-user environment.
>>-.---.-.----.-.-WRITELOCK--.------------->< .-/-+ .-NO-+ .-WRITE-LOCK-+
None
Default: | NOWRITELOCK |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
This directive is included for compatibility with earlier file-sharing products. When writing new programs you should use the relevant locking syntax rather than this directive.
Specifies that disk writes are not to be buffered.
>>-.---.-.----.-.-WRITETHROUGH-.----------->< .-/-+ .-NO-+ .-WRITETHRU----+
None
Default: | NOWRITETHROUGH |
Phase: | Syntax check |
Environment: | All |
$SET: | All |
Requires CALLFH to be set.
This directive is not available in this system without the appropriate add-on product from Micro Focus. Do not change its setting unless you have an appropriate COBOL system. products from Micro Focus.
To specify this directive on an individual file, use $SET statements in your source program, so that the directive is in effect only for that part of the source containing the file's SELECT statement.
When WRITETHROUGH is specified, the system does not buffer disk writes.
Using WRITETHROUGH helps improve the integrity of data files by ensuring that every write operation goes to the disk file straight away, reducing the possibility of losing data if your computer crashes. However, it also bypasses all cacheing and blocking methods, resulting in poorer performance.
CALLFH Compiler directive
Makes the Compiler compile your program for animation as if ANIM had been specified, and then invoke Animator.
>>-.---.-.----.--XNIM---------------------->< .-/-+ .-NO-+
None
Default: | NOXNIM |
Phase: | Syntax check |
Environment: | 16-bit and 32-bit on OS/2 and Windows NT |
$SET: | No |
You can use Animator directives with XNIM.
With XNIM, no object file is produced by default.
When it finishes, Animator does not save the files required for a subsequent animation.
If the source file contains more than one nonnested program, it is the last program in the source file that is animated.
Animator Directives
Specifies that words reserved under the X/Open definition of COBOL are to be treated as reserved words.
>>-.---.-.-------XOPEN--"level"-.---------->< .-/-+ ..----.-XOPEN----------+ .-NO-+
level |
Must be 3 or 4. The level of the X/Open definition COBOL is to be compatible with. |
Default: | NOXOPEN |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
XOPEN sets RTNCODE-SIZE"4" immediately.
The possible values of level are:
3 | Compatible with X/Open Portability Guide 1988 (XPG-3) |
4 | Compatible with X/Open CAE Specification (XPG-4) |
Specifying XOPEN with no parameter is the same as specifying XOPEN"4".
XPG-4 specifies options for several environments. If available, the options are as follows:
DBCS Compiler directive
NLS Compiler directive
RTNCODE-SIZE Compiler directive
Makes the Compiler produce a cross-reference listing.
>>-.---.-.----.--XREF---------------------->< .-/-+ .-NO-+
None
Default: | NOXREF |
Phase: | Syntax check |
Environment: | All |
$SET: | Initial |
XREF sets RESEQ immediately.
Set to NOXREF at end by NOLIST and RNIM.
On UNIX, to produce the message "*End of cross reference listing"
in the cross reference listing you must also specify the verbose compiler
option, -v.
This directive has no effect if the LIST directive is not specified.
To produce the cross-reference listing the Compiler needs extra work space on the disk. The space needed depends on the number of data items and procedure-names and the number of times they are referenced.
When the XREF directive is specified, extra information is added to the end of the .lst file produced:
The following is an extract from a .lst file for a simple program:
1 working-storage section. 2 01 a pic 9(2). 3 4 procedure division. 5 main section. 6 move 1 to a 7 if a = 1 display "HELLO" end-if 8 stop run. ... * A Numeric DISPLAY * 2# 6* 7? (X 3) * * 1 data-names * * MAIN Section * 5# (X 1) * * * 1 procedure-names * End of cross reference listing
The cross-referencing information shows that there is one data item, a, of type numeric display, which is defined on line 2, updated on line 6, and tested on line 7. The (X 3) at the end of the line refers to the number of times the data item appears in the cross-reference listing. The procedure-name main also appears in the listing, as a section which is referenced only once.
RESEQ Compiler directive
Changes the way that class tests involving zero-length items are carried out.
>>-.---.-.----.--ZEROLENGTHFALSE----------->< .-/-+ .-NO-+
None
Default: | NOZEROLENGTHFALSE |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
When ZEROLENGTHFALSE is set, all comparisons between zero-length group items, and between zero-length items and figurative constants, return false; when it is not set, they all return true.
For conformance to ANSI and SAA you must set ZEROLENGTHFALSE.
Causes leading zeros to appear in the sequence numbers in columns 1 through 6.
>>-.---.-.----.--ZEROSEQ------------------->< .-/-+ .-NO-+
None
Default: | NOZEROSEQ |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
NOZEROSEQ suppresses these leading zeros.
Affects the operation of comparisons between integer numeric data items of USAGE DISPLAY and alphanumeric literals or figurative constants.
>>-.---.-.----.--ZWB----------------------->< .-/-+ .-NO-+
None
Default: | NOZWB |
Phase: | Syntax check |
Environment: | All |
$SET: | Any |
The ZWB directive affects the range of comparisons that HOST-NUMCOMPARE applies to. With ZWB on, only unsigned comparisons are affected. Otherwise, all comparisons are affected.
HOST-NUMCOMPARE Compiler directive
Copyright © 1998 Micro Focus Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.
Using the Compiler | Linking |