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)