The GCC Cobol project seems to be maturing into a beta version. Much of the work since our last posting in November 2023 has been devoted to problem reports from users. The best battle plan never survives first contact with the ... existing code.
This message summarizes our latest triumphs as a precursor to the next big step, namely submitting patches to begin incorporating our work into the GCC project. Repository: https://gitlab.cobolworx.com/COBOLworx/gcc-cobol/ Ubuntu/Debian x64 binary package: https://gitlab.cobolworx.com/COBOLworx/gcc-cobol/-/packages/2 Perhaps our most important accomplishment is better support for Abbreviated Complex Relation Conditions. I mentioned this challenge at FOSDEM in February. These have the form A = B or C which means A = B or A = C The standard form is now solved. A nonstandard form that includes parentheses is now accepted too, and might also be solved. Time and code will tell. We continue to add ISO features adopted in recent standards. gcobol now supports 01 constants, typedefs, and function prototypes. gcobol supports an EBCDIC mode, whereby ASCII (or UTF-8, or CP1252 ) source operates on EBCDIC-encoded files. That mode has been tested successfully with the NIST test suite. gcobol has a documented but as-yet unexploited ISAM plug-in API to support ISAM libraries for I/O. This opens the potential for ISAM files that are on-disk compatible with that of other COBOL compilers. There are numerous improvements to the Compiler Directing Facility (CDF). Conditional compilation has seen more testing, and commensurate improvement. It now supports the COBOL-WORDS directive, which is useful in compensating for non-ISO COBOL dialects. Speaking of dialects, several concessions are now made to IBM and MicroFocus dialects. Examples include IBM's LENGTH OF and TALLY registers, and $IF and friends for MicroFocus. Contact with the real world forced us to pay closer attention to performance. Source modules of 400,000 lines of COBOL input no longer present a problem. Work is ongoing to improve the size and compile-time speed of the generated code. The GENERIC we produce is evidently hard on the optimizer. Users also demand convenience! -fsyntax-only does what you might guess. That feature allows the compiler to proceed with parsing in the face of Data Division errors. -fdefaultbyte initializes memory to a specified value. -copyext sets the extension of copybook files -fcobol-exceptions accepts a list of Exception Conditions -include prepends COBOL source code to the input -preprocess runs any filter against the amalgamated input, prior to parsing. gcobol includes "gcobc", an emulation script for (some) compatibility with GnuCOBOL. High on the TODO list is to take advantage of gcc's error/warning framework. Perhaps in September. We are ever hopeful. As indicated, we are preparing to submit patches for inclusion of gcobol into gcc proper. That work will begin in September, once everyone is back from vacation ready to put nose to grindstone. Thank you for your kind attention. May the parse be with you. --jkl