top - download
⟦2cde7bd3d⟧ Wang Wps File
Length: 32652 (0x7f8c)
Types: Wang Wps File
Notes: CPS/SDS/029
Names: »1828A «
Derivation
└─⟦bf0247e75⟧ Bits:30006089 8" Wang WCS floppy, CR 0141A
└─ ⟦this⟧ »1828A «
WangText
#…07…"…0b…"…0c…"…0d…"…01…"…05…!…09…!…0c…!…0d…!…0e…!
…08…
…0b…
…0e…
…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.9.4.4 H̲W̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲
4.2.9.4.4.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 module handles HW-reports from
- FMS concerning
- disks and volumes
- TMS concerning
- STI, TIA, LTUX, LTUX ̲LINE, LTU, LTU ̲LINE, and
MAP devices
- WDP concerning
- SB ̲PU, SB CU, non active TDX bus, BSM ̲X devices
FMS and TMS sends error reports to a synchronization
element (DEVICE ̲SE) specified during the assign/create
sub-device commands. The EHD module services the DEVICE
̲SE and sends the reports to CFH ̲OS.
The WDP monitors via the CCB various hardware conditions,
which are reported to WAMCO via a TMS connection. WAMCO
directs the reports to CFH ̲OS.
For a detailed description of the error handling per
device, refer to section 4.1.1.3 and the module component
description.
4.2.9.4.4.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) HW-error-handling (LONG ̲OP:LONG ̲OP ̲TYPE)
b) HW-error-handling (R0, 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̲
R0 pointer LONG ̲OP
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 (destr)
I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲ ̲f̲o̲r̲ ̲o̲t̲h̲e̲r̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲
The flowgram call specification is specified during
module design in the flowgrams.
The SWELL case specification is derived as follows:
- R6 allways LINK
- R0 first call parameter in the procedure parameter
list
- R1 second call parameter in the procedure parameter
list
..etc.
- R7 first return parameter in the procedure parameter
list
- R5 second return parameter in the procedure parameter
list
..etc.
All registers are destroyed at return.
4.2.9.4.4.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The HW-error-handling module references/contains the
procedures/modules specified in fig. 4.2.9.4.4.3-1.
Figure 4.2.9.4.4.3-1
a) H̲W̲-̲E̲R̲R̲O̲R̲-̲H̲A̲N̲D̲L̲I̲N̲G̲
The procedure dispatches to the FMS, TMS and WDP
report handling procedures.
b) F̲M̲S̲-̲E̲R̲R̲O̲R̲-̲H̲A̲N̲D̲L̲I̲N̲G̲
For errors recovered by FMS (e.g. new sector allocation)
a report is printed at the WDP-RDP.
For non-recoverable errors a dispatch is executed
depending on the disk type and an error report
is printed.
c) M̲I̲R̲R̲O̲R̲E̲D̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲
If both mirrored disks are erroneous a PU shut
down is executed.
If one of the mirrored disks is erroneous, then
- the disk is excluded from dualized operation
- the disk table is updated
- the configuration display is updated
d) F̲L̲O̲P̲P̲Y̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲
The floppy disk is dismounted and/or deassigned
depending on the error type and the floppy disk
status.
Also, the disk table and configuration display
is updated.
e) O̲F̲F̲L̲I̲N̲E̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲
As the supervisor handles mount/dismount of the
offline disk no discount is performed by SSC.
The disk is deassigned for a disk controller/driver
error.
The disk table and configuration display is updated.
f) T̲M̲S̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲
The erroneous device is isolated depending on the
- U ̲SDID (user specified device identification)
which is specified as a parameter in TMS assign/create-sub
device system calls.
For PU errors
- STI
- TIA
- MAP
A PU shut down is executed.
For line errors the U ̲SDID.PROFILE specifies if
the line is a
- VDU
- SAD
- EXC
and the U ̲SDID.LOGICAL ̲ND specifies a corresponding
- logical terminal no
- logical device no
- logical channel no.
Based on this information the port-no for the line
is looked up in a profile.
A dispatch is executed to device specific error
handling procedure.
g) L̲T̲U̲X̲ ̲E̲R̲R̲O̲R̲
The LTUX porttable information is looked up in
the LTUX ̲TABLE, the status is set to error and
the LTUX ̲HANDLE procedure is invoked.
The LTUX ̲HANDLE actions corresponds to the actions
taken by the operator (CMI command) command LTUX
̲CONTROL (refer ONLINE ̲OPERATION module), where
new STATUS is set out-of-service or offline.
h) L̲T̲U̲X̲ ̲L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲
Refer LTUX ERROR
i) L̲T̲U̲ ̲E̲R̲R̲O̲R̲
Refer LTUX ̲ERROR.
j) L̲T̲U̲ ̲L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲
Refer LTUX ̲ERROR.
k) W̲D̲P̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲
The WDP sends two types of reports
- CCB reports
- series numbers for WDP ̲REPORTS.
The series numbers are saved.
l) C̲C̲B̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲
A dispatch is executed depending on the report
type.
The WARNING and NORMAL ̲AGAIN reports relate to
e.g.
- power supply voltage
- temperature
monitoring. The reports are printed at the WDP
̲ROP.
m) S̲B̲ ̲P̲U̲ ̲H̲A̲N̲D̲L̲E̲
The standby PU is reported
- down due to e.g. power low or missing keep
alive message
- back as standby subsequent to a standby start
up.
The PU table is updated and the configuration display
updated.
n) N̲O̲N̲ ̲A̲C̲ ̲T̲D̲X̲ ̲H̲A̲N̲D̲L̲E̲
The non active TDX bus is reported
- down
- up
due to TDX controller monitoring.
The PU ̲TABLE and configuration display are updated.
o) B̲S̲M̲ ̲X̲ ̲E̲R̲R̲O̲R̲
Refer LTUX ̲ERROR.
4.2.9.4.4.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Figure 4.2.9.4.4.4-1 defines the contents of the WDP
reports.
Figure 4.2.9.4.4-1
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ ̲(̲i̲n̲ ̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲
COPSY ̲GARBLE ̲PARAMS,
LONG ̲OP ̲TYPE,
L ̲COMMAND ̲TYPE,
TMS ̲REPORT,
FMS ̲RECOVERED ̲REPORT,
FMS ̲HARD ̲REPORT : SSC.COMMON
DISK ̲IN ̲SERVICE,
DISK ̲MOUNTED,
VOLUME ̲ERROR : DBD
SET ̲STATUS,
FLOP ̲DISK, MIR ̲1 ̲DISK, MIR ̲2 ̲DISK, OFFL ̲DISK
:SSC.COMMON
FLOPPY ̲DISK, OFFLINE ̲DISK, MIRRORED ̲1
:DBD
U ̲SDID
:DAMOS
PORT ̲ID,
LTUX ̲REC, LTUX ̲LINE ̲REC, BSM ̲X ̲REC,
LTU ̲REC, LTU ̲LINE ̲REC, DISK ̲PARAM
:DBD
WDP ̲REP ̲COMMAND,
WDP ̲ROP ̲NUMBERS,
WDP ̲INFO
:SSC.COMMON
PU1, PU2, TIA1, TIA2
:DBD
MESS ̲TYPE, DEVICE ̲RECOVERED
IN ̲ONE ̲MIRRORED ̲DISK, IN ̲BOTH ̲MIRRORED ̲DISK,
IN ̲SINGLE ̲DISK,
FMS ̲REPORT ̲TYPE, TMS ̲REPORT ̲TYPE,
FMS ̲INF ̲TYPE, TMS ̲INF ̲TYPE,
DEVICE ̲STATUS,
IN ̲VOLUME, IN ̲DEVICE
:DAMOS
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
MIRR
FLOP,
OFFL,
MAX ̲BSM ̲XS
:DBD
TMS ̲ERROR ̲HANDLING ̲PROC,
CCB ̲REPORT ̲HANDLING ̲PROC,
U ̲SDID ̲PROFILE ̲ERROR,
WDP ̲REP ̲ERROR
:CFH.VARIOUS
ALL ̲MASK
:SSC.COMMON
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
LONG ̲OP,
KEY ̲BUF,
SEND ̲BUF,
ACTIVE ̲TDX ̲BUS ̲NO :CFH.COMMON
CONFIG ̲TABLE,
PU ̲NO: :SSC.COMMON
a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
TERMINAL ̲TABLE,
DEVICE ̲TABLE,
CHANNEL ̲TABLE,
PU ̲TABLE, (m)
BSM ̲X ̲TABLE, (m)
LTUX ̲TABLE, (m)
LTUX ̲LINE ̲TABLE, (m)
LTU ̲TABLE, (m)
LTU ̲LINE ̲TABLE, (m)
DISK ̲TABLE (m):
DBD
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
Status entries within referenced port tables. Terminal,
Device, Channel tables are searched for the PORT
̲ID entry field.
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
CONST STATUS ̲MASK=1
Specify status field in DISK ̲PARAM type
VAR STATUS:DISK ̲STATUS
VAR DISK:MIRRORED ̲1 ..MIRRORED ̲2
VAR DISK:MIRR ̲1 ̲DISK .. MIR ̲2 ̲DISK
CONST READ ̲MASK ̲T, READ ̲MASK ̲0, READ ̲MASK ̲C, specify
port ̲id in profile.
VAR OLD ̲REC, NEW ̲REC: LTUX ̲REC, LTUX ̲LINE ̲REC,
BSM ̲X ̲REC, LTU ̲REC, LTU
̲LINE ̲REC
defined in appropriate procedures
defines (OLD) current device specification
and (NEW) the updated device specification.
VAR PCT ̲ENTRY: PU ̲REC
4.2.9.4.4.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
PROCEDURE
HW ̲ERROR ̲HANDLING (LONG ̲OP: LONG ̲OP ̲TYPE)
BEGIN
EQUIVALENCE (LONG ̲OP.CMD ̲TYPE, CMD ̲TYPE:
L ̲COMMAND ̲TYPE)
CASE LONG ̲OP.CMD ̲TYPE OF
DEVICE ̲ERROR? EQUIVALENCE(LONG ̲OP.CMD,
CMD:REPORT ̲TYPE)
CASE CMD OF
FMS ̲R? FMS ̲ERROR ̲HANDLING
TMS ̲R? TMS ̲ERROR ̲HANDLING
END ̲CASE
WDP ̲CMD? WDP ̲REPORT ̲HANDLING
END ̲CASE
END ̲HW ̲ERRORHANDLING
Figure 4.2.9.4.4.5 ̲1
PROCEDURE
FMS ̲ERROR ̲HANDLING
BEGIN
EQUIVALENCE(LONG ̲OP.INF(1),
FMS ̲REP:FMS ̲REPORT ̲TYPE)
EQUIVALENCE(FMD ̲REP.INF, INF:FMS ̲INF ̲TYPE)
INF.MESS ̲TYPE EQ DEVICE ̲RECOVERED?
REPORT ̲ERROR(FMS ̲RECOVERED ̲REPORT,FMS ̲REP)
CASE INF.DEVICE ̲NAME OF
MIRR? MIRRORED ̲DISK ̲ERROR
FLOP? FLOPPY ̲DISK ̲ERROR
OFFL? OFFICE ̲DISK ̲ERROR
REPORT ̲ERROR(FMS ̲HARD ̲REPORT, FMS ̲REP)
END ̲CASE
END ̲FMS ̲ERROR ̲HANDLING
Figure 4.2.9.4.4.5-2
PROCEDURE
MIRRORED ̲DISK ̲ERROR
CONST STATUS ̲MASK = "select status
field
VAR STATUS: DISK ̲STATUS
VAR DISK: MIRRORED ̲1 .. MIRRORED ̲2
VAR DSK: MIR ̲1 ̲DISK..MIR ̲2 ̲DISK
BEGIN
CASE INF.DISK ̲NO OF
1? DISK=MIRRORED ̲1, DSK=MIR ̲1 ̲DISK
2? DISK=MIRRORED ̲2, DSK=MIR ̲2 ̲DISK
END ̲CASE
CASE INF.MESS ̲TYPE OF
IN ̲ONE ̲MIRRORED ̲DISK?
KEY ̲BUF.KEY=DISK
SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,
STATUS ̲MASK,SEND ̲BUF)(STATUS)
(STATUS NE DISK ̲IN ̲SERVICE) AND
(STATUS NE DISK ̲MOUNTED)
EXCLUDE ̲A ̲MIRRORED ̲DISK(DISK)(CC)
INF.DEVICE ̲STATUS EQ IN ̲VOLUME?
STATUS=VOLUME ̲ERROR
STATUS=DISK ̲ERROR
UPDATE ̲ENTRY(DISK ̲TABLE, SEND ̲BUF, KEY
̲BUF,
STATUS ̲MASK, STATUS)
CONF ̲DISPLAY(SET ̲STATUS, DSK, STATUS)
IN ̲BOTH ̲MIRRORED ̲DISKS?
PU ̲DOWN(FMS ̲HARD ̲REPORT ̲E, FMS ̲REP)
END ̲CASE
END ̲MIRRORED ̲DISK ̲ERROR
Figure 4.2.9.4.4.5-3
PROCEDURE
FLOPPY ̲DISK ̲ERROR
CONST STATUS ̲MASK = 2 "select status field
VAR FLOPPY ̲DATA: DISK ̲PARAM
VAR STATUS: DISK ̲STATUS
BEGIN
STATUS=DISK ̲ERROR
KEY ̲BUF.KEY=FLOPPY ̲DISK
SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,ALL ̲MASK,
SEND ̲BUF)(FLOPPY ̲DATA)
FLOPPY ̲DATA. STATUS EQ DISK ̲MOUNTED?
INF.DEVICE ̲STATUS EQ IN ̲VOLUME?
DISMOUNT ̲DISK(OFFLINE ̲DISK,
FLOPPY ̲DATA.VOLUME)(CC)
STATUS=VOLUME ̲ERROR
DISMOUNT ̲DISK(OFFLINE ̲DISK
FLOPPY ̲DATA.VOLUME) (CC)
DEASSIGN ̲DISK(OFFLINE ̲DISK)
STATUS=DISK ̲ERROR
FLOPPY ̲DISK.STATUS EQ DISK ̲IN SERVICE?
DEASSIGN ̲DISK(FLOPPY
̲DISK)
STATUS=DISK ̲ERROR
UPDATE ̲ENTRY(DISK ̲TABLE,SEND ̲BUF,KEY ̲BUF,
STATUS ̲MASK, STATUS)
CONF ̲DISPLAY(SET ̲STATUS, FLOP ̲DISK, STATUS)
END ̲FLOPPY ̲DISK ̲ERROR
Figure 4.2.9.4.4.5-4
PROCEDURE
OFFLINE ̲DISK ̲ERROR
CONST STATUS ̲MASK=2 "select status
field
VAR STATUS: DISK ̲STATUS
BEGIN
KEY ̲BUF.KEY=OFFLINE ̲DISK
SEARCH ̲ENTRY(DISK ̲TABLE, KEY ̲BUF, STATUS ̲MASK,
SEND ̲BUF)(STATUS)
INF.DEVICE ̲STATUS EQ IN ̲VOLUME?
UPDATE ̲ENTRY(DISK ̲TABLE, SEND ̲BUF, KEY ̲BUF,
STATUS ̲MASK, DISK ̲ERROR)
CONF ̲DISPLAY(SET ̲STATUS, OFFL ̲DISK, DISK ̲ERROR)
END
Figure 4.2.9.4.4.5-5
PROCEDURE
TMS ̲ERROR ̲HANDLING
VAR PORT ̲ID: PORT ̲ID ̲TYPE
VAR G ̲INF: COPSY ̲GARBLE ̲PARAMS
INIT G ̲INF.ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
G ̲INF.USER ̲ACTION= CONTINUE
G ̲INF.ERROR ̲COR = CFH ̲COR
G ̲INF.ERROR ̲LOC = TMS ̲ERROR ̲HANDLING ̲PROC
BEGIN
EQUIVALENCE(LONG ̲OP.INF(1),TMS ̲REP:TMS ̲REPORT ̲TYPE)
EQUIVALENCE(TMS ̲REP.INF, INF:TMS ̲INF ̲TYPE)
KEY ̲BUF.KEY=INF.U ̲SDID.LOGICAL ̲NO
CASE INF.U ̲SDID.PROFILE OF
TERMINAL ̲P? SEARCH ̲ENTRY(TERMINAL ̲TABLE, KEY
̲BUF,
READ ̲MASK ̲T, SEND ̲BUF)(PORT ̲ID)
INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
LTUX ̲LINE ̲ERROR (PORT ̲ID.NO)
DEVICE ̲P? SEARCH ̲ENTRY(DEVICE ̲TABLE,KEY
̲BUF,
READ ̲MASK ̲D,SEND ̲BUF)(PORT ̲ID)
INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
LTUX ̲LINE ̲ERROR(PORT ̲ID.NO)
CHANNEL ̲P? SEARCH ̲ENTRY(CHANNEL ̲TABLE,
KEY ̲BUF,READ ̲MASK ̲C,SEND ̲BUF)
(PORT ̲ID)
INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
PORT ̲ID.TABLE EQ LTU ̲LINE ̲TABLE?
LTUX ̲LINE ̲ERROR(PORT ̲ID.NO)
LTU ̲LINE ̲ERROR(PORT ̲ID.NO)
LTUX ̲P? LTUX ̲ERROR(INF.U ̲SDID.PORT ̲NO)
…02……02… LTU ̲P? LTU ̲ERROR(INF.U ̲SDID.PORT ̲NO)
STI ̲P,
TIA ̲P,
MAP ̲P? PU ̲DOWN(TMS ̲REPORTE,TMS ̲REP)
OTHER?
G ̲INF.ERROR ̲INFO(1)=U ̲SDID ̲PROFILE
̲ERROR
COPSY ̲SEND ̲GARBLE(LONG ̲OP,G ̲INF)
END ̲CASE
REPORT ̲ERROR(TMS ̲REPORT, TMS ̲REP)
END ̲TMS ̲ERROR ̲HANDLING
Figure 4.2.9.4.4.5-6
PROCEDURE
LTUX ̲ERROR(LTUX ̲NO:1.. MAX ̲LTUXS)
VAR OLD ̲REC, NEW ̲REC : LTUX ̲REC
VAR CC : INTEBER
BEGIN
KEY ̲BUF.KEY=LTUX ̲NO
SEARCH ̲ENTRY(LTUX ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
̲REC)
NEW ̲REC=OLD ̲REC
NEW ̲REC.STATUS=ERROR
LTUX ̲HANDLE(OLD ̲REC, NEW ̲REC)(CC)
END ̲LTUX ̲ERROR
Figure 4.2.9.4.4.5 ̲7
PROCEDURE
LTUX ̲LINE ̲ERROR (LINE ̲NO :1 .. MAX ̲LTUX ̲LINES)
VAR NEW ̲REC, OLD ̲REC : LTUX ̲LINE ̲REC
VAR CC.INTEGER
BEGIN
KEY ̲BUF.KEY=LINE ̲NO
SEARCH ̲ENTRY (LTUX ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
SEND ̲BUF)
(OLD ̲REC)
NEW ̲REC=OLD ̲REC
NEW ̲REC.STATUS=ERROR
LTUX ̲LINE ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)
END ̲LTUX ̲LINE ̲ERROR
Figure 4.2.9.4.4.5 ̲8
PROCEDURE
LTU ̲ERROR (LTU ̲NO : 1.. MAX ̲LTUS)
VAR OLD ̲REC, NEW ̲REC : LTU ̲REC
VAR CC : INTEGER
BEGIN
KEY ̲BUF.KEY=LTU ̲NO
SEARCH ̲ENTRY(LTU ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
̲REC)
NEW ̲REC=OLD ̲REC
NEW ̲REC.STATUS=ERROR
LTU ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)
END ̲LTU ̲ERROR
Figure 4.2.9.4.4.5-9
PROCEDURE
LTU ̲LINE ̲ERROR (LINE ̲NO : 1.. MAX ̲LTU ̲LINES)
VAR NEW ̲REC, OLD ̲REC : LTU ̲LINE ̲REC
VAR CC.INTEGER
BEGIN
KEY ̲BUF.KEY=LINE ̲NO
SEARCH ̲ENTRY (LTU ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
SEND ̲BUF)
(OLD ̲REC)
NEW ̲REC=OLD ̲REC
NEW ̲REC.STATUS=ERROR
LTU ̲LINE ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)
END ̲LTU ̲LINE ̲ERROR
Figure 4.2.9.4.4.5 ̲10
PROCEDURE
WDP ̲REPORT ̲HANDLING
VAR SAVE ̲WDP ̲ROP ̲REPORT ̲NUMBERS : WDP ̲ROP ̲NUMBERS
BEGIN
EQUIVALENCE (LONG ̲OP.CMD, CMD : WDP ̲REP ̲COMMAND)
CASE CMD OF
CCB ̲REPORT? CCB ̲REPORT ̲HANDLING
REPORT ̲NUMBER?
EQUIVALENCE (LONG ̲OP.INF(1), ROP ̲NOS :
WDP
̲ROP ̲NUMBERS)
SAVE ̲WDP ̲ROP ̲REPORT ̲NUMBERS = ROP ̲NOS
END ̲CASE
END ̲WDP ̲REPORT ̲HANDLING
Figure 4.2.9.4.4.5 ̲11
PROCEDURE CCB ̲REPORT ̲HANDLING
VAR PCT ̲ENTRY:PU ̲REC
VAR G ̲INF:COPSY ̲GARBLES ̲PARAMS
INIT G ̲INF.ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
G ̲INF.USER ̲ACTION = CONTINUE
G ̲INF.ERROR ̲COR = CFH ̲COR
G ̲INF.ERROR ̲LOC = CCB ̲REPORT ̲HANDLING ̲PROC
VAR PCT ̲ENTRY:PU ̲REC
BEGIN
EQUIVALENCE (LONG ̲OP.INF(1), WDP ̲REP : WDP ̲INFO)
CASE WDP ̲REP OF
SB ̲PU ̲DOWN? SB ̲PU ̲HANDLE (ERROR)
SB ̲PU ̲UP? SB ̲PU ̲HANDLE (STANDBY)
SB ̲CU ̲DOWN?
SB ̲CU ̲UP?
NON ̲AC ̲TDX ̲DOWN? NON ̲AC ̲TDX ̲HANDLE (ERROR)
NON ̲AC ̲TDX ̲UP? NON ̲AC ̲TDX ̲HANDLE (IN ̲SERVICE)
BSM ̲X ̲DOWN? EQUIVALENCE (LONG ̲OP.INF(2),
BSM ̲X ̲NO : 1.. MAX
̲BSM ̲XS)
BSM ̲X ̲ERROR (BSM ̲X ̲NO)
WARNING,
NORMAL ̲AGAIN?
OTHER? G ̲INF.ERROR ̲INFO = WDP ̲REP ̲ERROR
COPSY ̲SEND ̲GARBLE (LONG ̲OP, G ̲INF)
END CASE
EQUIVALENCE(LONG ̲OP.INF(1),REPORT ̲INF:ARRAY(1..28)OF
BYTES)
REPORT ̲ERROR(WDP ̲MON ̲REPORT, REPORT ̲INF)
END ̲CCB ̲REPORT ̲HANDLING
Figure 4.2.9.4.4.5-12
PROCEDURE
SB ̲PU ̲HANDLE (STATUS: HW ̲STATUS)
BEGIN
KEY ̲BUF.KEY=1
UPDATE ̲ENTRY(PU ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL ̲MASK,
PCT ̲ENTRY)
CASE PU ̲NO OF
1? PCT ̲ENTRY.PU ̲2 ̲STATUS=STATUS
CONF ̲DISPLAY(SET ̲STATUS, PU2, STATUS)
2? PCT ̲ENTRY.PU ̲1 ̲STATUS=STATUS
CONF ̲DISPLAY(SET ̲STATUS, PU1, STATUS)
END ̲CASE
CONFIG ̲TABLE.PU ̲N(3-PU ̲NO) = STATUS
END ̲SB ̲PU ̲HANDLE
Figure 4.2.9.4.4.5 ̲13
PROCEDURE
NON ̲AC ̲TDX ̲HANDLE (STATUS : HW ̲STATUS)
BEGIN
KEY ̲BUF.KEY=1
UPDATE ̲ENTRY (PU ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL ̲MASK,
PCT ̲ENTRY)
CASE ACTIVE ̲TDX ̲BUS ̲NO OF
1? PCT ̲ENTRY.TDX ̲2 ̲STATUS=STATUS
CONF ̲DISPLAY (SET ̲STATUS,TIA2, STATUS)
2? PCT ̲ENTRY.TDX ̲1 ̲STATUS=STATUS
CONF ̲DISPLAY (SET ̲STATUS, TIA1, STATUS)
END ̲CASE
CONFIG ̲TABLE.TDX(3-PU ̲NO) = STATUS
END ̲NON ̲AC ̲TDX ̲HANDLE
Figure 4.2.9.4.4.5 ̲14
PROCEDURE
BSM ̲X ̲ERROR (BSM ̲X ̲NO : 1.. MAX ̲BSM ̲XS)
VAR NEW ̲REC, OLD ̲REC : BSMX ̲REC
VAR CC : INTEGER
BEGIN
KEY ̲BUF.KEY=BSM ̲X ̲NO
SEARCH ̲ENTRY (BSM ̲X ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND
̲BUF)(OLD ̲REC)
NEW ̲REC=OLD ̲REC
NEW ̲REC.STATUS=ERROR
BSM ̲X ̲HANDLE (NEW ̲REC)(CC)
BSM ̲X ̲LTUX ̲CONTROL (OLD ̲REC, NEW ̲REC) (CC)
END
Figure 4.2.9.4.4.5-15
4.2.9.4.5 O̲r̲d̲e̲r̲e̲d̲ ̲C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲
4.2.9.4.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 ordered close-down command makes it possible
to close a CAMPS system at a time, where no
- terminal activities
- channel activities
- device activities
take place.
The queues are not empty, but the processing
is stopped after a complete of a transaction.
The operator specifies a time-period, within
which the above activities has to be terminated.
For VDUs the users are notified in the system
line about the time when the system is closed.
It is then the responsibility of the users
to complete processing within the specified
time of day.
The CFH role is to notify TEMCO.
For devices and channels the sub-processes
handling the devices/channels are notified
via a command in an input command queue. The
close ̲command will make the sub-processes stop
processing when a complete message is processed.
When the time period elapses a "final" close
̲down command is sent to all
- VDU
- device
- channel
sub-processes (via TEMCO, DEMCO, CEMCO). Hereby
a cancel/suspend action is executed.
Having closed the line handling process, the
non ̲line processes are stopped one by one in
the following sequence:
- OLD
- AAS
- ACS
- UMAM
- SPIP
- MDP
- LOG
- STP
- SAR
Hereafter the CMD, REPORT ̲ERROR and SEH coroutines
are notified. They will empty input queues/semaphores
and send a reply upon completion (via the COUNT
coroutine).
The disks in ̲service are
- dismounted and
- deassigned
and a reply is sent to the CMI, which will
notify the operator. Having done so, CMI will
send a command to CFH, which will command the
WDP to master ̲clear the PU and if ordered-switchover
switchover to the standby PU.
4.2.9.4.5.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) ORDERED ̲CLOSE ̲DOWN (PHASE:PHASE ̲TYPE, TIME:MINUTES,
CLOSE ̲DOWN ̲METHODE:CLOSE ̲DOWN
̲TYPE)
b) ORDERED ̲CLOSE ̲DOWN (R0, R1, R2, R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲t̲i̲o̲n̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 PHASE
R1 TIME
R2 CLOSE ̲DOWN ̲METHODE
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0-R7 (destr.)
4.2.9.4.5.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The ORDERED ̲CLOSE ̲DOWN module references contains the
procedures specified in Figure 4.2.9.4.5.3-1
Figure 4.2.9.4.5.3-1
4.2.9.4.5.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
PHASE ̲TYPE
ORDERED ̲SWITCHOVER
CLOSE ̲DOWN ̲TYPE :CFH.VARIOUS
CMI ̲CMD ̲L, CMD ̲SEH ̲CLOSED,
FINAL ̲CLOSE ̲DOWN ̲EVENT,
CLOSE ̲INITIAL, CLOSE ̲FINAL,
COPSY ̲GARBLE ̲PARAMS
SSC ̲COMMAND, CLOSE ̲DOWN
REPORT ̲ERROR ̲COR,
STOP ̲COR, SEH ̲COR, CLOSE ̲COR :SSC.COMMON
REQUEST ̲TIME,
SEND ̲PARAMS, CAPABILITY ̲INDEX,
SUBQUEUE ̲REFERENCE, MINUTE :DBD.CSF
PU1, PU2,
MIR ̲1 ̲FIXED ,
MIR ̲1 ̲MOVING,
MIRRORED ̲1 ,
OFFLINE ̲DISK,
FLOPPY ̲DISK ,
IN ̲SERVICE :DBD
SET ̲STATUS,
SWITCHOVER, RESET,
ORDERED ̲CLOSE ̲E :SSC.COMMON
a2) C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
NO ̲OF ̲VDUS, NO ̲OF ̲SADS, NO ̲OF ̲EXCS :DBD
CLOSE ̲DOWN ̲PROCESS ̲PROC,
NO ̲OF ̲OUTSTANDING ̲ANSWERS,
ANSWER ̲ERROR :CFH.VARIOUS
a3) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
SYQ, TIM ̲Q,
OLD ̲Q, COPSY ̲COMMAND, OLD ̲RQ, SSC ̲ACK,
ANQ, AAS, AAS ̲RQ, THP ̲ACK
COQ, ACS ̲RQ,
UMAM ̲CMDQ, UMAM ̲RQ, TEP ̲ACK,
SPIP ̲CMDQ, SPIP ̲RQ,
MDQ, MDP ̲RQ, MDP ̲ACK,
SYSTEM ̲Q, IN ̲COMM ̲Q, LOG ̲RQ, LOG ̲ACK,
STPRQ, SSC ̲Q, STP ̲RQ, STP ̲ACK,
SCQ, SSC ̲Q, SAR ̲RQ, SAR ̲ACK
PRC ̲RQ : DBD
COUNT ̲ANSWER,
KEY ̲BUF,
SEND ̲BUF : SSC.COMMON
LONG ̲OS, CFH ̲S,
PU ̲NO : SSC.COMMON
a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
DISK ̲TABLE
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
DISK ̲TABLE().STATUS
DISK ̲TABLE().VOLUME
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
VAR HOW ̲TO ̲CLOSE ̲DOWN:CLOSE ̲DOWN ̲TYPE
"used to keep the information about a switchover
shall be performed or not, when the system
is closed. It is set by INITIAL ̲CLOSE ̲DOWN
and read by CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSE.
VAR PARAMS:SEND ̲PARAMS
"used for sending request to non-line processes,
indicating close ̲down. The parameters are set
in CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES and send in
CLOSE ̲DOWN ̲PROCESS.
VAR REQUEST ̲QUEUE:QUEUE ̲REFERENCE
"used to indicate whereto a close ̲down ̲command
shall be sent. Is set in CLOSE ̲DOWN ̲PROCESS.
VAR ANSWER ̲QUEUE:QUEUE ̲REFERENCE
"used to indicate whereto an ACK corresponding
to a close ̲down ̲command shall be sent. Is set
in CLOSE ̲DOWN ̲PROCESS.
VAR TIMEOUT ̲REQUEST:REQUEST ̲TIME
"used to send a request to TMON for a timeout.
Is used by INITIAL ̲CLOSE ̲DOWN.
VAR STATUS:DISK ̲STATUS
"local variable for CLOSE ̲THE ̲REST ̲OF ̲CAMPS.
Used to keep the status for a disk. Is a return
parameter for SEARCH ̲ENTRY.
VAR PU ̲ID:PU1..PU2
VAR G ̲INF:COPSY ̲GARBLE ̲PARAMS.
4.2.9.4.5.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
a) O̲R̲D̲E̲R̲E̲D̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲
N̲a̲r̲r̲a̲t̲i̲e̲s̲
Depending on the call parameter PHASE it calls
a procedure for further action.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-1
b) I̲N̲I̲T̲I̲A̲L̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Sets HOW ̲TO ̲CLOSE ̲DOWN to CLOSE ̲DOWN ̲METHODE.
Notifies all TEMCO, DEMCO, CEMCO coroutines, that
an initial close-down is to take place.
A time out corresponding to time period specified
by the operator is requested. The time out is received
in the SYQ. CMD transforms the time out event type
"final ̲close ̲down ̲event" into a long operation,
where:
CMD ̲TYPE = CMI ̲CMD ̲L
CMD = CLOSE ̲DOWN ̲FINAL
I̲n̲t̲e̲r̲f̲a̲c̲e̲
c) F̲I̲N̲A̲L̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲
Receives a LONG ̲OP from LONG ̲OS in the variable
COUNT ̲ANSWER and sets the parameter in this. Initializes
CFH ̲S to minus the number of line coroutines. Sends
a CLOSE ̲FINAL command to the line coroutines.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-3
d) C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲N̲O̲N̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲C̲E̲S̲S̲E̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Sets the close-down parameters in a QEL, which
is sent to the non-line-process for close-down.
Sends stop-command to non-line-process.
Stops the CMA and SEH coroutines
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-4
e) C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲P̲R̲O̲C̲E̲S̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
The queue-references whereto a close ̲down command
shall be sent is set. The queue ̲reference where
the answer is inspected is set. The close ̲down
command is sent. The procedure wait time limit
on the answerqueue for an ack. At last the answer
is checked.
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) CLOSE ̲DOWN ̲PROCESS (MAIN ̲RQ:CAPABILITY ̲INDEX,
SUB ̲RQ:SUBQUEUE ̲INDEX
SUB ̲AQ:SUBQUEUE ̲INDEX
ANSWER:
b) CLOSE ̲DOWN ̲PROCESS (R0, R1, R2, R3, RG)
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̲
R0 MAIN ̲RQ
R1 SUB ̲RQ
R2 SUB ̲AQ
R3 ANSWER
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲
R0-R7 destr.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-5
f) S̲E̲N̲D̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲C̲M̲D̲ ̲T̲O̲ ̲C̲M̲D̲ ̲S̲E̲H̲ ̲R̲E̲P̲O̲R̲T̲ ̲E̲R̲R̲O̲R̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Sets the NO ̲OF ̲OUTSTANDING ̲ANSWERS at COUNT to
3.
Receives a long operation, which is to be used
by COUNT to send a reply when NO ̲OF ̲OUTSTANDING
̲ANSWERS
is 0. Sends stop commands to CMD ̲REPORT ̲ERROR and
SEH.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-6
g) C̲L̲O̲S̲E̲ ̲T̲H̲E̲ ̲R̲E̲S̲T̲ ̲O̲F̲ ̲C̲A̲M̲P̲S̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲s̲
Dismounts and deassigns the mirrored disks. Finds
the status of the floppy disk. If the status is
IN ̲SERVICE or MOUNTED then the disk is dismounted
and/or deassigned. The same is done to the offline
disk. Updates the configuration display and send
a reply to CMI.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-7
h) S̲E̲N̲D̲ ̲C̲M̲I̲ ̲R̲E̲P̲L̲Y̲ ̲W̲H̲E̲N̲ ̲S̲Y̲S̲T̲E̲M̲ ̲C̲L̲O̲S̲E̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲
Decides, whether to close-down or switchover.
Master cleares the PU.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.9.4.5.5-8
PROCEDURE
ORDERED ̲CLOSE ̲DOWN (PHASE: PHASE ̲TYPE, TIME:INTEGER,
CLOSE ̲MODE:CLOSE
̲DOWN ̲TYPE)
BEGIN
CASE PHASE OF
INITIAL? INITIAL ̲CLOSE ̲DOWN
"the close ̲down active PU command
is
received
FINAL? FINAL ̲CLOSE ̲DOWN
"the time ̲out period specified
by the
operator has elapsed
LINE ̲PROCESSES ̲CLOSED? CLOSE ̲DOWN ̲NON ̲LINE
̲PROCESSES
"TEMCO, DEMCO, CEMCO has closed
line
subprocesses
COPSY ̲ENVIRONMENT ̲CLEANED ̲UP?
CLOSE ̲DOWN ̲THE ̲REST ̲OF ̲CAMPS
"CMD and SEH are stopped and
all
childprocesses are cleaned up
TERMINATED? CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED
"CMI has notified the operator
END ̲CASE
END ̲ORDERED ̲CLOSE ̲DOWN
Figure 4.2.9.4.5.5 ̲1
PROCEDURE
INITIAL ̲CLOSE ̲DOWN
VAR HOW ̲TO ̲CLOSE: CLOSE ̲DOWN ̲TYPE ("common module variable)
VAR TIME ̲OUT ̲REQUEST: REQUEST ̲TIME
BEGIN
HOW ̲TO ̲CLOSE ̲DOWN = CLOSE ̲MODE
COMMON ̲NDTIFY ̲LINE ̲COROUTINES (CLOSE ̲INITIAL, TIME)
TIMEOUT ̲REQUEST ̲QUEUE.MAINQUEUE = SYQ
TIMEOUT ̲REQUEST.QUEUE.SUBQUEUE = TIM ̲Q
TIMEOUT ̲REQUEST.FORMAT = MINUTE
TIMEOUT ̲REQUEST.PERIOD = TIME
TIMEOUT ̲REQUEST.EVENT ̲ID = FINAL ̲CLOSE ̲DOWN ̲EVENT
CASE REQUEST ̲TIMEOUT (TIMEOUT ̲REQUEST)(CC)
ERROR? ANALYZE ̲ERROR (CC,0)
END CASE REQUEST ̲TIME ̲OUT
END PROCEDURE INITIAL ̲CLOSE ̲DOWN
Figure 4.2.9.4.5.5-2
PROCEDURE
FINAL ̲CLOSE ̲DOWN
BEGIN
WAIT ̲OPSEM (LONG ̲OS)(COUNT ̲ANSWER)
COUNT ̲ANSWER.CMD ̲TYPE = CMI ̲CMD ̲L
COUNT ̲ANSWER.CMD = TEMCO ̲DEMCO ̲CEMCO ̲CLOSED
NO ̲OF ̲OUTSTANDING ̲ANSWERS = NO ̲OF ̲VDUS + NO ̲OF
̲SADS + NO ̲OF ̲EXCS
COMMON ̲NOTIFY ̲LINE ̲COROUTINES (CLOSE ̲FINAL, 0)
END ̲FINAL ̲CLOSE ̲DOWN
Figure 4.2.9.4.5.5-3
PROCEDURE CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES
VAR PARAMS: SEND ̲PARAMS
BEGIN
PARAMS.INFORMATION ̲TYPE = FALSE
PARAMS.CHECKP ̲STATUS = FALSE
PARAMS.PROFILE = 0
PARAMS.HEADER.MAINTYPE = SSC ̲COMMAND
PARAMS ̲HEADER.SUBTYPE = CLOSE ̲DOWN
CLOSE ̲DOWN ̲PROCESS (OLD ̲Q,COPSY ̲COMMAND,OLD ̲RQ,
SSC ̲ACK)"OLD
CLOSE ̲DOWN ̲PROCESS (ANQ, 1, AAS ̲RQ, THP ̲ACK)
"AAS
CLOSE ̲DOWN ̲PROCESS (COQ, 1, ACS ̲RQ, THP ̲ACK)
"ACS
CLOSE ̲DOWN ̲PROCESS (UMAM ̲CMDQ, 0, UMAM ̲RQ, TEP
̲ACK) "UMAM
CLOSE ̲DOWN ̲PROCESS (SPIP ̲CMDQ, 0, SPIP ̲RQ, TEP
̲ACK) "SPIP
CLOSE ̲DOWN ̲PROCESS (MDQ, 1, MDP ̲RQ, MDP ̲ACK)
"MDP
CLOSE ̲DOWN ̲PROCESS (SYSTEM ̲Q, IN ̲COMM ̲Q, LOG ̲ACK)
"LOG
CLOSE ̲DOWN ̲PROCESS (STP.RQ, SSC ̲Q, STP ̲RQ, STP
̲ACK) "STP
CLOSE ̲DOWN ̲PROCESS (SCQ, SSC ̲Q, SAR ̲RQ, SAR ̲ACK)
"SAR
CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH
END ̲CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES
Figure 4.2.9.4.5.5-4
PROCEDURE
CLOSE ̲DOWN ̲PROCESS
(MAIN ̲R Q: CAPABILITY ̲INDEX,SUB ̲RQ:SUBQUEUE
̲REFERENCE,
SUB ̲AQ: SUB ̲QUEUE ̲REFERENCE, ANSWER:INTEGER)
VAR SUBQ : SUBQUEUE ̲INDEX
VAR REQUEST ̲QUEUE = ANSWER ̲QUEUE: QUEUE ̲REFERENCE
VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
VAR ANSWERQEL: QEL ̲REFERENCES
VAR ANSWERATT: QEL ̲ATTRIBUTES
VAR SUBQ: SUBQUEUE ̲INDEX
VAR CC: INTEGER
INIT
G ̲INF.USER ̲ACTION = CONTINUE
G ̲INF.ERROR ̲COR = CFH ̲COR
G ̲INF.ERROR ̲COC = CLOSE ̲DOWN ̲PROCESS ̲COR
BEGIN
REQUEST ̲QUEUE.MAINQUEUE = MAIN ̲RQ
REQUEST ̲QUEUE, SUBQUEUE = SUB ̲RQ
ANSWER ̲QUEUE.MAINQUEUE = PRC ̲RQ
ANSWER ̲QUEUE.SUBQUEUE = SUB ̲AQ
CASE SEND ̲REQUEST (PARAMS, NIL, REQUEST ̲QUEUE,
ANSWER ̲QUEUE)
(PARAMS, CC)
ERROR? ANALYZE ̲ERROR (CC,0)
END CASE SEND ̲REQUEST
WAIT ̲TIME ̲LIMITED ̲ON ̲QUEUE (ANSWER ̲QUEUE, TIME
̲TO ̲CLOSE)
(ANSWERQEL, ANSWERATT,
SUBQ, CC)
CASE CC OF
NOK? G ̲INF.ERROR ̲TYPE = COPSY ̲TIMEOUT
̲ERROR
G ̲INF.ERROR ̲INFO.DEST ̲Q.MAINQUEUE
= MAIN ̲RQ
G ̲INF.ERROR ̲INFO.DESTR ̲Q.SUBQUEUE
= SUB ̲RQ
G ̲INF.ERROR ̲INFO.REP ̲Q.MAINQUEUE
= PRC ̲RQ
G ̲INF.ERROR ̲INFO.REP ̲Q.SUBQUEUE
= SUB ̲AQ
COPSY ̲SEND ̲GARBLE (ANSWERQEL, G ̲INF)
OK?
ANSWERATT.HEADER.MAINTYPE NE ACK LOGOR
ANSWERATT.HEADER.SUBTYPE NE ANSWER
G ̲INF.ERROR ̲TYPE = COPSY ̲Q ̲ERROR
̲INFO?
G ̲INF.ERROR ̲INFO.INFO(1) = ANSWER
̲ERROR
G ̲INF.ERROR ̲INFO.Q.MAIN ̲QUEUE = PRC
̲RQ
G ̲INF.ERROR ̲INFO.Q.SUB ̲QUEUE = SUB
̲AQ
COPSY ̲SEND ̲GARBLE (ANSWERQEL, G ̲INF)
END CASE WAIT ̲LIMITED
END ̲CLOSE ̲DOWN ̲PROCESS
Figure 4.2.9.4.5.5 ̲5
PROCEDURE
SEND ̲CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH ̲REPORT ̲ERROR
BEGIN
NO ̲OF ̲OUTSTANDING ̲ANSWERS = 3
WAIT ̲OPSEM (LONG ̲OP)(COUNT ̲ANSWER)
COUNT ̲ANSWER.CMD ̲TYPE = CMS ̲CMD ̲L
COUNT ̲ANSWER.CMD = CMD ̲SEH ̲CLOSED
NOTIFY ̲CMD (STOP ̲COR)
NOTIFY ̲LONG (SEH ̲COR, CLOSE ̲COR)
NOTIFY ̲LONG(REPORT ̲ERROR ̲COR, CLOSE ̲COR)
END ̲SEND ̲CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH
Figure 4.2.9.4.5.5 ̲6
PROCEDURE
CLOSE ̲THE ̲REST ̲OF ̲CAMPS
VAR PU ̲ID: PU1..PU2
CONST READ ̲MASK = 1 "status
VAR STATUS: DISK ̲STATUS
BEGIN
DISMOUNT ̲DISK (MIR1 ̲FIXED)(CC)
DISMOUNT ̲DISK (MIR1 ̲MOVING)(CC)
DEASSIGN ̲DISK (MIRRORED1)
"deassign both mirrored disks
KEY ̲BUF.KEY = OFFLINE ̲DISK
SEARCH ̲ENTRY (DISK ̲TABLE,KEY ̲BUF,READ ̲MASK,SEND
̲BUF)(STATUS)
STATUS EQ IN ̲SERVICE? DEASSIGN ̲DISK (OFFLINE ̲DISK)
KEY ̲BUF.KEY = FLOPPY ̲DISK
SEARCH ̲ENTRY (DISK ̲TABLE,KEY ̲BUF,READ ̲MASK,SEND
̲BUF)(STATUS)
CASE STATUS OF
IN ̲SERVICE? DEASSIGN ̲DISK (FLOPPY ̲DISK)
MOUNTED? DISMOUNT ̲DISK (FLOPPY ̲DISK)(CC)
DEASSIGN ̲DISK (FLOPPY ̲DISK)
END CASE
CASE PU ̲NO OF
1? PU ̲ID = PU1
2? PU ̲ID = PU2
END CASE
CONF ̲DISPLAY (SET ̲STATUS, PU ̲ID, IN ̲SERVICE)
SEND ̲CMI ̲REPLY (CMI ̲QEL, EXEC ̲OK)
END ̲CLOSE ̲THE ̲REST ̲OF ̲CAMPS
Figure 4.2.9.4.5.5-7
PROCEDURE
CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED
BEGIN
HOW ̲TO ̲CLOSE EQ ORDERED ̲SWITCHOVER?
WDP ̲CONTROL (SWITCHOVER, NIL,
NIL)
WDP ̲CONTROL (RESET, PU ̲NO, NIL)
PU ̲DOWN (ORDERED ̲CLOSE) "the PU is master cleared
END CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED
Figure 4.2.9.4.5.5-8