Path to this page:
Subject: CVS commit: pkgsrc/lang/gnucobol
From: Frederic Cambus
Date: 2020-12-10 19:09:34
Message id: 20201210180934.CACB1FA9D@cvs.NetBSD.org
Log Message:
gnucobol: update to 3.1.1.
Pkgsrc changes:
- Follow redirects (open-cobol -> gnucobol) for MASTER_SITES and HOMEPAGE
- Add a test target
ChangeLog:
GnuCOBOL 3.1.1 released (20201208)
GnuCOBOL 3.1 released (20201111) had issues that were fixed
* New GnuCOBOL features
** XML GENERATE statement
(note: runtime support needs additional library libxml2)
** JSON GENERATE statement
(note: runtime support needs additional library cJSON or JSON-C)
** CONTINUE AFTER statement (COBOL 202x) implemented, also handle fractions
of seconds in C$SLEEP now
** TYPEDEF and SAME AS (COBOL 2002) implemented, including the MicroFocus
and RM/COBOL variants
** >>TURN (COBOL 2002) directive implemented, allowing some exception checks
to be turned on/off per source as desired
** Improved support for different compiler extensions (ACUCOBOL, IBM,
Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL, CA Realia and more)
** file handling: include support for a callable EXTFH interface also provided
by several compilers including Micro Focus
This allows users to insert an external file handler while retaining
all of the normal COBOL I/O functions with a possible callback to libcob.
To have the compiled program call `yourfh()` for file I/O use:
`cobc -fcallfh=yourfh`
In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
The external file handler can also be directly invoked from COBOL, too,
using `CALL "EXTFH"`.
** Note: Not each flag contained in the FCD3 is handled already **
** file handling: added support for [RE]WRITE FILE file FROM source
** file handling: name mapping adjusted (improved MF and ACU-compatibility):
entries starting with a period or number are not resolved any more,
periods in the external identifier are always replaced by underscore
-> MY.FILE is resolved by DD_MY_FILE, dd_MY_FILE, MIFILE now;
prefixes "-F " and "-D " are removed from external names;
if filename is not absolute after translation, COB_FILE_PATH is now
still applied;
File name mapping now applies both to COBOL statements and CALLable
CBL_ and C$ file routines.
** Screen I/O: initial mouse support (for details see runtime.cfg),
use of CURSOR clause in SPECIAL-NAMES for positioning on ACCEPT
** on abort a stack trace will be genereated, this can be suppressed by
runtime configuration option COB_STRACK_TRACE
** the dump that is generated on abort (depending on -fdump at compile-time)
was heavily improved and combines consecutive identical OCCURS items,
leading to smaller dump files
** changes in handling COPY statement:
* copybook names that contain an extension aren't searched with additional
extensions [as post-rc1-change this may be set to old behaviour by
defining COB_MULTI_EXTENSION when building GnuCOBOL/cobc]
* library names are now tested for environment "COB_COPY_LIB_libname",
allowing the directory to specified externally (also as no-directory
by exporting with empty value) and has a fallback (with a warning) to
be effectively ignored (as previous versions did this)
* Removed functions
** SCREEN SECTION, REPORT-WRITER module: removed non-standard extension
"LINE / COL signed-integer" (inadvertently available since 2.2/3.0rc1);
which will now raise an error "unsigned integer expected";
if used replace by standard "LINE / COL +/- integer"
* Obsolete features (will be removed in the next version if no explicit user
requests are raised)
** support for Borland C compiler and linker
** -fif-cutoff flag for cobc (currently disabled, see entry below in 3.0rc1)
** old OpenCOBOL-only-EXTFH
* Changes to the COBOL compiler (cobc) options:
** new options:
-f[no]-ec=exception-name to tune the exception checks similar to the >>TURN
directive, you may also leave out the "EC-" prefix here, example to
enable all checks but disable all bound checks but OCCURS DEPENDING ON:
cobc -debug -fno-ec=bound -fec=bound-odo
** adjustments to warning options:
-Wextra "new" option to enable every possible warning that is not \
dialect
specific (this option used to be called -W)
-Wadditional new warning group for all warnings that don't have a group
on their own
-Wno-error and -Wno-error=<warning> to treat (specific \
<warning>s) not as error
-Wdangling-text for raising the warning "source text after program \
area",
not included in -Wall any more
-Wno-ignored-error allows to suppress messages that normally would be an
error and are only allowed because they are never executed
-Wimplicit-define and -Wcorresponding are now enabled by default
-f[no]-diagnostics-show-option, enabled by default, shows the
command line option responsible for the diagnostic message
extra information to a warning (or error) is now marked as "note:"
** the interal Xref got a huge speedup, has all references in ascending order
now and includes the total amount of direct references
** the interal listing got a speedup and has all error references in
ascending order now
** cobc -g (and configure --enable-debug) use the most expressive
debugging options available on the system
** cobc -g now auto-includes references to the COBOL source file and to
all ENTRY and SECTION elements to ease source level debugging
* Changes in the COBOL runtime (libcob)
** Messages from the COBOL runtime are also translated now (if installed).
To prevent this disable translations in general with using the configure
option --disable-nls (or by deactivating ENABLE_NLS in config.h).
** libcob.h does no longer auto-include gmp.h (behavior since 2.x), if you link
against libcob and need cob_decimal include gmp.h/mpir.h yourself before;
otherwise you do not need it in your include path any more
** execution times of INSPECT and INITIALIZE with OCCURS were heavily cut down
** convenience functions for direct C access to COBOL fields and for debugging
were added, see new C-API documentation
** first-time file-locking under Win32
** Breaking change: previously the return-code of registered error handlers
(by CBL_ERROR_PROC) were ignored. This was changed according to the
documentation for CBL_ERROR_PROC -> a RETURN-VALUE of ZERO skips further
error handlers to be called, including the internal one.
* New build features
** Running the internal tests by make check now fails if the testsuite has any
unexpected result.
** The modules and test programs in the NIST COBOL-85 test suite (tests/cobol85)
may now be build and/or tested and/or the test results checked separately.
You now may also run the tests with a previous installed version of GnuCOBOL
(or a version specified by a manual temporary setup).
For details see tests/cobol85/README.
** new configure option --with-math=ARG to specify which math multiple precision
library is to be used, where ARG may be: check (default), gmp, mpir
** new configure options --with-xml2 / -without-xml2 to explicit force/disable
XML runtime support, otherwise it will be included if found as working
** new configure option --with-json / -without-json to explicit force/disable
JSON runtime support, otherwise it will be included if found as working
Note: As a special case you may built-in cJSON by placing its source in
the folder "libcob". If it is included there, this version will be \
compiled
into libcob. It may be enforced with --with-json=local,
like --with-json=cjson and --with-json=json-c enforce the given library.
** To adjust the build system for GMP/MPIR you may use the new variables
GMP_CFLAGS / MPIR_CFLAGS and GMP_LIBS / MPIR_LIBS.
If unset configure will try pkg-config.
** To adjust configure to use libxml2 you may use the new variables XML2_CFLAGS
and XML2_LIBS. If unset configure will use pkg-config / xml2-config.
** To adjust configure to use libcjson you may use the new variables CJSON_CFLAGS
and CJSON_LIBS, similar JSON_C_CFLAGS and JSON_C_LIBS for libjson-c.
If unset configure will use pkg-config.
** new configure option --enable-hardening to either enable GNU C's
hardening options or leave as-is, or disable (which previous versions
effectively did)
** build system: defaults.h is not created or included any more, all configure
provided defines are now found in the single header config.h
** Any time after `make` you can call `pre-inst-env` script to use the still-
uninstalled binaries. Samples:
pre-inst-env cobc -xj prog.cob
pre-inst-env cobcrun -M prog start
pre-inst-env may also be called without parameters to start a new shell
session with the environment adjusted to use the uninstalled version.
* Too much bug fixes to list here (please check ChangeLogs for full details),
includes the following CVEs:
** compiler (may be triggered with special crafted source files)
CVE-2019-14468, CVE-2019-14486, CVE-2019-14528, CVE-2019-14541,
CVE-2019-16396, CVE-2019-16395
* GnuCOBOL's getopt implementation honors POSIXLY_CORRECT now:
if set to any value the option parsing in cobc, cobcrun and CBL_GC_GETOPT
stops at the first nonoption, otherwise it stays with the old behaviour and
re-orders nonoptions to the end)
* Known issues in 3.1
** testsuite:
* if built with vbisam, cisam or disam, depending on the version used, some
tests will lead to UNEXPECTED PASS, while others may fail
* possibly failing tests (false positives):
* temporary path invalid
* compiler outputs (assembler)
* compile from stdin
* NIST: OBNC1M.CBL false positive (the test runner uses a nonportable way of
emulating a program kill)
** the recent additions of ">> TURN" and "variable LIKE \
variable" may not work
as expected in all cases
** features that are known to not be portable to every environment yet
(especially when using a different compiler than GCC)
* function with variable-length RETURNING item
* USAGE POINTER, which may need to be manually aligned
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
GnuCOBOL 3.0-rc1 released (20180422)
* New GnuCOBOL features
** REPORTWRITER module added
** INDEXED file handling: added support for sparse and split keys
** file handling: added support for [RE]WRITE FILE file FROM source
** DISPLAY ... UPON PRINTER may be redirected to an external command
(new runtime configuration COB_DISPLAY_PRINT_PIPE) or appended to a file
(new runtime configuration COB_DISPLAY_PRINT_FILE, which takes precedence)
** XML GENERATE statement
(note: runtime support needs additional library libxml2)
** JSON GENERATE statement
(note: runtime support needs additional library cJSON)
** Improved support for different compiler extensions (ACUCOBOL, IBM,
Fujitsu, MicroFocus COBOL, Microsoft COBOL, RM/COBOL and more)
** Parser support for many features of different compilers, for example
PIC 1 / USAGE BIT, ACUCOBOL extensions for graphical controls
VALIDATE statement and much more.
Most of them will be fully implemented in a later version...
** Option to dump (partial) data of modules on abort.
Use new cobc option -fdump=<scope> to prepare the module and optional
use new runtime configuration options COB_DUMP_FILE and COB_DUMP_WIDTH
to adjust the dump.
** C interface: new functions cob_set_runtime_option / cob_get_runtime_option
to set/get special runtime options (currently FILE * for trace and printer
output) or to reload the runtime configuration after changing environment
** file handling: include support for a callable EXTFH interface also provided
by several compilers including Micro Focus
This allows users to insert an external file handler while retaining
all of the normal COBOL I/O functions with a possible callback to libcob.
To have the compiled program call `yourfh()` for file I/O use:
`cobc -fcallfh=yourfh`
In turn `yourfh()` may call `EXTFH()` to use I/O functions from GnuCOBOL.
The external file handler can also be directly invoked from COBOL, too,
using `CALL "EXTFH"`.
** Note: Not all flags contained in the FCD3 are handled already **
* Changed cobc options:
** The option -debug (runtime checks) no longer implies -ftrace (option to
trace program flow of the generated module with COB_SET_TRACE).
You may specify -ftrace[all] along -debug if you want to use this feature.
** The option -E (preprocess file) does not imply an output file any more.
If no output file is explicit specified with -o filename.i the output will
be written to stdout (behavior of versions 1.1 is restored).
Requesting output to stdout explicit by using a dash as output name is
also possible.
** Changed options for listing:
The option -tsymbols was replaced by -ftsymbols and therefore can now also
be explicit deactivated by specifying -fno-tsymbols.
New options for suppressing (or explicit requesting) parts of the listing:
-fno-theader suppress all headers from listing while keeping page breaks
-fno-tmessages suppress warning and error summary from listing
-fno-tsource suppress actual source from listing (for example to only
produce the cross-reference)
** The option -fif-cutoff (option to change generated C sources to use
a label + goto for nested if/else) was deactivated to allow the C compiler
to fully control the program flow.
** Please report if you have a need for this option as it will be **
** removed permanently in the next release of GnuCOBOL otherwise. **
* Changes in the COBOL runtime (libcob)
** updated exception handling, GnuCOBOL now only cleans raised exceptions when
requested by SET LAST EXCEPTION TO OFF
** The standard-format for program tracing was changed and is now adjustable
by the runtime configuration option COB_TRACE_FORMAT.
* New build features
** New test suite for manual tests (especially SCREEN I/O),
run with `make checkmanual`.
Note: You may want to adjust the test runner tests/run_prog_manual.sh which
defaults to xterm in GUI environments and screen in terminal environments.
** new configure option --enable-debug-log to allow *internal* tracing
of GnuCOBOL (intended for developers of GnuCOBOL only)
* Too much bug fixes to list here (please check ChangeLogs for full details).
Files: