top - download
⟦bdbf0de94⟧ Wang Wps File
Length: 12272 (0x2ff0)
Types: Wang Wps File
Notes: Spelunked
Names: »~ORPHAN42.08«
Derivation
└─⟦11f497f33⟧ Bits:30005812 8" Wang WCS floppy, CR 0119A
└─ ⟦this⟧ »~ORPHAN42.08«
WangText
…14……00……00……00……00…*…0a……00……00…*…0b…*…00…*…05…*…06…)…08…)…09…)…0a…)…0d…)…0f…)…02…)…06…(…09…(…0b…(…00…(…02…(…06…'…0b…'…0d…'…00…'…86…1 …02… …02… …02…
#
…02…CPS/SDS/036
…02…841115…02……02…
SUPERVISOR PRINTER
DETAILED DESIGN SPECIFICATION…02…ISSUE 1…02…CAMPS
4.2.2.2 D̲E̲L̲C̲O̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The Software Structure of DELCO is shown in Fig. 4.2.2.2-1
through Fig. 4.2.2.2.-8.
In the following, a functional description of each
module i given.
a) D̲E̲L̲C̲O̲ ̲M̲A̲I̲N̲
The module is called by the coroutine monitor upon
initialization of the subpackage. It also contains
the main loop for the subpackage.
b) I̲N̲I̲T̲I̲A̲L̲I̲Z̲E̲ ̲D̲E̲L̲C̲O̲
The module initializes appropriate DELCO variables
and make the coroutine ready to run and receive
input.
c) P̲R̲O̲C̲ ̲S̲P̲I̲C̲O̲ ̲I̲T̲E̲M̲S̲
The various commands received from SPICO are processed
by this module.
The possible commands are:
CLOSE, CONFIG ̲CHANGE,
PRINTQ ̲CANCELLED,
PRINTQ ̲UNBLOCKED
The CLOS command is also passed on to RESCO. Completion
is always reported to SPICO.
d) P̲R̲O̲C̲ ̲R̲E̲S̲C̲O̲ ̲I̲T̲E̲M̲
The items received from RESCO is processed by this
module.
Print items are delivered to the appropriate printer
process, UMAM-Requests are sentto UMAM. CLOSE
̲CCs will stop DELCO actions and cause a CLOSE ̲CC
to be sent to SPICO.
e) P̲R̲O̲C̲ ̲A̲N̲S̲Q̲ ̲I̲T̲E̲M̲
This module processes the replies received from
PRIS and UMAM. If the request was originally caused
by a RESCO item, the reply will be passed on to
RESCO.
) D̲E̲L̲I̲V̲E̲R̲ ̲I̲T̲E̲M̲
All print items, except requests, are delivered
by this module. If the destination queue is blocked,
the delivery to it will be stopped until the queue
is unblocked or a configuration change takes place.
g) D̲E̲L̲I̲V̲E̲R̲ ̲R̲E̲Q̲U̲E̲S̲T̲
Tis module delivers all function requests to the
appropriate printer queues. A reference to the
original function request QEL is saved in order
to be abled to send reply even if the request to
or reply from PRIS is lost. In case of a blocked
PRIS ̲ueue, the actions taken are the same as for
DELIVER ̲ITEM.
h) D̲E̲L̲C̲O̲ ̲R̲E̲P̲L̲Y̲
The module sends reply to the function request
print items originally sent to SPIP. This takes
place when PRIS has indicated print completion
by sending a reply or when he print queue is blocked.…86…1
…02… …02… …02… …02…
Fig. 4.2.2.2-1/9…86…1 …02… …02… …02… …02…
4.2.2.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
The following HIPO-diagrams and the module tree show
the data flow and control logic of DELCO.
Functional description of each module can be ound in
sec. 4.2.2.2.
For detailed description of the module logic, refer
to the module design flowgrams for each module (sec.
4.2.2.4).…86…1 …02… …02… …02… …02…
Diag. 4.2.2.3-1/12…86…1 …02… …02… …02… …02…
Fig. 4.2.2.3-13
4.2.2.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲
4.2.2.4.1 D̲E̲L̲C̲O̲ ̲M̲A̲I̲N̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.2.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 module is called by the coroutine monitor upon
initialization of te subpackage. It also contains
the subpackage main loop.
4.2.2.4.1.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) DELCO ̲MAIN
b) DELCO ̲MAIN (R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R6 LINK (DEST.)
R̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
None
4.2.2.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
N/A
4.2.2.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Ref. SOURCE LISTING…86…1 …02… …02… …02… …02… …02… …02…
4.2.2.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
The module initializes the subpackage by calling the
INITIALIZE ̲DELCO module. It determines the type of
input item by testing the ID of the operation dlivered
when SPIP ̲S2 is signalled.
Ref. Fig. 4.2.2.4.1-1 and Fig. 4.2.2.4.1-2.…86…1…02…
…02… …02… …02… …02… …02… …02…
DELCO ̲MAIN
I̲N̲I̲T̲I̲A̲L̲I̲Z̲E̲ ̲D̲E̲L̲C̲O̲ (4.2.2.4.2)
DELCO ̲MAIN ̲LOOP
WAIT ̲OPSEM (SPIP ̲S2)(OPERATION): OK
DELCO ̲CLOSED ̲FLAG = TRUE ?
CASE OPERATION.ID OF
SPICO ̲ITEM? P̲R̲O̲C̲ ̲S̲P̲I̲C̲O̲ ̲I̲T̲E̲M̲S̲ (4.2.2.4.3
)
RESCO ̲ITEM ? P̲R̲O̲C̲ ̲R̲E̲S̲C̲O̲ ̲I̲T̲E̲M̲S̲ (4.2.2.4.4
)
ANSQ ̲ITEM ? P̲R̲O̲C̲ ̲A̲N̲S̲Q̲ ̲I̲T̲E̲M̲ (4.2.2.4.6
)
REPQ ̲ITEM, SUPQ ̲ITEM, LOGQ ̲ITEM, STAQ ̲ITEM
?
PROC ̲DELIVERY ̲TEM( -2 )
OTHERWISE ? ERROR ̲REP(INT,GUP,DELC,NO ̲DELCO
MAIN,0,1,NIL)
END ̲CASE
END DELCO ̲MAIN ̲LOOP
END
Fig. 4.2.2.4.1-1…86…1…02… …02… …02… …02… …02… …02… …02…
PROC ̲DELIVERY ̲ITEMS
SEARCH OP IN INIT ̲RECV ̲DELIVERY ARRAY
NOT FOUND? ERROR ̲REP(INT,GUP,DELC,10
̲DELCO ̲MAN,1,1,NIL)
(4.1.5.5)
FOUND? SET DELIVERY ̲INDEX=LOOP INDEX
END ̲SEARCH
SET INIT ̲RECV ̲DELIVERY(DELIVERY ̲INDEX)=NIL
RECEIVE ̲ITE()(CC)(4.2.2.6.3)
CC=0?
DELCO ̲CLOSED ̲FLAG =DELCO ̲CLOSE ̲TO ̲RESCO?
RETURN(DELCO ̲INPUT ̲QEL):ERRR ̲OK
ERROR? ANALYZE ̲ERROR(CC,0)
END ̲RETURN
CASE DELIVERY ̲INDEX
REP? SET I=DELCO ̲INPUT ̲SUBQUEUE
SUP? SET I=DELCO ̲INPUT ̲SUBQUEUE+I
LOG? SET I=PRIS ̲LOG
STA? SET I=PRIS ̲STA
END ̲CASE
SET ̲DELIVERY ̲QREF,SUB ̲QUEUEI
DELIVERY ̲ITEM(4.2.2.4.7)
END
Fig. 4.2.2.4.1-2
4.2.2.4.2 I̲N̲I̲T̲I̲A̲L̲I̲Z̲E̲ ̲D̲E̲L̲C̲O̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.2.4.2.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 initializes appropriate DELCO
variables and makes the coroutine ready
to run and receve input.
4.2.2.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) INITIALIZE ̲DELCO
b) INITIALIZE ̲DELCO (R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R6 LINK (Dest.)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 DESTROYED
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
None
4.2.2.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
N/A
4.2.2.4.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. SOURCE LISTING
E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
SUPV ̲PRINTERS ref. CPS/DBD/001
4.2.2.4.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Ref. Fig. 4.2.2.4.2-1 and 4.2.2.4.2-2.
INITIALIZE ̲DELCO
SET ̲INIT ̲RECV ̲ANSQ = NIL
SET ̲REQ ̲REPLY ̲NO = 0
SET ̲RESCO ̲REPLY = SRECO ̲NONE
INIT DELIVERY RECORDS (-2)
INIT ̲RECEIVE ̲FROM ̲SPIP ̲ANSQ (4.22.6.2)
END
Fig. 4.2.2.4.2-1…86…1…02… …02… …02… …02… …02… …02… …02… …02…
INIT ̲DELIVERY ̲RECORDS
CASE GET ̲SYSTEM ̲PARAMETER (SUPV ̲PRINTER
̲PARAMETERS)
(SUPV ̲PRINTER
̲CONFIG,
CC): ERROR
̲OK
ERROR ? ANALYSE ̲ERROR (CC, 0): OK
OK ? SPIP ̲INPUT ̲QREFS( -3 )
SET OUTST ̲REQ ̲QEL(1..MAX ̲OUTST ̲REQS)=NIL
SET DELIVERY ̲INDEX = MIN(DELIVERY
̲INDEX ̲TYPE)
LOOP
WITH SPIP ̲DELIVERY ̲RECORDS(DELIVERY
̲INDEX)DO
SET .DEVICE ̲DESIGNATOR
=
SUPV
̲PRINTERCONFIG(DELIVERY
̲INDEX)
SET .BLOCKED
= FALSE
SET .PRIS ̲MAIN ̲QREF
=
.DEVICE
̲DESIGNATOR
+
PRIS
̲PRINTQ
̲GROUP
̲REF
SET
.PRIS
̲CMD
̲QREF
=
.DEVIE ̲DESIGNATOR
+
PRIS
̲CMDQ
̲GROUP
̲REF
END ̲WITH
INIT ̲RECEIVE ̲ITEM(4.2.2.6.4)
INCREMENT DELIVERY ̲INDEX
DELIVERY ̲INDEX GT
MAX(DELIVERY ̲INDEX
̲TYPE)?
EXIT LOOP
END ̲LOOP
END ̲CASE
END
ig. 4.2.2.4.2-2…86…1…02… …02… …02… …02… …02… …02… …02…
SET ̲SPIP ̲INPUT ̲QREFS
WITH SPIP ̲DELIVERY ̲RECORDS DO
SET (REP).SPIP ̲INPUT ̲QREF = SPIP ̲REPQ
SET (SUP).SPIP ̲INPUT ̲QREF = SPIP ̲SUPQ
SET (LOG).SPIP ̲INPUT ̲QRF = SPIP ̲LOGQ
SET (STA).SPIP ̲INPUT ̲QREF = SPIP ̲STAQ
END ̲WITH
END
Fig. 4.2.2.4.2-3…86…1…02… …02… …02… …02… …02… …02… …02…
4.2.2.4.3 P̲R̲O̲C̲ ̲S̲P̲I̲C̲O̲ ̲I̲T̲E̲M̲S̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.2.4.3.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 various commands received from SPICO
are processed by this module. The possible
commands ar:
CLOSE, CONFIG ̲CHANGE,
PRINTQ ̲CANCELLED,
PRINTQ ̲UNBLOCKED,
The CLOSE command is also passed on to
RESCO. Completion is always reported
to SPICO.
4.2.2.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) PROC ̲SPICO ̲ITEMS
b) PROC ̲SPICO ̲ITEM (R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R6 LINK (Dest.)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 DESTROYED
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
None
4.2.2.4.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
4.2.2.4.3.3.1 D̲E̲L̲I̲V̲E̲R̲Y̲ ̲U̲N̲B̲L̲O̲C̲K̲E̲D̲ ̲A̲C̲T̲I̲O̲N̲S̲
The procedure performs the needed actions
when one of theprint queues is no longer
blocked.
4.2.2.4.3.3.2 D̲E̲T̲E̲R̲M̲I̲N̲E̲ ̲D̲E̲L̲I̲V̲E̲R̲Y̲ ̲I̲N̲D̲E̲X̲
Given the Logical Device Designator, the
procedure determines the appropriate DELIVERY
̲INDEX.
4.2.2.4.3.3.3 D̲E̲L̲C̲O̲ ̲P̲R̲O̲C̲ ̲S̲P̲I̲P̲ ̲C̲L̲O̲S̲E̲ ̲C̲M̲D̲
1 …02… …02… …02… …02…
All outstanding INIT ̲RECEIVE calls are cancelled
and close CMD is sent to RESCO.
4.2.2.4.3.3.4 C̲O̲N̲F̲I̲G̲ ̲C̲H̲A̲N̲G̲E̲ ̲A̲C̲T̲I̲O̲N̲S̲
The new supervisor printers configuration
is determine. Th old configuration is checked
with the new. For each supervisor printer,
with another address, actual action is taken
at last completion is sent to SPICO.
4.2.2.4.3.3.5 S̲E̲T̲ ̲C̲O̲N̲F̲I̲G̲ ̲D̲A̲T̲A̲
For a changed supervisor printer address the
new QUEUE ̲REFRENCE is determined by the procedure.
4.2.2.4.3.3.6 P̲R̲O̲C̲ ̲P̲R̲I̲N̲T̲Q̲ ̲C̲A̲N̲C̲ ̲N̲O̲T̲
For the actual supervisor printer print queue
cancelled action is taken.
4.2.2.4.3.3.7 P̲R̲O̲C̲ ̲P̲R̲I̲N̲T̲Q̲ ̲U̲N̲B̲L̲O̲C̲K̲E̲D̲ ̲N̲O̲T
For the actual supervisor printer print queue
unbloced action is taken.
4.2.2.4.3.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. SOURCE LISTING
E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
SUPV ̲PRINTERS ref. CPS/DBD/001
4.2.2.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Ref. Fig. 4.2.2.4.3-1 through Fg. 4.2.2.4.3-8.…86…1…02…
…02… …02… …02… …02… …02… …02…
PROC ̲SPICO ̲ITEMS
CASE OPERATION.ITEM ̲NAME OF:
SPIP ̲CLOSE ? D̲E̲L̲C̲O̲ ̲P̲R̲O̲C̲ ̲S̲P̲I̲P̲ ̲C̲L̲O̲S̲E̲ ̲C̲M̲D̲ ( - 2
)
CONFIG ̲CHANGE ? C̲O̲N̲F̲I̲G̲ ̲C̲H̲A̲N̲G̲E̲ ̲A̲C̲T̲I̲O̲N̲S̲ ( - 3
)
RINTQ ̲CANCELLED ? P̲R̲O̲C̲ ̲P̲R̲I̲N̲T̲Q̲ ̲C̲A̲N̲C̲ ̲N̲O̲T̲ ( - 5
)
PRINTQ ̲UNBLOCKED ? P̲R̲O̲C̲ ̲P̲R̲I̲N̲T̲Q̲ ̲U̲N̲B̲L̲O̲C̲K̲E̲D̲ ̲N̲O̲T̲
(- 6 )
OTHERWISE ? ERROR ̲REP(INT,CON, DELC,NO ̲PRC ̲SPILCO
̲
ITEM,0,2,NIL)(4.1.5.5)
END ̲CASE
END
Fig. 4.2.2.4.3-1…86…1…02… …02… …02… …02… …02… …02… …02…
DELCO ̲PROC ̲SPIP ̲CLOSE ̲CMD
INIT ̲RECV ̲ANSQ NIL?
CANCEL ̲SYSTEM ̲CALL(INIT ̲RECV ̲ANSQ)
For INIT ̲RECV ̲DELVERY ARRAY
INIT ̲RECV ̲DELIVERY(I) NIL?
CACEL ̲SYSTEM ̲CALL (INIT ̲RECV ̲DELIVERY(I)) (4.1.5.4)
D̲E̲L̲C̲O̲ ̲C̲M̲D̲ ̲T̲O̲ ̲R̲E̲S̲C̲O̲ ̲(̲S̲P̲I̲P̲ ̲C̲L̲O̲S̲E̲) (4.2.2.6.5)
SET ̲DELCO ̲CLOSED ̲FLAG=DELCO ̲CLOSED ̲TO ̲RECSO
END
FIGURE 4.2.2.4.3-2…86…1…02… …02… …02… …02… …02… …02… …02…
CONFIG ̲CHANGE ̲ACTIONS
CASE GET ̲SYSTEM ̲PARAMETER (SUPV ̲PRINTER ̲PARAMS)
(SUPV
̲PRINTER
̲CONFIG,
CC):
ERROR
̲OK
ERROR ? ANALYSE ̲ERROR(CC, 0): O
OK ?SET DELIVERY ̲INDEX = MIN(DELIVERY ̲INDEX ̲TYPE)
LOOP
SUPV ̲PRINTER ̲CONFIG(DELIVERY ̲INDEX) EQ
SPIP ̲DELIVERY ̲RECORDS (DELIVERY ̲INDEX).
DEVICE ̲DESIGNATOR ?
SPIP ̲DELIVERY ̲RECORDS (DELIVERY ̲INDEX)
.BLOCKED EQ TRUE?
R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲O̲U̲T̲S̲T̲ ̲R̲E̲Q̲ (4.2.2.4.1)
DELIVERY ̲INDEX EQ SUP LOGAND
RESCO ̲REPY=RESCO ̲PRIS?
SEND ̲RETURN ̲SYIE ̲TAB ̲FILE ̲CMD ̲TO PRT (4.2.2.6.7)
D̲E̲L̲I̲V̲E̲R̲Y̲ ̲U̲N̲B̲L̲O̲C̲K̲E̲D̲ ̲A̲C̲T̲I̲O̲N̲S̲ ( - 7)
S̲E̲T̲ ̲C̲O̲N̲F̲I̲G̲ ̲D̲A̲T̲A̲ ( - 4
INCREMENT DELIVERY ̲INDEX
DELIVERY ̲INDEX GT MAX(DELIVER ̲INDEX ̲TYPE)?-
EXIT ̲LOOP
END ̲LOOP
D̲E̲L̲C̲O̲ ̲C̲C̲ ̲T̲O̲ ̲S̲P̲I̲C̲O̲ ̲(̲C̲O̲N̲F̲I̲G̲ ̲C̲H̲A̲N̲G̲E̲ ̲C̲C̲)̲ (4.2.2.6.6)
END ̲CASE
END
FIGURE 4.2.2.4.3-3…86…1…02… …02… …02… …02… …02… …02… …02…
SET ̲CONFIG ̲DATA
WITH SPIP ̲DELIVERY ̲RECORDS(DELIVERY ̲INDEX) ̲DO
SET .DEVICE ̲DESIGNATOR =
SUPV
̲PRINTER
̲CONFIG(DELIVERY
̲INDEX)
SET .PRIS ̲MAIN ̲QREF =
PRIS ̲PRINTQ ̲GROUP ̲REF +
SUPV ̲PRINTER ̲CONFIG (DELIVERY ̲INDEX)
SET .PRIS ̲CMD ̲QREF =
PRIS ̲CMDQ ̲GROUP ̲REF +
SUPV ̲PRINTER ̲CONFIG(DELIVERY ̲INDEX)
END ̲WITH
END
Fig. 4.2.2.4.3-4