Modernization Hub

FAP - Fortran Assembly Program

Enhanced Definition

FAP, or Fortran Assembly Program, was an assembly language specifically designed for the IBM 7090 and 7094 series mainframe computers in the early 1960s. It served as a symbolic macro assembler that allowed programmers to write routines in assembly language that could be called from or integrated with FORTRAN programs, typically for performance-critical sections or direct hardware manipulation.

Key Characteristics

    • Macro Assembler: FAP was a macro assembler, meaning it supported user-defined macros, which allowed for code reusability and abstraction, simplifying complex assembly sequences for the IBM 7090/7094 architecture.
    • Machine-Specific: It was tightly coupled to the architecture of the IBM 7090/7094 series, leveraging their specific instruction sets, registers, and memory organization.
    • FORTRAN Integration: FAP routines were designed to be easily linked and called from FORTRAN programs, providing a mechanism to overcome performance limitations of early FORTRAN compilers for specific tasks.
    • Symbolic Programming: Allowed programmers to use symbolic names for memory locations, operations, and registers, making the code more readable and manageable than raw machine code.
    • Historical Significance: Represented an important bridge between high-level FORTRAN and low-level machine operations during a foundational era of computing, predating the System/360 and subsequent z/OS architectures.

Use Cases

    • Performance Optimization: Writing computationally intensive subroutines or functions in FAP to achieve maximum execution speed, where FORTRAN compilers of the era might generate less efficient code for specific algorithms.
    • Hardware Interaction: Directly manipulating hardware features, I/O devices, or specific machine registers that were not easily accessible or efficiently managed from FORTRAN.
    • System Utilities: Developing small, highly optimized utility programs or operating system components that required close control over the machine's resources and direct interaction with the hardware.
    • Early Scientific Computing: Implementing numerical algorithms or data processing routines for scientific and engineering applications where every CPU cycle and memory access was critical.

Related Concepts

FAP stands as an early example of a macro assembler, conceptually similar to, but architecturally distinct from, later assemblers like IBM Assembler H and HLASM (High Level Assembler) used on System/360 and modern z/OS systems. It provided a low-level counterpart to FORTRAN, one of the first high-level programming languages, enabling a hybrid approach to application development on the IBM 7090/7094 mainframes. While its direct use is obsolete, FAP's role highlights the enduring need for assembly language in mainframe environments for performance and direct hardware control, a need still met by HLASM on z/OS.

Best Practices:
  • Judicious Use: Historically, FAP was best used sparingly, only for sections of code where FORTRAN's performance was demonstrably insufficient, due to the inherent complexity and increased maintenance burden of assembly language.
  • Clear Documentation: Given the intricate nature of assembly code, thorough in-line commenting and external documentation were critical for understanding, debugging, and maintaining FAP routines.
  • Adherence to Conventions: Strict adherence to established parameter passing, register usage, and data representation conventions between FORTRAN and FAP routines was essential for correct program execution and interoperability.
  • Migration Strategy: As FORTRAN compilers improved and new, more powerful mainframe architectures

Related Vendors

IBM

646 products

Related Categories

Performance

171 products