This repository gathers COBOL code examples coming from various websites - mostly from the Mainframestechhelp website - or written by ourself. In particular it includes several build scripts (Bash scripts, batch files, Make scripts) for experimenting with the COBOL language on a Windows machine. |
Ada, Akka, C++, Deno, Docker, Erlang, Flix, Golang, GraalVM, Haskell, Kafka, Kotlin, LLVM, Modula-2, Node.js, Rust, Scala 3, Spark, Spring, TruffleSqueak and WiX Toolset are other topics we are continuously monitoring.
This project depends on the following external software for the Microsoft Windows platform:
Optionally one may also install the following software:
☛ Installation policy
When possible we install software from a Zip archive rather than via a Windows installer. In our case we definedC:\opt\
as the installation directory for optional software tools (in reference to the/opt/
directory on Unix).
For instance our development environment looks as follows (May 2024) 1:
C:\opt\ConEmu\ ( 26 MB) C:\opt\Git\ (367 MB) C:\opt\GnuCOBOL\ (548 MB) C:\opt\msys64\ (2.8 GB) C:\opt\VSCode\ (341 MB)
🔎 Git for Windows provides a Bash emulation used to run
git.exe
from the command line (as well as over 250 Unix commands likeawk
,diff
,file
,grep
,more
,mv
,rmdir
,sed
andwc
).
Directory structure ▴
This project is organized as follows:
bin\ csis-examples\{README.md, MonthTable, etc.} docs\ dovey-examples\{README.md, Colors, etc.} examples\{README.md, helloworld, etc.} harris-examples\{README.md, 100Doors, FizzBuzz, etc.} moseley-examples\{README.md, Elapsed, etc.} README.md RESOURCES.md setenv.bat
where
- directory
bin\
provides several utility batch files - directory
csis-examples
contains several COBOL examples from the University of Limerick. - directory
docs\
contains several COBOL related papers/articles (docs\README.md
). - directory
examples\
contains COBOL examples grabbed from various websites (examples\README.md
). - directory
harris-examples
contains COBOL examples from Mike Harris GitHub repository. - file
README.md
is the Markdown document for this page. - file
RESOURCES.md
is the Markdown document presenting external resources. - file
setenv.bat
is the batch command for setting up our environment.
We also define a virtual drive – e.g. drive T:
– in our working environment in order to reduce/hide the real path of our project directory (see article "Windows command prompt limitation" from Microsoft Support).
🔎 We use the Windows external command
subst
to create virtual drives; for instance:> subst T: %USERPROFILE%\workspace\dart-examples
In the next section we give a brief description of the batch files present in this project.
setenv.bat
2
We execute command setenv.bat
once to setup our development environment; it makes external tools such as git.exe
, make.exe
and sh.exe
directly available from the command prompt.
> setenv Tool versions: cobc 3.3.0, make 4.4.1, git 2.45.0, diff 3.10, bash 5.2.26(1)-release > where git make sh C:\opt\Git\bin\git.exe C:\opt\Git\mingw64\bin\git.exe C:\opt\msys64\usr\bin\make.exe C:\opt\Git\bin\sh.exe C:\opt\Git\usr\bin\sh.exe
Command setenv help
displays the help messsage :
> setenv help Usage: setenv { <option> | <subcommand> } Options: -bash start Git bash shell instead of Windows command prompt -debug print commands executed by this script -verbose print progress messages Subcommands: help print this help message
Footnotes ▴
[1] Downloads ↩
-
In our case we downloaded the following installation files (see section 1):
ConEmuPack.230724.7z ( 5 MB) gnucobol-3.2-aio-20240306-user.msi ( 92 MB) msys2-x86_64-20240113.exe ( 83 MB) PortableGit-2.45.0-64-bit.7z.exe ( 41 MB) VSCode-win32-x64-1.89.1.zip (131 MB)
☛ GnuCOBOL distribution
We prefer the All-in-One distribution from SuperBOL over the GnuCOBOL distribution from Arnold Trembley.
[2] setenv.bat
usage ↩
-
Batch file
setenv.bat
has specific environment variables set that enable us to use command-line developer tools more easily. - It is similar to the setup scripts described on the page "Visual Studio Developer Command Prompt and Developer PowerShell" of the Visual Studio online documentation.
-
For instance we can quickly check that the two scripts
Launch-VsDevShell.ps1
andVsDevCmd.bat
are indeed available in our Visual Studio 2019 installation :> where /r "C:\Program Files (x86)\Microsoft Visual Studio" *vsdev* C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\Launch-VsDevShell.ps1 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\vsdevcmd\core\vsdevcmd_end.bat C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\vsdevcmd\core\vsdevcmd_start.bat
-
Concretely, in our GitHub projects which depend on Visual Studio (e.g.
michelou/cpp-examples
),setenv.bat
does invokeVsDevCmd.bat
(resp.vcvarall.bat
for older Visual Studio versions) to setup the Visual Studio tools on the command prompt.
[3] MSYS2 libraries ↩
- Some COBOL examples depend on the gmp library – A free library for arbitrary precision arithmetic – which is part of our local MSYS2 installation.