Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
CMS-2 is a general-purpose programming
language used almost exclusively for
real-time and embedded applications for
the US Navy.
A CMS-2 module consists of two sections:
declarations "SYS-DD" block and a
code "SYS-PROC" block.
Both global and local data, as well as
procedures, can appear in the SYS-PROC block.
Depending on the compiler, there are
various facilities for source code inclusion
and cross-module linking.
Data types in CMS-2 include: integer,
fixed-point and floating-point numbers,
fixed-length strings, and enumerations.
Identifiers are strongly typed, but unlike
Pascal and Ada most versions of CMS-2
had facility for type declaration.
The only aggregate data type in CMS-2 is
CMS-2 has a conventional complement of
imperative control-flow statements, but
with peculiar syntax. Loop statements
offer special exit/resume facilities;
it is even possible to resume a loop
after having exited it! CMS-2 also
offers several kinds of index jump table
statements (like Fortran's computed GOTO
but more complicated).
Over a dozen implementations of CMS-2
were created in the 1970s and 1980s for
various US Navy system architectures.
A few are still available for sale today
through the Navy NUWC.
There do not appear to be a free compiler.
Rand Corporation, US Navy, 1974?
- See Also:
At the time of a major survey in 1995, it was
found that over 14M SLoC of CMS-2 had been
written for US military systems. (This is
compared to 32.5M SLoC for C and 43M for Ada).
Over it's useful life from about 1976 to
1986, there were several dialects and
variants of CMS-2.
Mostly, they were divided by the processor
word size of the target military CPU:
CMS-2/Y and CMS-2/M were for 16-bit machines,
and CMS-2/L for 32-bit.
CMS-2 was notorious for being difficult to
parse correctly, and for offering programmers
numerous ways to write incorrect or confusing
code. For example, aliasing of data values
could be specified at the word, array, or
The MTASS/M and MTASS/I code development
environments were developed for CMS-2.
Today, documentation and reverse-engineering
tools for CMS-2 are still available, mostly
in support of the US Navy's Y2K code
conversion efforts. No documentation on
the language seems to be available on the
WWW, although it can be found for sale.
- Sample code:
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.