Your company here, and a link to your site. Click to find out more.

cobc - Man Page

manual page for cobc 3.2.0


cobc [options]... file...


GnuCOBOL compiler for most COBOL dialects with lots of extensions


-h,  --help

display this help and exit

-V,  --version

display compiler version information and exit


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


build an executable program


build a dynamically loadable module (default)

-j [<args>], --job[=<args>]

run program after build, passing <args>


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)


use fixed source format (default; alias for -fformat=fixed)

-O,  -O2,  -O3,  -Os

enable optimization


disable optimization


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


disable code generation for <exception-name>

-o <file>

place the output into <file>


combine all input files into a single dynamically loadable module


preprocess only; do not compile or link


translation only; convert COBOL to C


compile only; output assembly file


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>


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


instrument generated binaries for coverage


user-defined dialect configuration; see -std


display reserved words


display intrinsic functions


display mnemonic names


display exception names


display system routines


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


enable most warnings (all except as noted below)


like -Wall but enable some extra warning flags


disable all warnings


disable warning enabled by default, -Wall or -Wextra


additional warnings only raised with -Wall


do not warn if unfinished features are used * ALWAYS active


do not warn if pending features are used * ALWAYS active


do not warn/check for program/function/external signature mismatch * ALWAYS active


do not warn about errors in code parts which are unreachable and so normally ignored * ALWAYS active


warn if obsolete features are used


warn if archaic features are used


warn about non-referenced ambiguous data items


warn about field truncation from constant assignments


warn about possible field truncation * NOT set with -Wall


warn about overlapping MOVE of items


warn about MOVE of items that may overlap depending on variables * NOT set with -Wall


warn if parentheses are omitted around AND within OR


warn strictly about type mismatch, even when same size * NOT set with -Wall


warn about type mismatch


warn whenever data items are implicitly defined * NOT set with -Wall


do not warn about CORRESPONDING with no matching items * ALWAYS active


warn if initial VALUE clause is ignored


warn about missing FUNCTION prototypes/definitions


warn if arithmetic expression precision has changed


warn about non 01/77 items for CALL parameters * NOT set with -Wall


warn about expressions that always resolve to true/false


warn about numeric expressions that always resolve to true/false


warn about larger redefines allowed by COBOL standards


warn about text after program-text area, FIXED format * NOT set with -Wall


warn about lack of scope terminator END-XXX * NOT set with -Wall


warn about dangling LINKAGE items * NOT set with -Wall


warn about likely unreachable statements * NOT set with -Wall


do not warn about dialect specific issues * ALWAYS active


do not warn about GO TO section-name * ALWAYS active


warn about GO TO a praragraph defined in a different section


warn if PERFORM THRU references procedures not in ascending order or multiple sections * ALWAYS active


warn about source text after program-area * NOT set with -Wall


do not warn about missing newlines * ALWAYS active


do not warn about different issues * ALWAYS active


do not warn if runtime does not support a feature used


make diagnostic output as plain as possible


treat all warnings as errors


don't treat warnings as errors


treat specified <warning> as error


don't treat specified <warning> as error

Compiler options

-fsign=[ASCII|EBCDIC] define display sign representation

* default: machine native


fold COPY subject to value * default: no transformation


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


dump data fields on abort, <scope> may be a combination of: ALL, WS, LS, RD, FD, SC, LO


specifies <name> to be used for I/O as external provided EXTFH interface module


EBCDIC/ASCII translation table * e.g. default, ebcdic500_latin1...


define default collating sequence * default: NATIVE


store origin of entrypoints and PERFORM * turned on by --debug/-fdump


disable remove of unreachable code * turned off by -g


generate trace code * scope: executed SECTION/PARAGRAPH


generate trace code * scope: executed SECTION/PARAGRAPH/STATEMENTS


syntax error checking only; don't emit any output


enable debugging lines * 'D' in indicator column or floating >>D


generate source location code * turned on by --debug/-ftraceall/-fec/-fdump


automatic initialization of the COBOL runtime system


disable check of recursive program call; effectively compiling as RECURSIVE program


PERFORM stack checking * turned on by --debug/-g


checks for invalid writes to internal storage, <scope> may be one of: all, pointer, using, none * default: none, set to all by --debug


check that code execution does not leave the scope of SECTIONs


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


use AFTER 1 for WRITE of LINE SEQUENTIAL * default: BEFORE 1


'*' in column 1 treated as comment with listing suppression * FIXED/COBOL85/VARIABLE format only


'$' in indicator area treated as '*', '|' treated as floating comment


allow numeric field overflow * non-ANSI behaviour


use a single quote (apostrophe) for QUOTE * default: double quote


treat all files as OPTIONAL * unless NOT OPTIONAL specified


output static function calls for the CALL statement


disable generation of C function declarations for subroutines with static CALL


generate source location directives in C code; * turned on by -g/--coverage


generate extra labels in C sources; * turned on by -g


suppress all headers from listing while keeping page breaks


suppress source from listing


suppress warning and error summary from listing


specify symbols in listing


specify command line in listing


suppress timestamp in listing headers


set listing title with '_' replaced by spaces; defaults to package name and version


suppress output of option that directly controls the diagnostic


do not display source context on warning/error diagnostic


suppress display of line numbers in diagnostics

Compiler dialect configuration options


use of complete/fixed reserved words


number of spaces that are assumed for tabs


right margin column number for fixed-form reference-format


maximum number of characters allowed in the PICTURE character-string


maximum word-length for COBOL (= programmer defined) words


maximum literal size in general


maximum numeric literal size


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"


default reference-format, may be one of: FIXED, FREE, COBOL85, VARIABLE, XOPEN, XCARD, CRT, TERMINAL, COBOLX


binary byte size - defines the allocated bytes according to PIC, may be one of: 2-4-8, 1-2-4-8, 1--8


binary byte order, may be one of: native, big-endian


how to interpret 'ASSIGN word': as 'ASSIGN EXTERNAL word' or 'ASSIGN DYNAMIC word', may be one of: dynamic, external, ibm (= external), mf (= dynamic)


which compiler's rules to apply to SCREEN SECTION item clauses, may be one of: acu, gc, mf, rm, std, xopen


whether DECIMAL-POINT IS COMMA has effect in XML/JSON GENERATE, may be one of: none, xml, json, all


checking for subscript (only done with EC-BOUND-SUBSCRIPT active), may be one of: full, max, record


resolve file names at run time using environment variables


alternate formatting of numeric fields


numeric truncation according to ANSI


allow non-standard OCCURS DEPENDING ON syntax


adjust items following OCCURS DEPENDING (implies complex-odo)


applies JUSTIFY with VALUE clause


allow REDEFINES to other than last equal level number


allow certain syntax variations (e.g. REDEFINES position)


allow zero length reference-modification (only changed with EC-BOUND-REF-MOD active)


allow non-matching level numbers


require ASSIGN USING items to be in WORKING-STORAGE




LINKAGE SECTION items remain allocated between invocations


MOVE operates as on IBM (left to right, byte by byte)


exit point of any currently executing perform is recognized if reached


limit precision in intermediate results to precision of final result (less accurate)


evaluate constant expressions at compile time


allow hexadecimal value 'F' for NUMERIC test of signed PACKED DECIMAL field


program names don't lead to a reserved identifier


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


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


assume CONSOLE IS CRT if not set otherwise


NO-ECHO hides input with asterisks like SECURE


assume a field DISPLAY starts at LINE 0 COL 0 (i.e. at the cursor), not LINE 1 COL 1


special behaviour of DISPLAY SPACE/ALL X'01'/ALL X'02'/ALL X'07'


COMP-1 is a 16-bit signed integer


POINTER is a 64-bit unsigned integer


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


specifying device by mnemonic




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


comment paragraphs in IDENTIFICATION DIVISION (Author, DATE-WRITTEN, ...)




apply partial replacing with literal source operand even when it replaces with spaces only; * "skip" prevents such replacements



-fmultiple-file-tape-clause=<support> MULTIPLE-FILE-TAPE clause




VALUE-OF clause




OCCURS clause on top-level


SAME AS clause


TYPE TO clause


USAGE type-name








GO TO statement without name


STOP-literal statement

-fstop-identifier-statement=<support> STOP-identifier statement


STOP ERROR statement


DEBUGGING MODE and debugging indicator

-fuse-for-debugging=<support> USE FOR DEBUGGING






listing-directive statements EJECT, SKIP1, SKIP2, SKIP3


listing-directive statement TITLE


ENTRY statement


move noninteger to alphanumeric


move figurative constants to numeric


move figurative constant SPACE to numeric


move figurative constant QUOTE to numeric




section segments


ALTER statement


OVERFLOW clause for CALL


boolean literals (B'1010')


hexadecimal-boolean literals (BX'A')

-fnational-literals=<support> national literals (N'UTF-16 string')


hexadecimal-national literals (NX'265E')


non-standard national literals (NC'UTF-16 string')

-fhp-octal-literals=<support> HP COBOL octal literals (%377)


ACUCOBOL-GT literals (#B #O #H #X)


EBCDIC symbolic characters in literals (" "135,151,151"bar"195, 194"Z" for " foobarBAZ")

-fword-continuation=<support> continuation of COBOL words



-faccept-display-extensions=<support> extensions to ACCEPT and DISPLAY


RENAMES of 01-, 66- and 77-level items


allow larger REDEFINES items

-fsymbolic-constant=<support> constants defined in SPECIAL-NAMES


constant with level 78 item (note: has left to right precedence in expressions)


constant with level 01 CONSTANT AS/FROM item


PERFORM VARYING without BY phrase (implies BY 1)


references to sections not in DECLARATIVES from within DECLARATIVES


CALL/CANCEL with program-prototype-name


specifying call-convention by mnemonic


specifying call-convention by WITH ... LINKAGE




numeric literals in VALUE clause of numeric-edited items


incorrect order of CONFIGURATION SECTION paragraphs

-fdefine-constant-directive=<support> allow >> DEFINE CONSTANT var AS literal


REDEFINES clause not following entry-name in definition


record sizes does not match RECORD clause






RECORD DELIMITER clause on file with fixed-length records

-fmissing-statement=<support> missing statement (e.g. empty IF / PERFORM)


missing period in PROCEDURE DIVISION (when reference format supports Area A enforcement)


zero-length literals, e.g. '' and ""


XML GENERATE's phrases other than COUNT IN


AFTER phrase in CONTINUE statement


ENTRY FOR GO TO and GO TO ENTRY statements


ASSIGN [TO] variable in SELECT










CALL to own PROGRAM-ID implies RECURSIVE attribute




PICTURE string with 'L' character

where <support> is one of the following: 'ok', 'warning', 'archaic', 'obsolete', 'skip', 'ignore', 'error', 'unconformable'


word to be taken out of the reserved words list


word to be added to reserved words list


word to be added to reserved words list as alias


special register to disable

-fregister=<word> or <word>:<definition>, where definition uses backslash esca

special register to enable


Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart Built     Jul 28 2023 19:20:47 Packaged  Jul 28 2023 17:02:56 UTC C version "10.2.1 20210110"

Reporting Bugs

Report bugs to: bug-gnucobol@gnu.org or (preferably) use the issue tracker via the home page.
GnuCOBOL home page: <https://www.gnu.org/software/gnucobol/>
General help using GNU software: <https://www.gnu.org/gethelp/>

See Also

The full documentation for cobc is maintained as a Texinfo manual.  If the info and cobc programs are properly installed at your site, the command

info gnucobol

should give you access to the complete manual.


July 2023 GnuCOBOL 3.2.0