DG/L is a programming language developed by Data General Corporation for the Nova, Eclipse, and Eclipse/MV families of minicomputers in the 1970s and early 1980s. Released in late 1977, the language was based on ALGOL, specifically the ALGOL 60 specification.

Description

Data General offered two separate versions of ALGOL:

  • Data General Extended ALGOL-60, or Extended ALGOL, which ran on and generated code for the Nova and Eclipse series of 16-bit computers. The compiler only did a little optimization. It was only available on the RDOS family of operating systems.[1]: 111 [2]
  • DG/L, which was developed by extensively modifying the Fortran 5 optimizing compiler. This compiler ran only on the Eclipse and Eclipse/MV family of computers[3] but generated optimized code for the Nova, Eclipse and Eclipse/MV (Eagle) family. It was available on RDOS, AOS, and AOS/VS.[2][4]

The language itself was an extended version of ALGOL 60.[5] It supported integers, single- and double-precision floating point and complex numbers, and both fixed and arbitrary precision strings.[6] It also supported full arbitrary precision binary-coded decimal (BCD) arithmetic on strings.[2] It had many convenient program control flow features, but being designed in the mid-1970s, it lacked user defined data structures.

Originally called ALGOL/5, the product was renamed DG/L shortly before the first commercial release in around August 1977.[7][6] Prior to its release, DG/L had been used internally within Data General for the development of several major titles offered by the company.[4][6] The company touted it as the world's first high-level structured programming language for a minicomputer.[6]

DG/L had a substantial runtime library for its day, and was used for systems programming both within and outside of Data General. It held the distinction of being the only compiler that let users write a program for one Data General computer and then compile it for various Data General operating systems (RDOS, AOS, or AOS/VS) and hardware architectures (Nova, Eclipse, and Eclipse/MV). This made it useful for organizations which still relied on older, pre-AOS/VS DG systems. It also allowed developers to take advantage of AOS/VS's powerful tools for writing, compiling, and debugging, and then easily adapt the same program for the other environments by recompiling and relinking, accomplished via conditional compilation directives and compiler switches.[2]

Ostensibly standing for "Data General Language",[8]: 6  the name "DG/L" eventually came to hinder sales by giving it the misleading reputation as a highly proprietary programming language specific to Data General computers, according to the journalist Peter Walsall, despite being a close ALGOL derivative.[2] After the first commercial release, targeting 16-bit Eclipse and Nova, several subsequent updates and major versions were released, approximately one a year. By 1987, DG/L had been largely forgotten among Data General's clientele, although it was still receiving routine updates by that point.[5] By 1989, however, the programming language was nearly extinct and did not find mention in any of the company's contemporary literature.[2]

Comparison with ALGOL 60

Appendix A of Data General's 1982 revision of its DG/L Language Reference Manual (093-00229-01) describes DG/L as based on the ALGOL 60 programming language, but gives "data types, operations and statements that ALGOL 60 lacks". Specific differences are:

ALGOL 60 features unsupported in DG/L

ALGOL 60 feature As described in ALGOL 60 report[9] paragraph DG/ notes
Call by name para. 4.7.3.2 DG/L allows procedure parameters as type PROCEDURE, allowing procedures to be passed by name to other procedures.
Nested quotation marks in literals 2.6.1 and 2.4.1
No limit on length of identifiers DG/L identifier names need to be unique within the first 32 characters
Two division operators 3.3.4.2 DG/L uses / for both real and integer division; an integer divided by another integer implies integer division (e.g. 1/4 is 0) unless the compiler's global /R switch is used
Notation of 10 <integer> 2.5.1 DG/L uses E <integer> (or D <integer> for double precision) for "scientific" notation to show powers of ten
A program consisting only of a <compound statement> 4.1.1
Non-ASCII characters , , ¬, , , , , as boolean operators 3.4.6.1 DG/L allows instead: AND, [[Logical disjunction|OR]], [[Bitwise operation#NOT|NOT]], IMP, EQV, <= (or =<), >= (or =>), and <> (or ><) as well as XOR
Including non-Algol code within Algol procedures 4.7.8 Apart from the FORTRAN 5 math library, documentation for external procedures assumes only other DG/L procedures will be linked in.

Extensions

Some of the extensions to the ALGOL 60 standard introduced in DG/L or carried over from Data General's previous ALGOL implementation of 1971:

String operations

  • SUBSTR – substring
  • INDEX – position of a substring
  • LENGTH – length of a string
  • SETCURRENT – sets the current length of a string; e.g. setcurrent(str,length(str)-1);
  • !! – concatenation operator[2]
  • String arithmetic (e.g. "123.45" + "0.01")[2]
  • Type conversion (boolean, integer, real, pointer, bit)[2]
  • Octal numbers and some special symbols enclosed in brackets to represent ASCII characters

Input and output

  • Fully formatted output, unformatted input, and output for all supported data types
  • Full interface to Data General's RDOS, AOS and AOS/VS system calls
  • Cache memory management (with virtual memory option).
  • Interface to CLRE and INFOS II databases

Other extensions

  • Conditional compiling of sections of code, using /** letter-digit-string <statement> */
  • End-of-line comments using the % character and /* comment */
  • Expanded do, for, and if syntax (e.g. WHILE <boolexp1> DO <statement> UNTIL <boolexp2>)
  • Types: BIT, BYTE, 16-bit and 32-bit integers, 32-bit and 64-bit reals and arbitrary precision arithmetic
  • Literals (e.g. LITERAL C (299792.458))
  • Global data
  • Error trapping
  • External procedures and data
  • Cluster declaration in a manner very similar to Pascal units (allows a cluster of procedures and data in a separate compiled source).
  • Pointer (-> symbol and BASED variables of all types
  • Exclusive OR operator (XOR)
  • Multitasking

References

  1. ^ Holmes, Thomas B., ed. (February 1977). Datapro Who's Who in Microcomputing (PDF). McGraw-Hill. p. M11-304-101–M11-304-116. ISBN 0070154058 – via Google Books.
  2. ^ a b c d e f g h i Walsall, Peter (April 1989). "Out of Favor". DG Review. Vol. 9, no. 10. New Media Publications. p. 50 et seq. – via Gale.
  3. ^ Staff writer (December 1977). "Programming Language" (PDF). Datamation. Vol. 23, no. 12. Technical Publishing. p. 226 – via Bitsavers.org.
  4. ^ a b Staff writer (September 22, 1977). "DG releases its own language". Computer Weekly. No. 568. p. 25 – via the Internet Archive.
  5. ^ a b Fitch, Ron (November 1987). "Remember DG/L?: Praises for a forgotten language". Data Base Monthly. Vol. 8, no. 3. pp. 25 et seq. – via Gale.
  6. ^ a b c d Staff writer (September 1, 1977). "Algol-based structured language offered by Data General" (PDF). Electronics. Vol. 50, no. 18. McGraw-Hill. p. 25 – via World Radio History.
  7. ^ Kinnersley, Bill (January 23, 1995). "The Language List". University of Kansas, Computer Science Department. Archived from the original on April 5, 2019.
  8. ^ Paul, Lois (February 1, 1982). "DG Goes Real-Time". Computerworld. Vol. XVI, no. 5. IDG Publications. pp. 1, 6 – via the Internet Archive.
  9. ^ Naur, Peter (Jan 1963). "Revised Report on the Algorithmic Language ALGOL 60". Communications of the ACM. Vol. 6. pp. 1–17. doi:10.1145/366193.366201.
Work cited
No tags for this post.