The running of programs on the computer is controlled by a supervisor program held permanently in the machine. The supervisor accepts complete programs as a series of tapes (program and data) and a JOB DESCRIPTION which may be on a separate tape or included with the program or data. A full description of the system is given elsewhere [1], and in this section we give examples to illustrate the general principles of job descriptions.
The simplest form of job consists of job decription, program and data on the one tape. For example:-
JOB UMA, JONES 5/2 OUTPUT 0 LINEPRINTER 100 LINES STORE 32 BLOCKS COMPUTING 10000 INSTRUCTIONS COMPILER AA begin ------------- | | | PROGRAM | | | ------------- end of program --------------- | DATA | | | --------------- ***Z
1. The title (and line) identifies the job. The first few characters will be a code to identify the particular organisation and the rest will be information of an arbitrary form to identify the programmer and the program within the organisation.
Reference
[1] 'Documents and Job Description' I.C.T. Ltd., October 1963. This gives a full description of the possible arrangements of program and data tapes and the utilisation of the multi-channel input/output facilities on Atlas.
2. The OUTPUT information says that reference to channel 0 in the program means the lineprinter (if no output channel is selected in the program channel 0 is used). The number of LINES gives an upper limit to the amount of output that is to be permitted.
3. STORE gives an upper limit on the number of 512 word main store blocks used by the program and data.
4. COMPUTING gives a limit on the running time of the program. An 'INSTRUCTION' is equivalent to 2048 machine instructions.
The OUTPUT, STORE, and COMPUTING sections are optional, both individually and collectively. If they are omitted the allowances given in the above example are assumed, i.e., 100 LINES, 32 BLOCKS, 10000 INSTRUCTIONS. These should in fact be adequate for most small problems, except possibly the 100 LINES. The foregoing example could therefore be shortened to:-
JOB UMA, JONES 5/2 COMPILER AA begin ------------- | | | PROGRAM | | | ------------- end of program --------------- | | | DATA | | | --------------- ***Z
A program tape is always assumed to be on input channel 0 so that in the above case, the data for the problem is also on channel 0, which is the channel used in the absence of a contrary 'select input' instruction in the program. ***Z is an end of tape marker and indicates that all the information on that tape has been read. This must be on a line of its own, and must be followed by at least one 'newline'.
Often when a program is being used for production runs, it is convenient to keep the program on a separate tape which is never changed. For each run the job description and data form a separate tape. For example:-
COMPILER AA (title 1) begin ------------- | | | PROGRAM | | | ------------- end of program ***Z
The data tape including the job description, would be
JOB (title 2) INPUT 0 (title 1) SELF = 1 DATA --------------- | | | DATA | | | --------------- ***Z
The input section gives the relevant program as being channel 0 (the program channel) and SELF = 1 indicates that the data tape is to be read as channel 1. Thus an instruction 'select input(1)' is required in the program. This tape could, if necessary, include any OUTPUT, STORE, and COMPUTING information since this is the part of the job description.
Possible titles for the above example might be
(title 1) UMA, P10 (title 2) UMA, P10/RUN 26
It is often convenient to have the program itself on two or more distinct tapes, where, for example, the program may be so long that it would be physically unmanageable to keep it on one tape.
Alternatively the program may contain a large section (declarations and routines perhaps) which is common to many programs and which can conveniently be kept on a separate tape.
The instruction
now compile from input [N]
is used to switch the compiler from one input stream to another. For example:-
JOB (title 1) INPUT 1 (title 2) 2 (title 3) COMPILER AA begin --------------- | FIRST PART | | OF | | PROGRAM | --------------- now compile from input 1 ***Z COMPILER AA (title 2) --------------- | SECOND PART | | OF | | PROGRAM | --------------- end of program ***Z DATA (title 3) --------------- | | |DATA | | | --------------- ***Z