integer procedure dialect list (D, S, N, NU, I, T); value D, S, NU, I, T; integer D, S, NU, T; Boolean I; string N;
This procedure is designed to output a library item in any form or dialect that the user requires. It calls a procedure initialise dialect to be defined by the user which will give the representations of the Algol basic symbols on the particular output form. It is hoped eventually to provide a set of procedures initialise dialect for the main dialects used at the Laboratory.
Tne procedure dialect list outputs the library item (on the magnetic tape numbered S which has its directory at position D) with name N and number NU. The output will be on output stream T. The layout of the Algol library item will be the standard one used at the Laboratory. Indenting will be provided if I is true.
For example if ALGOLIB is defined as tape 99 in the Job Description then:-
dialect list (1, 99, 'ICT', 29, true, 3);
will output the library item ICT29 with indenting on output stream 3 (ALGOLIB has its directory at block 1, the standard position).
ICT30 and ICT31 define copies of the procedure initialise dialect which will produce output in the ATLAS CARDS dialect and ICT 8-HOLE TAPE respectively.
The procedure initialise dialect is defined as:
procedure initialise dialect (D, T); integer arrayD, T;
The array T is used to store the output forms of the various Algol symbols and the array D is a set of pointers, one per Algol symbol, giving the position of each basic symbol in the array T. The dimensions of the arrays D and T are:-
D [ -9: *] and T[O: *]
The upper limits must be sufficient for the dialect in question. For the positive values of the array D, D[I] points to the position in T of the Ith Algol symbol. The numbering is the standard one used in the Atlas Algol System. The negative entries for D should contain the following:-
For each Algol symbol, the entries in the array T consist of a count of the characters in the symbol followed by the individual characters. If the output is in Internal Code then the internal code values of the characters are given. If the output is in binary, then the numeric values of the characters are output. On paper tape, the three least significant bits of the character are those together on one side of the sprocket feed hole. For example, 11.011 has the numeric value 27.
The Algol symbol Z would require the following:-
D[26] = n T[n ] = number of characters to be output for symbol Z. T[n+1] = first character of Z. T[n+2] = second character of Z. , etc.
In addition, the entries D[I] contain bits defining the layout required for the output. The value n above has added to it:
32768 if a space is required to be output before the Algol symbol 65536 if a space is required to be output after the Algol symbol 131072 if a newline is required to be output before the Algol symbol 262144 if a newline is required to be output after the Algol symbol
The standard settings used in the Atlas Algol listings can be obtained by calling
add in newline space (D);
before leaving the procedure initialise dialect.
This version of initialise dialect together with ICT29 allows library items to be output on cards in the ATLAS CARDS dialect.
This version of initialise dialect together with ICT29 allows library items to be output in the ICT 8-hole tape dialect used on 1900 computers. The output stream used must be defined as SEVEN-HOLE TAPE in the Job Description and a note added to the Job Slip saying that 8-track output is required.