top - download
⟦12ff2a218⟧ Wang Wps File
Length: 46089 (0xb409)
Types: Wang Wps File
Notes: CPS/SDS/029
Names: »1808A «
Derivation
└─⟦35f7ff388⟧ Bits:30006086 8" Wang WCS floppy, CR 0132A
└─ ⟦this⟧ »1808A «
WangText
…1e……08……1e……09……1e……0d……1e……0e……1e……01……1e……02……1e……06……1e……07……1d……0b……1d……0c……1d……00……1d……01……1d… …1d……05……1c……08……1c……09……1c……0a……1c……0c……1c……0d……1c……02……1b……09……1b……0a……1b……0c……1b……0d……1b……00……1b……02……1b…
…1b……07……1a……0a……1a……0b……1a……00……1a……02……1a…
…1a……86…1
…02…
…02…
…02…
…02…CPS/SDS/029
…02…820514…02……02…
SYSTEM
STATUS
AND CONTROL
DETAILED
DESIGN
SPECIFICATION…02……02…CAMPS
4.2.5 T̲e̲r̲m̲i̲n̲a̲l̲ ̲M̲o̲n̲i̲t̲o̲r̲i̲n̲g̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲
4.2.5.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The Terminal Monitoring and Control (TEMCO) functions
are detailed on figure 4.2.5.1-1. The functions performed
are described in the following sections.
4.2.5.1.1 V̲D̲U̲ ̲C̲o̲n̲t̲r̲o̲l̲
The VDU Control functions are detailed in figure 4.2.5.1.1-1.
4.2.5.1.1.1 S̲i̲g̲n̲-̲O̲n̲
The Sign-on functions are decomposed as defined in
figure 4.2.5.1.1.1-1 overleaf.
The Sign-on command will result in a log record.
If the user depresses the SYSTEM key and enters the
command SION, COPSY prompts the user for the identification
code and the password in the system line.
On entry the characters are not displayed.
If either one or both are invalid, COPSY responds by
displaying error message 1 (INVALID ENTRY) in the system
line.
For the two supervisor positions it is not checked
if ID code entered is contained in the operator list
of the terminal profile.
The absence of a reply within 3 minutes or if after
three attempts a valid entry is not made, COPSY blocks
the keyboard (supervisor terminal positions are not
blocked), and sends a security report to the supervisor
printer.
Figure 4.2.5.1-1 to 4.2.5.1.1.1-1
If ID code and password both are valid, the system
will present a menu that reflects the user's capabilities
at the terminal.
If the user has not any of the possible capabilities
at the terminal, COPSY will generate an error message
for a preset period of time, after which the terminal
is automatically signed off and format K2 is displayed.
After sign-on the associated release position queue
and the associated printer queue are updated in the
capability array of the terminal subprocess.
4.2.5.1.1.2 S̲i̲g̲n̲ ̲O̲f̲f̲
The sign-off functions are decomposed as defined in
figure 4.2.5.1.1.2-1 overleaf.
The sign-off command will result in a log record.
If the user depresses the SYSTEM key and enters the
command SIOF, the terminal is returned to unattended
operation (format K2). The time at which the unattended
operation commenced will be displayed.
Figure 4.2.5.1.1.2-1
4.2.5.1.1.3 A̲s̲s̲i̲g̲n̲
The assign functions are decomposed as defined in figure
4.2.5.1.1.3-1 overleaf.
At system generation time 2 terminal positions are
designated as supervisor position and one of the two
terminal positions is assigned as the active supervisor
position.
If a supervisor at the inactive supervisor position
depresses the SYSTEM key and enters the command ASSG
the terminal position becomes the active supervisor
position. The effect on the presently active supervisor
position will be similar to cancel.
Figure 4.2.5.1.1.3-1
4.2.5.1.1.4 R̲e̲l̲e̲a̲s̲e̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲ ̲I̲n̲t̲e̲r̲r̲o̲g̲a̲t̲i̲o̲n̲
The release security interrogation functions are decomposed
as defined in figure 4.2.5.1.1.4-1 overleaf.
Invocation of Release security interrogation will result
in a generation of Statistics.
The releaser is requested to enter his password in
the system line. On entry the characters are not displayed.
If the password is correct, then COPSY responds with
response message 32 (PASSWORD VALID).
If the password is wrong COPSY outputs error code 1
(INVALID ENTRY). The absence of a reply within 3 mintues
or if after three attempts a valid entry is not made,
TEMCO signs off the user, blocks the terminal (Supervisor
terminal positions are never blocked), and sends a
Security report to the supervisor printer.
Figure 4.2.5.1.1.4-1
4.2.5.1.1.5 S̲e̲c̲u̲r̲i̲t̲y̲ ̲W̲a̲r̲n̲i̲n̲g̲
The Security warning functions are decomposed as defined
in figure 4.2.5.1.1.5-1 overleaf.
Invocation of Security warning will result in a log
record and generation of statistics.
The security warning will be performed by displaying
a warning message. The message will be displayed in
the display area. After the warning message the user
is requested to enter a security code in the system
line.
On entry the characters are not displayed.
If the entry is invalid COPSY will output error code
1 (INVALID ENTRY). If after 3 attempts a valid entry
is not made or a reply is not made within 3 minutes
COPSY signs off the user, blocks the keyboard (supervisor
terminal positions are never blocked), and sends a
Security report to the supervisor printer.
Figure 4.2.5.1.1.5-1
4.2.5.1.1.6 S̲e̲c̲u̲r̲i̲t̲y̲ ̲I̲n̲t̲e̲r̲r̲o̲g̲a̲t̲i̲o̲n̲
The Security interrogation functions are decomposed
as defined in figure 4.2.5.1.1.6-1 overleaf.
Invocation of Security interrogation will result in
a log record and generation of Statistics.
The user is requested to enter his password in the
system line. On entry the characters are not displayed.
If the password is correct, then COPSY responds with
response message 32 (PASSWORD VALID).
If the password is wrong COPSY outputs error code 1
(INVALID ENTRY).
The absence of a reply within 3 minutes or if after
tree attempts a valid entry is not made, COPSY signs
off the user, blocks the keyboard (supervisor terminal
positions are never blocked), and sends a Security
report to the supervisor printer.
Figure 4.2.5.1.1.6-1
4.2.5.1.1.7 C̲l̲o̲s̲e̲-̲D̲o̲w̲n̲
The Close-down functions are decomposed as defined
in figure 4.2.5.1.1.7-1 overleaf.
The commands "initial close down" and "final close
down" are sent after operator specification of ordered
close down/switchover of a PU. When a "initial closedown"
is received, the time to close down is displayed in
the system line. After receipt of a "final close down"
the IO-connection to the VDU is dismantled even if
the user still is signed on.
Figure 4.2.5.1.1.7-1
4.2.5.1.2 V̲D̲U̲ ̲L̲o̲g̲i̲c̲a̲l̲ ̲H̲a̲n̲d̲l̲e̲
The VDU Logical Handle functions are detailed in figure
4.2.5.1.2-1.
4.2.5.1.2.1 B̲l̲o̲c̲k̲ ̲T̲e̲r̲m̲i̲n̲a̲l̲
The Block Terminal functions are decomposed as defined
in figure 4.2.5.1.2.1-1 overleaf.
The supervisor can block a terminal position (not the
two Supervisor terminal positions) by entering a BLOCK
command:
After reception of a BLOCK command COPSY will sign-off
the user, block the keyboard and generate a log record.
Figure 4.2.5.1.2-1
Figure 4.2.5.1.2.1-1
4.2.5.1.2.1 U̲n̲b̲l̲o̲c̲k̲ ̲T̲e̲r̲m̲i̲n̲a̲l̲
The Unblock terminal functions are decomposed as defined
in figure 4.2.5.1.2.1-1 overleaf.
The supervisor can unblock a terminal position by entering
an UNBLOCK command.
After reception of an UNBLOCK command COPSY will unblock
the keyboard and if key status is on, display the K1
format.
figure 4.2.5.1.2.1-1
4.2.5.1.3 V̲D̲U̲ ̲E̲v̲e̲n̲t̲s̲ ̲M̲ ̲a̲n̲d̲ ̲C̲
The VDU EVENTS M and C functions are detailed on figure
4.2.5.1.3-1.
4.2.5.1.3.1 A̲s̲y̲n̲c̲h̲r̲o̲n̲o̲u̲s̲ ̲R̲e̲p̲o̲r̲t̲
The Asynchronous Report functions are decomposed as
defined in figure 4.2.5.1.3.1-1 overleaf.
The IOS will send an Asynchronous Report when:
- The keylock on the terminal is changed to either
the locked or unlocked position
- the system key is depressed.
Turning the security-key to the off position will cause
the contents of the screen to become blank and the
device storage to be erased. If the transactions Sign-on
and Security procedures are in progress the terminal
will be blocked and signed off and a security report
will be generated.
Depressing the SYSTEM KEY when the terminal position
is signed-on, will force COPSY to output the High Level
Menu with the common capabilities of the Terminal and
and User-Profile filled in.
4.2.5.1.3.2 C̲o̲n̲t̲r̲o̲l̲ ̲K̲e̲y̲s̲
When the transactions Sign-on, Sign-off, and Security
procedures are in progress the only valid entry of
the control keys is the ENTER-key.
The activation of all other control keys (an exception
is the SYSTEM-key) will have no effect.
4.2.5.1.4 U̲p̲d̲a̲t̲e̲ ̲P̲r̲o̲f̲i̲l̲e̲
The supervisor may change a terminal profile, while
the terminal is blocked. After a terminal profile is
changed, TEMCO receives a TERMINAL ̲PROFILE ̲CHANGE command
specifying that a terminal profile is changed.
4.2.5.1.5 Q̲u̲e̲u̲e̲,̲ ̲S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲
Q̲u̲e̲u̲e̲ ̲A̲c̲c̲e̲s̲s̲ ̲P̲r̲o̲f̲i̲l̲e̲
The access profiles for the release queue (VUS ̲RELQ),
the receive queue (VUS ̲ARRQ) are changed when the supervisor
specifies that one of the terminal profiles,"defining"
the above mentioned queue profiles, has been changed.
S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲A̲c̲c̲e̲s̲s̲ ̲P̲r̲o̲f̲i̲l̲e̲
After a user is signed-on and before a START-command
is sent to the terminal subprocess, the access profile
of the terminal subprocess is set according to fig.
4.2.5.1.5-1 to fig. 4.2.5.1.5-5.
After a user is signed-off, the access profile of the
terminal subprocess is set to no rights (all bits are
set to zero).
S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲C̲a̲p̲a̲b̲i̲l̲i̲t̲y̲ ̲A̲r̲r̲a̲y̲
After a user is signed-on and before a START ̲USER command
is sent to the terminal subprocess, the queue access
rights of the subprocess is set according to fig. 4.2.5.1.5-6
to fig. 4.2.5.1.5-8.
After a user is signed-off the access rights (function
mask.) defined in fig. 4.2.5.1.5-6 to fig. 4.2.5.1.5-8
are set to no rights. The reference to the release
queue and the associated release position queue in
the USER subprocess capability array are removed.
The capasbility array of the SUPV-subprocess is not
changed by TEMCO.
Fig. 4.2.5.1.5-1/2/3/4/5/6/7/8
4.2.5.1.7 I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲
On system start-up TEMCO determines the position of
the security key if the terminal position is unblocked.
The access profiles for the release queue (VUS ̲RELQ),
the receive queue (VUS ̲RCCQ) and the answer, response,
retrieve queue (VUS ̲ARRQ) are set by TEMCO according
to fig. 4.2.5.1.7-1 to fig. 4.2.5.1.7-3.
Figure 4.2.5.1.7-1 to figure 4.2.5.1.7-3
4.2.5.1.8 E̲r̲r̲o̲r̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲
TEMCO recognizes the following software error types:
1) E̲x̲t̲e̲r̲n̲a̲l̲
These errors relate to input validity check in
the operation semaphore VDU ̲OS or in the queue
VDU ̲RQ. An error is reported via the procedure
COPSY ̲SEND ̲GARBLE.
2) I̲n̲t̲e̲r̲n̲a̲l̲
These errors relate to errors from system calls
and internal logical errors. System call errors
are reported via the procedure ANALYSE ̲ERROR. Internal
logical errors are reported via the procedure COPSY
̲SEND ̲GARBLE.
4.2.5.2 S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The Terminal Monitoring and Control (TEMCO) functions
are implemented in one coroutine per terminal position.
The TEMCO program is decomposed as defined in fig.
4.2.5.2-1.
The program is implemented in 3 modules and a number
of common procedures.
fig. 4.2.5.2-1
21 states for TEMCO are defined:
- INITIAL
- BLOCKED
- SUPV ̲POSITION ̲DOWN
- UNATTENDED ̲OPERATION
- SION ̲REPLY ̲1
- SION ̲REPLY ̲2
- SION ̲REPLY ̲3
- SION ̲YES
- ATTENDED ̲OPERATION
- WAIT ̲ASSG ̲REPLY
- REL ̲SEC ̲REPLY ̲1
- REL ̲SEC ̲REPLY 2
- REL ̲SEC ̲REPLY 3
- SEC ̲INT ̲REPLY ̲1
- SEC ̲INT ̲REPLY ̲2
- SEC ̲INT ̲REPLY ̲3
- SEC ̲WAR ̲REPLY ̲1
- SEC ̲WAR ̲REPLY ̲2
- SEC ̲WAR ̲REPLY ̲3
- WAITING
- WAIT ̲ASSG ̲REPLY
33 input types are defined:
- REMOVE ̲ASSG
- ASSG ̲REMOVED
- SET ̲ACCES ̲PROFILES
- START ̲COR
- CLOSE ̲INITIAL
- CLOSE ̲FINAL
- LINE ̲ERROR
- START ̲SUPV
- STOP ̲SUPV
- TERMINAL ̲PROFILE ̲CHANGE
- BLOCK ̲TERMINAL
- UNBLOCK ̲TERMINAL
- SYSTEM-KEY
- KEY ̲ON
- KEY ̲OFF
- SIOF
- - SION
- ASSG
- SUPV
- MDCO
- MSOS
- USER
- INPUT ̲SYSTEM ̲LINE
- INVALID ̲INDATA
- INVALID ̲KEY
INSERT ̲SUPV
- INVALID ̲ENTRY
- TIME ̲OUT
- REL ̲SEC ̲INT
- S ̲INTERROGATION
- S ̲WARNING
- S ̲BOTH
- CLEAR ̲SYSTEM ̲LINE
Every input type and state defines the next state of
TEMCO and the action to be executed. E.g. if the input
type is SIOF and the present state of TEMCO is SION
̲YES, the next state of TEMCO is UNATTENDED ̲OPERATION
and the action to be executed is SIOF, see table 4.2.5.2-1
to table 4.2.5.2-6.
Table 4.2.5.2-1 to 4.2.5.2-6
The fields marked with * in table 4.2.5.2-1 to table
4.2.5.2-5 are explained below:
*a: if key-status = on then new-state = unattended
operation else new-state = unmanned.
*b: supervisor positions are never blocked, new-state
= supv-position-down.
*c: if supervisor position then action = illegal action.
*d: if supervisor position then new state = unattended
operation.
*e: supervisor position are never blocked, new state
= unmanned.
*f: if invalid then new state = sion-reply-2.
*g: if invalid then new state = sion-reply-3.
*h: if invalid then new state = blocked if supervisor
then new state = unattended operation.
*i: if invalid then new-state = sec-war-reply-1
*j: if invalid then new-state = sec-war-reply-2
*k: if invalid then new-state = sec-int-reply-2
*l: if invalid then new-state = sec-int-reply-3
*m: if invalid then new-state = rel-sec-reply-2
*n: if invalid then new-state = rel-sec-reply-3
*o: if already assigned as active supervisor position
then new-state = sion-yes
*p: if the user profile and terminal profile do not
contain the chosen capability then new-state =
sion-yes
Note 4.2.5.2-6
4.2.5.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
A blockdiagram for TEMCO fig. 4.2.5.3-1 showing data
and control logic is depicted overleaf.
A simplified flow-gram for the main program is shown
in fig. 4.2.5.3-2.
State diagrams for TEMCO are defined in fig. 4.2.5.3-3
to fig. 4.2.5.3-7.
fig. 4.2.5.3-1/2/3/5/6/7…86…1 …02… …02… …02… …02…
INITIALIZATION
LOOP
WAIT OPERATION SEMAPHORE
ACTION = ACTION ̲TABLE (OLD ̲STATE, INPUT)
NEW ̲STATE = STATE ̲TABLE (OLD ̲STATE, INPUT)
CALL ACTION ̲MODULE (ACTION)
OLD ̲STATE = NEW ̲STATE
END LOOP
Fig. 4.2.5.3-2…01…At Simplified Flowgram for the main program
Fig. 4.2.5.3-3 to 4.2.5.3-7
4.2.5.4.1 M̲a̲i̲n̲ ̲P̲r̲o̲g̲r̲a̲m̲
4.2.5.4.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The main program module initializes the coroutine.
Thereafter it reads and interprets the operations send
to the coroutine from the configuration handler, the
command dispatcher, the IOC-control, or the timer monitor.
The type of input to the coroutine is determined. A
new state of the TEMCO is determined and the action
to take, according to the type of input received, is
calculated. The action to perform is executed in the
two actions modules.
4.2.5.4.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲
None.
4.2.5.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The TEMCO main module contains the following procedures,
see fig. 4.2.5.4.1.3-.1.
a) C̲F̲H̲ ̲T̲ ̲C̲M̲D̲
The procedure determines the type of CFH command
sent to TEMCO.
b) S̲U̲P̲V̲ ̲T̲ ̲C̲M̲D̲
The procedure determines the type of supervisor
command sent to TEMCO.
c) T̲E̲P̲ ̲T̲ ̲C̲M̲D̲
The procedure determines the type of command sent
from the terminal subprocess.
d) M̲M̲O̲N̲ ̲T̲ ̲C̲M̲D̲
The procedure determines the type of MMON request
sent to TEMCO.
Fig. 4.2.5.4.1.3-1
e) T̲M̲O̲N̲ ̲C̲M̲D̲ ̲T̲
The procedure determines the type of reply sent
from the timer monitor.
f) I̲O̲C̲ ̲S̲T̲A̲T̲U̲S̲ ̲T̲
The procedure determines the type of status sent
from IOC.
g) I̲O̲C̲ ̲K̲E̲Y̲ ̲R̲E̲P̲L̲Y̲ ̲T̲ ̲
The procedure determines which key was depressed.
If the ENTER-key was activated and the state of
TEMCO is UNATTENDED ̲OPERATION or SION ̲YES the command
entered by the user is read.
h) T̲E̲M̲C̲O̲ ̲C̲M̲D̲ ̲T̲
The procedure determines the type of input sent
from another TEMCO coroutine.
The two coroutine which runs the two possible supervisor
terminals use this procedure.
4.2.5.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ ̲f̲o̲r̲ ̲t̲h̲e̲ ̲M̲a̲i̲n̲ ̲P̲r̲o̲g̲r̲a̲m̲
T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
CFH ̲CMD
SUPV ̲CMD
TEP ̲CMD
MMON ̲CMD
IOC ̲CMD
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
VDU ̲OS
SHORT ̲OS
T.TNO
T̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲
VAR T.ACTION ̲TABLE: ACTION ̲TABLE
T.STATE: STATE ̲TYPE
T.INPUT: INPUT ̲TYPE
T.ACTION: ACTION ̲TYPE
T.CMD: INTEGER
T.SUPV ̲QEL ̲REF: QEL-REFERENCE
T ̲OP: SHORT ̲OP ̲TYPE
T.TIME ̲TO ̲CLOSE: TIME ̲FORMAT
T.TEP ̲QEL ̲REF: QEL ̲REFERENCE
T.MMON ̲REF: INTEGER
T.ATTRIBUTES: QEL-ATTRIBUTES
T.CC: INTEGER
T.QEL: QEL ̲REFERENCE
T.CLOSE ̲DOWN: BOOLEAN
T.RECEIVE ̲KEYS ̲ON: BOOLEAN
CONST NO ̲OF STATES = 19
L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR T.CMD ̲TYPE: S.CMD ̲TYPE ̲(SSC COMMON)
T.KEY: INTEGER
4.2.5.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
PROCEDURE TEMCO ̲MAIN
BEGIN
EQUIVALENCE (RUNNING ̲COROUTINE,T: TERMINAL ̲COROUTINE)
T.REPLY ̲Q.MAIN ̲QUEUE = VDU ̲RQ
T.REPLY ̲Q.SUB ̲QUEUE = T.TNO
T.REPORT ̲Q.MAIN ̲QUEUE = SPIP ̲REPQ
T.REPORT ̲Q.SUB ̲QUEUE = O
T.EVENT ̲ID = O
T.LOG ̲Q.MAIN ̲QUEUE = SYSTEM ̲Q
T.LOG ̲Q.SUB ̲QUEUE = IN ̲LOG ̲Q
T.STATE = T.INITIAL
LOOP FOREVER
WAIT ̲OPSEM (VDU ̲OS (T.TNO)) (T ̲OP)
T.OP = T ̲OP
T.CMD ̲TYPE = T ̲OP.CMD ̲TYPE
T.CMD = T ̲OP.CMD
CASE ̲T.CMD ̲TYPE OF
TEMCO ̲CMD? T̲E̲M̲C̲O̲ ̲C̲M̲D̲ ̲T̲
CFH ̲CMD? C̲F̲H̲ ̲C̲M̲D̲ ̲T̲
SUPV ̲CMD? S̲U̲P̲V̲ ̲C̲M̲D̲ ̲T̲
TEP ̲CMD? T̲E̲P̲ ̲C̲M̲D̲ ̲T̲
MMON ̲CMD? M̲M̲O̲N̲ ̲C̲M̲D̲ ̲T̲
TMON ̲CMD? T̲M̲O̲N̲ ̲C̲M̲D̲ ̲T̲
IOC ̲CMD? I̲O̲C̲ ̲S̲T̲A̲T̲U̲S̲ ̲T̲
IOC ̲REPLY? I̲O̲C̲ ̲K̲E̲Y̲ ̲R̲E̲P̲L̲Y̲
̲T̲
OTHER? T.INPUT=INVALID
̲INDATA
END CASE
SIGNAL ̲OPSEM (SHORT ̲OS, T OP)
EQUIVALENCE(TEMCO ̲ACTION ̲TABLE(T.STATE+T.INPUT*NO
̲OF ̲STATES)
NEW: ACTION
̲STATE)
T.ACTION = NEW ACTION
T.STATE = NEW.NEW ̲STATE
A̲C̲T̲I̲O̲N̲ ̲M̲O̲D̲U̲L̲E̲ (T.ACTION)
END LOOP
END PROCEDURE
PROCEDURE TEMCO ̲CMD ̲T
BEGIN
CASE T.CMD OF
REMOVE ̲ASSG? T.INPUT=T ̲REMOVE
̲ASSG
ASSG ̲REMOVED? T.INPUT=T ̲ASSG
̲REMOVED
OTHER? T.INPUT=T ̲INVALID
̲INDATA
END CASE
END PROCEDURE
PROCEDURE CFH ̲CMD ̲T
BEGIN
CASE T.CMD OF
SET ̲ACCESS ̲PROFILES? T.INPUT=T ̲SET ̲ACCESS ̲PROFILES
INSERT ̲SUPV? T.INPUT=INSERT ̲SUPVISOR ̲TERM
START ̲COR? T.INPUT=T ̲START ̲COR
CLOSE ̲INITIAL? T.INPUT=T ̲CLOSE INITIAL
T.TIME ̲TO ̲CLOSE=T ̲OP.REFERENCE
T.CLOSE ̲DOWN=TRUE
CLOSE ̲FINAL? T.INPUT=CLOSE ̲FINAL
LINE ̲ERROR? T.INPUT=T ̲LINE ̲ERROR
START ̲SUPV? T.INPUT=T ̲START ̲SUPV
STOP ̲SUPV? T.INPUT=T ̲STOP ̲SUPV
OTHER? T.INPUT=T ̲INVALID ̲INDATA
END CASE
END PROCEDURE
PROCEDURE SUPV ̲CMD ̲T
BEGIN
T.SUPV ̲QEL ̲REF=T ̲OP.REFERENCE
CASE T.CMD OF
BLOCK ̲TERMINAL? T.INPUT=T ̲UNBLOCK ̲TERMINAL
UNBLOCK ̲TERMINAL? T.INPUT=T ̲BLOCK ̲TERMINAL
TERMINAL ̲PROFILE ̲CHANGE? T.INPUT=T ̲TERMINAL ̲PROFILE
̲CHANGE
OTHER? T.INPUT=T ̲INVALID ̲INDATA
END
END PROCEDURE
PROCEDURE TEP ̲CMD ̲T
BEGIN
T.TEP ̲QEL ̲REF=T ̲OP.REFERENCE
T.CMD EQ RELEASE ̲SECURITY ̲INTERROGATION? T.INPUT=T
̲REL ̲SEC ̲
INT
T.INPUT=T ̲INVALID ̲INDATA
END PROCEDURE
PROCEDURE MMON ̲CMD ̲T
BEGIN
T.MMON ̲REF=T ̲OP.REFERENCE
CASE T.CMD OF
S ̲INTERROGATION? T.INPUT=T ̲S ̲INTERROGATION
S ̲WARNING? T.INPUT=T ̲S ̲WARNING
S ̲BOTH? T.INPUT=T ̲S ̲BOTH
OTHER? T.INPUT=T ̲INVALID ̲INDATA
END CASE
END PROCEDURE
PROCEDURE TMON ̲CMD ̲T
BEGIN
WAIT ̲SYSTEM ̲CALL(T ̲OP)(T.ATTRIBUTESS, T.QEL
T.SUBQUEUE, CC):ERROR ̲OK
T.ATTRIBUTES.HEADER.FLAG EQ 15 AND T.ATTRIBUTES.HEADER.SUBTYPE
EQ
TIM
OUT
̲EVENT?
T.INPUT.CLEAR
̲SYS ̲LINE
T.ATTRIBUTES.HEADER.FLAGS NE T.EVENT ̲ID?
T.ATTRIBUTES.HEADER.SUBTYPE NE TIMEOUT ̲EVENT?
T.INPUT=T ̲TIME ̲OUT
DISMANTLE(T.QEL)(CC): ERROR ̲OK
END
END PROCEDURE
PROCEDURE IOC ̲STATUS ̲T
BEGIN
CASE T.CMD OF
SYSTEM ̲KEY? T.INPUT=T ̲SYSTEM ̲KEY
KEY ̲OFF? T.INPUT=T ̲KEY ̲OFF
KEY ̲ON? T.INPUT=T ̲KEY ̲ON
OTHER? T.INPUT=T ̲INVALID ̲INDATA
END
END PROCEDURE
PROCEDURE IOC ̲KEY ̲REPLY ̲T
BEGIN
CASE WAIT ̲SYSTEM ̲CALL(T ̲OP)(T.KEY, T.CC): ERROR ̲OK
ERROR? ANALYZE ̲ERROR(T.CC,O)
END
T.RECEIVE ̲KEY ̲ON=FALSE
T.KEY NE F ̲ENTER? T.INPUT=T ̲INVALID ̲KEY
T.STATE EQ UNATTENDED ̲OPERATION?
T.STATE EQ SION ̲YES? R̲E̲A̲D̲ ̲S̲Y̲S̲T̲E̲M̲ ̲L̲I̲N̲E̲ (1, 4, NIL,
FALSE)(T.IN)
CASE T.IN OF
T.INPUT=T ̲INPUT ̲SYSTEM ̲LINE SION? T.INPUT=T ̲SIDN
ASSG? T.INPUT=T ̲ASSG
SUPV? T.INPUT=T ̲SUPV
MDCO? T.INPUT=T ̲SUPV
MSOS? T.INPUT=T ̲MSO
USER? T.INPUT=T ̲USER
SIOF? T.INPUT=T ̲SIOF
OTHER? - T.INPUT=T ̲INVALID
̲ENTRY
END CASE
END PROCEDURE
4.2.5.4.2 A̲c̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲ ̲1̲
4.2.5.4.2.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The action determined in the main program (TEMCO ̲MAIN)
is executed in this module.
4.2.5.4.2.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ACTION ̲MODULE ̲1(T.ACTION:ACTION ̲TYPE)
b) ACTION ̲MODULE ̲1(R5,R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲c̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲
R5 action to be performed
R6 Link
R̲e̲t̲u̲r̲n̲ ̲r̲e̲g̲i̲s̲t̲e̲r̲s̲
None.
4.2.5.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The action module 1 contains the following procedures,
see fig. 4.2.5.4.2.3-1
a) S̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲ ̲T̲
The changes made in the terminal profile results
in:
- for USER update its queue profiles
- for MDCO, MSO update subprocess to logical
terminal no table.
b) T̲E̲M̲C̲O̲ ̲I̲N̲I̲T̲ ̲T̲
The procedure displays format K1 if the terminal
position is not blocked and the security key is
in the on position.
Fig. 4.2.5.4.2.3-1
c) F̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲N̲ ̲T̲
The procedure dismantles the connections to the
terminal and signals to the CFH ̲S semaphore.
d) F̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲T̲
The procedure sends a CLOSE ̲DOWN command to the
terminal subprocess, and dismantles all VDU connections.
The CFH ̲S semaphore counter is incremented.
e) S̲T̲O̲P̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲T̲
The procedure blocks the terminal (supervisor terminals
are never blocked) and a warning report is sent.
f) S̲T̲O̲P̲ ̲S̲I̲O̲N̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲T̲
The procedure sends a STOP command to the terminal
subprocess, and blocks the terminal (supervisor
terminals are never blocked)
g) B̲L̲O̲C̲K̲ ̲T̲E̲R̲M̲ ̲T̲
The procedure blocks the terminal sends a reply
to the supervisor. (if supvisor terminal specified
VALIDIATION ̲NOT ̲OK is returned) reply to the supervisor.
h) B̲L̲O̲C̲K̲ ̲S̲T̲O̲P̲ ̲T̲E̲R̲M̲ ̲T̲
The procedure sends a BLOCK ̲TERM command to the
terminal subprocess, and blocks the terminal ref.
BLOCK ̲TERM ̲T
i) U̲N̲B̲L̲O̲C̲K̲ ̲B̲ ̲T̲
The procedure changes the BLOCKED field to FALSE
in the terminal profile, displays format K1, (if
key-status is ON) and sends a reply to the supervisor.
j) S̲I̲O̲F̲ ̲T̲
The procedure displays format K2, updates the terminal-profile,
the user profile and sends a log record.
k) S̲I̲O̲N̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
The procedure prompts the user for the identification
code and the password in the system line.
l) S̲E̲N̲D̲ ̲R̲E̲M̲O̲V̲E̲ ̲A̲S̲S̲G̲ ̲T̲
The procedure sends a REMOVE ̲ASSG command to the
other TEMCO "supervisor"coroutine.
m) S̲T̲A̲R̲T̲ ̲S̲U̲P̲V̲ ̲C̲M̲D̲ ̲T̲
The procedure starts supervisor subprocess and
changes the profile of the supervisor subprocess.If
both the terminal and user profile contains the
capability.
n) S̲T̲A̲R̲T̲ ̲M̲D̲C̲O̲ ̲C̲M̲D̲ ̲T̲
The procedure starts subprocess. If the terminal
and user profile both contains the capabiltiy.
o) S̲T̲A̲R̲T̲ ̲M̲S̲O̲S̲ ̲C̲M̲D̲ ̲T̲
The procedure starts the MSO subprocess. If both
the terminal and user profile contains the capability
p) S̲T̲A̲R̲T̲ ̲U̲S̲E̲R̲ ̲C̲M̲D̲ ̲T̲
The procedure starts the USER subprocess. If both
the terminal and user profile contains the capability.
q) I̲N̲S̲E̲R̲T̲ ̲S̲U̲P̲E̲R̲V̲I̲S̲O̲R̲ ̲T̲
The connections to the supervisor terminal are
created (subsequent to the repair of the terminal)
and if key-status is on the K1 format is displayed.
r) I̲L̲L̲E̲G̲A̲L̲ ̲A̲C̲T̲I̲O̲N̲ ̲T̲
The procedure call COPSY ̲SEND ̲GARBLE with specified
params.
s) S̲T̲O̲P̲ ̲R̲E̲P̲L̲Y̲ ̲M̲
The security interrogation/warning is stopped and
the completion code specified in the call returned
to the message monitor (supervisor terminals are
never blocked) and the terminal is blocked.
t) S̲T̲O̲P̲ ̲R̲E̲P̲L̲Y̲ ̲T̲ ̲
The release security interrogation is stopped and
the completion code TERMINAL ̲BLOCKED is returned
to the TEP subprocess (supervisor terminal are
never blocked) and the terminal is blocked.
4.2.5.4.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ ̲f̲o̲r̲ ̲A̲c̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲ ̲1̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
CONST SUPV ̲P ̲NO
CONST FIRST ̲USER ̲P ̲NO
VAR T.TNO: LOGICAL ̲TERMINAL ̲NO ̲TYPE
T.LTUX ̲LINE ̲REC: LTUX ̲LINE ̲REC
T.LINE ̲TABLE: PORT ̲TABLE ̲TYPE
T̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲ ̲
VAR
T.ACC: ACCESS ̲PROFILE
T.TERMINAL ̲PROFILE: TERMINAL ̲PROFILE
T.STATE: STATE ̲TYPE
T.KEY ̲BUF: SINGLE ̲PARAM
T.CC: INTEGER
T.SEND ̲BUF: TMS ̲PARAMS
T.SYSTEM ̲CONTR ̲FDCB: FDCB ̲INDEX
T.SYSTEM ̲DATA ̲FDCB: FDCB ̲INDEX
T.FORMAT ̲CONTR ̲FDCB: FDCB ̲INDEX
T.FORMAT ̲DATA ̲FDCB: FDCB ̲INDEX
T.REPLY: ANSWER ̲TEP ̲TEMCO
T.USER ̲PROFILE: USER ̲PROFILE
T.CAPABILITIES: (NONE, ONE, MORE)
T.CAP: FCT ̲CAPABILITY ̲TYPE
T.EVENT ̲ID: INTEGER
T.ACTION: ACTION ̲TYPE
T.RESTART ̲MODE: BOOLEAN
T.TIME ̲TO ̲CLOSE: RELATIVE ̲TIME
T.ACTUAL ̲CAP: FCT ̲CAPABILITY ̲TYPE
VAR
MSOS ̲TERMINALS = ARRAY(1..4) OF LOGICAL ̲TERMINAL
̲NO
MDOS ̲TERMINALS = ARRAY(1..4) OF LOGICAL ̲TERMINAL
̲NO
4.2.5.4.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
PROCEDURE ACTION ̲MODULE ̲1(T.ACTION: ACTION ̲TYPE)
BEGIN
CASE T.ACTION OF
SET ̲PROFILES? S̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲ ̲T̲
TEMCO ̲INIT? T̲E̲M̲C̲O̲ ̲I̲N̲I̲T̲ ̲T̲
T.RESTART ̲MODE = F̲A̲L̲S̲E̲
I ̲CLOSE ̲DOWN ̲? D̲I̲S̲P̲L̲A̲Y̲ ̲C̲L̲O̲S̲I̲N̲G̲
T̲I̲M̲E̲(T.TIME ̲TO ̲CLOSE)
F ̲CLOSE ̲DOWN ̲OFF? SIGNAL ̲SEM(CFH ̲S)
F ̲CLOSE ̲DOWN ̲ON? F̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲O̲N̲ ̲T̲
F ̲CLOSE ̲DOWN? F̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲T̲
STOP ̲TERMINAL? S̲T̲O̲P̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲T̲
STOP ̲SION ̲TERMINAL? S̲T̲O̲P̲ ̲S̲I̲O̲N̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲T̲
TERMINAL ̲PROFILE ̲CHANGED?
S̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲ ̲T̲
BLOCK ̲TERM? B̲L̲O̲C̲K̲ ̲T̲E̲R̲M̲ ̲T̲
BLOCK ̲STOP ̲TERM? B̲L̲O̲C̲K̲ ̲S̲T̲O̲P̲ ̲T̲E̲R̲M̲ ̲T̲
UNBLOCK ̲B? U̲N̲B̲L̲O̲C̲K̲ ̲B̲ ̲T̲
SIOF ̲K2? D̲I̲S̲P̲L̲A̲Y̲ ̲R̲E̲S̲P̲O̲N̲S̲E̲ (INVALID
ENTRY)
SIOF? S̲I̲O̲F̲ ̲T̲
SION ̲ENTRY? S̲I̲O̲N̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
SEND ̲REMOVE ̲ASSG? S̲E̲N̲D̲ ̲R̲E̲M̲O̲V̲E̲ ̲A̲S̲S̲G̲ ̲T̲
START ̲SUPV ̲CMD? S̲T̲A̲R̲T̲ ̲S̲U̲P̲V̲ ̲C̲M̲D̲ ̲T̲
INSERT ̲SUPERVISOR ̲TERM
I̲N̲S̲E̲R̲T̲ ̲S̲U̲P̲E̲R̲V̲I̲S̲O̲R̲ ̲T̲
START ̲SUPV ̲ONLY? T̲E̲M̲C̲O̲ ̲I̲N̲I̲
T.RESTART ̲MODE = TRUE
START ̲MDCO ̲CMD? S̲T̲A̲R̲T̲ ̲M̲D̲C̲O̲ ̲C̲M̲D̲ ̲T̲
START ̲MSOS ̲CMD? S̲T̲A̲R̲T̲ ̲M̲S̲O̲S̲ ̲C̲M̲D̲ ̲T̲
START ̲USER-CMD? S̲T̲A̲R̲T̲ ̲U̲S̲E̲R̲ ̲C̲M̲D̲ ̲T̲
FIRST ̲ID ̲CODE ̲PASSWORD ̲ENTRY..NO ̲ACTION?
A̲C̲T̲I̲O̲N̲ ̲M̲O̲D̲U̲L̲E̲ ̲2̲(T.ACTION)
OTHER? I̲L̲L̲E̲G̲A̲L̲ ̲A̲C̲T̲I̲O̲N̲ ̲T̲
END CASE
END PROCEDURE
PROCEDURE SET ̲PROFILES ̲T
T.OLD ̲CAP = T.TERMINAL ̲PROFILE.CAP
T.KEY ̲BUF = T.TNO
S̲E̲A̲R̲C̲H̲ ̲E̲N̲T̲R̲Y̲ (TERMINAL ̲TABLE,T.KEY ̲BUF,ALL ̲MASK,T.WRK)
(T.TERMINAL ̲PROFILE)
S̲E̲T̲ ̲Q̲U̲E̲U̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲
T.CHANGE ̲MASK = T.TERMINAL ̲PROFILE.CAPXOR T.OLD ̲CAP
T.CHANGE ̲MASK AND MSO EQ 0?
S̲E̲T̲ ̲M̲S̲O̲ ̲S̲U̲B̲P̲R̲O̲C̲E̲S̲S̲ ̲N̲O̲
T.CHANGE ̲MASK AND MDCO EQ 0?
S̲E̲T̲ ̲M̲D̲C̲O̲ ̲S̲U̲B̲P̲R̲O̲C̲E̲S̲S̲.̲N̲O̲
T.CMD EQ TEMCO ̲CMD? - SIGNAL ̲SEM (CFH ̲S)
T.REPLY = EXECUTION ̲OK
S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (T.REPLY)
END SET ̲PROFILE ̲T
PROCEDURE SET ̲MDCO ̲SUBPROCESS ̲NO
FOUND = FALSE
COUNT = 0
T.TERMINAL ̲PROFILE-CAP AND MDCO EQ0?-T ̲COMP=T.TNO,T
̲INSERT=NIL
T ̲COMP = NIL
T ̲INSERT = T.TNO
LOOP "find entry to insert/remove the MDCO index"
COUNT = COUNT + 1
MSO ̲TERMINAL (COUNT) NE T ̲COMP?
MSO ̲TERMINAL (COUNT) = T ̲INSERT
FOUND = TRUE
FOUND EQ TRUE OR COUNT EQ MAX ̲MDCO? EXIT
END LOOP
FOUND EQ FALSE? - T.GARB ̲INF.ERROR ̲TYPE=SET ̲PROF
T.GARB ̲INF.ERROR ̲LOC = SET ̲MDCO ̲SUB
C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,T.GARB ̲INF)
END SET ̲MSO ̲SUBPROCESS ̲NO
PROCEDURE SET ̲MSO ̲SUBPROCESS ̲NO
FOUND = FALSE
COUNT = 0
T.TERMINAL ̲PROF.KE CAP AND MSO EQ 0?-T ̲COMP=T.TNO,T
̲INSERT=NIL
T ̲COMP = NIL
T ̲INSERT = T.TNO
LOOP "find entry to insert/remove the MSO index
COUNT = COUNT + 1
MSO ̲TERMINAL (COUNT) NE T ̲COMP?
MSO ̲TERMINAL (COUNT) = T ̲INSERT
FOUND = TRUE
FOUND EQ TRUE OR COUNT EQ MAX ̲MSO? EXIT
END LOOP
FOUND EQ FALSE?-T.GARB ̲INF.ERROR ̲TYPE=SET ̲PROF
T.GARB ̲INF ̲ERROR ̲LOC =SET ̲MSO ̲SUB
C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,T.GARB ̲INF)
END SET ̲MSO ̲SUBPROCESS ̲NO
PROCEDURE SET ̲QUEUE ̲PROFILE
T.ACC.MOST = T.TERMINAL ̲PROFILE.SH.MOST
T.ACC:LEAST = T.TERMINAL ̲PROFILE.SH ̲LEAST LOG OR
T.TERMINAL ̲PROFILE.CAP
T.ACC MOST = EXERCISE LOG OR
(MESSAGE ̲IND SHIFTLL ITEM ̲TYPE ̲SHIFT
(COMMENT ̲INO SHIFTLL ITEM ̲TYPE ̲SHIFT
(REL ̲RET ̲IND SHIFTLL ITEM ̲TYPE ̲SHIFT
REG ̲ACC = T.ACC "vus answer,response,retireve queue
T.QUEUE ̲PRO = FIRST ̲VUS.ANS ̲RES ̲RET ̲Q + T.TNO - 1
SET.PROFILE (REG ̲ACC,T.QUEUE ̲PRO,T.REPLY ̲Q)(CC):ERROR
̲OK
T.ACC:MOST = EXERCISE
T.TERMINAL ̲PROFILE.USER ̲CAP LOG AND (RELS LOG = R PREP)EQ
0?
T.ACC.MOST = T.ACC.MOST LOG OR SET ̲RELS ̲PREP
T.TERMINAL.PROFILE.USER ̲CAP LOG AND RECV EQ 0?
T.ACC.MOST = T.ACC.MOST LOG OR SET ̲RECV
REG ̲ACC = T.ACC
T.QUEU ̲PRO = FIRST ̲VUS ̲RECEIVE ̲Q + T-TNO -1 "VUS receive
queue
SET ̲PROFILE (REG ̲ACC,T.QUEUE ̲PRO,T.REPLY ̲Q)(CC): ERROR
̲OK
T.ACC.MOST = EXERCISE
T.TERMINAL ̲PROFILE.USER ̲CAP LOG AND RELS EQ 0?
T.ACC.MOST = T.ACC ̲MOST LOG OR
(MESSAGE ̲IND SHIFTLL ITEM ̲TYPE ̲SHIFT) LOG OR
(MSG ̲RELEASE SHIFTLL APPL ̲FIELD ̲SHIFT)
REG ̲ACC = T.ACC
T.QUEUE ̲PRO = FIRST ̲VUS ̲RELEASE.Q + T.TNO - 1 "VUS release
queue
SET ̲PROFILE (REG ̲ACC,T.QUEUE.PRO,T.REPLY ̲Q)(CC) : ERROR
̲OK
END SET ̲QUEUE ̲PROFILE
PROCEDURE TEMCO ̲INIT ̲T
T.RESTART ̲MODE EQ TRUE?
D̲E̲F̲I̲N̲E̲ ̲T̲E̲M̲C̲O̲ ̲F̲O̲R̲M̲A̲T̲ ̲H̲A̲N̲D̲L̲E̲R̲
T.TERMINAL ̲PROFILE.BLOCKED EQ TRUE? T.STATE = BLOCKED
T.KEY ̲BUF.KEY = T.TERMINAL ̲PROF.PORT ̲ID.NO
S̲E̲A̲R̲C̲H̲ ̲E̲N̲T̲R̲Y̲ (LTUX ̲LINE ̲TA@BLE,T.KEY ̲BUF,ALLMASK,T.SEND
̲BUF)
(T.LTUX ̲LINE.RECORD)
(T.LTUM ̲LINE ̲RECORD.TYPE ̲DEV NE VDU) OR
?
(T.LTUX ̲LINE ̲RECORAD.CHAIN ̲STATUS EQ FALSE)
REPORT ̲ERROR ( )
T.KEY ̲BUF.KEY = T.TNO
T.TERMINAL ̲PROFILE.BLOCKED = TRUE
U̲P̲D̲A̲T̲E̲ ̲E̲N̲T̲R̲Y̲ (TERMINAL ̲TABLE,T.SEND.BUF,T.KEY.BUF,
TEMCO ̲TERM ̲MASK,T.TERMINAL.PROFILE-KEY
STATUS)
T.STATE = BLOCKED
C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
T.REPLY NE EXECUTION ̲OK? T.STATE = INITIAL
G̲E̲T̲ ̲K̲E̲Y̲ ̲P̲O̲S̲I̲T̲I̲O̲N̲
T.TERMINAL ̲PROFILE.KERY ̲STATUS EQ OFF? T.STATE = UNMANNED
T.STATE = UNATTENDED ̲OPERATION
D̲I̲S̲P̲L̲A̲Y̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲F̲O̲R̲M̲A̲T̲ (K1)
END TEMCO ̲INIT ̲T
PROCEDURE DEFINE ̲TEMCO ̲FORMAT ̲HANDLER
INIT ̲FORMAT (TEMCO ̲SPLITS, FORMATS, )(CC)
DEFINE ̲FORMAT ̲AREA (SPLIT ̲SYS.REC) (INTERFACE ̲NO,CC)
T.SYS ̲SPLIT = INTERFACE ̲NO
DEFINE ̲FORMAT ̲AREA (SPLIT ̲FORMAT ̲REC)(INTERFACE ̲NO.CC)
T.FORMAT ̲SPLIT = INTERFACE ̲NO
END DEFINE ̲TEMCO ̲FORMAT ̲HANDLER
PROCEDURE F ̲CLOSE ̲DOWN ̲ON ̲T
BEGIN
C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
SIGNAL ̲SEM (CFH)
END
PROCEDURE F ̲CLOSE ̲DOWN ̲T
BEGIN
S̲T̲O̲P̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲S̲U̲B̲P̲R̲O̲C̲E̲S̲S̲ (CLOSE ̲DOWN)
K̲E̲Y̲ ̲O̲F̲F̲ ̲B̲L̲O̲C̲K̲E̲D̲ ̲T̲
C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
T.SIGN = OFF
S̲E̲T̲ ̲U̲S̲E̲R̲ ̲P̲R̲O̲F̲I̲L̲L̲E̲ ̲S̲I̲G̲N̲ ̲T̲O̲ (T.SIGN,T.USER ̲PROFILE
̲USER ̲ID)
SIGNAL ̲SEM (CFH ̲S)
END
PROCEDURE STOP ̲TERMINAL ̲T
BEGIN
T.TERMINAL ̲PROFILE.CAP LOG AND SUPV NE NUL? T.STATE=SUPV
̲
POSITION
̲DOWN
CUT
̲CONNECTION
B̲L̲O̲C̲K̲ ̲P̲A̲S̲S̲I̲V̲E̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲
STATE = BLOCKED
END
PROCEDURE STOP ̲SION ̲TERMINAL ̲T
BEGIN
S̲E̲N̲D̲ ̲S̲E̲C̲U̲R̲I̲T̲Y̲ ̲R̲E̲P̲O̲R̲T̲ (WARN ̲HW ̲IN ̲TERM)
T.TERMINAL ̲PROFILE.CAP LOGAND SUPV NULL?T.STATE=SUPV.POSITION
̲DOWN
S̲T̲O̲P̲.̲A̲C̲T̲I̲V̲E̲S̲U̲P̲V̲
̲T̲E̲R̲M̲I̲N̲A̲L̲
B̲L̲O̲C̲K̲ ̲A̲C̲T̲I̲V̲E̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲
END
PROCEDURE BLOCK ̲TERM ̲T
BEGIN
T.TERMINAL ̲PROFILE.CAP EQ SUPV? T.REPLY=VALIDATION
̲NOT ̲OK
B̲L̲O̲C̲K̲ ̲P̲A̲S̲S̲I̲V̲E̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲
T.REPLY=EXECUTION ̲OK
S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲(̲T̲.̲R̲E̲P̲L̲Y̲)̲
END
PROCEDURE BLOCK ̲STOP ̲TERM ̲T
T.REPLY = EXECUTION ̲OK
T.TERMINAL ̲PROFILE-CAP LOGAND SUPV NE NUL? T.REPLY
=
VALIDATION
̲NOT ̲OK
B̲L̲O̲C̲K̲ ̲A̲C̲T̲I̲V̲E̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲
S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (T.REPLY)
END BLOCK ̲STOP TERM ̲T
PROCEDURE UNBLOCK ̲B ̲T
BEGIN
T.TERMINAL ̲PROFILE-BLOCKED = FALSE
G̲E̲T̲ ̲K̲E̲Y̲ ̲P̲O̲S̲I̲T̲I̲O̲N̲
T.TERMINAL ̲PROFILE KEY ̲STATUS EQ OFF? T.STATE =
UNMANNED
D̲I̲S̲P̲L̲A̲Y̲ ̲F̲O̲R̲M̲A̲T̲ ̲(̲K̲1̲)̲
T.STATE = UNATTENDED ̲OPERATION
T.REPLY = EXECUTION ̲OK
S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲(T.REPLY)
END
PROCEDURE SIOF ̲T
BEGIN
DISPLAY ̲TERMINAL ̲FORMAT(K2)
T.KEY ̲BUF.KEY=T.TNO
T.TERMINAL ̲PROFILE.SIGN = OFF
T.TERMINAL ̲PROFILE-CURRENT ̲CAP = NUL
U̲P̲D̲A̲T̲E̲ ̲E̲N̲T̲R̲Y̲(TERMINAL ̲TABLE,T.SEND ̲BUF,T.KEY ̲BUF,
TEM ̲TERM ̲MACK,T.TERMINAL ̲PROFILE CURRENT
̲CAP)
S̲E̲T̲ ̲U̲S̲E̲R̲ ̲P̲R̲O̲F̲I̲L̲E̲ ̲S̲I̲G̲N̲ ̲T̲O̲ (OFF,T.USER ̲PROFILE.USER
̲ID)
(T.BLOCKED)
S̲E̲N̲D̲ ̲L̲O̲G̲ ̲R̲E̲C̲O̲R̲D̲(K1,E ̲SIGNED ̲OFF)
END
PROCEDURE SION ̲ENTRY ̲T
BEGIN
R̲E̲Q̲U̲E̲S̲T̲ ̲T̲I̲M̲E̲ ̲O̲U̲T̲ ̲T̲
D̲I̲S̲P̲L̲A̲Y̲ ̲R̲E̲S̲P̲O̲N̲S̲E̲(ENTER ̲YOUR ̲ID ̲CODE,PASSWORD)
END
PROCEDURE SEND ̲REMOVE ̲ASSG ̲T
BEGIN
T.TERMINAL.CAP LOGAND SUPV EQ 0?
T.TERMINAL.ASSG EQ TRUE? D̲I̲S̲P̲L̲A̲Y̲ ̲R̲E̲S̲P̲O̲N̲S̲E̲(INVALID
̲ENTRY)
T.SUPPRESSION = FALSE
R̲E̲C̲E̲I̲V̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲T̲
T.I=1 T.STATE = SION ̲YES
T.TNO NE 1?
T.I=2
WAIT ̲OPSEM(SHORT ̲OS)(T ̲OP)
T ̲OP.CMD=REMOVE ̲ASSG
T ̲OP.CMD ̲TYPE=TEMCO ̲CMD
SIGNAL ̲OPSEM(VDU ̲OS(T.I),T ̲OP)
END
PROCEDURE START ̲SUPV ̲CMD ̲T
BEGIN
T.ACTUAL ̲CAP LOGAND SUPV EQ 0?
T.TERMINAL ̲PROFILE.ASSG NE TRUE?
D̲I̲S̲P̲L̲A̲Y̲ ̲R̲E̲S̲P̲O̲N̲S̲E̲(INVALID
ENTRY)
T.SUPPRESSION =
FALSE
R̲E̲C̲E̲I̲V̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲
̲T̲
T.STATE=SION ̲YES
T.CAP = SUPV
S̲T̲A̲R̲T̲ ̲U̲S̲E̲R̲(T.CAP)
END
PROCEDURE START ̲MDCO ̲CMD ̲T
BEGIN
T.ACTUAL ̲CAP LOGAND MDCO EQ 0?-DISPLAY ̲RESPONSE(INVALID
̲
ENTRY)
T.SUPPRESSION =
FALSE
R̲E̲C̲E̲I̲V̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲
̲T̲
T.STATE=SION ̲YES
T. CAP = MDCO
S̲T̲A̲R̲T̲ ̲U̲S̲E̲R̲(T.CAP)
END
PROCEDURE START ̲MSOS ̲CMD ̲T
BEGIN
T.ACTUAL ̲CAP LOGAND MSO EQ 0?-DISPLAY ̲RESPONSE(INVALID
̲
ENTRY)
T.SUPPRESSION =FALSE
RECEIVE ̲CONTROL ̲T
T.STATE=SION ̲YES
T.CAP = MSO
START ̲USER(T.CAP)
END
PROCEDURE START ̲USER ̲CMD ̲T
BEGIN
T.ACTUALCAP LOGAND USER EQ0?-D̲I̲S̲P̲L̲A̲Y̲ ̲R̲E̲S̲P̲O̲N̲S̲E̲(INVALID
̲ENTRY)
T.SUPPRESSION = FALSE
R̲E̲C̲E̲I̲V̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲T̲
T.STATE=SION ̲YES
T.CAP = USER
S̲T̲A̲R̲T̲ ̲U̲S̲E̲R̲(T.CAP)
END
4.2.5.4.3 A̲c̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲ ̲2̲
4.2.5.4.3.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲d̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The action determined in the main program (TEMCO ̲MAIN)
and not executed in the ACTION ̲MODULE-1 is executed
in this module.
4.2.5.4.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) ACTION ̲MODULE ̲2 (T.ACTION:ACTION ̲TYPE)
b) ACTION ̲MODULE ̲2 (R5, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R 5 action to be performed
R 6 link
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
None
4.2.5.4.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The action module 2 contains the following procedure,
see fig. 4.2.5.4.3-1.
a) F̲I̲R̲S̲T̲ ̲I̲D̲ ̲C̲O̲D̲E̲ ̲P̲A̲S̲S̲W̲O̲R̲D̲ ̲E̲N̲T̲R̲Y̲ ̲T̲ ̲
The procedure checks the id-code and password entered
in the system line, if either one or both are invalid,
error message 1 is displayed in the system line.
If both id-code and password are valid and the
user has more possible capabilities at the
terminal the high level menu is displayed. If the
user has one capability at the terminal a START
̲USER Command is sent to a terminal subprocess.
If the user has none of the possible capabilities
at the terminal, TEMCO generates an error message
13 for a preset period of time, after which the
terminal is automatically signed off and format
K2 is displayed.
figure 4.2.5.4.3-1
PROCEDURE INSERT ̲SUPERVISOR ̲T
T.TNO NE 1 OR 2? T.GARB ̲INF.ERROR ̲TYPE = INS ̲SUPV
T.GARB ̲INF. ERROR ̲LOC = INS ̲SUPV
̲T
C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,T.GARP
̲INF)
T.STATE = SUPV.POSITION ̲DOWN
C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
T.REPLY NE EXECUTION ̲OK? ̲ T.STATE = SUPV ̲POSITION
̲DOWN
G̲E̲T̲ ̲K̲E̲Y̲ ̲P̲O̲S̲I̲T̲I̲O̲N̲
T.TERMINAL ̲PROFILE.KEY ̲STATUS EQ OFF? T.STATE = UNMANNED
T.STATE = UNATTENDED ̲OPERATION
D̲I̲S̲P̲L̲A̲Y̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲ ̲F̲O̲R̲M̲A̲T̲ (K1)
END INSERT ̲SUPERVISOR ̲T
b) T̲H̲I̲R̲D̲ ̲I̲D̲ ̲C̲O̲D̲E̲ ̲P̲A̲S̲S̲W̲O̲R̲D̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
The procedure checks the id-code and password entered
in the system line, if either one or both are invalid
TEMCO , blocks the terminal, sends a security report
to the supervisor printer. If both id-code and
password are valid and the user has more possible
capabilities at the terminal the high level menu
is displayed. If the user has one capability at
the terminal a START ̲USER Command is sent to a
terminal subprocess. If the user has none of the
possible capabilities at the terminal, TEMCO generates
an error message 13 for a preset period of time,
after which the terminal is automatically signed
off and format K2 is displayed.
c) R̲E̲ ̲S̲E̲ ̲I̲N̲ ̲R̲E̲P̲L̲Y̲ ̲T̲
The procedure checks the password entered in the
system line. If the password is valid and OK reply
is sent to the terminal subprocess. If the password
is invalid TEMCO outputs error message 1 in the
system line.
d) T̲H̲I̲R̲D̲ ̲R̲E̲ ̲S̲E̲ ̲I̲N̲ ̲R̲E̲P̲L̲Y̲ ̲T̲
The procedure checks the password entered in the
system line, if the password is valid an OK reply
is sent to the terminal subprocess. If the password
is invalid TEMCO blocks the terminal, sends a security
report to the supervisor printer and a STOP ̲USER
Command is sent to the terminal subprocess.
e) S̲E̲C̲ ̲C̲O̲D̲E̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
The procedure checks the security code entered
in the system line, if the security code is valid
an OK-reply is sent to MMON. If the security code
is invalid TEMCO outputs error message 1 in the
system line.
f) T̲H̲I̲R̲D̲ ̲S̲E̲C̲ ̲C̲O̲D̲E̲ ̲E̲N̲T̲R̲Y̲ ̲T̲ ̲
The procedure checks the security code entered
in the system line, if the security code is valid
an OK-reply is sent to MMON. If the security code
is invalid a NOT ̲OK reply is sent to MMON, the
terminal is blocked, a security report is sent
to the supervisor printer and a STOP ̲USER Command
is sent to the terminal subprocess.
g) P̲A̲S̲S̲W̲O̲R̲D̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
The procedure checks the password entered in the
system line, if the password is valid an OK-reply
is sent to MMON. If the password is invalid TEMCO
outputs error message 1 in the system line.
h) T̲H̲I̲R̲D̲ ̲P̲A̲S̲S̲W̲O̲R̲D̲ ̲E̲N̲T̲R̲Y̲ ̲T̲
The procedure checks the password entered in the
system line, if the password is valid an OK-reply
is sent to MMON. If the password is invalid a NOT
̲OK reply is sent to MMON, the terminal is blocked,
a security report is sent to the supervisor printer
and a STOP ̲USER Command is sent to the terminal
subprocess.
i) S̲I̲O̲N̲ ̲T̲I̲M̲E̲ ̲O̲U̲T̲ ̲T̲
The procedure dismantles the connection to the
VDU, changes the BLOCKED field in the terminal
profile to TRUE and sends a security report to
the supervisor printer.
j) R̲E̲L̲ ̲S̲E̲C̲ ̲I̲N̲T̲ ̲C̲M̲D̲ ̲T̲ ̲
The procedure prompts the user for the password
in the system line.
k) S̲ ̲I̲N̲T̲E̲R̲R̲O̲G̲A̲T̲I̲O̲N̲ ̲C̲M̲D̲ ̲T̲
The procedure prompts the user for the password
in the systemline, sends statistics and sends a
log report.
l) S̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲C̲M̲D̲ ̲T̲ ̲
The procedure prompts the user for the sercurity
code in the systemline, sends statistics and a
log report.
m) S̲ ̲B̲O̲T̲H̲ ̲C̲M̲D̲ ̲T̲
The procedure sets the boolean T ̲BOTH to TRUE and
calls the procedure S ̲INTERROGATION ̲CMD ̲T.
n) K̲E̲Y̲ ̲O̲N̲ ̲U̲ ̲T̲
The procedure updates the terminal profile and
displays format K 1.
o) K̲E̲Y̲ ̲O̲F̲F̲ ̲B̲L̲O̲C̲K̲E̲D̲ ̲T̲
The procedure changes the KEY ̲STATUS field to OFF
in the terminal profile.
p) K̲E̲Y̲ ̲O̲F̲F̲ ̲S̲Y̲S̲ ̲C̲O̲N̲ ̲T̲
The procedure calls the procedure KEY ̲OFF ̲BLOCKED
̲T dismantles the connection to the VDU and sends
a security report.
q) K̲E̲Y̲ ̲O̲F̲F̲ ̲T̲
The procedure blocks the terminal, sends a security
report to the supervisor printer and sends a BLOCK
̲TERM command to the terminal subprocess.
r) S̲Y̲S̲T̲E̲M̲ ̲K̲E̲Y̲ ̲A̲T̲T̲ ̲O̲P̲ ̲T̲
The procedure sends a STOP ̲USER command to the
terminal subprocess, displays high level menu and
calls the procedure RECEIVE ̲CONTROL ̲T.
s) A̲S̲S̲G̲ ̲F̲A̲L̲S̲E̲ ̲T̲ ̲
The procedure changes the field ASSG to FALSE in
the terminal profile and sends an ASSG ̲REMOVED
reply to a TEMCO coroutine.
t) A̲S̲S̲G̲ ̲S̲T̲O̲P̲ ̲T̲
If a user is signed on as supervisor at the terminal
a STOP ̲USER command is sent to the terminal subprocess.
The ASSG field in the terminal profile is changed
to FALSE, the high level menu is displayed and
a ASSG ̲REMOVED reply is sent to a TEMCO coroutine.
u) A̲S̲S̲G̲ ̲R̲E̲P̲L̲Y̲ ̲T̲
The procedure changes the field ASSG to TRUE in
the terminal profile and displays high level menu.
4.2.5.4.3.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ ̲f̲o̲r̲ ̲a̲c̲t̲i̲o̲n̲ ̲m̲o̲d̲u̲l̲e̲ ̲2̲
T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
CAPABILITY ̲TYPE = (NONE, ONE, MORE)
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲
VAR
T.TNO : LOGICAL ̲TERMINAL ̲NO ̲TYPE
T̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲
VAR
T.ACTION: ACTION ̲TYPE
T.INPUT : INPUT ̲TYPE
T.TERMINAL ̲PROFILE : TERMINAL ̲PROFILE
T.REPLY : BOOLEAN
T.CAPABILITIES : CAPABILITY ̲TYPE
T.CAP : FCT ̲CAPABILITY ̲TYPE
T.BOTH : BOOLEAN "if MMON command=BOTH then T.BOTH=TRUE
else
T.BOTH
= FALS
T.KEY ̲BUF : KEY ̲BUF ̲TYPE
T.CHANGE ̲MASK : BITMASK
T.SEND ̲BUF : TMP ̲PARAMS
T ̲OP: ̲ SHORT ̲OP ̲TYPE
L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
T ̲OP : SHORT ̲OP ̲TYPE
T.I : INTEGER