by Mort O. Movair, October 25, 2010
ŠInformation Disciplines, Inc.
NOTE: This document may be circulated or quoted from freely,
as long as the copyright credit is included.
IBM had announced its revolutionary System/3601 line of computers and had promised an advanced "'third generation" operating system, OS/360.1
In 1964 specifications for the software were partly unveiled to a few representatives2 of the SHARE and GUIDE user groups. At a committee meeting in Washington, discussion came around to the list of record formats to be supported by the Data Management (I-O) subsystem. They were:
|FB||Fixed length blocked|
|VB||Varying length blocked|
The varying-length records would begin with a length flag, and the record length would be limited to a fixed maximum for a given data set (file). Nothing surprising there.
But then the committee discovered that the Fortran development group in IBM planned to use type U records for non-formatted files generated by Fortran programs, and would implement its own special convention for the length and continuation flags. Upon questioning the IBM representatives admitted that those files would be incompatible with files generated by programs written in other programming languages.
Not surprisingly the committee found this disturbing and expressed strong displeasure to the IBM representatives. "We have no choice," IBM explained. The Fortran language supports writing data items into a record one-at-a-time rather than from a contiguous area of memory. Therefore, it's impossible to predict any maximum size for the records in a file before the program runs. "We can't change the Fortran language."
"Nonsense!" (or a similar exclamation) SHARE representatives responded. All you have to do is to allow a logical record to span multiple physical (blocks) records.
"We thought of that but it won't work," replied an IBMer. Fortran has to support a backspace record operation on sequential files, and it's impossible to backspace a logical record across a physical record (block) boundary. There's no information to identify where the record begins.
"Balderdash!" responded a couple of SHARE representatives. The SHARE Operating System (SOS) does all that now on 7090 systems. One of the IBM representives steadfastly held to the view that it's theoretically impossible to implement the combination of spanned logical records and logical backspace.
It seemed surprising that IBM wasn't better acquainted with an operating system that ran on their own second-generation machine. A representative from the nearby Johns Hopkins Applied Physics Laboratory (APL) offered to bring the 7090 assembly-language code the next day.
At that point, George H. Mealy, who had recently joined IBM for the OS/360 project but who had been deeply involved in SOS development at the RAND Corporation, took charge of the meeting. He went to the board (one of the early white ones) and started drawing diagrams. One of them was of the proposed Fortran-specific records. He used various colors, and happened to choose green for the 32-bit flag that was going to make Fortran-generated files incompatible with everything else.
Bill Funderburk from APL spoke up: "What we've got to do is to get rid of that green word."
The meeting adjourned without a resolution. IBM grudgingly conceded that what SHARE wanted was indeed possible and might have been a better choice. But they maintained that the work was too far along to consider making such a change now that would affect both Fortran and Data Management.
A month later the semi-annual general meeting of SHARE was to be held. Meanwhile, one of the committee members went to a custom campaign button shop in Rockville, Maryland, and ordered a hundred buttons proclaiming in green "Stamp Out Green Words"3. The buttons were taken to the SHARE meeting, and handed out to people who were likely to be seen in convention sessions.
At first, no one but the original committee members knew what they meant. But after seeing them around the meeting everyone started asking. Many were surprised and outraged that files generated by programs written in Fortran, at that time the most widely used programming language in SHARE, would be incompatible with the rest of the OS/360 world. Attendees who didn't already have a button were asking where they could get one. IBM began to feel the pressure.
The Fortran Committee passed a resolution calling on IBM to abandon the special Fortran record format in favor of compatible files. Others began to wonder about other potential incompatibilities in the still semi-secret OS/360 software. A general session, attended by 1500 people representing IBM's customers, featured a panel discussion on "compatibility issues".
By then the issue had gotten back to higher levels of IBM, where it was discovered that it wasn't too late after all to adopt a compatible solution. IBM agreed to add to the OS/360 record types:
|VBS||Variable blocked and spanned|
The latter was the most flexible of all. Fortran could just use it and forget about its own scheme. And although I hever actually tried it, I'm told that backspacing a record worked just fine.
The direct impact of resolving this conflict was that users all over the world were able to pass files between programs written in Fortran and programs written in other languages, without special conversion utilities or messy interfaces.
The long-term impact was more important. IBM learned valuable lessons that continue to affect its approach to designing and developing software:
We hope that all vendors understand those principles a half century later.
Last modified October 25, 2010
Return to IDI home page