🛠️ P3/COBOL 25.1.0-SNAPSHOT is available for preview.
Release Notes
Version 8.2

Release notes - P3/COBOL Compiler - Version 8.2

Migration from 8.1 to 8.2

As usual, you should recompile all COBOL source programs using this release, either in the IDE or from the command line. Note that a new batch builder is provided in this release that simplifies the bulk compiling of programs and collecting information regarding the success or failure of the operation.

In addition, you might have to consider the following:

  • Interfaces for running, launching and/or dispatching COBOL programs from Java have been standardized and Javadocs are provided. Documentation of these new interfaces can be found in the docs/javadoc directory of the command line distribution and in the API chapter of the IDE P3/COBOL Help contents.

💡 Known Issues

  • Occasionally the parsing status bar entry in the IDE editor will disappear until Eclipse is restarted.
  • Sometimes the IDE will fail to recognize a change to the compiler configuration file. Closing and reopening the project will cause the correct configuration to be recognized.
  • The use of Java 17 to compile and run P3/COBOL that uses native (global heap) stored (or passed from C) pointers is not supported in this release.

✨ New Features

  • New P3/COBOL Build Launcher with the ability to generate build reports
  • Allow return-code to be returned as the command line value instead of 0 when no exception
  • Dark mode is now supported via the workspace general preferences. You must restart Eclipse after changing these appearance settings.

🛠️ Improvements

  • This version works on any Java version from 8 through 17.

  • Generated debug information is now much smaller than previously resulting in fewer instances requiring wrapping threshold changes for large programs

  • Single byte alphanumerics passed by VALUE could pass "byte" (char) instead of char*

  • Option to terminate on uncaught overflow exceptions

  • ESQL INSERT/UPDATE unnecessarily slow when alphanumeric host variables specified

  • Allow reopening of a closed run unit

  • Use the statement map to reduce the impact of debug methods on the size of generated code

  • Use less time and memory for compiling large "value" groups

  • Debug frame for inline perform should have a meaningful name

  • This version works on any Eclipse version starting with Photon and including 2021-12.

  • A debugger can be lauched to use the normal Eclipse source lookup rules using only the program name in addition to previous behavior

  • Selection of editor outline default expansion can be set by project and editor properties

  • Folding is now provided for sections and paragraphs

  • Hovering over an occurrence annotation now shows the variable name

  • Editor parsing delay can now be set with a Eclipse workspace preference and can adjust the delay automatically if desired

  • Code completion in compiler.p3c and runtime.p3c is now supported when a suffix in the file name is used

  • Occurrence marking for paragraph and section names is now supported

  • Outline updating is now much faster and does not cause inordinate UI delays

🐛 Bugfixes

  • Setting the Dispatcher keep-alive time (via Executor) does not work

  • Static main(...) should trap P3ExitException and perform System.exit()

  • INSPECT ... CONVERTING ... TO figurative fails to expand the figurative to the size of the from argument

  • Fix the dependency path for go thrift

  • Statement map does not include the source offset for statements

  • Undefined induction identifier (PERFORM) causes F9999 in BS2000IDE

  • ENVIRONMENT DIVISION sections ignored if archaic IDENTIFICATION SECTION comments used

  • Dump on abend capability has numerous problems

  • External CALL of BY CONTENT broken

  • Shadowed packages and pom.xml are missing from the runtime library jar

  • App Server fails to redirect the client console to the proxy in/out

  • Bad Java generated when invalid number of indices provided for a subscripted item reference

  • LINE SEQUENTIAL reads when line-delimiter-is-flexible option set results in incorrect information

  • Bad control flow code generated when wrapping is invoked

  • ESQL: Bad code generated for SAVEPOINT

  • java-source-base-directory option does not work on Windows

  • SourceBuilder fails to include Java compilation results in its final error level

  • Debugger stack in the IDE is unreliable when launched using Launcher

  • Empty directories created by IDE compiler in the Eclipse Content

  • Inline PERFORM should require END-PERFORM

  • Running more than one Junit test throws exception

  • INSPECT of numeric-edited item incorrectly uses MOVE rules for final result

  • Storage Map headings are mis-aligned

  • Archaic comments cause syntax errors when placed in nested program IDENTIFICATION DIVISION

  • Exponentiation missing from the operator precedence table

  • Stored pointers do not dereference properly on big-endian machine when allocate-all-direct is false

  • UNSTRING ... INTO should skip any identifiers if no value is remaining after previous identifiers processed

  • Top-level filler in LINKAGE SECTION cannot be initialized

  • Editor's parsing status field now reflect the status of "parsing", "parsed" (with or without error), and "parsing incomplete" (no outline available)

  • Samples are now organized in a more transparent way

  • Several debugging UI anomalies have been fixed and behavior is more predictable

  • Copybook hyperlink marking has been corrected for quoted file names

  • Freezing of the UI when updating the outline has been eliminated

  • CALL statement breakpoints can now the reliably set

  • Deleting at end of program when occurrences are marked now does not generate an assertion error

  • Occurrences at the end of edited file now work properly

  • Outline attemps to maintain the selected item even when syntax errors occur and are later repaired

  • Debugger will now terminated reliably when the run unit terminates and disconnect when the debugger terminates but the run unit continues running

  • Saving the compiler.p3c now delays a launch appropriately

  • Loading an unsupported (old) version of the index no longer generates an exception

  • Editors reparse source in open editors if compiler.p3c changes