- TERRA M2VMS/VAX
- TERRA M2VMS/Alpha
Modula-2 Systems for OpenVMS/Alpha and OpenVMS/VAX
(January 23, 1998)
The Reliable Tool for Software Professionals
· Complete Modula-2 Development Systems for OpenVMS/Alpha
and OpenVMS/VAX: Compiler, Tools and Library
· Simple Migration of Modula-2 Programs from
OpenVMS/VAX to OpenVMS/Alpha
· Full Flexibility within the OpenVMS Environment
· Full Compatibility with the OpenVMS Symbolic
· DECwindows Motif Interface
· Interface to the OpenVMS Operating System and
to other Languages
· LSE Support
· M2MAKE Utility to Compile and Link your Programs
Why buy Modula-2 VMS?
Modula-2 is a general purpose programming language
with systems programming capabilities designed by Professor
Niklaus Wirth, the author of Pascal. It is a simple but
powerful language that is ideal for professional software
development. Modula-2 overcomes the shortcomings of Pascal
in real world applications while maintaining its long
The M2VMS/Alpha and M2VMS/VAX resident compilers are
full implementations of the Modula-2 language in the OpenVMS
environment. The first commercial version of Modula-2
for VMS was provided by Logitech on VAX, based on the
version designed by Professor Joachim Schmidt of the Frankfurt
University. After five years of maintenance and enhancement,
Logitech transferred the product to TERRA Datentechnik
which since successfully pursues its maintenance and development.
Meanwhile, TERRA has adapted the M2VMS system to the DEC
Alpha processor and the OpenVMS/Alpha environment. The
M2VMS/Alpha and M2VMS/VAX compilers provide Alpha and
VAX software developers with the elegant simplicity of
Modula-2 and the reliability of the Logitech and TERRA
family of Modula-2 based program development tools.
The Modula-2 Language
· overcomes Pascal's shortcomings
· offers true modular programming
· features strong type checking, even between separately
· gives controlled access to underlying hardware
and operating software
· allows multi-tasking
· has type transfer functions to relax compatibility
The M2VMS compilers are full implementations of Modula-2
after N. Wirth's ,Programming in Modula-2" (3rd edition).
M2VMS is totally compatible with other programming languages
in the OpenVMS environments on Alpha and VAX. The M2VMS
compilers generate Alpha or VAX native object code in
the OpenVMS standard format, meaning that separately compiled
Modula-2 modules can be linked with the OpenVMS linker.
The compilers offer to the programmer total flexibility
in the OpenVMS environment:
· The Alpha and VAX processors support various
floating point data types: The Modula-2 predefined type
REAL is implemented with the Alpha or VAX F-FLOATING data
type. The other floating point types, G-FLOATING, S-FLOATING,
and T-Floating on the Alpha, and D-FLOATING, G-FLOATING,
and H-FLOATING on the VAX are provided by the Modula-
2 standard module SYSTEM. Most operations defined on variables
of type REAL are also applicable to variables of the other
· Floating point constants are internally in the
compilers implemented as G-FLOATING with about a precision
of 15 decimal digits. Since M2VMS version 4.3-0 floating
point constants are compatible with any floating point
· For systems programming purposes, the module
SYSTEM also exports the types BYTE (8 bit), SHORTWORD
(16 bit), QUADWORD (64 bit), and OCTAWORD (128 bit).
· Through so-called foreign definition modules
the compilers provides access to routines written in any
language. Foreign definition modules do therefore not
require the existence of a corresponding Modula-2 implementation
module. In foreign definition modules the compiler also
accepts the VAX-specific parameter passing mechanisms
specified by %REF, %IMMED, %STDESCR, including optional
parameters and passing of default values.
· The compilers support SET types with up to 256
· On VAX, support for Modula-2 co-routines (TRANSFER,
IOTRANSFER) is implemented based on the OpenVMS Asynchronous
System Traps (AST).
· The M2VMS compilers produce a diagnostics file
which may be used with the LSE (Language Sensitive Editor).
The package includes files which customize LSE to the
Modula-2 language (use of tokens and menu place-holders).
The compilers can be invoked by the DCL MODULA command
which accepts among others the following qualifiers:
· /ALIGNMENT to control the alignment of variable
addresses and record field offsets.
· /CHECK to generate arithmetic overflow, range,
array, index, and case expression checks.
· /DEBUG to generate information for the VAX Symbolic
· /LIST to produce a compilation listing including
· /MACHINE-CODE to include the generated machine
code in symbolic form in the listing.
· /CROSS-REFERENCE to include cross reference information
in the listing.
A powerful set of library modules is provided with the
· The standard M2VMS Modula-2 library (Strings,
· A set of foreign definition modules to access
the VMS operating system and Run-Time library.
· A set of foreign definition modules to access
the DECwindows Motif environment.
· The predefined pseudo-module VMSCONSTANTS gives
access to the whole set of constants known by the VMS
· The predefined pseudo-module SYSTEM gives access
to the underlying system.
The M2MAKE Utility
The utility program MAKE is invaluable for the management
of Modula-2 programs containing large numbers of modules.
It is used during source code maintenance or development.
Its main function is to build a batch file to compile
the minimum number of modules necessary in the correct
order, and to link them together, avoiding unnecessary
A powerful advantage of the M2VMS MAKE utility over similar
systems of other languages, is that it is not necessary
to maintain a description file for the module dependencies
and the actions to be taken. Modula-2 source language
programs contain all necessary dependency information
and are read directly by the MAKE utility. Therefore changes
in the module structure introduced by source program editing
are recognized as soon as MAKE is used to rebuild a system.
One useful by-product of the MAKE utility are cross-reference
listings of inter-module relationships.
Debugging Modula-2 Programs under OpenVMS
M2VMS is fully compatible with the OpenVMS Symbolic Debugger.
In particular, the debugger screen mode is fully supported.
All debugger commands are available: examination of variables,
setting of breakpoints on source lines and procedures,
placing of watch points on variables and stepping through
the program line by line. In addition, the compiler generates
source file information, so that all debugger commands
related to the source file can be executed.
Packaging, Licences, Support, Updates
M2VMS/Alpha is delivered on CD-ROM. M2VMS/VAX is available
on TK-50 cassette tape. Optionally, the M2VMS systems
can be shipped on a different distribution media at a
surcharge. Alternative distribution media include CD-ROM,
4-mm DAT streamer cassette, TK-50 cassette tape, and standard
9-track (1600 bpi) tape.
The distribution media kit includes:
· The executable files of the compiler, M2MAKE
and other utilities.
· The source, object and symbol files of the standard
M2VMS library modules and some utilities.
· The source and symbol files of the foreign definition
· For M2VMS/Alpha: Installation files based on
the OpenVMS POLYCENTER Software Installation Utility.
For M2VMS/VAX: A command language definition file, which
supports the installation of the MODULA command by means
of the standard OpenVMS DCL command procedure SYS$UPDATE:VMSINSTAL.COM.
· An M2VMS help file which is included automatically
into the system help library upon installation time.
· A set of files allowing to customize the OpenVMS
LSE to Modula-2.
· The printed M2VMS user's manual.
The standard licence allows the use of the compiler
on one CPU by any number of programmers. This means editing,
compiling, linking, and testing on one and the same machine.
Licences for using the product on additional CPUs at the
same site are available at reduced prices. Educational
and non-profit research institutions are allowed special
Programs developed with M2VMS are not subject to any object
licences from TERRA and may be distributed with no fee,
even if they include (parts of) the TERRA library or the
run-time support in object form.
Support / Maintenance / Updates
Maintenance contracts on a contiguous annual basis
are available. They include automatic shipment of updates
after release. The first year of maintenance is included
in the original package.
The technical assistance for software problem reports
is included in the maintenance contract. Assistance is
provided by email, fax or phone.
The philosophy of TERRA Datentechnik is based on the satisfaction
of the customer, so as to make its best to provide an
efficient and professional support.