CPSS(ID:8213/)


Common Programming Support System

Development system and Jovial dialect to simplify porting between main brand systems, created by Dushan Boreta, SDC Falls Church, 1963


Related languages
JOVIAL J3 => CPSS   Built on

References:
  • Boreta, D "Introduction to CPSS", System Development Corporation tech memo, TM-WD-800/ 002/00 view details
  • Boreta, Dushan "CPSS: A Common Programming Support System" view details Extract: Introduction
    Over the years many computer software systems have been developed to serve the program production process. These systems, variously known as "production" systems, "utility" systems, or "support" systems, are designed and produced for the same purpose: to provide programmers the tools required to produce computer programs. Beyond this common purpose these systems have little in common and, in fact, are unique systems individually tailored to a particular application. In each system much of the tailoring occurs because of the particular computer configuration, operational system support requirements, computer manufacturer's software characteristics, experience of the designers, schedule pressures, and style preferences of the programmers producing the system. The tailoring is reflected in the design of each program production system and is evident in many features, for example, the programming languages used, the computer operating procedures, the programmer's inputs, the outputs provided to the programmer, and the program organization in the system.
    In examining program production systems, most are found to have functional capabilities for generating code, code-checking the object programs, and maintaining magnetic tapes containing programs.
    In some instances these capabilities are of the most rudimentary sort. In other instances, very sophisticated and complete capabilities exist.
    What this paper describes is a program production system, CPSS, that should assist programmers and managers in the performance of their tasks. The principle characteristics of CPSS provide for programmers an efficient and effective means for producing their programs.
    For managers, CPSS provides for the minimization of costs for producing programs, and a relatively inexpensive means for achieving an effective and efficient program production capability.
    The CPSS characteristics that make these claims a reality are: first, it provides to programmers the attributes of higher order languages in each program production task; second, that both the functions of CPSS and its computer programs largely are transferable; and third, the totality of functions of a comprehensive program production system is provided in CPSS. Further, the design features embodied in CPSS should afford the minimization of its maintenance costs, reduction in the possibility of programmer errors, and simplification of the programming task itself.
    Additionally, the design of CPSS provides for its "common" applicability. It may be used in "open-" or "closed-shop" operations in supporting the development and production of system, non-system, and "one-shot" programs. Effectively, its design characteristics, language power, scope of applicability, and transferability make CPSS an off-the-shelf program production system.
    CPSS is programmed in a subset of the JOVIAL language, and in design is compatible with the full JOVIAL language. Currently, CPSS is implemented on an IBM 7090 and is being used to support the development and production of a computer program system. This installation and continued testing will be the source for refinements to CPSS's design as the system continues under development.
    Extract: The Programming Language
    The Programming Language
    Perhaps the most significant decision made in the CPSS project was the selection of a language for the programming of CPSS. The design of each function contained in a program production system is influenced by the language provided by the system. Therefore, certain design features are required to assure that the program production system is capable of responding to the operational system's programming needs. In a sense, a transferable program production system must be "overdesigned". The design must reflect the current capability of the language being provided, and also needs to provide for logical extensions of the language. Consider the situation that exists with CPSS.
    There are three levels of JOVIAL represented in CPSS which form a hierarchy of language that is upward compatible in language power and in the language processing algorithms. The formal JOVIAL, J-3, is subset into two levels: J-S, being a subset of J-3; and J-X, being a subset of J-S. The program generation subsystem is coded in J-X and processes programs that are written in J-S. All other subsystems are coded in J-S and perform their functions compatibly with J-3.
    The decision range as to which level of language capability is to be provided in the program production system is bounded on the upper end by the formal definition of the programming language, and on the lower end by the language capability provided by the program generation subsystem.
    In the program generation subsystem, the language capability to he provided is influenced by such factors as the subsequent use of the language, the design of the compiler, the level of transferability desired, and the expected characteristics of existing languages and compilers having the same generic name.
    Other factors influencing the decision in CPSS were the transferring procedures and techniques, the testing techniques established to test the system, and the availability of computers with JOVIAL compilers. Extract: Program Generation Subsystem
    Program Generation Subsystem
    The program generation function is provided in CPSS by the JOVIAL language and a JOVIAL compiler. With the development of CPSS, a powerful and comprehensive subset of the JOVIAL language was developed that should be sufficient to produce most computer software systems. This subset, the JOVIAL core-subset language, J-S, is the language employed in the programming of CPSS. The power of J-S is demonstrated by the fact that the programming of CPSS did not require the totality of J-S.
    The principle reasons for developing J-S, and the goals achieved by this development were:
    (1) The definition of a "comprehensive minimum" JOVIAL language that is sufficient for producing most computer program systcms.
    (2) The definition of a JOVIAL subset language that affords the production of transferable programs.
    (3) The design, development, and production of a JOVIAL compiler that can be produced on shorter schedules than more comprehensive J-3 compilers.
    (4) The improvement of the language processing speed of a JOVIAL compiler.
    (5) The retention of the significant language and compiIer features normally expected of JOVIAL, for example: Compool sensitivity, procedure library capability, partitioning of programs into procedures and closed routines, memory allocation, packing of items into tables, processing of packed data, grammar checking, subscripting and indexing, bit and byte addressing, machine assembly language coding, logical and arithmetic operations, and program "debug" listings and aids.

    In general, the differences between the J-S and J-3 languages should be more than offset by the improvements in the compiler design and its compatibility to CPSS. It should be noted that J-S is a proper subset of JOVIAL, i.e., that the programs coded in J-S are legal and valid inputs to J-3.
    Some of the significant design features of the J-S compiler are :
    (a) The J-S compiler is a "two-pass" compiler. That is, a program is processed twice to produce a binary output. First, in the JOVIAL language form; and second, in an intermediate language form. The principal result of having only two passes is that compiling speed has been significantly increased.
    (b) The J-S compiler provides an "altermode" of recompilation. That is, the programmer can add modifications to the source program during compilation without altering the original source program. The compiler mill produce an updated version of the source program as one of its selectable options.
    (c) The J-S compiler produces a program Compool. That is, the J-S compiler produces a Compool containing complete data descriptions of all data and labels referenced or declared by the program. The program Compool is usable interchangeably with the system Compool throughout CPSS and is compatible in form and structure with the system Compool.
    (d) The J-S compiler is capable of being expanded to incorporate additional language capability. The practical limitation on this expandability is the size of core memory.
    Additionally, the programmer can select the outputs he wants, override the Compool, specify the Conlpool he wants used, and in general, exercise those options that specifically control the inputs to and the outputs from the compiler. In general, the CPSS program generation subsystem provides the language power, compiler speed, and flexibility of use that affords a programmer the ability to generate almost any program conceivable.Program Generation Subsystem
    The program generation function is provided in CPSS by the JOVIAL language and a JOVIAL compiler. With the development of CPSS, a powerful and comprehensive subset of the JOVIAL language was developed that should be sufficient to produce most computer software systems. This subset, the JOVIAL core-subset language, J-S, is the language employed in the programming of CPSS. The power of J-S is demonstrated by the fact that the programming of CPSS did not require the totality of J-S.
    The principle reasons for developing J-S, and the goals achieved by this development were:
    (1) The definition of a "comprehensive minimum" JOVIAL language that is sufficient for producing most computer program systcms.
    (2) The definition of a JOVIAL subset language that affords the production of transferable programs.
    (3) The design, development, and production of a JOVIAL compiler that can be produced on shorter schedules than more comprehensive J-3 compilers.
    (4) The improvement of the language processing speed of a JOVIAL compiler.
    (5) The retention of the significant language and compiIer features normally expected of JOVIAL, for example: Compool sensitivity, procedure library capability, partitioning of programs into procedures and closed routines, memory allocation, packing of items into tables, processing of packed data, grammar checking, subscripting and indexing, bit and byte addressing, machine assembly language coding, logical and arithmetic operations, and program "debug" listings and aids.

    In general, the differences between the J-S and J-3 languages should be more than offset by the improvements in the compiler design and its compatibility to CPSS. It should be noted that J-S is a proper subset of JOVIAL, i.e., that the programs coded in J-S are legal and valid inputs to J-3.
    Some of the significant design features of the J-S compiler are :
    (a) The J-S compiler is a "two-pass" compiler. That is, a program is processed twice to produce a binary output. First, in the JOVIAL language form; and second, in an intermediate language form. The principal result of having only two passes is that compiling speed has been significantly increased.
    (b) The J-S compiler provides an "altermode" of recompilation. That is, the programmer can add modifications to the source program during compilation without altering the original source program. The compiler mill produce an updated version of the source program as one of its selectable options.
    (c) The J-S compiler produces a program Compool. That is, the J-S compiler produces a Compool containing complete data descriptions of all data and labels referenced or declared by the program. The program Compool is usable interchangeably with the system Compool throughout CPSS and is compatible in form and structure with the system Compool.
    (d) The J-S compiler is capable of being expanded to incorporate additional language capability. The practical limitation on this expandability is the size of core memory.
    Additionally, the programmer can select the outputs he wants, override the Compool, specify the Conlpool he wants used, and in general, exercise those options that specifically control the inputs to and the outputs from the compiler. In general, the CPSS program generation subsystem provides the language power, compiler speed, and flexibility of use that affords a programmer the ability to generate almost any program conceivable.
          in [AFIPS JCC 26] Proceedings of the 1964 Fall Joint Computer Conference FJCC 1964 view details