Experience, Information Technology

Some Mainframe Nostalgia

I only dabbled on the IBM mainframe over my 30+ year career. One thing that gives me great nostalgia now is SPF. SPFLite2 in particular.

I don’t actually remember what we had on ROSCOE when I made the mistake of attending DeVry in Lombard. It kind of reminded me of the editor I had to use later at client sites. You see, I was either a PC consultant or a DEC/VAX consultant. Prior to the Internet you either used VMSMail for company email, or you had to have a mainframe account because your client used PROFS. You can read more about VMSMail in this book.

The Minimum You Need to Know to Be an OpenVMS Application Developer

Since you already had an account and you could do COBOL on that VAX thing, once in a while they asked you to do some mainframe COBOL too. I talk quite a bit about terminals in my latest book.

https://www.theminimumyouneedtoknow.com/agile_book.html

In large part because that book walks through IT history from the days of paper tape and punched cards through to today. Everything happens because of what came before. The American Greenback determined the size of the punched card.

Sadly those images aren’t to scale, but the greenback determined the size of the punched card because people were already used to handling things of that size. We already had wallets to carry them and trays to hold them. The card divided out into 80 columns. Early terminals had to support 80 columns. Many paper terminals supported 132 from the beginning, but CRT and other video terminals weren’t viable until they could support at least 80 columns.

paper terminal
DEC Paper terminal commonly used for systems consoles long after the VT-100 was introduced

The featured image of this post is an IBM 3278 Courtesy of Richard Thomson and terminals-wiki.org and that is where our journey begins. Maybe I spent too much time using emulators? I seriously remember the later 3270 family terminals having quite a few colors.

There was also a red that would show up. Don’t get me wrong, they were still considered “green screens” but they had colors other than green on them. Given my mono-colored VT terminals of the day, I found that kind of nice. Kind of like you see in this emulator shot.

You need to understand the terminal being used so you can take my statements about SPFLite2 with the grain of salt they need. The default installation opted for a blue on white color scheme. It is easy on the eyes, but it saddened me as well.

First screen of first run

When you download and install SPF on Windows this will be what you see for your first run. Be sure to choose (C) for the keymap.

3277 keyboard

ENTER is that funky key on the right side of the space bar. RETURN is that hooked arrow key above the shift key. I talk a lot about this in the AGILE book because the CUA battle and the “ENTER is on the numeric keypad” insurgence left casualties. IBM had “smart” terminals. You could arrow to any cursor position on the screen in any application. The TAB key would navigate between fields flagged for entry. If you want to know more about those days and why things shook out the way they did, you can buy a copy of my AGILE book.

If you know nothing about IBM choose the (C) option because that key is about where the ENTER key was. Prior to Microsoft adding worthless Windows keys to the keyboard, IBM really spaced the CTRL keys out.

IBM 1391472 PS/2 Keyboard 84 Key keyboard

You have to be slightly better aim with 104 key keyboards.

right control key for typical 104 key keyboard.
Main Window with help open

What you have to understand is that we didn’t have GUI or mouse back then. ISPF (Interactive System Productivity Facility) was a complete file commander. You would have to dig back to DOS applications to find something close to part of it. GNU Midnight Commander would be the closest analogy to the file navigation now. GNU Emacs is the closest I’ve used. I’m told THE (The Hessling Editor) also has an SPF emulation mode.

The file path

Let me direct your attention to the File / Path line in the above image. You who have only worked on the x86-wanna-be-a-real-computer-one-day-when-I-grow-up platforms wont’ understand just how critical this was. With hundreds of network drives you might be starting to understand. Far too many of you have had one hard drive and maybe one DVD/CD drive. As drives got bigger people could not be trusted to be organized so Microsoft created a GUI file navigator and tried to force all of your stuff to be in Documents.

Imagine yourself during a time like this:

Tape library and librarian

There would be anywhere from six to forty tape drives. You would issue a mount request for a specific tape to operations. Some time later operations would reply to your request with the device where the tape was mounted.

The same thing happened with disk packs.

Removable disk pack in drive

We didn’t have GUI and nobody wanted to GUI navigate through a device hierarchy of forty-plus drives.

After entry

I type in the path and hit the funky enter key (mapped to right CTRL) and presto! I’m taken directly to the place of interest. Had I chosen to enter something for Filter Mask as well, only files passing the filter would show up.

Bottom of window

The bottom of the window displays incredibly useful information that we had to memorize. It is important to note that when on a file line the commands can be shortened to the single underlined letter. Please note that DIFFA/B has more than one underlined character. Just typing D will delete.

Brows a directory
OPEN on a source file will OPEN for EDIT. Yes, EDIT will do same. EDIT will always EDIT. OPEN may not.

Note: If OPEN opens for edit, it will OPEN in a new window that will have the File Manager tab and your file tab. EDIT will open a new tab in the existing window.

Define Profile

Here is the answer to the question your mind had about my previous statement. You from the PC world most likely have never worked on anything that did not have default file associations. SPFLite2 has its own file associations called profiles. Here I was opening a BASIC source file for the first time. Note that you can flag files to ‘Do not Edit’ and tell SPFLite2 to ‘Open with Windows.’ You can also do some kinky profile linking and associating one profile to multiple file extensions.

Editing our BASIC file

You will notice that SPFLite2 supports a tabbed interface. It also supports multiple windows ala the help window and others. Above is what the BASIC program looks like when I open it.

Note: The numbers on the left side are SPFLite2 line numbers. They do not exist in the source file though they look just like standard COBOL line numbers.

Some of you might now start to understand why I made such a stink about the 3270 terminal colors. I wanted a much more purist color scheme. The blue on white isn’t bad, it just isn’t 3270 SPF. You can try messing with this via the OPTIONS command.

OPTIONS

I like to set editors to Re-Open last file(s) at start if they support such a feature. I really like it when they are persistent and will save even unnamed buffers between sessions. No such luck here.

Note: You can change anything you want and just rename the configuration file to start over. You can also copy the configuration file to a new name.

Configuration file is under Documents/SPFLite

One of the download options was some AUTO color files for a few languages. I downloaded and installed them. I’m probably going to delete all of them. They assume a default color theme and, well, let me just show you how things went.

I’m pretty certain I could have fixed the line number coloring if I was willing to put more time into messing with all of the schemes. I was trying to see how COBOL was handled. I also wanted to see how other things were handled.

The file list didn’t look too bad.

I don’t think the COBOL AUTO recognized .COB as COBOL as many PC things only recognize .cob. Some might also recognize .cbl but that isn’t an old school standard.

The C-language stuff didn’t impress me either.

A large part of my disappointment with the AUTO stuff is I was unwilling to put however long it took doctoring the schema settings to get something I could live with. I might at some point, just not now. You can easily figure out which each AUTO uses. The AUTO files go in Documents/SPFLite/AUTO. Here is a snippet of the C-language one.

; SPFLite Colorize File
  MIXEDCASE YES
  ESCAPECHR \
  QUOTED    5
  NUMERIC   6
  COMMENT1  7 // 0
  COMMENT2  7 /* */
 ;DELIMS    !"#$%&'()*+,-./:;<=>?@[]^_{|}~    (all delimiters between 33 and 127)  DELIMS    !"$%&'()*+,-./:;<=>?@[\]^{|}~
 WORD  8 !
  WORD  8 "
  WORD  8 #
  WORD  8 $
  WORD  8 %
  WORD  8 &
  WORD  8 '
  WORD  8 (
  WORD  8 )
 …
  AUTOCAPS 10 #define
  AUTOCAPS 10 #elif
  AUTOCAPS 10 #else
  AUTOCAPS 10 #endif
  AUTOCAPS 10 #endregion
  AUTOCAPS 10 #error
 …
  AUTOCAPS 11 BOOL
  AUTOCAPS 11 BYTE
  WORD 11 break
  WORD 11 case
  WORD 11 char
  WORD 11 const
 …
 ; done

You will notice it appears 5, 6, 7, 8, 10, and 11 are what C uses. As long as each AUTO file for a language assigns 8 to symbols, 11 to keywords, and 10 to compiler directives one could come up with a color schema they really like that worked for all languages.

It was at this point when I nuked the config file and started over. I, like far too many humans, can spend days getting colors “just right.”

Both Screen and Schemes have color settings

For those who want to go down the path of getting things “just right” I need to point out that both the Screens and Schemes tabs have color settings. Schemes apply to the text and screens applies to everything around the text like tabs and line numbers. I cam here to set the font.

People who do not read the text to the right will find changing the font non-intuitive. While you can type the name in if you happen to know it, you click the “Choose” button below the values.

Font dialog
After new font

Ah, I should point out I downloaded the optional font library and installed just a token few of them.

Notice the dot lines in front of some directories. That is SPFLite telling you that your current priv level will not let you edit in those directories. When you own everything you don’t see that.

Drive I own everything on

Exiting a file isn’t as straight forward as most PC users would like. You can read the documentation for AUTOSAVE. This is a feature for automatically saving your files. I’m talking about ending the edit session in a single file tab. For that you use END at the command prompt. Close won’t work, quit won’t work, and EXIT will bail all the way out of that SPFLite2 window.

You can also right click on the file tab. Unlike many PC applications this will not bring up a special menu, it just closes the tab.

NEW isn’t a command either

Probably the shocking thing for me was “NEW” wasn’t a command. You can create a new tab by left-clicking on “New” or by typing the command EDIT NEW and hitting the ENTER key.

New blank tab not yet associated with a file

SPFLite2 is a Line Editor

The help text is massive for SPFLite. You could literally spend days skimming through all of the commands. There is so much kinky stuff you can do if you want to put the time into learning it. SPFLite2 deviates from the mainframe inspiration in some subtle but critical ways.

When you create a new file on the mainframe the editor opens to a screen of blank temporary lines. As you can see above, SPFLite does not do this. You have to insert at least one line yourself. The “Top” and “Bottom” things don’t exist.

I seem to remember being able to set an “insert mode” by typing I* in the line number area which would then just keep inserting lines while you typed on the mainframe. I have not found such a feature on SPFLite2. I’m sure there is something, I just haven’t found it.

Here’s a little beginning sequence to get you going. Be sure to remember to hit ENTER (the right <Ctrl> key if you followed my instructions) after each thing.

Note that temporary lines do not have line numbers. “I” inserts temporary lines and “N” inserts permanent. Temporary lines will use whatever MASK is set. When you set a MASK it is set for the entire edit session. You can change the MASK value but not actually get rid of the MASK. When you SPLIT lines or Insert temporary lines, the MASK is used.

After hitting ENTER I got the temporary line below the =MASK> prompt and my cursor was on that temporary. I had to arrow up to the MASK line, type the MASK and hit enter again. I’m sure there is an easier way, but this way was obvious.

The MASK can be very handy when you have a bunch of comments to enter. Remember, the editor defaults to overstrike.

Viewing file in Notepad++

You will note that SPFLite2 takes the term “temporary” seriously. We see lots of extra comment lines but they don’t have line numbers so they are temporary.

Summary

This is nowhere near a complete tutorial on SPFLite2. You could spend days reading the help text and learning the incredibly powerful features built into this editor. I had a blast reminiscing with this.

You have to remember that this is a different mode of thinking that all of today’s PC editors. This is from a time when we were told to keep functions and COBOL paragraphs to one screen length. Definitely no more than a page.

You can’t really understand the mainframe world until you get at least a tiny understanding of the primary editor.

You can’t really understand why people call midrange and mainframe systems real computers until you walk a mile in that world. This is not a hack-on-the-fly universe. We had to actually design things.