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

⟦2cde7bd3d⟧ Wang Wps File

    Length: 32652 (0x7f8c)
    Types: Wang Wps File
    Notes: CPS/SDS/029               
    Names: »1828A «

Derivation

└─⟦bf0247e75⟧ Bits:30006089 8" Wang WCS floppy, CR 0141A
    └─ ⟦this⟧ »1828A « 

WangText



#…07…"…0b…"…0c…"…0d…"…01…"…05…!…09…!…0c…!…0d…!…0e…! 
            …08…
            …0b…
            …0e…
            …86…1
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            …02…
            
            
            
            
            
            
            
            
            
            
            …02…
            
            
            …02…
            
            
            
            
            
            
            
            

…02…CPS/SDS/029

…02…820514…02……02…
SYSTEM
 STATUS
 AND CONTROL
DETAILED
 DESIGN
 SPECIFICATION…02……02…CAMPS








4.2.9.4.4    H̲W̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲



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

         The module handles HW-reports from

         -   FMS concerning

             -   disks and volumes

         -   TMS concerning

             -   STI, TIA, LTUX, LTUX ̲LINE, LTU, LTU ̲LINE, and
                 MAP devices

         -   WDP concerning

             -   SB ̲PU, SB CU, non active TDX bus, BSM ̲X devices

         FMS and TMS sends error reports to a synchronization
         element (DEVICE ̲SE) specified during the assign/create
         sub-device commands. The EHD module services the DEVICE
         ̲SE and sends the reports to CFH ̲OS.

         The WDP monitors via the CCB various hardware conditions,
         which are reported to WAMCO via a TMS connection. WAMCO
         directs the reports to CFH ̲OS.

         For a detailed description of the error handling per
         device, refer to section 4.1.1.3 and the module component
         description.




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

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

         a)  HW-error-handling (LONG ̲OP:LONG ̲OP ̲TYPE)

         b)  HW-error-handling (R0, R6)

         R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

         C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

         R0       pointer LONG ̲OP
         R6 LINK

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

         R0 - R7  (destr)

         I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲ ̲f̲o̲r̲ ̲o̲t̲h̲e̲r̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         The flowgram call specification is specified during
         module design in the flowgrams.

         The SWELL case specification is derived as follows:

         -   R6  allways  LINK

         -   R0  first call parameter in the procedure parameter
                 list

         -   R1  second call parameter in the procedure parameter
                 list

         ..etc.

         -   R7  first return parameter in the procedure parameter
                 list

         -   R5  second return parameter in the procedure parameter
                 list

         ..etc.

         All registers are destroyed at return.


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

         The HW-error-handling module references/contains the
         procedures/modules specified in fig. 4.2.9.4.4.3-1.



                   Figure 4.2.9.4.4.3-1


         a)  H̲W̲-̲E̲R̲R̲O̲R̲-̲H̲A̲N̲D̲L̲I̲N̲G̲

             The procedure dispatches to the FMS, TMS and WDP
             report handling procedures.

         b)  F̲M̲S̲-̲E̲R̲R̲O̲R̲-̲H̲A̲N̲D̲L̲I̲N̲G̲

             For errors recovered by FMS (e.g. new sector allocation)
             a report is printed at the WDP-RDP.

             For non-recoverable errors a dispatch is executed
             depending on the disk type and an error report
             is printed.

         c)  M̲I̲R̲R̲O̲R̲E̲D̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲

             If both mirrored disks are erroneous a PU shut
             down is executed.

             If one of the mirrored disks is erroneous, then

             -   the disk is excluded from dualized operation

             -   the disk table is updated

             -   the configuration display is updated

         d)  F̲L̲O̲P̲P̲Y̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲

             The floppy disk is dismounted and/or deassigned
             depending on the error type and the floppy disk
             status.

             Also, the disk table and configuration display
             is updated.



         e)  O̲F̲F̲L̲I̲N̲E̲ ̲D̲I̲S̲K̲ ̲E̲R̲R̲O̲R̲

             As the supervisor handles mount/dismount of the
             offline disk no discount is performed by SSC.

             The disk is deassigned for a disk controller/driver
             error.

             The disk table and configuration display is updated.

         f)  T̲M̲S̲ ̲E̲R̲R̲O̲R̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             The erroneous device is isolated depending on the

             -   U ̲SDID (user specified device identification)
                 which is specified as a parameter in TMS assign/create-sub
                 device system calls.

             For PU errors

             -   STI

             -   TIA

             -   MAP

             A PU shut down is executed.

             For line errors the U ̲SDID.PROFILE specifies if
             the line is a

             -   VDU

             -   SAD

             -   EXC

             and the U ̲SDID.LOGICAL ̲ND specifies a corresponding

             -   logical terminal no

             -   logical device no

             -   logical channel no.


             Based on this information the port-no for the line
             is looked up in a profile.

             A dispatch is executed to device specific error
             handling procedure.

         g)  L̲T̲U̲X̲ ̲E̲R̲R̲O̲R̲

             The LTUX porttable information is looked up in
             the LTUX ̲TABLE, the status is set to error and
             the LTUX ̲HANDLE procedure is invoked.

             The LTUX ̲HANDLE actions corresponds to the actions
             taken by the operator (CMI command) command LTUX
             ̲CONTROL (refer ONLINE ̲OPERATION module), where
             new STATUS is set out-of-service or offline.

         h)  L̲T̲U̲X̲ ̲L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲

             Refer LTUX ERROR

         i)  L̲T̲U̲ ̲E̲R̲R̲O̲R̲

             Refer LTUX ̲ERROR.

         j)  L̲T̲U̲ ̲L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲

             Refer LTUX ̲ERROR.

         k)  W̲D̲P̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             The WDP sends two types of reports

             -   CCB reports

             -   series numbers for WDP ̲REPORTS.

             The series numbers are saved.



         l)  C̲C̲B̲ ̲R̲E̲P̲O̲R̲T̲ ̲H̲A̲N̲D̲L̲I̲N̲G̲

             A dispatch is executed depending on the report
             type.

             The WARNING and NORMAL ̲AGAIN reports relate to
             e.g.

             -   power supply voltage

             -   temperature

             monitoring. The reports are printed at the WDP
             ̲ROP.

         m)  S̲B̲ ̲P̲U̲ ̲H̲A̲N̲D̲L̲E̲

             The standby PU is reported

             -   down due to e.g. power low or missing keep
                 alive message

             -   back as standby subsequent to a standby start
                 up.

             The PU table is updated and the configuration display
             updated.

         n)  N̲O̲N̲ ̲A̲C̲ ̲T̲D̲X̲ ̲H̲A̲N̲D̲L̲E̲

             The non active TDX bus is reported

             -   down

             -   up

             due to TDX controller monitoring.

             The PU ̲TABLE and configuration display are updated.

         o)  B̲S̲M̲ ̲X̲ ̲E̲R̲R̲O̲R̲

             Refer LTUX ̲ERROR.


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

         Figure 4.2.9.4.4.4-1 defines the contents of the WDP
         reports.




                    Figure 4.2.9.4.4-1


     a1) T̲y̲p̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲ ̲(̲i̲n̲ ̲S̲S̲C̲.̲C̲O̲M̲M̲O̲N̲)̲

         COPSY ̲GARBLE ̲PARAMS,
         LONG ̲OP ̲TYPE,
         L ̲COMMAND ̲TYPE,
         TMS ̲REPORT,
         FMS ̲RECOVERED ̲REPORT,
         FMS ̲HARD ̲REPORT               : SSC.COMMON
         DISK ̲IN ̲SERVICE,
         DISK ̲MOUNTED,
         VOLUME ̲ERROR                  : DBD
         SET ̲STATUS,
         FLOP ̲DISK, MIR ̲1 ̲DISK, MIR ̲2 ̲DISK, OFFL ̲DISK  
           :SSC.COMMON
         FLOPPY ̲DISK, OFFLINE ̲DISK, MIRRORED ̲1         
           :DBD
         U ̲SDID                                        
           :DAMOS
         PORT ̲ID,
         LTUX ̲REC, LTUX ̲LINE ̲REC, BSM ̲X ̲REC,
         LTU ̲REC, LTU ̲LINE ̲REC, DISK ̲PARAM             
           :DBD
         WDP ̲REP ̲COMMAND,
         WDP ̲ROP ̲NUMBERS,
         WDP ̲INFO                                      
          :SSC.COMMON
         PU1, PU2, TIA1, TIA2                          
          :DBD
         MESS ̲TYPE, DEVICE ̲RECOVERED
         IN ̲ONE ̲MIRRORED ̲DISK, IN ̲BOTH ̲MIRRORED ̲DISK,
         IN ̲SINGLE ̲DISK,
         FMS ̲REPORT ̲TYPE, TMS ̲REPORT ̲TYPE,
         FMS ̲INF ̲TYPE, TMS ̲INF ̲TYPE,
         DEVICE ̲STATUS,
         IN ̲VOLUME, IN ̲DEVICE                          
          :DAMOS

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

         MIRR
         FLOP,
         OFFL,
         MAX ̲BSM ̲XS                                    
          :DBD

         TMS ̲ERROR ̲HANDLING ̲PROC,
         CCB ̲REPORT ̲HANDLING ̲PROC,
         U ̲SDID ̲PROFILE ̲ERROR,
         WDP ̲REP ̲ERROR                                 
          :CFH.VARIOUS

         ALL ̲MASK                                      
          :SSC.COMMON


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

          LONG ̲OP,
          KEY ̲BUF,
          SEND ̲BUF,

          ACTIVE ̲TDX ̲BUS ̲NO                           :CFH.COMMON
          CONFIG ̲TABLE,

          PU ̲NO:                                      :SSC.COMMON

      a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

          TERMINAL ̲TABLE,
          DEVICE ̲TABLE,
          CHANNEL ̲TABLE,
          PU ̲TABLE,                                    (m)
          BSM ̲X ̲TABLE,                                 (m)
          LTUX ̲TABLE,                                  (m)
          LTUX ̲LINE ̲TABLE,                             (m)
          LTU ̲TABLE,                                   (m)
          LTU ̲LINE ̲TABLE,                              (m)
          DISK ̲TABLE                                   (m):
                                                       DBD

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

          Status entries within referenced port tables. Terminal,
          Device, Channel tables are searched for the PORT
          ̲ID entry field.

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

          CONST STATUS ̲MASK=1
          Specify status field in DISK ̲PARAM type

          VAR STATUS:DISK ̲STATUS

          VAR DISK:MIRRORED ̲1 ..MIRRORED ̲2

          VAR DISK:MIRR ̲1 ̲DISK .. MIR ̲2 ̲DISK



             CONST READ ̲MASK ̲T, READ ̲MASK ̲0, READ ̲MASK ̲C, specify
             port ̲id in profile.

             VAR OLD ̲REC, NEW ̲REC: LTUX ̲REC, LTUX ̲LINE ̲REC,
                                     BSM ̲X ̲REC, LTU ̲REC, LTU
 ̲LINE ̲REC

                 defined in appropriate procedures
                 defines (OLD) current device specification
                 and (NEW) the updated device specification.

             VAR PCT ̲ENTRY: PU ̲REC



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



         PROCEDURE

         HW ̲ERROR ̲HANDLING (LONG ̲OP: LONG ̲OP ̲TYPE)

         BEGIN

             EQUIVALENCE (LONG ̲OP.CMD ̲TYPE, CMD ̲TYPE:
                                              L ̲COMMAND ̲TYPE)

             CASE LONG ̲OP.CMD ̲TYPE OF

                 DEVICE ̲ERROR? EQUIVALENCE(LONG ̲OP.CMD,
                                              CMD:REPORT ̲TYPE)

                                CASE CMD OF

                                   FMS ̲R?  FMS ̲ERROR ̲HANDLING

                                   TMS ̲R?  TMS ̲ERROR ̲HANDLING

                                END ̲CASE

                 WDP ̲CMD?  WDP ̲REPORT ̲HANDLING

             END ̲CASE

         END ̲HW ̲ERRORHANDLING




















                   Figure 4.2.9.4.4.5 ̲1


         PROCEDURE

         FMS ̲ERROR ̲HANDLING

         BEGIN

             EQUIVALENCE(LONG ̲OP.INF(1),
                                 FMS ̲REP:FMS ̲REPORT ̲TYPE)

             EQUIVALENCE(FMD ̲REP.INF, INF:FMS ̲INF ̲TYPE)

             INF.MESS ̲TYPE EQ DEVICE ̲RECOVERED?
                     REPORT ̲ERROR(FMS ̲RECOVERED ̲REPORT,FMS ̲REP)

             CASE INF.DEVICE ̲NAME OF

                 MIRR? MIRRORED ̲DISK ̲ERROR

                 FLOP? FLOPPY ̲DISK ̲ERROR

                 OFFL? OFFICE ̲DISK ̲ERROR

                 REPORT ̲ERROR(FMS ̲HARD ̲REPORT, FMS ̲REP)

             END ̲CASE

         END ̲FMS ̲ERROR ̲HANDLING




















                   Figure 4.2.9.4.4.5-2


         PROCEDURE

         MIRRORED ̲DISK ̲ERROR

         CONST STATUS ̲MASK =                 "select status
                                             field
         VAR   STATUS: DISK ̲STATUS
         VAR   DISK:  MIRRORED ̲1 .. MIRRORED ̲2
         VAR   DSK:    MIR ̲1 ̲DISK..MIR ̲2 ̲DISK

         BEGIN

             CASE  INF.DISK ̲NO OF

                 1? DISK=MIRRORED ̲1, DSK=MIR ̲1 ̲DISK
                 2? DISK=MIRRORED ̲2, DSK=MIR ̲2 ̲DISK

             END ̲CASE

             CASE INF.MESS ̲TYPE OF

                 IN ̲ONE ̲MIRRORED ̲DISK?
                     KEY ̲BUF.KEY=DISK
                     SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,
                               STATUS ̲MASK,SEND ̲BUF)(STATUS)

                     (STATUS NE DISK ̲IN ̲SERVICE) AND
                     (STATUS NE DISK ̲MOUNTED)

                     EXCLUDE ̲A ̲MIRRORED ̲DISK(DISK)(CC)

                     INF.DEVICE ̲STATUS   EQ IN ̲VOLUME?

                     STATUS=VOLUME ̲ERROR

                     STATUS=DISK ̲ERROR

                     UPDATE ̲ENTRY(DISK ̲TABLE, SEND ̲BUF, KEY
                     ̲BUF,
                                             STATUS ̲MASK, STATUS)

                     CONF ̲DISPLAY(SET ̲STATUS, DSK, STATUS)

                 IN ̲BOTH ̲MIRRORED ̲DISKS?

                     PU ̲DOWN(FMS ̲HARD ̲REPORT ̲E, FMS ̲REP)

             END ̲CASE

         END ̲MIRRORED ̲DISK ̲ERROR

                   Figure 4.2.9.4.4.5-3


         PROCEDURE

         FLOPPY ̲DISK ̲ERROR    

         CONST STATUS ̲MASK = 2             "select status field

         VAR FLOPPY ̲DATA: DISK ̲PARAM
         VAR STATUS: DISK ̲STATUS

         BEGIN

             STATUS=DISK ̲ERROR

             KEY ̲BUF.KEY=FLOPPY ̲DISK

             SEARCH ̲ENTRY(DISK ̲TABLE,KEY ̲BUF,ALL ̲MASK,
                                    SEND ̲BUF)(FLOPPY ̲DATA)

             FLOPPY ̲DATA. STATUS EQ DISK ̲MOUNTED?

                     INF.DEVICE ̲STATUS EQ IN ̲VOLUME?

                                DISMOUNT ̲DISK(OFFLINE ̲DISK,
                                    FLOPPY ̲DATA.VOLUME)(CC)

                                STATUS=VOLUME ̲ERROR

                     DISMOUNT ̲DISK(OFFLINE ̲DISK
                        FLOPPY ̲DATA.VOLUME) (CC)

                     DEASSIGN ̲DISK(OFFLINE ̲DISK)

                     STATUS=DISK ̲ERROR

             FLOPPY ̲DISK.STATUS EQ DISK ̲IN SERVICE?

                                       DEASSIGN ̲DISK(FLOPPY
                                ̲DISK)

                                       STATUS=DISK ̲ERROR

             UPDATE ̲ENTRY(DISK ̲TABLE,SEND ̲BUF,KEY ̲BUF,
                                             STATUS ̲MASK, STATUS)

             CONF ̲DISPLAY(SET ̲STATUS, FLOP ̲DISK, STATUS)

         END ̲FLOPPY ̲DISK ̲ERROR



                   Figure 4.2.9.4.4.5-4


         PROCEDURE

         OFFLINE ̲DISK ̲ERROR

         CONST  STATUS ̲MASK=2                "select status
                                             field

         VAR STATUS: DISK ̲STATUS

         BEGIN

             KEY ̲BUF.KEY=OFFLINE ̲DISK

             SEARCH ̲ENTRY(DISK ̲TABLE, KEY ̲BUF, STATUS ̲MASK,
                                             SEND ̲BUF)(STATUS)

             INF.DEVICE ̲STATUS EQ IN ̲VOLUME?

             UPDATE ̲ENTRY(DISK ̲TABLE, SEND ̲BUF, KEY ̲BUF,
                                STATUS ̲MASK, DISK ̲ERROR)

             CONF ̲DISPLAY(SET ̲STATUS, OFFL ̲DISK, DISK ̲ERROR)

         END




















                   Figure 4.2.9.4.4.5-5


   PROCEDURE

   TMS ̲ERROR ̲HANDLING

   VAR  PORT ̲ID: PORT ̲ID ̲TYPE
   VAR  G ̲INF: COPSY ̲GARBLE ̲PARAMS
   INIT G ̲INF.ERROR ̲TYPE = COPSY ̲LONG ̲ERROR
        G ̲INF.USER ̲ACTION= CONTINUE
        G ̲INF.ERROR ̲COR  = CFH ̲COR
        G ̲INF.ERROR ̲LOC  = TMS ̲ERROR ̲HANDLING ̲PROC

   BEGIN
       EQUIVALENCE(LONG ̲OP.INF(1),TMS ̲REP:TMS ̲REPORT ̲TYPE)
       EQUIVALENCE(TMS ̲REP.INF, INF:TMS ̲INF ̲TYPE)
       KEY ̲BUF.KEY=INF.U ̲SDID.LOGICAL ̲NO
       CASE  INF.U ̲SDID.PROFILE OF
           TERMINAL ̲P?  SEARCH ̲ENTRY(TERMINAL ̲TABLE, KEY
                        ̲BUF,
                        READ ̲MASK ̲T, SEND ̲BUF)(PORT ̲ID)
                        INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
                        INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
                        LTUX ̲LINE ̲ERROR (PORT ̲ID.NO)

           DEVICE ̲P?    SEARCH ̲ENTRY(DEVICE ̲TABLE,KEY
                        ̲BUF,
                        READ ̲MASK ̲D,SEND ̲BUF)(PORT ̲ID)
                        INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
                        INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
                        LTUX ̲LINE ̲ERROR(PORT ̲ID.NO)

           CHANNEL ̲P?   SEARCH ̲ENTRY(CHANNEL ̲TABLE,
                        KEY ̲BUF,READ ̲MASK ̲C,SEND ̲BUF)
                        (PORT ̲ID)
                        INF.U ̲SDID.PROFILE = PORT ̲ID.TABLE
                        INF.U ̲SDID.PORT ̲NO = PORT ̲ID.NO
                        PORT ̲ID.TABLE EQ LTU ̲LINE ̲TABLE?
                        LTUX ̲LINE ̲ERROR(PORT ̲ID.NO)
                        LTU ̲LINE ̲ERROR(PORT ̲ID.NO)

           LTUX ̲P?      LTUX ̲ERROR(INF.U ̲SDID.PORT ̲NO)
…02……02…   LTU ̲P?       LTU ̲ERROR(INF.U ̲SDID.PORT ̲NO)
           STI ̲P,
           TIA ̲P,
           MAP ̲P?       PU ̲DOWN(TMS ̲REPORTE,TMS ̲REP)
           OTHER?
                        G ̲INF.ERROR ̲INFO(1)=U ̲SDID ̲PROFILE
               ̲ERROR
                        COPSY ̲SEND ̲GARBLE(LONG ̲OP,G ̲INF)
       END ̲CASE
       REPORT ̲ERROR(TMS ̲REPORT, TMS ̲REP)

   END ̲TMS ̲ERROR ̲HANDLING

                Figure 4.2.9.4.4.5-6


   PROCEDURE

   LTUX ̲ERROR(LTUX ̲NO:1.. MAX ̲LTUXS)

   VAR OLD ̲REC, NEW ̲REC : LTUX ̲REC

   VAR CC : INTEBER

   BEGIN

       KEY ̲BUF.KEY=LTUX ̲NO

       SEARCH ̲ENTRY(LTUX ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
       ̲REC)

       NEW ̲REC=OLD ̲REC

       NEW ̲REC.STATUS=ERROR

       LTUX ̲HANDLE(OLD ̲REC, NEW ̲REC)(CC)

   END ̲LTUX ̲ERROR


























                Figure 4.2.9.4.4.5 ̲7


   PROCEDURE

   LTUX ̲LINE ̲ERROR (LINE ̲NO :1 .. MAX ̲LTUX ̲LINES)

   VAR NEW ̲REC, OLD ̲REC : LTUX ̲LINE ̲REC

   VAR CC.INTEGER

   BEGIN

       KEY ̲BUF.KEY=LINE ̲NO

       SEARCH ̲ENTRY (LTUX ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
       SEND ̲BUF)
                                                     
                                                (OLD ̲REC)

       NEW ̲REC=OLD ̲REC

       NEW ̲REC.STATUS=ERROR

       LTUX ̲LINE ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)

   END ̲LTUX ̲LINE ̲ERROR

























                Figure 4.2.9.4.4.5 ̲8


   PROCEDURE

   LTU ̲ERROR (LTU ̲NO : 1.. MAX ̲LTUS)

   VAR OLD ̲REC, NEW ̲REC : LTU ̲REC

   VAR CC : INTEGER

   BEGIN

       KEY ̲BUF.KEY=LTU ̲NO

       SEARCH ̲ENTRY(LTU ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND ̲BUF)(OLD
       ̲REC)

       NEW ̲REC=OLD ̲REC

       NEW ̲REC.STATUS=ERROR

       LTU ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)

   END ̲LTU ̲ERROR


























                Figure 4.2.9.4.4.5-9


   PROCEDURE

   LTU ̲LINE ̲ERROR (LINE ̲NO : 1.. MAX ̲LTU ̲LINES)

   VAR NEW ̲REC, OLD ̲REC : LTU ̲LINE ̲REC

   VAR CC.INTEGER

   BEGIN

       KEY ̲BUF.KEY=LINE ̲NO

       SEARCH ̲ENTRY (LTU ̲LINE ̲TABLE, KEY ̲BUF, ALL ̲MASK,
       SEND ̲BUF)
                                                     
                                               (OLD ̲REC)

       NEW ̲REC=OLD ̲REC

       NEW ̲REC.STATUS=ERROR

       LTU ̲LINE ̲HANDLE (OLD ̲REC, NEW ̲REC)(CC)

   END ̲LTU ̲LINE ̲ERROR

























               Figure 4.2.9.4.4.5 ̲10


   PROCEDURE

   WDP ̲REPORT ̲HANDLING

   VAR SAVE ̲WDP ̲ROP ̲REPORT ̲NUMBERS : WDP ̲ROP ̲NUMBERS

   BEGIN

       EQUIVALENCE (LONG ̲OP.CMD, CMD : WDP ̲REP ̲COMMAND)

       CASE CMD OF

           CCB ̲REPORT?   CCB ̲REPORT ̲HANDLING

           REPORT ̲NUMBER?

               EQUIVALENCE (LONG ̲OP.INF(1), ROP ̲NOS :
                                                    WDP
 ̲ROP ̲NUMBERS)

               SAVE ̲WDP ̲ROP ̲REPORT ̲NUMBERS = ROP ̲NOS

       END ̲CASE

   END ̲WDP ̲REPORT ̲HANDLING























               Figure 4.2.9.4.4.5 ̲11


   PROCEDURE CCB ̲REPORT ̲HANDLING

   VAR PCT ̲ENTRY:PU ̲REC

   VAR G ̲INF:COPSY ̲GARBLES ̲PARAMS

   INIT G ̲INF.ERROR ̲TYPE  = COPSY ̲LONG ̲ERROR
        G ̲INF.USER ̲ACTION = CONTINUE
        G ̲INF.ERROR ̲COR   = CFH ̲COR
        G ̲INF.ERROR ̲LOC   = CCB ̲REPORT ̲HANDLING ̲PROC

   VAR PCT ̲ENTRY:PU ̲REC

   BEGIN

       EQUIVALENCE (LONG ̲OP.INF(1), WDP ̲REP : WDP ̲INFO)

       CASE WDP ̲REP OF

           SB ̲PU ̲DOWN?   SB ̲PU ̲HANDLE (ERROR)

           SB ̲PU ̲UP?     SB ̲PU ̲HANDLE (STANDBY)

           SB ̲CU ̲DOWN?

           SB ̲CU ̲UP?

           NON ̲AC ̲TDX ̲DOWN?  NON ̲AC ̲TDX ̲HANDLE (ERROR)

           NON ̲AC ̲TDX ̲UP?    NON ̲AC ̲TDX ̲HANDLE (IN ̲SERVICE)

           BSM ̲X ̲DOWN?       EQUIVALENCE (LONG ̲OP.INF(2),
                                     BSM ̲X ̲NO : 1.. MAX
                                ̲BSM ̲XS)
                             BSM ̲X ̲ERROR (BSM ̲X ̲NO)

           WARNING,
           NORMAL ̲AGAIN?

           OTHER?  G ̲INF.ERROR ̲INFO = WDP ̲REP ̲ERROR
                   COPSY ̲SEND ̲GARBLE (LONG ̲OP, G ̲INF)

       END CASE

       EQUIVALENCE(LONG ̲OP.INF(1),REPORT ̲INF:ARRAY(1..28)OF
       BYTES)

       REPORT ̲ERROR(WDP ̲MON ̲REPORT, REPORT ̲INF)

   END ̲CCB ̲REPORT ̲HANDLING


               Figure 4.2.9.4.4.5-12


   PROCEDURE

   SB ̲PU ̲HANDLE (STATUS: HW ̲STATUS)

   BEGIN

       KEY ̲BUF.KEY=1

       UPDATE ̲ENTRY(PU ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL ̲MASK,
       PCT ̲ENTRY)

       CASE PU ̲NO OF

           1?  PCT ̲ENTRY.PU ̲2 ̲STATUS=STATUS
               CONF ̲DISPLAY(SET ̲STATUS, PU2, STATUS)

           2?  PCT ̲ENTRY.PU ̲1 ̲STATUS=STATUS
               CONF ̲DISPLAY(SET ̲STATUS, PU1, STATUS)

       END ̲CASE

       CONFIG ̲TABLE.PU ̲N(3-PU ̲NO) = STATUS

   END ̲SB ̲PU ̲HANDLE


























               Figure 4.2.9.4.4.5 ̲13


   PROCEDURE

   NON ̲AC ̲TDX ̲HANDLE (STATUS : HW ̲STATUS)

   BEGIN

       KEY ̲BUF.KEY=1

       UPDATE ̲ENTRY (PU ̲TABLE,SEND ̲BUF,KEY ̲BUF,ALL ̲MASK,
       PCT ̲ENTRY)

       CASE  ACTIVE ̲TDX ̲BUS ̲NO OF

           1?  PCT ̲ENTRY.TDX ̲2 ̲STATUS=STATUS
               CONF ̲DISPLAY (SET ̲STATUS,TIA2, STATUS)

           2?  PCT ̲ENTRY.TDX ̲1 ̲STATUS=STATUS
               CONF ̲DISPLAY (SET ̲STATUS, TIA1, STATUS)

       END ̲CASE

       CONFIG ̲TABLE.TDX(3-PU ̲NO) = STATUS

   END ̲NON ̲AC ̲TDX ̲HANDLE


























               Figure 4.2.9.4.4.5 ̲14


   PROCEDURE

   BSM ̲X ̲ERROR (BSM ̲X ̲NO : 1.. MAX ̲BSM ̲XS)

   VAR NEW ̲REC, OLD ̲REC : BSMX ̲REC

   VAR CC : INTEGER

   BEGIN

       KEY ̲BUF.KEY=BSM ̲X ̲NO

       SEARCH ̲ENTRY (BSM ̲X ̲TABLE,KEY ̲BUF,ALL ̲MASK,SEND
       ̲BUF)(OLD ̲REC)

       NEW ̲REC=OLD ̲REC

       NEW ̲REC.STATUS=ERROR

       BSM ̲X ̲HANDLE (NEW ̲REC)(CC)

       BSM ̲X ̲LTUX ̲CONTROL (OLD ̲REC, NEW ̲REC) (CC)

   END
























               Figure 4.2.9.4.4.5-15


4.2.9.4.5  O̲r̲d̲e̲r̲e̲d̲ ̲C̲l̲o̲s̲e̲ ̲D̲o̲w̲n̲



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

           The ordered close-down command makes it possible
           to close a CAMPS system at a time, where no

           -   terminal activities

           -   channel activities

           -   device activities

           take place.

           The queues are not empty, but the processing
           is stopped after a complete of a transaction.

           The operator specifies a time-period, within
           which the above activities has to be terminated.

           For VDUs the users are notified in the system
           line about the time when the system is closed.
           It is then the responsibility of the users
           to complete processing within the specified
           time of day.
           The CFH role is to notify TEMCO.

           For devices and channels the sub-processes
           handling the devices/channels are notified
           via a command in an input command queue. The
           close ̲command will make the sub-processes stop
           processing when a complete message is processed.


           When the time period elapses a "final" close
           ̲down command is sent to all

           -   VDU

           -   device

           -   channel

           sub-processes (via TEMCO, DEMCO, CEMCO). Hereby
           a cancel/suspend action is executed.

           Having closed the line handling process, the
           non ̲line processes are stopped one by one in
           the following sequence:

           -   OLD

           -   AAS

           -   ACS

           -   UMAM

           -   SPIP

           -   MDP

           -   LOG

           -   STP

           -   SAR

           Hereafter the CMD, REPORT ̲ERROR and SEH coroutines
           are notified. They will empty input queues/semaphores
           and send a reply upon completion (via the COUNT
           coroutine).

           The disks in ̲service are

           -   dismounted and

           -   deassigned

           and a reply is sent to the CMI, which will
           notify the operator. Having done so, CMI will
           send a command to CFH, which will command the
           WDP to master ̲clear the PU and if ordered-switchover
           switchover to the standby PU.



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

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

         a)  ORDERED ̲CLOSE ̲DOWN (PHASE:PHASE ̲TYPE, TIME:MINUTES,
                              CLOSE ̲DOWN ̲METHODE:CLOSE ̲DOWN
                     ̲TYPE)

         b)  ORDERED ̲CLOSE ̲DOWN (R0, R1, R2, R6)

             R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲r̲t̲i̲o̲n̲

             C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲s̲

             R0 PHASE

             R1 TIME

             R2 CLOSE ̲DOWN ̲METHODE

             R6 LINK

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

             R0-R7 (destr.)



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

         The ORDERED ̲CLOSE ̲DOWN module references contains the
         procedures specified in Figure 4.2.9.4.5.3-1




                   Figure 4.2.9.4.5.3-1



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

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

             PHASE ̲TYPE
             ORDERED ̲SWITCHOVER
             CLOSE ̲DOWN ̲TYPE                        :CFH.VARIOUS

             CMI ̲CMD ̲L, CMD ̲SEH ̲CLOSED,
             FINAL ̲CLOSE ̲DOWN ̲EVENT,

             CLOSE ̲INITIAL, CLOSE ̲FINAL,
             COPSY ̲GARBLE ̲PARAMS
             SSC ̲COMMAND, CLOSE ̲DOWN

             REPORT ̲ERROR ̲COR,
             STOP ̲COR, SEH ̲COR, CLOSE ̲COR           :SSC.COMMON

             REQUEST ̲TIME,
             SEND ̲PARAMS, CAPABILITY ̲INDEX,

             SUBQUEUE ̲REFERENCE, MINUTE             :DBD.CSF

             PU1, PU2,
             MIR ̲1 ̲FIXED ,
             MIR ̲1 ̲MOVING,
             MIRRORED ̲1  ,
             OFFLINE ̲DISK,
             FLOPPY ̲DISK ,
             IN ̲SERVICE                             :DBD

             SET ̲STATUS,
             SWITCHOVER, RESET,
             ORDERED ̲CLOSE ̲E                       :SSC.COMMON

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

             NO ̲OF ̲VDUS, NO ̲OF ̲SADS, NO ̲OF ̲EXCS    :DBD

             CLOSE ̲DOWN ̲PROCESS ̲PROC,
             NO ̲OF ̲OUTSTANDING ̲ANSWERS,
             ANSWER ̲ERROR                          :CFH.VARIOUS



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

             SYQ, TIM ̲Q,
             OLD ̲Q, COPSY ̲COMMAND, OLD ̲RQ, SSC ̲ACK,
             ANQ, AAS, AAS ̲RQ, THP ̲ACK
             COQ, ACS ̲RQ,
             UMAM ̲CMDQ, UMAM ̲RQ, TEP ̲ACK,
             SPIP ̲CMDQ, SPIP ̲RQ,
             MDQ, MDP ̲RQ, MDP ̲ACK,
             SYSTEM ̲Q, IN ̲COMM ̲Q, LOG ̲RQ, LOG ̲ACK,
             STPRQ, SSC ̲Q, STP ̲RQ, STP ̲ACK,
             SCQ, SSC ̲Q, SAR ̲RQ, SAR ̲ACK
             PRC ̲RQ                              : DBD

             COUNT ̲ANSWER,
             KEY ̲BUF,
             SEND ̲BUF                            : SSC.COMMON

             LONG ̲OS, CFH ̲S,

             PU ̲NO                               : SSC.COMMON

         a4) T̲a̲b̲l̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲

             DISK ̲TABLE

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

             DISK ̲TABLE().STATUS
             DISK ̲TABLE().VOLUME

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

             VAR HOW ̲TO ̲CLOSE ̲DOWN:CLOSE ̲DOWN ̲TYPE
                 "used to keep the information about a switchover
                 shall be performed or not, when the system
                 is closed. It is set by INITIAL ̲CLOSE ̲DOWN
                 and read by CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSE.

             VAR PARAMS:SEND ̲PARAMS
                 "used for sending request to non-line processes,
                 indicating close ̲down. The parameters are set
                 in CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES and send in
                 CLOSE ̲DOWN ̲PROCESS.

             VAR REQUEST ̲QUEUE:QUEUE ̲REFERENCE
                 "used to indicate whereto a close ̲down ̲command
                 shall be sent. Is set in CLOSE ̲DOWN ̲PROCESS.


             VAR ANSWER ̲QUEUE:QUEUE ̲REFERENCE
                 "used to indicate whereto an ACK corresponding
                 to a close ̲down ̲command shall be sent. Is set
                 in CLOSE ̲DOWN ̲PROCESS.

             VAR TIMEOUT ̲REQUEST:REQUEST ̲TIME
                 "used to send a request to TMON for a timeout.
                 Is used by INITIAL ̲CLOSE ̲DOWN.

             VAR STATUS:DISK ̲STATUS
                 "local variable for CLOSE ̲THE ̲REST ̲OF ̲CAMPS.
                 Used to keep the status for a disk. Is a return
                 parameter for SEARCH ̲ENTRY.

             VAR PU ̲ID:PU1..PU2

             VAR G ̲INF:COPSY ̲GARBLE ̲PARAMS.



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

         a)  O̲R̲D̲E̲R̲E̲D̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲

             N̲a̲r̲r̲a̲t̲i̲e̲s̲

             Depending on the call parameter PHASE it calls
             a procedure for further action.

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

             Figure 4.2.9.4.5.5-1



         b)  I̲N̲I̲T̲I̲A̲L̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲

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

             Sets HOW ̲TO ̲CLOSE ̲DOWN to CLOSE ̲DOWN ̲METHODE.
             Notifies all TEMCO, DEMCO, CEMCO coroutines, that
             an initial close-down is to take place.

             A time out corresponding to time period specified
             by the operator is requested. The time out is received
             in the SYQ. CMD transforms the time out event type
             "final ̲close ̲down ̲event" into a long operation,
             where:
             CMD ̲TYPE = CMI ̲CMD ̲L 
             CMD = CLOSE ̲DOWN ̲FINAL

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

         c)  F̲I̲N̲A̲L̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲

             Receives a LONG ̲OP from LONG ̲OS in the variable
             COUNT ̲ANSWER and sets the parameter in this. Initializes
             CFH ̲S to minus the number of line coroutines. Sends
             a CLOSE ̲FINAL command to the line coroutines.

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

             Figure 4.2.9.4.5.5-3



         d)  C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲N̲O̲N̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲C̲E̲S̲S̲E̲S̲

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

             Sets the close-down parameters in a QEL, which
             is sent to the non-line-process for close-down.
             Sends stop-command to non-line-process. 
             Stops the CMA and SEH coroutines

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

             Figure 4.2.9.4.5.5-4

         e)  C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲P̲R̲O̲C̲E̲S̲S̲

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

             The queue-references whereto a close ̲down command
             shall be sent is set. The queue ̲reference where
             the answer is inspected is set. The close ̲down
             command is sent. The procedure wait time limit
             on the answerqueue for an ack. At last the answer
             is checked.

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

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

             a)  CLOSE ̲DOWN ̲PROCESS (MAIN ̲RQ:CAPABILITY ̲INDEX,
                 
                                     SUB ̲RQ:SUBQUEUE ̲INDEX
                                     SUB ̲AQ:SUBQUEUE ̲INDEX
                                     ANSWER:

             b)  CLOSE ̲DOWN ̲PROCESS (R0, R1, R2, R3, RG)

                 R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲i̲o̲n̲

                 C̲a̲l̲l̲ ̲R̲e̲g̲i̲s̲t̲e̲r̲

                 R0 MAIN ̲RQ
                 R1 SUB ̲RQ
                 R2 SUB ̲AQ
                 R3 ANSWER
                 R6 LINK



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

                 R0-R7 destr.

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

                 Figure 4.2.9.4.5.5-5

         f)  S̲E̲N̲D̲ ̲C̲L̲O̲S̲E̲ ̲D̲O̲W̲N̲ ̲C̲M̲D̲ ̲T̲O̲ ̲C̲M̲D̲ ̲S̲E̲H̲ ̲R̲E̲P̲O̲R̲T̲ ̲E̲R̲R̲O̲R̲

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

             Sets the NO ̲OF ̲OUTSTANDING ̲ANSWERS at COUNT to
             3.
             Receives a long operation, which is to be used
             by COUNT to send a reply when NO ̲OF ̲OUTSTANDING
             ̲ANSWERS
             is 0. Sends stop commands to CMD ̲REPORT ̲ERROR and
             SEH.

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

             Figure 4.2.9.4.5.5-6

         g)  C̲L̲O̲S̲E̲ ̲T̲H̲E̲ ̲R̲E̲S̲T̲ ̲O̲F̲ ̲C̲A̲M̲P̲S̲

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

             Dismounts and deassigns the mirrored disks. Finds
             the status of the floppy disk. If the status is
             IN ̲SERVICE or MOUNTED then the disk is dismounted
             and/or deassigned. The same is done to the offline
             disk. Updates the configuration display and send
             a reply to CMI.

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

             Figure 4.2.9.4.5.5-7

         h)  S̲E̲N̲D̲ ̲C̲M̲I̲ ̲R̲E̲P̲L̲Y̲ ̲W̲H̲E̲N̲ ̲S̲Y̲S̲T̲E̲M̲ ̲C̲L̲O̲S̲E̲D̲

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

             Decides, whether to close-down or switchover.
             Master cleares the PU.

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

             Figure 4.2.9.4.5.5-8


   
   PROCEDURE

   ORDERED ̲CLOSE ̲DOWN (PHASE: PHASE ̲TYPE, TIME:INTEGER,
                                       CLOSE ̲MODE:CLOSE
                                       ̲DOWN ̲TYPE)

   BEGIN

       CASE PHASE OF

             INITIAL?    INITIAL ̲CLOSE ̲DOWN
                         "the close ̲down active PU command
                     is
                         received

             FINAL?      FINAL ̲CLOSE ̲DOWN
                         "the time ̲out period specified
                     by the
                         operator has elapsed

             LINE ̲PROCESSES ̲CLOSED?  CLOSE ̲DOWN ̲NON ̲LINE
             ̲PROCESSES
                         "TEMCO, DEMCO, CEMCO has closed
                     line 
                         subprocesses

             COPSY ̲ENVIRONMENT ̲CLEANED ̲UP?  
                         CLOSE ̲DOWN ̲THE ̲REST ̲OF ̲CAMPS
                         "CMD and SEH are stopped and
                     all
                         childprocesses are cleaned up

             TERMINATED? CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED
                         "CMI has notified the operator

       END ̲CASE

   END ̲ORDERED ̲CLOSE ̲DOWN















                Figure 4.2.9.4.5.5 ̲1


   PROCEDURE

   INITIAL ̲CLOSE ̲DOWN

   VAR HOW ̲TO ̲CLOSE: CLOSE ̲DOWN ̲TYPE ("common module variable)

   VAR TIME ̲OUT ̲REQUEST: REQUEST ̲TIME

   BEGIN

       HOW ̲TO ̲CLOSE ̲DOWN = CLOSE ̲MODE

       COMMON ̲NDTIFY ̲LINE ̲COROUTINES (CLOSE ̲INITIAL, TIME)

       TIMEOUT ̲REQUEST ̲QUEUE.MAINQUEUE = SYQ

       TIMEOUT ̲REQUEST.QUEUE.SUBQUEUE = TIM ̲Q

       TIMEOUT ̲REQUEST.FORMAT = MINUTE

       TIMEOUT ̲REQUEST.PERIOD = TIME

       TIMEOUT ̲REQUEST.EVENT ̲ID = FINAL ̲CLOSE ̲DOWN ̲EVENT

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

             ERROR?    ANALYZE ̲ERROR (CC,0)

       END CASE REQUEST ̲TIME ̲OUT

   END PROCEDURE INITIAL ̲CLOSE ̲DOWN
















                Figure 4.2.9.4.5.5-2


   PROCEDURE

   FINAL ̲CLOSE ̲DOWN

   BEGIN

       WAIT ̲OPSEM (LONG ̲OS)(COUNT ̲ANSWER)

       COUNT ̲ANSWER.CMD ̲TYPE = CMI ̲CMD ̲L

       COUNT ̲ANSWER.CMD = TEMCO ̲DEMCO ̲CEMCO ̲CLOSED

       NO ̲OF ̲OUTSTANDING ̲ANSWERS = NO ̲OF ̲VDUS + NO ̲OF
       ̲SADS + NO ̲OF ̲EXCS

       COMMON ̲NOTIFY ̲LINE ̲COROUTINES (CLOSE ̲FINAL, 0)

   END ̲FINAL ̲CLOSE ̲DOWN































                Figure 4.2.9.4.5.5-3


   PROCEDURE CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES

   VAR PARAMS: SEND ̲PARAMS

   BEGIN

       PARAMS.INFORMATION ̲TYPE = FALSE

       PARAMS.CHECKP ̲STATUS = FALSE

       PARAMS.PROFILE = 0

       PARAMS.HEADER.MAINTYPE = SSC ̲COMMAND

       PARAMS ̲HEADER.SUBTYPE = CLOSE ̲DOWN

       CLOSE ̲DOWN ̲PROCESS (OLD ̲Q,COPSY ̲COMMAND,OLD ̲RQ,
       SSC ̲ACK)"OLD

       CLOSE ̲DOWN ̲PROCESS (ANQ, 1, AAS ̲RQ, THP ̲ACK)  
                "AAS

       CLOSE ̲DOWN ̲PROCESS (COQ, 1, ACS ̲RQ, THP ̲ACK)  
                "ACS

       CLOSE ̲DOWN ̲PROCESS (UMAM ̲CMDQ, 0, UMAM ̲RQ, TEP
       ̲ACK)    "UMAM

       CLOSE ̲DOWN ̲PROCESS (SPIP ̲CMDQ, 0, SPIP ̲RQ, TEP
       ̲ACK)    "SPIP

       CLOSE ̲DOWN ̲PROCESS (MDQ, 1, MDP ̲RQ, MDP ̲ACK)  
                "MDP

       CLOSE ̲DOWN ̲PROCESS (SYSTEM ̲Q, IN ̲COMM ̲Q, LOG ̲ACK)
             "LOG

       CLOSE ̲DOWN ̲PROCESS (STP.RQ, SSC ̲Q, STP ̲RQ, STP
       ̲ACK)     "STP

       CLOSE ̲DOWN ̲PROCESS (SCQ, SSC ̲Q, SAR ̲RQ, SAR ̲ACK)
              "SAR

       CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH

   END ̲CLOSE ̲DOWN ̲NON ̲LINE ̲PROCESSES







                Figure 4.2.9.4.5.5-4


   PROCEDURE

   CLOSE ̲DOWN ̲PROCESS
             (MAIN ̲R Q: CAPABILITY ̲INDEX,SUB ̲RQ:SUBQUEUE
             ̲REFERENCE,
                       SUB ̲AQ: SUB ̲QUEUE ̲REFERENCE, ANSWER:INTEGER)

   VAR SUBQ : SUBQUEUE ̲INDEX
   VAR REQUEST ̲QUEUE = ANSWER ̲QUEUE: QUEUE ̲REFERENCE
   VAR G ̲INF : COPSY ̲GARBLE ̲PARAMS
   VAR ANSWERQEL: QEL ̲REFERENCES
   VAR ANSWERATT: QEL ̲ATTRIBUTES
   VAR SUBQ:      SUBQUEUE ̲INDEX
   VAR CC:        INTEGER

   INIT
       G ̲INF.USER ̲ACTION = CONTINUE
       G ̲INF.ERROR ̲COR   = CFH ̲COR
       G ̲INF.ERROR ̲COC   = CLOSE ̲DOWN ̲PROCESS ̲COR
   BEGIN
       REQUEST ̲QUEUE.MAINQUEUE = MAIN ̲RQ
       REQUEST ̲QUEUE, SUBQUEUE = SUB ̲RQ
       ANSWER ̲QUEUE.MAINQUEUE  = PRC ̲RQ
       ANSWER ̲QUEUE.SUBQUEUE   = SUB ̲AQ

       CASE SEND ̲REQUEST (PARAMS, NIL, REQUEST ̲QUEUE,
       ANSWER ̲QUEUE)
                         (PARAMS, CC)
             ERROR?  ANALYZE ̲ERROR (CC,0)
       END CASE SEND ̲REQUEST

       WAIT ̲TIME ̲LIMITED ̲ON ̲QUEUE (ANSWER ̲QUEUE, TIME
       ̲TO ̲CLOSE)
                               (ANSWERQEL, ANSWERATT,
                     SUBQ, CC)

       CASE CC OF
             NOK?    G ̲INF.ERROR ̲TYPE = COPSY ̲TIMEOUT
                     ̲ERROR
                     G ̲INF.ERROR ̲INFO.DEST ̲Q.MAINQUEUE
                     = MAIN ̲RQ
                     G ̲INF.ERROR ̲INFO.DESTR ̲Q.SUBQUEUE
                      = SUB ̲RQ
                     G ̲INF.ERROR ̲INFO.REP ̲Q.MAINQUEUE
                      = PRC ̲RQ
                     G ̲INF.ERROR ̲INFO.REP ̲Q.SUBQUEUE 
                       = SUB ̲AQ
                     COPSY ̲SEND ̲GARBLE (ANSWERQEL, G ̲INF)
             OK?
                 ANSWERATT.HEADER.MAINTYPE NE ACK LOGOR
                 ANSWERATT.HEADER.SUBTYPE NE ANSWER  
                 
                     G ̲INF.ERROR ̲TYPE = COPSY ̲Q ̲ERROR
                     ̲INFO?
                     G ̲INF.ERROR ̲INFO.INFO(1) = ANSWER
                     ̲ERROR
                     G ̲INF.ERROR ̲INFO.Q.MAIN ̲QUEUE = PRC
                     ̲RQ
                     G ̲INF.ERROR ̲INFO.Q.SUB ̲QUEUE  = SUB
                     ̲AQ
                     COPSY ̲SEND ̲GARBLE (ANSWERQEL, G ̲INF)
       END CASE WAIT ̲LIMITED

   END ̲CLOSE ̲DOWN ̲PROCESS

                Figure 4.2.9.4.5.5 ̲5


   PROCEDURE

   SEND ̲CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH ̲REPORT ̲ERROR

   BEGIN

       NO ̲OF ̲OUTSTANDING ̲ANSWERS = 3

       WAIT ̲OPSEM (LONG ̲OP)(COUNT ̲ANSWER)

       COUNT ̲ANSWER.CMD ̲TYPE = CMS ̲CMD ̲L

       COUNT ̲ANSWER.CMD      = CMD ̲SEH ̲CLOSED

       NOTIFY ̲CMD (STOP ̲COR)

       NOTIFY ̲LONG (SEH ̲COR, CLOSE ̲COR)

       NOTIFY ̲LONG(REPORT ̲ERROR ̲COR, CLOSE ̲COR)

   END ̲SEND ̲CLOSE ̲DOWN ̲CMD ̲TO ̲CMD ̲SEH




























                Figure 4.2.9.4.5.5 ̲6


   PROCEDURE

   CLOSE ̲THE ̲REST ̲OF ̲CAMPS

   VAR PU ̲ID: PU1..PU2

   CONST READ ̲MASK = 1      "status

   VAR STATUS: DISK ̲STATUS

   BEGIN

       DISMOUNT ̲DISK (MIR1 ̲FIXED)(CC)

       DISMOUNT ̲DISK (MIR1 ̲MOVING)(CC)

       DEASSIGN ̲DISK (MIRRORED1)

             "deassign both mirrored disks

       KEY ̲BUF.KEY = OFFLINE ̲DISK

       SEARCH ̲ENTRY (DISK ̲TABLE,KEY ̲BUF,READ ̲MASK,SEND
       ̲BUF)(STATUS)

       STATUS EQ IN ̲SERVICE?  DEASSIGN ̲DISK (OFFLINE ̲DISK)

       KEY ̲BUF.KEY = FLOPPY ̲DISK

       SEARCH ̲ENTRY (DISK ̲TABLE,KEY ̲BUF,READ ̲MASK,SEND
       ̲BUF)(STATUS)

       CASE STATUS OF
             IN ̲SERVICE?   DEASSIGN ̲DISK (FLOPPY ̲DISK)
             MOUNTED?      DISMOUNT ̲DISK (FLOPPY ̲DISK)(CC)
                           DEASSIGN ̲DISK (FLOPPY ̲DISK)
       END CASE

       CASE PU ̲NO OF
             1?  PU ̲ID = PU1
             2?  PU ̲ID = PU2
       END CASE

       CONF ̲DISPLAY (SET ̲STATUS, PU ̲ID, IN ̲SERVICE)

       SEND ̲CMI ̲REPLY (CMI ̲QEL, EXEC ̲OK)

   END ̲CLOSE ̲THE ̲REST ̲OF ̲CAMPS



                Figure 4.2.9.4.5.5-7


   PROCEDURE

   CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED

   BEGIN

       HOW ̲TO ̲CLOSE EQ   ORDERED ̲SWITCHOVER?

                         WDP ̲CONTROL (SWITCHOVER, NIL,
                     NIL)

       WDP ̲CONTROL (RESET, PU ̲NO, NIL)



       PU ̲DOWN (ORDERED ̲CLOSE)     "the PU is master cleared

   END CMI ̲REPLY ̲WHEN ̲SYSTEM ̲CLOSED































                Figure 4.2.9.4.5.5-8