The GnuCOBOL project is participating in the Google Summer of Code under the GNU umbrella.
GnuCOBOL produces native executables from COBOL source code. It is known to work on Linux, BSD, many proprietary Unixes, macOS, and Windows, among others.
You can be part of this, by contributing, for example in the GSOC!
Url: https://www.gnu.org/software/gnucobol/
Address for contact: gnucobol-dev@gnu.org
Mentor: Simon Sobisch (others may be available)
The following list has suggestions for GSOC ideas, feel free to reach out with ideas for own proposals.
Note that we have a zero AI policy for coding in GSOC projects, as well as for writing the proposals
(usage of LLMs for the purpose of grammar / spell checking and use of classical LSPs like clangd for code-completions and checks are allowed).
COBOL uses fixed-length data storage, with common options "single byte" PIC X and multibyte (UTF-16 or UTF-32, so 2 or 4 byte) PIC N, where the amount of characters is specified.
PIC U for UTF-8 XML handling is relative new in COBOL and allows to specify the storage by either byte-length or character size.
Both PIC N and PIC U are only partially implemented in GnuCOBOL so far.
libiconv is already included in the build system.
Extend the testsuite to check all COBOL statements with these types.
To do so duplicate the existing tests that use PIC X and replace
those with PIC U and/or PIC N.
Implementation of handling those types in the runtime, at least
for reference-modification (substring by character position) and
the COBOL statements STRING/UNSTRING, MOVE and comparisons (doing
internal conversions to UTF-8 from PIC N and PIC X).
For more hours also INSPECT, XML GENERATE, ACCEPT/DISPLAY with a high code-coverage.
COBOL calling into Java functions is often useful interfacing with external "java-only" libraries and modernization projects; calling well-tested COBOL modules from Java is often useful for modernization projects as well as new software.
This project is about finishing the implementation of the COBOL extensions to the CALL statement (as started with last GSOC2024), as well as JAVA-CALLABLE and JAVA-SHAREABLE directive to allow this interaction with using the JNI.
Cleanup of addition of Java interface libraries to the build system (autoconf/automake/conditional compilation).
Support for CALL 'Java.java-class-name.java-static-method-name' and necessary parameter mapping.
For more hours support for generation of Java wrappers and a minimal java library to provide access to COBOL fields and programs.
COBOL sources often contain "foreign" embedded code. The standard way of doing this
is to surround this in EXEC lang ... END-EXEC blocks. Variables may be shared
by marking them within the blocks. The most common is EXEC SQL.
Those blocks are commonly handled by a preprocessor that generates COBOL code.
Those preprocessors therefore need to be manually called and their output be feed
into cobc, message handled separately, ...
This project is about providing "embedded" calls to the matching preprocessor from cobc,
for details see FR #341.
Adjustment in the preparsing/parsing steps as noted in FR #341.
Adjustment to call the external defined programs (reading configuration using existing code)
and preprocess multiple times until all different EXEC LANG are handled.
If time permits: add sample definitions for EXEC SQL preprocessors ocesql, esqloc, gixsql.