This is a 'mark sense' card, issued around
1970 by IOWO, the Dutch Institute for Development of Mathematics
Education (today named Freudenthal Institute). It was used for
teaching the Algol programming language to high school students.
Card punching machines or on-line terminals were
much too expensive for high schools. The card stacks, usually not
much larger than 30 cards per program, produced by a classful of students were
(physically!) mailed to IOWO. There they were read and interpreted
using a PDP11/40 minicomputer with a Datamation Model 300 card reader (this model was capable of reading pencil-marked cards as well as the usual punched cards).
The now electronically coded data
was sent over a telephone line to the Cyber 73
mainframe computer of the University of Utrecht's computer centre (ACCU), where the
Algol compiler resided. (In the initial phase of the project an Electrologica X8 machine
was used).
The Cyber output (in many cases only error messages!)
was communicated to the school the other way around. Total
turn-around time must have been at least a full week!
Algol statements were composed by marking fields on the card with a soft pencil. An enlarged picture of a card column is included to the left for clarity. The two fields at the top of each column produce parentheses, or act as selectors if another field in the same column is marked.
The card-mark interpreter constructs program lines in the format
suitable for the Cyber 73 Algol compiler. Reserved Algol words had
to be enclosed in single quotes: 'BEGIN', 'GOTO'. In the definition
of the 'reference language' in [1] the 'underscore' style
begin, goto, and lower case letters were used.
This style was also used in Dijkstra's first Algol compiler running
on the Electrologica X8, using an adapted Flexowriter for input and output. The
Cyber computers had a 6-bit character set with upper case letters
only and used therefore a specific 'implementation' language, which
also included a machine-specific set of i/o procedures (in fact no
i/o mechanism at all was specified in the Algol 60 definition).
Some of the fields in the first card column refer to these
procedures:
SPACE(n) inserts n spaces in printer output
NEWLINE(n): next symbol will appear on the first position of
the n-th new line
WRITETEXT('('text')') prints the text string (enclosed in
string quotes '(', ')' as required by the Cyber compiler).
FIXT( b,a,X) prints the number X with b digits before and a
digits after the decimal point, and always preceded by a + or -
sign
ABSFIXT as FIXT however the sign is omitted
FLOT(n,m,X) prints X as a floating point number
PRINT(X) prints the number X always in 24 positions (including
one or more spaces), using FIXT or FLOT format depending on X.
READ reads a number in FIXT format
Any Algol symbol could be entered also by marking a character
string (enclosed in quotes in case of a reserved word). This was
needed for all symbols not used so frequently as to merit a card
field, like INFILE, RANDOM, CODE, and of course for user
defined names.
For those not familiar with Algol 60 we present a short
procedure in 'underscore' style, taken from the 'Report on the Algorithmic Language Algol
60' [1].
Below is an example of 'apostrophe' style Algol.
References
[1] Peter Naur (ed.): Report on the Algorithmic
Language Algol 60. Regnecentralen, Copenhagen 1960.
[2] Daniel D. McCracken: A Guide to Algol
Programming. John Wiley 1962.