There's also an IBM-built emulator that has at some point shipped with Eclipse. I used to work on it. The 3270 was fine, just took a bit of getting used to. JCL was the real horror show.
The creators of JCL admitted later that the original sin of JCL was that it explicitly tried to NOT BE a programming language. Everything "programmable" evolved out of real-world needs, creating the mess that it has become.
You can see it today with "programming in YAML", whether it is Ansible, Kustomize, Kyverno (K8s manifests get a pass because they are just serialization of non-programmable thing), or any other weird "we started to add functions to JSON/YAML dumps"
From my own musings about making such a tool :)