Most modern platforms have pretty well-defined file formats; e.g. Windows uses PE, Linux and BSD - ELF (previously a.out), macOS - Mach-O, AIX - XCOFF and so on.

What were (are?) common executable file formats used on mainframes (besides ELF used on Linux for s390x)? Are there official specifications describing them?

2 Answers 2


@raffzahn describes object files, which are not executable. They need to be read into the linkage editor, which produces a load module. That is what CSV (the newer name of the component that loads modules and relocates addresses) loads, and then the operating system eventually branches to the entry point (not always the first byte).

What you are looking for is covered in MVS Program Management: User Guide and Reference (see chapter 2) and MVS Program Management: Advanced Facilities (see appendix B).

Even though these links are for z/OS 2.3, the information still applies for the most part. (I can't think of anything other than AMODE/RMODE that would not apply to OS/360 up to MVS/SP.)

Load modules are stored in a PDS, and the PDS directory contains information regarding length, options such as whether scatter and overlay are active, etc. The load module text contains items such as the overlay order, how to scatter, etc.

Going to the other operating system, DOS, there were significant changes when libraries were introduced with DOS/VS. Before that, phases (executable programs) were stored in the "core image library" by the linkage editor (LNKEDT) or placed in storage and then freed after a single execution. After libraries were introduced, you could link edit into library/sublibrary, giving the logical equivalent of STEPLIBs. VSE/AF Supervisor DRM is basically unchanged since those days; deep within Chapter 2, Program Retrieval, you'll find some limited information on the format. DOS/VS Supervisor Logic has older information.

There's also VM/370 and earlier; a search of Bitsavers should prove fruitful.


What were (are?) common executable file formats used on mainframes

The OS/360 object file format (OFF) has been pretty stable since the 1960s and used by next to all /360ff based OS up until now.

In addition, in the late 1990s IBM introduced the Generalized Object File Format to give more support to features helpful to 'modern' languages, like long names and alike. For most parts it can be seen as an extension to OFF which it has not replaced as defailt format.

Are there official specifications describing them?

The are pretty well documented and easy to find looking for "IBM /370 Object File Format" - but the two linked Wiki entries should already offer a good start.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .