Waterloo Modula-2 for VM/SP CMS

Product Overview

The Evolution of Pascal

Pascal is a popular language for teaching data structures and programming methodology. Unfortunately, standard Pascal is missing some of the facilities that are key to modern programming techniques. Modula-2, the latest descendant of Pascal, overcomes these deficiencies.

But, Modula-2 goes beyond the classroom too. Its powerful facilities make it an excellent language in production environments as well. Waterloo Modula-2 presents a novel approach to compilers, merging the teaching and production requirements into one compiler and run-time library.

"Modula-2 emerged from careful design deliberations as a language that includes all aspects of Pascal and extends them with the important module concept...", Professor Niklaus Wirth, Designer of Pascal and Modula-2, Programming in Modula-2, Third Corrected Edition (Springer-Verlag, 1985).

Optimized for Fast Program Execution

Waterloo Modula-2 automatically performs an optimization pass over the generated code. The resulting programs execute with all the speed and efficiency demanded in production environments.

Standard CMS Development Environment

Object files are in standard IBM format for use with standard CMS commands such as LOAD and INCLUDE. Also, these files may be placed into a CMS TXTLIB for convenience.

The Waterloo Tradition Continues

Waterloo Modula-2 was developed by the Computer Systems Group at the University of Waterloo. Their compilers are developed for computer science courses at the university and are used at many academic institutions worldwide. Waterloo Modula-2 has been designed to contain all the function necessary to be both a development and a production compiler.

Tools for Rapid Program Development

Waterloo "load-and-go"

One of the most notable features of Waterloo compilers is the "load-and-go" capability. Waterloo Modula-2 is no exception. In this mode, programs may be compiled, linked, and executed in a single step. Compiling, for the beginner, is greatly simplified.

CMS Integration

In "load-and-go" mode, Waterloo Modula-2 searches through CMS object-code libraries (TXTLIBs) to locate library modules. The instructor can provide Modula-2 routine packages to students, in a straightforward manner.

To further simplify use and improve performance, the compiler may be invoked directly from within XEDIT. The file to be compiled is obtained directly from XEDIT's memory, thus eliminating overhead due to disk I/O.

Error Detection

Run-time error detection option generates special code to check for common programming errors such as uninitialized variables, array subscripting errors, subtrange type errors, NIL pointers and so on.

When a run-time error is detected, developers can instruct the compiler to indicate the location of the error in terms of the program source, rather than a machine address. Beginners find this particularly helpful.

Modula-2 Language Definition

Because of its background in Pascal, Modula-2 contains many popular programming language features, including structured programming statements, abstract data types, and portability. With the added feature of modularity, Modula-2 becomes an excellent language for both teaching and systems development. It embodies many of the current thoughts in the field of software engineering. The task of writing a correct program is made easier with Modula-2 because many potential errors are detected when the program is compiled, rather than when the program is executed. Waterloo Modula-2 is a full implementation of the language as defined by Wirth in the book Programming in Modula-2, Third Corrected Edition (Springer Verlag, 1985).

Modules - Modula-2's Building Blocks

The key idea behind modules is the recognition that programs, especially large ones, are typically made up of many small isolated components, or modules. Each module may refer to other modules, but need not be aware of the details of how the other modules work. The definition of a module is completely independent of the implementation of a module. While other programming languages may support separate components, Modula-2 allows modules to control all aspects of their interfaces.