PreviousUsing the Compiler LinkingNext

Chapter 6: Directives for Compiler

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.

6.1 Directives by Category

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.

6.1.1 Enabling Language Features

These directives change which language features your Compiler accepts.

6.1.1.1 Add Features

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

6.1.1.2 Dialect

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

6.1.1.3 Mainframe Compatibility

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

6.1.1.4 Reserved Word Control

ADDRSV Add reserved word
ADDSYN Add synonym
MAKESYN Make synonymous
OVERRIDE Change meaning
REMOVE De-reserve

6.1.1.5 Speed

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

6.1.2 Run-time Behavior

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

6.1.2.1 Compatibility with Other COBOL Dialects

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

6.1.2.2 Compatibility with Older Micro Focus Products

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

6.1.2.3 Mainframe Compatibility

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

6.1.2.4 Speed or Size

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

6.1.3 Compiler Control

6.1.3.1 Compile/Link Files

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

6.1.3.2 Directives Control

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

6.1.3.3 Error & Flag Messages

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

6.1.3.4 Listing

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
PRINT 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

6.1.3.5 Screen

BELL Beep when stop
CONFIRM Display directives
ECHO Display errors
ECHOALL Display full listing
SUPFF No page-headings

6.1.4 Compiling for Debugging

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

6.1.4.1 Add-on Products

ANALYZE * For Analyze
BROWSE * Create .sbr file
CSI * For CSI
GANIM For Xilerator
GNTANLZ * .gnt code analyzer
STRUCT * For Structure Animator

6.1.5 Format of Your Data Files

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

6.1.6 Object Code, Size and Optimization

These directives change the object code produced without changing the logic of your program.

6.1.6.1 External Handlers

CALLFH External file handler
CALLSORT External sort handler
CALLADIS External ACCEPT/DISPLAY
CALLMAP External CALL handler
CALLMCS External MCS handler

6.1.6.2 File Handling

WRITETHROUGH Unbuffered writes

6.1.6.3 Interprogram Communication

LITLINK Literals public
LITVAL-SIZE BY VALUE size
REGPARM Parameter passing
RTNCODE-SIZE RETURN-CODE size
SEGCROSS Parameters on segments
SMALLDD Parameters in segments

6.1.6.4 Object File Format

OMF .obj or .gnt
PUBLICENTRY Public entry points
REALOVL Overlaying from disk

6.1.6.5 Size and Speed

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

6.1.7 Reserved Directives

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

6.1.7.1 Add-on Products

WB * Interface to other products

6.1.7.2 Internal or Future Use Only

ENSUITE *
FASTSORT
FILECASE
LOCALCOUNT
NESTLOCALSTORAGE
OLDFILEIO
WB2 *
WB3 *

6.2 Key

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:

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.

Parameters:

Lists and describes valid parameter(s), if any, for the directive.

Properties:
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:
All Available for use on all environments.
Any combination of DOS, Windows, OS/2 and/or UNIX Available for use on the specified operating system(s).
16-bit The 16-bit Generator and run-time system for operating systems using 16-bit segmentedaddressing. These include Micro Focus Object COBOL for DOS, Windows and OS/2 and Microsoft COBOL V3.0 and later.
32-bit The 32-bit Generator and run-time system for operating systems using 32-bit flat addressing. These include Micro Focus Object COBOL for UNIX and Micro Focus Object COBOL for Windows NT and OS/2 V2.

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.
Dependencies:

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.
Comments:

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.

6.3 List of Directives


 01SHUFFLE

Changes the addresses of level-01 items in the Working-Storage Section so that they do not cross 64K segment boundaries.

Syntax:
 >>-.---.-.----.--01SHUFFLE-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NO01SHUFFLE
Phase: Syntax check
Environment: All
$SET: Initial

Dependencies:

Set to NO01SHUFFLE at end by NESTCALL.

Comments:

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.

See also:

REF Compiler directive
SHOWSHUFFLE Compiler directive


 64KPARA

Makes the Compiler produce segment-breaking information more often than at each paragraph, for programs containing paragraphs that produce more than 64K of code.

Syntax:
 >>-.---.-.----.--64KPARA-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NO64KPARA
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

Must set SEGSIZE"integer" so integer is nonzero.

Comments:

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.

See also:

64KSECT Compiler directive
SEGSIZE Compiler directive


 64KSECT

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.

Syntax:
 >>-.---.-.----.--64KSECT-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NO64KSECT
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

Must set SEGSIZE"integer" so integer is nonzero.

Comments:

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.

See also:

64KPARA Compiler directive
SEGSIZE Compiler directive


ACCEPTREFRESH

Specifies whether the data areas associated with Screen Section data are updated from their corresponding Working-Storage Section items before an ACCEPT statement.

Syntax:
 >>-.---.-.----.--ACCEPTREFRESH-------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOACCEPTREFRESH
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to ACCEPTREFRESH immediately by MS, IBM-MS or PC1.

Comments:

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.


ADDRSV

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.

Syntax:
                   +----------™ 
                   v          | 
 >>--.---.--ADDRSV--"rsv-word"--------------><  
     .-/-+
Parameters:

rsv-word A reserved word in some dialect of COBOL, but not necessarily in a dialect specified for this compilation

Properties:

Default: No additional reserved words are created.
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

SETTING Compiler directive


ADDSYN

Defines a user-defined reserved word to be synonymous with an existing reserved word.

Syntax:

On DOS, Windows and OS/2:

 >>-.---.--ADDSYN--"rsv-word" = "user-word"->< 
    .-/-+

On UNIX:

 >>--ADDSYN-"(rsv-word) == (user-word)"-----'"
Parameters:

rsv-word Existing reserved word.
user-word Any COBOL word not the same as an existing reserved word.

Properties:

Default: No reserved word synonyms are created.
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

The equals signs (==) must be surrounded by spaces.

This directive does not appear in the list created with the SETTING directive.


ADV

Causes a control character to be inserted at the start of each line in a print file. This is for compatibility with mainframe operation.

Syntax:
 >>-.---.-.----.--ADV-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOADV
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

ADV has no effect unless FILETYPE"11" is set.

See also:

FILETYPE Compiler directive


ALIAS

Prevents the Compiler from performing certain optimizations that are unsafe when a program uses aliasing.

Syntax:
 >>-.---.-.----.--ALIAS---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOALIAS
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


ALIGN

Specifies the memory boundaries on which data items of level-01 or level-77 are aligned.

Syntax:
 >>-.---.--ALIGN--"integer"-----------------><  
    .-/-+
Parameters:

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.

Properties:

Default: ALIGN"8"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to ALIGN"8" immediately by IBMCOMP or NORM.
Set to ALIGN"2" immediately by RM or RM"ANSI".

Comments:

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.


ALPHASTART

Sets the number from which the Compiler counts positions in the collating sequence when compiling the ALPHABET clause.

Syntax:
 >>-.---.--ALPHASTART--"integer"------------><  
    .-/-+
Parameters:

integer The number to be used.

Properties:

Default: ALPHASTART"1"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

For ANSI conformance use ALPHASTART"1".

Example:

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".


ALTER

Allows ALTER statements in your program.

Syntax:
 >>-.---.-.----.--ALTER---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: ALTER
Phase: Both
Environment: 16-bit
$SET: Initial

Dependencies:

If ASSUME is set, set to NOALTER at end by NOTRICKLE during the generate phase.

Comments:

If you know there are no ALTER statements in your program, specifying NOALTER enables the Compiler to produce slightly more efficient code.


AMODE

Provides compatibility with mainframe-style pointers.

Syntax:
>>--+---+---+----+--AMODE----"format"--------><
    |-/-|   |-NO-|
Parameters:

format Specifies the storage format of pointers
Properties:
Default: NOAMODE
Phase: Syntax check
Environment: 16-bit, and 32-bit systems on Windows NT and OS/2
$SET: Initial
Comments:

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.


ANALYZE

Makes the Compiler produce extra information so that you can use the Analyzer feature of Advanced Animator and Animator V2.

Syntax:
 >>-.---.-.----.--ANALYZE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOANALYZE
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

ANALYZE sets ANIM immediately.

Comments:

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.


ANIM

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.

Syntax:
 >>-.---.-.----.--ANIM----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOANIM
Phase: Both
Environment: All
$SET: Initial
Dependencies:

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.

Comments:

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.

See also:

COBIDY Compiler directive
DEFFILE Compiler directive
GANIM Compiler directive
LINKLIB Compiler directive
OPT Compiler directive


ANS85

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.

Syntax:
 >>-.---.-.-------ANS85--"SYNTAX"--.--------><  
    .-/-+ ..----.-ANS85------------+ 
           .-NO-+
Parameters:

SYNTAX Makes the directive affect syntax only and not behavior.

Properties:

Default: ANS85
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to ANS85 at end by VSC2 or SAA.

Comments:

This directive causes the following behavior changes:


APOST

Makes the Compiler interpret the figurative constant QUOTE as the single-quote character (').

Syntax:
 >>-------APOST-----------------------------><
Parameters:

None

Properties:

Default: QUOTE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

The opposite of this directive is the directive QUOTE which causes the double-quote character (") to be used.

See also:

QUOTE Compiler directive


AREACHECK

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.

Syntax:
 >>-.---.-.----.--AREACHECK-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOAREACHECK
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


ARITHMETIC

Specifies how arithmetic expressions are to be evaluated.

Syntax:
 >>-.---.--ARITHMETIC--"arith-type"---------><  
    .-/-+
Parameters:

arith-type The behavior to adopt.

Properties:

Default: ARITHMETIC"MF"
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.


ASM

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.

Syntax:

On the 16-bit COBOL system:

 >>-.---.-.----.--ASM-----------------------><  
    .-/-+ .-NO-+

On 32-bit COBOL systems for OS/2 and Windows:

 >>-.---.-.-------ASM-.-"destination"..-----><  
    .-/-+ |           .-()-----------+| 
          ..----.-ASM-----------------+ 
           .-NO-+
Parameters:

destination A full file specification or a device-name.

Properties:

Default: NOASM
Phase: Generate
Environment: 16-bit, and 32-bit for OS/2 and Windows
$SET: Initial
Dependencies:

On the 16-bit COBOL system:

NOASM sets NOMASM at end.
Set to ASM immediately by ASMLIST.

Comments:

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.

See also:

ASMLIST Compiler directive


ASMLIST

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.

Syntax:

On the 16-bit COBOL system:

 >>-.---.-.-------ASMLIST-.-"destination"..-><  
    .-/-+ |               .-()-----------+| 
          ..----.-ASMLIST-----------------+ 
           .-NO-+

On 32-bit COBOL systems:

 >>-.---.-.----.--ASMLIST-------------------><  
    .-/-+ .-NO-+
Parameters:

destination A full file specification or a device-name.

Properties:

Default: NOASMLIST
Phase: Generate
Environment: All
$SET: Initial
Dependencies:

On the 16-bit COBOL system:

ASMLIST sets ASM immediately.
NOASMLIST sets NOREF at end.

Comments:

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.

See also:

ASM Compiler directive
MASM Compiler directive
PARAS Compiler directive
SOURCEASM Compiler directive for details of "BADCODE".


ASSIGN

Specifies how to assign a filename when neither EXTERNAL nor DYNAMIC appear in the SELECT statement.

Syntax:
 >>-.---.--ASSIGN--"assign-type"------------><  
    .-/-+
Parameters:

assign-type EXTERNAL or DYNAMIC. Defines the method.

Properties:

Default: ASSIGN"DYNAMIC"
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


ASSIGN-PRINTER

Specifies how to assign the output from an ASSIGN TO PRINTER clause when the clause does not specify a filename.

Syntax:
 >>-.---.-.-----ASSIGN-PRINTER.-"filename"-..-><  
    .-/-+ |                   .-()---------+| 
          .-NO--ASSIGN-PRINTER--------------+
Parameters:

filename The file to be associated with the ASSIGN TO PRINTER clause.

Properties:

Default: NOASSIGN-PRINTER
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

PRINT-EXT Compiler directive


ASSUME

Controls the interaction between certain Generator directives.

Syntax:
 >>-.---.-.----.--ASSUME--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: ASSUME
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

If ASSUME then the following dependencies apply:
NOTRICKLE sets NOALTER at end.
REGPARM"OUT" sets LITLINK at end.
REGPARM"IN" sets NOFASTLINK at end.


AUTOLOCK

Makes the default locking AUTOMATIC rather than EXCLUSIVE for files opened I-O or EXTEND in a multi-user environment.

Syntax:
 >>-.---.-.----.--AUTOLOCK------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOAUTOLOCK
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


BADSIGNS

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.

Syntax:
 >>-.---.-.----.--BADSIGNS------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBADSIGNS
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


BELL

Makes the bell sound at points such as when compilation stops, either because of an error or because it has finished.

Syntax:
 >>-.---.-.----.--BELL----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBELL
Phase: Synatx check
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: Initial


BOUND

Specifies that the subscript or index value is to be checked to ensure it is within the limits defined by the OCCURS clause.

Syntax:
 >>-.---.-.----.--BOUND---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: BOUND
Phase: Both
Environment: All
$SET: Initial
Dependencies:

BOUND sets NOTABLESEGCROSS and NOBOUNDOPT at end.

Comments:

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.


BOUNDOPT

Optimizes the code generated for USAGE DISPLAY subscripts.

Syntax:
 >>-.---.-.----.--BOUNDOPT------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: BOUNDOPT
Phase: Generate
Environment: All
$SET: Initial (on DOS, Windows and OS/2) No (on UNIX)
Dependencies:

Set to NOBOUNDOPT at end by BOUND or TABLESEGCROSS.

Comments:

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.

Example:

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.


BRIEF

Makes the Compiler produce only error numbers and no message texts.

Syntax:
 >>-.---.-.----.--BRIEF---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBRIEF
Phase: Syntax check
Environment: All
$SET: Any


BROWSE

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.

Syntax:
 >>-.---.-.----.--BROWSE--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBROWSE
Phase: Syntax check
Environment: DOS, Windows and OS/2
$SET: Any
Dependencies:

BROWSE sets ANIM immediately.


BWZSTAR

Determines whether the BLANK WHEN ZERO clause is allowed in the Data Division for those fields defined with the "*" PICTURE symbol.

Syntax:
 >>-.---.-.----.--BWZSTAR-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBWZSTAR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

EARLY-RELEASE Compiler directive


BYTE-MODE-MOVE

Controls the granule size for moves between overlapping data items.

Syntax:
 >>-.---.-.----.--BYTE-MODE-MOVE------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOBYTE-MODE-MOVE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


CALLADIS

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.

Syntax:
 >>-.---.-.-------CALLADIS--"handler-name"-.><  
    .-/-+ ..----.-CALLADIS-----------------+ 
           .-NO-+
Parameters:

handler-name Root-name of a program to be called to act as the handler.

Properties:

Default: NOCALLADIS
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

EARLY-RELEASE Compiler directive


CALLFH

Makes the Compiler generate direct calls for all file I/O operations, using the Callable File Handler interface.

Syntax:
 >>-.---.-.-------CALLFH--"handler-name"-.--><  
    .-/-+ ..----.-CALLFH-----------------+ 
           .-NO-+
Parameters:

handler-name Root-name of a program to be called to act as the file handler.

Properties:

Default: NOCALLFH (on the 16-bit COBOL system) CALLFH"EXTFH" (on 32-bit COBOL systems)
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


CALLMAP

Causes all call operations to be converted to calls to the specified call handler program.

Syntax:
 >>-.---.-.----.--CALLMAP--"handler-name"---><  
    .-/-+ .-NO-+
Parameters:

handler-name Root-name of a program to be called to act as the handler.

Properties:

Default: NOCALLMAP
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

EARLY-RELEASE Compiler directive


CALLMCS

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.

Syntax:
 >>-.---.-.-------CALLMCS--"mcs-name"-.-----><  
    .-/-+ ..----.-CALLMCS-------------+ 
           .-NO-+
Parameters:

mcs-name Root-name of a program to be called to process message control system (mcs) operations.

Properties:

Default: NOCALLMCS
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

If handler-name is not specified, EXTMCS is assumed.


CALLSORT

Defines the program to be called to handle all SORT and MERGE operations.

Syntax:
>>-.---.-.-------CALLSORT--"sort-name"-.---><  
   .-/-+ ..----.-CALLSORT--------------+ 
          .-NO-+
Parameters:

sort-name Root-name of a program to be called to process sorts and merges.

Properties:

Default: CALLSORT"_SORT" (on the 16-bit COBOL system)
CALLSORT"EXTSM" (on 32-bit COBOL systems)
Phase: Syntax check
Environment: All
$SET: Initial


CANCELLBR

Makes the Compiler close an .lbr file used as a library in a COPY statement once that copy operation is complete.

Syntax:
 >>-.---.-.----.--CANCELLBR-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: CANCELLBR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


CASE

Prevents external symbols (such as Program-ID and names of called programs) being converted to upper case.

Syntax:
 >>-.---.-.----.--CASE----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCASE
Phase: Generate
Environment: All
$SET: Any

Comments:

This is useful if you are calling a program written in C, where names are case dependent.


CHANGE-MESSAGE

Changes the severity of errors/messages. Messages can also be supressed or returned to their original severity.

Syntax:
                               +-------------™ 
                               v             | 
 >>-.---.-.-----CHANGE-MESSAGE--"error svrty"-.->< 
    .-/-+ .-NO--CHANGE-MESSAGE----------------+
Parameters:

error Number of message to be changed or ALL meaning all messages.
svrty New severity :

S Serious
E Error
W Warning
I Informational
N Do not produce this message
R Reset to normal severity

Properties:

Default: NOCHANGE-MESSAGE
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

CHANGE-MESSAGE overrides the general settings of directives such as FLAGAS.

Comments:

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.

Examples:
CHANGE-MESSAGE"ALL R" 
CHANGEMESSAGE"10 S 135 E 100 N"
See also:

FLAGAS Compiler directive
FLAGCD Compiler directive
HIDE-MESSAGE Compiler directive


CHARSET

Defines the character set of the environment.

Syntax:
 >>-.---.--CHARSET--"char-set"--------------><  
    .-/-+
Parameters:

char-set ASCII or EBCDIC.

Properties:

Default: CHARSET"ASCII"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

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.

Comments:

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.


CHECKDIV

Controls the behavior of your program if it tries to divide by zero in a statement that has no ON SIZE ERROR phrase.

Syntax:
 >>-.---.-.-------CHECKDIV--"dialect"-.-----><  
    .-/-+ ..----.-CHECKDIV------------+ 
           .-NO-+
Parameters:

dialect Must be ANSI, OSVS, VSC2, or COBOL370.

Properties:

Default: CHECKDIV"ANSI"
Phase: Both (16-bit), Syntax check (32-bit)
Environment: All
$SET: Initial
Comments:

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.

See also:

O RTS switch


CHECKNUM

Checks whether numeric fields contain valid data before performing operations on them.

Syntax:
 >>-.---.-.----.--CHECKNUM------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCHECKNUM
Phase: Generate
Environment: All
$SET: Initial
Comments:

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.

See also:

F RTS switch


CHECKSTACK

Adds code to all calls to check the stack and report if an incorrect number of parameters has been passed.

Syntax:
 >>-.---.-.----.--CHECKSTACK----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCHECKSTACK
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


CHIP

Tells the Compiler that a specific microprocessor architecture is in use.

Syntax:
 >>-.---.-.-----CHIP--"integer"-.-----------><  
    .-/-+ .-NO--CHIP------------+
Parameters:

integer Must be 16.

Properties:

Default: CHIP"16"
Phase: Syntax check
Environment: 16-bit
$SET: Initial

Comments:

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.


CICS

Enables the use of CICS by updating BLL cells.

Syntax:
 >>-.---.-.----.--CICS----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCICS
Phase: Syntax check
Environment: All
$SET: No
Comments:

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:
1 There is no DFHCOMMAREA
>1 There is a DFHCOMMAREA.

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.


CICS-CPY

Inserts the statement COPY "CICS.CPY" provided the CICS directive is specified.

Syntax:
 >>-.---.-.----.--CICS-CPY------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: CICS-CPY
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.

See also:

CICS Compiler directive


CICSOPTIMIZE

Optimizes the handling of CICS BLL cells.

Syntax:
 >>-.---.-.----.-.-CICSOPT------.-----------><  
    .-/-+ .-NO-+ .-CICSOPTIMISE-+
                 .-CICSOPTIMIZE-+
Parameters:

None

Properties:

Default: NOCICSOPTIMIZE
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.


CMPR2

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.

Syntax:
 >>-.---.-.----.--CMPR2---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCMPR2
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Requires VSC2"3", VSC2"4" or COBOL370 flagging to be selected.

Comments:

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.

See also:

FLAGMIG Compiler directive


COBFSTATCONV

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.

Syntax:
 >>-.---.-.----.--COBFSTATCONV--------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCOBFSTATCONV
Phase: Syntax check
Environment: All
$SET: Initial


COBIDY

Specifies the path where the Animator information file (.idy file) and COBOL Source Information file (.csi) are to be written.

Syntax:
 >>-.---.-.-------COBIDY--"pathname"-.-----><  
    .-/-+ ..----.-COBIDY--------------+ 
           .-NO-+
Parameters:

pathname Path specification.

Properties:

Default: NOCOBIDY
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.

See also:

CSI Compiler directive


COBOL370

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.

Syntax:
 >>-.---.-.-------COBOL370--"integer"-.-----><  
    .-/-+ ..----.-COBOL370------------+ 
           .-NO-+
Parameters:

integer 1 or 2. The level of IBM COBOL/370 to be compatible with.

Properties:

Default: NOCOBOL370
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

COBOL370 sets DBSPACE and DBCS"3" immediately.

Comments:

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".


COBOLDIR

Specifies whether the Compiler should process the directives in a cobol.dir file or ignore it.

Syntax:
 >>-.---.-.----.--COBOLDIR------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: COBOLDIR
Phase: Syntax check
Environment: All
$SET: No


COMP

Makes the Compiler produce very compact and efficient code for some statements involving COMP data items, by treating COMP items as COMP-X.

Syntax:
 >>-.---.-.----.--COMP----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCOMP
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


COMP-5

Specifies whether the sign is to be dropped when a value is stored in an unsigned COMP-5 data item.

Syntax:
 >>-.---.--COMP-5--"integer"----------------><  
    .-/-+
Parameters:

integer Must be 1 or 2.

Properties:

Default: COMP-5"2"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


COMP-6

Specifies whether COMP-6 data is to be held in binary or packed decimal format.

Syntax:
 >>-.---.--COMP-6--"integer"----------------><  
    .-/-+
Parameters:

integer Must be 1 or 2.

Properties:

Default: COMP-6"2"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

RM or MF must be set.
RM and RM"ANSI" set COMP-6"1".
NORM sets COMP-6"2".

Comments:

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".

Example:

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"


COMS85

Allows your program to contain syntax introduced in the Communications Module of the ANSI'85 COBOL Standard.

Syntax:
 >>-.---.-.----.--COMS85--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCOMS85
Phase: Syntax check
Environment: All
$SET: Initial


CONFIRM

Makes the Compiler echo all subsequent directives to the screen.

Syntax:
 >>-.---.-.----.--CONFIRM-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCONFIRM
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: No
Dependencies:

Set to CONFIRM immediately by VERBOSE.


CONSTANT

Declares a constant for use in the program.

Syntax:
 >>-.---.-CONSTANT-const-name-.-(numeric-lit)--.-><  
    .-/-+                     .-"alphanum-lit"-+
Parameters:

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.

Properties:

Default: Not set
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


CONVERTPTR

Specifies whether POINTER data items can be redefined as PIC 9(9) COMP data items.

Syntax:
 >>-.---.-.----.--CONVERTPTR----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCONVERTPTR
Phase: Syntax check
Environment: 16-bit shared run-time system, 32-bit
$SET: Initial
Comments:

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.


CONVERTRET

Causes COMP and COMP-X items specified in CALL ... RETURNING and EXIT PROGRAM ... RETURNING phrases to be converted to COMP-5.

Syntax:
 >>-.---.-.----.--CONVERTRET----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCONVERTRET
Phase: Syntax check
Environment: All
$SET: Initial


CONVSPACE

Converts double-byte space characters in COBOL source files to single-byte spaces on input.

Syntax:
 >>-.---.-.----.--CONVSPACE-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: CONVSPACE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

CONVSPACE only has an effect when the DBSPACE Compiler directive is off.


COPYEXT

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.

Syntax:
                              +-------------. 
                              v             | 
 >>-.---.--COPYEXT-"extension-.-------------.-"--><  
    .-/-+                     .-,-extension-+
Parameters:

extension A filename extension.

Properties:

Default: COPYEXT"cbl,cpy" (on DOS, Windows and OS/2) COPYEXT",cbl,cpy" (on UNIX)
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

OSEXT Compiler directive


COPYLBR

Makes the Compiler treat the library specified in a COPY statement as an .lbr file.

Syntax:
 >>-.---.-.----.--COPYLBR-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCOPYLBR
Phase: Syntax check
Environment: All
$SET: No
Comments:

With NOCOPYLBR, the Compiler assumes that the library is a path-name.


COPYLIST

Makes the Compiler list the contents of files named in COPY statements.

Syntax:
 >>-.---.-.----.--COPYLIST-.-----------.----><  
    .-/-+ .-NO-+           .-"integer"-+
Parameters:

integer Must be 0 or between 50 and 99.

Properties:

Default: COPYLIST
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


CSI

Makes the Compiler produce extra information so that you can use CSI.

Syntax:
 >>-.---.-.----.--CSI-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOCSI
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

CSI sets ANIM at end.

Comments:

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.

See also:

COBIDY Compiler directive


CURRENCY-SIGN

Specifies the currency sign to be recognized in the PICTURE clause.

Syntax:
 >>-.---.--CURRENCY-SIGN--"integer"---------><  
    .-/-+
Parameters:

integer ASCII code of the character, in decimal.

Properties:

Default: CURRENCY-SIGN"36" (that is, "$")
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

You cannot specify a valid PICTURE clause symbol. See your Language Reference for a list of these.


CURRENT-DATE

Specifies the format of the date stored in the CURRENT-DATE special register.

Syntax:
 >>-.---.--CURRENT-DATE--"date-format"------><  
    .-/-+
Parameters:

date-format Either DDMMYY or MMDDYY.

Properties:

Default: CURRENT-DATE"MMDDYY"
Phase: Syntax check
Environment: All
$SET: Any
Comments:

The DDMMYY parameter causes CURRENT-DATE to be stored in European format. The parameter can be specified in either upper case or lower case.


DATACOMPRESS

Specifies the type of data compression to be done on sequential and indexed files.

Syntax:
 >>-.---.-.-----DATACOMPRESS--"integer"-.---><  
    .-/-+ .-NO--DATACOMPRESS------------+
Parameters:

integer Must be one of:

0 Equivalent to NODATACOMPRESS
1 Specifies run-length encoding.
3 Specifies run-length encoding for double-byte (DBCS) characters

Properties:

Default: NODATACOMPRESS
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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".

See also:

CALLFH Compiler directive


DATALIT

Makes the Compiler put literals in the DATA segment of the program rather than the CODE segment.

Syntax:
 >>-.---.-.----.--DATALIT-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: DATALIT
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

Set to NODATALIT at end by OPT"0".

Comments:

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.


DATE

Puts the date in the Date-Compiled paragraph and at the top of each page of the listing.

Syntax:
 >>-.---.-.-------DATE--"string"-.----------><  
    .-/-+ ..----.-DATE-----------+ 
           .-NO-+
Parameters:

string An alphanumeric literal.

Properties:

Default: DATE
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.


DBCHECK

Makes the Compiler check that any Double-byte Character Set (DBCS) literals only contain valid 16-bit DBCS characters.

Syntax:
 >>-.---.-.----.--DBCHECK-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NODBCHECK
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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).


DBCS

Makes the Compiler accept characters of the Double-byte Character Set (DBCS) for use in ideographic languages such as Japanese, Chinese and Korean.

Syntax:
 >>-.---.-.-------DBCS--"integer"-.---------><  
    .-/-+ ..----.-DBCS------------+ 
           .-NO-+
Parameters:

integer Must be 1, 2 or 3. Indicates which compatibility is required.

Properties:

Default: NODBCS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

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.

Comments:

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".


DBCSSOSI

Defines the two characters used as the shift-out and shift-in delimiters in DBCS literals.

Syntax:
 >>-.---.-.----DBCSSOSI-"integer-1"-"integer-2"-.><  
    .-/-+ .-NO-DBCSSOSI-------------------------+
Parameters:

integer-1 ASCII code of the shift-out character, in decimal.
integer-2 ASCII code of the shift-in character, in decimal.

Properties:

Default: NODBCSSOSI
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


DBSPACE

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.

Syntax:
 >>-.---.-.----.--DBSPACE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

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
Dependencies:

DBSPACE set immediately by COBOL370, NCHAR"2", SAA, VSC2"2" or VSC2"3".
DBSPACE set immediately by MF"integer" where integer > 7

Comments:

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").


DE-EDIT

Specifies the behavior of de-editing moves from numeric-edited items to other numeric-edited items or to numeric items.

Syntax:
 >>-.---.--DE-EDIT--"integer"---------------><  
    .-/-+
Parameters:

integer Must be 1 or 2. Indicates which compatibility required.

Properties:

Default: DE-EDIT"2"
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:
 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.


DEFAULTBYTE

Initializes each otherwise undefined byte of the Data Division to the character given.

Syntax:
 >>-.---.--DEFAULTBYTE--"integer"-----------><  
    .-/-+
Parameters:

integer ASCII code of the character, in decimal.

Properties:

Default: DEFAULTBYTE"32"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to DEFAULTBYTE"32" immediately by CHARSET"ASCII".
Set to DEFAULTBYTE"0" immediately by CHARSET"EBCDIC", MS, IBM-MS or PC1.

Comments:

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".


DEFAULTCALLS

Specifies the default calling convention.

Syntax:
 >>-.---.-.-------DEFAULTCALLS--"integer"-.-><  
    .-/-+ ..----.-DEFAULTCALLS------------+ 
           .-NO-+
Parameters:

integer Default CALL convention

Properties:

Default: NODEFAULTCALLS
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


DEFFILE

Makes the Compiler produce a module definition file (.def file), for use by the Linker.

Syntax:
 >>-.---.-.-------DEFFILE--"filename"--.----><  
    .-/-+ ..----.-DEFFILE--------------+ 
           .-NO-+
Parameters:

filename A full file specification.

Properties:

Default: NODEFFILE
Phase: Generate
Environment: 16-bit on Windows and OS/2 32-bit on Windows NT and OS/2 V2
$SET: Any
Dependencies:

If OMF"GNT", DEFFILE sets OMF"OBJ" at end.

Comments:

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:

Example:
DEFFILE"*.dfa" DEFFILETYPE"OS2" DLL

creates a file called obj-name.dfa containing the lines:

LIBRARY INITINSTANCE 
PROTMODE 
DATA NONSHARED 
EXPORTS source-name @1
See also:

DEFFILETYPE Compiler directive
DLL Compiler directive


DEFFILETYPE

Specifies the type of module definition file (.def file) to be produced when the DEFFILE directive is specified.

Syntax:
 >>-.---.--DEFFILETYPE--"type"--------------><  
    .-/-+
Parameters:

type Must be WIN, NT or OS2.

Properties:

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

Comments:

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.

See also:

DEFFILE Compiler directive
DLL Compiler directive


DETECT-LOCK

Makes READ statements detect when a record is locked by another program.

Syntax:
 >>-.---.-.----.--DETECT-LOCK---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: DETECT-LOCK
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


DG

Changes the behavior of certain features to be compatible with Data General Interactive COBOL rev 1.30.

Syntax:
 >>-.---.-.----.--DG------------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NODG
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

See your Language Reference for details of syntax support for Data General Interactive COBOL rev 1.30.


DIR

Makes the Compiler read directives from a file.

Syntax:
 >>-.---.-.-DIRECTIVES-.-"filename"---------><  
    .-/-+ .-DIR--------+
Parameters:

filename A full file specification.

Properties:

Default: None
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: Any
Comments:

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.

See also:

USE Compiler directive


DIRECTIVES-IN-COMMENTS

Makes the Compiler process $SET statements held in comment lines.

Syntax:
 >>-.---.-.----.--DIRECTIVES-IN-COMMENTS----><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NODIRECTIVES-IN-COMMENTS
Phase: Syntax Check
Environment: All
$SET: Any
Comments:

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).


DLL

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.

Syntax:
 >>-.---.-.----.--DLL-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: DLL
Phase: Generate
Environment: 16-bit on Windows and OS/2
$SET: Initial

Comments:

This directive only affects .obj files.

Example:
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.

See also:

DEFFILE Compiler directive
DEFFILETYPE Compiler directive


DOSVS

Specifies that words reserved in IBM DOS/VS COBOL are to be treated as reserved words.

Syntax:
 >>-.---.-.----.--DOSVS---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NODOSVS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to NODOSVS immediately by OSVS.

See also:

OSVS Compiler directive


DYNAM

Specifies that CANCEL statements are not to be ignored.

Syntax:
 >>-.---.-.----.--DYNAM---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: DYNAM
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

With NODYNAM, CANCEL statements in the program are ignored.


EANIM

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.

Syntax:
 >>-.---.-.-------EANIM--"integer"----.-----><  
    .-/-+ ..----.-EANIM---------------+ 
           .-NO-+
Parameters:

integer Indicates the type of debugger support to enable.

Properties:

Default: NOEANIM
Phase: Both
Environment: 16-bit
$SET: No

Dependencies:

If OMF"GNT", EANIM sets OMF"OBJ" at end.
If OPT"0", EANIM sets OPT"1" at end.
EANIM sets ANIM immediately.

Comments:

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.


EARLY-RELEASE

Enables support for Early User Syntax.

Syntax:
 >>-.---.-.----.--EARLY-RELEASE-------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOEARLY-RELEASE
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

If NOEARLY-RELEASE and MF are set, MF defaults to MF"10".
If EARLY-RELEASE and MF are set, MF defaults to MF"11".

Comments:

You must specify this directive if you want to use any of the early-release directives.


ECHO

Makes the Compiler display error lines and error messages on the screen.

Syntax:
 >>-.---.-.----.--ECHO----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: ECHO
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

Set to NOECHO immediately by ECHOALL.

Comments:

For each error, the source line is displayed together with an error number and (unless BRIEF is set) an explanatory message.

See also:

BRIEF Compiler directive


ECHOALL

Sends a full listing to the screen as well as to a printer or other device specified with the LIST or PRINT directive.

Syntax:
 >>-.---.-.----.--ECHOALL-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOECHOALL
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

ECHOALL sets NOECHO immediately.


EDITOR

Makes the Compiler send error messages to a file in a format compatible with a specified editor.

Syntax:
 >>-.---.-.-----EDITOR--"editor-id"-.-------><  
    .-/-+ .-NO--EDITOR--------------+
Parameters:

editor-id Must be MF, MF2 or MS.

Properties:

Default: NOEDITOR
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: No
Dependencies:

EDITOR"MS" sets NOENSUITE immediately.
EDITOR"MF" sets ENSUITE"1" immediately.

Comments:

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.

See also:

ECHO Compiler directive
FLAGSINEDIT Compiler directive
QUERY Compiler directive


ENSUITE

Reserved for internal use only.


ERRLIST

Specifies that the listing is to contain no source lines except those that have errors or flags.

Syntax:
 >>--.---.--.----.---ERRLIST---"option"--------><
     .-/-+  .-NO-+ 
Parameters:
option Type of listing produced. See Comments below.

Properties:

Default: ERRLIST"EMBED"
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

ERRLIST"END"is switched to ERRLIST"VERBOSE" if FLAGQ or ERRQ are set.

Comments:

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.


ERRQ

Makes the Compiler ask, each time it gives an error message, whether you want to stop compiling.

Syntax:
 >>-.---.-.----.--ERRQ----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOERRQ
Phase: Syntax check
Environment: All
$SET: Any


EXPANDDATA

Makes the Compiler store the program data in uncompressed form.

Syntax:
 >>-.---.-.----.--EXPANDDATA----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOEXPANDDATA
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


EXTINDEX

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.

Syntax:
 >>-.---.-.----.--EXTINDEX------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOEXTINDEX
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


FASTLINK

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.

Syntax:
 >>-.---.-.----.--FASTLINK------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFASTLINK
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

If OMF"GNT", FASTLINK sets OMF"OBJ" at end.
If ASSUME is set, set to NOFASTLINK at end by REGPARM"IN".

Comments:

This directive only affects .obj files.

The restrictions are:


FASTSORT

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.

Syntax:
 >>-.---.-.----.--FASTSORT------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: FASTSORT
Phase: Syntax check
Environment: All
$SET: Initial


FCDREG

Makes the Compiler define special-registers giving access to File Control Descriptions (FCD) and Key Definition Blocks.

Syntax:
 >>-.---.-.----.--FCDREG--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

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.


FDCLEAR

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.

Syntax:
 >>-.---.-.----.--FDCLEAR-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFDCLEAR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:

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 ...


FILESHARE

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.

Syntax:
 >>-.---.-.----.--FILESHARE-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFILESHARE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


FILETYPE

Specifies the file format to use when creating files.

Syntax:
 >>-.---.--FILETYPE--"integer"--------------><  
    .-/-+
Parameters:

integer An integer representing the type to use.

Properties:

Default: FILETYPE"0"
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

FILETYPE"integer" sets IDXFORMAT"integer" immediately.

Comments:

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.)

See also:

ADV Compiler directive
CALLFH Compiler directive


FIXING

Tells the Compiler how many times to perform its final pass which shortens jump instructions.

Syntax:
 >>-.---.--FIXING--"integer"----------------><  
    .-/-+
Parameters:

integer Must be between 1 and 99.

Properties:

Default: FIXING"99"
Phase: Generate
Environment: 16-bit
$SET: Any
Comments:

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.


FIXOPT

Changes the way in which generated code accesses the Data Division in object (.obj) code.

Syntax:
 >>--.---.--.----.-------FIXOPT--------------><
     .-/-+  .-NO-+
Parameters:

None

Properties:
Default: NOFIXOPT
Phase: Generate
Environment: 32-bit for Windows NT and OS/2 V2
$SET: Initial
Comments:

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.


FLAG

Makes the Compiler produce language-level certification flags when it finds syntax that is not part of a specified dialect of COBOL.

Syntax:
 >>-.---.-.-----FLAG--"dialect"-.-----------><  
    .-/-+ .-NO--FLAG------------+
Parameters:

dialect A literal identifying the dialect.

Properties:

Default: NOFLAG
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


FLAG-CHIP

Makes the Compiler produce informational messages indicating potential problem areas on the chip architecture in use.

Syntax:
 >>-.---.-.----.--FLAG-CHIP-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFLAG-CHIP
Phase: Syntax check
Environment: 16-bit
$SET: Any

Comments:

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.


FLAGAS

Makes the Compiler output flagging messages as error messages, warning messages or informational messages.

Syntax:
 >>-.---.-.-----FLAGAS--"severity"-.--------><  
    .-/-+ .-NO--FLAGAS-------------+
Parameters:

severity A literal showing the severity to assign to flag messages.

Properties:

Default: NOFLAGAS
Phase: Syntax check
Environment: All
$SET: Any
Comments:

The possible values of severity are:

S Severe error
E Error
W Warning
I Informational


FLAGCD

When used with the FLAG directive, FLAGCD flags any directive settings that cause incompatibility with the specified dialect of COBOL.

Syntax:
 >>-.---.-.--------FLAGCD--"severity"-.-----><  
    .-/-+ ..----.--FLAGCD-------------+ 
           .-NO-+
Parameters:

severity A literal showing the severity to assign to flag messages arising from conflicting directives.

Properties:

Default: NOFLAGCD
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


FLAGMIG

Causes the Compiler to flag any syntax that behaves differently at run time depending on the setting of CMPR2.

Syntax:
 >>-.---.-.----.--FLAGMIG-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFLAGMIG
Phase: Syntax check
Environment: All
$SET: Any
Remarks

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.

See also:

CMPR2 Compiler directive


FLAGQ

Makes the Compiler ask, each time it gives a flagging message, whether you want to stop compiling.

Syntax:
 >>-.---.-.----.--FLAGQ---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOFLAGQ
Phase: Syntax check
Environment: All
$SET: Any


FLAGSINEDIT

Specifies whether flagging messages are to be included in an error file.

Syntax:
 >>-.---.-.----.--FLAGSINEDIT---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: FLAGSINEDIT
Phase: Both
Environment: All
$SET: No
Comments:

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.

See also:

EDITOR Compiler directive


FLAGSTD

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.

Syntax:
 >>-.---.-.-----FLAGSTD--"string"-.---------><  
    .-/-+ .-NO--FLAGSTD-----------+
Parameters:

string List of language levels

Properties:

Default: NOFLAGSTD
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


FOLD-CALL-NAME

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.

Syntax:
 >>-.---.-.-----FOLD-CALL-NAME--"case"-.----><  
    .-/-+ .-NO--FOLD-CALL-NAME---------+
Parameters:

case UPPER or LOWER

Properties:

Default: NOFOLD-CALL-NAME
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


FOLD-COPY-NAME

Determines whether copyfile-names should be converted to upper case or lower case.

Syntax:
 >>-.---.-.-----FOLD-COPY-NAME--"case"-.----><  
    .-/-+ .-NO--FOLD-COPY-NAME---------+
Parameters:

case "UPPER" or "LOWER".

Properties:

Default: NOFOLD-COPY-NAME
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:

Specifying FOLD-COPY-NAME"UPPER" converts copyfile names to upper case (also known as folding to upper case).


FORM

Specifies the number of lines on each page of the listing.

Syntax:
 >>-.---.-.-----FORM--"integer"-.-----------><  
    .-/-+ .-NO--FORM------------+
Parameters:

integer Must be greater than 3.

Properties:

Default: FORM"60"
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: Any
Dependencies:

Set to NOFORM at end by NOLIST or MASM.
Set to FORM"60" immediately by LIST.

Comments:

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.


FP-ROUNDING

Determines whether one floating-point receiving item can affect the results of other, nonfloating-point receiving items.

Syntax:
 >>-.---.-.-----FP-ROUNDING--"dialect"---.--><  
    .-/-+ .-NO--FP-ROUNDING--------------+
Parameters:

dialect Must be VSC2 or OSVS.

Properties:

Default: NOFP-ROUNDING
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:

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).


GANIM

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.

Syntax:
 >>-.---.-.----.--GANIM---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOGANIM
Phase: Both
Environment: 16-bit COBOL system and 32-bit COBOL system for Windows NT and OS/2 V2.
$SET: No
Dependencies:

GANIM sets ANIM and NORNIM at end.
If OPT"0", GANIM sets OPT"1" at end.

Comments:

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.


GNT

Specifies the name of the object code file.

Syntax:
 >>-.---.--.---GNT---.--"path-name\filename"--.---.---><
    .-/-+  .         .--"path-name/filename"--.   .
           .         .--"path-name\"----------.   .
           .         .--"path-name/"----------.   .
           .         .--"filename"------------.   .
           .         .--()--------------------+   .
           .-NO--GNT------------------------------+
Parameters:

pathname Path or environment variable specifying the path.
filename A full file specification.

Properties:

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
Dependencies:

In the 16-bit COBOL system, OBJ and GNT are synonymous. Setting NOGNT also sets NOOBJ.

Comments:

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.


GNTANLZ

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.

Syntax:
 >>-.---.-.-----GNTANLZ--"count-type"-.-----><  
    .-/-+ .-NO--GNTANLZ---------------+
Parameters:

count-type The type of count needed

Properties:

Default: NOGNTANLZ
Phase: Syntax check
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: Initial
Comments:

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.


GNTLEVEL

Enables faster interprogram calls.

Syntax:
 >>-.---.--GNTLEVEL--"level"----------------><  
    .-/-+
Parameters:

level The level of support needed. Must be 1 or 2.

Properties:

Default: GNTLEVEL"2"
Phase: Generate
Environment: 32-bit
$SET: Initial
Comments:

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.


HIDE-MESSAGE

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.

Syntax:
 >>-.---.-.-----HIDE-MESSAGE--"integer"-----.----><  
    .-/-+ |                                 | 
          .-NO--HIDE-MESSAGE--.-----------.-+ 
                              .-"integer"-+
Parameters:

integer The number of the syntax check error message to hide.

Properties:

Default: NOHIDE-MESSAGE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

CHANGE-MESSAGE Compiler directive
FLAGAS Compiler directive
FLAGCD Compiler directive


HOST-NUMCOMPARE

Controls the operation of comparisons between integer numeric data items of USAGE DISPLAY and alphanumeric literals or figurative constants.

Syntax:
 
>>--.---.--.------HOST-NUMCOMPARE--"integer"--.--><
    .-/-+  .-NO---HOST-NUMCOMPARE-------------+
Parameters:

integer Must be 1 or 2

Properties:

Default: NOHOST-NUMCOMPARE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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).

See also:

ZWB Compiler directive


HOST-NUMMOVE

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.

Syntax:
 >>--.---.--.------HOST-NUMMOVE--"integer"--.--><
     .-/-+  .-NO---HOST-NUMMOVE-------------+
Parameters:

integer Must be 1 or 2.

None

Properties:

Default: NOHOST-NUMMOVE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

EARLY-RELEASE Compiler directive
RTS error 163


HOSTSIGNS

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.

Syntax:

On the 16-bit COBOL system:

 >>-.---.-.--------HOSTSIGNS--"integer"-.---><  
    .-/-+ ..----.--HOSTSIGNS------------+ 
           .-NO-+

On the 32-bit COBOL system:

 >>-.---.-.----.---HOSTSIGNS----------------><  
    .-/-+ .-NO-+
Parameters:

integer Must be 1 or 2.

Properties:

Default: NOHOSTSIGNS
Phase: Generate
Environment: All
$SET: Initial
Comments:

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.


IBM-MS

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.

Syntax:
 >>-.---.-.----.--IBM-MS--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOIBM-MS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

IBM-MS sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.

Comments:

This directive is synonymous with the PC1 and MS"1" directives.


IBMCOMP

Turns on word-storage mode.

Syntax:
 >>-.---.-.----.--IBMCOMP-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOIBMCOMP
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

IBMCOMP sets ALIGN"8" immediately.

Comments:

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.


IDXFORMAT

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.

Syntax:
 >>-.---.--IDXFORMAT--"integer"-------------><  
    .-/-+
Parameters:

integer An integer representing the type to use.

Properties:

Default: IDXFORMAT"0"
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

Set to IDXFORMAT"integer" immediately by FILETYPE"integer".

Comments:

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.


INCLUDE-FILLER

Causes information regarding FILLER data items to be stored in the .idy file.

Syntax:
 >>-.---.-.----.--INCLUDE-FILLER------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOINCLUDE-FILLER
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


INDD

Causes ACCEPT statements to be read from a specified file.

Syntax:
 >>-.---.-.-------INDD--"fname rsize rtype ctype"-.>< 
    .-/-+ .-------INDD--"fname rsize rtype"-------© 
          .-------INDD--"fname rsize"-------------© 
          .-------INDD--"fname"-------------------© 
          ..----.-INDD----------------------------+ 
           .-NO-+
Parameters:

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.

Properties:

Default: NOINDD
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

INDD sets NOSYSIN immediately
Set to NOINDD immediately by SYSIN

Comments:

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.

See also:

ACCEPT statement
OUTDD Compiler directive
SYSIN Compiler directive


INFORETURN

Specifies the return-code value returned by the Compiler when it produces only informational messages.

Syntax:
 >>-.---.--INFORETURN--"integer"------------><  
    .-/-+
Parameters:

integer Must be between 0 and 4.

Properties:

Default: INFORETURN"0"
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


INITCALL

Specifies modules to be called immediately before the first statement of the program is executed.

Syntax:
 >>-.---..-----INITCALL--"module"-.------------..><  
    .-/-+|                        .-"priority"-+| 
         .-NO--INITCALL-------------------------+
Parameters:

module The module to be called.
priority The priority to assign to the execution of the module.

Properties:

Default: NOINITCALL
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


INT

Specifies the name of the intermediate code file.

Syntax:
 >>-.---.-.-----INT-.-"pathname\filename"--.-.--><  
    .-/-+ |         .-"pathname/filename"--© | 
          |         .-"pathname\"----------© | 
          |         .-"pathname/"----------© | 
          |         .-"filename"------------© | 
          |         .-()--------------------+ | 
          .-NO--INT---------------------------+
Parameters:

pathname Pathname, or environment variable specifying the pathname.
filename A full file specification.

Properties:

Default: INT"source-name.int"
Phase: Syntax check
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: No
Dependencies:

NOINT sets NOANIM and NOSTRUCT immediately.

Comments:

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.


INTDATE

Selects the starting date for integer format dates used with date intrinsic functions.

Syntax:
>>-.---.------INTDATE---"type"-----><
   .-/-+
Parameters:
type The type of starting-date.
Properties:
Default: ANSI
Phase: Syntax Check
Environment: All
$SET: Any
Comments:

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.


INTLEVEL

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.

Syntax:
 >>-.---.-.-----INTLEVEL--"integer"-.-------><  
    .-/-+ .-NO--INTLEVEL------------+
Parameters:

integer The level of portability. Can be 1 or 2.

Properties:

Default: INTLEVEL"2"
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.


IOCONV

Selects between a straight group move and conversion of elementary record descriptions (ANSI behavior) when processing READ ... INTO and WRITE ... FROM statements.

Syntax:
 >>-.---.-.----.--IOCONV--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: IOCONV
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


JAPANESE

Enables the use of Micro Focus Japanese Language Extension (PIC N, Japanese data-names and Japanese procedure-names).

Syntax:
 >>-.---.-.-------JAPANESE--"integer"-.-----><  
    .-/-+ ..----.-JAPANESE------------+ 
           .-NO-+
Parameters:

integer Must be 1 or 2. The level of support required.

Properties:

Default: NOJAPANESE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

DBCS Compiler directive
DBSPACE Compiler directive
NCHAR Compiler directive


KEEP-INT

Specifies whether the Compiler should produce intermediate code for an unsuccessful compilation; that is a compilation that produces serious or unrecoverable errors.

Syntax:
 >>-.---.-.----.--KEEP-INT------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: KEEP-INT
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


KEYCHECK

Specifies whether the number of keys should be checked when a file is opened.

Syntax:
 >>---.---.--.----.-----KEYCHECK----------><
      .-/-+  .-NO-+
Properties:
Default: KEYCHECK
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


KEYCOMPRESS

Specifies the type of key compression to be done on indexed files.

Syntax:
 >>-.---.-.-----KEYCOMPRESS--"integer"-.----><  
    .-/-+ .-NO--KEYCOMPRESS------------+
Parameters:

integer Must be between 0 and 7.

Properties:

Default: NOKEYCOMPRESS
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


LIBRARIAN

Allows -INC statements in your program.

Syntax:
 >>-.---.-.----.--LIBRARIAN-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOLIBRARIAN
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


LINE-COUNT

Controls the detail of information displayed at the end of a source listing.

Syntax:
 >>-.---.-.-------LINE-COUNT--"integer"-.----><  
    .-/-+ ..----.-LINE-COUNT------------+ 
           .-NO-+
Parameters:

integer Must be 1 or 2.

Properties:

Default: NOLINE-COUNT
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

LINE-COUNT"2" sets CSI immediately.

Comments:

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".

See also:

CSI Compiler directive
LIST Compiler directive


LINKCHECK

Specifies that each time a Linkage Section item is referenced a check is to be made that it exists.

Syntax:
 >>-.---.-.----.--LINKCHECK-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOLINKCHECK
Phase: Generate
Environment: All
$SET: Initial
Comments:

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.

See also:

PARAMCOUNTCHECK Compiler directive


LINKCOUNT

Specifies the maximum number of Linkage Section items, external data items, and external files (as defined for interprogram communication) allowed.

Syntax:
 >>-.---.-.----.--LINKCOUNT--"integer"------><  
    .-/-+ .-NO-+
Parameters:

integer The number allowed (maximum 65535).

Properties:

Default: LINKCOUNT"64"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


LINKLIB

Specifies the link library or libraries where the Linker is to look for the run-time support routines.

Syntax:
 >>-.---.-.-----LINKLIB--"library-names"-.--><  
    .-/-+ .-NO--LINKLIB------------------+
Parameters:

library-names The names of one or more link libraries.

Properties:

Default: LINKLIB"COBLIB+COBAPI"
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


LIST

Specifies the destination of the source listing file.

Syntax:
 >>-.---.-.-------LIST-.-"destination"-..---><  
    .-/-+ |            .-()------------+| 
          ..----.-LIST------------------+ 
           .-NO-+
Parameters:

destination A full file specification or a device-name.

Properties:

Default: NOLIST
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: Any (for LIST and NOLIST) None (for LIST"filename" and LIST())
Dependencies:

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.

Comments:

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.

Example:

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.


LISTPATH

Specifies a path on which the list file is to be written. The name of the list file is source-name.lst.

Syntax:
 >>-.---.-.----.--LISTPATH--"list-path"-----><  
    .-/-+ .-NO-+
Parameters:

list-path Path to which the list file is written, or an environment variable specifying the path to which the list file is written.

Properties:

Default: NOLISTPATH
Phase: Syntax check
Environment: All
$SET: Initial


LISTWIDTH

Sets the width of the listing.

Syntax:
 >>-.---.--.-LISTWIDTH-.-"width"------------><  
    .-/-+  .-LW--------+
Parameters:

width Width in characters. It must be between 72 and 132.

Properties:

Default: LISTWIDTH"80"
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

If REF is set, and width is less than 90, sets LISTWIDTH"90" immediately. If width is less than 90, sets NOREF at end.

Comments:

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.

See also:

REF Compiler directive


LITLINK

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.)

Syntax:

With the 16-bit Compiler:

 >>-.---.-.----.-LITLINK--------------------><  
    .-/-+ .-NO-+

With a 32-bit Compiler:

 >>-.---.-.-----LITLINK-.-----------.-.-----><  
    .-/-+ |             .-"integer"-+ | 
          .-NO--LITLINK---------------+
Parameters:

integer Must be 1 or 2.

Properties:

Default: NOLITLINK
Phase: Generate
Environment: All
$SET: Initial
Dependencies:

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".

Comments:

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.


LITVAL-SIZE

Specifies the number of bytes to pass if the SIZE clause is omitted when passing numeric literals BY VALUE.

Syntax:
 >>-.---.--LITVAL-SIZE--"integer"-----------><  
    .-/-+
Parameters:

integer A number up to 4. The number of bytes to pass.

Properties:

Default: LITVAL-SIZE"4"
Phase: Syntax check
Environment: All
$SET: Any


LNKALIGN

Indicates that any linkage records specified in a USING statement are 01 or level-77 items, aligned according to the ALIGN directive.

Syntax:
 >>-.---.-.----.--LNKALIGN------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOLNKALIGN
Phase: Generate
Environment: 32-bit
$SET: No
Comments:

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.

See also:

ALIGN Compiler directive


LOCALCOUNT

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.

Syntax:
 >>-.---.--LOCALCOUNT--"integer"------------><  
    .-/-+
Parameters:

integer Must be in the range 0 to 65536

Properties:

Default: LOCALCOUNT"0"
Phase: Syntax check
Environment: All
$SET: Initial


LOCKTYPE

Specifies the type of record locking.

Syntax:
 >>-.---.--LOCKTYPE--"integer"--------------><  
    .-/-+
Parameters:

integer 0 or 1. The type of locking.

Properties:

Default: LOCKTYPE"0"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

CALLFH Compiler directive


LOGICOPT

Optimizes calls to the CBL_ logical routines so that they do not affect RETURN-CODE.

Syntax:
 >>-.---.-.----.--LOGICOPT------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOLOGICOPT
Phase: Generate
Environment: 32-bit
$SET: No
Comments:

Specifying LOGICOPT optimizes COBOL logical calls, such as CBL_AND, so that they do not affect RETURN-CODE.


MAKESYN

Makes one reserved word synonymous with another.

Syntax:

On DOS, Windows and OS/2:

 >>-.---.-MAKESYN-"rsv-word-1" = "rsv-word-2"->< 
    .-/-+

On UNIX:

 >>--MAKESYN-"(rsv-word-1) == (rsv-word-2)"--->< 
Parameters:

rsv-word-1 A reserved word.
rsv-word-2 The reserved word whose meaning is to be changed.

Properties:

Default: No reserved word synonyms are created.
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

The equals sign must be surrounded by spaces.

This directive does not appear in the list created with the SETTING directive.


MAPNAME

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.

Syntax:
 >>-.---.-.----.--MAPNAME-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOMAPNAME
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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


MASM

Makes the Compiler produce a listing file that can be submitted to Microsoft MASM to produce an .obj file.

Syntax:
 >>-.---.-.----.--MASM----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOMASM
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

MASM sets NOFORM at end.
Set to NOMASM by NOASM or OMF"GNT".

Comments:

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.


MAX-ERROR

Causes the Compiler to abort when the specified number of errors have been produced.

Syntax:
 >>-.---.-.-----MAX-ERROR--"err-cnt-.-------.-"-.-><  
    .-/-+ |                         .-svrty-+   | 
          .-NO--MAX-ERROR-----------------------+ 
 
Parameters:

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:

F Flag
I Informational
W Warning
E Error
S Severity

If omitted, assumes F.

Properties:

Default: NOMAX-ERROR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:

Specifying the directive:

MAX-ERROR"100 E"

causes the compilation to terminate when 101 messages of severity E or S have been produced.

See also:

CHANGEMESSAGE Compiler directive
FLAG Compiler directive
FLAGAS Compiler directive
FLAGSTD Compiler directive
HIDEMESSAGE Compiler directive
WARNING Compiler directive


MF

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.

Syntax:
 >>-.---.-.-------.-MF------.-"integer"-.---><  
    .-/-+ |       .-MFLEVEL-+           | 
          ..----.-.-MF------.-----------+ 
           .-NO-+ .-MFLEVEL-+
Parameters:

integer The level of Micro Focus COBOL to be compatible with.

Properties:

Default: MF"10"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

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".

Comments:

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.

See also:

EARLY-RELEASE Compiler directive
OLDBLANKLINE Compiler directive
OLDNEXTSENTENCE Compiler directive


MFCOMMENT

Treats lines with an asterisk (*) in column 1 the same as comment lines but does not show them in the source listing.

Syntax:
 >>-.---.-.----.--MFCOMMENT-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: MFCOMMENT
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

Set to NOMFCOMMENT at end by SOURCEFORMAT"FREE".

Comments:

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.


MF-OO

Enables the object orientation (OO) facilities in the Compiler.

Syntax:
 >>-.---.-.-----MF-OO-.---------------------><  
    .-/-+ .-NO--MF-OO-+
Parameters:

None

Properties:

Default: NOMF-OO
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

MF-OO sets MF immediately.


MFSCCS

Specifies whether to look for files in a Source Code Control System (SCCS).

Syntax:
 >>-.---.-.----.--MFSCCS--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOMFSCCS
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


MODEL

Specifies the memory model.

Syntax:
 >>-.---.--MODEL--"type"--------------------><  
    .-/-+
Parameters:

type SMALL, COMPACT, MEDIUM, LARGE, or HUGE.

Properties:

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
Dependencies:

MODEL"SMALL" and MODEL"COMPACT" set LITLINK at end.

Comments:

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.


MOVE-LEN-CHECK

Causes the compiler to check source and target lengths for alphanumeric MOVE operations.

Syntax:
 >>-.---.--.----.-----MOVE-LEN-CHECK------><
    .-/-+  .-NO-+
Properties:
Default: NOMOVE-LEN-CHECK
Phase: Syntax Check
Environment: All
$SET: Any
Comments:

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.

See also:
WARNINGS Compiler directive.


MS

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.

Syntax:
 >>-.---.-.-------MS--"version"-.-----------><  
    .-/-+ ..----.-MS------------+ 
           .-NO-+
Parameters:

version Must be 1 or 2. The version.

Properties:

Default: NOMS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

MS sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.

Comments:

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.

See also:

MF Compiler directive


NATIVE

Specifies the default collating sequence for comparisons.

Syntax:
 >>-.---.--NATIVE--"coll-seq"---------------><  
    .-/-+
Parameters:

coll-seq Either "ASCII" or "EBCDIC".

Properties:

Default: NATIVE"ASCII"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to NATIVE"ASCII" immediately by CHARSET"ASCII".
Set to NATIVE"EBCDIC" at end by CHARSET"EBCDIC".

Comments:

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.


NCHAR

Enables the use of Micro Focus Double-byte Language Extension (PIC N, Japanese data-names and Japanese procedure-names).

Syntax:
 >>-.---.-.-------NCHAR--"integer"-.--------><  
    .-/-+ ..----.-NCHAR------------+ 
           .-NO-+
Parameters:

integer Must be 1 or 2. The level of support required.

Properties:

Default: NONCHAR
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

DBCS Compiler directive
DBSPACE Compiler directive
JAPANESE Compiler directive


NESTCALL

Allows nested programs to appear in your program.

Syntax:
 >>-.---.-.----.--NESTCALL------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NONESTCALL
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

NESTCALL sets NO01SHUFFLE at end.


NESTLOCALSTORAGE

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.

Syntax:
 >>-.---.-.----.--NESTLOCALSTORAGE----------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NONESTLOCALSTORAGE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

EARLY-RELEASE Compiler directive


NLS

Enables the National Language Support facility.

Syntax:
 >>-.---.-.----.--NLS-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NONLS
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.

See also:

National Language Support routines


OBJ

Specifies the name of the object code file.

Syntax:

On the 16-bit COBOL system:

 >>-.---.-.-----OBJ--"filename"-.-----------><  
    .-/-+ .-NO--OBJ-------------+

On 32-bit COBOL systems:

 >>-.---.-.-----OBJ-.-------------..--------><  
    .-/-+ |         .-"filename"--+| 
          .-NO--OBJ----------------+
Parameters:

filename A full file specification.

Properties:

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
Dependencies:

On the 16-bit COBOL system:

OBJ and GNT are synonymous. Setting NOOBJ also sets NOGNT.

Comments:

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.

Example:

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.


OBJLITE

Produces a version of your program that functions very much like an assembler subroutine.

Syntax:
 >>-.---.-.----.--OBJLITE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOBJLITE
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

Set to NOOBJLITE at end by OPT"0" or OMF"GNT".
OBJLITE sets LITLINK at end.

Comments:

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:


ODOOSVS

Makes the evaluation of OCCURS DEPENDING ON items more compatible with the OS/VS COBOL compiler.

Syntax:
 >>-.---.-.----.--ODOOSVS-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOODOOSVS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

ODOOSVS sets ODOSLIDE at end.

Comments:

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.


ODOSLIDE

Moves data items that follow a variable-length table in the same record as the table's length changes.

Syntax:
 >>-.---.-.----.--ODOSLIDE------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOODOSLIDE
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to ODOSLIDE at end by ODOOSVS.

Comments:

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.


OLDBLANKLINE

Changes the behavior of the BLANK LINE clause in the Screen Section.

Syntax:
 >>-.---.-.----.--OLDBLANKLINE--------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDBLANKLINE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


OLDCOPY

Makes COPY statements follow the ANSI'68 Standard.

Syntax:
 >>-.---.-.----.--OLDCOPY-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDCOPY
Phase: Syntax check
Environment: All
$SET: Any


OLDFILEIO

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.

Syntax:
 >>-.---.-.----.--OLDFILEIO-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDFILEIO
Phase: Syntax check
Environment: All
$SET: Initial


OLDINDEX

Causes indexes to be compiled as subscripts.

Syntax:
 >>-.---.-.----.--OLDINDEX------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDINDEX
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to NOOLDINDEX immediately by NORM.
Set to OLDINDEX immediately by RM and RM"ANSI".

Comments:

This directive is for compatibility with earlier products.


OLDNEXTSENTENCE

Changes the behavior of the NEXT SENTENCE statement.

Syntax:
 >>-.---.-.----.--OLDNEXTSENTENCE-----------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDNEXTSENTENCE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

CONTINUE statement


OLDREADINTO

Changes the behavior of the READ ... INTO statement.

Syntax:
 >>-.---.-.----.--OLDREADINTO---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDREADINTO
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


OLDSTRMIX

Allows PIC X and PIC N fields to be specified in the same STRING, UNSTRING or INSPECT statement.

Syntax:
 >>-.---.-.----.--OLDSTRMIX-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDSTRMIX
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


OLDSTRSUB

Changes the point at which subscripts are evaluated during STRING, UNSTRING and INSPECT statements.

Syntax:
 >>-.---.-.----.--OLDSTRSUB-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOLDSTRSUB
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


OMF

Specifies which format of object code to produce.

Syntax:
 >>-.---.--OMF--"code"----------------------><  
    .-/-+
Parameters:

code Either OBJ or GNT.

Properties:

Default: OMF"OBJ"
Phase: Generate
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: No
Dependencies:

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.

Comments:

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.


OPT

Specifies the level of optimization of the code produced in the .obj file.

Syntax:
 >>-.---.--OPT--"integer"-------------------><  
    .-/-+
Parameters:

integer 0, 1, or 2.

Properties:

Default: OPT"2"
Phase: Generate
Environment: 16-bit
$SET: Any
Dependencies:

If OPT"0", set to OPT"1" at end by EANIM, GANIM or OMF"GNT".
OPT"0" sets NOOBJLITE and NODATALIT at end.

Comments:

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.


OPTIONAL-FILE

Makes the Compiler treat all files opened for I-O or EXTEND as optional.

Syntax:
 >>-.---.-.----.--OPTIONAL-FILE-------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: OPTIONAL-FILE
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to OPTIONAL-FILE immediately by NORM.
Set to NOOPTIONAL-FILE immediately by RM or RM"ANSI".

Comments:

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.


OPTSIZE

Makes the Compiler treat the size of the object program as a higher priority than its speed, within the constraints imposed by other directives.

Syntax:
 >>-.---.--OPTSIZE--------------------------><  
    .-/-+
Parameters:

None

Properties:

Default: OPTSIZE
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

The directives OPTSPEED and OPTSIZE are alternates. Hence, if you don't want OPTSIZE specify OPTSPEED.


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.

Syntax:
 >>-.---.--OPTSPEED-------------------------><  
    .-/-+
Parameters:

None

Properties:

Default: OPTSIZE
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


OSEXT

Tells the Compiler what extension to expect by default on the names of source files. It can also affect the extension used for copyfiles.

Syntax:
 >>-.---.--OSEXT--"ext"---------------------><  
    .-/-+
Parameters:

ext The extension.

Properties:

Default: OSEXT"cbl" (on DOS, Windows and OS/2) OSEXT"" (on UNIX)
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

COPYEXT Compiler directive


OSVS

Specifies that words reserved in IBM OS/VS COBOL are to be treated as reserved words.

Syntax:
 >>-.---.-.----.--OSVS----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOOSVS
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

OSVS sets NODOSVS immediately.

See also:

DOSVS Compiler directive


OUTDD

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.

Syntax:
 >>-.---..-------OUTDD--"fname rsize rtype ctype"-.'"
    .-/-+.-------OUTDD--"fname rsize rtype"-------+
         .-------OUTDD--"fname rsize"-------------+
         .-------OUTDD--"fname"-------------------+
         ..----.-OUTDD----------------------------+ 
          .-NO-+
Parameters:

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.

Properties:

Default: NOOUTDD
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

OUTDD sets NOSYSIN immediately
Set to NOOUTDD immediately by SYSIN

Comments:

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.

See also:

DISPLAY statement
EXHIBIT statement
INDD Compiler directive
SYSIN Compiler directive
TRACE Comopiler directive


OVERRIDE

Replaces a reserved word by a new one.

Syntax:

On DOS, Windows and OS/2:

                   +------------------------™ 
                   v                        | 
 >>-.---.-OVERRIDE--"rsv-word" = "user-word"-->< 
    .-/-+

On UNIX:

             +---------------------------™ 
             v                           | 
 >>-OVERRIDE--"(rsv-word) == (user-word)"----->< 
Parameters:

rsv-word Existing reserved word.
user-word Any COBOL word not the same as an existing reserved word.

Properties:

Default: No change of reserved words takes place.
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


PANVALET

Allows ++INCLUDE statements in your program.

Syntax:
 >>-.---.-.----.--PANVALET------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPANVALET
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


PARAMCOUNTCHECK

Enables the program to be called with fewer parameters than are specified in the relevant entry-point's USING clause.

Syntax:
 >>-.---.-.----.--PARAMCOUNTCHECK-----------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPARAMCOUNTCHECK (with OMF"OBJ") PARAMCOUNTCHECK (with OMF"GNT")
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.

See also:

LINKCHECK Compiler directive
STICKY-LINKAGE Compiler directive


PARAS

Creates a list of paragraphs and sections in a program.

Syntax:
 >>-.---.-.----.--PARAS---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPARAS
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.

See also:

ASMLIST Compiler directive
ANIM Compiler directive


PC1

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.

Syntax:
 >>-.---.-.----.--PC1-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPC1
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

PC1 sets DEFAULTBYTE"0" and ACCEPTREFRESH immediately.

Comments:

This directive is synonymous with the IBM-MS and MS"1" directives.


PERFORM-TYPE

Specifies the behavior of return jumps from nested PERFORM statements.

Syntax:
 >>-.---.--PERFORM-TYPE--"dialect"----------><  
    .-/-+
Parameters:

dialect MF, OSVS, or RM.

Properties:

Default: PERFORM-TYPE"MF"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

PERFORM-TYPE"OSVS" sets TRICKLE at end.

Comments:

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.

See also:

STICKY-PERFORM Compiler directive


PERFORMOPT

Determines if the Compiler should optimize out code to PERFORM empty paragraphs in generated native code.

Syntax:
 >>-.---.--PERFORMOPT---------------------><  
    .-/-+
Parameters:

None

Properties:

Default: PERFORMOPT
Phase: Generate
Environment: All
$SET: Initial
Comments:

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.


PREPLIST

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.

Syntax:
 >>-.---.-.----.--PREPLIST------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPREPLIST
Phase: Syntax check
Environment: All
$SET: No
Comments:

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.


PREPROCESS

Makes the Compiler take the source program from a preprocessor instead of a source file.

Syntax:
 >>-.---..----.-PREPROCESS-.-"name".------..------..>< 
    .-/-+|    .-P----------+       .-dirs-+.-ENDP-+|
         .-NO-.-PREPROCESS-.-----------------------+
              .-P----------+
Parameters:

name The preprocessor to use.
dirs Directives to be passed directly to the preprocessor.

Properties:

Default: NOPREPROCESS
Phase: Syntax check
Environment: All
$SET: On very first source line only No (with NOPREPROCESS)
Comments:

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.


PRINT

Specifies the destination of the source listing file.

Syntax:
 >>-.---.-.-------PRINT-.-"destination"-..--><  
    .-/-+ |             .-()------------+| 
          ..----.-PRINT------------------+ 
           .-NO-+
Parameters:

destination A full file specification, or a device-name.

Properties:

Default: NOPRINT
Phase: Syntax check
Environment: All
$SET: Any
Comments:

PRINT is synonymous with LIST. All rules that apply to LIST also apply to PRINT.

See also:

LIST Compiler directive


PRINT-EXT

Specifies the extension to be added to the filename associated with the ASSIGN TO PRINTER clause.

Syntax:
 >>-.---.--PRINT-EXT--"extension"-----------><  
    .-/-+
Parameters:

extension The extension to be added.

Properties:

Default: No extension is added
Phase: Syntax check
Environment: All
$SET: Any
Comments:

This directive is ignored unless ASSIGN-PRINTER() is specified with no filename.

See also:

ASSIGN-PRINTER Compiler directive


PROFILE

Includes code in your program to produce detailed performance statistics each time you run the program.

Syntax:
 >>-.---.-.----.--PROFILE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPROFILE
Phase: Syntax check
Environment: UNIX
$SET: No
Comments:

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.


PROGID-COMMENT

Allows comments following the PROGRAM-ID in the Program-Id paragraph.

Syntax:
 >>-.---.-.----.--PROGID-COMMENT------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPROGID-COMMENT
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

This directive is provided for compatibility with earlier versions of this COBOL system.


PROTECT-LINKAGE

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.

Syntax:
 >>-.---.-.----.--PROTECT-LINKAGE-----------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPROTECT-LINKAGE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

Example:

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.


PROTMODE

Causes the Compiler to optimize certain statements in such a way that the resulting object code can only be run in protect mode environments.

Syntax:
 >>-.---.-.----.--PROTMODE------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOPROTMODE
Phase: Generate
Environment: 16-bit (If DOS, only under XM)
$SET: Initial
Comments:

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.

See also:

SET statement


PUBLICENTRY

Specifies whether entry-points in .obj files are to be declared as public.

Syntax:
 >>-.---.-.----.--PUBLICENTRY---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: PUBLICENTRY
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


QUAL

Allows qualified data-names and procedure-names in your program.

Syntax:
 >>-.---.-.----.--QUAL----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: QUAL
Phase: Syntax check
Environment: All
$SET: Any
Comments:

If you have no qualified data-names or procedure-names in your source code, you can specify NOQUAL. This improves compilation speed.

See also:

QUALPROC Compiler directive


QUALPROC

Allows qualified procedure-names in your program.

Syntax:
 >>-.---.-.----.--QUALPROC------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: QUALPROC
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

QUAL Compiler directive


QUERY

Makes the Compiler ask, each time it is unable to find a copyfile, what it should do.

Syntax:
 >>-.---.-.----.--QUERY---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: QUERY (DOS, Windows and OS/2) NOQUERY (UNIX)
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


QUOTE

Makes the Compiler interpret the figurative constant QUOTE as the double-quote character (").

Syntax:
 >>-.---.--QUOTE----------------------------><  
    .-/-+
Parameters:

None

Properties:

Default: QUOTE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

The opposite of this directive is the directive APOST which causes the single-quote character to be used.


RAWLIST

Prevents changeable information, such as page headers, date, time, Compiler release level, from being included in any listing file produced.

Syntax:
 >>-.---.-.----.--RAWLIST-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NORAWLIST
Phase: Syntax check
Environment: All
$SET: Any
Comments:

Specifying this directive does not affect whether a listing is produced or the name of the listing file.

See also:

LIST Compiler directive


RDEFPTR

Causes COMP redefinitions of POINTER data items to be stored in machine-specific format; that is, treated as COMP-5 data items.

Syntax:
 >>-.---.-.----.--RDEFPTR-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NORDEFPTR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

EARLY-RELEASE Compiler directive


RDW

Enables you to find out the length of a record that has just been read from a variable-length sequential file.

Syntax:
 >>-.---.-.----.--RDW-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NORDW
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

Example:
 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 
     ...
See also:

FD statement


REALOVL

Causes overlays to be regarded as real rather than pseudo so that overlaying is done from disk.

Syntax:
 >>-.---.-.----.--REALOVL-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: REALOVL
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.


RECMODE

Specifies the default format of files.

Syntax:
 >>-.---.--RECMODE--"format"----------------><  
    .-/-+
Parameters:

format F, V, or OSVS.

Properties:

Default: RECMODE"F"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


REF

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.

Syntax:
 >>-.---.-.----.--REF-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOREF
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: Any
Dependencies:

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.

Comments:

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.

See also:

01SHUFFLE Compiler directive
LISTWIDTH Compiler directive


REFNO

Makes the Compiler display its internal reference number at the start of a compilation as well as at the bottom of every listing.

Syntax:
 >>-.---.-.----.--REFNO---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOREFNO
Phase: Syntax check
Environment: All
$SET: No


REGPARM

Makes the object program use an alternative parameter-passing mechanism, used in some other COBOL compilers.

Syntax:
 >>-.---.-.-------REGPARM--"when-used"-.----><  
    .-/-+ ..----.-REGPARM--------------+ 
           .-NO-+
Parameters:

when-used IN or OUT.

Properties:

Default: NOREGPARM
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

If ASSUME is set, REGPARM"IN" sets NOFASTLINK at end.
If ASSUME is set, REGPARM"OUT" sets LITLINK at end.

Comments:

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.


REMOVE

Removes words from the reserved word list, so that they can be used as user-defined words.

Syntax:
                  +----------.
                  v          | 
 >>-.---.--REMOVE--"rsv-word"---------------><  
    .-/-+
Parameters:

rsv-word A reserved word.

Properties:

Default: No reserved words are removed.
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

This directive does not appear in the list created with the SETTING directive.


REPORT-LINE

Specifies the maximum length of a Report Writer line.

Syntax:
 >>-.---.-.-----REPORT-LINE--"integer"-.----><  
    .-/-+ .-NO--REPORT-LINE------------+
Parameters:

integer The maximum length, in characters.

Properties:

Default: REPORT-LINE"256"
Phase: Syntax check
Environment: All
$SET: Initial


RESEQ

Makes the Compiler produce line numbers.

Syntax:
 >>-.---.-.----.--RESEQ---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: RESEQ
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to RESEQ immediately by XREF.
Set to NORESEQ immediately by SEQCHK.
Set to NORESEQ at end by SOURCEFORMAT"FREE".

Comments:

These are COBOL line sequence numbers, starting at 1 and increasing in increments of 1.


RETRYLOCK

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.

Syntax:
 >>-.---.-.----.--RETRYLOCK-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NORETRYLOCK
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

Set to NORETRYLOCK immediately by NORM.
Set to RETRYLOCK immediately by RM or RM"ANSI".

Comments:

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.

See also:

R RTS switch


REWRITE-LS

Allows REWRITE statements on line sequential files.

Syntax:
 >>-.---.-.----.--REWRITE-LS----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: REWRITE-LS
Phase: Syntax check
Environment: All
$SET: No
Comments:

You must make sure that the record you write is the same size as the one it replaces.


RM

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.

Syntax:
 >>-.---.-.-------RM--"ANSI"-.--------------><  
    .-/-+ ..----.-RM---------+ 
           .-NO-+
Parameters:

ANSI See Comments.

Properties:

Default: NORM
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

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.

Comments:

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.


RNIM

Causes Animator to be invoked instead of the Compiler.

Syntax:
 >>-.---.-.----.--RNIM----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NORNIM
Phase: Syntax check
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: No
Dependencies:

RNIM sets NOLIST, NOANIM and NOXREF immediately.
Set to NORNIM at end by GANIM.

Comments:

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.

See also:

Animator Directives


RTNCODE-SIZE

Specifies the size of the RETURN-CODE special register and its alignment in memory.

Syntax:
 >>-.---.--RTNCODE-SIZE--"integer"----------><  
    .-/-+
Parameters:

integer 2 or 4.

Properties:

Default: RTNCODE-SIZE"2"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to RTNCODE-SIZE"4" immediately by XOPEN.

Comments:

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.


SAA

Specifies that words reserved under the Systems Application Architecture (SAA) definition of COBOL are to be treated as reserved words.

Syntax:
 >>-.---.-.-------SAA--"level"-.------------><  
    .-/-+ ..----.-SAA----------+ 
           .-NO-+
Parameters:

level An integer specifying the level of SAA support required.

Properties:

Default: NOSAA
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

SAA sets DBSPACE and DBCS"2" immediately.
SAA"2" sets ANS85 at end.

Comments:

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".


SEG

Turns on COBOL segmentation.

Syntax:
 >>-.---.-.----.--SEG-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: SEG
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


SEGCROSS

Tells the Compiler which Linkage Section records cross segment boundaries.

Syntax:
 >>-.---.-.----.-SEGCROSS-.------------.----><  
    .-/-+ .-NO-+          .-"integers"-+
Parameters:

integers One or more integers giving the ordinal positions of Linkage Section items.

Properties:

Default: NOSEGCROSS (less than 64K of data) SEGCROSS (64K or more of data)
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.

Example:

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.

See also:

SMALLDD Compiler directive


SEGSIZE

Specifies the maximum code segment size, beyond which the Compiler automatically segments the code.

Syntax:
 >>-.---.--SEGSIZE--"integer"---------------><  
    .-/-+
Parameters:

integer The maximum size.

Properties:

Default: SEGSIZE"0"
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

If integer is zero, no automatic segmentation is done. This reduces compilation time and creates more efficient code.

Example:

SEGSIZE"65536" causes automatic segmentation if the code is bigger than 65536 bytes.

See also:

64KPARA Compiler directive
64KSECT Compiler directive


SEQCHK

Makes the Compiler check the sequence numbers in columns 1 through 6 and identify source lines that are out of sequence.

Syntax:
 >>-.---.-.----.--SEQCHK--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSEQCHK
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

SEQCHK sets NORESEQ immediately.
Set to NOSEQCHK at end by SOURCEFORMAT"FREE".


SEQUENTIAL

Specifies the default file type for files defined (implicitly or explicitly) as ORGANIZATION SEQUENTIAL.

Syntax:
 >>-.---.--SEQUENTIAL--"type"---------------><  
    .-/-+
Parameters:

type ADVANCING, ANSI, LINE, or RECORD.

Properties:

Default: SEQUENTIAL"RECORD"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to SEQUENTIAL"RECORD" immediately by NORM or RM"ANSI".
Set to SEQUENTIAL"LINE" immediately by RM.

Comments:

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).


SERIAL

Specifies that the program is to be run in a multi-threaded environment.

Syntax:
 >>---.----.----SERIAL---------><
      .-NO-+
Parameters:

None

Properties:
Default: NOSERIAL
Phase: Generate
Environment: 32-bit
$SET: Initial
Comments:

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.

See also:

thread_safe run-time tunable


SETTING

Makes the Compiler include in the source listing a list of the settings of directives.

Syntax:
 >>-.---.-.-------.-SETTING--.-.----------.-.-><  
    .-/-+ |       .-SETTINGS-+ .-"format"-+ | 
          ..----.-.-SETTING--.--------------+ 
           .-NO-+ .-SETTINGS-+
Parameters:

format The layout of the listing. Only affects the listing given during the syntax check phase.

Properties:

Default: NOSETTING
Phase: Both
Environment: All (syntax check), 16-bit (generate)
$SET: Any
Dependencies:

Set to NOSETTING by NOLIST at end.

Comments:

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.

See also:

LIST Compiler directive


SHOW-DIR

Makes the Compiler show the contents of directives files in the source listing.

Syntax:
 >>-.---.-.----.--SHOW-DIR------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSHOW-DIR
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


SHOWSHUFFLE

Displays the results of the level-01 data items moved by the 01SHUFFLE directive.

Syntax:
 >>-.---.-.----.--SHOWSHUFFLE---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSHOWSHUFFLE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

SHOWSHUFFLE only produces information if the 01SHUFFLE directive is specified. Otherwise it has no effect.

See also:

01SHUFFLE Compiler directive
REF Compiler directive


SIGN

Specifies whether, for numeric DISPLAY items with included signs, the signs are to be interpreted according to the ASCII or EBCDIC convention.

Syntax:
 >>-.---.--SIGN--"convention"---------------><  
    .-/-+
Parameters:

convention Either ASCII or EBCDIC.

Properties:

Default: SIGN"ASCII"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to SIGN"ASCII" immediately by CHARSET"ASCII".
Set to SIGN"EBCDIC" at end by CHARSET"EBCDIC".


SIGNCOMPARE

Affects the way some numeric comparisons are performed in a program using the EBCDIC character set.

Syntax:
 >>-.---.-.----.--SIGNCOMPARE---------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSIGNCOMPARE
Phase: Generate
Environment: 16-bit
$SET: Any
Comments:

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.


SMALLDD

Tells the Compiler that no Linkage Section record less than 64K long crosses a segment boundary.

Syntax:
 >>-.---.-.----.--SMALLDD-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: SMALLDD
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.

See also:

01SHUFFLE Compiler directive
CHIP Compiler directive
FLAG-CHIP Compiler directive
SEGCROSS Compiler directive


SOURCE-EXT

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.

Syntax:
 >>-.---.--SOURCE-EXT--"ext"----------------><  
    .-/-+
Parameters:

ext A filename extension.

Properties:

Default: SOURCE-EXT"cbl"
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

This directive affects only .obj files.


SOURCEASM

Makes the Compiler include source code statements in the assembler listing.

Syntax:
 >>-.---.-.----.--SOURCEASM-----------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSOURCEASM
Phase: Generate
Environment: All
$SET: No
Dependencies:

Set to NOSOURCEASM by NOLIST at end.
SOURCEASM sets ANIM at end.

Comments:

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.


SOURCEFORMAT

Selects free or fixed format for COBOL source.

Syntax:
 >>-.---.--SOURCEFORMAT--"format-type"------><  
    .-/-+
Parameters:

format-type FIXED or FREE. The format of COBOL source.

Properties:

Default: SOURCEFORMAT"FIXED"
Phase: Syntax check
Environment: All
$SET: Any
Dependencies:

SOURCEFORMAT"FREE" sets NOMFCOMMENT, NORESEQ and NOSEQCHK at end.

Comments:

See the Language Reference for details on free and fixed format code.


SPZERO

Causes space characters in numeric data items of USAGE DISPLAY to be treated as zeros.

Syntax:
 >>-.---.-.----.--SPZERO--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSPZERO
Phase: Both (16-bit COBOL system) Generate (32-bit COBOL systems)
Environment: All
$SET: Any
Comments:

With NOSPZERO, space characters in numeric data items give unpredictable results.


SQL

Allows EXEC SQL statements in your program.

Syntax:
 >>-.---.-.----SQL-.----------------------..><  
    .-/-+ |        |   +-----.---.-----.  || 
          |        |   |     .-,-+     |  || 
          |        |   v               |  || 
          |        .-(.-option=setting-.)-+| 
          |           |                |   | 
          |           .-NO-option------+   | 
          .-NO-SQL-------------------------+
Parameters:

option One of the SQL options (see below)
setting The setting for the option

Properties:

Default: NOSQL
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

Examples:

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)


SQL Option - ACCESS

Specifies the name of the access plan to be created by precompiler services and stored in the database.

Syntax:
 >>-.-------ACCESS=--access-plan-.-><  
    ..----.-ACCESS---------------+ 
     .-NO-+
Parameters:

access-plan The root of a filename, or a null string.

Properties:

Default: ACCESS
Comments:

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.


SQL Option - BIND

Specifies the name of the bind file to be created by precompiler services.

Syntax:
 >>-.-------BIND=--bindfile-name-.-><  
    ..----.-BIND-----------------+ 
     .-NO-+
Parameters:

bindfile-name A full file specification or a null string.

Properties:

Default: NOBIND
Comments:

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.


SQL Option - BLOCK

Specifies the record blocking mode to be used on plan creation.

Syntax:
 >>---BLOCK=--block-mode-----------><  
 
Parameters:

block-mode The blocking mode to be used.

Properties:

Default: BLOCK=UNAMBIG
Comments:

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.


SQL Option - COMMIT

Specifies where implicit COMMIT statements should be generated.

Syntax:
 >>---COMMIT=--level---------------><  
 
Parameters:

level The level number.

Properties:

Default: COMMIT=2
Comments:

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.


SQL Option - CTRACE

Causes listing output to contain diagnostics showing calls to precompiler services.

Syntax:
 >>-.----.--CTRACE-----------------><  
    .-NO-+
Parameters:

None

Properties:

Default: NOCTRACE
Comments:

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.


SQL Option - DB

Specifies the name of the database that the program accesses.

Syntax:
 >>-.-----DB=--database-name-.-----><  
    .-NO--DB-----------------+
Parameters:

database-name An alphanumeric string obeying the rules for a Database Manager database name.

Properties:

Default: NODB
Comments:

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.


SQL Option - 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.

Syntax:
 >>-.----.--DB2--------------------><  
    .-NO-+
Parameters:

None

Properties:

Default: DB2
Comments:

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.


SQL Option - DBMAN

Specifies the database engine family that is being used at both compilation and run time.

Syntax:
 >>--.--------.--database-manager--><  
     .-DBMAN=-+
Parameters:

database-manager The type of database engine to use.

Properties:

Default: DBMAN=IBM
Comments:

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.


SQL Option - ECSPP

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.

Syntax:
 >>-.-------ECSPP=--parameter-.----><  
    ..----.-ECSPP-------------+ 
     .-NO-+
Parameters:

parameter This parameter has no effect on the behavior of this option. It is included for compatibility purposes.

Properties:

Default: NOECSPP


SQL Option - FORMAT

Determines the date and time format when date/time fields are assigned to string representations in host variables.

Syntax:
 >>---FORMAT=--date-format---------><  
 
Parameters:

date-format Identifies the format to use.

Properties:

Default: FORMAT=LOC
Comments:

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.


SQL Option - INIT

Makes the program initialize SQL and log on to the database.

Syntax:
 >>-.-------INIT=--mode-.----------><  
    ..----.-INIT--------+ 
     .-NO-+
[]Parameters:

mode Specifies whether the database is to be used in shared or exclusive mode.

Properties:

Default:
Comments:

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:


SQL Option - ISOLATION

Specifies the isolation level to use.

Syntax:
 >>---ISOLATION=--isol-level------->< 
 
Parameters:

isol-level The isolation level to use.

Properties:

Default: ISOLATION=CS
Comments:

The possible values of isol-level are:

RR Repeatable read
CS Cursor stability
UR Uncommitted read


SQL Option - NOT

Specifies the value to use for the NOT character (ª).

Syntax:
 >>---NOT=--integer----------------><  
 
Parameters:

integer The ASCII value, in decimal, of the character to use.

Properties:

Default: NOT=170
Comments:

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.


SQL Option - PASS

Specifies the userid and password of the database.

Syntax:
 >>-.-----PASS=--"usid.passwd"-.---><  
    .-NO--PASS-----------------+
Parameters:

usid.passwd An alphanumeric string obeying the rules for a userid and password, separated by a period. The period can be omitted.

Properties:

Default: NOPASS
Comments:

If the database has no password, use NOPASS. This option should only be specified if you are compiling against a remote database.


SQL Option - PRE

Enables SQL programs to be animated or run by preloading the database API modules.

Syntax:
 >>-.-------PRE=--set-level-.------><  
    ..----.-PRE-------------+ 
     .-NO-+
Parameters:

set-level Specifies which set of modules to preload

Properties:

Default: PRE=ALL
Comments:

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.


SQL Option - STDLVL

Specifies the standards level of the database manager.

Syntax:
 >>---STDLVL=--standard-level------>< 
Parameters:

standard-level The standard level to be used.

Properties:

Default: STDLVL=NONE
Comments:

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.


STDERR

Causes error messages to be echoed to STDERR rather than to the console (STDOUT).

Syntax:
 >>-.---.-.----.--STDERR--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSTDERR (on DOS, Windows and OS/2) STDERR (on UNIX)
Phase: Syntax check
Environment: All
$SET: Any


STICKY-LINKAGE

Makes parameters to the program remain linked during subsequent calls of the program.

Syntax:
 >>-.---.-.------STICKY-LINKAGE--"integer"-.-><  
    .-/-+ .-NO---STICKY-LINKAGE------------+
Parameters:

integer Either 1 or 2

Properties:

Default: NOSTICKY-LINKAGE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

Example:

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.

See also:

PARAMCOUNTCHECK Compiler directive


STICKY-PERFORM

Specifies the behavior of PERFORM statements when a program is reentered.

Syntax:
 >>-.---.-.----.--STICKY-PERFORM------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSTICKY-PERFORM
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

PERFORM-TYPE Compiler directive


STRUCT

Makes the Compiler produce extra information so that you can use the structure feature of Animator.

Syntax:
 >>-.---.-.----.--STRUCT--------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSTRUCT
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

STRUCT sets ANIM at end.
Set to NOSTRUCT at end by NOINT.

Comments:

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.


SUPFF

Suppresses form-feed characters on the compilation listing if it is sent to the screen.

Syntax:
 >>-.---.-.----.--SUPFF---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: SUPFF
Phase: Syntax check
Environment: All
$SET: Any


SYMBSTART

Sets the number from which the Compiler counts positions in the collating sequence when compiling the SYMBOLIC CHARACTERS clause.

Syntax:
 >>-.---.--SYMBSTART--"integer"-------------><  
    .-/-+
Parameters:

integer The number to be used.

Properties:

Default: SYMBSTART"1"
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

For ANSI conformance use SYMBSTART"1"; for compatibility with previous products use SYMBSTART"0".

Example:

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".


SYSIN

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.

Syntax:
 >>-.---.-.----.--SYSIN---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOSYSIN
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to NOSYSIN immediately by INDD and OUTDD
SYSIN sets NOINDD and NOOUTDD immediately

Comments:

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.

See also:

ACCEPT statement, format 1
DISPLAY statement, format 1
EXHIBIT statement
TRACE Compiler directive


TABLESEGCROSS

Makes the Compiler assume that a table defined as not crossing a segment boundary might actually cross a segment boundary.

Syntax:
 >>-.---.-.----.--TABLESEGCROSS-------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOTABLESEGCROSS
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

TABLESEGCROSS sets NOBOUNDOPT at end.

Comments:

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.

See also:

BOUNDOPT Compiler directive


TARGET

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.

Syntax:
 >>-.---.--TARGET--"processor-id"-----------><  
    .-/-+
Parameters:

processor-id Identifies the processor type

Properties:

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
Comments:

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.


TERMPAGE

Determines whether the last page of a report file is to be padded with blank lines until it is a full page in length.

Syntax:
 >>-.---.-.----.--TERMPAGE------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: TERMPAGE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


TIME

Puts the time at the top of each page of the listing.

Syntax:
 >>-.---.-.----.--TIME----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: TIME
Phase: Syntax check
Environment: All
$SET: No
Comments:

This directive has no effect if NODATE is specified.

See also:

DATE Compiler directive


TRACE

Enables READY TRACE and RESET TRACE statements.

Syntax:
 >>-.---.-.----.--TRACE---------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOTRACE
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.

See also:

SYSIN Compiler directive


TRICKLE

Tells the Compiler that the program contains legal but unstructured perform-ranges, and that certain optimizations cannot, therefore, be made.

Syntax:
 >>-.---.-.----.--TRICKLE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: TRICKLE
Phase: Generate
Environment: 16-bit
$SET: Initial
Dependencies:

Set to TRICKLE at end by PERFORM-TYPE"OSVS".
If ASSUME is set, NOTRICKLE sets NOALTER at end.

Comments:

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.

See also:

TRICKLECHECK Compiler directive


TRICKLECHECK

Returns a run-time error message if trickling occurs in a program that you want to generate with NOTRICKLE.

Syntax:
 >>-.---.-.----.--TRICKLECHECK--------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOTRICKLECHECK
Phase: Generate
Environment: 16-bit
$SET: Initial
Comments:

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.

See also:

ASMLIST Compiler directive
PARAS Compiler directive
SOURCEASM Compiler directive
TRICKLE Compiler directive


TRUNC

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.

Syntax:
 >>-.---.-.-------TRUNC--"method"-.---------><  
    .-/-+ ..----.-TRUNC-----------+ 
           .-NO-+
Parameters:

method See Comments.

Properties:

Default: TRUNC"ANSI"
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

Set to TRUNC"ANSI" immediately by NORM.
Set to NOTRUNC immediately by RM or RM"ANSI".

Comments:

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.


TRUNCCOPY

Specifies whether to truncate the names of copyfiles and ++INCLUDE files.

Syntax:
 >>-.---.-.----TRUNCCOPY--"integer"-.-------><  
    .-/-+ .-NO-TRUNCCOPY------------+
Parameters:

integer The number of characters to truncate the name of the copyfile to. Value between 8 and 255 inclusive.

Properties:

Default: NOTRUNCCOPY
Phase: Syntax check
Environment: All
$SET: Initial


USE

Makes the Compiler read directives from a file.

Syntax:
 >>-.---.--USE--"filename"------------------><  
    .-/-+
Parameters:

filename A full file specification.

Properties:

Default: Not set
Phase: Syntax check
Environment: All
$SET: Any
Comments:

USE is synonymous with DIRECTIVES. All rules that apply to DIRECTIVES also apply to USE.

See also:

DIRECTIVES Compiler directive


VERBOSE

Sends messages from the Compiler to the screen.

Syntax:
 >>-.---.-.----.--VERBOSE-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: VERBOSE (on DOS, Windows and OS/2) NOVERBOSE (on UNIX)
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

VERBOSE sets CONFIRM immediately.

Comments:

When VERBOSE is specified, messages concerning accepted directives and the size of code and data areas are displayed on the screen.


VSC2

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.

Syntax:
 >>-.---.-.-------VSC2--"integer"-.---------><  
    .-/-+ ..----.-VSC2------------+ 
           .-NO-+
Parameters:

integer The level of IBM VS COBOL II to be compatible with.

Properties:

Default: NOVSC2
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

If integer > 1, VSC2"integer" sets DBSPACE and DBCS"2" immediately.

If integer > 2, VSC2"integer" sets ANS85 at end.

Comments:

The possible values of integer are:

  1. VS COBOL II release 1.0 (Replaces the directives OLDVSC2 VSC2.)

  2. VS COBOL II release 2.0
    VS COBOL II release 3.x (when compiled with its CMPR2 directive)
    VS COBOL II release 4.x (when compiled with its CMPR2 directive)
    COBOL/370 V1R1 (when compiled with its CMPR2 directive)

  3. VS COBOL II release 3.x (when compiled with its NOCMPR2 directive)

  4. Synonymous with VSC2"3".

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".


WARNING

Specifies the lowest severity level of errors to report.

Syntax:
 >>-.---.-.----.-WARNING--.-"integer"-.-----><  
    .-/-+ |    .-WARNINGS-+           | 
          .-NO-.-WARNING--.-----------+ 
               .-WARNINGS-+
Parameters:

integer 1, 2 or 3.

Properties:

Default: WARNING"1"
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

FLAGAS Compiler directive
FLAGCD Compiler directive


WB

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.

Syntax:
 >>-.---.-.----.--WB------------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOWB
Phase: Syntax check
Environment: All
$SET: No
Dependencies:

WB sets ANIM immediately.


WB2

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.

Syntax:
 >>-.---.-.----.--WB2-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOWB2
Phase: Syntax check
Environment: All
$SET: No


WB3

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.

Syntax:
 >>-.---.-.----.--WB3-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOWB3
Phase: Syntax check
Environment: All
$SET: No


WRITELOCK

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.

Syntax:
 >>-.---.-.----.-.-WRITELOCK--.-------------><  
    .-/-+ .-NO-+ .-WRITE-LOCK-+
Parameters:

None

Properties:

Default: NOWRITELOCK
Phase: Syntax check
Environment: All
$SET: Initial
Comments:

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.


WRITETHROUGH

Specifies that disk writes are not to be buffered.

Syntax:
 >>-.---.-.----.-.-WRITETHROUGH-.-----------><  
    .-/-+ .-NO-+ .-WRITETHRU----+
Parameters:

None

Properties:

Default: NOWRITETHROUGH
Phase: Syntax check
Environment: All
$SET: All
Dependencies:

Requires CALLFH to be set.

Comments:

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.

See also:

CALLFH Compiler directive


XNIM

Makes the Compiler compile your program for animation as if ANIM had been specified, and then invoke Animator.

Syntax:
 >>-.---.-.----.--XNIM----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOXNIM
Phase: Syntax check
Environment: 16-bit and 32-bit on OS/2 and Windows NT
$SET: No
Comments:

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.

See also:

Animator Directives


XOPEN

Specifies that words reserved under the X/Open definition of COBOL are to be treated as reserved words.

Syntax:
 >>-.---.-.-------XOPEN--"level"-.----------><  
    .-/-+ ..----.-XOPEN----------+ 
           .-NO-+
Parameters:

level Must be 3 or 4. The level of the X/Open definition COBOL is to be compatible with.

Properties:

Default: NOXOPEN
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

XOPEN sets RTNCODE-SIZE"4" immediately.

Comments:

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:

See also:

DBCS Compiler directive
NLS Compiler directive
RTNCODE-SIZE Compiler directive


XREF

Makes the Compiler produce a cross-reference listing.

Syntax:
 >>-.---.-.----.--XREF----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOXREF
Phase: Syntax check
Environment: All
$SET: Initial
Dependencies:

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.

Comments:

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:

Example:

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.

See also:

RESEQ Compiler directive


ZEROLENGTHFALSE

Changes the way that class tests involving zero-length items are carried out.

Syntax:
 >>-.---.-.----.--ZEROLENGTHFALSE-----------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOZEROLENGTHFALSE
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.


ZEROSEQ

Causes leading zeros to appear in the sequence numbers in columns 1 through 6.

Syntax:
 >>-.---.-.----.--ZEROSEQ-------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOZEROSEQ
Phase: Syntax check
Environment: All
$SET: Any
Comments:

NOZEROSEQ suppresses these leading zeros.


ZWB

Affects the operation of comparisons between integer numeric data items of USAGE DISPLAY and alphanumeric literals or figurative constants.

Syntax:
 >>-.---.-.----.--ZWB-----------------------><  
    .-/-+ .-NO-+
Parameters:

None

Properties:

Default: NOZWB
Phase: Syntax check
Environment: All
$SET: Any
Comments:

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.

See also:

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.
PreviousUsing the Compiler LinkingNext