Subsystem maintenance utilities
This package is a collection of utility commands which are primarily
intended for supporting and maintaining the Edinburgh Subsystem.
Subjects covered are:
1 Updating members of pdfiles
2 Messages of the day
3 Altering the ALERT time
4 Subsystem basefiles
5 Subsystem option files
6 Checking partitioned files
Updating members of pdfiles
The command UPDATEPD is used to add a new member to, update an
existing member in, or delete a member from, a pdfile which may be in
use by other processes.
The command takes the form:
UPDATEPD(pdfile_member,option)
where:-
pdfile_member - specifies the member to be operated on
option - if null, the member must already exist
- if N, the member must not already
exist
- if D, the old member is simply deleted
It is assumed that any file which is to be a replacement for a member
has the same name as the member itself, and resides in the same
process.
Since the most common use of this utility is to update members of
SUBSYS.SYSTEM, the pdfile part of the parameter defaults to SYSTEM.
Messages of the day
Three commands are provided to alter the 'messages of the day' which
are displayed at process start-up. These are described in the
following Sections:
Changing the foreground message
The command SETFMESS is used to change the 'message of the day'
displayed to foreground users when they log on. This special command
is necessary to avoid problems if the file is currently in use, and to
avoid disturbing the first line of the message, which always carries
the date and time of the most recent ALERT text.
SETFMESS takes no parameters. The user is prompted for the message,
which should be terminated by a colon (:) on a line on its own. An
opportunity is then given to amend the message if it is not
satisfactory.
Changing the background message
The command SETBMESS is used to change the 'message of the day'
displayed to background users when their job starts. This special
command is necessary to avoid problems if the file is currently in
use, and to avoid disturbing the first line of the message, which
always carries the date and time of the most recent ALERT text.
SETBMESS takes no parameters. The user is prompted for the message,
which should be terminated by a colon (:) on a line on its own. An
opportunity is then given to amend the message if it is not
satisfactory.
Changing both messages
The command SETBOTH is used to change both 'messages of the day'
displayed to users on process start-up. This special command is
necessary to avoid problems if the file is currently in use, and to
avoid disturbing the first line of the message, which always carries
the date and time of the most recent ALERT text.
SETBOTH takes no parameters. The user is prompted for the message,
which should be terminated by a colon (:) on a line on its own. An
opportunity is then given to amend the message if it is not
satisfactory.
Altering the ALERT time
The command SETALERT is used to alter the date and time given in the
'Latest ALERT' message which forms a permanent part of the message of
the day, for both foreground and background users.
SETALERT takes up to two parameters:-
1) The time to be used in the message. Exactly four characters are
expected, i.e.: hhmm. If this parameter is omitted, a prompt is
issued for it.
2) The date to be used in the message. Standard EMAS date format is
assumed, i.e.: dd/mm/yy. If this parameter is omitted, the
current date is assumed.
Subsystem basefiles
The subsystem resides in a file which is commonly called the
'basefile'.
This Section describes the structure of the basefile, and how to
create a new one.
Basefile structure
The basefile for the subsystem is a partitioned file which contains
three members:
a) The subsystem object file, with the code fixed up (using the FIX
utility) to start at segment 32, and the GLA fixed up to start at
the next free segment after the code.
b) A default 'option' file, connected and used in the absence of the
user's own option file. When the user sets a non-default option, a
copy of the default file is made (as SS#OPT), and the modified
option included in the copy.
c) A directory file, containing the entry points found in the
subsystem object file. This is the first directory searched by the
loader.
The MAKEBASEFILE command
This command takes up to four parameters. These are:
1) The name of the subsystem object file to be used for input.
2) The name of the default option file to be included in the completed
basefile.
3) The destination of the completed basefile.
4) The type of loader used by the basefile. Possible values are:
OLD or NEW
If any of these parameters is omitted, a prompt is issued for it.
Subsystem option files
The subsystem makes use of a file containing 'options' set by the user
to tailor his process to his own needs. This Section describes how the
initial option file used by the Subsystem is created, and explains the
entries in it.
Making the file
The command MAKEOPTIONFILE takes a single parameter, which is the name
of the option file to be generated. If this parameter is omitted, a
prompt is issued for it.
A series of prompts is then issued. A value for the appropriate option
may then be given, or the default setting invoked by simply typing
'return'.
The default setting is displayed in brackets as part of the prompt.
The only exception to all this is the initial PARM setting - see
Section 5.2.1.
Description of options
Some of the values stored in the option file are integers, and others
are strings. Generally, they describe items such as the size of a
particular workfile, terminal characteristics, directory search lists,
etc.
The rest of this Section describes each option in detail.
Initial PARM setting
The value of this option is made the current PARM setting at log-on.
MAKEOPTIONFILE uses the value actually in force when the option file
is being created, as this saves it from having to decode large numbers
of PARM keywords.
Auxiliary stack size
The auxiliary stack is a separate file which is used to store large
data areas in user programs, due to the limitations on the size of the
run-time stack in the ICL 2900 series.
Keyword: AUXSTACKSIZE
Default value: 128 Kbytes
Initialised stack size
The initialised stack is a pre-allocated part of the user stack. It
must be at least 32 Kbytes smaller than the user stack as a whole. It
is used as a data area by FORTRAN programs, but need only be
pre-allocated if it is intended to load FORTRAN programs from other
programs.
Keyword: INITSTACKSIZE
Default value: 100 Kbytes
Interactive terminal width
Subsystem commands such as ANALYSE and FILES assume the terminal width
given by this option when planning their output.
Keyword: ITWIDTH
Default value: 80
Array diagnostic level
When a diagnostic traceback is given for a program, the number of
elements of each array which are actually printed is given by this
option.
Keyword: ARRAYDIAG
Default value: 10
Record diagnostic level
When a diagnostic traceback is given for a program, the number of
items in each record which are actually printed is given by this
option.
Keyword: RECDIAG
Default value: 10
The session workfile
Many subsystem commands (particularly the compilers) make use of a
common workfile. The size of the workfile is determined by this option
setting.
Keyword: INITWORKSIZE
Default value: 256 Kbytes
Interactive terminal buffers
The subsystem requires two buffers for interactive terminal I/O. One
is used solely for input, and the other solely for output. Two
options are provided in order that the sizes of these buffers may be
altered.
Keyword (input): ITINSIZE
Default value (input) : 1 Kbyte
Keyword (output): ITOUTSIZE
Default value (output): 3 Kbytes
Terminal type
The terminal/screen control package (used by screen editors, etc.)
uses this option to determine how an interactive terminal is to be
driven.
In general, this option will not be set by means of the OPTION
command, although the keyword TERMINAL is provided. It is expected
that users will select the appropriate terminal type (which is an
integer) by means of a special command.
The default value supplied is zero, which should correspond to
'unspecified video'.
Brackets/Nobrackets
There are two different command formats which are accepted by the
subsystem:
a) Spaces in commands are not significant, and any parameters must be
enclosed in brackets.
b) Spaces in commands are not allowed, since one or more spaces are
used to separate the command from its parameters, which should not
be enclosed in brackets.
The actual format accepted depends on this option.
Keywords: BRACKETS and NOBRACKETS
Default value: BRACKETS
Recall of terminal I/O
The subsystem provides facilities for storing and retrieving
transactions on an interactive terminal. The three possible values for
this option are:
NORECALL - nothing is stored
TEMPRECALL - the current session is stored
PERMRECALL - the last few sessions are stored
Default value: TEMPRECALL
Suppression of blank lines
This option is provided to enable all blank lines output to the
terminal to be suppressed.
Keywords: BLANKLINES and NOBLANKLINES
Default value: BLANKLINES
Echoing of OBEY files
When an OBEY file is being processed, the subsystem may or may not
'echo' the resulting transactions on the user's terminal. This option
controls the amount echoed. The possible settings are:
NOECHO - nothing at all is echoed
PARTECHO - only 'Command:' lines are echoed
FULLECHO - all input is echoed, including program input
Default value: PARTECHO
Batch jobs are treated by the subsystem as if they are effectively
OBEY files for the purposes of this option.
Foreground start-up file
This option allows the user to nominate a file of commands which are
to be OBEYed on foreground process start-up.
Keywords: NOFSTARTFILE and FSTARTFILE
Default value: NOFSTARTFILE
Background start-up file
This option allows the user to nominate a file of commands which are
to be OBEYed on background process start-up.
Keywords: NOBSTARTFILE and BSTARTFILE
Default value: NOBSTARTFILE
Pre-loading file
This option allows the user to nominate object files which are to be
'pre-loaded' on process start-up. It is not currently implemented.
Active directory
This option selects the file which is to be used as the 'active
directory' for the INSERT and REMOVE commands, and associated actions.
This is the first user directory searched by the loader, immediately
after searching the session directory (see Section 4.1).
Keyword: ACTIVEDIR
Default value: SS#DIR
Compiler fault file
This option allows the user to select another file, in addition to the
compiler listing file, to which compilation fault messages may be
sent. A value of '.NULL' is equivalent to a null string (NOCFAULTS).
Keyword: CFAULTS
Default value: .OUT
Command prompt
This option allows the user to select an alternative prompt for
commands solicited by the Subsystem. The maximum length is 31
characters.
Keyword: CPROMPT
Default value: Command:
Data prompt
This option allows the user to select an alternative default prompt
for data solicited by user programs. The maximum length is 31
characters.
Keyword: DPROMPT
Default value: Data:
Search directories
Up to 16 additional directories may be added to the search list for a
process. They are searched immediately after the active directory.
Keywords: SEARCHDIR and REMOVEDIR
Default value: No search directories
Checking partitioned files
Partitioned files greater than 256 Kbytes in size present special
problems if they contain members which are object files. An object
file that crosses a 256 Kbyte boundary may not execute correctly, so
the action of the subsystem loader is to make a copy of such a member,
and execute that. This is clearly inefficient. The CHECKPD command
provides facilities for identifying such problem members. It also
flags other conditions which cause the loader to make a copy of an
object file.
The command takes exactly one parameter, the meaning of which is given
in the following subsections.
Finding the offsets of members
If CHECKPD is given the name of a partitioned file, it simply lists
the relative offset (in hexadecimal) of each member of that file.
Checking for possible problems
If CHECKPD is given the name of a single member of a partitioned file,
it determines whether either of two conditions would force the
subsystem to copy the file when attempting to load it. These
conditions are:
a) The code of the member crosses a 256 Kbyte boundary
b) The code of the member is not shareable (possible for converted ICL
object files)