"Fossies" - the Fresh Open Source Software Archive

Member "gnucobol-3.2/NEWS" (28 Jul 2023, 62662 Bytes) of package /linux/misc/gnucobol-3.2.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "NEWS": 3.1.2_vs_3.2.

    1 NEWS - user visible changes				-*- outline -*-
    2 
    3  GnuCOBOL 3.2     (20230728)
    4  GnuCOBOL 3.2rc1  (20230118)
    5  GnuCOBOL 3.2rc2  (20230210)
    6 
    7 * New GnuCOBOL features
    8 
    9 ** Support for LINE SEQUENTIAL file type as per COBOL 2023
   10   * OPEN INPUT-OUTPUT and REWRITE are allowed (note that INPUT-OUTPUT
   11     leads to slower IO for LINE SEQUENTIAL files)
   12   * validation of data on (RE-)WRITE and READ, active by default,
   13     can be adjusted with the new runtime option COB_LS_VALIDATE
   14 
   15 ** New intrinsic functions
   16 
   17   BIT-OF, BIT-TO-CHAR, HEX-OF, HEX-TO-CHAR
   18 
   19 ** Support for COBOL 2023 directive COBOL-WORDS
   20 
   21 ** Support for bit operations according to COBOL 2023 with MF compatibility
   22 
   23 ** Support for additional $SET directives: ODOSLIDE
   24 
   25 ** Support for the EXTFH has been greatly enhanched and now includes support
   26    for FH--FCD and FH--KEYDEF, fixed use of different attributes and changing
   27    pointers and now supports - for 32-bit builds - an internal conversion
   28    between FCD2 and FCD3 for cases where existing programs are coded with FCD2
   29 
   30 ** OCCURS with multiple VALUEs supported (BS2000 format, FROM and TO pending)
   31 
   32 ** new function to call COBOL from C that doesn't abort the program in case
   33    of runtime errors or STOP RUN: cob_call_with_exception_check()
   34 
   35 ** Support for the GCOS 7 (Bull) dialect, including:
   36    * PICTURE strings with L character (variable length fields)
   37    * CONTROL DIVISION with SUBSTITUTION SECTION (full support) and DEFAULT
   38      SECTION (partial support)
   39 
   40 ** Multiple sequential files can be concatenated by specifying multiple
   41    files with a separator in the ASSIGN name (either directly or via
   42    environment), see the new runtime options
   43    COB_SEQ_CONCAT_NAME (defaults to false) and COB_SEQ_CONCAT_SEP
   44 
   45 ** Initial "testing support" of CODE-SET clause to convert between ASCII and
   46    EBCDIC on READ/WRITE/REWRITE for sequential and line-sequential files
   47 
   48 ** Initial "testing support" of FLOAT-EXTENDED (long double type)
   49 
   50 ** minimal "parsing support" for USAGE UTF-8 and UTF-8 literals
   51 
   52 ** Support to exit the runtime from COBOL as hard error (including possible
   53    [core-]dump and stacktrace) with "STOP ERROR" statement or by
   54    CALL "CBL_RUNTIME_ERROR"
   55 
   56 ** COB_PHYSICAL_CANCEL can now be configured as "never" to prevent unloading
   57    of COBOL modules, both on CANCEL and on process exit, which is useful for
   58    analysis tools such as callgrind or perf to keep all symbols until the end
   59    of the COBOL process
   60 
   61 ** the system function x'91' has been extended to support more functions
   62 
   63 * Changes that potentially effect existing programs:
   64 
   65 ** ALLOCATE statement: earlier versions of GnuCOBOL initialized the memory
   66    (to binary zero) if the INITIALIZED clause was not specified,
   67    this isn't done anymore so if you need the memory to be initialized
   68    specify that explicit in the source and recompile
   69 
   70 ** variable-length RECORD SEQUENTIAL files, data validation on READ:
   71    the length of the record as stored in the file is now checked for correct
   72    format and is then compared against the record size defined in the program;
   73    if the minimal record size specified is bigger, then the data is only
   74    written up to the record length for that record, the other data is
   75    undefined and io status 04 returned; if the record length is bigger than
   76    the record size the record from the file is truncated, io status 04 set
   77    and the following READ will start at the next record;
   78    additionally on OPEN the length of the first record is read and if it
   79    isn't within the above rulesan io status 39 is returned; as the default
   80    format "COB_VARSEQ_TYPE = 0" contains two NULL bytes this will likely
   81    make most LINE SEQUENTIAL files not declared as this type fail on OPEN
   82 
   83 ** LINE SEQUENTIAL files, data validation: in case of bad printable data
   84    (less than SPACE) a READ may result in io status 09 and WRITE may error
   85    with io status 71; see the new runtime option COB_LS_VALIDATE to disable
   86    this validation (= old behavior) and to increase performance on line
   87    sequential file io;
   88    if LS_NULLS is active and invalid data (bad encoded or missing encoding)
   89    is found io status 71 is returned
   90 
   91 ** LINE SEQUENTIAL files, handling of records that are "too long":
   92    in case of "overflowing" records previous versions of GnuCOBOL cut the
   93    data, set io status 00 and skipped the file until the next line
   94    terminator is found;
   95    the default changed (per COBOL 2023 and other compilers) so the data is
   96    returned as "multiple" records and a warning (status 06) is issued;
   97    setting COB_LS_SPLIT = false will have the old behaviour of truncating
   98    the record, but will now set status 04
   99 
  100 ** FUNCTION RANDOM: the internal randomizer was changed from "C" to "GMP"
  101    this means that the sequence of random numbers are different when using
  102    the same seed as versions before 3.2
  103    while the changed use has the downside of taking longer for each seeding,
  104    it provides a much better distributed sequence and increases portability
  105    (switching to a different "C" runtime or operating system won't change the
  106    sequences); additional the implementor-defined default seeding was changed
  107    from "0 in most cases" to a random seed;
  108    if you _want_ the return values to be identical you always need to specify
  109    a seed (including possibly 0);
  110    the old behaviour can be enforced by compiling GnuCOBOL with
  111    LIBCOB_CPPFLAGS=-DDISABLE_GMP_RANDOM
  112 
  113 ** FUNCTION EXCEPTION-LOCATION: if the source raising an exception was not
  114    compiled with location information this function previously returned
  115    a single space; GnuCOBOL now always returns the module name, a procedure-
  116    name " " and the source (line) identifier "0"
  117 
  118 ** FUNCTIONs NUMVAL, NUMVAL-C, NUMVAL-F: if the argument does not match the
  119    argument rules previous versions returned zero; now invalid data is skipped;
  120    for example: "1. A-0B4.5" now returns -1.045 (or -1045 when the
  121    DECIMAL-POINT IS COMMA clause is in effect);
  122    as with previous versions the argument can be validated before using the
  123    FUNCTIONs TEST-NUMVAL, TEST-NUMVAL-C, TEST-NUMVAL-F or the exception can
  124    be checked afterwards using the EXCEPTION related functions;
  125    the old behaviour can be enforced by compiling GnuCOBOL with
  126    LIBCOB_CPPFLAGS=-DINVALID_NUMVAL_IS_ZERO
  127 
  128 ** Handling of invalid numeric USAGE DISPLAY data:
  129    previously the complete character was inspected and adjusted for conversion,
  130    now only the second half-byte is used;
  131    this yields in different results, for example both the zero and space
  132    character in both ASCII and EBCDIC charset will now result in a numeric
  133    zero; previously invalid data could result in huge or negative numbers in
  134    internal intermediate items;
  135    as this was both adjusted in the runtime and in the the generated modules
  136    invalid data may have additional unexpected results if programs are not
  137    recompiled
  138 
  139 ** ORGANIZATION INDEXED (with BDB backend): internal changes in record and
  140    file locking, fixing some related bugs
  141 
  142 ** extended screen io with PDCurses (most Win32 builds): blink and bolding
  143    are now enabled, when supported
  144 
  145 ** extended screen io: support for color codes 8-15 (implied highlight/blink
  146    attribute); only the three lower bits are now considered during evaluation
  147    of the color-number, leading to a previous value of 21 (which was ignored
  148    until now) being interpreted as 5, see FR #387
  149 
  150 ** extended screen io with single-fields: runtime-adjustable attributes by
  151    support of extension clauses COLOR and CONTROL for ACCEPT and DISPLAY
  152    statements, see FR #189 + FR #355; note: while COLOR and CONTROL are parsed
  153    for SCREEN SECTION they are ignored at runtime
  154 
  155 ** extended screen io with single-fields: the ACCEPT statement now supports
  156    the extension CURSOR clause, additional to the standard-defined
  157    CONTROL phrase in SPECIAL-NAMES
  158 
  159 ** the programmable runtime switches "SWITCH A" through "SWITCH Z" internally
  160    used 1-26 and now use 11-36 to be able to combine then with switches 0-7;
  161    if you set those via COB_SWITCH environment variables you need to adjust
  162    their numbers
  163 
  164 * Changes that potentially effect recompilation of existing programs:
  165 
  166 ** the reserved word list and intrinsic functions was updated, especially
  167    to cater for new features of COBOL 2023; if compiling with any non-strict
  168    dialect you may need to unreserve any conflicting words / functions
  169 
  170 ** in 64-bit environments, the default size for BY VALUE parameters has changed:
  171    If no explicit SIZE IS clause is specified,
  172 	old behavior: parameter passed as 32-bit value
  173 	new behavior: parameter passed as 64-bit value
  174    To specify a 32-bit BY VALUE parameter, change the COBOL source to use
  175    SIZE IS 4.  To continue to rely on the default size, both caller and
  176    callee modules that use BY VALUE must be compiled with the same version of
  177    GnuCOBOL, either prior this release, or since.
  178 
  179 ** cobc now uses a two-pass preprocessing algorithm, where replacements for
  180    COPY-REPLACING are done in a first pass, and the replacements for
  181    REPLACE are done in a second pass. Note that, however, both
  182    statements are parsed before the first replacement pass, so
  183    COPY-REPLACING cannot impact a REPLACE statement itself.
  184 
  185 * Changes to the COBOL compiler (cobc) options:
  186 
  187 ** new -fformat dialect option, and extended SOURCE FORMAT directives,
  188    with the following newly supported reference-formats (in addition
  189    to FIXED/FREE):
  190 
  191    COBOL85      Fixed-form format with enforcement of Area A
  192    COBOLX       GCOS 7 extended format
  193    CRT          ICOBOL Free-form format
  194    TERMINAL     ACUCOBOL-GT Terminal format
  195    VARIABLE     Micro Focus Variable Fixed-form format
  196    XCARD        ICOBOL xCard (extended card) format
  197    XOPEN        X/Open Free-form format
  198 
  199    These formats come with Area A enforcement (except for XOPEN), that
  200    checks whether division, section, and paragraph names start in Area
  201    A (i.e, before margin B), and so do level indicators FD, SD, RD,
  202    and CD, and level numbers 01, and 77.  The underlying checks are
  203    enabled or disabled by default using dialect option `areacheck`,
  204    and then with `$SET AREACHECK` and `$SET NOAREACHECK` compiler
  205    directives.
  206 
  207    As a result of reference format being a dialect option, Area A
  208    enforcement is available and enabled by default for dialects BS2000
  209    COBOL, CA Realia II, COBOL85, GCOS COBOL, IBM COBOL, MVS/VM COBOL,
  210    RM-COBOL, and X/Open COBOL.
  211 
  212    Area A enforcement additionally enables detection of missing
  213    periods before level numbers that lie in Area A in the DATA
  214    DIVISION, and before paragraph and section names in the PROCEDURE
  215    DIVISION.  More generally, some, but not all, missing periods can
  216    be reported and recovered from.  This is configurable with option
  217    `missing-period`.
  218 
  219    If not specified, the compiler tries to automatically recognize the format,
  220    using either fixed or free, depending on column 7 in the first non-space
  221    line. This feature can be disabled by setting the format manually
  222    with `-free`, `-fixed` or `-fformat`.
  223 
  224 ** the new -febcdic-table option enables one to specify the
  225    translation table used when dealing with EBCDIC codeset;
  226    these translation tables are stored as new configuration files with
  227    an extension of ".ttbl", currently available tables are:
  228 
  229    default    translation to extended ASCII as per MF
  230    alternate  translation from restricted ASCII only
  231    ebcdic500_ascii7bit   EBCDIC 500 <-> 7-bit ASCII as per IBM
  232    ebcdic500_ascii8bit   EBCDIC 500 <-> 8-bit ASCII as per GCOS7
  233    ebcdic500_latin1      EBCDIC 500 <-> latin-1 as per iconv
  234 
  235    This option supersedes the -falternate-ebcdic flag (still available
  236    for backwards compatibility), which is equivalent to
  237    -febcdic-table=alternate.
  238 
  239 ** the compile flag -fodoslide was moved to a dialect configuration,
  240    while -fodoslide still works as before it is now implied with
  241    -std=ibm/mvs/bs2000, if you use those dialects consider to recompile
  242    affected programs (with OCCURS DEPENDING ON) or compile with additional
  243    -fno-odoslide to get the same results as with older GnuCOBOL versions
  244 
  245 ** the compile flag -fdefaultbyte (initialization for data-items without
  246    an explicit VALUE) was moved to a dialect configuration;
  247    while -fdefaultbyte still works as before it is now implied as binary
  248    zero with -std=ibm/mvs/bs2000/realia, space for -std=mf/acu/rm, and
  249    no defined initialization for -std=cobol85/cobol2002/cobol2014/xopen,
  250    it is unchanged for -std=default (initialize to PICTURE/USAGE);
  251    for compatibility to previous behavior compile with -fdefaultbyte=init;
  252    note that initialization for INDEXED BY items honors the defaultbyte
  253    configuration now, too
  254 
  255 ** new dialect init-justified that applies right justification by JUSTIFIED
  256    clause for VALUE clause; this is applied to IBM dialects, if you want
  257    the previous behavior compile with -fno-init-justified
  258 
  259 ** depending on the new dialect option "using-optional" (included in the
  260    the default dialect), checks for arguments not passed are now done (only)
  261    on CALL, not on their (possibly many) references; if you want the old
  262    "postponed" check either specify the parameter as OPTIONAL or use
  263    -fusing-optional=skip; note: the non-strict dialects will raise a warning
  264    on the first use of this feature, then automatically enable it
  265 
  266 ** the dialect configuration option larger-redefines-ok was replaced by
  267    the support option larger-redefines; if specified on the command-line
  268    it is now -f[no-]larger-redefines instead of -f[no-]larger-redefines-ok,
  269    which allows to also raise a warning for those with -flarger-redefines=warn
  270    Note: the short one works both in current and older versions of cobc
  271 
  272 ** the subscript checking enabled with -fec=bound-subscript (implied with
  273    --debug) now generates checks depending on the new dialect configuration
  274    option subscript-check if OCCURS DEPNDING ON is used;
  275    the full check according to ISO COBOL, which checks against the ODO item
  276    is still used in the default dialect, but several dialects now only check
  277    against the maximum only
  278 
  279 ** the GnuCOBOL extension of auto-adding the RECURSIVE attribute
  280    if a program potentially calls its own PROGRAM-ID was moved
  281    to a dialect option; it is now only active with -std=default
  282    (and raises a warning as previously with -Wextra); if you want
  283    to use this extension for other dialects use the new
  284    -fself-call-recursive=warning (or "ok")
  285 
  286 ** the option -g does no longer imply -fsource-location; but it auto-includes
  287    references to the COBOL-paragraphs to further ease source level debugging
  288 
  289 ** -fsource-location generates source references to copyboooks in DATA
  290    DIVISION, enabling to inspect the initial VALUE setting as well as
  291    "list"ing those copybooks with a source level debugger
  292 
  293 ** new flag -fstack-extended (implied with --debug and --dump) to include
  294    the origin of entrypoints and PERFORM, this is used for the internal
  295    stack trace on abort and can be used for improved source level debugging
  296 
  297 ** new flag -fmemory-check (implied with --debug) to do some validation
  298    of internal memory used during CALL; this can help in finding otherwise
  299    hard to diagnose overwrite of memory and as it is only done on CALL
  300    has a much smaller footprint than -fec=bounds (as both check different
  301    aspects at different places it is also reasonable to use both);
  302    to disable it use -fmemory-check=none or limit by -fmemory-check=pointer
  303 
  304 ** the option -g does no longer imply -fno-remove-unreachable; if you want to
  305    keep those in you need to explicit specify this
  306 
  307 ** the option -O0 now implies -fno-remove-unreachable
  308 
  309 ** new options to ensure structured code-flow:
  310    -fsection-exit-check to ensure sections don't "fall through" (are always
  311     entered and left by PERFORM)
  312    -fimplicit-goback-check to ensure modules are not left by implicit GOBACK
  313     at end of PROCEDURE DIVISION
  314 
  315 ** adjustments to warning options:
  316    -Wconstant-expression was changed to a group warning and includes
  317     the new, previously integrated, -Wconstant-numlit-expression
  318    -Wtyping as a new warning raises only very suspicious MOVEs,
  319    -Wstrict-typing, which will warn as before even for MOVE 1 TO PICX-FLD
  320     is not included in -Wall any more
  321    -Wlarger-01-redefines as new warning (enabled by -Wextra) to check for
  322     the only larger REDEFINES that is explicit allowed by the COBOL standard
  323    -Wno-unsupported -Wunsupported new option to disable or only warn
  324     on use of features the runtime is not configured for;
  325     this new option defaults to an error (= -Werror=unsupported)
  326    -Wgoto-different-section as new warning (enabled by -Wall) to check for
  327     GO TO that are likely to break the flow of PERFORM some-section
  328    -Wgoto-section as new warning (enabled by default) to check for
  329     GO TO a section instead of a paragraph; while allowed this is often
  330     a coding error
  331    -Wsuspicious-perform-thru (enabled by default) to check for PERFORM ranges
  332     that are likely to create unwanted behaviour
  333    -Wother now  warns for suspicious reference-modification which is likely to
  334     create out-of-bounds access at runtime
  335 
  336 ** new compiler command line option to list the known runtime exception names
  337    and fatality `cobc --list-exceptions`
  338 
  339 ** new compiler command line option -ftcmd to enable printing of the command
  340    line in the source listing, -fno-timestamp to suppress printing of the time
  341    and -ftittle to set a title instead of GnuCOBOL and version (_ chars are
  342    replaced by spaces in the title)
  343 
  344 ** new compiler command line option --coverage to instrument binaries
  345    for coverage checks
  346 
  347 ** the command line options -MT and -MF, which are used for creating a
  348    dependency list (used copybooks) to be used for inclusion in Makefiles
  349    or other processes, and which were removed in GnuCOBOL 2 are back in their
  350    original version; note: their use will be adjusted where they don't match
  351    GCC's same options in later versions, including addition of -M and -MD
  352 
  353 ** new -std options:
  354 
  355    gcos            GCOS compatibility
  356    gcos-strict     GCOS compatibility                - strict
  357 
  358    We define the GCOS dialect based on the COBOL85 standard, with new
  359    dialect configuration options accompanying each specificity
  360    introduced by the dialect.
  361 
  362 ** new diagnostic format for errors: the diagnostics now print the source
  363    code context with a left margin showing line numbers, configurable with
  364    -fno-diagnostics-show-line-numbers, and possible to disable completely
  365    with -fno-diagnostics-show-caret;
  366 
  367    the option -fdiagnostics-plain-output was added to request that diagnostic
  368    output look as plain as possible and stay more stable over time
  369 
  370 ** the -P flag accepts - as argument for stdout
  371 
  372 * Important Bugfixes:
  373 
  374 ** for dialects other than the GnuCOBOL default different reserved "alias" words
  375    were not usable, for example SYNCHRONIZED or COMPUTATIONAL. This was fixed
  376    and reserved words updated for the dialects "acu" (to ACUCOBOL-GT 10.4),
  377    "ibm" (to Enterprise COBOL 6.3) and "mf" (to Micro Focus Visual COBOL 6.0)
  378 
  379 ** for all "lax" varants SYNC was handled even if commonly ignored by the strict
  380    dialects, this was fixed so SYNC is ignored depending on the dialect
  381 
  382 ** COBOL programs compiled with versions before GnuCOBOL 3 that used files with
  383    ORGANIZATION INDEXED or RELATIVE crashed when executed with newer versions,
  384    this has been fixed so that all modules compiled with GnuCOBOL 2.2 can be
  385    executed with GnuCOBOL 3.2
  386 
  387 ** FUNCTION RANDOM could return 1 in rare cases (more likely on win32),
  388    it now returns a value in the range 0 <= x < 1, as defined
  389 
  390 ** the internal signal handler could crash or deadlock the process on hard
  391    errors (either in called library functions or when running COBOL without
  392    runtime checks); the signal handling is now completely rewritten to fix
  393    this issue and all executed code from the signal handler but the COBOL data
  394    dump is now signal and thread safe
  395 
  396 ** TYPEDEF items got storage and attribute assigned, leading to bigger modules,
  397    longer loading time and longer compile times; if you use those a recompile
  398    is highly suggested
  399 
  400 ** several bugs in COPY REPLACING / REPLACING were fixed along with adding
  401    support for exensions related to REPLACING LEADING / TRAILING
  402 
  403 ** for PICTURE P several fixes were made, so results may vary compared with
  404    previous versions; sources with *leading* P never worked correct before,
  405    and *must* be recompiled after upgrading
  406 
  407 ** since its addition to GnuCOBOL ROUNDING MODE PROHIBITED just prevented
  408    rounding; its behaviour changed to match the specification by doing that,
  409    raising EC-SIZE-TRUNCATION and changed: not adjust the target field if
  410    rounding would be necessary to store the data
  411 
  412 * Listing changes
  413 
  414 ** the timestamp in the header was changed from ANSI date format like
  415    "Tue Sep 28 09:49:43 2021" to formatted time (year after day); this may be
  416    changed during `configure` with adding a define to COBC_CPPFLAGS;
  417    to either use the old format, adding add `-DLISTING_TIMESTAMP_ANSI`,
  418    or to use an explicit format (cut at 26 characters, may raise false-positives
  419    in listing tests) e.g. date only `-DLISTING_TIMESTAMP_FORMAT="%Y-%m-%d"`
  420 
  421 ** new compile options to adjust the listing, see above
  422 
  423 * More notable changes
  424 
  425 ** in general, the maximum field size in LINKAGE SECTION was increased from
  426    268435456 bytes (999999998 bytes for OCCURS UNBOUNDED) to the system
  427    specific INT_MAX - 1, which is commonly 2 GB
  428 
  429 ** in 64-bit environments, the maximum field size outside of LINKAGE SECTION
  430    was increased from 268435456 bytes to 2 GB
  431 
  432 ** numeric DISPLAY can store and may contain a positive zero after arithmetic,
  433    PACKED-DECIMAL may contain negative zero (x'0D') after arithmetic; as before
  434    numeric comparisions to ZERO / 0 / +0 / -0 will all be identical
  435 
  436 ** quotes around filenames and parts that are resolved by environment variables
  437    are internally ignored
  438 
  439 ** the exception check for EC-PROGRAM-ARG-MISMATCH is now generated, validating
  440    that non-optional PROCEDURE DIVISION USING items are passed and that their
  441    size in the caller is at least as big as in the program
  442 
  443 ** in case of any runtime features being used that are not available an error
  444    is generated during compile (may be reduced to a warning by -Wunsupported
  445    or be suppressed by -Wno-unsupported) and if the feature is actually used
  446    at runtime a related exception status is set
  447 
  448 ** the call-stack show on error and/or in the dump file now contains all
  449    parameters given to the program via command line options, if any;
  450    if full debugging information is available it includes all PERFORMs executed
  451 
  452 ** the dump that is created on abort for all programs that were compiled with
  453    -fdump can be explicit disabled by setting COB_DUMP_FILE=NONE; it is
  454    automatically disabled if the process ends upon signals SIGINT/SIGTERM and
  455    now also disabled upon SIGHUP/SIGPIPE
  456 
  457 ** additional or instead of the internal COBOL dump a coredump file may be
  458    created on runtime errors and when configured in the system also after
  459    the signal handler; see the new runtime option COB_CORE_ON_ERROR for
  460    details (the default is a best match to the old behavior)
  461 
  462 ** source references shown in diagnostic messages and for trace at runtime
  463    as well as during debugging were extended, for example each executed WHEN,
  464    VARYING and UNTIL phrases are now seen
  465 
  466 ** condition-names are made available for source-level debugging
  467 
  468 ** cobc's parsing time was significantly reduced for big programs
  469 
  470 ** execution times were significantly reduced for the following:
  471 	INSPECT that use big COBOL fields (multiple KB)
  472 	MOVE and comparisions in general (especially with enabled runtime
  473 	   checks, to optimize those a re-compile is needed)
  474 	CALL data-item, and first time for each CALL
  475 	ACCEPT DATE/TIME/DAY, most if numeric items are accepted
  476 	datetime related FUNCTIONs
  477 	runtime checks for use of LINKAGE/BASED fields and/or
  478 	  subscripts/reference-modification (re-compile needed)
  479 	general: execution of programs generated with -fsource-location
  480 	  (implied with --debug and -fec), especially when many "simple"
  481 	  statements or lot of sections/paragraphs are used (re-compile needed)
  482 
  483 * New system functions
  484 
  485   CBL_GC_SET_SCR_SIZE  option to resize extended screen
  486 
  487 * New build features
  488 
  489 ** configure now honors BDB_LIBS and BDB_CFLAGS
  490 ** configure now honors MATH_LIBS
  491 ** configure now checks for XCurses and allows --with-curses=xcurses
  492    (experimental)
  493 ** configure now checks for PERL and passes that as default to make test
  494 ** cobc handles SOURCE_DATE_EPOCH now, allowing to override timestamps in
  495    generated code and listing files, allowing reproducible builds of both
  496    GnuCOBOL (extras folder) and COBOL programs
  497 
  498 * Obsolete features (will be removed in the next version if no explicit user
  499   requests are raised)
  500 
  501 ** use of old non-GMP randomizer for FUNCTION RANDOM
  502 
  503 ** undocumented option -tsymbols, which was replaced by -ftsymbols in 3.0
  504 
  505 
  506 * Known issues in 3.2 (and 3.1)
  507 
  508 ** testsuite:
  509   * if built with vbisam, cisam or disam, depending on the version used, some
  510     tests will lead to UNEXPECTED PASS, while others may fail
  511   * possibly failing tests (false positives):
  512     * temporary path invalid
  513     * compiler outputs (assembler)
  514     * compile from stdin
  515   * NIST: OBNC1M.CBL false positive (the test runner uses a nonportable way of
  516     emulating a program kill)
  517   * if build with -fsanitize, then some tests will fail; while we accept patches
  518     to improve that, we don't consider the failing tests as bug in GnuCOBOL
  519 
  520 ** the recent additions of ">> TURN" and "variable LIKE variable" may not work
  521    as expected in all cases
  522 
  523 ** floating-point comparison for equality may return unexpected results as it
  524    involves a necessary tolerance; you may adjust the default tolerance of
  525    0.0000001 by compiling GnuCOBOL for example with
  526    LIBCOB_CPPFLAGS="-DCOB_FLOAT_DELTA=0.0000000000001";
  527    we seek input for a reasonable default for GnuCOBOL 4 (use the mailing list
  528    or discussion board to share your comments on this topic, keeping in mind
  529    that this has to take both mathematical and "C compiler portability" into
  530    account)
  531 
  532 ** variables containing PICTURE symbol P may lead to wrong results in rare
  533    cases (especially screenio) - please send a bug report if you catch a case;
  534    since GC 3.2 rc3 all arithmetic operations and MOVE are believed to be
  535    correct
  536 
  537 ** features that are known to not be portable to every environment yet
  538    (especially when using a different compiler than GCC)
  539     * function with variable-length RETURNING item
  540     * USAGE POINTER, which may need to be manually aligned
  541 
  542 ** all versions of GnuCOBOL so far: EVALUATE evaluates all subjects on *each*
  543    WHEN (the standard explicit requests a one-time evaluation of the subjects,
  544    then comparing the value); to work around possible issues move more complex
  545    subjects like variables with subscripts and reference-modification, as well
  546    as calculated subjects and function calls to a temporary variable and use
  547    this as subject for the EVALUATE
  548 
  549 For more known issues see the bug tracker.
  550 
  551 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  552 
  553  GnuCOBOL 3.1.2 released (20201223)
  554  GnuCOBOL 3.1.1 released (20201208) containing INITIALIZE bug #694
  555  GnuCOBOL 3.1 released   (20201111) had build issues that were fixed
  556 
  557 * New GnuCOBOL features
  558 
  559 ** XML GENERATE statement
  560    (note: runtime support needs additional library libxml2)
  561 
  562 ** JSON GENERATE statement
  563    (note: runtime support needs additional library cJSON or JSON-C)
  564 
  565 ** CONTINUE AFTER statement (COBOL 2023) implemented, also handle fractions
  566    of seconds in C$SLEEP now
  567 
  568 ** TYPEDEF and SAME AS (COBOL 2002) implemented, including the MicroFocus
  569    and RM/COBOL variants
  570 
  571 ** >>TURN (COBOL 2002) directive implemented, allowing some exception checks
  572    to be turned on/off per source as desired
  573 
  574 ** Improved support for different compiler extensions (ACUCOBOL, IBM,
  575    Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL, CA Realia and more)
  576 
  577 ** file handling: include support for a callable EXTFH interface also provided
  578    by several compilers including Micro Focus
  579    This allows users to insert an external file handler while retaining
  580    all the normal COBOL I/O functions with a possible callback to libcob.
  581    To have the compiled program call `yourfh()` for file I/O use:
  582    `cobc -fcallfh=yourfh`
  583    In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
  584    The external file handler can also be directly invoked from COBOL, too,
  585    using `CALL "EXTFH"`.
  586    ** Note: Not each flag contained in the FCD3 is handled already **
  587 
  588 ** file handling: added support for [RE]WRITE FILE file FROM source
  589 
  590 ** file handling: name mapping adjusted (improved MF and ACU-compatibility):
  591    entries starting with a period or number are not resolved any more,
  592    periods in the external identifier are always replaced by underscore
  593     -> MY.FILE is resolved by DD_MY_FILE, dd_MY_FILE, MYFILE now;
  594    prefixes "-F " and "-D " are removed from external names;
  595    if filename is not absolute after translation, COB_FILE_PATH is now
  596    still applied;
  597    File name mapping now applies both to COBOL statements and CALLable
  598    CBL_ and C$ file routines.
  599 
  600 ** Screen I/O: initial mouse support (for details see runtime.cfg),
  601    use of CURSOR clause in SPECIAL-NAMES for positioning on ACCEPT
  602 
  603 ** on abort a stack trace will be generated, this can be suppressed by
  604    runtime configuration option COB_STRACK_TRACE
  605 
  606 ** the dump that is generated on abort (depending on -fdump at compile-time)
  607    was heavily improved and combines consecutive identical OCCURS items,
  608    leading to smaller dump files
  609 
  610 ** changes in handling COPY statement:
  611    * copybook names that contain an extension aren't searched with additional
  612      extensions [as post-rc1-change this may be set to old behavior by
  613      defining COB_MULTI_EXTENSION when building GnuCOBOL/cobc]
  614    * library names are now tested for environment "COB_COPY_LIB_libname",
  615      allowing the directory to specified externally (also as no-directory
  616      by exporting with empty value) and has a fallback (with a warning) to
  617      be effectively ignored (as previous versions did this)
  618 
  619 * Removed functions
  620 
  621 ** SCREEN SECTION, REPORT-WRITER module: removed non-standard extension
  622    "LINE / COL signed-integer" (inadvertently available since 2.2/3.0rc1);
  623    which will now raise an error "unsigned integer expected";
  624    if used replace by standard "LINE / COL +/- integer"
  625 
  626 * Obsolete features (will be removed in the next version if no explicit user
  627   requests are raised)
  628 
  629 ** support for Borland C compiler and linker
  630 ** -fif-cutoff flag for cobc (currently disabled, see entry below in 3.0rc1)
  631 ** old OpenCOBOL-only-EXTFH
  632 
  633 * Changes to the COBOL compiler (cobc) options:
  634 
  635 ** new options:
  636    -f[no]-ec=exception-name to tune the exception checks similar to the >>TURN
  637        directive, you may also leave out the "EC-" prefix here, example to
  638        enable all checks but disable all bound checks but OCCURS DEPENDING ON:
  639        cobc -debug -fno-ec=bound -fec=bound-odo
  640 
  641 ** adjustments to warning options:
  642    -Wextra "new" option to enable every possible warning that is not dialect
  643        specific (this option used to be called -W)
  644    -Wadditional  new warning group for all warnings that don't have a group
  645        on their own
  646    -Wno-error and -Wno-error=<warning> to treat all or a specific <warning>
  647        not as error
  648    -Wdangling-text for raising the warning "source text after program area",
  649        not included in -Wall any more
  650    -Wno-ignored-error allows to suppress messages that normally would be an
  651        error and are only allowed because they are never executed
  652    -Wcorresponding is now enabled by default
  653 
  654    -f[no]-diagnostics-show-option, enabled by default, shows the
  655     command line option responsible for the diagnostic message
  656 
  657    extra information to a warning (or error) is now marked as "note:"
  658 
  659 ** the internal Xref performance has improved, has all references in ascending
  660    order now and includes the total amount of direct references
  661 
  662 ** the internal listing got a speedup and has all error references in
  663    ascending order now
  664 
  665 ** cobc -g (and configure --enable-debug) use the most expressive
  666    debugging options available on the system
  667 
  668 ** cobc -g now auto-includes references to the COBOL source file and to
  669    all ENTRY and SECTION elements to ease source level debugging
  670 
  671 ** allow 3-byte CRT STATUS variable according to X/Open standard
  672 
  673 
  674 
  675 * Changes in the COBOL runtime (libcob)
  676 
  677 ** messages from the COBOL runtime are also translated now (if installed);
  678    to prevent this, disable translations in general with using the configure
  679    option --disable-nls (or by deactivating ENABLE_NLS in config.h)
  680 
  681 ** first-time file-locking under Win32
  682 
  683 ** handle CRT STATUS either numerically, alphanumerically (4 digits) or as 3
  684    bytes according to X/Open standard, depending on format and size
  685 
  686 ** execution times of INSPECT and INITIALIZE with OCCURS were heavily cut down,
  687    to fully benefit from this a recompile is necessary
  688 
  689 ** libcob.h does no longer auto-include gmp.h (behavior since 2.x), if you link
  690    against libcob and need cob_decimal include gmp.h/mpir.h yourself before;
  691    otherwise you do not need it in your include path anymore
  692 
  693 ** convenience functions for direct C access to COBOL fields and for debugging
  694    were added, see new C-API documentation
  695 
  696 ** Breaking change: previously the return-code of registered error handlers
  697    (by CBL_ERROR_PROC) were ignored. This was changed according to the
  698    documentation for CBL_ERROR_PROC -> a RETURN-VALUE of ZERO skips further
  699    error handlers to be called, including the internal one.
  700 
  701 
  702 * New build features
  703 
  704 ** Running the internal tests by make check now fails if the testsuite has any
  705    unexpected result.
  706 
  707 ** The modules and test programs in the NIST COBOL-85 test suite (tests/cobol85)
  708    may now be build and/or tested and/or the test results checked separately.
  709    You now may also run the tests with a previous installed version of GnuCOBOL
  710    (or a version specified by a manual temporary setup).
  711    For details see tests/cobol85/README.
  712 
  713 ** new configure option --with-math=ARG to specify which math multiple precision
  714    library is to be used, where ARG may be: check (default), gmp, mpir
  715 
  716 ** new configure options --with-xml2 / -without-xml2 to explicit force/disable
  717    XML runtime support, otherwise it will be included if found as working
  718 
  719 ** new configure option --with-json / -without-json to explicit force/disable
  720    JSON runtime support, otherwise it will be included if found as working
  721    Note: As a special case you may built-in cJSON by placing its source in
  722    the folder "libcob". If it is included there, this version will be compiled
  723    into libcob. It may be enforced with --with-json=local,
  724    like --with-json=cjson and --with-json=json-c enforce the given library.
  725 
  726 ** To adjust the build system for GMP/MPIR you may use the new variables
  727    GMP_CFLAGS / MPIR_CFLAGS and GMP_LIBS / MPIR_LIBS.
  728    If unset configure will try pkg-config.
  729 
  730 ** To adjust configure to use libxml2 you may use the new variables XML2_CFLAGS
  731    and XML2_LIBS. If unset configure will use pkg-config / xml2-config.
  732 
  733 ** To adjust configure to use libcjson you may use the new variables CJSON_CFLAGS
  734    and CJSON_LIBS, similar JSON_C_CFLAGS and JSON_C_LIBS for libjson-c.
  735    If unset configure will use pkg-config.
  736 
  737 ** new configure option --enable-hardening to either enable GNU C's
  738    hardening options or leave as-is, or disable (which previous versions
  739    effectively did)
  740 
  741 ** build system: defaults.h is not created or included anymore, all configure
  742    provided defines are now found in the single header config.h
  743 
  744 ** Any time after `make` you can call `pre-inst-env` script to use the still-
  745    uninstalled binaries. Samples:
  746    pre-inst-env cobc -xj prog.cob
  747    pre-inst-env cobcrun -M prog start
  748    pre-inst-env may also be called without parameters to start a new shell
  749    session with the environment adjusted to use the uninstalled version.
  750 
  751 
  752 * Too many bug fixes to list here (please check ChangeLogs for full details),
  753   includes the following CVEs:
  754 
  755 ** compiler (may be triggered with special crafted source files)
  756    CVE-2019-14468, CVE-2019-14486, CVE-2019-14528, CVE-2019-14541,
  757    CVE-2019-16396, CVE-2019-16395
  758 
  759 * GnuCOBOL's getopt implementation honors POSIXLY_CORRECT now:
  760   if set to any value the option parsing in cobc, cobcrun and CBL_GC_GETOPT
  761   stops at the first nonoption, otherwise it stays with the old behavior and
  762   re-orders nonoptions to the end)
  763 
  764 
  765 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  766 
  767  GnuCOBOL 3.0-rc1 released (20180422)
  768 
  769 * New GnuCOBOL features
  770 
  771 ** REPORTWRITER module added
  772 
  773 ** INDEXED file handling: added support for sparse and split keys
  774 
  775 ** file handling: added support for [RE]WRITE FILE file FROM source
  776 
  777 ** DISPLAY ... UPON PRINTER may be redirected to an external command
  778    (new runtime configuration COB_DISPLAY_PRINT_PIPE) or appended to a file
  779    (new runtime configuration COB_DISPLAY_PRINT_FILE, which takes precedence)
  780 
  781 ** XML GENERATE statement
  782    (note: runtime support needs additional library libxml2)
  783 
  784 ** JSON GENERATE statement
  785    (note: runtime support needs additional library cJSON)
  786 
  787 ** Improved support for different compiler extensions (ACUCOBOL, IBM,
  788    Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL and more)
  789 
  790 ** Parser support for many features of different compilers, for example
  791    PIC 1 / USAGE BIT, ACUCOBOL extensions for graphical controls
  792    VALIDATE statement and much more.
  793    Most of them will be fully implemented in a later version...
  794 
  795 ** Option to dump (partial) data of modules on abort.
  796    Use new cobc option -fdump=<scope> to prepare the module and optional
  797    use new runtime configuration options COB_DUMP_FILE and COB_DUMP_WIDTH
  798    to adjust the dump.
  799 
  800 ** C interface: new functions cob_set_runtime_option / cob_get_runtime_option
  801    to set/get special runtime options (currently FILE * for trace and printer
  802    output) or to reload the runtime configuration after changing environment
  803 
  804 ** file handling: include support for a callable EXTFH interface also provided
  805    by several compilers including Micro Focus
  806    This allows users to insert an external file handler while retaining
  807    all of the normal COBOL I/O functions with a possible callback to libcob.
  808    To have the compiled program call `yourfh()` for file I/O use:
  809    `cobc -fcallfh=yourfh`
  810    In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
  811    The external file handler can also be directly invoked from COBOL, too,
  812    using `CALL "EXTFH"`.
  813    ** Note: Not all flags contained in the FCD3 are handled already **
  814 
  815 
  816 * Changed cobc options:
  817 
  818 ** The option -debug (runtime checks) no longer implies -ftrace (option to
  819    trace program flow of the generated module with COB_SET_TRACE).
  820    You may specify -ftrace[all] along -debug if you want to use this feature.
  821 
  822 ** The option -E (preprocess file) does not imply an output file any more.
  823    If no output file is explicit specified with -o filename.i the output will
  824    be written to stdout (behavior of versions 1.1 is restored).
  825    Requesting output to stdout explicit by using a dash as output name is
  826    also possible.
  827 
  828 ** Changed options for listing:
  829    The option -tsymbols was replaced by -ftsymbols and therefore can now also
  830    be explicit deactivated by specifying -fno-tsymbols.
  831    New options for suppressing (or explicit requesting) parts of the listing:
  832    -fno-theader    suppress all headers from listing while keeping page breaks
  833    -fno-tmessages  suppress warning and error summary from listing
  834    -fno-tsource    suppress actual source from listing (for example to only
  835                    produce the cross-reference)
  836 
  837 ** The option -fif-cutoff (option to change generated C sources to use
  838    a label + goto for nested if/else) was deactivated to allow the C compiler
  839    to fully control the program flow.
  840    ** Please report if you have a need for this option as it will be **
  841    ** removed permanently in the next release of GnuCOBOL otherwise. **
  842 
  843 
  844 * Changes in the COBOL runtime (libcob)
  845 
  846 ** updated exception handling, GnuCOBOL now only cleans raised exceptions when
  847    requested by SET LAST EXCEPTION TO OFF
  848 
  849 ** The standard-format for program tracing was changed and is now adjustable
  850    by the runtime configuration option COB_TRACE_FORMAT.
  851 
  852 * New build features
  853 
  854 ** New test suite for manual tests (especially SCREEN I/O),
  855    run with `make checkmanual`.
  856    Note: You may want to adjust the test runner tests/run_prog_manual.sh which
  857    defaults to xterm in GUI environments and screen in terminal environments.
  858 
  859 ** new configure option --enable-debug-log to allow *internal* tracing
  860    of GnuCOBOL (intended for developers of GnuCOBOL only)
  861 
  862 * Too many bug fixes to list here (please check ChangeLogs for full details).
  863 
  864 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  865 
  866  GnuCOBOL 2.2 released (20170906)
  867 
  868 * Move to GPL/LGPL 3
  869 
  870 * Most noteworthy new GnuCOBOL features (too many to list them all)
  871 
  872 ** User Defined Functions, FUNCTION-ID.
  873 
  874 ** New intrinsic functions
  875 
  876   ABSOLUTE-VALUE                   alias for ABS
  877   CURRENCY-SYMBOL                  CURRENCY-SYMBOL of the current program
  878   FORMATTED-CURRENT-DATE           ISO 8601 datetime function
  879   FORMATTED-DATE                   ISO 8601 datetime function
  880   FORMATTED-DATETIME               ISO 8601 datetime function
  881   FORMATTED-TIME                   ISO 8601 datetime function
  882   TEST-FORMATTED-DATETIME          ISO 8601 datetime function
  883   INTEGER-OF-FORMATTED-DATE        date to integer
  884   HIGHEST-ALGEBRAIC                now implemented
  885   LOWEST-ALGEBRAIC                 now implemented
  886   LOCALE-COMPARE                   now implemented
  887   NUMVAL-F                         now implemented
  888   TEST-NUMVAL                      now implemented
  889   TEST-NUMVAL-C                    now implemented
  890   TEST-NUMVAL-F                    now implemented
  891   LENGTH-AN                        alias for BYTE-LENGTH
  892   MODULE-CALLER-ID                 return the name of the caller
  893   MODULE-DATE                      current module: compilation date
  894   MODULE-TIME                      current module: compilation time
  895   MODULE-FORMATTED-DATE            current module: formatted datetime
  896   MODULE-ID                        current module: PROGRAM-ID
  897   MODULE-PATH                      current module: path on compile time
  898   MODULE-SOURCE                    current module: name on compile time
  899   MONETARY-DECIMAL-POINT           LOCALE based fiscal decimal point
  900   MONETARY-THOUSANDS-SEPARATOR     LOCALE based fiscal visual grouping separator
  901 
  902   Note:
  903   The functions that are actually available as intrinsic functions depend
  904   on the -std used. Function names that aren't marked as intrinsic functions
  905   by the current -std can be used freely as user defined words or
  906   even as user defined functions.
  907 
  908 ** New system functions
  909 
  910   C$CALLEDBY                       return the name of the caller
  911   CBL_GC_FORK                      fork current process (not on Windows)
  912   CBL_GC_WAITPID                   wait for process to end
  913   CBL_GC_GETOPT  (CBL_OC_GETOPT)   command line option parser for COBOL
  914   CBL_GC_PRINTABLE (C$PRINTABLE)   check if character is printable
  915   CBL_GC_HOSTED (CBL_OC_HOSTED)    provides access to C extern variables,
  916                                    like stdin, errno
  917   CBL_GC_NANOSLEEP                 CBL_OC_NANOSLEEP
  918   CBL_GET_SCR_SIZE                 get current terminal size - if any
  919   CBL_READ_KBD_CHAR                get character from terminal
  920   CBL_SET_CSR_POS                  set current position on terminal
  921   x'E4'                            clear terminal screen
  922   x'E5'                            ring the bell
  923 
  924 ** full support for ANSI 85 debugging module:
  925    USE FOR DEBUGGING declarative procedures (only part of the generation if
  926    WITH DEBUGGING MODE is active during compilation) and special register:
  927    01 DEBUG-ITEM.
  928       02 DEBUG-LINE      PIC X(6).
  929       02 FILLER          PIC X VALUE SPACE.
  930       02 DEBUG-NAME      PIC X(30).
  931       02 FILLER          PIC X VALUE SPACE.
  932       02 DEBUG-SUB-1     PIC S9(4).
  933       02 FILLER          PIC X VALUE SPACE
  934       02 DEBUG-SUB-2     PIC S9(4).
  935       02 FILLER          PIC X VALUE SPACE.
  936       02 DEBUG-SUB-3     PIC S9(4).
  937       02 FILLER          PIC X VALUE SPACE.
  938       02 DEBUG-CONTENTS  PIC X(n).
  939    With "n" being at least 30, size is increased if USE FOR DEBUGGING identifier
  940    is used and the identifier has a longer size.
  941    Note: COB_SET_DEBUG activates the specified debugging sections at runtime
  942 
  943 ** many new / extended COBOL statements from COBOL2002/2014 and extensions
  944    from different COBOL dialects
  945 
  946 ** more SWITCHes: from SWITCH-01 to SWITCH-36 and its variants from many
  947    COBOL dialects
  948 
  949 ** more IEEE numeric types added, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34, etc
  950 
  951 ** more literal types added, numeric boolean etc.
  952 
  953 ** most of the COBOL 2014 spec Compiler Directive Facility is in
  954 
  955 ** optional: stricter syntax checks
  956 
  957 ** Optimization: in cases where the condition in IF/WHEN is resolved down
  958    to TRUE or FALSE at compile time cobc doesn't emit any code
  959 
  960 ** refactored and extended compiler and runtime messages with available
  961    translations (currently to Spanish, Portuguese and Dutch, partial to German)
  962 
  963 ** screen IO: many extended ACCEPT DISPLAY and SCREEN SECTION changes
  964 
  965 ** Direct call interface for C:
  966   CALL-CONVENTION for CALLs and PROCEDURE DIVISION
  967   ENTRY-CONVENTION for PROCEDURE DIVISION and ENTRY statement
  968   SIZE of parameters specified for CALL ... BY VALUE
  969   RETURN NOTHING for calling void functions
  970   RETURN ADDRESS OF VAR for calling functions returning a pointer
  971   PROCEDURE DIVISION RETURNING OMITTED -> callable as void function
  972 
  973 ** Much, much more!
  974 
  975 
  976 * New cobc options:
  977 
  978 ** New -std options:
  979 
  980   cobol2014       COBOL 2014 Standard
  981   xopen           X/Open COBOL Standard
  982   mf-strict       Micro Focus COBOL compatibility   - strict
  983   ibm-strict      IBM COBOL compatibility           - strict
  984   ibm-strict      MVS/VM COBOL compatibility        - strict
  985   acu             ACUCOBOL-GT compatibility
  986   acu-strict      ACUCOBOL-GT compatibility         - strict
  987   bs2000          BS2000 COBOL compatibility (back again)
  988   bs2000-strict   BS2000 COBOL compatibility        - strict
  989   rm              RM-COBOL compatibility
  990   rm-strict       RM-COBOL compatibility            - strict
  991 
  992   Note:
  993   The GnuCOBOL compiler tries to limit both the feature-set and reserved words
  994   to the specified compiler when the "strict" dialects are used.
  995   COBOL sources compiled with these dialects are therefore likely to compile
  996   with the specified compiler and vice versa: sources that were compiled on
  997   the specified compiler should compile without any issues with GnuCOBOL.
  998 
  999   With the "non-strict" dialects GnuCOBOL will activate the complete
 1000   feature-set where it doesn't directly conflict with the specified dialect,
 1001   including reserved words and GnuCOBOL specific extensions.
 1002   COBOL sources compiled with these dialects therefore may work only
 1003   with GnuCOBOL. COBOL sources may need a change because of rich feature-set
 1004   and reserved words in GnuCOBOL, otherwise offending words may be removed
 1005   by `-fno-reserved=word`.
 1006   COBOL-85, X/Open COBOL, COBOL 2002 and COBOL 2014 are always "strict".
 1007 
 1008 ** New listing options:
 1009 
 1010   -t listing, -T wide listing, --tlines=lines, lines per page of listing;
 1011   -Xref now handled internally, if you want to use cobxref define
 1012   COB_EXTERNAL_XREF during configure
 1013 
 1014   Note: -P, generate preprocessor listing, is still available (and improved)
 1015 
 1016 ** All compiler configuration flags may be set on command line
 1017    to override a specific setting of the current -std, see cobc --help
 1018 
 1019 ** All warnings can be explicit enabled/disabled or even marked as error,
 1020    see cobc --help, examples:
 1021   -Wunreachable         warn about likely unreachable statements
 1022   -Wno-dialect          do not warn about dialect specific issues
 1023   -Werror               treat all warnings as errors
 1024   -Werror=<warning>     treat specified <warning> as error
 1025 
 1026 ** Options for the C compiler/linker:
 1027   -K <entry>, compile entry point as static (resolve at link time)
 1028   -A, add options to C compile phase
 1029   -Q, add options to C link phase
 1030 
 1031 ** Miscellaneous
 1032   -i -info, display build/environment
 1033   -D define symbol for Compiler Directive Facility
 1034   -j -job=args, run job after compile
 1035   input filename of '-' reads source from standard in
 1036   For more: see cobc --help
 1037 
 1038 * Changed cobc options:
 1039 
 1040 ** The option -ffunctions-all (allow use of intrinsic functions without
 1041    FUNCTION keyword) was replaced by -fintrinsics=ALL.
 1042    -fintrinsics allows to also specify that only specific functions may
 1043    be used without the FUNCTION keyword.
 1044    The preferred option is to not use these cobc options at all but to
 1045    specify this within the COBOL code (CONFIGURATION SECTION. REPOSITORY.)
 1046 
 1047 
 1048 * New cobcrun options:
 1049 
 1050   -i -info, display build/environment
 1051   -r -runtime-config, display runtime configuration
 1052   -c -config, set runtime config from file
 1053   -M -module, set path/module name when looking for entry
 1054 
 1055 
 1056 * New build features
 1057 
 1058   make test      downloads NIST testsuite if necessary
 1059                  now usable with parallel builds (make -j4 test)
 1060   make checkall  runs both the internal and the NIST testsuite
 1061 
 1062 ** testsuite defaults to coloured output
 1063 
 1064 ** Windows(tm) Visual Studio build support files added,
 1065    options to validate the software generated with VS against both test suites
 1066 
 1067 ** removed maintainer mode - if files need a rebuild because of a change
 1068    they are always rebuild
 1069 
 1070 ** help2man, bison and flex are checked during configure,
 1071    if they need to be invoked and are missing a useful error message is given
 1072 
 1073 ** All files created by GnuCOBOL runtime use the same file permission settings
 1074    now: COB_FILE_MODE which was changed to 0666
 1075 
 1076 ** The maximum number of fields passed via CALL changed from hard-wired 64 fields
 1077    to a configuration option (defaulting to 192, current max. 252)
 1078 
 1079 ** changed unix package name from "gnu-cobol" to "gnucobol"
 1080 
 1081 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1082 
 1083  GnuCOBOL 1.1 released (20140118)
 1084 
 1085 * Change unix package name to gnu-cobol, and project to GnuCOBOL
 1086 * for a full list of changes see
 1087   https://gnucobol.sourceforge.io/faq/
 1088   #what-are-the-differences-between-opencobol-1-1-and-gnucobol-1-1
 1089 
 1090 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1091 
 1092  OpenCOBOL 1.1 released (20090206)
 1093 
 1094 * Note: was tagged as pre-release and later on as full version
 1095 
 1096 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1097 
 1098  OpenCOBOL 1.0 released
 1099 
 1100 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1101 
 1102  Changes in OpenCOBOL 0.33
 1103 
 1104 * New compile option '-x'. This causes the compiler to produce an
 1105   executable program. '-fmain' is deprecated.
 1106 
 1107 * Remove long option --verbose. Use '-v' for verbosity. Problem is
 1108   with getopt_long_only which does not like eg. -mv
 1109 
 1110 * New conformity option -std=bs2000.
 1111 
 1112 * FUNCTION is implemented. See cobc/reserved.c for a list of what is
 1113   implemented.
 1114 
 1115 * Nested programs are partially supported.
 1116 
 1117 * LINAGE is implemented.
 1118 
 1119 * EXTERNAL on FD is implemented.
 1120 
 1121 * SAME RECORD AREA is implemented.
 1122 
 1123 * New config variables -
 1124   "perform-osvs", "sticky-linkage". These are
 1125   activated for -std=ibm and -std=mvs.
 1126   "relax-level-hierarchy". Allows mismatched data
 1127   description level numbers. Activated for
 1128   -std=mf, ibm, mvs and bs2000.
 1129 
 1130 * Support for non-gcc compilers.
 1131 
 1132 * Large file support, system dynamic loading and Berkeley DB inclusion
 1133   are default for the configure.
 1134   ie. ./configure assumes --with-db --with-lfs64 --with-dl
 1135 
 1136 * New configure option --with-patch-level=<n>
 1137   Default is 0.
 1138 
 1139 * At run time, version checking is done. ie. When executing/loading
 1140   Cobol programs, the version (eg. 0.33) and the patch level (eg. 0)
 1141   are checked against the OC library version/patch level.
 1142 
 1143 * Libtool is not required for systems that support native dynamic
 1144   loading. This includes GNU/Linux, Cygwin and MingW amongst others.
 1145 
 1146 * Note to developers : See README for required software versions.
 1147 
 1148 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1149 
 1150  Changes in OpenCOBOL 0.32
 1151 
 1152 * Stability update - See individual ChangeLogs
 1153 
 1154 * New internal register - NUMBER-OF-CALL-PARAMETERS
 1155 
 1156 * New config variables - larger-redefines-ok, relaxed-syntax-check
 1157 
 1158 * Powerpc changes - We now pass all OC and Cobol85 tests
 1159 
 1160 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1161 
 1162  Changes in OpenCOBOL 0.31
 1163 
 1164 * Stability update - See individual ChangeLogs
 1165 
 1166 * New driver program - "cobcrun"
 1167   This allows all application programs to be compiled as
 1168   modules and driven by "cobcrun" similar to MF's "cobrun".
 1169   Syntax - cobcrun <MAINPROG> [Arguments to program "MAINPROG"]
 1170   As "cobcrun" is linked with the static version of OpenCOBOL
 1171   libraries, it is easier to maintain concurrent versions on the
 1172   same system.
 1173 
 1174 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1175 
 1176  Changes in OpenCOBOL 0.30
 1177 
 1178 * Installation changes
 1179 
 1180 ** No longer use readline.
 1181 
 1182 ** No longer use run-time configuration file (libcob.conf)
 1183 
 1184 ** libdb is now optional.
 1185 Use the new configure option --with-db1 to link with libdb1.
 1186 Use the new configure option --with-db to link with libdb.
 1187 Otherwise, libdb will not be linked, and indexed files and
 1188 SORT/MERGE statements will not work.
 1189 
 1190 *** New subdirectory `config' will be installed under
 1191 $prefix/share/gnucobol.
 1192 
 1193 ** Compatibility changes
 1194 
 1195 *** New -std options:
 1196 
 1197   default       used when you omit -std
 1198   cobol85       COBOL 85 Standard
 1199   cobol2002     COBOL 2002 Standard
 1200   ibm           IBM COBOL compatibility
 1201   mf            Micro Focus COBOL compatibility
 1202   v023          OpenCOBOL 0.23 compatibility
 1203 
 1204 *** Compile-time options can be stored in a "config" file.
 1205 See config/default.conf for details.
 1206 
 1207 *** Binary data items are now big endian.
 1208 The config option `binary-byteorder' controls this.
 1209 
 1210 *** Numeric sign of USAGE DISPLAY items has been changed as follows:
 1211 
 1212   Positive: 0123456789  Negative: pqrstuvwxy
 1213 
 1214 The config option `display-sign' controls this.
 1215 
 1216 *** Data items defined in the working-storage section are
 1217 initialized at the beginning of program by default.
 1218 The config option `auto-initialize' controls this.
 1219 
 1220 *** SORT statement now creates a temporary file in /tmp for sorting
 1221 and removes it after sorting.
 1222 
 1223 ** Feature changes
 1224 
 1225 *** COPY statements try to complement the following file extensions:
 1226 .CBL, .COB, .cbl, or .cob.
 1227 
 1228 *** COPY / REPLACE statements are reimplemented for better replacement.
 1229 
 1230 *** SPECIAL-NAMES. FORMFEED IS ...
 1231 
 1232 *** ALPHABET ... IS EBCDIC.
 1233 
 1234 *** EXTERNAL clause.
 1235 
 1236 *** SHARING clause.
 1237 
 1238 *** USAGE COMP-5 and COMP-X.
 1239 
 1240 *** USAGE POINTER and ADDRESS OF operator.
 1241 
 1242 *** LENGTH OF operator.
 1243 
 1244 *** PROCEDURE DIVISION USING BY REFERENCE/CONTENT/VALUE.
 1245 
 1246 *** DISPLAY ... ENVIRONMENT-NAME.  ACCEPT ... ENVIRONMENT-VALUE.
 1247 
 1248 *** COLLATING SEQUENCE in the SORT and MERGE statements.
 1249 
 1250 *** EXIT PERFORM [CYCLE] statement.
 1251 
 1252 *** SORT table.
 1253 
 1254 *** OPEN ... WITH NO REWIND / WITH LOCK recognized, though not working.
 1255 
 1256 *** Literal concatenation (the `&' operator).
 1257 
 1258 ** Compiler changes
 1259 
 1260 *** New compiler environment variable TMPDIR.
 1261 
 1262 *** New compiler environment variable COB_LDFLAGS.
 1263 
 1264 *** The runtime environment variable COB_CONFIG_FILE has been removed.
 1265 
 1266 *** New runtime environment variable COB_DYNAMIC_RELOADING.
 1267 
 1268 *** New compiler option `--list-reserved', which list all reserved words.
 1269 
 1270 *** New compiler option `-conf', which specifies the config file.
 1271 
 1272 *** New compiler option `-ext', which specifies the copy file extension.
 1273 
 1274 *** The compiler option `-O' now does C level optimization.
 1275 
 1276 *** New compiler option `-O2', which does further C level optimization.
 1277 
 1278 *** New compiler option `-L' and `-l', which are passed to the C compiler.
 1279 
 1280 *** New compiler option `-ftrace', which display section names at run time.
 1281 
 1282 *** New compiler option `-fsyntax-only', which does syntax error check
 1283 only without any output.
 1284 
 1285 *** New compiler option `-fstatic-call', which is equivalent to `-static'.
 1286 
 1287 *** New compiler option `-fdebugging-line', which enables debugging lines.
 1288 
 1289 *** New compiler option `-fsource-location', which includes source location
 1290 in the output.
 1291 
 1292 *** New compiler option `-fline-directive', which includes line directive
 1293 in the output.
 1294 
 1295 *** New compiler option `-fruntime-inlining', which is the replacement
 1296 of obsolete options `-finline-move' and `-finline-get-int'.
 1297 
 1298 *** New compiler option `-w', which inhibits warnings.
 1299 
 1300 *** New compiler option `-Wredefinition', which warns redefined names.
 1301 
 1302 *** The compiler options `-static' and `-dynamic' are obsolete.
 1303 
 1304 *** The compiler option `-column' removed.
 1305 
 1306 ** Many improvement for compatibility.
 1307 
 1308 ** Many many bug fixes.
 1309 
 1310 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1311 
 1312 * Changes in OpenCOBOL 0.23
 1313 
 1314 ** Installation changes
 1315 
 1316 *** We use the GNU MP library again.
 1317 
 1318 ** Run-time library changes
 1319 
 1320 *** `cob_resolve' now search the main program for the module name.
 1321 
 1322 ** Bug fixes
 1323 
 1324 *** Duplicate use of intermediate field variables.
 1325 
 1326 *** fseek issues on the MinGW environment.
 1327 
 1328 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1329 
 1330 * Changes in OpenCOBOL 0.22
 1331 
 1332 ** Installation changes
 1333 
 1334 *** We no longer depend on the GNU MP library.
 1335 
 1336 Decimal arithmetic is done by using `long long'.
 1337 
 1338 ** Compiler changes
 1339 
 1340 *** Alphabet-name has been implemented.
 1341 
 1342 *** Variable-length table has been implemented.
 1343 
 1344 *** De-editing (move numeric-edited to numeric) has been implemented.
 1345 
 1346 ** Bug fixes
 1347 
 1348 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1349 
 1350 * Changes in OpenCOBOL 0.21
 1351 
 1352 ** Installation changes
 1353 
 1354 *** New configure argument --with-lfs64.
 1355 
 1356 ** Compiler changes
 1357 
 1358 *** New option -std, which specifies which COBOL standard to use.
 1359 
 1360 Currently the following standards are available:
 1361 
 1362   gnu           GnuCOBOL (default)
 1363   cobol85       COBOL 85
 1364   cobol2002     COBOL 2002
 1365   mvs           IBM COBOL for MVS & VM
 1366 
 1367 *** New option -O, which enables some optimization.
 1368 
 1369 *** New option -debug, which enables run-time error checking.
 1370 
 1371 *** New option -Wobsolete, which reports obsolete features.
 1372 
 1373 *** New option -Warchaic, which reports archaic features.
 1374 
 1375 *** -Wnext-sentence has been removed.  Use -Warchaic instead.
 1376 
 1377 *** -fdebugging-line has been removed.
 1378 
 1379 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1380 
 1381 * Changes in OpenCOBOL 0.20
 1382 
 1383 ** cobpp has been integrated into cobc.
 1384 
 1385 Now cobc is the only binary program.
 1386 
 1387 ** cobc now generates an executable without `-main' flag.
 1388 
 1389 `-main' has been renamed to `-fmain', which is turned on
 1390 by default if none of -E, -C, -S, -c, or -m is given.
 1391 
 1392 ** The default source format is now the fixed form.
 1393 
 1394 The format will not be detected automatically.  You need
 1395 to use SOURCE FORMAT compiler directive as described below.
 1396 This conforms to the COBOL 2002 standard.
 1397 
 1398 ** Compiler directive "SOURCE FORMAT" is now supported.
 1399 
 1400 Put the following line at the beginning of file if you
 1401 want to use the free-form:
 1402 
 1403   >>SOURCE FORMAT IS FREE
 1404 
 1405 ** Option `-semi-fixed' has been removed.
 1406 
 1407 If you want to expand the program text area over 72 columns,
 1408 use the option `-column' instead.
 1409 
 1410 ** New option `-column', which specifies the end of program text area.
 1411 
 1412 ** New option `-T', which specifies the tab width.
 1413 
 1414 ** New warning options:
 1415 
 1416   -Wall                 Enable all warnings
 1417   -Wcolumn-overflow     Warn any text after column 72
 1418   -Wconstant            Warn inconsistent constant
 1419   -Wparentheses         Warn lacks of parentheses around AND within OR
 1420   -Wnext-sentence       Warn uses of NEXT SENTENCE
 1421   -Wimplicit-terminator Warn lacks of scope terminator (END-XXX)
 1422   -Wstrict-typing       Warn type mismatch strictly
 1423 
 1424 ** Option `debug' has been renamed to `-fdebugging-line'.
 1425 
 1426 ** USAGE PACKED-DECIMAL is now supported.
 1427 
 1428 ** Improved error checking.
 1429 
 1430 ** Additional testsuite entries.
 1431 
 1432 ** Bug fixes.
 1433 
 1434 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1435 
 1436 * Changes in OpenCOBOL 0.12
 1437 
 1438 ** Improved compile-time error check.
 1439 
 1440 ** Additional testsuite entries.
 1441 
 1442 ** Bug fixes.
 1443 
 1444 * Changes in OpenCOBOL 0.11
 1445 
 1446 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1447 
 1448 ** Part of run-time library interface has been redesigned.
 1449 
 1450 ** Bug fixes.
 1451 
 1452 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1453 
 1454 * Changes in OpenCOBOL 0.10
 1455 
 1456 ** Autoconf 2.57, Automake 1.7.2, Libtool 1.4.3, and Gettext 0.11.5
 1457 are used for packaging.
 1458 
 1459 ** New file cob.pc, which is used by pkg-config script.
 1460 
 1461 ** libcob.conf is now installed under sysconfdir (i.e., $(PREFIX)/etc).
 1462 The default value of COB_CONFIG_FILE has been changed appropriately.
 1463 
 1464 ** The directory `tests' includes new testsuites.
 1465 "make check" will run the tests.
 1466 
 1467 ** We use db1 again instead of db2 or db3.
 1468 
 1469 ** New option -semi-fixed.
 1470 
 1471 ** New option -Wtrailing-line.
 1472 
 1473 ** CALL statements now accept CONTENT LENGTH OF clause.
 1474 
 1475 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1476 
 1477 * Changes in OpenCOBOL 0.9.7
 1478 
 1479 ** The default value of COB_CONFIG_FILE has been changed to
 1480 "$PREFIX/etc/gnucobol/libcob.conf".
 1481 
 1482 ** SORT and MERGE statements have been impelemented.
 1483 
 1484 ** Preliminary implementation of SCREEN SECTION.
 1485 
 1486 ** Many bug fixes and improvements.
 1487 
 1488 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1489 
 1490 * Changes in OpenCOBOL 0.9.6
 1491 
 1492 ** cobc now requires `-main' flag to build an executable from a COBOL file.
 1493 
 1494 Without -main, cobc does not generate a main function.
 1495 See manual for details.
 1496 
 1497 ** Run-time configuration file: libcob.conf
 1498 
 1499 The environment variable `COB_CONFIG_FILE' specifies the file name
 1500 (default: "${prefix}/share/gnucobol/libcob.conf").
 1501 
 1502 ** Use gettext for international messages.
 1503 
 1504 ** Include the test suite in subdir `testsuite'.
 1505 
 1506 ** Many bug fixes and improvements.
 1507 
 1508 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1509 
 1510 * Changes in OpenCOBOL 0.9.5
 1511 
 1512 ** Support Berkeley DB 2.0.
 1513 
 1514 ** Many bug fixes.
 1515 
 1516 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1517 
 1518 * Changes in OpenCOBOL 0.9.4
 1519 
 1520 ** OpenCOBOL now requires Berkeley DB 3.0 or later.
 1521 
 1522 ** File I/O routine (libcob/fileio.c) has been reimplemented.
 1523 
 1524 ** New NIST Test Suite modules: SM, IC, SQ, RL, IX.
 1525 
 1526 ** Many bug fixes.