# Source Program Maintenance Online II

Source Program Maintenance Online II (with abbreviations such as SPM, SPM/OL, or SPMOL-II, and pronounced "S-P-M" or, informally, "Spimoli"), is an IBM software product of the late 1970s and early 1980s that provided an online environment for computer programmers working on IBM mainframe systems. It ran under the CICS teleprocessing monitor and was used via an IBM 3270 video display terminal.
The basic purpose of SPM was to allow the creation and editing of COBOL or other programming language source code, and the submitting of those source programs for compilation, in an online fashion instead of using decks of punched cards. Source programs could be stored on disk under SPM and retrieved for editing and submitted as a batch job stream. Accordingly, SPM, as one IBM document stated, "Extends the power of a CICS on-line system to programmers and systems programmers via a 3270." In this way, programming productivity could be improved.
In IBM's product hierarchy, SPM was a Field Developed Program. SPM was a popular choice for IBM mainframe sites seeking an online editing environment that were not running MVS/TSO or VM/CMS.

## History

The initial release of Source Program Maintenance Online was as field-developed program 5798-BDT. It may have first come out in mid-1974. SPM itself was written in IBM 370 Assembly language.
Source Program Maintenance Online II, released as field-developed program 5798-CFT, came out in late 1975. It was in this version that SPM would become best known. Among the improvements found in it were editing support for relative reference of locations, moving or copying blocks of code, and support for tab characters, and storage support for multiple datasets and compressed directories.
By 1979, there was also an Audit and Archive feature with separate documentation. This feature kept a detailed list of changes made to programs held under SPM. It also supported selective restoration of programs from the archive.

## Operation

At the highest level, SPM functionality was organized via CICS transaction four-character codes. The main editing operations were done under either SPIN or SPUD. A job status display was produced by SPMD. Output was viewed under either SPDO or RPDO.
Source programs were kept in a dedicated library on disk. Within screens, SPM worked by using three-character editing commands.
Some SPM editing commands :
| Command | Description |
| PRG | Start new program |
| SEL, CPY | Copy program |
| REN | Rename program |
| DEL | Delete program |
| LOD | Load SYSOUT output |
| Xnn, Znn | Indexing operations |
| SUB | Replace text |
| FWD string | Search for text |
| ADD, PAM | Add text |
| DEL | Delete text |
| REP | Replace text |
Submission for compilation involved SPM taking the program out of the operating system partition running CICS and inserting it, along with the necessary job control statements, into one of the other partitions assigned to batch programs.
In some situations, output of programs could be sent back to the terminal, allowing some program examination or testing to take place. In other words, batch jobs could also serve as input to SPM. The JCL for normal output might be sent to SYSOUT=S, while special output might be sent to SYSOUT=R.
In its basic use, the result of a compilation could be displayed at the terminal. This might be done by having a JCL catalogued procedure that did the compile-and-link action could be coded with error and warning messages going to SYSOUT=R, and then the SPM user could access them via the RPDO function.
Other kinds of two-way interaction between batch and SPM was also possible. For instance, a member of a partitioned data set could be read out by a JCL procedure to SYSOUT=R, captured in SPM and edited, tested inline if the member could be associated with a submittable JCL wrapper, and then another JCL procedure could update the revised member back into the partitioned data set.
Reports were available that listed the inventory of programs held under SPM. The reports covered the members and indices of the SPIN, HPIN, and PPIN libraries of SPM and could be broken out by programmer.
SPM had facilities for backup and for updating. In particular, programs held under SPM could be archived to magnetic tape.

## Uses

The core use of SPM was to make it easier for programmers to write and compile code and thereby improve programmer productivity. An advertorial run by IBM in Computerworld in 1979 quoted a company in the food and drinks industry as saying that once their developers started using SPM, their productivity improved by 50 percent. Technical writers could also benefit, as SPM could be used to run the SCRIPT/VS text markup language formatter and view the output.
While SPM had an auditing capability, many IBM mainframe sites used established, batch-oriented third-party software products such as The Librarian for keeping track of changes to programs. In this case, SPM could be used to create Librarian add, delete, and update statements around source code. This was awkward for initial development, however, and some sites used a hybrid approach of composing new programs using SPM as a full-program editor, but then switching to Librarian control statements for ongoing changes once the program had been put into production.
But computer language processing did not have to be the only purpose of SPM use; it could also be employed in the context of application systems. One site used a modified version of SPM as part of an online data lookup facility. Another site used SPM as part of a data entry and display application.
Some vendors made add-on utilities to SPM/OL, such as feeding input to a POWER reader queue. Other field-developed programs also existed in this space, such as capturing console messages from POWER in a DOS/VS environment.

## Sales and popularity

Use of SPMOL-II was common enough by the late 1970s that IBM offered both extended support for it as well as a monthly payment plan.
A survey taken by IDC in 1979 found that about half of all System/370 sites used some kind of on-line editing and submission product for program development. Of that half, those installations with high-end 370 models tended to be running the MVS operating system and be using the associated, interactive TSO environment for editing and program development, while those not at the high-end and running other operating systems, such as OS/VS1, used a variety of products, including VM/CMS, SPM, and Roscoe. Overall, SPM's share of on-line editing and program development for 370 users was around 10 percent. The survey revealed that those sites with newer, larger IBM mainframes such as the IBM 303X series used SPM less often.
SPM was popular enough that by the early 1980s, IBM had put out another field-developed program, called VM/CMS Library Maintenance and SPMOL-II Simulator, that emulated the line number-oriented aspects of SPM edit commands within the editor in the VM/CMS environment, in order, as IBM literature said, to "ease the transition for users moving from SPMOL-II to VM/CMS."