GnuCOBOL compiler for most COBOL dialects with lots of extensions Usage: /usr/bin/cobc [options]... file... 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 [], --job[=] run program after build, passing -std= warnings/features for a specific 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= enable code generation for , see --list-exceptions for the possible values, sets -fsource-location -fno-ec= disable code generation for -o place the output into -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 generate and place a wide program listing into -t generate and place a program listing into --tlines= specify lines per page in listing, default = 55 -P[=] generate preprocessed program listing (.lst) -X, --Xref specify cross reference in listing -I add to copy/include search path -L add to library search path -l link the library -K generate CALL to as static -D define for COBOL compilation -A add to the C compile phase -Q add to the C link phase --coverage instrument generated binaries for coverage --conf= 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[=] save intermediate files * default: current directory -MT set/add target file used in dependency list -MF place dependency list into -ext 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- 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= treat specified as error -Wno-error= don't treat specified 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= 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= dump data fields on abort, may be a combination of: ALL, WS, LS, RD, FD, SC, LO -fcallfh= specifies to be used for I/O as external provided EXTFH interface module -febcdic-table=/ 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= checks for invalid writes to internal storage, 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= 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 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 LOCAL-STORAGE SECTION implies RECURSIVE 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' 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 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, 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> 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 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> 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 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> NOT ON EXCEPTION before ON EXCEPTION -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 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 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> RECORD DELIMITER clause -fsequential-delimiters=<support> BINARY-SEQUENTIAL and LINE-SEQUENTIAL phrases in RECORD 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 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> ASSIGN USING/VARYING variable in SELECT -fassign-ext-dyn=<support> ASSIGN EXTERNAL/DYNAMIC in SELECT -fassign-disk-from=<support> ASSIGN DISK FROM variable in SELECT -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> DEPENDING clause in RECORD CONTAINS -fpicture-l=<support> PICTURE string with 'L' character where <support> is one of the following: '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 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/>