Early Mainframe Era (1950s–1960s)
Glue languages: JCL (IBM), REXX (IBM), CLIST
Modern ways to run it today
- Emulation/simulation: Run an IBM System/370-class environment with Hercules (S/370, ESA/390, z/Arch emulator). (hercules-390.org)
- Virtualization: Run Hercules inside a Linux VM (VirtualBox/VMware/KVM) to keep networking + disk images isolated.
- Containers / compatibility layers: Run Hercules in a container (Linux host) for repeatable setup (still needs disk images and OS files mounted in).
- Managed/cloud: Not typical; you can rent a generic cloud VM and run Hercules there, but you still need legal OS media.
- Legal reality: True IBM mainframe OS distributions are generally licensed; hobbyist setups often use older, community-available OS images and tooling. Hercules itself is just the emulator. (hercules-390.org)
Minimal code example
Filename: HELLO.JCL
What it does: Submits a tiny batch job that prints in-stream text to the job output (classic “glue” batch orchestration).
//HELLO JOB (ACCT),'HELLO',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//STEP1 EXEC PGM=IEBGENER
//SYSUT1 DD *
HELLO FROM JCL.
THIS JOB RAN A UTILITY TO COPY TEXT TO OUTPUT.
/*
//SYSUT2 DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
How to run today
- Emulation/simulation: Install Hercules (hercules-390.org) and a turnkey MVS/OS image (commonly referenced “TK4-” style setups; availability varies and you must respect licensing/redistribution constraints). (hercules-390.eu)
- Boot the system, log on to TSO, and submit:
- In TSO/ISPF-like editors: save as
HELLO.JCL
- Submit with:
SUBMIT 'userid.HELLO.JCL' (dataset name depends on your setup)
Commercial Mainframe Era (1960s–1970s)
Glue languages: JCL (IBM), REXX (https://www.ibm.com/docs/en/zos/2.5.0?topic=languages-rexx), EXEC (VM/CMS)
Modern ways to run it today