Compiler cobc options
The following list of options was extracted from
cobc --help
and shows all available compiler options
with a short description.
Common Options
-h, --help
display this help and exit
-V, --version
display compiler version information and exit
-dumpversion
display compiler version and exit
-i, --info
display compiler information (build/environment) and exit
-v, --verbose
verbose mode, display additional information; multiple
-v
options increase the verbosity, the maximum is 3 as follows: (1) display compiler version and the commands invoked by the compiler, (2) pass verbose option to assembler/compiler (3) pass verbose option to linker-q, --brief
reduced displays, commands invoked not shown
-###
like -v but commands not executed
-x
build an executable program
-m
build a dynamically loadable module (default)
-j [<args>], --job[=<args>]
run program after build, passing <args>
-std=<dialect>
warnings/features for a specific dialect <dialect> can be one of: default, cobol2014, cobol2002, cobol85, xopen, ibm-strict, ibm, mvs-strict, mvs, mf-strict, mf, bs2000-strict, bs2000, acu-strict, acu, rm-strict, rm, gcos-strict, gcos; see configuration files in directory config
-F, --free
use free source format (alias for -fformat=free)
--fixed
use fixed source format (default; alias for
-fformat=fixed)
-O, -O2, -O3, -Os
enable optimization
-O0
disable optimization
-g
enable C compiler debug and stack check
-d, --debug
enable all run-time error checking, equal to
-fstack-check
-fec=
EC-ALL
-fec=<exception-name>
enable code generation for <exception-name>, see –list-exceptions for the possible values, sets
-fsource-location
-fno-ec=<exception-name>
disable code generation for <exception-name>
-o <file>
place the output into <file>
-b
combine all input files into a single dynamically loadable module
-E
preprocess only; do not compile or link
-C
translation only; convert COBOL to C
-S
compile only; output assembly file
-c
compile and assemble, but do not link
-T <file>
generate and place a wide program listing into <file>
-t <file>
generate and place a program listing into <file>
--tlines=<lines>
specify lines per page in listing, default = 55
-P[=<dir or file>]
generate preprocessed program listing (.lst)
-X, --Xref
specify cross reference in listing
-I <directory>
add <directory> to copy/include search path
-L <directory>
add <directory> to library search path
-l <lib>
link the library <lib>
-K <entry>
generate
CALL
to <entry> as static-D <define>
define <define> for COBOL compilation
-A <options>
add <options> to the C compile phase
-Q <options>
add <options> to the C link phase
--coverage
instrument generated binaries for coverage
--conf=<file>
user-defined dialect configuration; see -std
--list-reserved
display reserved words
--list-intrinsics
display intrinsic functions
--list-mnemonics
display mnemonic names
--list-exceptions
display exception names
--list-system
display system routines
--save-temps[=<dir>]
save intermediate files; default: current directory
-MT <target>
set/add target file used in dependency list
-MF <file>
place dependency list into <file>
-ext <extension>
add file extension for resolving
COPY
Warning options
-Wall
enable most warnings (all except as noted below)
-Wextra
like -Wall but enable some extra warning flags
-w
disable all warnings
-Wno-<warning>
disable warning enabled by default, -Wall or -Wextra
-Wadditional
additional warnings only raised with -Wall
-Wno-unfinished
do not warn if unfinished features are used; always active
-Wno-pending
do not warn if pending features are used; always active
-Wno-repository-checks
do not warn/check for program/function/external signature mismatch; always active
-Wno-ignored-error
do not warn about errors in code parts which are unreachable and so normally ignored; always active
-Wobsolete
warn if obsolete features are used
-Warchaic
warn if archaic features are used
-Wredefinition
warn about non-referenced ambiguous data items
-Wtruncate
warn about field truncation from constant assignments
-Wpossible-truncate
warn about possible field truncation; not set with
-Wall
-Woverlap
warn about overlapping
MOVE
of items-Wpossible-overlap
warn about
MOVE
of items that may overlap depending on variables; not set with-Wall
-Wparentheses
warn if parentheses are omitted around
AND
withinOR
-Wstrict-typing
warn strictly about type mismatch, even when same size; not set with
-Wall
-Wtyping
warn about type mismatch
-Wimplicit-define
warn whenever data items are implicitly defined; not set with
-Wall
-Wno-corresponding
do not warn about
CORRESPONDING
with no matching items; always active-Winitial-value
warn if initial
VALUE
clause is ignored-Wprototypes
warn about missing
FUNCTION
prototypes/definitions-Warithmetic-osvs
warn if arithmetic expression precision has changed
-Wcall-params
warn about non 01/77 items for
CALL
parameters; not set with-Wall
-Wconstant-expression
warn about expressions that always resolve to true/false
-Wconstant-numlit-expression
warn about numeric expressions that always resolve to true/false
-Wlarger-01-redefines
warn about larger redefines allowed by COBOL standards
-Wcolumn-overflow
warn about text after program-text area,
FIXED
format; not set with-Wall
-Wterminator
warn about lack of scope terminator
END-XXX
; not set with-Wall
-Wlinkage
warn about dangling
LINKAGE
items; not set with-Wall
-Wunreachable
warn about likely unreachable statements; not set with
-Wall
-Wno-dialect
do not warn about dialect specific issues; always active
-Wno-goto-section
do not warn about
GO
TO
section-name; always active-Wgoto-different-section
warn about
GO
TO
a praragraph defined in a different section-Wsuspicious-perform-thru
warn if
PERFORM
THRU
references procedures not in ascending order or multiple sections; always active-Wdangling-text
warn about source text after program-area; not set with
-Wall
-Wno-missing-newline
do not warn about missing newlines; always active
-Wno-others
do not warn about different issues; always active
-Wno-unsupported
do not warn if runtime does not support a feature used
-fdiagnostics-plain-output
make diagnostic output as plain as possible
-Werror
treat all warnings as errors
-Wno-error
don’t treat warnings as errors
-Werror=<warning>
treat specified <warning> as error
-Wno-error=<warning>
don’t treat specified <warning> as error
Compiler options
-fsign=[ASCII|EBCDIC]
define display sign representation; default: machine native
-ffold-copy=[UPPER|LOWER]
fold
COPY
subject to value; default: no transformation-ffold-call=[UPPER|LOWER]
fold
PROGRAM-ID
,CALL
,CANCEL
subject to value; default: no transformation-fmax-errors=<number>
maximum number of errors to report before compilation is aborted; default: 128
-fintrinsics=[ALL|intrinsic function name(,name,...)]
intrinsics to be used without
FUNCTION
keyword-fdump=<scope>
dump data fields on abort, <scope> may be a combination of:
ALL
,WS
,LS
,RD
,FD
,SC
,LO
-fcallfh=<name>
specifies <name> to be used for I/O as external provided EXTFH interface module
-febcdic-table=<cconv-table>/<file>
EBCDIC/ASCII
translation table; e.g. default, ebcdic500_latin1…-fdefault-colseq=[ASCII|EBCDIC|NATIVE]
define default collating sequence; default:
NATIVE
-fstack-extended
store origin of entrypoints and
PERFORM
; turned on by --debug
/-fdump
-fno-remove-unreachable
disable remove of unreachable code; turned off by
-g
-ftrace
generate trace code; scope: executed
SECTION/PARAGRAPH
-ftraceall
generate trace code; scope: executed
SECTION/PARAGRAPH/STATEMENTS
-fsyntax-only
syntax error checking only; don’t emit any output
-fdebugging-line
enable debugging lines; ‘
D
‘ in indicator column or floating>>D
-fsource-location
generate source location code; turned on by -
-debug
/-ftraceall
/-fec
/-fdump
-fimplicit-init
automatic initialization of the COBOL runtime system
-fno-recursive-check
disable check of recursive program call; effectively compiling as
RECURSIVE
program-fstack-check
PERFORM
stack checking; turned on by --debug
/-g
-fmemory-check=<scope>
checks for invalid writes to internal storage, <scope> may be one of: all, pointer, using, none; default: none, set to all by -
-debug
-fsection-exit-check
check that code execution does not leave the scope of
SECTION
s-fimplicit-goback-check
check that code execution does not end implicit at end of
PROCEDURE
DIVISION
-fwrite-after
use
AFTER 1
forWRITE
ofLINE
SEQUENTIAL
; default:BEFORE 1
-fmfcomment
‘
\*
‘ in column 1 treated as comment with listing suppression; FIXED/COBOL85/VARIABLE format only-facucomment
‘
$
‘ in indicator area treated as ‘\*
‘, ‘|
‘ treated as floating comment-fno-trunc
allow numeric field overflow; non-ANSI behaviour
-fsingle-quote
use a single quote (apostrophe) for
QUOTE
; default: double quote-foptional-file
treat all files as
OPTIONAL
; unlessNOT
OPTIONAL
specified-fstatic-call
output static function calls for the
CALL
statement-fno-gen-c-decl-static-call
disable generation of C function declarations for subroutines with static
CALL
-fgen-c-line-directives
generate source location directives in C code;; turned on by
-g
/–coverage-fgen-c-labels
generate extra labels in C sources;; turned on by
-g
-fno-theaders
suppress all headers from listing while keeping page breaks
-fno-tsource
suppress source from listing
-fno-tmessages
suppress warning and error summary from listing
-ftsymbols
specify symbols in listing
-ftcmd
specify command line in listing
-fno-ttimestamp
suppress timestamp in listing headers
-fttitle=<title>
set listing title with ‘
_
‘ replaced by spaces; defaults to package name and version-fno-diagnostics-show-option
suppress output of option that directly controls the diagnostic
-fno-diagnostics-show-caret
do not display source context on warning/error diagnostic
-fno-diagnostics-show-line-numbers
suppress display of line numbers in diagnostics
-fdiagnostics-absolute-path
display paths with absolute paths
Compiler dialect configuration options
-freserved-words=<value>
use of complete/fixed reserved words
-ftab-width=1..12
number of spaces that are assumed for tabs
-ftext-column=72..255
right margin column number for fixed-form reference-format
-fpic-length=<number>
maximum number of characters allowed in the
PICTURE
character-string-fword-length=1..63
maximum word-length for COBOL (= programmer defined) words
-fliteral-length=<number>
maximum literal size in general
-fnumeric-literal-length=1..38
maximum numeric literal size
-fdefaultbyte=<value>
default initialization for fields without
VALUE
, may be one of; character in quotes; decimal 0..255 representing a character; “init” to initialize toPICTURE/USAGE
; “none” to do no explicit initialization; default: “init”-fformat=<value>
default reference-format, may be one of:
FIXED
,FREE
, COBOL85,VARIABLE
,XOPEN
,XCARD
,CRT
,TERMINAL
, COBOLX-fbinary-size=<value>
binary byte size - defines the allocated bytes according to
PIC
, may be one of: 2-4-8, 1-2-4-8, 1–8-fbinary-byteorder=<value>
binary byte order, may be one of: native, big-endian
-fassign-clause=<value>
how to interpret
ASSIGN <word>: as ASSIGN EXTERNAL <word> or ASSIGN DYNAMIC <word>
, may be one of:dynamic
,external
,ibm
(= external),mf
(= dynamic)-fscreen-section-rules=<value>
which compiler’s rules to apply to
SCREEN
SECTION
item clauses, may be one of: acu, gc, mf, rm, std, xopen-fdpc-in-data=<value>
whether
DECIMAL-POINT
IS
COMMA
has effect inXML/JSON
GENERATE
, may be one of: none, xml, json, all-fsubscript-check=<value>
checking for subscript (only done with
EC-BOUND-SUBSCRIPT
active), may be one of: full, max, record-ffilename-mapping
resolve file names at run time using environment variables
-fpretty-display
alternate formatting of numeric fields
-fbinary-truncate
numeric truncation according to ANSI
-fcomplex-odo
allow non-standard
OCCURS
DEPENDING
ON
syntax-fodoslide
adjust items following
OCCURS
DEPENDING
(implies complex-odo)-finit-justify
applies
JUSTIFY
withVALUE
clause-findirect-redefines
allow
REDEFINES
to other than last equal level number-frelax-syntax-checks
allow certain syntax variations (e.g.
REDEFINES
position)-fref-mod-zero-length
allow zero length reference-modification (only changed with
EC-BOUND-REF-MOD
active)-frelax-level-hierarchy
allow non-matching level numbers
-fselect-working
require
ASSIGN
USING
items to be inWORKING-STORAGE
-flocal-implies-recursive
LOCAL-STORAGE
SECTION
impliesRECURSIVE
attribute-fsticky-linkage
LINKAGE
SECTION
items remain allocated between invocations-fmove-ibm
MOVE
operates as on IBM (left to right, byte by byte)-fperform-osvs
exit point of any currently executing perform is recognized if reached
-farithmetic-osvs
limit precision in intermediate results to precision of final result (less accurate)
-fconstant-folding
evaluate constant expressions at compile time
-fhostsign
allow hexadecimal value ‘
F
‘ forNUMERIC
test of signedPACKED
DECIMAL
field-fprogram-name-redefinition
program names don’t lead to a reserved identifier
-faccept-update
set
WITH
UPDATE
clause as default forACCEPT
dest-item, instead ofWITH
NO
UPDATE
-faccept-auto
set
WITH
AUTO
clause as default forACCEPT
dest-item, instead ofWITH
TAB
-fconsole-is-crt
assume
CONSOLE
IS
CRT
if not set otherwise-fno-echo-means-secure
NO-ECHO
hides input with asterisks likeSECURE
-fline-col-zero-default
assume a field
DISPLAY
starts atLINE 0
COL 0
(i.e. at the cursor), notLINE 1
COL 1
-fdisplay-special-fig-consts
special behaviour of
DISPLAY
SPACE/ALL
X'01'/ALL
X'02'/ALL
X'07'
-fbinary-comp-1
COMP-1
is a 16-bit signed integer-fnumeric-pointer
POINTER
is a 64-bit unsigned integer-fmove-non-numeric-lit-to-numeric-is-zero
imply zero in move of non-numeric literal to numeric items
-fimplicit-assign-dynamic-var
implicitly define a variable if an
ASSIGN
DYNAMIC
does not match any data item-fdevice-mnemonics
specifying device by mnemonic
-fxml-parse-xmlss
XML
PARSE
XMLSS
-fareacheck
check contents of Area A (when reference format supports Area A enforcement), enabled checks include:; division, section, paragraph names, level indicators (
FD
,SD
,RD
, andCD
), and toplevel numbers (01 and 77) must start in Area A;; statements must not start in Area A; and; separator periods must not be within Area A-fcomment-paragraphs=<support>
comment paragraphs in
IDENTIFICATION
DIVISION
(AUTHOR
,DATE-WRITTEN
, …)-fcontrol-division=<support>
CONTROL
DIVISION
-fpartial-replace-when-literal-src=<support>
apply partial replacing with literal source operand even when it replaces with spaces only;; “skip” prevents such replacements
-fmemory-size-clause=<support>
MEMORY-SIZE
clause-fmultiple-file-tape-clause=<support>
MULTIPLE-FILE-TAPE
clause-flabel-records-clause=<support>
LABEL-RECORDS
clause-fvalue-of-clause=<support>
VALUE-OF
clause-fdata-records-clause=<support>
DATA-RECORDS
clause-ftop-level-occurs-clause=<support>
OCCURS
clause on top-level-fsame-as-clause=<support>
SAME
AS
clause-ftype-to-clause=<support>
TYPE
TO
clause-fusage-type=<support>
USAGE
type-name-fsynchronized-clause=<support>
SYNCHRONIZED
clause-fsync-left-right=<support>
LEFT/RIGHT
phrases inSYNCHRONIZED
clause-fspecial-names-clause=<support>
SPECIAL-NAMES
clause-fgoto-statement-without-name=<support>
GO
TO
statement without name-fstop-literal-statement=<support>
STOP
-literal statement-fstop-identifier-statement=<support>
STOP
-identifier statement-fstop-error-statement=<support>
STOP
ERROR
statement-fdebugging-mode=<support>
DEBUGGING
MODE
and debugging indicator-fuse-for-debugging=<support>
USE
FOR
DEBUGGING
-fpadding-character-clause=<support>
PADDING
CHARACTER
clause-fnext-sentence-phrase=<support>
NEXT
SENTENCE
phrase-flisting-statements=<support>
listing-directive statements
EJECT
,SKIP1
,SKIP2
,SKIP3
-ftitle-statement=<support>
listing-directive statement
TITLE
-fentry-statement=<support>
ENTRY
statement-fmove-noninteger-to-alphanumeric=<support>
move noninteger to alphanumeric
-fmove-figurative-constant-to-numeric=<support>
move figurative constants to numeric
-fmove-figurative-space-to-numeric=<support>
move figurative constant
SPACE
to numeric-fmove-figurative-quote-to-numeric=<support>
move figurative constant
QUOTE
to numeric-fodo-without-to=<support>
OCCURS
DEPENDING
ON
without to-fsection-segments=<support>
section segments
-falter-statement=<support>
ALTER
statement-fcall-overflow=<support>
OVERFLOW
clause forCALL
-fnumeric-boolean=<support>
boolean literals (
B'1010'
)-fhexadecimal-boolean=<support>
hexadecimal-boolean literals (
BX'A'
)-fnational-literals=<support>
national literals (
N'UTF-16 <string>'
)-fhexadecimal-national-literals=<support>
hexadecimal-national literals (
NX'265E'
)-fnational-character-literals=<support>
non-standard national literals (
NC'UTF-16 <string>'
)-fhp-octal-literals=<support>
HP
COBOL octal literals (%377)-facu-literals=<support>
ACUCOBOL-GT literals (
#B
#O
#H
#X
)-febcdic-symbolic-characters
EBCDIC
symbolic characters in literals (” “135,151,151”bar”195, 194”Z” for ” foobarBAZ
“)-fword-continuation=<support>
continuation of COBOL words
-fnot-exception-before-exception=<support>
NOT
ON
EXCEPTION
beforeON
EXCEPTION
-faccept-display-extensions=<support>
extensions to
ACCEPT
andDISPLAY
-frenames-uncommon-levels=<support>
RENAMES
of 01-, 66- and 77-level items-flarger-redefines=<support>
allow larger
REDEFINES
items-fsymbolic-constant=<support>
constants defined in
SPECIAL-NAMES
-fconstant-78=<support>
constant with level 78 item (note: has left to right precedence in expressions)
-fconstant-01=<support>
constant with level 01
CONSTANT
AS/FROM
item-fperform-varying-without-by=<support>
PERFORM
VARYING
withoutBY
phrase (impliesBY 1
)-freference-out-of-declaratives=<support>
references to sections not in
DECLARATIVES
from withinDECLARATIVES
-fprogram-prototypes=<support>
CALL/CANCEL
with program-prototype-name-fcall-convention-mnemonic=<support>
specifying call-convention by mnemonic
-fcall-convention-linkage=<support>
specifying call-convention by
WITH
…LINKAGE
-fusing-optional=<support>
support for
PROCEDURE
DIVISION
USING
OPTIONAL
-fnumeric-value-for-edited-item=<support>
numeric literals in
VALUE
clause of numeric-edited items-fincorrect-conf-sec-order=<support>
incorrect order of
CONFIGURATION
SECTION
paragraphs-fdefine-constant-directive=<support>
allow >>
DEFINE
CONSTANT
varAS
literal-ffree-redefines-position=<support>
REDEFINES
clause not following entry-name in definition-frecords-mismatch-record-clause=<support>
record sizes does not match
RECORD
clause-frecord-delimiter=<support>
RECORD
DELIMITER
clause-fsequential-delimiters=<support>
BINARY-SEQUENTIAL
andLINE-SEQUENTIAL
phrases inRECORD
DELIMITER
-frecord-delim-with-fixed-recs=<support>
RECORD
DELIMITER
clause on file with fixed-length records-fmissing-statement=<support>
missing statement (e.g. empty
IF
/PERFORM
)-fmissing-period=<support>
missing period in
PROCEDURE
DIVISION
(when reference format supports Area A enforcement)-fzero-length-literals=<support>
zero-length literals, e.g. ‘’ and “”
-fxml-generate-extra-phrases=<support>
XML
GENERATE'
s phrases other thanCOUNT
IN
-fcontinue-after=<support>
AFTER
phrase inCONTINUE
statement-fgoto-entry=<support>
ENTRY
FOR
GO
TO
andGO
TO
ENTRY
statements-fassign-variable=<support>
ASSIGN
[TO]
variable inSELECT
-fassign-using-variable=<support>
ASSIGN
USING/VARYING
variable inSELECT
-fassign-ext-dyn=<support>
ASSIGN
EXTERNAL/DYNAMIC
inSELECT
-fassign-disk-from=<support>
ASSIGN
DISK
FROM
variable inSELECT
-fvsam-status=<support>
VSAM
status inFILE
STATUS
-fself-call-recursive=<support>
CALL
to ownPROGRAM-ID
impliesRECURSIVE
attribute-frecord-contains-depending-clause=<support>
DEPENDING
clause inRECORD
CONTAINS
-fpicture-l=<support>
PICTURE
string with ‘L
‘ characterwhere <support> is one of:
ok, warning, archaic, obsolete, skip, ignore, error, unconformable
-fnot-reserved=<word>
<word> to be taken out of the reserved words list
-freserved=<word>
<word> to be added to reserved words list
-freserved=<word>:<alias>
<word> to be added to reserved words list as <alias>
-fnot-register=<word>
special register to disable
-fregister=<word> or <word>:<definition>, where definition uses backslash esca
special register to enable