Control Program Facility

Control Program Facility (CPF) is the operating system of the IBM System/38. CPF represented an independendent line of development at IBM Rochester, and was unrelated to the earlier and more widely used System Support Program operating system. CPF evolved into the OS/400 operating system, which was originally known as XPF (Extended CPF).

While CPF is considered to be the operating system of the System/38, much of the hardware and resource management of the platform is implemented in the System/38's Horizontal and Vertical Microcode.

Description of the libraries

 * QGPL – general purpose library
 * QSYS – system library
 * QSPL – spooling library
 * QTEMP – temporary library
 * QSRV – system service library
 * QRECOVERY – system recovery library

Data storage
In most computers prior to the System/38, and most modern ones, data stored on disk was stored in separate logical files. When data was added to a file it was written in the sector dedicated to this, or if the sector was full, on a new sector somewhere else.

The System/38 adopted the single-level store architecture, where main storage and disk storage are organized as one, from the abandoned IBM Future Systems project (FS). Every piece of data was stored separately and could be put anywhere on the system. There was no such thing as a physically contiguous file on disk, and the operating system managed the storage and recall of all data elements.

Capability-based addressing
CPF was an example of a commercially-available Capability-based operating system. System/38 was one of the few commercial computers with capability-based addressing. Capability-based addressing was removed in the follow-on OS/400 operating system.

Distributed Data Management
In 1986, System/38 announced support for Distributed Data Management Architecture (DDM). Such a middleware in the context of a distributed system is the software layer that lies between the operating system and applications. Distributed Data Management Architecture defines an environment for sharing data. This enables System/38 programs to create, manage, and access record-oriented files on remote System/36, System/38, and IBM mainframe systems running CICS. It also allows programs on remote System/36 and System/38 computers to create, manage, and access files of a System/38.

Programming languages
Languages supported on the System/38 included RPG III, COBOL, BASIC, and PL/I. CPF also implements the Control Language for System/38.