top - download
⟦bfa9a6f85⟧ Wang Wps File
Length: 26068 (0x65d4)
Types: Wang Wps File
Notes: Spelunked
Names: »~ORPHAN67.08«
Derivation
└─⟦9270f92d5⟧ Bits:30006106 8" Wang WCS floppy, CR 0167A
└─ ⟦this⟧ »~ORPHAN67.08«
WangText
C…05…B…08…B…0a…B…0d…B…00…B
B A…08…A…0c…A…02…A
A A…05…A…06…@…09…@…0b…@…0d…@…00…@…01…@…02…@…05…@…07…?…0a…?…0c…?…0d…?…0e…?…0f…?…00…?
?…05…?…07…>…0a…>…0e…>…05…=…09…=…0d…=…0f…=
<…08…<…0a…<…0e……86…1
…02…
…02…
…02…
…02…CPS/SDS/041
…02…831205…02……02…
PRINTER
DETAILED
DESIGN
SPECIFICATION…02…ISSUE
1…02…CAMPS
4.2.1.6.9.3 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. PRT ̲DATA
PRINT ̲ITEM ̲QEL ̲ATTR,
PRINT ̲ITEM ̲QEL ̲REF: Ref. sec. 4.2.l.5
4.2.1.6.9.4 P̲R̲O̲C̲E̲D̲U̲R̲E̲ ̲D̲e̲s̲i̲g̲n̲
Ref. fig. 4.2.l6.9 - 1
REPLY ̲TO ̲SPIP (COMPL ̲CODE)
WITH PRIS ̲SEND ̲PARAMS DO
SET .HEADER.FLAG = COMPL ̲CODE
SET .INFORMATION ̲TYPE = TRUE
SET .CHECKP ̲STATUS = FALSE
SET .PROFILE = 0
SET .HEADER.MAINTYPE = ACK
SET .HEADER.SUBTYPE = PRIS PRINT REPLY
SET .HEADER.INF = PRINT ̲ITEM ̲QEL ̲ATTR.
HEADER.INF
SET .INFORMATION (1) = PRINT ̲ITEM ̲QEL ̲REF
SET .INFORMATION (2) = REMAINING ̲SOURCE
̲BUF-
FER ̲SPACE
SET .INFORMATION (3) = 0
END ̲WITH
CASE SEND ̲REPLY(PRIS ̲SEND ̲PARAMS,NIL,
PRINT ̲ITEM ̲QEL ̲REF)
(CC):ERROR ̲OK
ERROR?- ANALYZE ̲ERROR(CC,0):OK
OK?
END ̲CASE
END
Fig. 4.2.1.6.9-…86…1 …02… …02… …02… …02… …02…
4.2.1.6.10 C̲H̲E̲C̲K̲ ̲V̲I̲E̲W̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.6.10.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 procedure checks if an open view exists pertinent
to the current item. In case there is, it willbe closed.
If FILE ̲IN ̲PROGRESS is true, then SYIB ̲TAB ̲FILE is
closed.
4.2.1.6.10.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) CHECK ̲VIEW
b) CHECK ̲VIEW (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̲
R6 LINK
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲
R0 - R7 DESTROYED
F̲a̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
NONE
4.2.1.6.10.3 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. PRT ̲DATA
4.2.1.6.10.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲
Ref. Code…86…1 …02… …02… …02… …02… …02… …02…
…02… …02…
CHECK ̲VIEW
VIEW ̲OPEN ̲FLAG EQ TRUE? CASE CLOSE ̲VIEW
(PRINT
̲ITEM
̲QEL
̲REF)
(CC):
ERROR
̲OK
ERROR? ANALYZE
̲ERROR
(CC,0):OK
OK?
END ̲CASE
SET VIEW ̲OPEN ̲FLAG = FALSE
END
Fig. 4.2.1.6.10-1
4.2.1.6.11 R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲S̲C̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.6.11.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 procedure sends a reply to SSC with the specified
completion value. It is used upon completion f SSC-commands.
4.2.1.6.11.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̲s̲
a) REPLY TO SSC (COMPLETION VALUE: SSC COMPL: TYPE)
b) REPLY TO SSC (R0, R6)
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 COMPLETION ̲VALUE (DEST)
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.1.6.11.3 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. PRT ̲DATA
4.2.1.6.11.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲
Ref. Code
REPLY ̲TO ̲SSC(COMPLETION VALUE)
WITH PRIS SEND PARAMS DO
SET .INFORMATION TYPE =FALSE
SET .CHECKP ̲STATUS =FALSE
SET .PROFILE =0
SET .HEADER.MAINTYPE =ACK
SET .EADER.SUBTYPE =TEP ̲ACK
SET .HEADER.FLAGS =COMPLETION ̲VALUE
END ̲WITH
CASE SEND ̲REPLY (PRIS ̲SEND ̲PARAMS,NIL,INPUT
̲QEL)
(CC):ERROR ̲OK
ERROR?-ANALYZE ̲ERROR(CC,0):OK
OK?
END ̲CASE
END
Fig. 4.2.1.6.11-1…86…1 …02… …02… …02… …02… …02…
4.2.1.6.12 C̲A̲N̲C̲E̲L̲ ̲P̲R̲I̲N̲T̲Q̲ ̲R̲E̲C̲E̲I̲V̲E̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.1.6.12.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
If an INIT ̲RECEIVE ̲FIRST ̲QEL from PRIS ̲PRINTQ is pending
then it will be cancelled.
4.21.6.12.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̲s̲
a) CANCEL ̲PRINTQ ̲RECEIVE
b) CANCEL ̲PRINTQ ̲RECEIVE(R6)
R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲s̲
C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲
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.1.6.12.3 D̲a̲t̲a̲ ̲ ̲D̲a̲t̲a̲ ̲D̲e̲s̲c̲i̲p̲t̲i̲o̲n̲s̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. PNT ̲DATA
4.2.1.6.12.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲
Ref Code…86…1 …02… …02… …02… …02… …02… …02…
CANCEL ̲PRINTQ ̲RECEIVE
CASE CANCEL ̲SYSTEM ̲CALL(PRIS ̲PRINTQ ̲OP)(CC):ERROR ̲OK
ERROR?- ANALYZE ̲ERROR(CC,0):OK
OK?- CASE WAIT ̲SYSTEM ̲CALL (PRIS ̲PRINTQ ̲OP)
(ATTRQEL,SUBQUEUE,CC):ERROR ̲OK
ERROR?- CASE ANALYZE ̲ERROR(CC,1,CANCELLED)
:(CANC
̲PQR)
CANC ̲PQR?-
END ̲CASE
OK?- R̲E̲T̲U̲R̲N̲ ̲I̲T̲E̲M̲ (QEL)(4.2.1.6.4)
END ̲CASE
END ̲CASE
END
Fig. 4.2.1.6.12-…86…1 …02… …02… …02… …02… …02…
4.2.1.7 S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲
4.2.1.7.1 U̲P̲C̲O̲ ̲P̲R̲O̲P̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲
Ref. sec. 4.1.7.3.2.1
4.2.1.7.2 P̲R̲O̲P̲ ̲U̲P̲C̲O̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲
Ref. sec. 4.1.7.3.2.2
4.2.2 P̲r̲i̲n̲t̲e̲r̲ ̲O̲u̲t̲p̲u̲t̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲
The P̲r̲inter O̲utp̲ut (PROP) coroutine is performing the
actions in connection with formattting and output of
the text to be printed.
PROP is controlled by the other coroutine (UPCO).
4.2.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 following functions ar performed by this sub-package
(ref.fig.4.2.2-1):
UPCO Control Functions
Command Completion and Error Report functions
Format Control
Printout…86…1 …02… …02… …02… …02… …02…
Fig. 4.2.2-1…86…1 …02… …02… …02… …02… …02…
4.2.2.1.1 U̲P̲C̲O̲ ̲C̲o̲m̲m̲a̲n̲d̲ ̲E̲x̲e̲c̲u̲t̲i̲o̲n̲ ̲(̲1̲.̲0̲)̲
The UPCO Command Execution functions carry out execution
of the commands issued by UPCO.
a) Initialize (1.1)
The Initialize command isissued for initialisation
of PROP,s working area, i.e. variables and buffers.
A CC-Report is to be sent to UPCO, ref. sec. 4.2.2.1.2.c.
b) C̲o̲m̲m̲e̲n̲c̲e̲ ̲(̲1̲.̲2̲)̲
Upon receipt of a Commence-CMD, PROP will start
printing the current item.
c) Abandon 1.3)
The Abondon Print Command will cause the printing
actions to be stopped immediately. All outstanding
I/O requests will be canncelled and the working
area will be cleared.
Completion will be reported to UPCO, ref. sec. 4.2.2.1.2.c.
d) E̲P̲E̲A̲T̲ ̲(̲1̲.̲4̲)̲
The Repeat Command causes the printout of the current
item to be repeate
e) P̲r̲e̲e̲m̲p̲t̲ ̲(̲1̲.̲5̲)̲
Printout of the current item will be stopped. Completion
will be reported to UPCO, ref. sec. 4.2.2.1.2.c…86…1
…02… …02… …02… …02… …02…
4.2.2.1.2. C̲o̲m̲m̲a̲n̲d̲ ̲C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲E̲r̲r̲o̲r̲ ̲R̲e̲p̲o̲r̲t̲
̲F̲u̲n̲c̲t̲i̲o̲n̲s̲ ̲(̲2̲.̲0̲)̲
These functions handle the reception and sending of
completion and error report.
a) P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲o̲f̲ ̲I̲O̲C̲ ̲C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲o̲d̲e̲s̲ ̲(̲2̲.̲1̲)̲
When printout data is delivered to the Printer Handler
it will respond with a Completion Code. The Completion
Code will contain information about possible printer
errors. Two kinds of printer errors can occur:
1) Paper Low
2) Conection Error.
b) S̲e̲n̲d̲ ̲E̲r̲r̲o̲r̲ ̲R̲e̲p̲o̲r̲t̲ ̲t̲o̲ ̲U̲P̲C̲O̲ ̲(̲2̲.̲2̲)̲
Upon detection of an I/O error, a report will be
sent to UPCO.
c) S̲e̲n̲d̲ ̲C̲o̲m̲m̲a̲n̲d̲ ̲C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲R̲e̲p̲o̲r̲t̲ ̲t̲o̲ ̲U̲P̲C̲O̲ ̲(̲2̲.̲3̲)̲
Completion of some of the UPCO commands is to be
reported back, ref. sec. 4.2..1.1.a,c,f.
d) S̲e̲n̲d̲ ̲P̲r̲i̲n̲t̲ ̲C̲o̲m̲p̲l̲e̲t̲e̲ ̲R̲e̲p̲o̲r̲t̲ ̲t̲o̲ ̲U̲P̲C̲O̲ ̲(̲2̲.̲4̲)̲
On completion of item printout, UPCO will be notified.
4.2.2.1.3 F̲o̲r̲m̲a̲t̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲(̲3̲)̲
Format Control takes care of the interface to the PRINTER
Format Handler.…86…1 …02… …02… …02… …02… …02…
4.2.2.1.4 P̲r̲i̲n̲t̲o̲u̲t̲ ̲(̲4̲.̲0̲)̲
The printout functions carries out the actual Text-conversion,-formatting
and -output by using the PRINTER FORMAT HANDLER.
a) C̲o̲n̲v̲e̲r̲t̲ ̲D̲a̲t̲a̲ ̲F̲o̲r̲ ̲O̲u̲t̲p̲u̲t̲ ̲4̲.̲1̲)̲
This function is responsible for converting the
data so that it can be printed.
b) L̲o̲a̲d̲ ̲C̲o̲n̲v̲e̲r̲t̲e̲d̲ ̲D̲a̲t̲a̲ ̲I̲n̲t̲o̲ ̲O̲u̲t̲p̲u̲t̲ ̲B̲u̲f̲f̲e̲r̲ ̲(̲4̲.̲2̲)̲
When the data has been converted this function loads
it into a buffer for Output.
c) P̲R̲E̲P̲A̲R̲E̲ ̲H̲e̲a̲d̲e̲r̲/̲T̲r̲a̲i̲e̲r̲ ̲I̲n̲f̲o̲.̲ ̲(̲4̲.̲3̲)̲
The Page Header/Trailer information, which is partly
produced by UPCO is prepared and handed over to
the PRINTER FORMAT HANDLER.
d) O̲u̲t̲p̲u̲t̲ ̲B̲u̲f̲f̲e̲r̲ ̲(̲4̲.̲4̲)̲
This function delivers the Output buffer to The
Printer Handler for outpu.
4.2.2.2 P̲R̲O̲P̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲.̲
The software structure of PROP is shown in Fig 4.2.2.3-4
and fig. 4.2.2.3-5 (call structure).
A functional description of each module is given
in sec. 4.2.2.4.
PROP consists of four main parts:
1) VPO command processing - down by ANALYSE ̲UPCO
̲CMD,
2) Cansellation of outstanding IO calls - done
by CANCEL ̲OUTSTANDING ̲IO ̲S,
3) IO completion processing - done by PROC ̲IO
̲CC,
4) Fetching, conversion, formatting and output
of data - done by ATA ̲CONVERSION ̲OUTPUT and
underlying modules. The call structure for
these modules is shown in fig. 4.2.2.3-4.…86…1
…02… …02… …02… …02… …02…
Fig. 4.2.2.2-1 P̲R̲O̲P̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲…86…1 …02… …02… …02… …02… …02…
Fig 4.2.2.2-2 D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲S̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲…86…1 …02… …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̲
Fig 4.2.2.3-1 - 4…86…1 …02… …02… …02… …02… …02…
4.2.2.4 P̲R̲O̲P̲ ̲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 P̲R̲O̲P̲ ̲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̲ ̲
PROP ̲MAIN contains the PROP ̲MAIN ̲LOOP. It waits at
Semaphore PRS ̲S2, and takes appropriate actions upon
reception of input items.
The module is only called by the Coroutine Monitor.
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̲s̲
a) PROP ̲MAIN
b) PROP ̲MAIN (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̲
R6 LNK (DEST)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
R0 - R7 (DEST)
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̲s̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. PRT ̲DATA
4.2.2.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
In the MAIN ̲LOOP, it is checked whether the arrived
items are legal or not.
All leal UPCO Commands are executed by the ANALYZE
̲UPCO ̲CMD module while IO Completions are processed
by PROC ̲IO ̲CC…86…1 …02… …02… …02… …02… …02…
PROP ̲MAIN
PROP ̲MAIN ̲LOOP
WAIT ̲OPSEM (PRIS ̲S2) (PROP ̲OP) : OK
CASE PROP 0P. ID OF:
UCO ̲CMD? A̲N̲A̲L̲Y̲S̲E̲
̲U̲P̲C̲O̲
̲C̲M̲D̲
(4.2.2.4.2)
PROP ̲IO ̲CC? P̲R̲O̲C̲ ̲I̲0̲ ̲C̲C̲ ( -
2)
OTHERWISE? E̲R̲R̲O̲R̲ R̲E̲P̲ ̲(̲P̲R̲O̲P̲,̲C̲O̲N̲,̲I̲N̲T̲)̲(4.1.5.1)
END ̲CASE
END PROP ̲MAIN ̲LOOP
END
Fig. 4.2.2.4.l-1…86…1…02… …02… …02… …02… …02… …02… …02… …02…
PROC ̲IO-CC
DECREMENT OUTSTANDING ̲IO-S
CASE WAIT ̲SYSTEM ̲CALL (PROP ̲OP) (CC) :ERROR
̲OK
ERROR? CASE ANALYZE ̲ERROR (CC,3, CONNECTION
̲FAILED,
PRITER
̲STATUS ̲ERROR,
CANCELLED
)
:(IO
̲ERR1,IO
̲ERR2,IO
̲ERR3)
IO ̲ERR1? - C̲O̲N̲N̲ ̲E̲R̲R̲ ̲A̲C̲T̲I̲O̲N̲S̲
̲(̲-̲3̲)̲
IO ̲ERR2? - P̲A̲P̲E̲R̲ ̲L̲O̲W̲
̲A̲C̲T̲I̲O̲N̲S̲(̲-̲4̲)̲
IO ̲ERR3?
END ̲CASE
OK? END ̲OF ̲ITEM ̲FLAG EQ FASE?
AWAITING ̲DATA ̲FLAG EQ TRUE?
D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲S̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲
̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲)̲
OUT ̲STANDING ̲IO ̲S GT 0?
R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲ ̲(̲P̲R̲I̲N̲T̲ ̲C̲O̲M̲P̲L̲E̲T̲E̲ ̲R̲E̲P̲)̲
̲(̲4̲.̲2̲.̲2̲.̲6̲.̲1̲)̲
END ̲CASE
END
Fig. 4.2.2.4.l - 2 …86…1 …02… …02… …02… …02…
C̲O̲N̲N̲ ̲E̲R̲R̲ ̲A̲C̲T̲I̲O̲N̲S̲
C̲A̲N̲C̲E̲L̲ ̲O̲U̲T̲S̲T̲A̲N̲D̲I̲N̲G̲ ̲I̲O̲ ̲S̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲3̲)̲
R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲ ̲(̲C̲O̲N̲N̲ ̲E̲R̲R̲)̲(̲4̲.̲2̲.̲2̲.̲6̲.̲1̲)̲
END
Figure 4.2.2.4.1-3
PAPER ̲LOW ̲ACTIONS
C̲A̲N̲C̲E̲L̲ ̲O̲U̲T̲S̲T̲A̲N̲D̲I̲N̲G̲ ̲I̲O̲ ̲S̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲3̲)̲
R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲(̲P̲A̲P̲E̲R̲ ̲L̲O̲W̲)̲ ̲(̲4̲.̲2̲.̲2̲.̲6̲.̲3̲)̲
END
Figure 4.2.2.4.1-4
4.2.2.4.2 ̲A̲N̲A̲L̲Y̲S̲E̲ ̲U̲P̲C̲O̲ ̲C̲M̲D̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲t̲a̲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 analyses UPCO-Commands received via PRIS-S2
and executes them.
4.2.2.4.2.2 M̲o̲d̲u̲l̲e̲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) ANALYZE ̲UPCO ̲CMD
B) ANALYZE ̲UPCO ̲CMD (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̲ ̲
R7 LINK (Dest.)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
All Registers are Destroyed
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲
None
4.2.2.4.2.3 M̲o̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
N/A…86…1 …02… …02… …02… …02…
4.2.2.4.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲s̲
D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Ref. PRT ̲DATA
4.2.2.4.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
The Commands are distinguished by the ITEM ̲NAME field
of the actual operation.
The Module mainly operates on data shared with UPCO.…86…1
…02… …02… …02… …02…
ANALYZE ̲UPCO ̲CMD
CASE PROP ̲OP.ITEM ̲NAME OF:
INITIALIZE ̲PROP? -----P̲R̲O̲P̲ ̲I̲N̲I̲T̲I̲A̲L̲I̲Z̲A̲T̲I̲O̲N̲ ( - 2
)
COMENCE? S̲T̲A̲R̲T̲ ̲P̲R̲I̲N̲T̲ ̲A̲C̲T̲I̲O̲N̲S̲ ( - 3
)
CONTINUE? C̲O̲N̲T̲I̲N̲U̲E̲ ̲P̲R̲I̲N̲T̲I̲N̲G̲ ̲ ( - 4
)
PREEMPT? P̲R̲E̲E̲M̲P̲T̲ ̲P̲R̲I̲N̲T̲I̲N̲G̲ ( - 5
)
ABANDON? A̲B̲A̲N̲D̲O̲N̲ ̲P̲R̲I̲N̲T̲I̲N̲G̲ ̲ ( - 6
)
OTHERWISE? E̲R̲R̲O̲R̲ ̲R̲E̲P̲(̲P̲R̲O̲P̲,̲C̲O̲N̲,̲I̲N̲T̲)̲ 4.1.5.1)
END ̲CASE
END
Fig. 4.2.2.4.2 - 1 …86…1 …02… …02… …02… …02… …02…
…02…
PROP ̲INITIALIZATION
…02…P̲R̲I̲N̲T̲ ̲S̲T̲A̲R̲T̲ ̲U̲P̲ ̲M̲E̲S̲S̲A̲G̲E̲
SET PREEMPTION ̲FLAG = FALSE
SET OUTSTANDING ̲IO ̲S = 0
R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲ ̲(̲P̲R̲O̲P̲ ̲I̲N̲I̲T̲I̲A̲L̲I̲Z̲E̲ ̲C̲C̲)̲ (4.2.2.6.1)
END
Fig. 4.2.2.4.2 - 2 …86…1 …02… …02… …02… …02… …02…
…02…
START ̲PRINT ̲ACTIONS
SET INITIAL = TRUE
D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲T̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲ (4.2.2.4.4.)
END
Fig. 4.2.2.4.2 - 3 …86…1 …02… …02… …02… …02… …02…
…02…
CONTINUE ̲PRINTING
SET AWAITING ̲DATA ̲FLAG = FALSE
D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲S̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲ (4.2.2.4.4)
END
Fig. 4.2.2.4.2 - 5 …86…1 …02… …02… …02… …02… …02…
…02…
PREEMPT ̲PRINTING
C̲A̲N̲C̲E̲L̲ ̲O̲U̲T̲S̲T̲A̲N̲D̲I̲N̲G̲ ̲I̲O̲ ̲S̲ (4.2.2.4.3 )
S̲E̲N̲D̲ ̲R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲ ̲(̲P̲R̲E̲E̲M̲P̲T̲ ̲C̲C̲)̲ (4.2.2.6.1)
END
Fig. 4.2.2.4.2 - 6…86…1 …02… …02… …02… …02… …02…
…02…
ABANDON ̲PRINTING
C̲A̲N̲C̲E̲L̲ ̲O̲U̲T̲S̲T̲A̲N̲D̲I̲N̲G̲ ̲I̲O̲ ̲S̲ (4.2.2.4.3)
R̲E̲P̲ ̲T̲O̲ ̲U̲P̲C̲O̲ ̲(̲A̲B̲A̲N̲D̲O̲N̲ ̲C̲C̲)̲ (4.2.2.6.1)
END
Fig. 4.2.2.4.2 - 7…86…1 …02… …02… …02… …02…
4.2.2.4.3 C̲A̲N̲C̲E̲L̲ ̲O̲U̲T̲S̲T̲A̲N̲D̲I̲N̲G̲ ̲I̲O̲ ̲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 module cancels pending system calls initiated by
PROP.
4.2.2.4.3.2 M̲o̲d̲u̲l̲e̲ ̲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) CANCEL ̲OUTSTANDING IO ̲S
b) CANCEL ̲OUTSTANDING ̲IO ̲S (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̲ ̲
R6 LINK (Destr.)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
All register are Destroyed.
F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲ ̲
None.
4.2.2.4.3. M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
N/A
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. PRT ̲DATA
4.2.2.4.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
The module checks OUTSTANDING ̲IO ̲S order to determine
whether a System IO Call is pending or not. If there
is, it will be cancelled by using the coroutie Monitor
Procedure
C ̲CANCEL ̲SYSTEM ̲CALL. …86…1 …02… …02… …02… …02… …02…
…02…
CANCEL ̲OUTSTANDING ̲IO ̲S
OUTSTANDING-̲IO ̲S EQ 0?
SET OP ̲POINTER = PRIS ̲PROP ̲IO ̲OP
CASE OP ̲POINTER.STATUS OF
PENDING?- CANCEL ̲SYSTEM ̲CALL (OP ̲POINTER)
(C):ERROR
̲OK
IN ̲SEMAPHORE,
DONE ?
OTHERWISE ? - ERROR ̲REP(PROP,CON,INT)(4.1.5.1)
END ̲CASE
END
Fig. 4.2.2.4.3-1…86…1 …02… …02… …02… …02… …02… …02…
4.2.2.4.4 D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲S̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
4.2.2.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 controls and executes the conversion, formatting
and output of data.
4.2.2..4.2 M̲o̲d̲u̲l̲e̲ ̲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) DATA ̲CONVERSION ̲OUTPUT
b) DATA ̲CONVERSION ̲OUTPUT (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̲ ̲
R6 LINK (Destr.)
R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲
All registers are Destroyed.
F̲a̲t̲a̲l̲ ̲E̲r̲o̲r̲s̲ ̲
None.
4.2.2.4.4.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
4.2.2.4.4.3.1 R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲
Reads in (from TMP) the section of the table corresponding
to CURRENT ̲FORMAT.
4.2.2.4.4.3.2 S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲
Set buffer structure corresponding to MMI ̲CTRL ̲TABLE
section.
4.2.2.4.4.3.3 ̲R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲
Reads in the fields (from CIF) correspondingto buffer
structure.
4.2.2.4.4.3.4 I̲N̲S̲E̲R̲T̲ ̲R̲E̲P̲E̲A̲T̲E̲D̲ ̲L̲I̲N̲E̲S̲
Informs the Printer Handler about lines to be repeated.
4.2.2.4.4.3.5 O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲
Calls Printer Format Handler (IOC) in order to format
and output the data collected in 10C buffe.
2.2.4.4.3.6 R̲E̲A̲D̲ ̲S̲I̲N̲G̲L̲E̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲
Reads in a field from CIF (field currently referenced
by I ̲PT ̲BASE).
4.2.2.4.4.3.7 C̲H̲E̲C̲K̲ ̲O̲U̲T̲P̲U̲T̲ ̲C̲O̲N̲D̲I̲T̲I̲O̲N̲
If convenient the procedure will take care off reading
in new data from view or file while the rinter Handler
is outputting data.…86…1 …02… …02… …02… …02…
4.2.2.4.4.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. PRT ̲DATA
4.2.2.4.4.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
The processing of print items is split into two mainparts:
A̲p̲l̲i̲c̲a̲t̲i̲o̲n̲ ̲R̲e̲p̲o̲r̲t̲ ̲P̲r̲i̲n̲t̲ is erformed by the module APPL
̲REP ̲OUTP. The principle of this is that the first arriving
report causes reservation of a whole page for report
print by GET ̲FORMAT and INSERT ̲LINE ̲GROUP calls. Then
the first report is printed by FIELDS ̲OUTPUT calls
witout issuing an OUTPUT ̲FORMAT call afterwards (which
would cause the page to be shipped). Instead the next
print item is awaited. If the next item is a report
it will be printed on the same page etc. (until the
page is full). If the next item was no a report then
an OUTPUT ̲FORMAT call is issued in order to Ship Page
and clean up before next item is processed.
P̲r̲i̲n̲t̲ ̲o̲f̲ ̲o̲t̲h̲e̲r̲ ̲i̲t̲e̲m̲ ̲t̲y̲p̲e̲s̲ is controlled by DATA ̲CONVERSION
̲OUTPUT. Thise control states can occur: FORMAT ̲INITIAL,
INITIAL and CONTINED.
F̲O̲R̲M̲A̲T̲ ̲I̲N̲I̲T̲I̲A̲L̲ ̲s̲t̲a̲t̲e̲ is indicated by that both booleans
PRT ̲INIT ̲FORMAT and INITIAL are TRUE. It is actual
when the first part of the first copy of an item is
to be printed.
Either the QEL data, the buffer data, the VIEW Administration
datais read in.
The Header and Trailer information is prepared.
A GET ̲FORMAT call is issued.
The MMI Table data for the current item and the administration
data is worked through in order to determine the count's
of repeatable fields and lines. Pssible extra lines
or line groups are inserted by INSERT ̲LINES or INSERT
̲LINE-GROUP call. All line insertions must take place
before the first Fields Output call because of the
page numbering.
All other actions are the same as for INITIAL state.
I̲N̲I̲T̲I̲A̲L̲ ̲s̲t̲a̲t̲e̲ is when INITIAL is true but PRT ̲INIT
̲FORMAT is false. This state is actual when the first
part of an item is to be printed and the format and
the administration datais already read in.
First the buffer structure is set, the possible VIEW
̲or File date is read, the data is converted, moved
and meryed into the IOC-buffer that consists of IOC
records, the FIELD ̲LIST is built up, the data is outputted
by a FIELDSOUTPUT call and at last additional data
is read in if appropriate.
C̲O̲N̲T̲I̲N̲U̲E̲D̲ ̲s̲t̲a̲t̲e̲ is indicated by that both PRT ̲INIT
̲FORMAT and INITIAL or FALSE.
In this state the printing actions are continued after
previous calls of FIELDS ̲OUTPUT. It is cheked whether
more data should be read in, if a new entry from the
MMI ̲TABLE is needed or if the printing is to be finished
by an OUTPUT ̲FORMAT call.
DATA ̲CONVERSION ̲OUTPUT
ITEM EQ APPLICATION ̲REPORT? APPL ̲REP ̲OUTP(4.2.2.4.9)
INITIAL EQ TRUE? PROC ̲INITIAL-2)
END ̲OF ̲CIF ̲BUF EQ TRUE AND BUFFERS ̲SHARED=TRUE?
CASE PRINT ̲ITEM ̲CATEGORY OF
VIEW ̲TIME? READ ̲SINGLE CIF FIELD(4.2.2.4.4.3.6)
FILE ̲ITEM? R ̲CONT ̲F ̲DAT(4.2.2.4.13.3.4)
END
END ̲OF ̲CIF ̲BUF EQ TRUE OR FIELD ̲LIST ̲FULL=TRUE
OR ENDOF ̲IOC ̲BUF EQ TRUE?
CREATE ̲PRINT ̲BUFFERS(3.2.2.4.5)
OUTPUT ̲BUFFER(4.2.2.4.4.3.5)
CHECK ̲OUTPUT ̲CONDITION(4.2.2.4.4.3.7)
END OF MMI ENTRY?
CONT ̲FORMAT ̲ID EQ [? 4 more mmi ENTRIES?
END ̲OF ̲ITEM FLAG:=TRUE
OUTPUT ̲FORMAT
CURREN ̲FORMAT:=CONT ̲FORMAT ̲ID
READ ̲MMI ̲CTRL ̲TABLE(4.2.2.4.4.3.1)
SET ̲BUFFERR̲STRUCTURE(4.2.2.4.4.3.2)
CASE ̲PRINT ̲ITEM ̲CATEGORY OR
VIEW ̲ITEM? ̲READ ̲CIF ̲FIELDS(4.2.2.4.4.3.3)
FILE ̲ITEM? ̲R ̲FIRST ̲F ̲DAT(4.2.2.4.13.3.3)
END
SET ̲MEMORY ̲ADDR(4.2.2.6.2)
CREATE ̲PRINT ̲BUFFERS(4.2.2.4.5)
OUTPUT ̲BUFFER(4.2.2.4.4.3.5)
CHECK ̲OUTPUT ̲CONDITION(4.2.2.4.4.3.7)
ERROR ̲REP(4.1.5.1)
END
FIG 4.2.2.4.4.51…86…1 …02… …02… …02… …02…
PROC ̲INITIAL
RESET FLAGS
READ ̲MMI ̲CTRL ̲TABLE(4.2.2.4.4.3.1)
PRT ̲INIT ̲FORMAT EQ TRUE?
CASE PRINT ̲ITEM ̲ATEGORY OF
QEL ̲ITEM? ̲COPY QEL ̲ATTR TO ADM1-BUF
BUFFER ̲ITEM? ̲COPY BUFFER DATA TO ADM1-BUF
VIEW ̲ITEM? ̲READ ̲VIEW ̲ADM(4.2.2.4.10)
FILE ̲ITEM? ̲READ ̲FILE ̲ADM(4.2.2.4.13.3.1)
END
PREPARE ̲HEADER ̲TRAILER ̲BUFFER(4.2.2.4.8)
GET FORMAT
INSERT ̲REPEATED ̲LINES(4.2.2.4.4.3.4)
PRT ̲INIT ̲FORMAT:=FALSE
SET ̲BUFFER STRUCTURE(4.2.2.4.4.3.2)
CASE PRINTR̲ITEM ̲CATEGORY OR
VIEW ̲ITEM? ̲READ ̲CIF ̲FIELDS(4.2.2.4.4.3.3)
FILE ̲ITEM? ̲R ̲FIRST ̲F ̲DAT (4.2.2.4.13.3.3)
END
SET ̲MEMORY ̲ADDR(42.2.6.2)
CREATE ̲PRINT ̲BUFFERS(4.2.2.4.5)
OUTPUT ̲BUFFER(4.2.2.4.4.3.5)
CHECK ̲OUTPUT ̲CONDITION(4.2.2.4.4.3.7)
INITIAL:=FALSE
END
FIG 4.2.2.4.4.5-2…86…1 …02… …02… …02… …02… …02… …02… …02… …02… …02… …02… …02… …02…
D̲A̲T̲A̲ ̲C̲O̲N̲V̲E̲R̲S̲I̲O̲N̲ ̲O̲U̲T̲P̲U̲T̲
INITIAL? CURRENT ̲FORMAT = EXEC. SUBFORMAT ̲ARR (FORMAT
̲INDEX)
R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲
̲-̲)̲
S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲ ̲-̲)̲
GET ̲FORMAT (FORMAT ̲IFCB, CURRENT ̲FORMAT)(CC)
: OK
MMI ̲HEAD ̲REC. ̲CIF ̲ACCESS? R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲(̲A̲D̲M̲)̲
(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲-̲5̲)̲
I̲N̲S̲E̲R̲T̲ ̲P̲A̲G̲E̲ ̲H̲E̲A̲D̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲3̲.̲4̲)̲
C̲R̲E̲A̲T̲E̲ ̲P̲R̲I̲N̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲ ̲-̲ ̲6̲
O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲ ̲-̲7̲)̲
ASSOCIATE (PRIS ̲S2, OPERATION ̲PT) : OK
INITIAL = FALSE
END ̲OF ̲CIF ̲BUF? MMI ̲HEAD ̲REC.CIF ̲ACCESS EQ FALSE? R̲E̲Q̲
̲M̲O̲R̲E̲ ̲D̲A̲T̲A̲
(-l9)
R̲E̲A̲D̲ ̲S̲I̲N̲G̲L̲E̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲ ̲-̲ ̲8̲)̲
FIELD ̲LIST ̲FULL?
END ̲OF ̲IOC ̲BUF?C̲R̲E̲A̲T̲E̲ ̲P̲R̲I̲N̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲-̲6̲)̲
O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲-̲7̲)̲
ASSOCIATE (PRIS ̲S2, OPERATION ̲PT) : OK
END ̲OF ̲CIF ̲FIELD? INCREMENT MMI ̲PT
S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲-̲1̲2̲)̲
MMI ̲PG GT EOMM? MMI ̲HEAD ̲REC. CONT ̲FORMAT ̲ID EQ ZERO?
C̲H̲E̲C̲K̲ ̲F̲O̲R̲M̲A̲T̲ ̲(̲-̲2̲ ̲o̲)̲
N̲E̲X̲T̲ ̲F̲O̲R̲M̲A̲T̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲-̲2̲)̲
E̲R̲R̲O̲R̲ ̲R̲E̲P̲ ̲(̲P̲R̲O̲P̲,̲ ̲G̲U̲P̲,̲ ̲I̲N̲T̲)̲ ̲(̲4̲.̲1̲.̲5̲.̲1̲)̲
END
Fig. 4.2.2.4.4-1…86…1 …02… …02… …02… …02… …02…
N̲E̲X̲T̲ ̲F̲O̲R̲M̲A̲T̲
CURRENT ̲FORMAT = MMI ̲HED ̲REC.CONT ̲FORMAT ̲ID
R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲ ̲-̲3̲
S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲-̲4̲)̲
R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲N̲O̲ ̲A̲D̲M̲)̲ ̲4̲.̲2̲.̲2̲.̲4̲.̲4̲ ̲-̲ ̲5̲)̲
C̲R̲E̲A̲T̲E̲ ̲P̲R̲I̲N̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲ ̲-̲ ̲6̲)̲
O̲U̲T̲P̲U̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲(̲4̲.̲2̲.̲2̲.̲4̲.̲4̲.̲ ̲-̲ ̲7̲ ̲
A̲S̲S̲O̲C̲I̲T̲E̲ ̲(̲P̲R̲I̲S̲ ̲S̲2̲,̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲ ̲P̲T̲)̲ ̲:̲ ̲O̲K̲
END
Fig. 4.2.2.4.4 - 2 …86…1 …02… …02… …02… …02… …02…
…02…
R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲
MMI ̲TMP ̲PATAM.TABLE ̲ID = VUS ̲MMI ̲CONTROL ̲TABLE
MMI ̲TMP ̲PARAM.FUNCTION = SEARCH ̲PRIMARY ̲KEY
MMI ̲TMP ̲PARAM.MASK ̲1 = 0
MMI ̲TMP ̲PARAM.ENTRY = 0
MMITMP ̲PARAM.BUFFER ̲1 0 KEY ̲LIST
MMI ̲TMP ̲PARAM.COUNT = 1
MMI ̲TMP ̲PARAM.BUFFER ̲2 = MMI ̲HEAD ̲REC
MMI ̲TMP ̲PARAM.BUFFER ̲2 LENGTH = MMI ̲HEAD ̲SIZE +
MAX ̲SECTION ̲SIZE * CTRL ̲REC ̲SIZE
MMI ̲TMP ̲PARAM.MASK ̲2 = BIT ̲0 + BIT ̲1
KEY ̲LIST.INFO = 0
KEYLIST.LINK = 0
KEY ̲LIST.FORMAT ̲ID = CURRENT ̲FORMAT
CASE SEARCH ̲PRIMARY ̲KEY (MMI ̲TMP ̲PARAM) (CC): ERROR
̲OK
ERROR?-ANALYZE ̲ERROR (CC,0)
OK?
END CASE
EOMM = MMI ̲REC ̲COUNT * CTRL ̲REC ̲SIZE + 1
BOFL = EOMM + 1
END
Figure 4.2.2.4.-3
S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲
INPUT? FIELD ̲LIST ̲LENGTH = INPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER
̲CTRL ̲REC ̲
TYPE.FIELD
̲LIST ̲LENGTH
EOFL = BOFL +FIELD ̲LIST ̲LENGTH
IOC ̲BUF ̲LENGTH = INPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER
̲CTRL ̲REC ̲
TYPE.IOC ̲BUFFER
̲LENGTH
BOIB = EOFL+1
EOIB = BOIB + IOC ̲BUF ̲LENGTH
ICBL ̲PT = BIBL
BOCB (ICBL ̲PT) = EOIB + 1
LOOP UNTIL ICBL ̲PT GT EIBL
CIF ̲BUF ̲LENGT(ICBL ̲PT) = INPUT ̲BUFFER
̲CTRL ̲GROUP
BUFFER ̲CTRL ̲REC
̲TYPE.
CIF ̲BUF ̲LEN ̲ARRAY(ICBL
̲PT)
EOCB (ICBL ̲PT) =
BOCB(ICBL ̲PT) +
CIF ̲BUF ̲LENGTH (ICBL
̲PT)
INCREMENT ICBL ̲PT
BOCB (ICBL ̲PT)=EOCB (ICBL ̲PT - 1) + 1
END LOOP
FIELD ̲LIST ̲LENGTH = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER
̲CTRL ̲REC ̲TYPE.
FIELD
̲LIST ̲LENGTH
EOFL = BOFL + FIELD ̲LIST ̲LENGTH
IOC ̲BUF ̲LENGTH = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL
̲REC ̲TYPE.
IOC
̲BUFFER ̲LENGTH
BOIB = EOFL + 1
EOIB = BOIB + IOC ̲BUF ̲LENGTH
ICBL ̲PT = BIBL
BOCB (ICBL ̲PT) = EOIB + 1
LOOP UNTIL ICBL ̲PT GT EIBL
CIF ̲BUF ̲LENGTH(ICBL ̲PT) = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.
BUFFER ̲CTRL ̲REC ̲TYPE.CIF ̲BUF ̲LEN ̲ARRAY (ICBL
̲PT)
EOCB (ICBL ̲PT) = BOCB (ICBL ̲PT) +CIF ̲BUF ̲LENGTH
(ICBL ̲PT)
INCREMENT ICBL ̲PT
BOCB (ICBL ̲PT) = EOCB (ICBL ̲PT-1) + 1
ND LOOP
(continued)
Figure 4.2.2.4.4-4…86…1 …02… …02… …02… …02… …02…
…02…
S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ /continued
BUFFERS ̲SHARED = FALSE
ICBL ̲PT = BIBL
LOOP UNTIL ICBL ̲PT GT EIBL
CIF ̲F ̲LIST.F ̲LIST ̲ELEM.F ̲BYTE ̲ADR = 0
BOCB (ICBL ̲PT) LE BOIB? BUFFERS ̲SHARED = TRUE
END LOOP
IOC ̲BLE.ADDRESS = BOIB
MMI ̲PT = BOMM
MMI ̲SECTION ̲SIZE = CTRL ̲REC ̲SIZE x MMI ̲REC ̲COUNT
END
Figure 4.2.2.4.4-4 continued…86…1 …02… …02… …02… …02… …02…
…02…
R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲
BUF ̲SIZE = 0
ICBL ̲PT = BIBL
CIF ̲F ̲LIST.NO ̲OF ̲ELEM = 0
ADM? BUF ̲SIZE = SIZE (ADM1 ̲BUF)
CIF ̲F ̲LIST.ELEM(1).F ̲GROUP ̲ID = 1
CIF ̲F ̲LIST.ELEM(1).F ̲BY