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 within OR

  • -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 SECTIONs

  • -fimplicit-goback-check

    check that code execution does not end implicit at end of PROCEDURE DIVISION

  • -fwrite-after

    use AFTER 1 for WRITE of LINE 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; unless NOT 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 to PICTURE/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 in XML/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 with VALUE 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 in WORKING-STORAGE

  • -flocal-implies-recursive


  • -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‘ for NUMERIC test of signed PACKED DECIMAL field

  • -fprogram-name-redefinition

    program names don’t lead to a reserved identifier

  • -faccept-update

    set WITH UPDATE clause as default for ACCEPT dest-item, instead of WITH NO UPDATE

  • -faccept-auto

    set WITH AUTO clause as default for ACCEPT dest-item, instead of WITH TAB

  • -fconsole-is-crt

    assume CONSOLE IS CRT if not set otherwise

  • -fno-echo-means-secure

    NO-ECHO hides input with asterisks like SECURE

  • -fline-col-zero-default

    assume a field DISPLAY starts at LINE 0 COL 0 (i.e. at the cursor), not LINE 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


  • -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, and CD), 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>


  • -fcontrol-division=<support>


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


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


  • -fsync-left-right=<support>

    LEFT/RIGHT phrases in SYNCHRONIZED 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>


  • -fpadding-character-clause=<support>


  • -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 for CALL

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


  • -faccept-display-extensions=<support>

    extensions to ACCEPT and DISPLAY

  • -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 without BY phrase (implies BY 1)

  • -freference-out-of-declaratives=<support>

    references to sections not in DECLARATIVES from within DECLARATIVES

  • -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 WITHLINKAGE

  • -fusing-optional=<support>


  • -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 var AS 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>


  • -fsequential-delimiters=<support>


  • -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 than COUNT IN

  • -fcontinue-after=<support>

    AFTER phrase in CONTINUE statement

  • -fgoto-entry=<support>

    ENTRY FOR GO TO and GO TO ENTRY statements

  • -fassign-variable=<support>

    ASSIGN [TO] variable in SELECT

  • -fassign-using-variable=<support>


  • -fassign-ext-dyn=<support>


  • -fassign-disk-from=<support>


  • -fvsam-status=<support>

    VSAM status in FILE STATUS

  • -fself-call-recursive=<support>

    CALL to own PROGRAM-ID implies RECURSIVE attribute

  • -frecord-contains-depending-clause=<support>


  • -fpicture-l=<support>

    PICTURE string with ‘L‘ character

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