IBM Mainframe

Substitute Teaching System

In the early 1980s, a job opened up at Fresno Unified School District’s Data Processing Center.

I had no practical experience programming IBM mainframes in Fortran, COBOL, Assembler or JCL, but since they provided training, I applied.

The Aptitude Test

The manager, Bob Michellini, required applicants to take an aptitude test focused on logical and mathematical reasoning. The test was supposed to be impossible to complete, but since this was my strong area, I completed the exam quite early, checked every answer, and still turned in the exam early.

The proctor looked puzzled and asked me if I was sure, and I told her that I could not find anything more to do with the test as I had checked it over well. So, she took the exam and scored it, and apparently I obtained a high enough score to get the job and have people whispering about how well I did.

Video Training in the Dungeon

Immediately, I was taken to a room with a television set, a VCR, and several training video tapes to teach me Job Control Language, COBOL programming, the Interact system, the IMS DBMS, the 3278 terminals, card punches and readers, the IBM 370/148 system in general, and other things I have forgotten during the last 45 or so years.

IBM 3278 Terminal

After completing my training, I emerged an IBM programmer ready to go to work for the Educational Research and Testing Department.

Educational Research and Testing

My Senior Programmer/Analyst or SPA was Paul Messingheimer, a single man in his 40s who lived with his mother who was suffering from dementia unfortunately. Paul was a true, kind hearted gentleman, and I must have been a mixed blessing at times. I had great respect for him, and yet I had an irritating amount of curiosity and reluctance to edit a program without knowing exactly what it did everywhere and why things were done that way.

Crashes and Backgammon and Pranks

Our Data Processing Center was full of brilliant folks with an amazing sense of humor. Irritating sometimes, but always in a funny way. And very playful, yet skilled and responsible.

When the mainframe went down, we experienced the shortcomings of a monolithic mainframe system. All of our terminals were tied into the same computer running Interact. It is what we used for coding, compiling, and running our online programs. Each line on the terminal was like a computer card to the system, and it was entirely in text. Data fields started with a hidden character so that users could pull up a screen and fill in the fields and send the screen of data back to the computer with a reference to the next routine or program to run for processing this data.

And the system went down sometimes. So, what did we do?

Programmers (not us) playing backgammon as IBM mainframe is down.

We called IBM and waited for the system to be repaired. And backgammon sets would come out and we’d play games since we could not program without our computer working. You would think we must have some other kind of work available to do, but apparently we did not. And if the downtime was too long, management would simply let us go home.

Occasionally when the system was up, I would need to get a printout from the printer in the computer room, so I would walk down, pick up the printout, and return to my office past Corky’s and Dean’s office. They were our systems programmers.

After I passed their office, they would call out, “Hey, Dan”, and I would turn around and go back to their office. Corky would ask, “If I hadn’t called you, would you be in your office by now?” And I’d frown and roll my eyes.

Corky would laugh his jolly laugh and say, “By the way, we’re married” and wait for a weird expression from me. Then Dean would say, “Yeah, but not to each other with a wry smile.” And they loved pranking everyone. They brought joy.

Spaghetti Code

PROCEDURE DIVISION.
MAIN-PARA.
    DISPLAY "Enter a number: ".
    ACCEPT A.
    GOTO PARA-1.

PARA-1.
    IF A > 10
        ADD 5 TO A
        GOTO PARA-2
    ELSE
        SUBTRACT 2 FROM A
        GOTO PARA-3
    END-IF.

PARA-2.
    MULTIPLY A BY 2 GIVING B.
    GOTO PARA-4.

PARA-3.
    DIVIDE A BY 2 GIVING B.
    GOTO PARA-4.

PARA-4.
    IF B < 20
        GOTO PARA-5
    ELSE
        GOTO PARA-6
    END-IF.

PARA-5.
    ADD A TO B GIVING C.
    GOTO PARA-7.

PARA-6.
    SUBTRACT B FROM A GIVING C.
    GOTO PARA-7.

PARA-7.
    DISPLAY "Result is: " C.
    GOTO MAIN-PARA.

Many of our programs at that time were old and developed before structured programming was a thing. And we had a manager who was so much a stickler for structured programming that he had written a parser to block programs from being saved to disk if they were not structured. And I was equally a stickler.

Sometimes I would be asked to customize some code, and I would want to know about a part of the code and Paul would ask, “Why do you need to know that? Just change this and that.”

While I typically complied with instructions, after a while on the job, I tended to leave the spaghetti programs alone and create a second program from scratch that provided the same functionality but in a more maintainable, reliable, performant manner, and it would become the new one.

Off to Payroll and Personnel

Bob Yoder had seniority on me by many years, and he wanted to work in Educational Research and Testing. So, Bob Michellini, our manager, asked me to change places with him, so I did. And he was in Payroll and Personnel.

Gary Duran, the SPA of Payroll and Personnel, said I was the most productive programmer he had worked with, and hearing that from him was an honor I cherished. And there was apparently another reason I was selected to change places with Bob Yoder and come into Gary’s team. And that was tied to my microcomputer experience.

Not our PCs (AI generated)

The IBM PC

IBM came out with a new computer called the Personal Computer or PC.

Unlike earlier computers, this was not an 8 bit microcomputer running on an Intel 8080 or 8085 or even a faster Zilog Z80 with more processor instructions running at 4MHz (not GHz, MHz). The 8 bit processors typically maxed out at 64K of memory, but the PC had much greater capacity.

Strangely, the PC was a 16 bit processor multiplexed onto an 8 bit data bus. It was like an Intel 8086, but used an 8088 instead. Furthermore, addressing the data was done with a special register that would shift the addressing by 4 bits allowing the machine to address up to 1 Megabyte of memory! Enough to give me a lump in my throat at the time.

Well, we got two of these firebreathing laptops. And instead of running an interpreted BASIC interpreter, they ran dBASE II+, IBM Compiled Pascal, and Compiled BASIC. They also shared a 5 Megabyte Corvis hard disk and each PC had both an Irma 3278 Emulator board and a 3780 board to send and receive data from the IBM mainframe.

Substitute Teaching System

Fresno Unified needed a substitute teaching system to help administrative staff assign substitute teachers each morning to fill in for teachers who called in sick. We needed to pull in the list of substitute teachers, their degrees and credentials, and their last assignment date and sort them in order first by their qualifications–degree first, minor second, credential third, then by last assignment date so those of equal qualifications would be rotated equally.

In retrospect, Gary and I should probably have never done this, but we hacked the format of the dBASE II+ database files so we could actually read and write them in Pascal or compiled BASIC, and I wrote code to use the 3780 emulator to run programs on the mainframe to pull in data.

I also wrote a text based user interface and in the end we had a system that could be used to assign substitute teachers, track which teachers had been assigned and when, and of course provide an interface so the staff could call each substitute in the morning to inform them and make sure someone would be onsite for the students.

Not exactly a perfect image of a 750, but it will do.

Off to UCSF Brain Research

And then after about 4 years with Fresno Unified, a friend told me about a brand new amazing operating system called “Unix”. I bought a book, read it in one day, and resigned from Fresno Unified to take on a volunteer job with a Neurologist and a Psychologist in a brain research branch of University of California, San Francisco.

At UCSF, I learned C programming both on the PC and on a Vax 11/750 running 4.2 BSD Unix while another guy worked on finishing his PhD in Computer Science. While he was completing an advanced degree, he struggled with his programming skills, so when I finished my graphics and statistics programs on the PC, I moved over and helped him complete his handwriting analysis program in C, and the scientists were able to call in subjects for their studies and perform the tests successfully.

The program I wrote for the PC would display large squares and dots on the screen to detect the subject’s ability to detect left-right and right-left movement quickly and accurately. These patients had damage in the parietal region of the brain.

The work did not pay well, but it was extremely satisfying and interesting.

It satisfied my insatiable need to pioneer new innovative solutions. And for that, I felt extremely grateful.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *