Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage □ Sections S-Z unavailable □ S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACL ACD C&A INF CCD CISD Archives
Further reading

IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage
Sections S-Z unavailable
S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex

D. GEORGE Commands

D.1 COMMAND LANGUAGE

D.1.1 COMMAND FORMATS

Users communicate with GEORGE by means of commands. Each command consists of an optional label preceding a verb which may be followed by one or more parameters. A label is normally only specified for a command if some other command in the job description or macro definition file branches to it. The verb defines the command to be carried out. At least one space must separate the verb from the following parameters if they are present. The parameters, separated from each other by commas, define the particular application of the command. A set of typical commands is:

    LISTFILE DATAXY,*LP
2LB ERASE DATAXY
    GOTO 2XY

The parts of a command are defined as follows:

  1. Label: a label must start with a digit and is terminated by a space. It may be of any length except that it should not extend over more than one line. There is no reason why a label should not appear on a line by itself. An ICL convention is that labels in system macros start with the digit 9. The user is, therefore, advised to use only digits 0 to 8 at the start of his labels. An ACL convention is to have the string ACL in system macros so this should also be avoided. A sensible restriction is only to define labels which are alphanumeric strings, Some examples are:
    3ABC    5ALONGLABEL AA2B3C
    
  2. Verb: the verb is the command name. Those defined consist of up to 11 alphabetic characters. The verb is terminated by the end of the line or by one or more space characters. Frequently, an abbreviation for the verb is also defined.
  3. Parameters: the parameters, if any, follow the verb and are separated from it by at least one space character. The individual parameters are separated by commas. Although spaces at the start and end of a parameter are ignored, they may be significant within the parameter itself. The order of parameters is usually significant but some commands do allow variations. For example, the two commands following are equivalent:
    RUNJOB :NTBE34,MYJOB,JDFILE 
    RUNJOB MYJOB,:NTBE34,JDFILE
    

    Parameters may be either mandatory or optional. In some commands, the optional ones are preceded by a parameter prefix which uniquely defines the parameter. The prefixed parameters may appear anywhere in the list. The following commands, for example, are equivalent:

    LISTFILE DATAXY,*LP,FROM 3,LINES  50
    LISTFILE DATAXY,*LP,LINES 50,FROM 3
    

In this example the parameter prefixes are FROM and LINES.

If the parameter sequence in a particular command is fixed, certain parameters may be defined as null by replacing them by a string of spaces (possibly none). Such parameters have a default value for the null case. Consider, for example, the following LISTDIR commands

LISTDIR FRED,LOW,*LP 
LISTDIR ,,*LP 
LISTDIR ,HIGH,*LP

Default values are given for either of the first two parameters if they are defined as null.

The internal format of each parameter can be quite complex and may include commas within parentheses and quotes. The following ONLINE command has two quite complex parameters:

ONLINE *DA2(WRITE),(100,FILE)

Fuller details of the exact form of the parameters will be given with the individual commands.

If a command has such complex parameters that it needs to extend over more than one line, each line except the last must be terminated by a hyphen which indicates that a continuation line is following. The ONLINE command above could have been written:

ONLINE *DA2(WRITE),-
(100,-
FILE)

D.1.2 PARAMETER FORMATS

There is a standard set of terms used in most of the GEORGE commands and these are defined below. Other terms, which are specific to one set of commands, are given at the head of the relevant chapter. The terminology used here is a simplification of the one used in the ICL documentation. Some of the definitions have been simplified. Complete details are given in the relevant GEORGE manuals. The standard terms are:

(1) identifier: an identifier consists of up to twelve letters, digits, spaces or hyphens starting with a letter. Spaces before the first letter and terminating spaces are ignored. For example:

ALONGEXAMPLE
A SPACED OUT
A-HYPHENED-1
A1234
C  D E-l 2E

(2) jobname: a jobname is an identifier with the restriction that it may not contain spaces. The user must ensure that his jobnames and filenames are distinct; nor may he have two jobs with the same name in the system at the same time.

(3) username: a username is any identifier preceded by a colon. At ACL, proper usernames (those allocated to users) consist of four alphabetic characters followed by two digits. Pseudo usernames defined by the user should not consist of two alphabetic characters or four alphabetic characters followed by two digits. Some examples of proper and pseudo usernames are:

:NTBE34 
:GSIN22 
:PSEUD

(4) fileidentifier: a fileidentifier is an identifier which has been defined as the basic name of a file.

(5) localname: the localname of a file consists of a fileidentifier optionally followed by parentheses containing either a generation number or language code or both. The generation number, if present, must appear first and consists of a number between 0 and 4095 possibly preceded by a + or - sign. The language code consists of a solidus (/) followed by up to four alphanumeric characters starting with a letter, or it can be blank. For example:

MYFILE(2)
MYFILE(-2)
MYFILE(2/FORT)
MYFILE(2/)
MYFILE(/FORT)
MYFILE(+0/FORT)

Full details of the use of generation numbers and language codes are given in Part C. No two files in the same directory may have the same localname.

(6) filename: a filename either consists of a username by itself or a localname optionally preceded by a username and a fullstop. The username, if present, defines the absolute position of the file in the filestore. If no username is defined, the file is defined relative to the current directory. Some example filenames are:

MYFILE
MYFILE(4095/FORT)
:PSEUD.MYFILE
:NTBE34.AFILE
:NTBE34.FILENM(3)
:NTBE34
:PSEUD

A fuller description of the filestore is given in Part C.

(7) glfileidentifier: a glfileidentifier is a filename without a generation number or language code. For example:

:PSEUD 
:NTBE34.AF1LE

(8) workfilename: a workfilename consists of an exclamation mark (!) optionally followed by a decimal integer which may be immediately preceded by a minus sign. No spaces are allowed in a workfilename. Pull details of workfiles are given in Part C. They are sometimes called temporary files or shriek files. For example:

!
!27 
!3
!-1 
!0

(9) anyfilename: the term anyfilename is used to define the set consisting of both filenames and workfilenames.

(10) digit: a digit is defined as one of the numerals 0 to 9.

(11) integer: an integer consists of a set of digits. Some of the commands, where integer is defined as a parameter, do allow more complex forms involving addition and subtraction.

(12) octalinteger: an octalinteger consists of a set of up to eight octal digits (0 to 7) preceded by the # symbol.

(13) mode: certain commands that input files via card readers, MOP terminals and other input devices allow certain modes of input to be specified. The possible modes are NORMAL, GRAPHIC and ALLCHAR. If a mode is not specified, GRAPHIC is assumed. The file produced will then consist of characters from the standard ICL 64-character set. The mode ALLCHAR is used for files requiring the full 128-character set. The NORMAL mode is similar to ALLCHAR except that run-out and delete characters are ignored.

(14) terminator: the terminator parameter allows the user to define his own terminator for input documents. It consists of the letter T or S followed by four characters from the standard ICL 64-character set. The terminator itself is stored in the file if S is used but not for T. The terminator should be 4 printable characters. The default terminator is S****. Some examples are:

T???? 
S//// 
T1957 
SENDF

(15) actiononmf: parts of the monitoring file for a job are output at the end of the job. The actiononmf parameter controls which parts will be output. The entries in the monitoring file are divided into a number of categories and the actiononmf parameter specifies which of these categories are to be output. The possibilities that may be required by the user are:

ALL               the whole of the monitoring file is output.
ALLBUT,COMMANDS   all the monitoring file except commands.
COMERR            only the command errors are output.
LOGGING           only the logging information for the job is output.
NONE              none of the monitoring file is output.
ALLBUT,BROADCAS   all the monitoring file except broadcasts.

The abbreviations AL (ALL), AB (ALLBUT), CM (COMMANDS), LG (LOGGING), CE (COMERR) and NO (NONE) are allowed.

(16) parameterlist: macros and certain commands have their parameters specified in a list of the form PARAM(91,92,93,...). The arguments must conform to the general rules laid down for parameters. Some examples of parameterlist are:

PARAM(3)
PARAM(:NTBE34.AFILE(3),GRAPHIC,ALL)

(17) qualifierlist: parameters, such as filename, may in certain contexts have qualifiers added to them. The basic format of the qualifier list is a set of qualifier names separated by commas. For example, the file FNAME could be written:

FNAME(ALLCHAR,APPEND)

The qualifiers are described in D.1.3.

(18) text: some commands allow a string of text as a parameter. The only limitation is the length of the text. If the parameter is written text12, the number following (12 in the example) gives the maximum length of text allowed.

(19) outtype: the parameter outtype defines a type of output peripheral and consists of the symbol * followed by two letters. The possible output peripherals are *LP (lineprinter), *CP (card punch), *TP (tape punch).

(20) peritype: the parameter peritype defines a type of peripheral and consists of the symbol * followed by two letters. The possible peripherals are *TR (tape reader), *CR (card reader), *LP (lineprinter), *CP (card punch), *TP (tape punch), *MT (magnetic tape), *DA (disc). The mnemonic *DA has an alternative form, *ED, which may be used although it is not recommended.

(21) periname: the parameter periname defines a particular program channel. It consists of a peritype followed by the integer defining the particular channel. For example:

*LP0 *CP1 *DA2

If the integer is omitted, zero is assumed.

(22) outname: this is similar to periname but is just the set of output channels. It consists of outtype followed by an integer.

(23) ipname: the parameter ipname may be any one of the installation parameters that define the form of the GEORGE operating system at ACL. These parameters are changed to reflect the workload and any other factors which affect the 1906A's performance. The set of installation parameters which may be of interest to the user (with their current value) is given below:

JOBTIME   120               Default value in seconds of the allowed time for the job.
MAXQUOTA  70000             Maximum quota that will be given to an object program.
MOPLIMIT  3                 Number of MOP jobs which may be made fully started.
PROGTIME  30                Default value in seconds of TIME for object programs.
VOLUME    8000              Default setting of number of transfers output to a file from a program.
JOBTRACE  ALLBUT BROADCAST  Initial setting of categories being output to monitoring 
                            file for a background job.
MOPTRACE  LOGGING           Initial setting of categories being output to monitoring
                            file for a MOP job.
MINTRACE  LOGGING           The minimum set of categories allowed to be output to the monitoring file.
MOPSLOTS  14                Number of MOP users which may be logged-in.

(24) enclosedstring: any string enclosed between round brackets, or quotes, apostrophes, / or ? symbols. Internal brackets within the string must appear in left-right pairs.

(25) jobparameter: the parameter jobparameter is used in a JOB or RUNJOB command to define the scheduling requirements of a job. It consists of a set of items separated by commas and surrounded by JD( and ). For example:

JD(JT 30,MT 2,7T 1) 

The possible items are:

JT integer       )
JT integer SECS  )  Specifies the maximum jobtime required by the job. 
JT integer MINS  )  SECS assumed if not given.
MZ integer       )  Specifies the maximum size in words of any
MZ integer K     )  program loaded by the job.
MT  integer         Specifies the maximum number of 9-track tapes 
                    simultaneously required by the job.
7T integer          Specifies the maximum number of 7-track tapes 
                    simultaneously required by the job.

In the first form of the MZ item, the integer is rounded up to a 1024 word boundary. In the second form, the size of core specified is the integer value given multiplied by 1024.

The default values for the items are:

JT  2 MINS 
MZ  100000
MT  0
7T  0

If no JD parameter is given, the defaults are all assumed. If any error is detected in the format of the parameter, an appropriate message is given and the JOB or RUNJOB command is rejected.

D.1.3 QUALIFIERS

A number of commands for handling files, disc files and magnetic tapes allow the user to add certain qualifiers. The possible set is:

(1) ALLCHAR: defines the type of file to be input as ALLCHAR.

(2) GRAPHIC: defines the type of file to be input as GRAPHIC.

(3) NORMAL: defines the type of file to be input as NORMAL.

(4) APPEND: indicates that the new information is to be added to the old instead of replacing it.

(5) LIMIT integer : the maximum number of peripheral transfers allowed to the file.

(6) READ: allows reading from the device.

(7) WRITE: allows writing to the device.

(8) EMPTY: empties the file initially. If the file is off-line, it will be re-created rather than retrieved. It should be used when overwriting an existing file that is likely to be off-line.

(9) SCRATCH: opens the file for writing. It is assumed empty initially.

(10) MODE integer: indicates the mode to which a magnetic tape deck must be set (D.7.2).

(11) GIVE: regards the file as open and the execution of an open mode PERI in the program will be illegal.

(12) OVERLAY: opens tbe file for both reading and writing.

(13) TRAPGO (username, trapmode, trapmode, ..,): allows the specified user the modes of access indicated as soon as the file is created.

(14) TRAPSTOP (username, trapmode, trapmode, ...): denies the specified user those modes of access as soon as the file is created.

The possible trapmodes are:

(a) READ:    access to read.
(b) WRITE:   access to write.
(c) EXECUTE: access to execute a program, job description or macro.
(d) APPEND:  access to write on to the end.
(e) ERASE:   access to erase.
(f) ALL:     all the above accesses.

(15) REPLY: causes an error to be reported if the file is already being used in such a way that the user would be kept waiting.

(16) NOWAIT: causes an error to be reported if the file is not on-line.

(17) PROPERTY: defines the properties associated with a magnetic tape. It consists of PROPERTY (can be abbreviated to PR) followed by one or two properties separated by & . The possibilities are:

TRACK7
TRACK9
TRACK7 & MODE integer

The first two define a 7 and 9-track tape respectively. At ACL, all 7-track tapes are NRZI while all 9-track tapes are phase-encoded. The MODE defines the parity and density of the 7-track tape. The integer following MODE is obtained by adding together the following numbers:

Parity              : Odd = 4,     Even = 0 
Gap-setting         : Short = 8,   Long = 0
Recording density   : '800' = 32, '556' = 16, '200' = 0

Short gap is not allowed with 800 bpi density. The standard mode setting at ACL is 20 (556 bpi, long gap and odd parity). All tape headers will be written in this mode.

The 9-track decks at ACL only allow tapes to be read or written at 1600 bpi, short gap and odd parity.

D.1.4 COMMAND CONTEXTS

There are very few GEORGE commands which may be issued anywhere.

Most commands can only be issued in certain environments. For example, there are a number of commands which may only be input at the operator's console. A command's context defines the environment in which the command may be issued. The contexts of interest to the user are:

NOUSER       outside a job
USER         within a MOP or background job
MOP          from a MOP terminal or in a job that is connected to MOP
OFF-LINE     within a background job
COREIMAGE    a core image exists
NOCORE1MAGE  no core image exists
REMOTE       from a remote RJE station console
BREAK-IN     during a break-in
NOT BREAK-IN not during a break-in
OPERATOR     from the operator's console

More than one context may be appropriate at the same time. For example, at a MOP terminal the user will initially be in NOUSER and MOP context as well as NOCOREIMAGE and NOT BREAK-IN. Once a LOGIN command has been accepted, the context will change to USER and MOP. Entering a background job would set the contexts of the background job as OFF-LINE and USER. If a LOAD command is issued, the context changes to USER, OFF-LINE and COREIMAGE.

D.1.5 PROCESSOR LEVELS

When a job is initiated by a JOB or RUNJOB command, subsequent commands are obeyed from the job source file. This is called a change of command processor level. The JOB command is obeyed at command processor level 0 while the commands in the file are obeyed at level 1. If one of the commands in the file is a macro, obeying this command will cause the commands in the macro definition file to be obeyed. These commands would be obeyed at command processor level 2. Higher levels can be defined if macros are defined in terms of other macros. On exit from a macro, the command processor level reduces by one. Whenever a command is obeyed, the system will have a complete record of the commands being obeyed on each processor level. The number of levels is limited to 26.

D.1.6 COMMAND ERRORS

When GEORGE detects a command error, it abandons the command and sends a command error message to the COMERR category in the monitoring file of the job. The two standard formats for error messages are:

(1) ERROR IN PARAMETER w IN x : comment

The integer w gives the position of the parameter in the command (the first parameter has position 1). The identifier x is the name of the command in which the error has occurred. If the command is being obeyed at a high processor level, the hierarchy of commands being obeyed is given. The comment part of the error message gives additional information about the particular command error that has taken place. For example:

ERROR IN PARAMETER 1 IN EDIT : ENTRANT AFILENM DOES NOT EXIST
ERROR IN PARAMETER 1 IN LISTDIRECTORY IN JOBD : FRED IS NOT A DIRECTORY

It is possible for a supplementary message to be output immediately before the main error message. For example, the command:

LISTFILE 7ABC

will generate the error message:

LOCAL NAME : THE FIRST CHARACTER MUST BE A LETTER
ERROR IN PARAMETER 1 IN LISTFILE : 7ABC IS NOT A CORRECT ENTRANT 
DESCRIPTION FORMAT

The supplementary error messages are self-explanatory.

(2) ERROR IN x : comment

This message is given for all other types of command error, including missing parameters. The identifier x is the name of the command. The name VERB will be output if the command name cannot be recognised. If the command is being obeyed at a high processor level, the hierarchy of commands being obeyed is given. For example:

ERROR IN VERB : VERB TOO LONG
ERROR IN LIS : THIS IS NOT A COMMAND
ERROR IN LOAD IN FRED : FILENAME PARAMETER MISSING

If the command in error was input at a MOP terminal, the command is ignored. If the error occurred at a high processor level, it is possible to return control to a lower processor level if the following command has been obeyed at a lower processor level:

WHENEVER COMMAND ERROR,...........

Otherwise, the operating system is likely to continue with the next command following the one in error.

D.1.7 NOTATION

In the following chapters, the set of GEORGE commands relevant to the user are described. The syntax of each command is given at the head of the description using the terminology defined in D.1.2. Many GEORGE commands have parameters that are optional. These are indicated by underlining. Other parameters are optional and may be written in any order and these are indicated by broken underlining. (Note: due to the difficulty in producing broken underlining, these have been underlined and coloured blue.) For example:

INPUT username,anyfilename(qualifierlist),terminator
         

This indicates that the INPUT command has two parameters, username and anyfilename, which must be given in that order if both are present.

However, the first parameter may be omitted. The second parameter, anyfilename, can be qualified by a qualifierlist. The remaining parameters are optional and may be included in any order.

If the same command has more than one syntactic form, the alternatives will normally be listed one after the other. Most commands have an abbreviated form and this is given in brackets immediately after the heading.

Some parameters are mandatory but can be defined as null (a string of spaces, possibly none). In this case, a default value will be assigned to the parameter. The difference between omitting and defining as null is that in the first case the comma is removed whereas, in the second, the comma must be present.

D.2 RUNNING JOBS

D.2.1 JOB (JB)

JOB jobname,username,terminator,MODE(mode),parameterlist,jdparameter
JOB username,jobname,terminator,MODE(mode),parameterlist,jdparameter
         

This command introduces a job description to the system for running as a background job. The standard terminator of S**** is assumed unless the terminator parameter is included. A JOB command may be issued only at command processor level 0. The input up to the terminator is read into a temporary job description file whose name is the jobname given in the command. A monitoring file for the job is opened. The job is obeyed as if the jobname file was called as a macro with the parameters given by parameterlist. Some examples are:

JOB :NTBE34,SMITHJOB1,JD(JT 20 SECS,MT 1)
JOB SMITHJOB2,:NTBE34,PARAM(47,ABC),T////,JD(JT 120)

The job is executed by reading and obeying commands from the job description file until an ENDJOB command is reached. At this point, the job is terminated and the file erased. Users should ensure that every job description file will terminate execution with an ENDJOB command.

The parameter, jdparameter, defines the scheduling requirements of the job.

D.2.2 ENDJOB (END,EJ)

ENDJOB actiononmf,RETAIN(fileidentifier)
         

This command terminates the execution of a background job and closes the job description file associated with it (the file is erased if the job was started by a JOB command). If the RETAIN parameter is present, the monitoring file is copied to the file whose name is given by fileidentifier. The abbreviation RT is permitted for RETAIN. The monitoring file is listed in full if no actiononmf parameter is given, otherwise the categories specified will be listed. Some example commands are:

ENDJOB
ENDJOB RETAIN(AFILE)
ENDJOB NONE,RETAIN (AFILE)

D.2.3 RUNJOB (RJ)

RUNJOB username,jobname,filename,parameterlist,jdparameter
RUNJOB jobname,username,filename,parameterlist,jdparameter
         

This command initiates a background job with the parameter filename defining the job description file. If a username parameter is present the command must be issued in NOUSER context (for example, entered at a MOP terminal before logging-in or as a single card at a card reader). The username must be the user's proper username and not a pseudo username. Commands in the job description file will be obeyed initially on the assumption that the current directory is the user's proper directory.

If the username parameter is not present, the command must be issued in USER context either from a background or MOP job. The job description file will be obeyed initially on the assumption that the current directory (which may be a pseudo directory) is the same as when the RUNJOB command was obeyed. If the parameter filename does not contain a username, this is also defined relative to the current directory.

A monitoring file for the job is opened under the proper user directory (either the current user or, if a command is issued in NOUSER context, the one specified in the RUNJOB command). The job is obeyed as if the job description file was called as a macro with the parameters given by parameterlist. Some example commands are:

RUNJOB :NTBE34,MYJOBSMITH,JDFILE,PARAM(47,ABC),JD(JT 60) 
RUNJOB SMITHJOB2,:NTBE34,JDFILE2,JD(JT 80)
RUNJOB MOPSMITH, :NTBE34.JDFILE3,PARAM(18),JD(MT 2,MZ 30K) 
RUNJOB MOPSMITH2,:PSEUD.JDFILE4,JD(JT 90,MT 1)

If RUNJOB commands are issued from within MOP jobs, it is requested that the #characters MOP appear somewhere in the jobname. This is as an aid to the ACL operators. Jobnames containing the user's name and other relevant information also help.

The parameter, jdparameter, defines the scheduling requirements of the job.

D.2.4 LOGIN (LN)

LOGIN jobname,username

This command starts a MOP job and may only be issued from a MOP terminal. If the user has defined a password (NEWPASSWORD command), the following message will be printed:

TYPE PASSWORD

The user must type his password correctly at this stage. If successful, a monitoring file is opened for the job and the user is invited to type his next command, otherwise the command is abandoned. An example command is:

LOGIN MOPSMITH,:NTBE34

At ACL, users are requested to have the letters MOP somewhere in the jobname (this is for the operator's convenience).

D.2.5 LOGOUT (LT)

LOGOUT actiononmf,RETAIN(fileidentifier)
         

This command terminates the execution of a MOP job. If the RETAIN parameter is present, the monitoring file is copied to the file whose name is given by fileidentifier. The abbreviation RT is permitted for RETAIN. If no actiononmf parameter is present, only the logging information in the monitoring file will be listed. The actiononmf parameter allows the user to obtain the categories specified. Some example commands are:

LOGOUT
LOGOUT RETAIN(AFILE)
LOGOUT NONE,RETAIN(AFILE)

The jobname does not disappear from the system until the monitoring file has been printed. It is sensible, therefore, if another job is issued soon after the LOGOUT command has been obeyed, to use a different jobname for the second job.

D.2.6 NEWPASSWORD (NP)

NEWPASSWORD text12

This command changes the password of the current MOP user to the text given as the parameter. Leading spaces are ignored and only GRAPHIC set characters which can be generated using a MOP terminal are allowed (except for comma). This command can be used to define a user's password initially. For example:

NEWPASSWQRD MY/PASS?

D.2.7 OBEY (OB)

OBEY anyfilename,parameterlist

This command executes the file given by the parameter anyfilename as a macro with the parameters given by parameterlist. It is similar to a macro call and can be used to access macros owned by other proper or pseudo users, For example:

OBEY :NTBE34.MFILE,PARAM(73,ABC)

D.3 FILE HANDLING

D.3.1 INTRODUCTION

The set of commands defined in this chapter are concerned with inputting, listing, editing and erasing files from the GEORGE filestore. Full details of the filestore are given in Part C and of the editing commands in Part G.

D.3.2 INPUT (IN)

INPUT username,anyfilename(qualifierlist) ,mode,terminator
         

The lines immediately following the command (up to and possibly including the terminator) are read into a file whose name is given by anyfilename. This file belongs to the current user unless input is from a batch terminal in NOUSER context. In this case, the username parameter is required to define the owner. Users are only allowed to input to their own files. The input filename may be qualified by using any of the qualifiers, APPEND, TRAPGO, GRAPHIC, NORMAL or ALLCHAR. If input is to an existing file, the traps must be set to allow this and the type of file must be correct. Examples are:

INPUT AFILE
INPUT :NTBE34,:PSEUD.AFILE2(APPEND,TRAPGO(:NTBE33,READ))
INPUT AFILE3(GRAPHIC),T////
INPUT AFILE(ALLCHAR),TABCD
INPUT :PSEUD.AFILE4

If the file is to be used as a job description file or macro, the fileidentifier must not have internal spaces. When the file is input initially, the file's trapmode is set to ALL.

D.3.3 LISTFILE (LF)

LISTFILE anyfilename ,outtype,FROM integer,LINES integer,NUMBER,ALL,PROPERTY propertyname
         

This command outputs part or all of the file (define by anyfilename) to a basic peripheral or writes it to the monitoring file. If no outtype parameter is given, the output will be directed to the monitoring file if the command is obeyed from a background job. For a MOP job, the output will be directed to the MOP terminal. If outtype is present, it defines the type of peripheral on which the file will be output.

If only part of the file is required, the FROM parameter allows the listing to be started at some line other than the first (line number 0) The LINES parameter limits the number of lines output to the amount specified. If the NUMBER parameter is present and output is to the lineprinter or card punch, the lines will be numbered. On the lineprinter, a 7-digit number is output before each line. On the card punch, a 4-digit number is output in columns 76 to 79 with a zero in column 80 (producing sequencing in units of 10).

If the parameter ALL is present and the listing has to be restarted for any reason, it will be done from the beginning. Specifying ALL is recommended for output directed to the paper tape punch. Re-starting output directed to the lineprinter is usually left under the control of the operators.

If the parameter PROPERTY is present, the name, propertyname, defines a property that the output device must have. Its main use is for remote users who can use the propertyname CENTRAL to direct output to the main 1906A lineprinters.

Some example commands are:

LISTFILE AFILE,*LP,FROM 32,NUMBER,LINES 72
LISTFILE :PSEUD.AFILE2,*TP,ALL

D.3.4 EDIT (ED)

EDIT oldfile
EDIT oldfile,newfile,editfile
         

All three parameters are of the type anyfilename. The command calls the EDITOR to edit the file defined by oldfile. The edited file is stored in newfile if that parameter is present. If the second parameter is null or not given, the edited file will have the same filename as the original file but with a one higher generation number. If the third parameter is omitted, editing instructions will be expected immediately following the EDIT command in a background job or to be input from the terminal for a MOP job (Part G). If the third parameter is present, this file will contain the editing instructions. Some examples are:

EDIT :PSEUD.AFILE
EDIT AFILE2,NEWFILE,EDFILE
EDIT AFILE3(7),,EDFILE2

D.3.5 CORRECT

CORRECT glfileidentifier,/ languagecode
         

This macro is similar to EDIT and is recommended in preference to EDIT when a file is simply to be updated. The first parameter defines, the name of the file to be edited. If several files exist with this name in the directory, the one with the highest generation number is edited. The edited file which is produced is given the same name as the original file but with a one higher generation number. If the second parameter is omitted, the language code of the new file is blank. If it is present, the original file is first checked to see that it has this language code. The new file is given the same language code. Full details of CORRECT are given in Part G.

The major difference between CORRECT and EDIT is that the macro CORRECT deletes the original file once the new file has been generated, Care is taken to ensure that, whenever a system break occurs, either the old file or new file will still be available.

D.3.6 COPY (CY)

COPY anyfilename,anyfilename(qualifierlist)
         

This command copies the file defined by the first parameter into the file defined by the second parameter. If the second parameter does not refer to an existing file, the user must own the file created. If the file does exist, the COPY command will overwrite the old file unless the APPEND qualifier is given. The only other qualifier allowed is TRAPGO which will set the traps for the file generated. Some examples are:

COPY OLDFILE,NEWFILE
COPY OLD2,NEW2(APPEND,TRAPGO(:NTBE34,READ))
COPY OLD3,:NTBE34.NEW3(APPEND)
COPY :NTBE34.DATA(3),MYFILE

Files should only be copied to files of the same type.

D.3.7 RENAME (RN)

RENAME filename,localname

The localname for the file defined by the parameter filename is changed to that defined by the second parameter. The file to be renamed must be owned by the proper user and must have a WRITE trap set for him. The command can be used to change the fileidentifier, generation number or language code of a file. The file will be in the same directory as it was initially. Some examples are:

RENAME OLDNAME,NEWNAME
RENAME  :PSEUD.OLD1(5),NEW2(3)
RENAME AFILE(3),AFILE(4)

D.3.8 ERASE (ER)

ERASE anyfilename

This command erases the file defined from the filestore as long as it belongs to the proper user and has the ERASE trap set. If the file is a directory, all the files in the directory will also be erased. The erasing may take a finite time so that it is not always possible to create a new file with the same name immediately. Some examples are:

ERASE FRED 
ERASE :PSEUD 
ERASE :PSEUD.AFILE 
ERASE :NTBE34.MYFILE

D.3.9 MAKEDIR (MK)

MAKEDIR filename,username,PSEUDO

This command sets up an empty directory with the given filename. The filename must include a localname and, if details are specified, the language code must be C1 and the generation number 1. The file will be entered in the current directory as long as it is one of the proper user's directories. The command defines a pseudo user with the username given by the second parameter. This username must be distinct from any other username in the system (the user will get an error message if it is not). At ACL, it is recommended that pseudo usernames should not be two alphabetic letters or four alphabetic letters followed by two digits. The pseudo username without the colon should be the same as the filename. Some examples are:

MAKEDIR :PSEUD.NEWPS,:NEWPS,PSEUDO 
MAKEDIR MYPSEUDO,:MYPSEUDO,PSEUDO 
MAKEDIR NEWPSD(1/C1),:NEWPSD,PSEUDO

D.3.10 DIRECTORY (DY)

DIRECTORY username
DIRECTORY filename

This command changes the current directory to the directory specified by the parameter. This may either be given as the username or filename of the directory. For example, if the current user directory contains a directory entrant whose filename is PSEU and username is :PSEU, the current directory can be set to this directory by either of:

DIRECTORY PSEU 
DIRECTORY :PSEU

The user should not define a generation number or language code for the directory name.

D.3.11 LISTDIR (LD)

LISTDIR filename,LOW,*LP
LISTDIR filename,HIGH,*LP
         

The command produces a listing of information about the entries in a directory. The filename must be the name of a directory file and should not define a generation number or language code. If no filename is given, the job's current directory is assumed. If *LP is present, the output will be directed to the lineprinter. If no *LP parameter is defined, the output will be directed to the monitoring file for a background job and to the terminal for a MOP job.

If the second parameter is null or omitted, LOW is assumed. If LOW is defined, each entry in the directory will produce a line containing:

(1) type of entry (file or magnetic tape)

(2) name

(3) reel sequence number (for magnetic tapes)

(4) generation number

(5) language code (for files)

(6) serial number (for magnetic tapes)

If HIGH is specified, the following additional information will be printed:

(7) retention period

(8) date and time written

(9) type number/mode (for peripheral files)

(10) date and time of last access

(11) increment number of the latest dump of the file

(12) date and time of the last dump

(13) number of copies in on-line storage

(14) size of the file (in 512 word blocks)

Some example commands are:

LISTDIR 
LISTDIR ,,*LP 
LISTDIR :PSEUD,HIGH

D.3.12 RETRIEVE (RV)

RETRIEVE filename,filename,filename...
         

This command retrieves the files specified by the parameters from dump tapes. It enables a user to bring on-line his files that will be needed in the near future.

D.3.13 CANCEL RETRIEVE (CC RV)

CANCEL RETRIEVE filename

This command will cancel a retrieve from dump tape unless it has already taken place.

D.3.14 ARCHIVE (AR)

ARCHIVE filename,filename,filename...
         

This command allows the user to specify which files he no longer requires on-line. The files will be thrown off-line the next time backing store unjammer is called. Users cannot archive directories, It is requested that users ARCHIVE files if they know that they will not be required in the next ten days (especially if the files are large). For example:

ARCHIVE :NTBE34.MYFILE,ANOTHER

The user may only archive his own files.

D.3.15 TRAPGO (TG)

TRAPGO filename,username,trapmode,trapmode...
         

This command allows the proper user to give another user (specified by username) access to a file which must belong to the proper user. The access is determined by the trapmode parameters. If the username is omitted, the proper user is assumed. Some examples are:

TRAPGO MYFILE,:NTBE34,ALL
TRAPGO FILE2(3).WRITE,READ
TRAPGO :PSEUD.FILE3,:NTBE34,EXECUTE

D.3.16 TRAPSTOP (TS)

TRAPSTOP filename,username,trapmode,trapmode...
         

This command allows the proper user to withdraw from another user (specified by username) access to a file which must belong to the proper user. The access is determined by the trapmode parameters. If the username is omitted, the proper user is assumed. Some examples are:

TRAPSTOP MYFILE,:NTBE34,ALL 
TRAPSTOP MYFILE,WRITE

D.3.17 TRAPCHECK (TC)

TRAPCHECK filename,username
TRAPCHECK filename,:MANAGER,GROUP

This command checks what modes of access the specified user has to the filename given. If the username parameter is omitted, the proper user is assumed. A user may only enquire about his own access to an entrant or about another user's access to one of his own files.

If the second form of the command is used, the command checks what modes of access all users, as a group, have to the file. Some examples are:

TRAPCHECK MYFILE,:NTBE34 
TRAPCHECK MYFILE,:MANAGER,GROUP

D.4 LOADING PROGRAMS

D.4.1 INTRODUCTION

Before a program can be executed on the 1906A, it must be generated as a binary program and stored in the filestore. The binary program may have been generated by compilers, library systems or by the SAVE command. Once a binary program is available, it must be loaded into store and the program's peripheral channels connected to specific filestore files. The program may then be entered. Execution will continue until the program deletes itself or is deleted by a GEORGE command.

The running of programs is scheduled depending on the resources it requires. The program is not loaded into store until the scheduler is ready for it to execute. The act of loading gives the program COREIMAGE context and, at this stage, the program is said to have a core image. When the program is loaded, it is possible to specify the maximum size of store that it will require.

D.4.2 LOAD (LO)

LOAD anyfilename,SIZE integer
         

This command will cause a core image of the binary program contained in the file defined by the first parameter to be defined. The specified file will normally be a disc file although it can be a GRAPHIC file. The file to be loaded contains, at its head, a request slip defining the size of the program being loaded. The SIZE parameter overrides the amount specified in the request slip. The number will be rounded up to the next highest multiple of 1024. Some example commands are:

LOAD :NTBE34.FRED-BIN
LOAD  :PSEUD.FRED-BIN,SIZE 20000

D.4.3 SAVE (SV)

SAVE anyfilename(qualifierlst),*CP
SAVE anyfilename(qualifierlst),*DA
         

This command saves the state of the current core image in the file specified by the first parameter. This file may either be one to which the user has WRITE access or it may be a new file. The file produced will be a disc file if the second parameter is omitted or is *DA. If *CP is specified, the file will be a GRAPHIC file. If the file already exists, the type of file specified in the SAVE command must be the same as that of the file. If the file is a new one, the qualifiers TRAPGO and TRAPSTOP may be used to set the required traps. Sparse programs may not be saved in a GRAPHIC file.

Some examples are:

SAVE BINFILE(TRAPGO(:NTBE34,READ,EXECUTE)),*DA 
SAVE CRDFILE,*CP

A binary dump of the program in a format acceptable to LOAD and RESUME or ENTER is generated in the file specified. The request slip at the head of the file contains the SIZE of the core image at the time the SAVE command was issued. Peripherals assigned to the core image are lost and have to be re-assigned when the program is loaded at a later time. However, the act of saving does not lose the assigned peripherals so that, if the program is entered immediately after the saving, they need not be re-assigned.

D.4.4 ENTER (EN)

ENTER digit,parameterlist
ENTER

This command causes the binary program which is the current core image to be entered. The first parameter defines which of the entry points 0 to 9 the program is to start at (these entry points are stored in words 20 to 29). If the first parameter is omitted or null, entry point 0 is assumed. The parameters specified in the parameterlist will be passed to the program when it asks for them during execution.

D.4.5 DELETE (DL)

DELETE text40

This command deletes the current core image. It can be used in cases where the program does not delete itself. A message, indicating the deletion, will be sent to the monitoring file together with the text given as a parameter. For example:

DELETE ZZ
DELETE JOB ENDS PERIPHERAL FAIL

D.4.6 RESUME (RM)

RESUME anyfilename,integer,parameterlist
RESUME integer,parameterlist
         

If the anyfilename parameter is present, it defines a saved file which is loaded into core store as though by a LOAD command. If the parameter is missing, it is assumed that a core image already exists. The binary program is restarted at the entry point given by the integer parameter. This is a number between 20 and 29 (equivalent to entry points 0 to 9). If the integer parameter is null, the program will be resumed at the place where it was halted. The parameters given in the parameterlist will be passed to the program when it requires them during execution. Some examples are:

RESUME SAVEDFILE,20 
RESUME ,PARAM(10,15)

A core image that has not been entered will have halted at word 19. Therefore, a RESUME with a null parameter will be equivalent to:

RESUME 20

By specifying addresses other than 20 to 29, it is possible to resume the program elsewhere.

D.4.7 ASSIGN (AS)

ASSIGN periname,anyfilename(qualifierlist)
ASSIGN anyfilename(qualifierlist),periname

This command causes a file to be associated with the current program in such a way that it simulates an actual peripheral. A file used as an input peripheral must already be defined. For output peripherals other than disc files, the file may be defined by the command if it does not already exist. The parameter, anyfilename, defines the file to be used in place of the peripheral while the optional qualifierlist defines the types of access allowed. The particular peripheral channel in the program is defined by the parameter periname. The possible peripheral types together with the allowed qualifiers are as follows:

ALL     NOWAIT,REPLY
*TR
*CR
*LP     APPEND,LIMIT
*CP     APPEND,LIMIT
*TP     APPEND,LIMIT,GRAPHIC,NORMAL,ALLCHAR
*DA     GIVE,OVERLAY,WRITE,EMPTY,SCRATCH

For basic peripheral files, it is normal for output to overwrite the existing contents of the file. In the case of workfiles, a CREATE command is needed before the ASSIGN if the user does not wish to overwrite an existing workfile. If the qualifier APPEND is given, output will be added to the end of the existing file and this must be of the same type (and possibly mode) as that specified in the ASSIGN command. The correct traps must be set.

For disc files, the file will automatically be set up to allow reading. Some examples are:

ASSIGN *TR1,FRED
ASSIGN *TP1,:NTBE34.MYFILE(APPEND,GRAPHIC,LIMIT1000)
ASSIGN MYFILE2,*LP1
ASSIGN *CR,MYFILE3
ASSIGN *DA2,FRED(OVERLAY,CLEAN)
ASSIGN *DA1,:NTBE34.MYFILE(WRITE)
ASSIGN *DA3,FRED

D.4.8 ALTER (AL)

ALTER integer,octalinteger
ALTER integer,integer
ALTER integer,instruction
ALTER PURE integer,octalinteger
ALTER PURE integer,integer
ALTER PURE integer,instruction

This command alters the contents of a location in the current core image. It may be used to modify a program between loading and entering. The first integer parameter gives the location to be altered. The second parameter gives the new contents of the location either as an integer or as a PLAN instruction. The format of the PLAN instruction is with a single space delimiter between fields. The function part of the instruction can either be the function code preceded by prime or the PLAN mnemonic. The qualifier PURE (which may be abbreviated to P) must be present if the location to be altered does not have WRITE permission. If the altered location is part of an overlay, it will be overwritten the next time the overlay is brought into core. A branch instruction can have an operand which is an unsigned integer (DBM) (Y.2.1), signed integer (EBM), unsigned integer enclosed in brackets (indicates a replaced branch in EBM), a signed integer prefixed by * (this is converted into an absolute address in DBM where A is the current address). Some examples are:

ALTER 100,0 
ALTER 90,LDX 0 1 
ALTER PURE,4170,LDN 1 2 
ALTER 174,'020 6 4(2)

D.4.9 PRINT (PT)

PRINT region,region,....
PRINT anyfilename,REGION(region,region,....)
PRINT anyfilename,ALL

This command writes one or more regions of the current core image to the file specified. If the filename is null or the first format is used, the output will be directed to the monitoring file. Each region is defined by one of:

(n,m) : n is the first and m the last location of the region.
n(m)  : n is the first location and m is the number of locations,
n     : just the location n.

If ALL is specified, the complete core image will be written. Some examples are:

PRINT (20,24)
PRINT 20(5)
PRINT 20,21,22,23,24
PRINT MYFILE,REGION(20(4),(25,28),29,30,31,32)
PRINT ,ALL

Each location is printed in the format:

ACDOI
A : the address  of the location in decimal
C : the contents in character form
D : the contents as a signed decimal number
0 : the contents in octal
I : the contents in instruction format

Only the first and last of a series of identical locations will be output.

D.4.10 CONNECT (CN)

CONNECT jobname,actiononmf,RETAIN(fileidentifier)
CONNECT jobname,username

The MOP terminal, from which the command is issued, is connected to a background job or a MOP job in limbo which belongs to the user (MOP terminal has become inoperable).

The first format is used from within a MOP job. This MOP job is terminated and the two optional parameters define the action to be taken on the monitoring file (see LOGOUT command). The second format is used from the MOP terminal in NOUSER context. The user will be requested to give his password.

In either case, the MOP terminal will be connected to the job whose name is given by the jobname parameter. An automatic break-in to this job will set up the connection. A break-in message will be sent to the terminal and the user may issue any command permitted in BREAK-IN context.

Some examples are:

CONNECT MYBACKJOB
CONNECT MYBACKJOB,:NTBE34

It is not possible to CONNECT to a non-started job in the Secure Jobwell.

D.4.11 DISCONNECT (DC)

DISCONNECT

The current broken-in MOP job is disconnected from the MOP terminal and continues running as a background job. The MOP terminal returns to NOUSER context. The background job is given OFF-LINE context.

D.4.12 SIZE (SE)

SIZE integer

The integer parameter is rounded up to the next multiple of 1024. It defines the size of the current object program. For example:

SIZE 8000

D.4.13 MAXSIZE (MZ)

MAXSIZE integer

This command defines the maximum size of core images allowed with this job. The integer parameter is rounded up to the next multiple of 1024. An attempt to load a program or extend an existing one past this size will be treated as an error. MAXSIZE should be issued before the first LOAD. If SIZE has been defined greater than MAXSIZE, then the MAXSIZE value is taken and no error occurs.

The purpose of the MAXSIZE command has, to a large extent, been taken over by the jdparameter (D.1.2) of the JOB or RUNJOB command. The maximum size specified by the MAXSIZE command must be less than that given by the jdparameter or its default. There is no reason for using the MAXSIZE command and users are recommended to specify the maximum size of core images in the JOB or RUNJOB command.

D.5 INFORMATION REQUESTS

D.5.1 INTRODUCTION

A user at a MOP terminal may need to know information about the current state of the system. In particular, he may need information about his background jobs. The following set of commands is designed to give the terminal user the information he requires.

D.5.2 WHATJOBS (WJ)

WHATJOBS ALL
         

If the parameter ALL is omitted, the number of background and MOP jobs in the system is printed. If ALL is present, a list of all the jobs currently in the system is printed at the MOP terminal. For each job, a line of information is printed containing:

(1) jobnumber     : the  number by which the system uniquely identifies the job.
(2) origin        : N for background, R for remote, I for MOP.
(3) username      :
(4) jobname       :
(5) urgency       : the urgency of the job, if fully started
(6) CPI           : computing power index,  if fully started
(7) jobtime       : used so far
(8) time remaining                 : if job has core image
(9) core store required by program : if job has core image
(10) the program's QUOTA           : if job has core image

When a job is in the Secure Jobwell and not yet started, it is unknown to GEORGE and will not be listed by the WHATJOBS command. Information about jobs in the Jobwell can be obtained by using the STATE command.

D.5.3 WHATSTATE (WS)

WHATSTATE jobname,username,ALL
WHATSTATE jobnumber,ALL
         

This command prints information about a specific job at the MOP terminal or, if the command is issued from a background job, writes the information to the monitoring file. The job is either defined by jobname and username or by jobnumber. The jobnumber can be obtained by executing either a WHATJOBS or WHATSTATE command. The information printed is similar to that printed for the WHATJOBS command. However, if the parameter ALL is given, the following additional information is printed:

When a job is in the Secure Jobwell and not yet started, the job is unknown to GEORGE. It is, therefore, not possible to reference such jobs by the WHATSTATE command. The current state of the Jobwell is written to a file at least every 5 minutes and this can be examined by the STATE command.

D.5.4 WHATLIST (WL)

WHATLIST jobname,username

This command lists on the MOP terminal all the files waiting to be output for the job specified. For each file, the username, jobname, peripheral type (an R indicates remote) and filename are output. An example is:

WHATLIST MYMOPJOB,:NTBE34

D.5.5 QUESTION (QN)

QUESTION digit,text40

The command is used to send a question to an operator's console or the monitoring file. The second parameter is the message to be sent. The destination depends on the first parameter as follows:

0  the message is sent to the job's monitoring file.
1  the message is sent to the job's monitoring file and to the local operator's 
   console (for a job submitted at a remote station) or at the central 
   console (if it is submitted centrally).
2  the message is sent to the job's monitoring file and to the
   central operator's console on the 1906A.
3  this is the same as 1 and 2 combined.

The message is repeated periodically until an ANSWER command is given. Until the ANSWER is received, the job is suspended. An example is:

QUESTION 1,HAS TAPE :NTBE34.MYTAPE1 BEEN LOADED

D.5.6 DISPLY (DP)

DISPLY digit,text40

The command is used to send a message to an operator's console or monitoring file. The destination is controlled by the first parameter as in the QUESTION command (D.5.5). The message to be sent is defined by the second parameter. The command can be used by a job to record its progress in the monitoring file. It can also be used as a means of contacting the operators but this should only be done in emergencies. An example is:

DISPLAY  1,MAG TAPE  3001   IS  FINISHED

D.5.7 IPMOP

IPMOP ipname

This macro outputs to the MOP terminal the current value of the installation parameter given in the macro call. For example:

IPMOP JOBTIME

D.5.8 BUDGETQUERY (BQ)

BUDGETQUERY budgettype

This command gives the user information about the budget types he has at his disposal. Full details are given in I.2.2.

D.5.9 SCHED

SCHED WF

This command outputs to a MOP terminal the current value of the High Level Scheduler's WAITFACTOR (I.4.7).

D.5.10 STATE

STATE jobname,username
STATE jobnumber
STATE username
STATE ALL

This command prints out information about the current state of a single job or set of jobs. For each job is printed:

(1) jobnumber
(2) username
(3) jobname
(4) STD if the job has started and WELL if the job is still in the Jobwell
(5) estimated start time
(6) time of submission
(7) JOBTIME requested
(8) MAXSIZE requested

The first two forms of the command give the information about the specified job. The third form gives the information for all the jobs in the system for the specified user. The fourth form is primarily designed for the operator at an RJE station. It gives the information for all the jobs currently in the system. This information is updated at regular intervals (approximately every 5 minutes). The command may only be issued from a MOP terminal or operator's console.

D.5.11 REMOVE

REMOVE jobname,username
REMOVE jobnumber

If the specified job is still in the Secure Jobwell, this command will request the central console operator to abandon the job.

D.6 SCHEDULING

D.6.1 INTRODUCTION

The set of commands in this section is used to control the execution of a program. The user should set the parameters defined here as accurately as possible. If he does not, the processing of the job on the 1906A could be adversely affected.

D.6.2 JOBTIME (JT)

JOBTIME 
JOBTIME integer SECS
JOBTIME integer MINS

If a parameter is given, the command defines the maximum length of time that the complete job will be allowed to execute (this is the time charged to this particular job). If no units are specified, seconds are assumed. Only one call of the command in this form is allowed per job. If this command is not given, a default setting for JOBTIME will be taken (D.1.2). If JOBTIME is exceeded, the job will be stopped and there will be a full print of the monitoring file. It is not possible to recover from this situation. If the command is called with no parameter, it can be used as a means of finding out the amount of JOBTIME used so far in milliseconds. This value is output to the monitoring file. This facility can be useful in estimating the individual times used in a complex job. For example:

JOBTIME 
JOBTIME 120 
JOBTIME 120 SECS 
JOBTIME 2 MINS

To a large extent, the purpose of the JOBTIME command has been taken over by the jdparameter in the JOB or RUNJOB command. The value specified in the JOBTIME command must be less than that given by jdparameter. Users are recommended to use the JOBTIME command only as a means of finding out the JOBTIME used so far.

D.6.3 TIME (TI)

TIME integer SECS
TIME integer MINS

This command sets the program's timer to the specified value. If the program is still executing at the end of this period, the program will be stopped and a TIME UP message sent to the monitoring file. The TIME command may be issued several times in one job and provides a means of controlling the time taken in individual job steps. For object program execution, a default setting for TIME will be taken if none is given (D.1.2).

D.6.4 MEDIA

MEDIA TAPE7,integer,(serialnumber,serialnumber,...)
MEDIA TAPE9,integer,(serialnumber,serialnumber,...)
MEDIA EDS,integer,(integer,integer,...)
         

This command is used to give information about the job's backing store requirements. Scheduling may be done on the basis of this information. A job may be abandoned if it attempts to use more resources than have been requested. A MEDIA command should be issued for each type of backing store required by the job. The first parameter defines the type of device:

TAPE7 7-track tape drive
TAPE9 9-track tape drive
EDS   Exchangeable disc drive (for exofile use)

The second parameter defines the number of devices of that type required at any one time. If several magnetic tapes are to be used one after the other on the same drive, the value 1 is required for the second parameter. The third parameter is optional but should be included if the user has the relevant information. For magnetic tapes, the serial numbers of all the tapes used by the job should be listed. For EDS, the disc pack numbers should be given.

The information provided by the MEDIA command can be of great use to the 1906A operators in locating the magnetic tapes and discs required for a job prior to it being executed.

D.7 DISC AND MAGNETIC TAPE HANDLING

D.7.1 INTRODUCTION

The GEORGE filestore contains two main types of files - basic peripheral files and disc files. On the 1906A, data may be stored on backing store which is not part of the GEORGE filestore. Such data is not secure in the sense that the system does not automatically keep copies of the files. It is left to the user to keep whatever back-up he requires. The two main types in this category are magnetic tapes and exofiles.

An exofile, unlike a disc file in the GEORGE filestore, resides on a specific area of a particular disc pack that has been allocated to the user. It is uniquely defined by the number of the disc pack, together with the name that the user has assigned to it. Full details of how the user obtains exofiles is given in Part R. No record of ownership of an exofile is maintained in the user's directory.

Users may own magnetic tapes in much the same way as they own files. Thus, although the contents of the tape are outside the filestore, a record of the magnetic tape name is entered in a user's filestore directory. The user may, therefore, protect his magnetic tapes from being accessed by other users in much the same way as he protects his files. Full details of how a user obtains a budget for magnetic tapes is given in Part I. Each magnetic tape is identified by the tape header label, which is the first block written to tape. All 9-track tapes at ACL are recorded at 1600 bpi, short gap and odd parity. This is the only mode that can be read and written by ACL's 9-track decks. The 7-track decks at ACL can read and write tapes in a variety of modes. The standard mode is 556 bpi, long gap and odd parity. A user will find that his tape header label has been written in this mode initially. It is strongly recommended that no change is made to the mode of the tape header label and that information is recorded at the standard mode unless there are good reasons for changing.

D.7.2 PARAMETER FORMATS

There is a standard set of terms used in the description of magnetic tapes and exofiles - which is described below. The definitions given here are a simplification of the complete ones.

(1) mtidentifier: a mtidentifier is an identifier which has been defined as the basic name of a magnetic tape.

(2) mtname: a mtname consists of a mtidentifier optionally preceded by a username and a full stop. If present, the username defines the absolute position of the magnetic tape name in the filestore. If no username is given, the magnetic tape name is defined relative to the current directory. For example:

:NTBE34.MAGTAPENAME 
:PSEUD.MAGTAPENAME2

(3) serialnumber: this is a unique octal number allocated to a particular reel of magnetic tape at ACL. For example:

10242

(4) mtdescription: a mtdescription defines the magnetic tape to be used. It can consist of a mtname or a serialnumber enclosed in brackets or a serialnumber and a mtname separated by a comma and enclosed in brackets. For example:

:NTBE34.MAGTAFENAME
(10242)
(10242,MAGTAPENAME)
(10242,:NTBE34.MAGTAPENAME)

(5) dkproperty: dkproperty defines the properties of a magnetic tape deck. The possible properties are:

TRACK7 
TRACK9 
TRACK7 & MODE integer

The first two define a 7 and 9-track deck respectively. At ACL, all 7-track decks are NRZI while all 9-track decks are phase-encoded. The MODE parameter defines properties such as parity and density which are associated with the 7-track deck.

The integer, following MODE, is obtained by adding together the following numbers:

Parity           : Odd   = 4,   Even = 0
Gap-setting      : Short = 8,   Long = 0
Recording density: '800' = 32, '556' = 16, '200' = 0

Short gap is not allowed with 800 bpi density. An example is:

MODE 36

This defines a deck that reads and writes tapes which are 800 bpi, odd parity and have a long gap setting. Some examples of dkproperty are:

PR TRACK7 & MODE 28 
PR TRACK7 
PR TRACK9

(6) exdescription: the exdescription defines an exofile by giving the number of the disc pack and the name assigned to the exofile enclosed in brackets. For example:

(100,MYEXOFILENM)

(7) discfilename: a discfilename consists of an identifier optionally preceded by a username and a full stop. If present, the username defines the absolute position of the disc file in the filestore. If no username is given, the disc name is defined relative to the current directory.

For example:

:PSEUD.MYDISCNM
MYDISCNM
:NTBE34.HISDISC

D.7.3 GETONLINE (GL)

GETONLINE *MT integer,mtname(qualifierlist),PR TRACK7
GETONLINE *MT integer,mtname(qualifierlist),PR TRACK9

This command allocates a magnetic tape from the pool to the current user giving it the name indicated by the second parameter, mtname. The tape is connected to the current program by the peripheral channel specified in the first parameter. Initially, the user is given READ, WRITE and ERASE access traps to the tape. A message USED MT. . . is sent to the monitoring file. This will contain the serial number of the tape which can be used to identify it on future runs, although it is preferable to refer to it by name.

The optional qualifierlist (D.1.2) after the magnetic tape name can be used to set or unset the required traps for the tape. The qualifiers allowed are TRAPGO and TRAPSTOP with the trapmodes READ, WRITE and ERASE. Further details are given in D.1.3.

The third parameter should be used to specify whether a 7 or 9-track tape is required. Some example commands are:

GETONLINE *MT2,MYTAPE2(TRAPGO(:NTBE34,READ)),PR TRACK7 
GETONLINE *MT3,MYTAPE4,PR TRACK9 
GETONLINE *MT4,:NTBE34.MYTAPE5,PR TRACK7

D.7.4 RETURN (RT)

RETURN mtdescription(*MT)

This command returns the tape to the pool and deletes, the magnetic tape name from the user's directory. The user is only allowed to return his own tapes.

D.7.5 RENAME (RN)

RENAME mtdescription(*MT)

The mtidentifier for the tape defined by the first parameter is changed to that defined by the second parameter. The tape being re-named must be owned by the proper user and must have a WRITE trap set. For example:

RENAME :PSEUD.MYOLDNAME,MYNEWNAME

Information held on the tape is lost when it is re-named.

D.7.6 ONLINE (OL)

ONLINE *MT integer(qualifier),mtdescription(qualifierlist.)
ONLINE *MT integer(qualifier),exdescription(qualifierlist.)
         

The first command connects the magnetic tape defined by the second parameter to the current program by the peripheral channel specified in the first parameter. The qualifier may be either READ or WRITE. The magnetic tape defined by mtdescription may have a PROPERTY qualifier. This ensures that the tape to be used has the specified characteristics. The magnetic tape may also be qualified by GIVE. ACL 7-track magnetic tapes will normally have had their tape header labels written in the standard mode (556 bpi, long gap, odd parity). When the tape is ONLINEd, its header label will be read in this standard mode automatically unless a different mode is specified by the PROPERTY qualifier. Therefore, users should not use the PROPERTY qualifier to change the mode unless the tape has a non-standard tape header label. If the tape is to be read or written in a different mode after it has been ONLINEd, the user should call the MODE command. Some example commands are:

ONLINE *MT3(READ),:NTBE34.MYMAGTAPE
ONLINE *MT5,(17777,STRANGETAPE)(PR TRACK7 & MODE28)
ONLINE *MT4,MYMAGTAPE2
ONLINE *MT2,MYTAPE(GIVE)

The second command connects the exofile defined by the second parameter to the current program by the peripheral channel specified in the first parameter. This channel may be qualified by READ, WRITE, OVERLAY or S CRATCH ( R.2.4). The exofile name may be qualified by GIVE. For example:

ONLINE *DA3(READ),(100,MYEXONAME)(GIVE)

D.7.7 CREATE (CE)

CREATE discfilename(*DA,BUCKET digit,KWORDS integer,qualifier)
CREATE !0(*DA,BUCKET digit,KWORDS integer)

D.7.8 GET (GE)

GET mtname(*MT,qualifierlist)

This command allocates a tape from the pool to the current user giving it the name indicated by the parameter. The optional qualifierlist after the magnetic tape name can be used to set or unset the required traps for the tape and to define its characteristics. The qualifiers allowed are TRAPGO and TRAPSTOP with the trapmodes READ, WRITE and ERASE (D.1.3) and PROPERTY. The PROPERTY qualifier should only be used to define TRACK7 or TRACK9 and not change the mode setting on 7-track tape. Some examples are:

GET :NTBE34.MYTAPE2(*MT)
GET MYTAPE(*MT,TRAPGO(:NTBE34,READ),PR TRACK7)

D.7.9 MODE (MO)

MODE *MT integer,M integer

This command changes the mode of operation of the 7-track magnetic tape deck connected to the current program by the peripheral channel specified in the first parameter. The new mode of the deck is defined by the integer in the second parameter. This is obtained by adding together the following numbers:

Parity             : Odd = 4, Even = 0
Gap-setting        : Short 8, Long = 0 
Recording density  : '800' = 32, '556' = 16, '200' = 0
 Short 8, Long = 0 '800' = 32, '556' = 16, '200' = 0
 

Short gap is not allowed with 800 bpi density. The MODE command should be used to change the mode of operation from the standard one. It is recommended that the standard mode of reading and writing tapes (556 bpi, long gap and odd parity) should be used where possible.

D.8 MISCELLANEOUS

D.8.1 REPORT (RP)

REPORT actiononmf
         

The output sent to a MOP terminal is a subset of the items sent to the monitoring file. The REPORT command specifies the selection of the monitoring file to be output at the MOP terminal during the execution of a MOP job. If no parameter is given, the default setting is equivalent to:

REPORT ALLBUT,COMMANDS,OPERATOR

This default setting is preset when a MOP terminal is engaged. The effect of a REPORT command continues until another REPORT command is obeyed or LOGOUT. For example:

REPORT NONE 
LOGOUT
REPORT COMERR 
LOGOUT

Either will stop the statistics which appear after a LOGOUT command. The second is preferable if the user may have broken-in. Reporting the category COMMANDS at a MOP console is sometimes a useful aid to debugging a macro (but very slow).

D.8.2 TRACE (TA)

TRACE actiononmf

This command limits the output to the job's monitoring file to a specified set of categories. The TRACE command will have no effect if the FULLTRACE command has already been issued in the job. The installation parameter, MINTRACE, specifies the minimum set of categories that must be sent to the monitoring file. The installation parameters JOBTRACE (background jobs) and MOPTRACE (MOP jobs) define the categories of output being sent to the monitoring file when a job is started. If a TRACE command is obeyed at a lower command processor level, the effect of the TRACE command is concluded when control returns to the higher processor level.

D.8.3 FULLTRACE (FT)

FULLTRACE

All categories of output are sent to the monitoring file. Future TRACE commands will have no effect. The effect will hold until the end of the job is reached.

D.8.4 SECURITY (SE)

SECURITY HIGH
SECURITY NORMAL

This command resets the security level of the current proper user. Users are initially set at NORMAL security. The only difference between the two levels of security is that HIGH security users cannot input from a batch peripheral. A user can, therefore, ensure that somebody does not input into his filestore.

D.8.5 CONTINUE (CU)

CONTINUE

This command finishes a break-in and continues the job from the point at which the break-in occurred.

D.8.6 QUIT (QU)

QUIT

This command finishes a break-in and returns control to the top command processor level. If the user was logged-in before the QUIT was obeyed he will remain so. The core image, if any, will be deleted.

D.8.7 ON

ON integer,integer,...
         

Word 30 of a core image is called the switch word. This can be set and modified by GEORGE and user programs. This command sets the specified bits of the switch word ON. The bits may be tested both by GEORGE and within user programs (see Part L for service routines).

D.8.8 OFF (OF)

OFF integer,integer,...
         

The command sets the specified bits of the switch word OFF.

D.8.9 XQUIET (XQ)

XQUIET

This command will replace all messages to a MOP terminal in the category COMERR (command error) by:

EH?

The messages will be output even if the REPORT command has not specified this class. The command does not affect the messages sent to the monitoring file. The command is cancelled by LOGOUT or CANCEL XQUIET.

D.8.10 XPRINTLAST (XP)

XPRINTLAST

This command is used with the XQUIET command and will cause the last monitoring file message to be printed at the terminal in full. Note this need not be the last error message produced.

D.8.11 CANCEL XQUIET (CC XQ)

CANCEL XQUIET

This command cancels the effect of XQUIET. All messages will now appear in full.

D.9 MACRO WRITING

D.9.1 MACRO DEFINITION

The GEORGE commands give the user most of the facilities he requires for controlling files and running programs. However, it has already been seen in the case of job description files that it is convenient to store a set of commands in a file and obey them from there rather than have to input the commands each time. The job description file is rather special in that it defines the set of commands in a complete job. Frequently, the user may require the same set of commands to be issued in sequence from a number of jobs. The simplest example is the MOP job. A user may wish to issue the same set of commands each time he logs in. Inputting the commands can be tedious as well as being liable to error. The macro facility allows a set of commands to be stored in a file and obeyed from there. The name of the file is defined as the macro name and, in the simplest case, it is only necessary to input the name of the macro for the set of commands to be obeyed. In effect, the user has extended the command language by defining a new command in terms of the existing ones. Consider, for example, the user who needs to list certain parts of a number of files frequently. The commands could be stored in a file, as follows:

INPUT LISTALL,T////
LISTFILE MYFIRST,*LP,FROM 50,LINES   200
LISTFILE MYSECOND,*LP,NUMBER
LISTFILE MYTHIRD,*CP,FROM 200
EXIT
////

To list the three files the user need only input:

LISTALL

To some extent, the macro is the command language equivalent of the subroutine. Just as a subroutine may contain basic statements or calls to other subroutines, so a macro command can consist of both commands and macro calls. The power of the macro facility is considerably enhanced by allowing macros to have parameters just as subroutines have arguments. In many ways, the parameter passing is more flexible than most high level languages. Parameters can be omitted and it is not always necessary for them to appear in a fixed order.

The standard method of creating a macro is by using the INPUT command. The T terminator is used to prevent the specified terminator from being stored as part of the file. If this is not done, the terminator will be obeyed as though it were a GEORGE command which will, most likely, produce a command error.

The user must have EXECUTE access to any macro file he obeys. This will automatically be given to the owner of the file when the macro is created. It can be given to another user by issuing a TRAPGO command. For example:

TRAPGO LISTALL,:NTBE34,EXECUTE

This would allow the macro LISTALL to be accessed by the user :NTBE34. In general, other users must access the macro by using the OBEY command. If the macro LISTALL is owned by :NTBE33, the user (:NTBE34) would access it by:

OBEY :NTBE33.LISTALL

However, there are exceptions to this rule. If the macro belongs to the special system user, :MACROS, any user may access it by just giving its name as long as he has EXECUTE access. Most system macros, such as TASK, are kept in :MACROS for this reason. The other exception is that a user may access macros in superior directories to his current directory just by giving the name. The command decoding part of GEORGE proceeds as follows:

(1) Check to see if it is a built-in GEORGE command.

(2) If not, search the job's current directory for a macro with this name.

(3) If no macro is found, the directory of :MACROS is searched.

(4) If no macro is found, the superior user's directory is searched and then its superior and so on.

D.9.2 MACRO PARAMETERS

The format of a macro call is quite similar to a GEORGE command. The macro call consists of an optional label preceding the name of the macro which may be followed by one or more parameters separated by commas. There must be at least one space between the macro name and the first parameter if it is present. This restriction does mean that macro names are not allowed to contain spaces. There is a limit of 24 on the number of parameters that a macro may have. There is no formal method of defining the parameters at the head of the macro definition. Instead, parameters are accessed from within the macro with the necessary checks for legality being carried out at the time the macro is executed. The macro may contain calls to other macros and it may call itself recursively. However, there is a limit of 24 on the number of levels existing as a result of one macro calling another. These different levels are called 'command processor levels'. The JOB command is obeyed at command processor level 0 while the commands in the job description are at level 1. The level at which commands are currently being obeyed is called the current command processor level.

At each command processor level there exists a complete set of 24 parameters. When a macro is called, a new command processor level is set up and a new set of 24 parameters is created. These can, in some sense, be thought of as 24 local variables. If there are less than 24 actual parameters in the macro call, the missing parameters at the new level are set null.

As well as the 24 local parameters for each level, there are 2 global parameters which are the jobname and username of the current job. These can be thought of as being the 25th and 26th local parameter for every command processor level. Whereas it is possible to alter the other parameters, the user should not change these parameters.

When a macro terminates, control returns to the next higher processor level and the parameters at the lower level are destroyed. If, subsequently, this lower level is entered by a macro call, the old parameter values will not be available.

D.9.3 REFERENCING MACRO PARAMETERS

There are four different ways of referencing a parameter within a macro. All four represent the parameter by a parameter identifier consisting of the % symbol followed by other characters. The four types are:

(1) A % symbol followed by a letter of the alphabet. The parameters 1 to 24 are represented by %A to %X while %Y and %Z refer to the jobname and username (less the: colon) respectively. Consider the macro defined by:

INPUT LISTRUN.T////
LISTFILE %B,*LP
RUNJOB %Y-2,%A,JD(JT  30  SECS)
EXIT
////

This macro could be called from the job, named MYJOB, by the command:

LISTRUN JDFILE,DATFILE

The commands executed would be:

LISTFILE DATFILE,*LP
RUNJOB MYJOB-2,JDFILE,JD(JT  30  SECS)
EXIT

(2) A % symbol followed by a string enclosed in round brackets. The string must be the initial characters of one of the parameters. The actual parameter is taken as the remaining characters. Consider the macro defined by:

INPUT LISTRUN,T//// 
LISTFILE %(*DT),*LP 
RUNJOB %Y-2,%(*DS),JD(JT 30 SECS)
EXIT
////

The same commands as above would be executed for either of the macro calls:

LISTRUN *DT DATFILE,*DS JDFILE 
LISTRUN *DS JDFILE,*DT DATFILE

This method does allow some flexibility in the parameter ordering. If several parameters exist with the initial string given in the parameter identifier, the first to appear is taken. If no parameters with the initial string are given, a null parameter is used.

(3) A % symbol followed by an integer and then a string enclosed in brackets. The string must be the initial characters of one or more parameters. The integer defines which of the parameters with this initial string should be used. The integer 1 refers to the first parameter with this initial string and so on. Consider the macro defined by:

INPUT LISTRUN,T////
LISTFILE %2(*FL),*LP
RUNJOB   %Y-2,%1(*FL),JD(JT 30 SECS)
EXIT
////

The same commands as above would be executed for the macro call:

LISTRUN *FL JDFILE,*FL DATFILE

(4) A % symbol followed by one of the possible formats of newvalue enclosed by ; symbols. The expression, newvalue, is evaluated and its result replaces the parameter. Full details of the formats for newvalue are given in the next section. A simple example is the command:

DISPLAY 1,%;DATE;

In this case, the value is the character string representing the current date (11MAY73, for example). Therefore, the command would be obeyed as:

DISPLAY 1,11MAY73

Two % symbols together are replaced by a single % symbol.

When a macro is entered, some or all of the 24 parameters will have values assigned to them depending on the form of the macro call. Within the macro, all 24 parameters may be used as local variables. The values of these variables can be set locally by the SETPARAM command. The user may reset the value of any of the parameters assigned values on entry (except %Y and %Z). Parameter values normally consist of a string although, if the string is a numerical expression, it may be possible to perform integer arithmetic operations on it.

In the following sections, a set of GEORGE commands will be described which are mainly of use in macros.

D.9.4 SETPARAM (SP)

SETPARAM (SP)

The value, defined by the second parameter, is assigned to the parameter variable, defined by the first parameter. The command can be used either to set the value of a parameter variable, initially, or to reset an existing value.

Both parameters of the command make use of an 'enclosed string' as a possible value. The required string is enclosed between either round brackets, quotes, primes, / or ? symbols. Many alternatives are allowed to ensure that the symbols themselves may be included in the strings. In general, it is immaterial which delimiters are used. All the following enclosed strings are identical:

/ABC/
?ABC?
(ABC)
"ABC"

For newvalue, only quotes or brackets should be used as delimiters.

The first parameter, parameterid, names the parameter variable to be assigned. The possible values are:

(1) An alphabetic character between A and X which corresponds to the equivalent parameter between 1 and 24 of the current processor level.

(2) An enclosed string possibly preceded by an integer. If the integer is missing, 1 is assumed. The parameters at the current processor level are examined to see which have values starting with the specified string. The integer defines which of these is to be used. Consider the following call of the macro FRED:

FRED *CR A,*CR X

Both B and 2(*CR) used as the first parameter of SETPARAM commands within the macro FRED will refer to the second parameter variable which contains the value ACR X.

(3) An @ symbol followed by an alphabetic character between A and X. This defines a parameter between 1 and 24 at the current processor level which should contain one of these parameterid forms as its value. This defines a parameter variable at the processor level one above.

If the current processor level has the first parameter variable set to B, the parameterid A will reference the second variable at the processor level one above. The value of the processor variable could include an @ symbol. In this case, it will define a parameter variable at the processor level one above, which should contain a value defining the variable to be referenced at a level two above!

(4) An @ symbol followed by an optional integer and then an enclosed string. The parameter after the @ symbol defines a parameter variable at the current processor level as in (2). This contains a value, as in (3), which defines a parameter variable at the processor level one above.

The second parameter, newvalue, defines the value to be assigned. Several of the possibilities have a pair of integers separated by a comma and enclosed in round brackets as an optional qualifier. The first part of the parameter defines a value which consists of a text string. If the qualifier is present, it defines the inclusive part of the text string to be taken as the value. For example, if the text string is ABDCE, the qualifier (2,4) will cause the value to be set to the 2nd character to 4th character inclusive, BDC. The possible forms of newvalue are:

(a) An enclosed string. The string, ignoring any leading and trailing spaces, is the value.

(b) MESSAGE ((integer,integer)) . The required value is some part of the current program event message. For example, after:

HALTED: EE

the command:

SETPARAM A,MESSAGE

would set the first parameter to the value EE.

(c) DISPLAY (integer,integer). The required value is some part of the current display. For example:

DISPLAY 0,XYZ 
SETPARAM A,DISPLAY

This would set the first parameter to XYZ.

(d) REPLY((integer,integer)). The required value is some part of the last message sent to the monitoring system. For example:

RETRIEVE MYFILE 
SETPARAM A,REPLY

This would set the first parameter to the value

:NTBE34.MYFILE IS ALREADY ONLINE 

if the file did not require retrieving.

(e) VALUE enclosed string. The required value is the enclosed string] evaluated as a number. For example:

SETPARAM A,"3+2" 
SETPARAM B,VALUE "%A+5"

This would evaluate "3+2+5" to give the value 10.

(f) INSTPARA(installation parameter). The required value is the current value of the specified installation parameter. For example:

SETPARAM A,INSTPARA(JOBTIME)

This would set the first parameter to the current default value of JOBTIME.

(g) DATE. The required value is the current date in the format DDMMMYY. The characters MMM refer to the three alphabetic characters defining the month. A typical value might be 12MAR/3.

(h) TIME. The required value is the current time in the format HH.MM.SS.

(i) JOB. The required value is the current jobname.

(j) USER. The required value is the current username.

(k) SIZE. The required value is set to the current size of the core image.

D.9.5 COMMAND DELIMITERS

In a macro or job description file, any string of characters at the start of a line may be interpreted as a label if it has the correct format. However, this may not have been the user's intention. Consider the following statements appearing in a macro:

INPUT DATA,T//// 
15ABC
////
TASK FORTRAN,*CR PROG,#CR1  DATA,-
20SECS

As both 15ABC and 20SECS are legal label formats, it would be possible for an inadvertent branch to one of these lines to occur.

To avoid this, a set of commands may be surrounded by command delimiters which make the set of commands appear like a single command. In this case, only the first command of the set may have a label on it. The standard delimiters are (((( and )))) although they can be changed by the BRACKETS command. The two delimiters are known as the starter and stopper respectively. They must appear on lines by themselves. The part of the macro given above could be rewritten to avoid the two lines being mistaken as labels as follows:

((((
INPUT DATA.T//// 
15ABC
////
))))
((((
TASK FORTRAN,*CR PROG,#CR1  DATA,-
20SECS
))))

The delimiters should never be reset so that the starter and stopper are the same.

D.9.6 GOTO (GO)

GOTO label

This command causes control in the macro or job description file to transfer to the labelled command. As long as the label is defined in the current file, the action is straightforward. The effect, however, can be quite complex if either the label is not present in the current file or more than one label with that name exists. The search for the label is as follows:

(1) If the GOTO command is between command delimiters, the search starts from the command after the stopper; otherwise the search starts from the statement following the GOTO command.

(2) The search goes forward to the end of the file and, if this is reached without the label being found, the search starts at the beginning of the file and continues up to the GOTO command.

(3) If the label is not found in the current file, the file at the command processor level one higher is searched in the same way. That is going forward first from the command which called the lowest command processor level. If the command which called the lowest level is between delimiters, the search starts at the command immediately after the stopper.

(4) If the label is not found at this level, the process is repeated for the file at the command processor level one higher and so on until the top level is reached. If the label is not found anywhere, a command error is issued.

For all files, the lines between delimiters, except the first, are ignored. If more than one label exists with a particular name, the search will stop at the first one encountered. The GOTO command is not very efficient and it is preferable to use repeated IP's where possible. While searching for labels, parameter substitution is not carried out, For example:

SETPARAM A,"END" 
GOTO 2END
....
2%A

The label 2END would not be found.

D.9.7 WHENEVER (WE)

WHENEVER COMERR,command
WHENEVER COMMAND ERROR,command
WHENEVER BREAKIN,command
         

This command sets a trap for one of two occurrences during the execution of a macro. The first two formats are equivalent. The command given as the second parameter is executed when the condition given as the first parameter occurs. If the second parameter is omitted, no action is taken. The two occurrences are a command error and a user breaking-in at a MOP terminal.

For each command processor level, not more than one WHENEVER command can be operable of each type. Thus a second WHENEVER command executed at the same command processor level will overwrite the action of the first. If a lower command processor level is entered, the WHENEVER commands from the higher level will be effective until a WHENEVER command is executed at this level. On leaving a lower level, the WHENEVER traps set at this level are lost. Each WHENEVER trap is valid for only one occurrence of that event. Once this has taken place, it is as though no WHENEVER command of this type has been executed at this level (WHENEVER commands at higher levels may still be operable).

For example:

WHENEVER COMERR 
ERASE FRED 
ERASE  BILL

If the file FRED does not exist, a command error will cause the WHENEVER command to be obeyed (the action is null). If the file BILL does not exist, the only WHENEVER COMERR traps that can be effective must be on a higher level.

If there is a command error and no trap has been set for it, GEORGE will simulate a break-in. As long as a user at a terminal has not already broken-in, he will receive the message:

BROKEN IN AFTER command  IN macro

If the user has already broken-in, the macro is abandoned.

The WHENEVER COMMAND ERROR command is peculiar in that it is analysed initially when it is first obeyed. If a command error occurs, it analyses the command a second time before obeying it. To jump to a label defined as a parameter therefore requires:

WHENEVER COMMAND ERROR,   GOTO  %%A

The first analysis changes %% to % and the second will cause the jump to the current value of %A.

D.9.8 EXIT (EX)

EXIT

This command stops the current macro level and returns control to the command following the macro call at the next higher level.

D.9.9 IF

IF condition, command
IF condition, (command1) ELSE (command2)

The command parameters may be any GEORGE command. In the first form, if the condition is true, the command is obeyed, while in the second form the first or second command is obeyed depending on whether the condition is true or false. The possible condition parameters are given below. For tests on enclosedstring, spaces are only significant if the string is enclosed in quotes or apostrophes. Brackets are recommended as the string delimiters.

(1) PRESENT enclosedstring: tests for the presence of a parameter whose value starts with the characters given by the enclosedstring. For example:

IF PRESENT (*CR), GOTO 3END

(2) ABSENT enclosedstring: tests for the absence,of a parameter whose value starts with the characters given by the enclosedstring. For example:

IF ABSENT "*CP", GOTO 3END

(3) STRING enclosedstring = enclosedstring: tests for the two enclosedstrings being identical. For example:

IF STRING (%A) = (*CR), GOTO 3END

The = symbol may be replaced by either the < or > symbol. In the first case, the condition is true if, for all its characters, the first parameter is the same as the second. In the second case, the condition is true if, for all its characters, the second parameter is the same as the first. For example, the commands below will cause the jump to label 3END to occur:

IF STRING (ABC) = (ABC), GOTO 3END
IF STRING (ABC) < (ABCD), GOTO SEND
IF STRING (ABCD) > (ABC), GOTO 3END

(4) ZERO(expression)
POSITIVE(expression)
NEGATIVE(expression)
The condition is true if the expression containing parameters and integers has the value specified. For example:

IF ZERO(%A+%B), GOTO 3END 
IF POSITIVE(%A-3), GOTO 3END 
IF NEGATIVE(%A-7),GOTO 3END

POSITIVE is defined as greater than but not equal to zero.

(5) EXISTS(anyfilename): the condition is true if the specified file exists. For example:

IF EXISTS(FRED), GOTO 3END

(6) DISPLAY enclosedstring: the condition is true if the last display starts with the specified string. If no string is present,; the result is true if any display has been given. For example:

IF DISPLAY (END), GOTO 3END

(7) REPLY enclosedstring: the condition is true if the last reply starts with the specified string. If no string is present, the result is true if any reply has been given. For example:

IF REPLY (ERROR), GOTO 3END

(8) TRUE
FALSE
These conditions always have the expected result. Their main use is to force a second parameter substitution. For example:

IF TRUE, FRED %A

If the first parameter contains %B and the second parameter contains 3, the command will be obeyed as:

IF TRUE, FRED %B

This will cause the macro to be obeyed as:

FRED  3

(9) MOP
CORE
USER
The condition is true if the current context is MOP, COREIMAGE or USER respectively. For example:

IF MOP, GOTO 3END'

(10) DELETED enclosedstring: the condition is true if the program has been deleted with the message starting with the string given. If no string is present, the result is true if the program has been deleted. For example:

IF DELETED (ZZ), GOTO 3END

(11) HALTED enclosedstring: similar to DELETED above except depending on the program being halted.

(12) FAILED enclosedstring: similar to DELETED above except depending on program failures. The possible failures that may occur are:

(a)	ILLEGAL INSTRUCTION
(b)	FILE *CR2 EXHAUSTED
(c)	OUTPUT *LP2 FILE FULL
(d)	OUTPUT *LP2 LIMIT
(e)	ONLINE *MT2 FAIL
(f)	TIME UP
(g)	UNALLOCATED *CR2
(h)	ILLEGAL: BEGINNING OF FILE VIOLATION
(i)	ILLEGAL: BUFFER OUT OF RESERVATIONS
(j)	ILLEGAL: CONT FAILURE
(k)	ILLEGAL: CONTROL AREA OUT OF RESERVATIONS
(1)	ILLEGAL: COUNT OUT OF RANGE
(m)	ILLEGAL: END OF FILE VIOLATION
(n)	ILLEGAL: INVALID CONTROL AREA WORD n
(o)	ILLEGAL: MODE IN ERROR
(p)	ILLEGAL: MODE NOT AVAILABLE ON THIS UNIT
(q)	ILLEGAL: MODE NOT RECOGNISED
(r)	ILLEGAL: MODE SEQUENCE ERROR
(s)	ILLEGAL: MODES INCOMPATIBLE
(t)	ILLEGAL: MT HAS NO WPR
(u)	ILLEGAL: NO CSN IN WORD n
(v)	ILLEGAL: PERIPHERAL ALREADY OPENED
(wj	ILLEGAL: RESERVATION VIOLATION
(x)	ILLEGAL: WRITING NOT PERMITTED
(y)	PARITY FAILURE

Particular examples of peripheral names have been written in the formats. Any appropriate peripheral name is allowed.

(13) ON integer: the condition is true if the specified bit of the switch word is set and a core image exists.

(14) FINISH: the condition is true if a FINISH command has been issued previously and has not been cancelled.

For all the conditions described above, only the first three characters of the initial word are significant. For example:

IF FAI(ILLEGAL:RES), GOTO 3END

Notice that as spaces are not significant in the test on the string, the space between ILLEGAL: and RESERVATION may be omitted.

More complex tests can be obtained by forming logical expressions involving the operators AND, OR and NOT. These must be separated from other words by at least one space. The normal precedence of NOT being stronger than AND which is stronger than OR applies. For example:

IF PRESENT (*CR) AND NOT STRING (%(*CR)) = (FRED), GOTO 3END

The jump is made if there is at least one parameter ACR and the first *CR parameter is not *CR FRED.

D.9.10 HALT (HT)

HALT text40
         

The HALT command produces a pseudo program event of the category HALTED. If a text parameter is present, this string is written to the monitoring file system. The text may be up to 40 characters in length. Effectively, the command changes the way a program has terminated. Suppose, for example, the job description file calls a macro containing the following commands:

ENTER. . .
IF FAILED, HALT YZ
EXIT

If the program initiated by the ENTER command fails, the IF statement following will make it appear as though it terminated on a HALT. On returning to the job description file, there will be no difference from the situation when the program ended on a genuine HALT.

D.9.11 BRACKETS (BR)

BRACKETS starter,stopper

This command changes one or both of the command delimiters at the current command processor level. If either parameter is null, the current delimiter is left unchanged. The starter and stopper must be different and should be four characters in length (characters must not be space, comma, #, -, or % ).

Care should be taken when using the command to remember that the effect only comes into force when the statement is obeyed. For example:

GOTO 2SECS 
.....
BRACKETS  <<<<,>>>>
<<<<
TASK FORTRAN,*CR PROG,-
2SECS
>>>>

If the BRACKETS command has not been obeyed when the GOTO is executed, the old delimiters will be in use and, therefore, a jump to the TASK command will take place incorrectly.

D.9.12 FAIL (FA)

FAIL text40

This command is similar to the HALT command defined above. The command generates a pseudo program event of the category FAILED. can be used to make it appear as though a program has failed.

D.9.13 CREATE (CE)

CREATE !

This command creates a new workfile at the top of the workfile stack of indeterminate type. The type is determined when a command refers to it. For example:

ASSIGN *LP,!

All workfiles must be created before they are used.

The CREATE command is also used for creating direct access files. This is described in Chapter 7.

D.9.14 RELEASE (RL)

RELEASE periname

This command releases a peripheral from the current core image. For an output peripheral this will mean that the document can be printed or punched if a LISTFILE command has been executed. For efficiency, peripherals should be released as soon as they are no longer required. Output is not secure on a machine break until after the RELEASE has taken place. An example is:

RELEASE *LP2

D.9.15 XMAKEFILE (XM)

XMAKEFILE parameterlist

This command generates a workfile with each parameter as a separate record in the file. If the parameter is enclosed between " symbols, these are removed and not included in the file. For example:

XMAKEFILE "FILE1,FILE1",DEF,//// 

This will produce a file:

FILE1,FILE 1 
DEF
////

Its main use is for producing macros which call system macros, such as COPYIN, which require parameters to come from a file. Consider, for example, the following COPY macro:

XMAKEFILE "%A,%A","%B,%B",//// 
COPYIN %C,*CR!,T//// 
ERASE ! 
EXIT

The macro call might be:

COPY FILE1,FILE2,MYTAPE

This will copy files FILE1 and FILE2 into the filestore from the magnetic tape, MYTAPE.

D.10 ALPHABETIC LIST OF COMMANDS

The complete set of user commands with their abbreviations is given below. Commands marked with a * are significantly different at ACL from a standard GEORGE 4 site. The commands may only be available at ACL. The second column gives the section in Part D where a fuller description can be found.

AL  4.8   ALTER integer,octalinteger
          ALTER integer,integer
          ALTER integer,instruction
          ALTER PURE integer,octalinteger
          ALTER PURE integer,integer
          ALTER PURE integer,instruction
AR  3.14   ARCHIVE filename,filename,filename...
AS  4.7    ASSIGN periname,anyfilename(qualifierlist)
          ASSIGN anyfilename(qualifierlist),periname
BR  9.11   BRACKETS starter,stopper
BQ  5.8    BUDGETQUERY budgettype
cc  3.13   CANCEL RETRIEVE filename
CC  8.11   CANCEL XQUIET
CN  4.10   CONNECT jobname,actiononmf,RETAIN(fileidentifier)
          CONNECT jobname,username
CU  8.5    CONTINUE
CY  3.6    COPY anyfilename,anyfilename(qualifierlist)
          CORRECT glfileidentifier,/ languagecode
CE  7.7    CREATE discfilename(*DA,BUCKET digit,KWORDS integer,qualifier)
          CREATE !0(*DA,BUCKET digit,KWORDS integer)
    9.13   CREATE !
DL  4.5    DELETE text40
DY  3.10   DIRECTORY username
          DIRECTORY filename
DC  4.11   DISCONNECT
DP  5.6    DISPLY digit,text40
ED  3.4    EDIT oldfile
          EDIT oldfile,newfile,editfile
EJ  2.2    ENDJOB actiononmf,RETAIN(fileidentifier)
EN  4.4    ENTER digit,parameterlist
          ENTER
ER  3.8    ERASE anyfilename
EX  9.8    EXIT
FA  9.12   FAIL text40
FT  8.3    FULLTRACE
GE  7.8    GET mtname(*MT,qualifierlist)
GL  7.3    GETONLINE *MT integer,mtname(qualifierlist),PR TRACK7
          GETONLINE *MT integer,mtname(qualifierlist),PR TRACK9
GO  9.6    GOTO label
HT  9.10   HALT text40
          IF condition, command
          IF condition, (command1) ELSE (command2)
IN* 3.2    INPUT username,anyfilename(qualifierlist) ,mode,terminator
          IPMOP ipname
JB  2.1    JOB jobname,username,terminator,MODE(mode),parameterlist,jdparameter
          JOB username,jobname,terminator,MODE(mode),parameterlist,jdparameter
JT* 6.2    JOBTIME 
          JOBTIME integer SECS
          JOBTIME integer MINS
LD  3.11   LISTDIR filename,LOW,*LP
          LISTDIR filename,HIGH,*LP
LF* 3.3    LISTFILE anyfilename ,outtype,FROM integer,LINES integer,NUMBER,ALL,PROPERTY propertyname
LO  4.2    LOAD anyfilename,SIZE integer
LN  2.4    LOGIN jobname,username
LO  4.2    LOGOUT actiononmf,RETAIN(fileidentifier)
MK  3.9    MAKEDIR filename,username,PSEUDO
MZ  4.13   MAXSIZE integer
    6.4    MEDIA TAPE7,integer,(serialnumber,serialnumber,...)
           MEDIA TAPE9,integer,(serialnumber,serialnumber,...)
           MEDIA EDS,integer,(integer,integer,...) 
    7.9    MODE *MT integer,M integer
NP  2.6    NEWPASSWORD text12
OB  2.7    OBEY anyfilename,parameterlist
OF  8.8    OFF integer,integer,...
          ON integer,integer,...
OL* 7.6    ONLINE *MT integer(qualifier),mtdescription(qualifierlist.)
          ONLINE *MT integer(qualifier),exdescription(qualifierlist.)
PT  4.9    PRINT region,region,....
          PRINT anyfilename,REGION(region,region,....)
          PRINT anyfilename,ALL
QN  5.5    QUESTION digit,text40
QU  8.6    QUIT
RL  9.14   RELEASE periname
          REMOVE jobname,username
          REMOVE jobnumber
RN  3.7    RENAME filename,localname
    7.5    RENAME mtdescription(*MT)
RP  8.1    REPORT actiononmf
RM  4.6    RESUME anyfilename,integer,parameterlist
          RESUME integer,parameterlist
RV  3.12   RETRIEVE filename,filename,filename...
RT  7.4    RETURN mtdescription(*MT)
RJ  2.3    RUNJOB username,jobname,filename,parameterlist,jdparameter
          RUNJOB jobname,username,filename,parameterlist,jdparameter
SV  4.3    SAVE anyfilename(qualifierlst),*CP
          SAVE anyfilename(qualifierlst),*DA
SE  8.4    SECURITY HIGH
          SECURITY NORMAL
SP  9.4    SETPARAM (SP)
    5.9    SCHED WF
SZ  4.12   SIZE integer
    5.10   STATE jobname,username
          STATE jobnumber
          STATE username
          STATE ALL
TI  6.3    TIME integer SECS
          TIME integer MINS
TA  8.2    TRACE actiononmf
TC  3.17   TRAPCHECK filename,username
          TRAPCHECK filename,:MANAGER,GROUP
TG  3.15   TRAPGO filename,username,trapmode,trapmode...
TS  3.16   TRAPSTOP filename,username,trapmode,trapmode...
WJ  5.2    WHATJOBS ALL
WL  5.4    WHATLIST jobname,username
WS* 5.3    WHATSTATE jobname,username,ALL
          WHATSTATE jobnumber,ALL
WE  9.7    WHENEVER COMERR,command
          WHENEVER COMMAND ERROR,command
          WHENEVER BREAKIN,command
XM* 9.15   XMAKEFILE parameterlist
XP* 8.10   XPRINTLAST
XQ* 8.9    XQUIET
⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site