DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦fc6657167⟧ Wang Wps File

    Length: 58546 (0xe4b2)
    Types: Wang Wps File
    Notes: CPS/SDS/029               
    Names: »1748A «

Derivation

└─⟦080c9775e⟧ Bits:30006085 8" Wang WCS floppy, CR 0131A
    └─ ⟦this⟧ »1748A « 

WangText




…02…CPS/SDS/029

…02…850501…02……02…
SYSTEM STATUS AND CONTROL
DETAILED DESIGN SPECIFICATION…02…ISSUE
 1…02…CAMPS








4.2.4.7  S̲y̲s̲t̲e̲m̲ ̲E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲e̲r̲,̲ ̲S̲E̲H̲

         F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲S̲E̲M̲

         The SEH functions are decomposed and defined in figure
         4.2.4.7-1.

         SEH handles only SW-error and I/O Bus errors. DAMOS
         and CFH send SW-reports to PSE, and CESE. SEH receives
         these via the operation semaphore SEH ̲OS.







         SEH
             INITIALIZATION
             ERROR
             SERVE ̲INPUT
                 CLOSE ̲DOWN ̲SEH
                 COPSY ̲ERROR ̲HANDLING
                 PSE/GAQ ̲REPORT ̲HANDLING
                 CESE ̲REPORT ̲HANDLING
                 TIMEOUT ̲HANDLING
                 CLEAN ̲UP ̲PRC
                 DUMP ̲REPORTS





                                        FIGURE 4.2.4.7-1
                                   SEH FUNCTION DECOMPOSITION


4.2.4.7.1    I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲

         After SEH has received a start command from CFH, it
         defines the service system corresponding to PSE and
         CESE, and initializes the waiting operation on these.
         If CAMPS ̲MODE = AT ̲RISK a request to TMON for periodically
         time outs is sent.



4.2.4.7.2    S̲E̲R̲V̲E̲ ̲I̲N̲P̲U̲T̲

         During operation SEH receives

         -   CLOSE ̲DOWN commands in SEH ̲OS

         -   COPSY error reports in SEH ̲OS

         -   PSE reports in PSE

         -   CESE reports in CESE

         -   TIMEOUTS in GAQ

         The GAQ error reports are first received when the corresponding
         PSE report is received.



4.2.4.7.3    C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲ ̲o̲f̲ ̲S̲E̲H̲

         If the CAMPS ̲MODE is equal to AT ̲RISK the periodically
         time outs are cancelled.



4.2.4.7.4    C̲O̲P̲S̲Y̲-̲E̲r̲r̲o̲r̲-̲H̲a̲n̲d̲l̲i̲n̲g̲

         For CAMPS ̲MODE equal to NORMAL, or the coroutine which
         has sent the report, has given up a report is dumped
         in the memory of the KERNEL, and the PU is shut down.
          Else a report is sent to the operator printer. All
         reports are saved on the disk in the file GARBLE ̲POOL.





4.2.4.7.5    H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲P̲S̲E̲/̲G̲A̲Q̲-̲R̲e̲p̲o̲r̲t̲s̲

         If the received report has connection with a GAQ-report
         the corresponding GAQ-report is found. A standard report
         is made. If the sending process not shall be resumed
         the QELs of the process are dumped in the report. If
         a GAQ-report has connection with a VIEW, this is dismantled
         and dumped in the Garble Pool.



4.2.4.7.6    H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲C̲E̲S̲E̲ ̲R̲e̲p̲o̲r̲t̲s̲

         A error-report is made, which is dumped in the KERNEL-memory
         when the PU is shut down.



4.2.4.7.7    H̲a̲n̲d̲l̲i̲n̲g̲ ̲o̲f̲ ̲T̲i̲m̲e̲ ̲O̲u̲t̲s̲

         When SEH has received a time out it resets the error
         counter in the process table.



4.2.4.7.8    D̲u̲m̲p̲i̲n̲g̲ ̲o̲f̲ ̲R̲e̲p̲o̲r̲t̲s̲

         For system errors (CAMPS ̲MODE = NORMAL all errors,
         for CAMPS ̲MODE = AT ̲RISK when a VITAL or DUMMY process
         is retired without being resumed) the report is dumped
         in the memory of the KERNEL, else it is printed on
         the operation printer and on the disk.



4.2.4.7.9    C̲l̲e̲a̲n̲ ̲u̲p̲ ̲o̲f̲ ̲p̲r̲c̲.̲

         Send clean up commands to all processes. When SEH has
         received answers, it closes the disks.





4.2.4.8  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲ ̲o̲f̲ ̲S̲E̲H̲

         SEH is implemented in one coroutine, which consists
         of the modules:

         -   SEH ̲MAINPRG
         -   SERVE ̲SEH ̲INPUT
         -   PSE ̲GAQ ̲REPORT ̲HANDLING
         -   CLEAN ̲UP ̲PRC

         and the common procedures

         -   INIT ̲SEH ̲SYS ̲CALL
         -   ERROR ̲SEH
         -   SAVE ̲GARBLE

         For the software structure refer figure 4.2.4.8-1.




         SEH ̲ AIN ̲PEG
             REPORT ̲MAKER
             SERVE ̲INPUT
             SUMP ̲QEL
             PSE ̲GAQ ̲REPORT ̲HANDLING
             SEND ̲REPORT
             INIT ̲SEH ̲SVS ̲CALL
             CLEAN ̲UP ̲PRC
             SAVE ̲GARBLE
             SET ̲REPORT ̲HEADER
             ERROR ̲SEH




                                        FIGURE 4.2.4.8-1
                                   SOFTWARE STRUCTURE OF SEH


4.2.4.9  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲ ̲i̲n̲ ̲S̲E̲H̲

         For data flow refer figure 4.2.4.9-1.

         For control logic refer figure 4.2.4.9-2.







                    Figure 4.2.4.9-1 



4.2.4.10 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲S̲E̲H̲



4.2.4.10.1   S̲E̲H̲ ̲M̲A̲I̲N̲P̲R̲G̲



4.1.4.10.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̲

         Waits for a start command from CFH to arrive in SEH
         ̲OS. Defines the service-system corresponding to PSE
         and CESE. Initializes the operation for waiting on
         PSE and CESE. If the CAMPS ̲MODE is equal to AT ̲RISK
         a request for periodically TIMEOUTs is sent to TMON,
         and a operation for waiting on the queue receiving
         the TIMEOUTs is initialized.



4.2.4.10.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲

         N/A.





4.2.4.10.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         This module contains the procedures

         -   SEH ̲MAINPRG
         -   INIT ̲SEH
         -   SEND ̲TIMEOUTS
         -   GARBLE ̲FILE ̲HANDLING

         This module calls the modules/procedures

         -   SERVE ̲INPUT
         -   INIT ̲SEH ̲SYS ̲CALL
         -   ERROR ̲SEH

         AND THE CSF-procedures

         -   WAIT ̲OPSEM
         -   SIGNAL ̲SEMAPHORE
         -   RECEIVE ̲FIRST ̲QEL
         -   DEFINE ̲SERVICE ̲SYSTEM
         -   REQUEST ̲TIMEOUT
         -   ANALYZE ̲ERROR
         -   INIT ̲OPERATION




4.2.4.10.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a1) T̲y̲p̲e̲ ̲a̲n̲d̲ ̲C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PCF element in SS ̲KIND SEE DBD
             BY ̲SYNCEL element in SS ̲COMMUNICATION see DBD
             PCF ̲SIZE see DBD.

         a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PSE,
             CESE                   See DBD
             SEH ̲OS                 See 4.1.4
             CLOSE ̲DOWN ̲STARTED,
             GAQUEUE,
             GAQ ̲ATT,
             GAQEL,
             GAQSUB ̲NO,
             CC,
             AWAIT ̲PSE,
             AWAIT ̲CESE,
             PSE ̲OP,
             CESE ̲OP,
             TMON ̲REQUESTS,
             GAQ ̲OP                 See 4.2.4.11
             GARBLE ̲FILE

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             CLOSE ̲DOWN ̲STARTED     (m)
             GAQUEUE.MAINQUEUE      (m)
             GAQUEUE.SUBQUEUE       (m)
             GAQ ̲ATT                (m)
             GAQ ̲EL                 (m)
             GAQ ̲SUB ̲NO             (m)
             CC                     (m)
             AWAIT ̲PSE.SS ̲ID        (m)


             AWAIT ̲PSE.SS ̲CODE           (m)
             AWAIT ̲CESE,SS ̲ID            (m)
             AWAIT ̲CESE.SS ̲CODE          (m)
             PSE ̲OP.CMD ̲TYPE             (m)
             PSE ̲OP.CMD                  (m)
             CESE.OP.CMD ̲TYPE            (m)
             CESE.OP.CMD                 (m)
             TMON ̲REQUEST.MAINQUEUE      (m)
                         .SUBQUEUE       (m)
                         .TIMEOUT        (m)
                         .FORMAT         (m)
                         .TIME ̲PERIOD    (m)
                         .EVENT.ID       (m)
             GAQ ̲OP.CMD ̲TYPE             (m)
             GAQ ̲OP.CMD                  (m)


4.2.4.10.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  S̲E̲H̲ ̲M̲A̲I̲N̲P̲R̲G̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Waits for SEH ̲OS for a start command. In a loop
             the module SERVE ̲INPUT is called. SEH ̲MAINPRG exist
             the loop when SEH ̲OS.COUNTER is equal to zero and
             the variable CLOSE ̲DOWN ̲STARTED is equal to TRUE.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See figure 4.2.4.10.1.5-1.

         b)  I̲N̲I̲T̲ ̲S̲E̲H̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             When the system calls DEFINE ̲SERVICE ̲SYSTEM the
             service system associated with PSE and CESE is
             defined. The SCM funtion for awaiting on PSE and
             CESE is defined and the corresponding operations
             are initialized.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See figure 4.2.4.10.1.5-2

         c)  S̲E̲N̲D̲ ̲T̲I̲M̲E̲O̲U̲T̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             The parameters for a timeout is set. The operation
             for waiting for the timeouts is initialized.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See figure 4.2.4.10.1.5-3

         d)  G̲A̲R̲B̲L̲E̲ ̲F̲I̲L̲E̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Open the garble pool file and sets the parameter,
             used when writing on the file.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See figure 4.2.4.10.1.5-4.



         PROCEDURE

         SEH ̲MAINPRG

         BEGIN

             WAIT ̲OPSEM (SEH ̲OS)(OP)

             OP.CMD ̲TYPE NE CFH ̲CMD ̲L
                                      ?       ERROR ̲SEH
…02…                                      (SEH ̲MAIN,COPSY ̲LONG ̲ERR)
             LOGOR OP.CMD NE START ̲SEH

             INIT ̲SEH

             LOOP

                 SEH ̲OS EQ 0 LOG AND
                                              ?  EXIT
                 CLOSE ̲DOWN ̲STARTED EQ TRUE

                 SERVE ̲SEH ̲INPUT

             END LOOP

             SIGNAL ̲SEMAPHORE (CFH ̲S)

             CASE RECEIVE ̲FIRST ̲QEL(TRUE, GAQUEUE)

                            (GAQ ̲ATT,GAQSL, GAQSUB ̲NO, CC) OF

                    ERROR?  ANALYZE ̲ERROR (CC,0)

                    OK ?

             END CASE RECEIVE ̲FIRST ̲QEL

         END PROCEDURE SEH ̲MAINPRG










                  Figure 4.2.4.10.1.5-1


         PROCEDURE

         INIT ̲SEH

         BEGIN

             CASE DEFINE ̲SERVICE ̲SYSTEM(AWAIT ̲PSE.SS ̲ID,PCF,
                     BY ̲SYNCEL, PSE, PCF ̲SIZE)

                 ERROR?  ANALYZE ̲ERROR(CC,0)

                 OK?     AWAIT ̲PSE.SS ̲CODE = 1

             END CASE DEFINE ̲SERVICE ̲SYSTEM

             CASE DEFINE ̲SERVICE ̲SYSTEM(AWAIT ̲CESE.SS ̲ID, PCF,
                                       BY ̲SYNCEL, CESE, PSE
                     ̲SIZE)

                 ERROR?  ANALYZE ̲ERROR (CC,0)

                 OK?     AWAIT ̲PSE.SS ̲CODE-1

             END CASE DEFINE ̲SERVICE ̲SYSTEM

             INIT ̲OPERATION(0, PSE ̲OP)

             PSE ̲OP.CMD ̲TYPE = SEH ̲INT ̲CMD

             PSE ̲OP.CMD = AWAIT ̲PSEL

             INIT ̲OPERATION (0, CESE ̲OP)

             CESE ̲OP.CMD ̲TYPE = SEH ̲INT ̲CMD

             CESE ̲OP.CMD = AWAIT ̲CESEL

             INIT ̲SEH ̲SYS ̲CALL(AWAIT ̲PSEL)

             INIT ̲SEH ̲SYS ̲CALL(AWAIT ̲CESEL)

             GARBLE ̲FILE ̲HANDLING

             CAMPS ̲MODE EQ AT ̲RISK? SEND ̲TIMEOUT

         END PROCEDURE INIT ̲SEH








                  Figure 4.2.4.10.1.5-2


         PROCEDURE

         SEND ̲TIMEOUT

         BEGIN

             TMON ̲REQUEST.MAINQUEUE = SYQ

             TMON ̲REQUEST.SUBQUEUE = TMON ̲Q

             TMON ̲REQUEST.TIME OUT = PERIODIC

             TMON ̲REQEST.FORMAT = HOURS

             TMON ̲REQUEST.TIME.PERIODE = 24

             TMON ̲REQUEST.EVENT ̲ID = 0

             CASE REQUEST ̲TIMEOUT(TMON ̲REQUEST)(CC)

                 ERROR?   ANALYSE ̲ERROR(CC,0)

                 OK?      

             END CASE REQUEST ̲TIMEOUT

         END PROCEDURE SEND ̲TIMEOUT













                  Figure 4.2.4.10.1.5-3


     PROCEDURE

     GARBLE ̲FILE ̲HANDLING

     BEGIN

          CASE   GET ̲ROOT(MIR ̲MOVING)(ROOT ̲FDCB, CC))

                 ERROR? ANALYZE ̲ERROR(CC,0)

                 OK?

          END GET ̲ROOT

          CASE   DESCENT(SSC ̲DIR, ROOT ̲FDCB)(SSC ̲DIR ̲FDCB,
                 CC)

                 ERROR? ANALYZE ̲ERROR(CC,0)

                 OK?

          END CASE DESCENT

          CASE   DESCENT (GARBLE, SSC ̲DIR ̲FDCB)(GARBLE ̲FDCB,CC)

                 ERROR? ANALYZE ̲ERROR(CC,0)

                 OK?

          END CASE DESCENT

          GARBLE ̲SPEC.FIRST ̲BYTE = GARBLE ̲TABLE.START

          GARBLE ̲SPEC.BYTE ̲COUNT = GARBLE ̲SECTOR ̲SIZE

          GARBLE ̲BLE.KIND = BNLOCALLOWER

          GARBLE ̲BLE.LINK = NIL

          GARBLE ̲BLE.SIZE = GARBLE ̲SECTOR ̲SIZE/2

          TABLE ̲SPEC.FIRST ̲BYTE = TABLE ̲START

          TABLE ̲SPEC.BYTE ̲COUNT = TABLE ̲SIZE

          TABLE ̲BLE.KIND = BNLOCALLOWER

          TABLE ̲BLE.LINK = NIL

          TABLE ̲BLE.SIZE = TABLE ̲SIZE/2

     END PROCEDURE GARBLE ̲FILE: HANDLING
                Figure 4.2.4.10.1.5-4



4.2.4.10.2   S̲E̲R̲V̲E̲ ̲I̲N̲P̲U̲T̲



4.2.4.10.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̲

         Receives operation from SEH ̲OS for the operation containing:

         -   close down command SEH cancels, if CAMPS ̲MODE equal
             to AT ̲RISK, the timeouts and sets CLOSE ̲DOWN ̲STARTED
             to TRUE.

         -   awaiting operation on PSE it calls the module PSE
             ̲GAQ ̲REPORT ̲HANDLING

         -   awaiting operation on CESE it performed this and
             dumps the corresponding error-report.

         -   awaiting operation on GAQ it checks that the received
             QEL is a wanted timeout and resets the error counter
             in the PROCESS ̲TABLE.



4.2.4.10.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)  SERVE ̲INPUT

         b)  SERVE ̲INPUT (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̲

         R1  LINK

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R0-R7       (destr)





4.2.4.10.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲

         This module contains the following procedures

         -   SERVE ̲INPUT

         -   CLOSE ̲DOWN ̲SEH

         -   COPSY ̲ERROR ̲HANDLING

         -   CESE ̲REPORT ̲HANDLING

         -   RESET ̲PROCESS ̲TABLE

         This module calls the modules/procedures

         -   PSE ̲GAQ ̲REPORT ̲HANDLING

         -   INIT ̲SEH ̲SYS ̲CALL

         -   ERROR ̲SEH

         -   SAVE ̲GARBLE

         and the commom SSC-procedures

         -   PU ̲DOWN

         -   REPORT ̲ERROR

         and the CSF-procedures

         -   WAIT ̲OPSEM

         -   CANCEL ̲TIMEOUT

         -   RECEIVE ̲FIRST ̲QEL

         -   DISMANTLE

         -   WAIT ̲SYSTEM ̲CALL

         -   ANALYZE ̲ERROR




4.2.4.10.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a1) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PROCESS ̲TABLE                    see 4.1.4
             SEH ̲OS                           see 4.1.4
             OP,
             CLOSE ̲DOWN ̲STARTED,
             TMON ̲REQUEST,
             GAQUEUE,
             GAQ ̲ATT,
             GAQEL,
             GAQSUB ̲NO,
             CC,
             PRINT ̲INFO,                      see 4.2.4.11

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             PROCESS ̲TABLE(I).ERROR ̲COUNTER   (m)
             SEH ̲OS
             OP
             OP ̲CMD ̲TYPE
             OP ̲CMD
             CLOSE ̲DOWN ̲STARTED               (m)
             TMON ̲REQUEST
             GAQUEUE ̲SUBQUEUE                 (m)
             GAQ ̲ATT                          (m)
             GAQ ̲ATT.MAINTYPE
             GAQ ̲ATT.SUBTYPE
             GAQ ̲ATT.FLAG
             GAQEL                            (m)
             GAQ ̲SUB ̲NO                       (m)
             CC                               (m)
             PRINT ̲INFO(I)                    (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             VAR I: INTEGER
                    Used as counter





4.2.4.10.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  S̲E̲R̲V̲E̲ ̲I̲N̲P̲U̲T̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Receives an operation from SEH ̲OS. Depending on
             the operation CMD ̲TYPE and CMD a procedure/module
             is called. This is done in a double CASE statement.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See 4.2.4.10.2.5-1

         b)  C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲S̲E̲H̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             The periodically timeouts are cancelled and CLOSE
             ̲DOWN ̲STARTED sets for TRUE.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See 4.2.4.10.2.5-2

         c)  C̲O̲P̲S̲Y̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             An error report is made and dumped

             F̲l̲o̲w̲g̲r̲a̲m̲

             See 4.2.4.10.2.5-3

         d)  C̲E̲S̲E̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             An error report is made and dumped.

             F̲l̲o̲w̲g̲r̲a̲m̲

             See 4.2.4.10.2.5-4

         e)  R̲E̲S̲E̲T̲ ̲P̲R̲O̲C̲E̲S̲S̲ ̲T̲A̲B̲L̲E̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             In a loop the error-counter for each process is
             set to zero.



             F̲l̲o̲w̲g̲r̲a̲m̲

             See 4.2.4.10.2.5-5.



 PROCEDURE

 SERVE ̲INPUT

 BEGIN

     WAIT ̲OPSEM(SEH ̲OS)(OP)

     CASE OP.CMD ̲TYPE OF

         CFH ̲LONG ̲CMD?                OP.CMD.EQ FAILURE?
                                         CLEAN ̲UP ̲PRC
                                      CLOSE ̲DOWN ̲SEH

         COPSY ̲ERROR ̲REPORT?          COPSY ̲ERROR ̲HANDLING

         SEH ̲INT ̲CMD?

             CASE OP.CMD OF

                 AWAIT ̲PSEL?          PSE ̲GAQ ̲REPORT
                                      ̲HANDLING
                                      INIT ̲SEH ̲SYS ̲CALL(AWAIT
                                      ̲PSEL)

                 AWAIT ̲CESEL?         RECEIVE ̲CESE ̲REPORT
                                      ̲HANDLING
                                      INIT ̲SEH ̲SYS ̲CALL(AWAIT
                                      ̲CESEL)

                 RESET ̲PRC ̲TBL?

                                      RESET ̲PROCESS
                                      ̲TABLE

                 OTHERWISE?           ERROR ̲SEH(SER
                                      ̲INPUT,
                                      COPSY ̲LONG ̲ERROR)

             END CASE OP.CMD

         OTHERWISE? ERROR ̲SEH (SER ̲INPUT, OP ̲ERROR)

     END CASE OP.CMD ̲TYPE

 END PROCEDURE SERVE ̲INPUT







              Figure 4.2.4.10.2.5-1


 PROCEDURE

 CLOSE ̲DOWN ̲SEH

 BEGIN

     OP.CMD ̲TYPE NE CFH ̲CMD ̲L LOGOR   ? ERROR ̲SEH (CLOSE
                                      ̲SEH ̲DOWN
     OP.CMD NE CLOSE ̲COR                COPY ̲LONG ̲ERROR)

     CLOSE ̲DOWN ̲STARTED = TRUE

     CAMPS ̲MODE NE AT ̲RISK?

     CANCEL ̲TIMEOUT (TMON ̲REQUEST)

     GAQUEUE.SUBQUEUE = TMON ̲Q

     CASE RECEIVE ̲FIRST ̲QEL (TRUE, GAQUEUE)
                            (GAQ ̲ATT, GAQEL, GAQ ̲SUB
                         ̲NO, CC) OF

             ERROR? ANALYZE ̲ERROR (CC,0)

             OK

     END CASE RECEIVE ̲FIRST ̲QEL

     GAQ ̲ATT.MAINTYPE NE TIMEOUT? ERROR ̲SEH ̲SEH ̲(CLOSE
     ̲DOWN,
                                           COPSY ̲Q ̲ERROR)

     GAQ ̲ATT.SUBTYPE NE CANCEL?

         DISMANTLE (GAQEL)

         CASE RECEIVE ̲FIRST ̲QEL (TRUE, GAQUEUE)
                            (GAQ ̲ATT, GAQEL, GAQSUB
                     ̲NO, CC) OF

             ERROR? ANALYSE ̲ERROR CC,0)

             OK?

                 GAQ ̲ATT.MAINTYPE NE TIMEOUT ̲EVENT LOG
                 OR
                 GAQ ̲ATT.SUBTYPE NE CANCELLED  ?

                         ERROR ̲SEH(SEH ̲CLOSE ̲DOWN, COPSY
                         ̲Q ̲ERROR)

       END CASE RECEIVE ̲FIRST ̲QEL

    DISMANTLE (GAQEL)

 END PROCEDURE CLOSE ̲DOWN ̲SEH
              Figure 4.2.4.10.2.5-2


 PROCEDURE

 COPSY ̲ERROR ̲HANDLING

 BEGIN

     I=0

     LOOP

         I = I + 1

         PRINT ̲REP.REPORT(I) = LONG ̲OP.INF(I)

         I EQ 8   EXIT

     END LOOP

     LONG ̲OP.INF(1) EQ COPSY ̲Q ̲ERROR

     PRINT ̲REP.REPORT(9) = LONG ̲OP.CMD

     PRINT ̲REP.SIZE = 9

     SAVE ̲GARBLE(COPSY ̲ERROR ̲REPORT, PRINT ̲REP)

     EQUIVALENCE(LONG ̲OP.INF, COPSY ̲PARAMS: COPSY ̲GARBLE
     ̲PARAMS)

     COPSY ̲PARAM.USER ̲ACTION EQ ̲GIVE ̲UP LOGOR

     CAMPS ̲MODE EQ NORMAL                      ?

             PU ̲DOWN (COPSY ̲GAQ ̲REPORT, PRINT ̲REP)

     REPORT ̲ERROR (COPSY ̲GAQ ̲REPORT, PRINT ̲REP)

 END PROCEDURE COPSY ̲ERROR ̲HANDLING












              Figure 4.2.4.10.2.5-3


 PROCEDURE

     CESE ̲REPORT ̲HANDLING

 BEGIN

     CASE WAIT ̲SYSTEM ̲CALL(OP)(CESE ̲REPORT,CC) OF
         ERROR? ANALYZE ̲ERROR(CC, 0)
         OK?
     END CASE WAIT ̲SYSTEM ̲CALL

     EQUIVALENCE(CESE ̲REPORT, REPORT: ARRAY (1..8) OF
     INTEGER;

     I = 0

     LOOP

         I = I = 1

         PRINT ̲REP.REPORT(I) REPORT(I)

         I EQ 1?  EXIT

     END LOOP

     SAVE ̲GARBLE(CESE ̲ERROR ̲REPORT, PRINT ̲INFO)

     PU ̲DOWN(CESE ̲REPORT, PRINT ̲INFO)

 END PROCEDURE RECEIVE ̲CESE ̲REPORT






















              Figure 4.2.4.10.2.5-4


 PROCEDURE RESET ̲PROCESS ̲TABLE

 BEGIN

     CASE WAIT ̲SYSTEM ̲CALL(OP)(GAQ ̲ATT, GAQEL, GAQ ̲SUB
     ̲NO,CC)

         ERROR? ANALYSE ̲ERROR (CC,0)

         OK?

         GAQ ̲ATT.MAINTYPE NE TIMEOUT LOGOR

         GAQ ̲ATT.SUBTYPE NE TIMEOUT ̲EVENT LOGOR    
         ?

         GAQ ̲ATT.FLAG NE 0

                     ERROR ̲SEH(RESET ̲PROG ̲TABLE,
                         COPSY ̲Q ̲ERROR)

         I = 0                        

         LOOP RESET PROCESS ̲TABLE

             I = I + 1

             PROCESS ̲TABLE(I)
             ERROR ̲COUNTER = 0

             I EQ NO ̲OF ̲PROCESSES?    EXIT

         END LOOP RESET PROCESS TABLE

     END CASE WAIT ̲SYSTEM ̲CALL

 END PROCEDURE TIMEOUT ̲EVENT












              Figure 4.2.4.10.2.5-5


4.2.4.10.3   P̲S̲E̲ ̲G̲A̲Q̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲



4.2.4.10.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̲

         Receives a report from PSE and find the type of the
         report. If the report has connecton with a GAQ-report
         the corresponding GAQ-report is found. If the PSE report
         is an error report the module REPORT ̲MAKER is called.
         If the PSE-report has connection with the clean-up
         procedure for a process the process table is updated.



4.2.4.10.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)  PSE ̲GAQ ̲REPORT ̲HANDLING

         b)  PSE ̲GAQ ̲REPORT ̲HANDLING (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̲

             R 6  link

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

             R 0 - R7  destr.



4.2.4.10.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         This module consists of the procedures:

         -   PSE ̲GAQ ̲REPORT ̲HANDLING

          ̲   FIND ̲TYPE ̲OF ̲REPORT

         -   RECEIVE ̲GAQ ̲REPORT



         -   CLEAN ̲UP ̲ACTION

         This module calls the procedures

         -   REPORT ̲MAKER

         -   ERROR ̲SEH

         and the CSF-procedures

         -   WAIT ̲SYSTEM ̲CALL

         -   RECEIVE ̲FIRST ̲QEL

         -   GET ̲GARBLE ̲INFORMATION

         -   RETURN

         -   RECEIVE ̲NEXT ̲QEL

         and the DAMOS-procedures

         -   INIT ̲AWAIT



4.2.4.10.3.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PSE            DBD
             PROCESS ̲TABLE  4.1.4
             OP,
             PSE ̲REPORT,
             GAQUEUE;
             GAQ ̲ATT,
             GAQEL,
             GAQSUB ̲NO,
             CC,
             GAQ ̲REPORT,
             PRINT ̲INFO,     
             VIEW ̲ATT      see 4.2.4.11

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             PSE
             PROCESS ̲TABLE (I) OBJECT
             PSE ̲REPORT  (m)
             PSE ̲REPORT.INFO ̲TYPE
             PSE ̲REPORT.PARENT ̲INDEX
             PSE ̲REPORT.PRIMARY
             PSE ̲REPORT.SECONDARY
             PSE ̲REPORT.TERTIRY
             GAQUEUE.SUBQUEUE (m)
             GAQ ̲ATT  (m)
             GAQEL  (m)
             GAQSUB ̲NO  (m)
             CC  (m)
             GAQ ̲REPORT  (m)
             GAQ ̲REPORT.STANDARD ̲PART.(m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             VAR TYPE ̲OF ̲REPORT : ERROR ̲REPORT ̲TYPE, see 4.1.4
                "used to indicate the type of a received PSE
             
                 report.

             VAR PSE ̲ID : INTEGER
                 "used to indicate the grable id of a PSE-report
                 which has connection with a GAQ-report.

             VAR RETIRE:BOOLEAN
                 "indicate of a process shall be retired or
                 not

             VAR SYSTEM ̲CLOSE:BOOLEAN
                 "indicate of the system shall be closed or
                 not




4.2.4.10.3.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  PSE ̲GAQ ̲REPORT ̲HANDLING

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         Performed the system call ass. with OP. Find the type
         of the received report. Depending on the type it calls
         REPORT ̲MAKER.

         F̲l̲o̲w̲g̲r̲a̲m̲   see 4.2.4.10.3.5-1

         b)  F̲I̲N̲D̲ ̲T̲Y̲P̲E̲ ̲O̲F̲ ̲R̲E̲P̲O̲R̲T̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         From the PSE-report INFO ̲TYPE-field and primary code
         it finds the type of the PSE-report.

         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)  FIND ̲TYPE ̲OF ̲REPORT () (TYPE ̲OF ̲REPORT:ERROR:REPORT
             ̲
                                                           TYPE
                                     PSE ̲ID:GARBLE ̲ID)

         b)  FIND ̲TYPE ̲OF ̲REPORT (R0, R1, 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 6  link

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R 0  TYPE ̲OF ̲REPORT
         R 1  PSE ̲ID
         R 2 - R 7  destr.

         F̲l̲o̲w̲g̲r̲a̲m̲ ̲  see fig. 4.2.4.10.3.5-2

         c)  R̲E̲C̲E̲I̲V̲E̲ ̲G̲A̲Q̲ ̲R̲E̲P̲O̲R̲T̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲


         Take the first QEL in the garble queue and the corresponding
         GAQ-report. If the GAQ-report has same ID as the PSE-report
         it stops, else it takes the next QEL and make the same
         procedure on this until the right GAQ-report has been
         received.

         F̲l̲o̲w̲g̲r̲a̲m̲   see fig. 4.2.4.10.3.5-3

         d)  C̲L̲E̲A̲N̲ ̲U̲P̲ ̲A̲C̲T̲I̲O̲N̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         In a loop the entry for the process is found and the
         status is set to CLEANED.

         F̲l̲o̲w̲g̲r̲a̲m̲   see fig. 4.2.4.10.3.5-4



         PROCEDURE

         PSE ̲GAQ ̲REPORT ̲HANDLING

         BEGIN

             WAIT ̲SYSTEM ̲CALL (OP) (PSE ̲REPORT)

             CASE INIT ̲AWAIT (PSE) (CC)  OF

                 ERROR ?  ANALYZE ̲ERROR (CC,0)

                 OK ?

             END CASE INIT ̲AWAIT

             FIND ̲TYPE ̲OF ̲REPORT ()(TYPE ̲OF ̲REPORT,PSE ̲ID)

             CASE TYPE ̲OF ̲REPORT  OF

                 GARBLE ?

                     RECEIVE ̲GAQ ̲REPORT

                     REPORT ̲MAKER(GARBLE)




                 PSE ̲ERROR ?  REPORT ̲MAKER(PSE ̲ERROR)

                 CLEAN ̲UP ̲REPORT ?  CLEAN ̲UP ̲ACTION

                 OTHERWISE ?  ERROR ̲SEH (RECEIVE ̲PSE,COPSY ̲INT
                 ̲ERROR)

             END CASE TYPE ̲OF ̲REPORT

         END PROCEDURE RECEIVE ̲PSE ̲REPORT









                  Figure 4.2.4.10.3.5-1


   PROCEDURE

   FIND ̲TYPE ̲OF ̲REPORT  (      )

                       (TYPE ̲OF ̲REPORT:ERROR ̲REPORT ̲TYPE,PSE
                       ̲ID:
                                                     
                               GARBLE ̲ID)

   BEGIN

       CASE PSE ̲REPORT.INFO ̲TYPE  OF

           RETIRED ̲WITH ̲TIME ̲LIMIT,

           RETIRED ̲WITHOUT ̲RESTART ?

                           TYPE ̲OF ̲REPORT=PSE ̲ERROR

           RETIRED ̲WITH ̲RESTART ?

               PSE ̲REPORT.PRIMARY EQ SEND ̲GARBLE ̲CAUSE
               ?

                   TYPE ̲OF ̲REPORT = GARBLE

                   PSE ̲ID = PSE ̲REPORT.TERTIARY

               TYPE ̲OF ̲REPORT = PSE ̲ERROR

           PASSIVATED ?  ERROR ̲SEH(FIND ̲TYPE ̲REPORT,COPSY
           ̲INT ̲ERROR)

           CLEANED ?     TYPE ̲OF ̲REPORT = CLEAN ̲UP ̲REPORT

       END CASE  PSE ̲REPORT.INFO ̲TYPE

   END PROCEDURE  FIND ̲TYPE ̲OF ̲REPORT













               Figure 4.2.4.10.3.5-2


   RECEIVE ̲GAQ ̲REPORT

   BEGIN

       CASE  RECEIVE ̲FIRST ̲QEL(FALSE,GAQUEUE)
                           (GAQ ̲ATT, GAQEL, GAQSUB ̲NO,
                           CC)

           ERROR ?  ANALYZE ̲ERROR (CC,0)

           OK ?

       END CASE  RECEIVE ̲FIRST ̲QEL

       CASE  GET ̲GARBLE ̲INFORMATION (GAQEL)GAQREPORT)

           ERROR ?  ANALYZE ̲ERROR (CC,0)

           OK?

       END CASE  GET ̲GARBLE ̲INFORMATION

       LOOP

           GAQ ̲REPORT.STANDARD-PART.ID EQ PSE ̲ID?    EXIT

           RETURN (QEL)

           CASE  RECEIVE ̲NEXT ̲QEL (GAQEL)(GAQEL,GAQ ̲ATT,CC)

               ERROR ?  ANALYZE ̲ERROR (CC,0)

               OK ?

           END CASE  RECEIVE ̲NEXT ̲QEL

           CASE  GET ̲GARBLE ̲INFORMATION(GAQEL,GAQ ̲REPORT)

               ERROR  ANALYZE ̲ERROR (CC, 0)

               OK ?

           END CASE  GET ̲GARBLE ̲INFORMATION

       END LOOP

   END PROCEDURE  RECEIVE ̲GAQ ̲REPORT



               Figure 4.2.4.10.5.3-3


   PROCEDURE

   CLEAN ̲UP ̲ACTION

   BEGIN

       I = COPSY ̲P ̲NO = 1

       LOOP

           I = I + 1

           PROCESS ̲TABLE (I).OBJECT EQ PSE ̲REPORT.PARENT
           ̲INDEX ?

               PROCESS ̲TABLE (I).STATUS = CLEANED

           I EQ NO ̲OF ̲PROCESSES ?    EXIT

       END LOOP

   END PROCEDURE  CLEAN ̲UP ̲ACTION


























               Figure 4.2.4.10.3.5-4


4.2.4.10.4   C̲L̲E̲A̲N̲ ̲U̲P̲ ̲P̲R̲C̲



4.2.4.10.4.1 F̲u̲n̲c̲t̲i̲o̲n̲e̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         This module sends clean up commands to all processes
         exept COPSY. When the processes have notified that
         the clean up action is performed the mirrored disks
         are dismounted. At last PU ̲ERROR is called.



4.2.4.10.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)  CLEAN ̲UP ̲PRC(OP: LONG ̲OP)
         b)  CLEAN ̲UP ̲PRC(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 pointer to OP
         R6 link

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         N/A



4.2.4.10.4.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         This module consists of the procedure 

         -   CLEAN ̲UP ̲PRC
         -   CLEAN ̲UP ̲DISKS

         It calls the common SSC procedure

         -   DISMOUNT ̲DISK

         and the DAMOS procedure

         -   CLEAN ̲UP ̲PROCESS
         -   AWAIT
         -   DISMANTLE





4.2.4.10.4.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a)  D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PROCESS ̲TABLE      ,
             NO ̲OF ̲PROCESSES    ,
             COPSY ̲P ̲NO         4.1.4
             PSE                DBD
             PSE ̲REPORT         4.2.4.11
             MMS ̲STORAGE ̲FDCB
             T ̲COP ̲FDCB
             MIR ̲FIXED
             MIR ̲MOVING
             OP                 VF-data

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             PROCESS ̲TABLE(PRC ̲NO).STATUS
             PROCESS ̲TABLE(PRC ̲NO).PROCESS ̲NO
             PSE ̲REPORT (m)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

         VAR

             PRC ̲NO: INTEGER
             NO ̲OF ̲PRC ̲CLEANED: INTEGER



4.2.4.10.4.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  C̲L̲E̲A̲N̲ ̲U̲P̲ ̲P̲P̲C̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             In a loop the clean up commands are sent to the
             processes. It is checked whether or not a process
             is previous been cleaned up. In an other loop the
             procedure awaits the acknowledges about the clean
             up from DAMOS.

             F̲l̲o̲w̲g̲r̲a̲m̲ refer figure 4.2.4.10.4.5-1.



         b)  C̲L̲E̲A̲N̲ ̲U̲P̲ ̲D̲I̲S̲K̲S̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             First the files opened by COPSY are dismantled.
             Thereafter the mirrored disks are dismounted, and
             PU ̲ERROR is called.

             F̲l̲o̲w̲g̲r̲a̲m̲ refer figure 4.2.4.10.4.5-2.




         
   PROCEDURE

   CLEAN ̲UP ̲PRC

   BEGIN

        PRC ̲NO = COPSY ̲P ̲NO
        NO ̲OF ̲PRC ̲CLEANED = 0

        LOOP

               PRC ̲NO EQ NO ̲OF ̲PROCESSES?          EXIT

               PRC ̲NO = PRC ̲NO + 1

               PROCESS ̲TABLE(PRC ̲NO).STATUS NE CLEANED?

                       CASE CLEAN ̲UP ̲PROCESS(
                           PROCESS ̲TABLE(PRC ̲NO).PROCESS
                           ̲NO, ̲1)(CC)

                           ERROR? ANALYZE ̲ERROR(CC,0)

                           OK?

                       EMD CASE CLEAN ̲UP ̲PROCESS

                       NO ̲OF ̲PRC ̲CLEANED = NO ̲OF ̲PRC ̲CLEANED
                       + 1

        END LOOP

        LOOP

           NO ̲OF ̲PRC ̲CLEANED EQ 0?          EXIT

           CASE AWAIT(1, 1, PSE, PSE ̲REPORT)

               ERROR? ANALYZE ̲ERROR(CC,0)

               OK?

           END CASE AWAIT

           PSE ̲REPORT.INFO ̲TYPE EQ CLEANED?
               NO ̲OF ̲PRC ̲CLEANED = NO ̲OF ̲PRC ̲CLEANED-1

        END LOOP

        CLEAN ̲UP ̲DISKS

   END PROCEDURE CLEAN ̲UP ̲DISKS
               Figure 4.2.4.10.4.5-1



   PROCEDURE

   CLEAN ̲UP ̲DISKS

   BEGIN

        CASE   DISMANTLE(MMS ̲STORAGE ̲FDCB)(CC)

               ERROR? ANALYZE ̲ERROR(CC,0)

               OK?

        END CASE DISMANTLE

        TRACE ̲MODE EQ TRUE?

           CASE    DISMANTLE(T ̲COP ̲FDCB)(CC)

                   ERROR? ANALYZE ̲ERROR(CC,0)

                   OK?

           END CASE DISMANTLE

        DISMOUNT ̲DISK(MIR ̲FIXED)

        DISMOUNT ̲DISK(MIR ̲MOVING)

        PU ̲ERROR(OP.INF(1))

   END.PROCEDURE CLEAN ̲UP ̲DISK














               Figure 4.2.4.10.4.5-2




4.2.4.10.5   R̲E̲P̲O̲R̲T̲ ̲M̲A̲K̲E̲R̲



4.2.4.10.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̲

         This module receives from the GARBLE ̲REPORT SEMaphore
         reports which are field up with data concerning error
         report. These are sent further to the coroutine REPORT
         ̲ERROR. The report is marked as described in sec. 4.2.4.11.



4.2.4.10.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)  REPORT ̲MAKER(REP: ERROR ̲REPORT ̲TYPE)
         b)  REPORT ̲MAKER(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  REP
         R6  LINK

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R0 - R7     dest.



4.2.4.10.5.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         This module consists of the following procedures:

         -   REPORT ̲MAKER
         -   PSE ̲ERROR ̲HANDLING
         -   DUMP ̲PSE ̲REPORT
         -   GARBLE ̲HANDLING
         -   DUMP ̲PSE ̲GAR ̲REPORT
         -   DUMP ̲GAQ ̲REPORT
         -   COPY ̲GAQ
         -   HANDLE ̲PROCESS ̲TABLE
         -   DUMP ̲PSE ̲REP
         -   PRINT ̲SUBPROCESS ̲QEL
         -   SEND ̲REPORT


4.2.4.10.5.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a1) T̲y̲p̲e̲ ̲a̲n̲d̲ ̲C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             ERROR ̲REPORT ̲TYPE         4.1.4
             COPSY ̲P ̲NO                4.1.4
             SUBPROCESS ̲INDEX          DBD
             STRING         ,          
             MAX ̲QEL ̲PRINT  , 
             REP ̲TYPE       ,
             GQE ̲LENGTH     ,
             GTE ̲LENGTH     ,
             GIE ̲LENGTH                4.2.4.11
             GAQ ̲INFO ̲TYPE             DBD

         a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             PROCESS ̲TABLE       ,
             SUBP ̲PROCESS ̲TABLE  ,
             NO ̲OF ̲PROCESSES           4.1.4
             PSE ̲REPORT          ,
             GAQ ̲ATT             ,
             GAQEL               ,
             GAQ ̲REPORT          ,
             REPORT              ,
             QEL ̲PRINT           ,
             NUMBER                    4.2.11
             REP                 1/F-data

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             PROCESS ̲TABLE.OBJECT
             PROCESS ̲TABLE.ERROR ̲COUNT (M)
             PROCESS ̲TABLE.MAX ̲COUNT   (M)
             PROCESS ̲TABLE.STATUS      (M)
             SUBP ̲PROCESS ̲TABLE.PROCESS ̲NO
             PSE ̲REPORT.PARENT
             PSE ̲REPORT.PRIMARY
             PSE ̲REPORT.SECONDARY
             PSE ̲REPORT.TERTIARY



             GAQ ̲ATT.OBJECT
             GAQ ̲ATT equivalent with
             ARRAY(1..GAQ ̲ATT ̲LENGTH) OF INTEGER
             GAQEL
             GAQ ̲REPORT.STANDARD ̲PART.USER ̲ACTION
             REPORT(NUMBER).R ̲TYPE     (M)
             REPORT(NUMBER).CONTINUE   (M)
             REPORT(NUMBER).SECTOR ̲ID  (M)
             REPORT(NUMBER).ID         (M)
             REPORT(NUMBER).REP        (M)
             REPORT(NUMBER).INFO(I)    (M)
             QEL ̲PRINT                 (M)

         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             VAR I, J: INTEGER

             VAR PROC ̲TYPE: ERROR ̲REPORT ̲TYPE
             used to indicate the error type of an erroneous
             process.

             VAR RETIRE: BOOLEAN
             used to indicate if an erroneous process shall
             be resumed or cleaned up.



4.2.4.10.5.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  R̲E̲P̲O̲R̲T̲ ̲M̲A̲R̲K̲E̲R̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Initializes the parameter used for making the error
             report. In a case-statement procedure for the report
             making is called. At last the report is sent.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲  Refer sec. 4.2.4.10.5.2

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5-1

         b)  P̲S̲E̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Depending on the CAMPS ̲MODE and the error type
             of the erroneous process DUMP ̲PSE ̲REPORT is called
             with different parameters.



             I̲n̲t̲e̲r̲f̲a̲c̲e̲  Standard

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5-2

         c)  D̲U̲M̲P̲ ̲P̲S̲E̲ ̲R̲E̲P̲O̲R̲T̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             DUMP ̲PSE ̲REP is called. In a loop-statement the
             process no of the erroneous process is found. In
             an other loop-statement the qel's of the process
             is found. At last SAVE ̲GARBLE is called and depending
             on the call-parameter SYSTEM ̲CLOSE, SEND ̲REPORT
             or 
             PU ̲DOWN is called.

             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)  DUMP ̲PSE ̲REPORT(SYSTEM ̲CLOSE: BOOLEAN)
             b)  DUMP ̲PSE ̲REPORT(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̲

             R0  SYSTEM ̲CLOSE
             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̲:̲ See figure 4.2.4.10.5.5-3

         d)  G̲A̲R̲B̲L̲E̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Depending on the CAMPS ̲MODE and error type, useraction
             of the erroneous process 
             DUMP ̲PSE ̲GAQ ̲REPORT is called.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲ Standard

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5-4



         e)  D̲U̲M̲P̲ ̲P̲S̲E̲ ̲G̲A̲Q̲ ̲R̲E̲P̲O̲R̲T̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             A calling parameter indicates if the erroneous
             process shall be resumed or cleaned up, and an
             other calling parameter indicates if the system
             shall be closed down or not. The PSE-report and
             GAQ-report are dumped by some procedure call. If
             the process shall be cleaned up, the process qels
             are dumped, else the process is resumed. At last
             the report is printed.

             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)  DUMP ̲PSE ̲GAQ ̲REPORT(SYSTEM ̲CLOSE, RETIRED:
                 
                                                   BOOLEAN)
             b)  DUMP ̲PSE ̲GAQ ̲REPORT(R0, R1, 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  SYSTEM ̲CLOSE
             R1  RETIRED
             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̲  See figure 4.2.4.10.5.5-5

         f)  D̲U̲M̲P̲ ̲G̲A̲Q̲ ̲R̲E̲P̲O̲R̲T̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             NUMBER is increased by one and in a CASE-statement
             SET ̲REPORT ̲HEADER and COPY ̲GAQ are called with
             relevant parameters. If the GAQ-report has connection
             with a qel the erroneous qel is dumped.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲  Standard

             F̲l̲o̲w̲g̲r̲a̲m̲   See figure 4.2.4.10.5.5-6



         g)  C̲O̲P̲Y̲ ̲G̲A̲Q̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Copy the information standing in GAQ ̲REPORT over
             in REPORT(NUMBER). This is done in a loop statement.
             If the GAQ-Report has connection with an internal
             error the information standing in GAQ ̲ATT's info-fields
             are copied over in REPORT(NUMBER).

             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)  COPY ̲GAQ(LENGTH: INTEGER, ERR: GAQ ̲INFO ̲TYPE)
             b)  COPY ̲GAQ(R0, R1, 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  LENGTH
             R1  ERR
             R6  LINK

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0 - R7             destr.

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5-7

         h)  H̲A̲N̲D̲L̲E̲ ̲P̲R̲O̲C̲E̲S̲S̲ ̲T̲A̲B̲L̲E̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             In a loop the entry for the process is found. The
             type of the process is found, the error-counter
             is incremented by one and it is checked that the
             error-conter has not reached a threshold.



             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)  HANDLE ̲PROCESS ̲TABLE( )(PROC ̲TYPE: 
                                       ERROR ̲PROCESS ̲TYPE,
                                       RET: BOOLEAN)
             b)  HANDLE ̲PROCESS ̲TABLE(R0, R1, 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̲s̲

             R0  PROC ̲TYPE
             R1  RET
             R2 - R7             destr.

         i)  D̲U̲M̲P̲ ̲P̲S̲E̲ ̲R̲E̲P̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             The report id is incremented by one and 
             SET ̲REPORT ̲HEADER is called. In a loop statement
             the PSE-report is copied over in REPORT(NUMBER).

             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)  DUMP ̲PSE ̲REP(REP: REP ̲TYPE)
             b)  DUMP ̲PSE ̲REP(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                  REP
             R6                  Link

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0 - R7             destr.

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5-9



         j)  P̲R̲I̲N̲T̲ ̲S̲U̲B̲P̲R̲O̲C̲E̲S̲S̲ ̲Q̲E̲L̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             In a loop-statement the qels occurred by the subprocess,
             specified in the call parameter SUBPROC, are dumped.

             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)  PRINT ̲SUBPROCESS ̲QEL(SUBPROC: SUBPROCESS ̲INDEX)
             b)  PRINT ̲SUBPROCESS ̲QEL(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  SUBPROC
             R6  LINK

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0 - R6             destr.

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.5.5.10



       PROCEDURE

       REPORT ̲MAKER(REP: ERROR ̲REPORT ̲TYPE)

       BEGIN

            CASE REP OF

               GARBLE?     GARBLE ̲HANDLING

               PSE ̲ERROR?  PSE ̲ERROR ̲HANDLING

            END CASE REP

            SEND ̲REPORTS

       END PROCEDURE REPORT ̲MAKER






























               Figure 4.2.4.10.5.5-1




       PROCEDURE

       PSE ̲ERROR ̲HANDLING

       BEGIN

           CAMPS ̲MODE EQ NORMAL? DUMP ̲PSE ̲REPORT (TRUE)

           HANDLE ̲PROCESS ̲TABLE( ) (PROC ̲TYPE, RETIRE)

           CASE    PROC ̲TYPE OF

                   VITAL, DUMMY? DUMP ̲PSE ̲REPORT (TRUE)

                   RETIREABLE?   DUMP ̲PSE ̲REPORT (FALSE)

                                 CASE CLEAN ̲UP ̲PROCESS
                           (PSE ̲REPORT.
                                 PARENT ̲INDEX, -1) OF

                                 ERROR? ANALYZE ̲ERROR(CC;0)

                                 OK?

                                 END CASE CLEAN ̲UP ̲PROCESS

           END CASE PROC ̲TYPE

       END PROCEDURE PSE ̲ERROR ̲HANDLING
















               Figure 4.2.4.10.5.5-2



   PROCEDURE

   DUMP ̲PSE ̲REPORT(SYSTEM ̲CLOSE: BOOLEAN)

   BEGIN

        DUMP ̲PSE ̲REP(PSE)

        QEL ̲PRINT = 0

        J = COPSY ̲P ̲NO

        LOOP   "FIND ̲PROCESS ̲NO

               J = J + 1

               PSE ̲REPORT ̲PARENT ̲INDEX EQ PROCESS ̲TABLE(J).OBJECT?

                   PROCESS ̲NO = PROCESS ̲TABLE(J).PROCESS
                   ̲NO    EXIT

               J EQ NO ̲OF ̲PROCESSES? ERROR ̲SEH(COPSY ̲INT
               ̲ERROR)

                           QEL.PRINT = MAX ̲QEL ̲PRINT 
                               EXIT

        END LOOP FIND ̲PROCESS ̲NO

        J = 0

        LOOP PRINT ̲QEL

         J EQ NO ̲OF ̲SUBPROCESSES LOGOR
                                          ?        EXIT
         QEL ̲PRINT EQ MAX ̲QEL ̲PRINT

         J = J + 1

         SUBP ̲PROCESS ̲TABLE(J).PROCESS ̲NO EQ PROCESS ̲NO?

               PRINT ̲SUBPROCESS ̲QEL(J)

        END LOOP PRINT ̲QEL

        SAVE ̲GARBLE(PSE)

        SYSTEM ̲CLOSE EQ FALSE? PRINT ̲REPORT(PSE ̲REP)

        PU ̲DOWN(PSE ̲REPORT, REPORT ̲ID)

   END PROCEDURE DUMP ̲PSE ̲REPORT

               Figure 4.2.4.10.5.5-3



   PROCEDURE

   GARBLE ̲HANDLING

       CAMPS ̲MODE EQ NORMAL? DUMP ̲PSE ̲GAQ ̲REPORT(TRUE,
       TRUE)

       HANDLE ̲PROCESS ̲TABLE( ) (PROC ̲TYPE, RETIRE)

       CASE PROC ̲TYPE OF

           VITAL,

           DUMMY?

               GAQ ̲REPORT.STANDARD ̲PART.USER ̲ACTION EQ
               GIVE ̲UP
                                                     
                                                    ?
               LOGOR RETIRE EQ TRUE

                  DUMP ̲PSE ̲GAQ ̲REPORT (TRUE, TRUE)
               DUMP ̲PSE ̲GAQ ̲REPORT (FALSE, FALSE)

           RETIREABLE?

               GAQ ̲REPORT.STANDARD ̲PART.USER ̲ACTION EQ
               GIVE ̲UP
                                                     
                                                     ?
               LOGORE RETIRE EQ TRUE

                  DUMP ̲PSE ̲GAQ ̲REPORT (TRUE, FALSE)
               DUMP ̲PSE ̲GAQ ̲REPORT (FALSE, FALSE)

       END CASE PROC ̲TYPE

   END PROCEDURE GARBLE ̲HANDLING














               Figure 4.2.4.10.5.5-4



   PROCEDURE

   DUMP ̲PSE ̲GAQ ̲REPORT(RETIRED: BOOLEAN, SYSTEM ̲CLOSE)

   BEGIN

       DUMP ̲PSE ̲REP(PGE)
       DUMP ̲GAQ ̲REPORT
       QEL ̲PRINT = 0
       RETIRED EQ TRUE?

           PRINT ̲SUBPROCESS ̲QEL(PSE ̲REPORT.SECONDARY)

           CASE CLEAN ̲UP ̲PROCESS(PSE ̲REPORT.PARENT ̲INDEX,-1)

               ERROR? ANALYZE ̲ERROR(CC,0)

               OK?

           END CASE CLEAN ̲UP ̲PROCESS

           I = 0

           LOOP

               I EQ NO ̲OF ̲PROCESSES?         EXIT

               I = I + 1

               PROCESS ̲TABLE(I).OBJECT EQ 
               PSE ̲REPORT.PARENT ̲INDEX?
                   PROCESS ̲TABLE(I).STATUS = ERROR

           END LOOP

       CASE RESUME ̲PROCESS(PSE ̲REPORT.PARENT ̲INDEX,-1)

            ERROR? ANALYZE ̲ERROR(CC,0)

            OK?

       END CASE RESUME ̲PROCESS

       SAVE ̲GARBLE

       SYSTEM ̲CLOSE EQ FALSE? SEND ̲REPORT

       PU ̲DOWN(PSE ̲REPORT, REP ̲ID)

   END PROCEDURE DUMP ̲PSE ̲GAQ ̲REPORT

               Figure 4.2.4.10.5.5-5






   PROCEDURE

   DUMP ̲GAQ ̲REPORT

   BEGIN

        NUMBER = NUMBER + 1

        CASE GAQ ̲REPROT.STANDARD ̲PART.ERROR ̲TYPE OF

               QERROR?

                   SET ̲REPORT ̲HEADER(NUMBER)

                   COPY ̲GAQ (GQE ̲LENGTH, QERROR)

                   DUMP ̲QEL(GAQEL, GAQ ̲ATT, PSE ̲REPORT.SECONDARY)

               INTERNAL?

                   SET ̲REPORT ̲HEADER(NUMBER)

                   COPY ̲GAQ(GIE ̲LENGTH, INTERNAL)

               TIMEOUT?

                   SET ̲REPORT ̲HEADER(NUMBER)

                   COPY ̲GAQ(GTE ̲LENGTH, TIMEOUT)

       END CASE GAQ ̲REPORT.STANDARD ̲PART.ERROR ̲TYPE

   END PROCEDURE DUMP ̲GRQ ̲REPORT














               Figure 4.2.4.10.5.5-6




   PROCEDURE

   COPY ̲GAQ(LENGTH: INTEGER, ERR: GAQ ̲INFO ̲TYPE)

   BEGIN

        EQUIVALENCE(GAQ ̲REPORT, REP: ARRAY(1..LENGTH)
       OF INTEGER)

        I = 0

        LOOP

           I EQ LENGTH?        EXIT

           I = I + 1

           CONVERT ̲INTEGER ̲TO ̲HEX(REP(I))(HEXA)

           REPORT(NUMBER).INFO(I) = HEXA

        END LOOP

        ERR = INTERNAL?

               EQUIVALENCE(GAQ ̲ATT.HEADER.INFO, REP:
                           ARRAY(LENGTH + 1, LENGTH +
                       4) OF INTEGER)

               LOOP

                   I EQ LENGTH + 4?        EXIT

                   I = I + 1

                   CONVERT ̲INTEGER ̲TO ̲HEX(REP(I))(HEXA)

                   REPORT ̲NUMBER.INFO(I) = HEXA

               END LOOP


   END PROCEDURE COPY ̲GAQ







               Figure 4.2.4.10.5.5-7




   PROCEDURE HANDLE ̲PROCESS ̲TABLE( )(PRO ̲TYPE, RET)

   BEGIN

       I = 0

       LOOP

           I = I + 1

           PROCESS ̲TABLE(I).OBJECT EQ PSE ̲REPORT.PARENT
           ̲INDEX?

               PRO ̲TYPE = PROCESS ̲TABLE(I).TYPE ̲OF ̲PROCESS

               PROCESS ̲TABLE(I).ERROR ̲COUNT = PROCESS
               ̲TABLE.
                                            ERROR ̲COUNT
                                          + 1)

               PROCESS ̲TABLE(I).ERROR ̲COUNT GT PROCESS
               ̲TABLE(I).
                                                     MAX
                                          ̲COUNT?

                   RET = TRUE

               RET = FALSE

                      EXIT

       I GE MAX ̲PROCESSES?

           ERROR ̲SEH(HANDLING ̲PROC ̲TAB, COPSY ̲INT ̲ERROR)

           PROC ̲TYPE = VITAL     EXIT

       END LOOP

   END PROCEDURE HANDLE ̲PROCESS ̲TABLE












               Figure 4.2.4.10.5.5-8




   PROCEDURE

   DUMP ̲PSE ̲REP(REP: REP ̲TYPE)

   BEGIN

        NUMBER = 1

        REP ̲ID = REP ̲ID + 1

        SET ̲REPORT ̲HEADER(NUMBER, REP, REP ̲ID)(REPORT(NUMBER))

        EQUIVALENCE(PSE ̲REPORT: REPORT ARRAY(1..PSE ̲LENGTH)
        
                                                OF INTEGER)

        I = 0

        LOOP

           I EQ PSE ̲LENGTH?      EXIT

           I = I + 1

           CONVERT ̲INTEFER ̲TO ̲HEX(REPORT(I))(HEXA)

           REPORT(NUMBER).INFO(I) = HEXA

        END LOOP

   END PROCEDURE DUMP ̲PSE ̲REPORT


















               Figure 4.2.4.10.5.5-9



   PROCEDURE

   PRINT ̲SUBPROCESS ̲QEL(SUBPROC: SUBPROCESS ̲INDEX)

   BEGIN

        LOOP

               QEL ̲PRINT EQ MAX ̲QEL ̲PRINT?      EXIT

               QEL ̲PRINT = QEL ̲PRINT + 1

               CASE GET ̲SUBPROC ̲QEL(SUBPROC)

                    (GAQEL, GAQ ̲ATT, GAQSUB ̲NO,CC) OF

                    ERROR?    EXIT

                    OK?    DUMP ̲QEL(GAQEL, GAQ ̲ATT, SUBPROC)

               END CASE GET ̲SUBPROC ̲QEL

               GAQ ̲ATT.OBJECT EQ VIEW?

                   QEL ̲PRINT = MAX ̲QEL ̲PRINT

        END LOOP

   END PROCEDURE PRINT ̲SUBPROCESS ̲QE


















               Figure 4.2.4.10.5.5-10




4.2.4.10.6   D̲U̲M̲P̲ ̲Q̲E̲L̲



4.2.4.10.6.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         This module takes the attributes of a qel, specified
         in the calling parameter, and dumps these in a report.
         If the qel has connection to a view, the attributes
         of the view are dumped in the report.



4.2.4.10.6.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)  DUMP ̲QEL(QEL: QEL ̲REFERENCE,
                      ATT: QEL ̲ATTRIBUTES,
                     SUBP: SUBPROCESS ̲INDEX)

         b)  DUMP ̲QEL(R1, R2, R3, 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̲

         R1  pointer to ATT
         R2  QEL
         R3  SUBP
         R6  LINK

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R0 - R7     destr.



4.2.4.10.6.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         This module consists of the procedure 

         -   DUMP ̲QEL
         -   DUMP ̲VIEW
         -   DUMP ̲FIELD ̲INFORMATION
         -   DUMP ̲FIELD ̲INFO

         and calls the common SEH procedures



         -   SET ̲REPORT ̲HEADER
         -   CONVERT ̲INTEGER ̲TO ̲HEX

         and the CSF-functions

         -   GET ̲VIEW ̲ATTRIBUTES



4.2.4.10.6.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a1) T̲y̲p̲e̲ ̲a̲n̲d̲ ̲C̲o̲n̲s̲t̲a̲n̲t̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             QEL ̲REFERENCE,
             QEL ̲ATTRIBUTES,
             SUBPROCESS ̲INDEX       DBD
             Q ̲ATT ̲SIZE,
             MAX ̲QEL ̲PRINT,
             VIEW ̲LENGTH,           4-2-4-11
             VIEW ̲INFO ̲SIZE

         a2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             QEL,
             ATT,
             SUBP    I/F-data
             NUMBER,
             REP ̲ID,
             REPORT,
             HEXA,   4.2.4.11

         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             QEL
             ATT
             ATT.OBJECT
             SUBP
             NUMBER   (M)
             REP ̲ID
             REPORT   (M)
             HEXA     (M)



         c)  L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲

             CONST

                 VIEW ̲LENGTH = 77
                 "indicates the size of a view attribute

                 VIEW ̲INF ̲SIZE = 5
                 "indicates the size of the "description" of
                 a view

                 MAX ̲VIEW ̲R = 4
                 "indicates the number of reports used to dump
                 the information of view attributes.

                 FIELD ̲INFO ̲IN ̲R = 3
                 "indicates the size of an info field in the
                 view attributes.

                 Q ̲ATT ̲SIZE = 16
                 "indicates the length for qel attributes

             VAR

                 VIEW ̲ATT: VIEW ̲ATTRIBUTES
                 "keep the attributes of a VIEW

                 INFO ̲NO: INTEGER
                 "indicates the number in the info field of
                 an error report in which data shall be stored

             VAR

                 FIELD ̲INFO ̲NO: 1..2
                 "indicates the number of the field information
                 in the view attributes to be dumped 

                 NO ̲OF ̲VIEW ̲R: 1..4
                 "indicates how many report the view field up

                 NO ̲OF ̲FIELD ̲INFO: 1..3
                 "indicates the number of field information,
                 which are copied over in a report

                 I: INTEGER     "counts



4.2.4.10.6.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲

         a)  D̲U̲M̲P̲ ̲Q̲E̲L̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Increase NUMBER by one and call the common SEH-procedure
             SET ̲REPORT ̲HEADER. In a loop statement the attributes
             of the qel are copied over in a report. If the
             qel has connection to a view GET ̲VIEW ̲ATTRIBUTES
             and DUMP ̲VIEW are called.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲  Refer sec. 4.2.4.10.6.2

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.6.5-1

         b)  D̲U̲M̲P̲ ̲V̲I̲E̲W̲ ̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Increase NUMBER by one and call the procedure 
             SET ̲REPORT ̲HEADER. In a loop the first 5 words
             of the view attributes are copied over in the report.
             At last DUMP ̲FIELD ̲INFORMATION is called.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲ Standard

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.6.5-2

         c)  D̲U̲M̲P̲ ̲F̲I̲E̲L̲D̲ ̲I̲N̲F̲O̲R̲M̲A̲T̲I̲O̲N̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Dumps the information fields of a view in four
             reports.

             I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲t̲a̲n̲d̲a̲r̲d̲

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.6.5-3

         d)  D̲U̲M̲P̲ ̲F̲I̲E̲L̲D̲ ̲I̲N̲F̲O̲

             N̲a̲r̲r̲a̲t̲i̲v̲e̲

             Copies the information from a field of a view attribute
             over in a report.



             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)  DUMP ̲FIELD ̲INFO(FIELD ̲INFO ̲NO, INFO ̲NO: INTEGER)
                                (INFO ̲NO: INTEGER)

             b)  DUMP ̲FIELD ̲INFO(R0, R1, 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  FIELD ̲INFO ̲NO
             R1  INFO ̲NO

             R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

             R1  INFO ̲NO
             R0  R2-R             destr.

             F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.10.6.5-4



         PROCEDURE

         DUMP ̲QEL(QEL: QEL ̲REFERENCE, ATT: ATTRIBUTES, SUBP:
         SUB-
                                                   PROCESS ̲INDEX)

         BEGIN

                 NUMBER = NUMBER + 1

                 SET ̲REPORT ̲HEADER(NUMBER, QEL ̲R, REP ̲ID, SUBP)
                                            (REPORT(NUMBER))

                 EQUIVALENCE(ATT, Q ̲ATT: ARRAY(1..Q ̲ATT ̲SIZE)
                 OF 
                                                        INTEGER)

                 I = 0

                 LOOP

                     I GE Q ̲ATT ̲SIZE?        EXIT

                     I = I + 1

                     CONVERT ̲INTEGER ̲TO ̲HEX(Q ̲ATT(I)(HEXA)

                     REPORT(NUMBER).INFO(I) = HEXA

                 END LOOP

                 ATT.OBJECT EQ VIEW?

                     GET ̲VIEW ̲ATTRIBUTES(QEL)(VIEW ̲ATT)

                     DUMP ̲VIEW

                     QEL ̲PRINT = MAX ̲QEL ̲PRINT

         END PROCEDURE DUMP ̲QEL









                  Figure 4.2.4.10.6.5-1



         PROCEDURE

         DUMP ̲VIEW

         BEGIN

             NUMBER = NUMBER + 1

             SET ̲REPORT ̲HEADER(NUMBER, VIEW ̲R, REP ̲ID, SUBP)
                                            (REPORT(NUMBER))

             EQUIVALENCE(VIEW ̲ATT, VIEW ̲A: ARRAY(1..VIEW ̲LENGTH)
                                                     OF INTEGER)

             INFO ̲NO = 0

             LOOP

                 INFO ̲NO EQ VIEW ̲INF ̲SIZE?        EXIT

                 INFO ̲NO = INFO ̲NO + 1

                 CONVERT ̲INTEGER ̲TO ̲HEX(VIEW ̲A(INFO ̲NO)(HEXA)

                 REPORT(NUMBER).INFO(INFO ̲NO))(HEXA

             END LOOP

             DUMP ̲FIELD ̲INFORMATION

         END PROCEDURE DUMP ̲VIEW
















                  Figure 4.2.4.10.6.5-2




         PROCEDURE
         DUMP ̲FIELD ̲INFORMATION
         BEGIN
             FIELD ̲INFO ̲NO = 1
             DUMP ̲FIELD ̲INFO(FIELD.INFO ̲NO, INFO ̲NO)(INFO ̲NO)
             FIELD ̲INFO ̲NO = 2
             DUMP ̲FIELD ̲INFO(FIELD ̲INFO ̲NO, INFO ̲NO)(INFO ̲NO)
             NO ̲OF ̲VIEW ̲R = 1
             LOOP DUMP ̲VIEW ̲ATT
                 NO ̲OF ̲VIEW ̲R EQ MAX ̲VIEW ̲R?        EXIT
                 NO ̲OF ̲VIEW ̲R = NO ̲OF ̲VIEW ̲R + 1
                 NUMBER = NUMBER + 1
                 SET ̲REPORT ̲HEADER(NUMBER, VIEW ̲R, REP ̲ID, SUBP)
                                                (REPORT(NUMBER))
                 NO ̲OF ̲FIELD ̲INFO = 0
                 INFO ̲NO = 0
                 LOOP DUMP ̲FIELD ̲INFO
                     NO ̲OF ̲FIELD ̲INFO EQ FIELD ̲INFO ̲IN ̲R?    EXIT
                     NO ̲OF ̲FIELD ̲INFO = NO ̲OF ̲FIELD ̲INFO + 1
                     FIELD ̲INFO ̲NO = FIELD ̲INFO ̲NO + 1
                     DUMP ̲FIELD ̲INFO(FIELD ̲INFO ̲NO, 
                                  INFO ̲NO)(INFO ̲NO)
                 END LOOP DUMP ̲FIELD ̲INFO

             END LOOP DUMP ̲VIEW ̲ATT

             NUMBER = NUMBER + 1
             SET ̲REPORT ̲HEADER(NUMBER, VIEW ̲R, 
                 REP ̲ID, SUBP)(REPORT(NUMBER))
             DUMP ̲FIELD ̲INFO(12,0)(INFO ̲NO)
         END PROCEDURE DUMP ̲FIELD ̲INFORMATION

                                     Figure 4.2.4.10.6.5-3


         PROCEDURE

         DUMP ̲FIELD ̲INFO(FIELD ̲INFO ̲NO, INFO ̲NO, INTEGER)(INFO
         ̲NO)

         BEGIN

                 EQUIVALENCE(VIEW ̲ATT, VIEW ̲A; ARRAY(1..VIEW
                 ̲LENGTH)
                                                          OF
                                            INTEGER

                 INFO ̲NO = INFO ̲NO + 1

                 CONVERT ̲INTEGER ̲TO ̲HEX(FIELD ̲INFO ̲NO)(HEXA)

                 REPORT(NUMBER).INFO(INFO ̲NO) = HEXA

                 I = 0

                 LOOP

                     I GE FIELD ̲INFO ̲SIZE       EXIT

                     I = I + 1

                     VIEW ̲INFO ̲NO = VIEW ̲INFO ̲NO + 1

                     INFO ̲NO = INFO ̲NO + 1

                     CONVERT ̲INTEGER ̲TO ̲HEX(VIEW ̲A(VIEW ̲INFO
                     ̲NO)
                                                         (HEXA)

                     REPORT(NUMBER).INFO(INFO ̲NO) = HEXA

                 END LOOP

         END PROCEDURE DUMP ̲FIELD ̲INFO













                 Figure 4.2.4.10.6.4.5-4



         PROCEDURE

         DUMP ̲FIELD ̲INFO(FIELD ̲INFO ̲NO, INFO ̲NO, INTEGER)(INFO
         ̲NO)

         BEGIN

               LOOP

                 EQUIVALENCE (VIEW ̲ATT, VIEW ̲A, ARRAY(1..VIEW
                 ̲LENGTH)
                                                          OF
                                            INTEGER)

                 INFO ̲NO = INFO ̲NO + 1

                 CONVERT ̲INTEGER ̲TO ̲HEX(FIELD ̲INFO ̲NO)(HEXA)

                 REPORT(NUMBER).INFO(INFO ̲NO) = HEXA

             END LOOP

         END PROCEDURE DUMP ̲FIELD ̲INFO





























                 Figure 4.2.4.10.6.4.5-4



4.2.4.11 C̲o̲m̲m̲o̲n̲ ̲S̲E̲H̲ ̲D̲a̲t̲a̲

         E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

         PSE,

         CESE                see DBD

         PROCESS ̲TABLE       see 4.1.4

         SUBP ̲PROCESS ̲TABLE  see 4.1.4

         T̲y̲p̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

         ROP ̲REPORT ̲TYPE   see 4.1.4

         ERROR ̲PROCESS ̲TYPE  see 4.1.4

         SEH ̲INT ̲CMD ̲SUBTYPE = (AWAIT ̲PSEL,
                                AWAIT ̲CESEL,
                                RESET ̲PRC ̲TABL)

         SEH ̲LOC ̲TYPE = (SEH ̲MAIN SER ̲INPUT,
                         SEH ̲CLOSE ̲DOWN,
                         RESET ̲PROC ̲TABLE
                         FIND ̲TYPE ̲REPORT,
                         HANDLE ̲PROC ̲TAB,
                         SYS ̲CALL)



         V̲a̲r̲i̲b̲a̲l̲e̲

         VAR  AWAIT ̲SECE:SCM ̲FUNCTION     see DBD
              "used as system call function for awaiting on
         CESE.

         VAR  AWAIT ̲PES : SCM ̲FUNCTION    see DBD
              "used as system call function for awaiting on
         PSE

         VAR  CESE ̲OP : LONG ̲OP ̲TYPE      see 4.1.4
              "keep the awaiting operation on CESE,

         VAR  PSE ̲OP : LONG ̲OP ̲TYPE       see 4.1.4
              "keep the awaiting operation on PSE

         VAR  OP : LONG ̲OP ̲TYPE           see 4.1.4
              "keep a received operation



         VAR  TMON ̲REQUEST : REQUEST ̲TIME see DBD
              "used to send request to TMON for periodically
         
               timeouts

         VAR  CESE ̲REPORT : CESE ̲INFO     see DAMOS
              "used to keep information received  from CESE

         VAR  PSE ̲REPORT : CHILD ̲INFO     see DAMOS
              "used to keep information received from  PSE

         VAR  GAQEL : QEL ̲REFERENCE       see DBD
              "pointer to a QEL, which is received from GAQ

         VAR  GAQ ̲ATT : QEL ̲ATTRIBUTES    see DBD
              "keep the attributes of a received qel

         VAR  GAQSUB ̲NO : INTEGER
              "the relativ number of the subqueue within GAQ,
         
               from which a QEL is received

         VAR  GAQ ̲REPORT : QUEUE ̲GARBLE ̲OUTPUT see DBD
              "keeps the information from a received GAQ-report

         VAR  PRINT ̲REP : REPORT ̲TYPE, see 4.1.4
              "used to keep the information of an error-report,
         
               which shall be printed (dumped)

         VAR  CLOSE ̲DOWN ̲STARTED : BOOLEAN
              "indicates that a close-down command is received
         
               or not.

         VAR  CC : INTEGER
              "used as completion code

         VAR  I, J : INTEGER
              "help variable




         TYPE

         REPORT ̲TYPE = RECORD

                       R ̲TYPE: REPTYPE     "see sec. 4.1.4
                       CONTINUE: BOOLEAN
                       SECTOR ̲ID,
                       REP      ,
                       ID       ,
                       SUBP     : STRING      "see sec. 4.1.4
                       INFO     : ARRAY(1..REPORT ̲SIZE) 
                                              OF STRING
                                              see sec. 4.1.4

                 END RECORD

         VAR

             REPORT = ARRAY(1..NO ̲OF ̲REPORTS) OF REPORT ̲TYPE
             "used to hold the information of an error-report.

             NUMBER: 1..NO ̲OF ̲REPORTS
             "indicates the number of the report actual used.

             HEXA: STRING
             "keep information about an element, which shall
             be dumped in a report.

             TABLE ̲SPEC
             GARBLE ̲SPEC: FILE ̲ADDR           refer DAMOS
             "used when writing on the garble pool file.

             TABLE ̲BLE,
             GARBLE ̲BLE: BUFFER ̲LIST ̲ELEMENT  refer DAMOS
             "indicates startaddr of element, which shall be
             dumped on the garble pool file.

             CONST

                 GQE ̲LENGTH = 7
                 GIE ̲LENGTH = 5
                 GTE ̲LENGTH = 6
                 TABLE ̲SIZE = 4
                 GARBLE ̲SECTOR ̲SIZE = 112
                 MAX ̲QEL ̲PRINT = 4
                 NO ̲OF ̲REPORTS = 11

             VAR

                 QEL ̲PRINT: 0..MAX ̲QEL ̲PRINT
                 "used to indicate how many qels of a (3ub)
                 process, which have been dumped.



         D̲a̲t̲a̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲ ̲o̲f̲ ̲S̲W̲-̲E̲r̲r̲o̲r̲-̲R̲e̲p̲o̲r̲t̲

         A SW-error report is build of a number of part report,
         where each part report is of the type REPORT ̲TYPE.
         The first part report will always be a RSE-report.
         If the PSE-report has connection with a GAQ-report
         the next part report will be the GAQ-report.

         At last a number of qel/view comes. It notices that
         a VIEW-report fields four part reports.

         When written on the WDP ̲ROP every part report will
         have a "header" as described below. Every field is
         of four chars. The header of a report is :

         SECTOR ̲ID   REP ̲TYPE   REP ̲ID   SUBP

         SECTOR ̲ID indicates on which garble sector the part
         report is dumped.

         REP ̲TYPE indicates the type of a part report.

         REP ̲ID is an unambiguous identification of an error
         report.

         SUBP is identification of the erroneous subprocess.
         For PSE report this field is undefined.

         After the header comes the information of the part
         report written in hex, as SEH receives it from the
         system.

         D̲a̲t̲a̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲ ̲o̲f̲ ̲t̲h̲e̲ ̲G̲A̲R̲B̲L̲E̲ ̲P̲O̲O̲L̲-̲f̲i̲l̲e̲

         The GARBLE ̲POOL file will for SEH point of view be
         considered as a number of garble-sections each of a
         length on 112 bytes. In the start of the file lies
         a table, which describes the sections.

         Each part of an error report will lie in an sector
         stating in the beginning of the sector. The data will
         be copy to the file in ASCII and if a data is an integer
         it will be written in hex.









         For each garble sector the table contains a field indicating
         the type of the report stored in the garble-sector
         and a field indicating about the report continues or
         not.

         A garble sector contains a part of an error report
         written in ASCII.





4.2.4.12 C̲o̲m̲m̲o̲n̲ ̲S̲E̲H̲ ̲p̲r̲o̲c̲e̲d̲u̲r̲e̲



4.2.4.12.1   I̲N̲I̲T̲ ̲S̲E̲H̲ ̲S̲Y̲S̲ ̲C̲A̲L̲L̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         This initiates an coroutine operation and associates
         this to SEH ̲OS.

         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)  INIT ̲SEH ̲SYS ̲CALL(SEH ̲SYS ̲CALL:SEH ̲SYS ̲CALL ̲TYPE)
             SEH ̲SYS ̲CALL ̲TYPE = (AWAIT ̲PSEL,
                                      RECEIVE ̲FIRST ̲QEL ̲FROM
                     ̲GAQ)

         b)  INIT ̲SEH ̲SYS ̲CALL (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̲

         R 0  SEH ̲SYS ̲CALL
         R 6  link

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         F̲l̲o̲w̲g̲r̲a̲m̲   See Fig. 4.2.4.12.1-1



   PROCEDURE  INIT ̲SEH ̲SYS ̲CALL(SEH ̲SYS ̲CALL:SEH ̲SYS ̲CALL
   ̲TYPE)

   BEGIN

       CASE  SEH ̲SYS ̲CALL

           AWAIT ̲PSEL ?

               CASE  INIT ̲AWAIT ̲PSE (PSE ̲OP)

                   ERROR ?     ANALYZE ̲ERROR(CC, 0)

                   OK ?        ASSOCIATE(SEH ̲OS,PSE ̲OP)

               END CASE  INIT ̲AWAIT ̲PSE

           AWAIT ̲CESEL?

               CASE  INIT ̲AWAIT ̲CESEL(CESE ̲OP)

                   ERROR ?     ANALYZE ̲ERROR(CC,0)

                   OK ?        ASSOCIATE (SEH ̲OS,CESE
                   ̲OP)

               END CASE

           OTHERWISE ?     ERROR ̲SEH(SYC ̲CALL,SEH ̲SYS
           ̲CALL)

       END CASE TRUE SEH ̲SYS ̲CALL

   END PROCEDURE  INIT ̲SEH ̲SYS ̲CALL
















                Figure 4.2.4.12.1-1



4.2.4.12.2   E̲R̲R̲O̲R̲ ̲S̲E̲H̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         Makes an error-report and dumps it in the memory of
         the
                     KERNEL.

         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)  ERROR ̲SEH(LOC:TYPE,ERR:COPSY ̲INFO ̲TYPE)

         b)  ERROR ̲SEH (R0, R1, 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 0  LOC
         R 1  ERR
         R 6  link

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

         N/A

         D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         a 1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             SEH ̲LOC ̲TYPE    see 4.2.4.11
             COPSY ̲INFO ̲TYPE see 4.1.4

         a 2) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             LOC,
             ERR     I/F data
             PRINT ̲REP,
             OP,
             GAQ ̲ATT
             PSE ̲REPORT  see 4.2.4.11


         b)  E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲

             PRINT ̲REP.REPORT (16)  (m)
                 .
                 .
             PRINT ̲REP.REPORT (6)   (m)
             PRINT ̲REP.REPORT (I)   (m) 
             PRINT ̲REP.SIZE         (m)
             OP.CMD-TYPE
             OP.CMD
             GAQ ̲ATT.HEADER.MAINTYPE
             GAQ ̲ATT.HEADER.SUBTYPE
             PSE ̲REPORT equivalent with REPORT:ARRAY(5..22)
                                                 OF INTEGER

         F̲l̲o̲w̲g̲r̲a̲m̲     see fig. 4.2.4.12.2-1

         PSE ̲REPORT. PARANT ̲INDEX



   PROCEDURE

   ERROR ̲SEH

   BEGIN

       PRINT ̲REP.REPORT (1) = ERR

       PRINT ̲REP.REPORT (2) = CONTINUE

       PRINT ̲REP.REPORT (3) = SEH ̲COR

       PRINT ̲REP.REPORT (4) = LOC

       CASE ̲LOC OF

           SEH ̲MAIN, SER ̲INPUT, SEH ̲CLOSE ̲DOWN?

               PRINT ̲REP.REPORT (5) = OP.CMD ̲TYPE

               PRINT ̲REPORT (6) = OP.CMD

               PRINT ̲REP. SIZE = 6

           RESET ̲PROC ̲TABLE?

               PRINT ̲REP. REPORT (5) = GAQ ̲ATT.HEADER.MAINTYPE

               PRINT ̲REP. REPORT (6) = GAQ ̲ATT.HEADER.SUBTYPE

               PRINT ̲REP. SIZE = 6

           FIND ̲TYPE ̲REPORT?

               EQUIVALENCE(PSE ̲REPORT, REPORT: ARRAY(5..22)
                                               OF INTEGER
               I = 4

               LOOP

                   I = I + 1

                   PRINT ̲REP.REPORT (I) .REPORT (I)

                   I EQ 22?    EXIT

               END LOOP

             Figure 4.2.4.12.2-1 (1/2)


           HANDLE ̲PROC ̲TAB?

               PRINT ̲REP.SIZE = 5 

           SYS ̲CALL?

               PRINT ̲REP.REPORT (1) = COPSY ̲INT.ERROR

               PRINT ̲REP.REPORT (5) = ERR

               PRINT ̲REP.SIZE = 5

               PU ̲DOWN (COPSY ̲, PRINT ̲REP)

   END CASE LOC

   REPORT ̲ERROR (ERR, PRINT ̲REP)


   END PROCEDURE ERROR ̲SEH
























              Fig. 4.2.4.12.2-1 (2/2)


4.2.4.12.3   S̲A̲V̲E̲ ̲G̲A̲R̲B̲L̲E̲

         N̲a̲r̲r̲a̲t̲i̲v̲e̲

         This procedure dumped an error-report on the file GARBLE
         ̲POOL. This is done in a loop, in which a garble report
         part is dumped and the garble table is updated.

         I̲n̲t̲e̲r̲f̲a̲c̲e̲

         a)  SAVE ̲GARBLE
         b)  SAVE ̲GARBLE(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 6  LINK

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R0 - R7  destr.

         F̲l̲o̲w̲g̲r̲a̲m̲    refer figure 4.2.4.12.3-1




         PROCEDURE

         SAVE ̲GARBLE

         BEGIN

              PRINT ̲NUMBER = 0

              LOOP

                 PRINT ̲NUMBER EQ NUMBER?         EXIT

                 PRINT ̲NUMBER = PRINT ̲NUMBER + 1

                 GARBLE ̲SPEC.FIRST ̲BYTE =
                     GARBLE ̲SPEC.FIRST ̲BYTE + GARBLE ̲SECTOR
                     ̲SIZE

                 GARBLE ̲BLE.ADDR = ADDRESS(REPORT(NUMBER).SECTOR
                 ̲ID)

                 CASE MODIFY ̲BYTES(GARBLE, GARBLE: SPEC, GARBLE
                 ̲BLE)
                                                    (GARBLE
                     ̲SPEC, CC)

                      ERROR? ANALYZE ̲ERROR(CC,0)

                      OK?

                 END CASE MODIFY ̲BYTES

                 TABLE ̲SPEC.FIRST ̲BYTE =
                     TABLE ̲SPEC.FIRST ̲BYTE + TABLE ̲SIZE

                 TABLE ̲BLE.ADDR = ADDRESS(REPORT ̲NUMBER)

                 CASE MODIFY ̲BYTES(GARBLE, TABLE ̲SPEC, TABLE
                 ̲BLE)
                                                 (TABLE ̲SPEC,
                     CC)

                      ERROR? ANALYZE ̲ERROR(CC,0)

                      OK?

                 END CASE MODIFY ̲BYTES

             END LOOP

         END PROCEDURE



                   Figure 4.2.4.12.3-1



4.2.4.12.4 S̲E̲T̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲E̲A̲D̲E̲R̲

         F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         This procedure receives an empty report from ERROR
         ̲REPORT ̲OS
         and sets the header in this on basic of calling parameter.

         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)  SET ̲REPORT ̲HEADER(NUMBER: INTEGER, REP ̲T: REP ̲TYPE,
                               REP ̲ID: INTEGER, SUBP: SUB-
                               PROCESS ̲INDEX, SIZE: INTEGER)(REPORT
                               (NUMBER): REPORT ̲TYPE)

         b)  SET ̲REPORT ̲HEADER(R0, R1, R2, R3, R4, 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̲

         R0  NUMBER
         R1  REP ̲T
         R2  REP ̲ID
         R3  SUBP
         R4  SIZE
         R6  LINK

         R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

         R5  pointer to REPORT(NUMBER)
         R0 - R4, R6 - R7      destr.

         F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.12.4-1




   PROCEDURE

   SET ̲REPORT ̲HEADER(NUMBER: INTEGER, REP ̲T: REP ̲TYPE,
   REP ̲ID: INTEGER,
      SUBP: SUBPROCESS ̲INDEX, SIZE: INTEGER)(REPORT(NUMBER):
   REPORT ̲TYPE)

   BEGIN

         WAIT ̲OPSEM(ERROR ̲REPORT ̲OS)(REPORT(NUMBER))

         SEC ̲NO EQ NO ̲OF ̲GARBLE ̲SEC?    SEC ̲NO = 1

         SEC ̲NO = SEC ̲NO + 1
   
         CONVERT ̲INTEGER ̲TO ̲HEX(SEC ̲NO)(HEXA)

         REPORT(NUMBER).SECTOR ̲ID = HEXA

         CONVERT ̲INTEGER ̲TO ̲HEX(REP ̲ID)(HEXA)

         REPORT(NUMBER).ID = HEXA

         CASE    REP ̲T OF

                 PSE?            REPORT(NUMBER).REP =
                                 "PSE  "
                 PGE?            REPORT(NUMBER).REP =
                                 "PGE  "
                 GQE?            REPORT(NUMBER).REP =
                                 "GQE  "                                      GTE? REPORT(NUMBER).REP
                                                                                   =
                                                                                   "GTE
                                                                                   
                                                                                   "
                 GIE?            REPORT(NUMBER).REP =
                                 "GIE  "
                 QEL ̲R?          REPORT(NUMBER).REP =
                                 "QEL  "
                 VIEW ̲R?         REPORT(NUMBER).REP =
                                 "VIEW "

         END CASE REP ̲T

         CONVERT ̲INTEGER ̲TO ̲HEX

         REPORT(NUMBER).SUBP = HEXA

         REPORT(NUMBER).R ̲TYPE = REP ̲T

         REPORT(NUMBER).SIZE = SIZE

         REPORT(NUMBER).CONTINUE = FALSE

         NUMBER GT 1?       REPORT(NUMBER-1).CONTINUE
         = TRUE

   END PROCEDURE SET ̲REPORT ̲HEADER


Figure 4.2.4.12.4-1…86…1         …02…   …02…   …02…   …02…           …02…                          
              
4.2.4.12.5   C̲O̲N̲V̲E̲R̲T̲ ̲I̲N̲T̲E̲G̲E̲R̲ ̲T̲O̲ ̲H̲E̲X̲

   F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

   Gets an integer as input parameter, and converts this
   to a hexdecimal number, which is the output.

   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)    CONVERT ̲INTEGER ̲TO ̲HEX(I: INTEGER)(HEXA:STRING)

   b)    CONVERT ̲INTEGER ̲TO ̲HEX(R0, R1, 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̲

   R0    I
   R1    pointer to HEXA         (kept)
   R6    LINK

   R̲e̲t̲u̲r̲n̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

   R0, R2 - R7       destr.

   F̲l̲o̲w̲g̲r̲a̲m̲  See figure 4.2.4.12.5-1




         PROCEDURE

         CONVERT ̲INTEGER ̲TO ̲HEX(I: INTEGER)(HEXA:STRING)

         BEGIN

                 STRING ̲NO = 0

                 LOOP

                     STRING ̲NO EQ 4?       EXIT

                     STRING ̲NO = STRING ̲NO + 1

                     CHAR = I MOD 16 + # 30

                     HEXA(STRING ̲NO) = LOW ̲BYTE ̲OF(CHAR)

                     I = rigth shift by 4 (I)

                 END LOOP

         END PROCEDURE CONVERT ̲INTEGER ̲TO ̲HEX






















                   Figure 4.2.4.12.5-2