Submitting batch jobs.

Batch jobs can be submitted either via cards or via time sharing or via R/C under DCMCP. All batch commands begin with a ? character. To run a job under a specific user the first card should be ?USER <name>. The two primary batch commands are ?COMPILE or ?EXECUTE. Following these cards comes the ?FILE cards to specify how files are to be accessed. Typical files are CARD for card input, TAPE for input from tape/disk, or LINE which specifies where the output of the program will go.

The common structure of a compile deck is as follows:

?COMPILE <executable> [WITH] <language> [FOR] <option>

The words WITH and FOR are optional. <option> can be GO which causes the program to be execute if compile is successful. LIBRARY if you just wish to compile the program to be executed at a later date. SYNTAX compiles the program but does not generate any output.

? <language> FILE LINE = PRINT BACK UP DISK

This caused the output of the compiler to be printed on the printer.

? <language> FILE TAPE = <source> SERIAL DISK

Indicates that the input will also come from a tape file and be merged in with what is on the card reader.

? <language> FILE NEWTAPE = <new source> SERIAL DISK

Optional card the creates a new version of the source file merged with the input cards. Also the first card the dollar card has to include NEW TAPE option.

? FILE LINE = PRINT BACK UP DISK

Sends the output of the program to the printer.

? DATA CARD

This indicates that the following will be read as data until the next ? card. For a compiler the next card is typically a $ card which specifies the compiler options. Typical this might be:

$ CARD LIST SINGLE

This will take input only from the card deck and list the program single space. The default listing is double spaced. Some other common options are PRT to list program segments in the listing. This will help in debugging. TAPE to merge the card deck with the TAPE file. NEW TAPE to create a new merged deck for later compile.

Following the program there can be another ? DATA <name> card to give the program more data. Or an ?END card to terminate the input.

The following is an example program that will copy the file CARD to the file NEWTAPE.

?COMPILE O/RDR WITH ALGOL FOR LIBRARY  
?ALGOL FILE LINE = PRINT BACK UP DISK
?DATA CARD
$CARD LIST SINGLE
BEGIN                                                                   0001000
LABEL EOF;                                                              0014000
SAVE  ARRAY REC[0:15];                                                  0015000
FILE IN CARD (2, 10);                                                   0016000
SAVE FILE OUT  NEWTAPE DISK SERIAL [20:3000] (2,10,150,SAVE 99);        0018000
                                                                        0020000
WHILE TRUE DO                                                           0027000
 BEGIN                                                                  0028000
 READ(CARD, 10, REC[*]) [EOF];                                          0030000
 WRITE(NEWTAPE, 10, REC[*]);                                            0034000
 END WHILE;                                                             0036000
                                                                        0037000
EOF:                                                                    0038000
LOCK(NEWTAPE,RELEASE);                                                  0040000
CLOSE(CARD)                                                             0042000
END.                                                                    0045000
END.    LAST CARD ON 0CRDING  TAPE                                      9999999
?END

The program can be run with the ?EXECUTE card as follows:

?EXECUTE O/RDR
?ALGOL FILE NEW TAPE = SYMBOL/RDR SERIAL DISK
?DATA CARD
BEGIN                                                                   0001000
LABEL EOF;                                                              0014000
SAVE  ARRAY REC[0:15];                                                  0015000
FILE IN CARD (2, 10);                                                   0016000
SAVE FILE OUT  NEWTAPE DISK SERIAL [20:3000] (2,10,150,SAVE 99);        0018000
                                                                        0020000
WHILE TRUE DO                                                           0027000
 BEGIN                                                                  0028000
 READ(CARD, 10, REC[*]) [EOF];                                          0030000
 WRITE(NEWTAPE, 10, REC[*]);                                            0034000
  END WHILE;                                                            0036000
                                                                        0037000
EOF:                                                                    0038000
LOCK(NEWTAPE,RELEASE);                                                  0040000
CLOSE(CARD)                                                             0042000
END.                                                                    0045000
END.    LAST CARD ON 0CRDING  TAPE                                      9999999
?END
 

This would store the source for the program on disk. The generated system image comes with a much more functional version of this program called OBJECT/READER, which by default will copy the file S to LINE, this is a simple way to print out program source. By using the ?COMMON = # option card after the ?EXECUTE card the operation of the program can be controlled. ?COMMON = 1 copies CARD to LINE, this can be used to print a card deck or copy cards to a file.?COMMON = 2 copies the file from S to both LINE and NEWTAPE, this can be used to copy a source file to a new name. ?COMMON =3 copies CARD to LINE and NEWTAPE this is the preferred way to load a source deck. For example as follows:

?EXECUTE OBJECT/READER
?COMMON = 3
?FILE NEWTAPE = <source> DISK SERIAL
?DATA CARD
<program>
?END