Thanks for this, can't wait to try it out. I discovered the Hercules emulator a while back, downloaded everything and fired it up, then discovered I had literally no idea how to do anything. It's just such a different world than the ones I'm familiar with.
Indeed, it seemed to me, back in the 1980s, that schools almost consciously refused to teach anything about IBM mainframes. My junior college had a 4331 and a Prime 650; the 4331 was used for school administration purposes and the 650 was used for coursework, and never the twain met. Networking was in its infancy and basically didn't exist on-campus, with all terminals hardwired. When I got to UIUC, almost anything interesting was being done on either on UNIX or on CDC mainframes (or the Cray that I saw but never used).
A guide like this is quite handy for an old hand at computers who finds mainframes completely alien. It's even odder that this old version of VM was open, and yet that never really gained much traction outside of diehards keeping the flame alive. I wonder what the computing world would look like today if VM had been put under a copyleft license? I also wonder if an XT/370 could run this thing natively, or if the 370 side was too slow/lacking needed features.
Out of all mainframe OSes, VM is the most approachable imo, as long as you grasp minidisks and how s390 device addressing works, it becomes just a somewhat clunky DOS. I would also suggest checking out the 2.4 VM ADCD, it is a package with basically all the interesting software, and it is out there if you look for it.
And the Community Edition even has a handy DIR command for you.
This document has a lot of things left to add - the machines can really be a lot more interesting. So far, I haven't figured out how to connect my real printer over the network, the other machine with shared disks but no OS, and even creating a new VM for our user. I also know there are a lot of other interesting things on the base CE image that can be super cool to show a newcomer.
It is a very cool operating system. I had the pleasure of configuring it (in it’s ibm z/VM form) from scratch a few years ago. However due to company politics it only ran for 2 years. If you are based anywhere in the US you could probably make a career out of it. If you are in Europe I don’t know if it is a wise choice. Not much z/VM there. If you now own a modern mainframe and want to run Linux workload for example I think you are better of using kvm. However if you need to run z/OS virtualised your only option is still z/VM
I have recently played with a plain VM/370 R6 and it's very bare compared to CE - not even bold in the terminal to highlight your current line in EDIT. I was thinking of adding it to my collection of Docker images, but I need to play with tape images and, perhaps, load a bunch of them into the container image so there is something to do with it that resembles modern computing.
Yes. Everything is profoundly alien to anyone who's coming from a Unix background I was initially extremely confused. I was asking myself how does VM/370 define and starts VMs and thinking of a command line tool to do it.
Unix called it 'text' too. That's why the ETXTBUSY error's traditional message string is "Text file busy".
It's not losing the first character from FORMAT because of some magic line printer discard for the first character. It's losing the first character because you don't understand FORTRAN. FORMAT, as you can see in that example program, uses field descriptors to describe formats. It's losing the 'H' from 'HELLO' because that character means a 'Hollerith string' follows it, which in your case is the Mockney 'ELLO WORLD'. (-: You need an extra 'H', to start with.
In Unix terms, this is akin to the classic mistake of using printf() instead of puts() for your Hello program, and using a percent character in your string. In BASIC terms, this is PRINT USING, not PRINT. And yes, that does mean that technically you are holding it wrong. The text to write should be in the list given to WRITE, and FORMAT should just be specifying the field descriptor.
Only then do you get to the fact that the first column of formatted output specifies the number of printer lines to advance. So you are holding it doubly wrong. (-: There should be a space after the 'H' denoting your Hollerith string that precedes the 'H' of your 'Hello'. Notice that IBM's program has a space between the field descriptor "14H" (14 character Hollerith string) and "PROGRAM ERROR" (13 character string). That's not just random whitespace. It's the first character of the string, it means 1 line of vertical space, and the string is actually " PROGRAM ERROR".
You can get several native versions of REXX for Linux-based operating systems and the BSDs, including ObjectREXX and Regina.
> It's 2026, and I just wrote about FORTRAN 66. Good heavens!
Thank you for the clarifications. I'll dig a little more and add that to the article. I learned Fortran 77 a long time ago, but I never used Fortran 66.
Believe it or not this operating system is very much alive and kicking in the form of z/VM 7.5 and some of those ancient rituals are still considered normal in that world ;)
A guide like this is quite handy for an old hand at computers who finds mainframes completely alien. It's even odder that this old version of VM was open, and yet that never really gained much traction outside of diehards keeping the flame alive. I wonder what the computing world would look like today if VM had been put under a copyleft license? I also wonder if an XT/370 could run this thing natively, or if the 370 side was too slow/lacking needed features.
And the Community Edition even has a handy DIR command for you.
This document has a lot of things left to add - the machines can really be a lot more interesting. So far, I haven't figured out how to connect my real printer over the network, the other machine with shared disks but no OS, and even creating a new VM for our user. I also know there are a lot of other interesting things on the base CE image that can be super cool to show a newcomer.
Then engineering got a VAX and everything moved to VMS.
Notice in EE the use of [F3] to exit as in the original CUA. As I said at https://news.ycombinator.com/item?id=50026580 .
Unix called it 'text' too. That's why the ETXTBUSY error's traditional message string is "Text file busy".
It's not losing the first character from FORMAT because of some magic line printer discard for the first character. It's losing the first character because you don't understand FORTRAN. FORMAT, as you can see in that example program, uses field descriptors to describe formats. It's losing the 'H' from 'HELLO' because that character means a 'Hollerith string' follows it, which in your case is the Mockney 'ELLO WORLD'. (-: You need an extra 'H', to start with.
In Unix terms, this is akin to the classic mistake of using printf() instead of puts() for your Hello program, and using a percent character in your string. In BASIC terms, this is PRINT USING, not PRINT. And yes, that does mean that technically you are holding it wrong. The text to write should be in the list given to WRITE, and FORMAT should just be specifying the field descriptor.
Only then do you get to the fact that the first column of formatted output specifies the number of printer lines to advance. So you are holding it doubly wrong. (-: There should be a space after the 'H' denoting your Hollerith string that precedes the 'H' of your 'Hello'. Notice that IBM's program has a space between the field descriptor "14H" (14 character Hollerith string) and "PROGRAM ERROR" (13 character string). That's not just random whitespace. It's the first character of the string, it means 1 line of vertical space, and the string is actually " PROGRAM ERROR".
You can get several native versions of REXX for Linux-based operating systems and the BSDs, including ObjectREXX and Regina.
* https://pkgsrc.se/lang/rexx-regina
* https://pkgsrc.se/lang/oorexx
* https://pkgsrc.se/lang/rexx-imc
It's 2026, and I just wrote about FORTRAN 66. Good heavens!
Thank you for the clarifications. I'll dig a little more and add that to the article. I learned Fortran 77 a long time ago, but I never used Fortran 66.