From about 1974 until the late 1980s, I was responsible for maintaining Market Data System II, the mainframe system which gathered and reported trades on the New York Stock Exchange. This system was based on OS MVT Release 11 and was heavily customized/modified by IBM, with the promise to support it forever. In addition to a modified OS, IBM coded components to handle non-standard hardware and memory, as well as the infrastucture to support ‘applications’ modules.
When all the competent IBMers had moved on, it became obvious that ‘forever’ was a relative term and support fell to me. I maintained, updated and modified the Operating System itself, including a major repackaging of IBM’s modifications to accommodate migration to newer versions of the MVT, all the way from Release 11 through Release 21.8E. I also added, expanded and modified hardware-related components, as well as improving the Recovery process significantly.
When I took over the system in 1974, I found that the source and load libraries were not in synch – multiple programmers modifying multiple programs without any central control. We had to DeLink and Dis-Assemble the entire Load library and compare to the source library. Manually. This took three of us about six months to eyeball the system and bring the libraries back in synch. I was determined that would never happen again.
I therefore declared that all updates, by all programmers would be done by me. Programmers would modify a copy of the production source code and test to their satisfaction, then pass the updates to me. I would review all updates, making sure one did not conflict with another, then apply all the updates to a test system for complete, end-to-end Quality Assurance testing.
Our coding/testing was done under VM. I established a VM user which I fired up each morning. This user had a script monitoring its Reader Queue. Whenever programmers sent it files, the script would read in the file.
At about 8pm, when the programmers were not working (I was telecommuting and made my own hours), I would logon the ‘collector’ ID and terminate the running script. I would then trigger another script which would list the pending updates for my review. When satisfied nothing was amiss, I gave it the green light to fetch the copies of the production source modules, apply the updates and Assemble. If no errors, it would build JCl to update the source library, Assemble the updated source and Link the executables into the Load library. It probably took me a week to code & debug the required scripts, but once coded, it was really cool to be able to enter half a dozen commands and drink my coffee for an hour while 15 or 20 updates were applied to the system without any more effort on my part..