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).
|
Log message:
Update to 2.2
* Change PKGNAME as a name of tarball
Changelog:
GnuCOBOL 2.2 released (20170906)
* Move to GPL/LGPL 3
* New GnuCOBOL features (too much to list)
** User Defined Functions, FUNCTION-ID.
** New intrinsic functions
ABSOLUTE-VALUE alias for ABS
CURRENCY-SYMBOL CURRENCY-SYMBOL of the current program
FORMATTED-CURRENT-DATE ISO 8601 datetime function
FORMATTED-DATE ISO 8601 datetime function
FORMATTED-DATETIME ISO 8601 datetime function
FORMATTED-TIME ISO 8601 datetime function
TEST-FORMATTED-DATETIME ISO 8601 datetime function
INTEGER-OF-FORMATTED-DATE date to integer
HIGHEST-ALGEBRAIC now implemented
LOWEST-ALGEBRAIC now implemented
LOCALE-COMPARE now implemented
NUMVAL-F now implemented
TEST-NUMVAL now implemented
TEST-NUMVAL-C now implemented
TEST-NUMVAL-F now implemented
LENGTH-AN alias for BYTE-LENGTH
MODULE-CALLER-ID return the name of the caller
MODULE-DATE current module: compilation date
MODULE-TIME current module: compilation time
MODULE-FORMATTED-DATE current module: formatted datetime
MODULE-ID current module: PROGRAM-ID
MODULE-PATH current module: path on compile time
MODULE-SOURCE current module: name on compile time
MONETARY-DECIMAL-POINT LOCALE based fiscal decimal point
MONETARY-THOUSANDS-SEPARATOR LOCALE based fiscal visual grouping separator
Note:
The functions that are actually available as intrinsic functions depend
on the -std used. Function names that aren't marked as intrinsic functions
by the current -std can be used freely as user defined words or
even as user defined functions.
** New system functions
C$CALLEDBY return the name of the caller
CBL_GC_FORK fork current process (not on Windows)
CBL_GC_WAITPID wait for process to end
CBL_GC_GETOPT (CBL_OC_GETOPT) comand lineoption parser for COBOL
CBL_GC_PRINTABLE (C$PRINTABLE) check if character is printable
CBL_GC_HOSTED (CBL_OC_HOSTED) provides access to C extern variables,
like stdin, errno
CBL_GC_NANOSLEEP CBL_OC_NANOSLEEP
CBL_GET_SCR_SIZE get current terminal size - if any
CBL_READ_KBD_CHAR get character from terminal
CBL_SET_CSR_POS set current position on terminal
x'E4' clear terminal screen
x'E5' ring the bell
** many new / extended COBOL statements from COBOL2002/2014 and extensions
from different COBOL dialects
** more SWITCHes: from SWITCH-01 to SWITCH-36 and its variants from many
COBOL dialects
** more IEEE numeric types added, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34, etc
** more literal types added, numeric boolean etc.
** most of the COBOL 2014 spec Compiler Directive Facility is in
** optional: stricter syntax checks
** refactored and extended compiler and runtime messages with available
translations (currently to Spanish, Portuguese and Dutch, partial to German)
** screen IO: many extended ACCEPT DISPLAY and SCREEN SECTION changes
** Direct call interface for C:
CALL-CONVENTIONS for CALLs and PROCEDURE DIVISION
SIZE of parameters specified for CALL ... BY VALUE
RETURN NOTHING for calling void functions
RETURN ADDRESS OF VAR for calling functions returning a pointer
PROCEDURE DIVISION RETURNING OMITTED -> callable as void function
** Much, much more!
* New cobc options:
** New -std options:
cobol2014 COBOL 2014 Standard
xopen X/Open COBOL Standard
mf-strict Micro Focus COBOL compatibility - strict
ibm-strict IBM COBOL compatibility - strict
ibm-strict MVS/VM COBOL compatibility - strict
acu ACUCOBOL-GT compatibility
acu-strict ACUCOBOL-GT compatibility - strict
bs2000 BS2000 COBOL compatibility (back again)
bs2000-strict BS2000 COBOL compatibility - strict
rm RM-COBOL compatibility
rm-strict RM-COBOL compatibility - strict
Note:
The GnuCOBOL compiler tries to limit both the feature-set and reserved words
to the specified compiler when the "strict" dialects are used.
COBOL sources compiled with these dialects are therefore likely to compile
with the specified compiler and vice versa: sources that were compiled on
the specified compiler should compile without any issues with GnuCOBOL.
With the "non-strict" dialects GnuCOBOL will activate the complete
feature-set where it doesn't directly conflict with the specified dialect,
including reserved words and GnuCOBOL specific extensions.
COBOL sources compiled with these dialects therefore may work only
with GnuCOBOL. COBOL sources may need a change because of rich feature-set
and reserved words in GnuCOBOL, otherwise offending words may be removed
by `-fno-reserved=word`.
COBOL-85, X/Open COBOL, COBOL 2002 and COBOL 2014 are always "strict".
** New listing options:
-t listing, -T wide listing, --tlines=lines, lines per page of listing
-Xref
Note: -P, generate preprocessor listing, is still available (and improved)
** All compiler configuration flags may be set on command line
to override a specific setting of the current -std, see cobc --help
** All Warnings can be explicit enabled/disabled or even marked as error,
see cobc --help
-Wunreachable report on possible unreachable statements
** Options for the C compiler/linker:
-K <entry>, compile entry point as static (resolve at link time)
-A, add options to C compile phase
-Q, add options to C link phase
** Miscellaneous
-i -info, display build/environment
-D define symbol for Compiler Directive Facility
-j -job=args, run job after compile
input filename of '-' reads source from standard in
For more: see cobc --help
* New cobcrun options:
-i -info, display build/environment
-r -runtime-env, display runtime configuration
-c -config, set runtime config from file
-M -module, set path/module name when looking for entry
* New build features
make test downloads NIST testsuite if necessary
now usable with parallel builds (make -j4 test)
make checkall runs both the internal an NIST testsuite
** testsuite defaults to coloured output
** Windows(tm) Visual Studio build support files added,
options to validate the software generated with VS against both test suites
** removed maintainer mode - if files need a rebuild because of a change
they are always rebuild
** help2man, bison and flex are checked during configure,
if they need to be invoked and are missing a useful error message is given
** All files created by GnuCOBOL runtime use the same file permission settings
now: COB_FILE_MODE which was changed to 0666
** changed unix package name from "gnu-cobol" to "gnucobol"
|
Log message:
Update to 2.0rc1
Add LICENSE
Upstream changes:
* 20160813 GnuCOBOL 2.0rc1
** User Defined Functions
** New cobc options:
*** -t listing, -T wide listing, --tlines=lines, lines per page of listing
*** -K <entry>, entry point compile static
*** -i -info, display build/environment
*** -j -job=args, run job after compile
*** -P, generate preprocessor listing
*** -Xref, generate cross reference (requires cobxref)
*** -A, add options to C compile phase
*** -Q, add options to C link phase
*** -D define symbol for Compiler Directive Facility
*** -f<tag>=value override .conf configuration setting
*** -list-reserved, -list-intrinsics, -list-mnemonics, -list-system
*** -W enable ALL warnings (more than -Wall, which excludes some)
*** -Wunreachable report on unreachable statements
*** -Wprototypes warn missing FUNCTION prototypes/definitions
*** -fmfcomment * or / in column 1 as comment
*** -facucomment $ in idicator area treated as *, | treated as *>
*** Many compiler messaging changes, refactored for translation
*** input filename of '-' reads source from standard in
*** New -std=cobol2014
*** new configuration settings
**** call-overflow, literal-length, numeric-literal-length
**** specify-reserved-words
** New cobcrun options:
*** -i -info, display build/environment
*** -r -runtime-env, display runtime configuration
*** -c -config, set runtime config from file
*** -M -module, set path/module name when looking for entry
** New build features
*** coloured textsuite output
*** Windows(tm) Visual Studio build support files added to source tree
** New GnuCOBOL features
*** User Defined Functions, FUNCTION-ID.
*** Most of the COBOL 2014 spec Compiler Directive Facility is in
*** Spanish and Dutch messages along with English and Japanese
*** More C/C++ reserved words tested to avoid conflicts
*** screen IO, many extended ACCEPT DISPLAY screen section changes
*** stricter ordering of CONFIGURATION SECTION paragraphs
*** PICTURE clause, more to COBOL 2014 spec
*** ACCEPT OMITTED, waits for return/enter
*** More Intrinsic Functions, including ISO 8601 FORMATTED-DATE and TIME
*** Changes to INITIAL and RECURSIVE program handling, needs to improve more
*** More IEEE numeric types added, FLOAT-DECIMAL-16, FLOAT-DECIMAL-34, etc
*** More SWITCHes, from SWITCH-01 to SWITCH-36
*** TALLY special register predefined
*** More literal types added, numeric boolean etc.
*** Nested OCCURS DEPENDING ON (when proper config settings
*** comment keywords in IDENTIFICATION DIVISION treated as end-of-line comments
*** PROCEDURE DIVISION RETURNING OMITTED support matching void C functions
*** New system functions
**** CBL_OC_HOSTED - provides access to C extern variables, like stdin, errno
*** More support for EC-exception codes
*** SET LAST EXCEPTION TO OFF
* All files created by GnuCOBOL runtime use the same file permission settings
now: COB_FILE_MODE which was changed to 0666
|