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

⟦6594be373⟧ Wang Wps File

    Length: 37223 (0x9167)
    Types: Wang Wps File
    Notes: CPS/SDS/029               
    Names: »1744A «

Derivation

└─⟦20fb15aa2⟧ Bits:30006084 8" Wang WCS floppy, CR 0130A
    └─ ⟦this⟧ »1744A « 

WangText

…02……00……00……00……00…G…0a……00……00…G…0b…G…0e…G…0f…?…05…>…0b…>…0f…>…00…> >…05…=…0a…=…0b…=…0c…=…0e…=…0f…=
= =…07…<…0a…<…0d…<…0f…<…01……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.6    D̲e̲v̲i̲c̲e̲ ̲M̲o̲n̲i̲t̲o̲r̲i̲n̲g̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲



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

         The Device monitoring and Control (DEMCO) functions
         are detailed in figure 4.2.6.1-1

         The following types of devices are controlled by DEMCO:

         P̲T̲P̲

         Queues related to PTP device subprocess:

         -   command queue : PTP ̲CCQ
         -   circuit queue : PTP ̲CIQ

         P̲T̲R̲

         Queue related to PTR device subprocess:

         -   command queue: PTR ̲CCQ

         L̲T̲P̲/̲R̲O̲P̲/̲O̲C̲R̲

         Queue related to LTP/ROP/OCR device subprocesses:

         -   print queue   : PRIS ̲PRINTQ



figure 4.2.6.1-1


4.2.6.1.1    S̲A̲D̲ ̲L̲o̲g̲i̲c̲a̲l̲ ̲L̲T̲U̲X̲-̲L̲i̲n̲e̲ ̲H̲a̲n̲d̲l̲e̲

         The access control to a SAD is controlled by the supervisor.
         Using the accept/non accept SAD command the supervisor
         can open or close the connection (logical connection)
         to a SAD.



4.2.6.1.2    D̲e̲v̲i̲c̲e̲ ̲P̲r̲o̲f̲i̲l̲e̲ ̲C̲h̲a̲n̲g̲e̲d̲

         The supervisor command DEVICE ̲PROFILE ̲CHANGED specifies
         that the classification of a device profile is changed.
         DEMCO changes the classification of the device subprocess
         queues according to the new classification of the device
         profile. Special handling, encryption, item type and
         appl.fields in the access profile are not changed.



4.2.6.1.3    Q̲u̲e̲u̲e̲,̲ ̲s̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲s̲e̲c̲u̲r̲i̲t̲y̲

         Q̲u̲e̲u̲e̲ ̲a̲c̲c̲e̲s̲s̲ ̲p̲r̲o̲f̲i̲l̲e̲

         After the time of initialisation the queue access profiles
         of the device subprocess are changed only when specified
         by the supervisor.

         S̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲a̲c̲c̲e̲s̲s̲ ̲p̲r̲o̲f̲i̲l̲e̲.

         If the security key is turned to the off position or
         the device is disconnected by the supervisor, the access
         profile of the device subprocess is set to no rights
         (all bits are set to zero).

         Is the security key in the on position and is the device
         connected by the supervisor, the access profile of
         the device subprocess is set according to fig. 4.2.6.1.6-5
         to fig. 4.2.6.1.6-8.



4.2.6.1.4    T̲M̲S̲ ̲L̲i̲n̲e̲ ̲S̲e̲c̲u̲r̲i̲t̲y̲

         The TMS lines have a security level which are set when
         the lines are created.

         If the security level of a TMS-line is greater than
         the general security level of TMS, then TMS purges
         all buffer which has been used in the actual input/output
         operation.



4.2.6.1.5    S̲A̲D̲ ̲E̲v̲e̲n̲t̲s̲ ̲M̲ ̲a̲n̲d̲ ̲C̲

         The command START is sent to the SAD subprocess after
         supervisor specification of a connection for input/output
         or during initialization.

         The command STOP is sent after supervisor specification
         of a disconnection for input/output or after detection
         of a line error.

         The command RESUME ̲PRINT is used to resume printing
         action after a printer error or after a paper out.

         The commands "init close down" and "final close down"
         are sent after operator specification of ordered close
         down/switchover of a PU.

         The command "init close down" causes the printer/reader/punch
         subprocess to stop processing when a complete message
         is printed/read/punched.

         After receipt of a "final close down" the subprocess
         terminates all activities and dismantles the IO-connection.


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

         As the coroutine is started the internal DEMCO Data
         are initialized and it is checked in the device profile
         whether the device is connected or not. It is determined
         from the device profile which kind of device is connected
         and if the device is equipped with a security key the
         status of the key is checked.


         In the PTP subprocess the queue access profiles for
         the command queue PTP ̲CCQ and PTP ̲CIQ are set by DEMCO
         according to fig. 4.2.6.6-1 and fig. 4.2.6.1.6-2.

         In the PTP subprocess the queue access profile for
         the command queue PTR ̲CCQ is set by DEMCO according
         to fig. 4.2.6.1.6-3.

         In the printer subprocess the queue access profile
         for the print queue PRIS ̲PRINTQ is set by DEMCO according
         to fig. 4.2.6.1.6-4.

         When the device is connected and the security key is
         in the on position, the access profile of the device
         subprocess is set by DEMCO according to fig. 4.2.6.1.6-5
         to fig. 4.2.6.1.6-8.

         If the device is disconnected or the security key is
         in the off position, the access profile of the device
         subprocess is not changed by DEMCO(the access profile
         bits are all zero)







             Figs. 4.2.6.1.6-1/2/3/4//5/6/7/8


4.2.6.1.7    E̲r̲r̲o̲r̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲

         DEMCO recognizes the following software error types:

         1)  E̲x̲t̲e̲r̲n̲a̲l̲

             These errors relate to input validity check in
             the operation semaphore SAD ̲OS or in the queue
             SAD ̲RQ. An error is reported via the procedure
             COPSY ̲SEND ̲GARBLE.

         2)  I̲n̲t̲e̲r̲n̲a̲l̲

             These errors relate to errors from system calls
             and internal logical errors. System call errors
             are reported via the procedure ANALYZE ̲ERROR (CC).
             Internal logical program errors are reported via
             the procedure COPSY ̲SEND ̲GARBLE.



4.2.6.2  S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         The Device Monitoring and Control (DEMCO) functions
         are implemented in one coroutine per device.

         The DEMCO program is decomposed as defined in fig.
         4.2.6.2-1.

         The program is implemented in 2 modules and a number
         of common procedures.…86…1         …02…   …02…   …02…   …02…          
                                         

figure 4.2.6.2-1


         4 states for DEMCO are defined:

         -   initial
         -   connected
         -   key-disconnected
         -   supv-disconnected

         15 input types are defined:

         -   accept
         -   non-accept
         -   change-device-profile
         -   set-access-profiles
         -   start-cor
         -   close-initial
         -   close-final
         -   line error
         -   start-supv
         -   stop-supv
         -   key ̲on
         -   key ̲off
         -   paper ̲out
         -   paper ̲in
         -   invalid ̲input

         Every input type and state defines the next state of
         DEMCO and the action to be executed. E.g. if the input
         type is non-accept (the supervisor command NON ̲ACCEPT)
         and the present state of DEMCO is connected the next
         state of DEMCO is supv ̲disconnected and the action
         to be executed is disconnected ̲device. 

         See table 4.2.6.2-1


4.2.6.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲

         A blockdiagram for DEMCO fig. 4.2.6.3-1 showing data
         and control logic is depicted overleaf.

         A simplified flowgram for the Main program is shown
         in fig. 4.2.6.3-2.

         Two state diagrams for DEMCO are defined in fig. 4.2.6.3-3
         and 4.2.6.3-4.



figure 4.2.6.2-1




                      Fig. 4.2.6.3-1


         INITIALIZATION


         LOOP


            WAIT OPERATION SEMAPHORE

            ACTION = ACTION ̲TABLE(OLD ̲STATE,INPUT)

            NEW ̲STATE = STATE ̲TABLE(OLD ̲STATE,INPUT)

            CALL ACTION ̲MODULE (ACTION)

            OLD ̲STATE = NEW ̲STATE


         END LOOP




























                     Figure 4.2.6.3-2
        A simplified flowgram for the main program




figure 4.2.6.3-3 + 4.2.6.3-4 


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



4.2.6.4.1  D̲E̲M̲C̲O̲ ̲M̲A̲I̲N̲



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

         The main program module initializes the coroutine.
         It reads and interprets the operations send to the
         coroutine. The type of input to the coroutine is determined.
         A new state of DEMCO and action to take, according
         to the type of input received, is calculated. The action
         to perform is executed in the action module.



4.2.6.4.1.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲d̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

         None



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

         The DEMCO main module contains the following procedures,
         see fig. 4.2.6.4.1.3-1.

         a)  C̲F̲H̲ ̲C̲ ̲C̲M̲D̲

             The procedure determines the type of CFH command
             sent to DEMCO.

         b)  S̲U̲P̲V̲ ̲C̲ ̲C̲M̲D̲

             The procedure determines the type of supervisor
             command sent to DEMCO.

         c)  I̲O̲C̲ ̲S̲T̲A̲T̲U̲S̲

             The procedure determines the type of IOC status
             sent to DEMCO.



figure 4.2.6.4.1.3-1


4.2.6.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ ̲f̲o̲r̲ ̲t̲h̲e̲ ̲M̲a̲i̲n̲ ̲P̲r̲o̲g̲r̲a̲m̲

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

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

             SUPV ̲CMD
             CFH ̲CMD
             US ̲ACTION

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

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

             SAD ̲OS
             SHORT ̲OS
                           :LOGICAL ̲DEVICE ̲NO ̲TYPE
             D.LOCAL ̲DNO   " range:  1..NO ̲OF ̲SAD

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.ACTION ̲TABLE,D.STATE ̲TABLE
             D.STATE : STATE ̲TYPE
             D.INPUT : INPUT ̲TYPE
             D.ACTION: ACTION ̲TYPE
             D.CMD   : INTEGER
             D.SUPV ̲QEL ̲REF : QEL ̲REFERENCE

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

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D ̲OP : SHORT ̲OP ̲TYPE
             D.CMD ̲TYPE : S.CMD ̲TYPE


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


         PROCEDURE  DEMCO ̲MAIN

         BEGIN

             EQUIVALENCE (RUNNING ̲COROUTINE,D:DEVICE ̲COROUTINE)

             D.STATE = INITIAL

             LOOP FOREVER

                 WAIT ̲OPSEM(SAD ̲OS (D.LOCAL ̲DNO) (D ̲OP)

                 D.CMD ̲TYPE = D ̲OP.CMD ̲TYPE

                 D.CMD = D.OP.CMD

                 D.CMD ̲TYPE NE SUPV ?

                 D.SUPV ̲QEL ̲REF = D ̲OP.REFERENCE


                 SIGNAL ̲OPSEM(SHORT ̲OS,D ̲OP)

                 CASE D.CMD ̲TYPE

                     CFH ̲COMMAND ?        C̲F̲H̲ ̲D̲ ̲C̲M̲D̲

                     SUPV ̲COMMAND ?       S̲U̲P̲V̲ ̲D̲ ̲C̲M̲D̲

                     US ̲ACTION ?          I̲O̲C̲ ̲S̲T̲A̲T̲U̲S̲

                     OTHER ?  D.INPUT = D.INVALID ̲INPUT

                 END CASE

                 D.ACTION = C.ACTION ̲TABLE (D.STATE,D.INPUT)

                 D.STATE = STATE ̲TABLE (D.STATE, D.INPUT)

                 A̲C̲T̲I̲O̲N̲ ̲M̲O̲D̲U̲L̲E̲ (D.ACTION)

             END ̲LOOP

         END PROCEDURE



PROCEDURE CFH ̲D ̲CMD

BEGIN

   CASE D.CMD  OF

        SET ̲ACCESS ̲PROFILES? -D.INPUT=D.SET ̲ACCESS ̲PROFILES

        START ̲COR ? -     D.INPUT = D.START ̲COR

        CLOSE ̲INITIAL ? - D.INPUT = D.CLOSE ̲INITIAL

        CLOSE ̲FINAL ?     D.INPUT = D.CLOSE ̲FINAL

        START ̲SUPV ? -    D.INPUT = D.START ̲SUPV

        STOP ̲SUPV ? -     D.INPUT = D.STOP ̲SUPV

        LINE ̲ERROR ? -    D.INPUT = D.LINE ̲ERROR

        OTHER ?           D.INPUT = D.INVALID ̲INPUT

   END CASE

END PROCEDURE



   PROCEDURE  SUPV ̲D.CMD

   BEGIN

        CASE  D.CMD  OF

             ACCEPT ̲SAD ?                 D.INPUT = D.ACCEPT

             NON ̲ACCEPT ̲SAD ?             D.INPUT = D.NON
                                          ̲ACCEPT

             DEVICE ̲PROFILE ̲CHANGE ? D.INPUT=D.CHANGE
             ̲DEVICE ̲PROFILE

             OTHER ?                      D.INPUT = D.INVALID
                                          ̲INPUT

        END CASE

   END PROCEDURE



   PROCEDURE   IOC ̲STATUS

   BEGIN

        CASE  D.CMD  OF

             KEY ̲ON ?       D.INPUT = D.KEY ̲ON

             KEY ̲OFF ?      D.INPUT = D.KEY ̲OFF

             PAPER ̲LOW ?    D.INPUT = D.PAPER ̲OUT

             PAPER ̲HIGH ?   D.INPUT = D.PAPER ̲IN

             OTHER ?        D.INPUT = D.INVALID ̲INPUT

        END CASE

   END PROCEDURE



4.2.6.4.2    A̲c̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲



4.2.6.4.2.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲

         The action determined in the main program DEMCO ̲MAIN
         is executed in this module.



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

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

         a)  ACTION ̲MODULE (D.ACTION:ACTION ̲TYPE)

         b)  ACTION ̲MODULE (R5, R6)

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

         R5 action to perform
         R6 link

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

         None



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

         The action module contains the following procedures,
         see fig. 4.2.6.4.2.3-1

         a)  S̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲ ̲P̲

             The procedure initializes local DEMCO data and
             the queue access profiles of the device subprocess
             are set according to sec. 4.2.6.1.6.



             b) D̲E̲M̲C̲O̲ ̲I̲N̲I̲T̲ ̲P̲

             If the device is connected and the security key
             (ONLY PTR/MTP) is in the on position, the access
             profile of the device subprocess is set according
             to sec. 4.2.6.1.6.  Then the procedure sends a
             START- command containing offer-id and logical
             device number to the device subprocess.




figure 4.2.6.4.2.3-1


         c)  C̲O̲N̲N̲E̲C̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure sends a START-command containing
             offer-id to the device subprocess. Also the classification
             of the device subprocess profile is changed to
             the classification of the device profile.

         d)  D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure sends a STOP-command to the device
             subprocess and it dismantles the connection used
             by the device subprocess. The device subprocess
             profile is changed to no rights.

         e)  C̲H̲A̲N̲G̲E̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲ ̲P̲

             The procedure changes the classification in the
             profiles of the device subprocess queues.

         f)  S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲P̲

             The procedure sends an acknowledgement to the supervisor.

         g)  I̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲ ̲

             The procedure sends a CLOSE ̲DOWN ̲INITIAL-command
             to a device subprocess where the device is connected.

         h)  F̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure sends a CLOSE ̲DOWN ̲FINAL-command
             to a device subprocess where the device is connected.
             It dismantles the connection used by the device
             subprocess upon reception of a reply. The the device
             subprocess profile is changed to no rights and
             the CFH ̲S semaphore counter is increased.

         i)  F̲ ̲C̲L̲O̲S̲E̲ ̲D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure increases the CFH ̲S semaphore counter.


         j) R̲E̲S̲U̲M̲E̲ ̲P̲R̲I̲N̲T̲ ̲P̲

             The procedure sends a RESUME ̲PRINT-command to the
             device subprocess.

         k)  I̲L̲L̲E̲G̲A̲L̲ ̲A̲C̲T̲I̲O̲N̲ ̲P̲

             The procedure sends an error report to CFH via
             the procedure COPSY ̲SEND ̲GARBLE.

         l)  N̲O̲ ̲A̲C̲T̲I̲O̲N̲ ̲P̲

             The procedure performs nothing.

         m)  S̲T̲O̲P̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure sends a STOP-command to the device
             subprocess and it dismantles the connection used
             by the device subprocess. The the device subprocess
             profile is changed to no rights.

         n)  S̲T̲A̲R̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

             The procedure changes the field KEY ̲STATUS to ON
             in the DEVICE PROFILE, changes the classification
             of the subprocess profile to the classification
             of the device and sends a START command to the
             device subprocess.




4.2.6.2.4    D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲ ̲f̲o̲r̲ ̲A̲c̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲

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

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

         CONST  FIRST ̲ROP ̲NO
         CONST  OCR ̲NO
         CONST  FIRST ̲PTR ̲NO
         CONST  PTP ̲NO

         CFH ̲S

         VAR
             D.DNO : LOGICAL ̲DEVICE ̲NO ̲TYPE
             D.LTUX ̲LINE ̲REC : LTUX ̲LINE ̲REC
             D.LINE ̲TABLE : PORT ̲TABLE ̲TYPE

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         CONST D.TEP ̲PROFILE  "unclass, none, no, none, none
         CONST D.PTP ̲PTR ̲PROFILE "unclass, all, yes, message
                                                       only,
                     none


         VAR
             D.COMMAND ̲Q : QUEUE ̲REFERENCE
             D.PRINT ̲Q   : QUEUE ̲REFERENCE
             D.ALT ̲Q     : QUEUE ̲REFERENCE
             D.REPLY ̲Q   : QUEUE ̲REFERENCE
             D.REPORT ̲Q  : QUEUE ̲REFERENCE
             D.STATE     : STATE ̲TYPE
             D.KEY ̲BUF   : KEY ̲BUF ̲TYPE
             D.DEVICE ̲PROFILE : DEVICE ̲PROFILE ̲TYPE
             D.SUBP ̲NO   : SUBPROCESS ̲INDEX
             D.ATTRIBUTES: SUBPROCESS ̲ATTRIBUTES
             D.ACCESS ̲PROFILE : ACCESS ̲PROFILE
             D.CC        : INTEGER
             D.REPLY     : BOOLEAN
             D.SEND ̲BUF  : TMS ̲PARAMS

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

             D.COM ̲1, D.COM ̲2: INTEGER
             D.PARAMS: COPSY ̲GARBLE ̲PARAMS




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

   PROCEDURE   ACTION ̲MODULE  (D.ACTION:  ACTION ̲TYPE)


   BEGIN

      D.PARAMS.ERROR ̲TYPE = COPSY ̲SHORT ̲ERROR ̲INF

      D.PARAMS.USER ̲ACTION = CONTINUE

      D.PARAMS.ERROR ̲COR = DEMCO ̲COR

      D.PARAMS.LOC = ACTION ̲MODULE

      D.PARAMS.ERROR ̲INFO = D.ACTION

      CASE  D.ACTION  OF

         SET ̲PROFILE?             S̲E̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲S̲ ̲P̲

         DEMCO ̲INIT?              D̲E̲M̲C̲O̲ ̲I̲N̲I̲T̲ ̲P̲

         CONNECT ̲DEVICE?          C̲O̲N̲N̲E̲C̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

         DISCONNECT ̲DEVICE?       D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

         CHANGE ̲DEVICE ̲PROFILE?   C̲H̲A̲N̲G̲E̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲ ̲P̲

         SEND ̲REPLY?     S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲P̲

         I ̲CLOSE ̲CONNECTED ̲DEVICE? I̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲
 ̲P̲

         F ̲CLOSE ̲CONNECTED ̲DEVICE? F̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲
 ̲P̲

         F ̲CLOSE ̲DISCONNECTED ̲DEVICE? F̲ ̲C̲L̲O̲S̲E̲ ̲D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲D̲E̲V̲I̲C̲E̲
 ̲P̲

         RESUME ̲PRINT?     R̲E̲S̲U̲M̲E̲ ̲P̲R̲I̲N̲T̲ ̲P̲

         ILLEGAL ̲ACTION   I̲L̲L̲E̲G̲A̲L̲ ̲A̲C̲T̲I̲O̲N̲ ̲P̲

         STOP ̲DEVICE?     S̲T̲O̲P̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

         NO ̲ACTION ?     N̲O̲ ̲A̲C̲T̲I̲O̲N̲ ̲P̲

         START ̲DEVICE?   S̲T̲A̲R̲T̲ ̲D̲E̲V̲I̲C̲E̲ ̲P̲

         LINE ̲ERROR?     L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲ ̲P̲

         OTHER ?         C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,D.PARAMS)

                         N̲O̲ ̲A̲C̲T̲I̲O̲N̲ ̲P̲

      END

   END PROCEDURE



PROCEDURE SET ̲PROFILES ̲P

   BEGIN

     D.PARAMS.ERROR ̲TYPE = COPSY ̲INT ̲ERROR

     D.PARAMS-USER ̲ACTION = GIVE ̲UP

     D.PARAMS.LOC = SET ̲PROFILES ̲P

     D.REPLY ̲Q.MAIN ̲QUEUE = SAD ̲RQ

     D.ALT ̲Q.MAIN ̲QUEUE = SAD ̲RQ

     D.ALT ̲Q.SUB ̲QUEUE = D.DNO

     D.REPORT ̲Q.MAIN ̲QUEUE = SPIP ̲REPQ

     D.REPORT ̲Q.SUB ̲QUEUE = 0

     D.PRINT ̲Q.MAIN ̲QUEUE = PRIS ̲PRINTQ + D.DNO

     D.PRINT ̲Q.SUB ̲QUEUE = 0

     D.COMMAND ̲Q.MAIN ̲QUEUE = PRIS ̲CMDQ + D.DNO

     D.COMMAND ̲Q.SUB ̲QUEUE = 0

     D.CMD ̲ACCESS ̲PROFILE = D.ROP ̲CMD ̲PROFILE

     D.PRINT ̲ACCESS ̲PROFILE = D.ROP ̲PRINT ̲PROFILE

     D.KEY ̲BUF.KEY = D.DNO

     SEARCH ̲ENTRY(DEVICE ̲TABLE,D,KEY ̲BUF,ALL,D.SEND ̲BUF)
                         (D.DEVICE ̲PROFILE)

     D.DEVICE = D.DEVICE ̲PROFILE.DEVICE ̲TYPE

     D.DEVICE EQ LTP?     CASE D.DEVICE ̲PROFILE.LTP ̲MODE
   OF

                            ROP?   D.DEVICE = LTP ̲POP

                          PTR?   D.DEVICE = LTP ̲PTR

                          OTHER?   D.PARAMS.ERROR ̲INFO=D.DEVICE
                 ̲
                                                PROFILE.LTP
                 ̲MODE

                          C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲(NIL,D.PARMS)

                          END ̲CASE




   CASE D.DEVICE OF

     PTP?        D.CMD ̲ACCESS ̲PROFILE = D.PTP ̲CMD ̲PROFILE

                 D.PRINT ̲ACCESS ̲PROFILE = D.PTP ̲PRINT
                 ̲PROFILE

                 D.COMMAND ̲Q.MAIN ̲QUEUE = PTP ̲CCQ

                 D.PRINT ̲Q.MAIN ̲QUEUE = PTP ̲CIQ

     PTR?

     LTP ̲PTR?    D.INIT ̲ACCESS ̲PROFILE=D.PTR ̲PROFILE

                 D.COMMAND ̲Q.MAIN ̲QUEUE=PTR ̲CCQ+D.DNO

     OCR?        D.COMMAND ̲Q.MAIN ̲QUEUE=OCP ̲CMDQ

     MTP ̲ROP?

     LTP ̲ROP?

     OTHER?      D.PARAMS.ERROR ̲INFO = D.DEVICE

                 C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,D.PARAMS)

   END ̲CASE

   D.DEVICE EQ OCR?

   D.ACCESS ̲PROFILE = D.CMD ̲ACCESS ̲PROFILE LOGOR
                      D.DEVICE ̲PROFILE.CLASS

   CASE SET ̲P    ̲Q)
                     (CC): ERROR ̲OK

      ERROR?     ANALYZE ̲ERROR (CC,0)

   END ̲CASE

   D.DEVICE EQ (PTR OR LTP ̲PTR) ?

   D.ACCESS ̲PROFILE = D.PRINT ̲ACCESS ̲PROFILE LOGOR

                      D.DEVICE ̲PROFILE.CLASS

   CASE SET ̲PROFILE  (D.ACCESS ̲PROFILE,D.COMMAND-Q,D.ALT
   ̲Q)
                     (CC): ERROR ̲OK

      ERROR?     ANALYZE ̲ERROR (CC,0)

   END ̲CASE


END ̲PROCEDURE



   PROCEDURE   DEMCO ̲INIT ̲P
   BEGIN

      D.PARAMS.ERROR ̲TYPE = COPSY ̲INT ̲ERROR

      D.PARAMS.USER ̲ACTION = GIVE ̲UP

      D.LOG = DEMCO ̲INIT ̲P

      D.PARAMS.ERROR ̲INFO = NIL

      D.KEY.BUF = D.DNO
      SEARCH ̲ENTRY(DEVICE ̲TABLE,D.KEY ̲BUF, ALL, D.SEND ̲BUF)
                  (D.DEVICE ̲PROFILE)
      D.A = D.DEVICE ̲PROFILE.CONNECTED
      D.B = TRUE
      GET ̲KEY ̲STATUS (D.KEY)
      D.KEY EQ ON?
      D.B = FALSE
      D.A LOGAND D.B EQ FALSE ?  D.STATE=SUPV ̲DISCONNECTED
      D.A EQ FALSE?  D.STATE=SUPV ̲DISCONNECTED
      D.B EQ FALSE?  D.STATE ̲KEY ̲DISCONNECTED
      D.KEY ̲BUF.KEY=D.DEVICE ̲PROFILE.PORT ̲ID.TABLE
      D.LINE ̲TABLE=D.DEVICE ̲PROFILE.PORT ̲ID.TABLE
      SEARCH ̲ENTRY (LTUX ̲LINE ̲TABLE,D.KEY ̲BUF, All,D.SEND ̲BUF)
                   (D.LTUX ̲LINE ̲REC)
      D.COM ̲1 = D.LTUX ̲LINE ̲REC.TYPE ̲DEV
      D.COM ̲2 = D.DEVICE ̲PROFILE.DEVICE ̲TYPE
      D.COM ̲1 EQ D.COM ̲2 ?
      C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,D. PARAMS)
      C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
      SET SUBP ACCESS PROFILE (START)



         S̲E̲T̲ ̲D̲A̲M̲O̲S̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (START ̲SAD)  (D.REPLY)
      D.REPLY EQ OK?
      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ (SOFTWARE ̲ERROR)
      D.STATE = DISCONNECTED
      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲
  END PROCEDURE


   PROCEDURE   CHANGE ̲DEVICE ̲PROFILE ̲P

   BEGIN

      D.KEY ̲BUF.KEY = D.DNO

      SEARCH ̲ENTRY(DEVICE ̲TABLE, D.KEY ̲BUF, ALL, D.SEND ̲BUF)
                  (D.DEVICE ̲PROFILE)

      D.ACCESS ̲PROFILE = D.INIT ̲ACCESS ̲PROFILE LOGOR D.DEVICE
 ̲
                                                     PROFILE.
 CLASS

      CASE SET ̲PROFILE (D.ACCESS ̲PROFILE, D.COMMAND ̲Q, D.ALT
 ̲Q)
                  (D.CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)

      END

      D.DEVICE ̲PROFILE.DEVICE ̲TYPE EQ PTR ?

      CASE SET ̲PROFILE (D.ACCESS ̲PROFILE, D.PRINT ̲Q, D.ALT ̲Q)
                  (D.CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)

      END

      S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (OK)


   END PROCEDURE



   PROCEDURE   CONNECT ̲DEVICE ̲P

   BEGIN

     D.KEY ̲BUF.KEY = D.DNO

      UPDATE ̲ENTRY (DEVICE ̲TABLE,D.SEND ̲BUF,D.KEY ̲BUF,
                  CONNECTED,TRUE)

      G̲E̲T̲ ̲K̲E̲Y̲ ̲S̲T̲A̲T̲U̲S̲ (D.KEY)

      D.KEY EQ OFF?  D.STATE = KEY ̲DISCONNECTED

      D.KEY ̲BUF.KEY = D.DNO

      UPDATE ̲ENTRY (DEVICE ̲TABLE,D.SEND ̲BUF,D.KEY ̲BUF,
                  KEY ̲STATUS,ON)

      C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (START)


      S̲E̲T̲ ̲D̲A̲M̲O̲S̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (START ̲SAD) (D.REPLY)

      S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (D.REPLY)

      D.REPLY  EQ  OK?

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (STOP)

      D.STATE = SUPV ̲DISCONNECTED

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲(SOFTWARE ̲ERROR)

   END PROCEDURE



   PROCEDURE DISCONNECT ̲DEVICE ̲P

   BEGIN

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D(STOP) (D.REPLY)

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (STOP)

      D.REPLY EQ OK?

      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ (SOFTWARE ̲ERROR)

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

       D.KEY ̲BUF.KEY = D.DNO

       UPDATE ̲ENTRY (DEVICE ̲TABLE,D.SEND ̲BUF,
                   D.KEY ̲BUF,KEY ̲STATUS,OFF)

      S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (OK)


   END PROCEDURE




   PROCEDURE   I ̲CLOSE ̲CONNECTED ̲DEVICE ̲P

   BEGIN

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (CLOSE ̲DOWN ̲INITIAL) (D.REPLY)

      D.REPLY EQ OK?

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (STOP)

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

      D.STATE = DISCONNECTED

      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ (SOFTWARE ̲ERROR)

   END PROCEDURE




   PROCEDURE   F ̲CLOSE ̲CONNECTED ̲DEVICE ̲P


   BEGIN


      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D (CLOSE ̲DOWN ̲FINAL) (D.REPLY)

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (STOP)

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N

      SIGNAL ̲SEM (CFH ̲S)

   END PROCEDURE



   PROCEDURE   F ̲CLOSE ̲DISCONNECTED ̲DEVICE ̲P

   BEGIN

      SIGNAL ̲SEM (CFH ̲S)
   END PROCEDURE





   PROCEDURE   STOP ̲DEVICE ̲P

   BEGIN

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (STOP) (D.REPLY)
      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ ̲(STOP)
      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

   END PROCEDURE





   PROCEDURE   NO ̲ACTION ̲P

   BEGIN

   END PROCEDURE





   PROCEDURE   RESUME ̲PRINT ̲P

   BEGIN

      S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (RESUME ̲PRINT) (D.REPLY)

      D.REPLY  EQ  OK?

      S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲(̲STOP)

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

      D.STATE = DISCONNECTED

      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ (SOFTWARE ̲ERROR)

  END PROCEDURE





   PROCEDURE   SEND ̲REPLY ̲P

   BEGIN

      C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲

      S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲ (OK)

   END PROCEDURE


  PROCEDURE ILLEGAL ̲ACTION ̲P

  BEGIN

     D.PARAMS.ERROR ̲TYPE = COPSY ̲SHORT ̲ERROR

     D.PARAMS.USER ̲ACTION = CONTINUE

     D.PARAMS.ERROR ̲COR = DEMCO ̲COR

     D.PARAMS:LOC = ILLEGAL ̲ACTION ̲P

     D.PARAMS.ERROR ̲INFO = D.INPUT

     C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (NIL,D.PARAMS)

  END ̲PROCEDURE





  PROCEDURE START ̲DEVICE ̲P

  BEGIN

     D.KEY ̲BUF.KEY = D.DNO

     UPDATE ̲ENTRY (DEVICE ̲TABLE,D.SEND ̲BUF,D.KEY ̲BUF,
                 KEY ̲STATUS,ON)

     S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲ (START)

     S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲ (START SAD) (D.REPLY)

     D.REPLY EQ OK?

     S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ PROFILE (STOP)

     CUT ̲CONNECTION

     S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ ̲(SOFTWARE ̲ERROR)

     D.STATRE = SUPV ̲DISCONNECTED

  END ̲PROCEDURE




4.2.6.5  D̲E̲M̲C̲O̲ ̲C̲o̲m̲m̲o̲n̲ ̲D̲a̲t̲a̲

STATE ̲TYPE = (INITIAL, CONNECTED,
              KEY ̲DISCONNECTED, SUPV ̲DISCONNECTED)

ACTION ̲TYPE =    (SET ̲PROFILES, DEMCO ̲INIT, CONNECT ̲DEVICE,
                DISCONNECT ̲DEVICE, CHANGE ̲DEVICE ̲PROFILE,
                SEND ̲REPLY, I ̲CLOSE ̲CONNECTED ̲DEVICE,
                F ̲CLOSE ̲CONNECTED ̲DEVICE,
                F ̲CLOSE ̲DISCONNECTED ̲DEVICE, RESUME ̲PRINT,
                ILLEGAL ̲ACTION, NO ̲ACTION, STOP ̲DEVICE)

INPUT ̲TYPE = (D.ACCEPT, D.NON ̲ACCEPT, D.CHANGE ̲DEVICE ̲PROFILE,
              D.SET ̲ACCESS ̲PROFILES, D.START ̲COR, D.CLOSE ̲ 
             
              INITIAL,
              D.CLOSE ̲FINAL, D.LINE ̲ERROR, D.START ̲SUPV,
              D.STOP ̲SUPV, D.KEY ̲ON, D.KEY ̲OFF, D.PAPER ̲OUT)
              D.PAPER ̲IN, D.INVALID ̲INPUT)



         VAR D.STATE :STATE ̲TYPE
             D.INPUT : INPUT ̲TYPE
             D.ACTION : ACTION ̲TYPE
             D.CMD : INTEGER
             D.SUPV ̲QEL ̲REF : QEL ̲REFERENCE
             D.COMMAND ̲Q : QUEUE ̲REFERENCE
             D.ALT ̲Q : QUEUE ̲REFERENCE
             D.REPORT ̲Q : QUEUE ̲REFERENCE
             D.KEY ̲BUF : KEY ̲BUF ̲TYPE
             D.ATTRIBUTES : SUBPROCESS ̲ATTRIBUTES
             D.ACCESS ̲PROFILE : ACCESS ̲PROFILE
             D.REPLY : BOOLEAN
             D.PRINT ̲Q : QUEUE ̲REFERENCE
             D.DEVICE ̲PROFILE : DEVICE ̲PROFILE
             D.SUBP ̲NO : SUBPROCESS ̲INDEX



4.2.6.6  C̲O̲M̲M̲O̲N̲ ̲S̲U̲B̲P̲A̲C̲K̲A̲G̲E̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲S̲



4.2.6.6.1    C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲



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

         The procedure creates a connection to a device.



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

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

         a)  CREATE ̲CONNECTION

         b)  CREATE ̲CONNECTION (R6)

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

         R6  link

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

         None



4.2.6.6.1.3 D̲a̲t̲a̲

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

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

         SUBP ̲TABLE

         VAR D.LINE ̲TABLE : PORT ̲TABLE ̲TYPE
             LTUX ̲CON = ARRAY (1..MAX ̲LTUX) OF FDCB-INDEX


         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.KEY ̲BUF : KEY ̲BUF ̲TYPE
             D.DEVICE ̲PROFILE : DEVICE ̲TYPE
             D.CFH ̲CONN: FDCB ̲INDEX
             D.CONN : FDCB ̲INDEX
             D.OFFER ̲ID : OFFER ̲ID ̲TYPE

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

         VAR D.LINE ̲REC : NEW ̲TMS ̲DEVICE (TMS)
             D.CHAIN ̲STATUS : BOOLEAN
             D.LTUX ̲LINE ̲REC : LTUX ̲LINE ̲REC
             D.DEVICE ̲TYPE : PTP..LTP
             D.SUBP ̲TYPE : SUBPROCESS ̲TYPE
             D.PARAMS : COPSY ̲GARBLE ̲PARAMS



4.2.6.6.1.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

   PROCEDURE   CREATE ̲CONNECTION

   BEGIN

      D.PARAMS.ERROR ̲TYPE = COPSY ̲INT ̲ERROR
      D.PARAMS.USER ̲ACTION = GIVE ̲UP
      D.PARAMS.ERROR ̲COR = DEMCO ̲COP
      D.PARAMS:LOC = CREATE ̲CONNECTION
      D.PARAMS.ERROR ̲INFO = NIL
      D.KEY ̲BUF.KEY = D.CHANNEL ̲PROFILE.PORT ̲ID
      D.LINE ̲TABLE = D.CHANNEL ̲PROFILE.PORT ̲ID.TABLE
      SEARCH ̲ENTRY (LTUX ̲LINE ̲TABLE,D.KEY ̲BUF,ALL,D.SEND ̲BUF)
                   (D.LTUX ̲LINE ̲REC)
      D.CFH ̲CONN=LTUX ̲CON(D.LTUX ̲LINE ̲REC.LTUX ̲NO)
      D.CHAIN ̲STATUS=D.LTUX ̲LINE ̲REC.CHAIN ̲STATUS
      D.CHAIN ̲STATUS EQ FALSE ?  COPSY ̲SEND ̲GARBLE(NIL,D.PARAMS)
      D.CFH ̲CONN  EQ  -1 ?       COPSY ̲SEND ̲GARBLE(NIL,D.PARAMS)
      D.LINE ̲REC.SDA = (D.LTUX ̲LINE ̲REC.NO-1) MODULO 4
      D.LINE ̲REC.U ̲SDID.PROFILE ̲TYPE=DEVICE ̲P
      D.LINE ̲REC.U ̲SDID.LOGICAL ̲NO = D.DNO
      D.LINE ̲REC.SD ̲TYPE = TERMINAL
      D.LINE ̲REC.ACCESS ̲LEVEL = 0
      D.LINE ̲REC.SELECT ̲BY ̲TMS = FALSE
      D.DEVICE ̲PROFILE.DEVICE ̲TYPE EQ OCR ?
      D.LINE ̲REC.PARAMS=OTH ̲LTUX ̲PARAMS ̲D
      D.LINE ̲REC.PROTOCOL ̲ID = LTUX ̲OTH ̲PROTOCOL

                         D.LINE ̲REC.PARAMS=OCR ̲LTUX ̲PARAMS ̲D
                         D.LINE ̲REC.PARAMS=LTUX ̲OCR ̲PROTOCOL

      CREATE ̲SUBDEVICE(D.CFH ̲CONN.D.LINE ̲REC,DEVICE ̲SE)
                      (D.CONN,D.CC) :ERROR ̲OK
      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)

   
      D.DEVICE ̲TYPE= D.DEVICE ̲PROFILE.DEVICE ̲TYPE
      D.DEVICE ̲TYPE EQ ROP?  D.SUBP ̲TYPE= ROP ̲S
      D.DEVICE ̲TYPE EQ OCR?  D.SUBP.TYPE= OCR ̲S
      D.DEVICE ̲TYPE EQ PTR? D.SUBP ̲TYPE = PTR ̲S
      D.SUBP ̲TYPE = PTP ̲S

      D.ACCESS.ACCESS=SUBP ̲TABLE(D.SUBP ̲TYPE).CHILD ̲TMS ̲ACCESS
 ̲RIGHTS
      D.PROCESS ̲NO=SUBP ̲PROCESS ̲TABLE(SUBPROCESS ̲NO)
      D.ACCESS.USER.USER ̲GROUP=D.PROCESS ̲NO
      D.ACCESS.SEQ ̲NBR=PROCESS ̲TABLE(PROCESS ̲NO).PROC ̲ID
      OFFER (D.CONN,D.ACCESS)(D.OFFER ̲ID,D.CC) :ERROR ̲OK
      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)


   END PROCEDURE



4.2.6.6.2    S̲E̲T̲ ̲D̲A̲M̲O̲S̲ ̲L̲I̲N̲E̲ ̲P̲R̲O̲F̲I̲L̲E̲



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

         The procedure changes the DAMOS line profile.



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

         a)  SET ̲DAMOS ̲LINE ̲PROFILE

         b)  SET ̲DAMOS ̲LINE ̲PROFILE (R6)

         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̲

         None



4.2.6.6.2.3 D̲a̲t̲a̲

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

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.CONN : FDCB ̲INDEX
         VAR D.CC   : INTEGER

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

         VAR D.SECURITY ̲PROFILE:WORD


4.2.6.6.2.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲


   PROCEDURE   SET ̲DAMOS ̲LINE ̲PROFILE

   BEGIN

      D.SECURITY ̲PROFILE = D.DEVICE ̲PROFILE.CLASS LOGAND
                         USE ̲2 ̲FIRST ̲BIT

      CASE CHANGE ̲PROFILE (D.CONN,D.SECURITY ̲PROFILE
                   (CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (CC, 0)

      END ̲CASE

   END PROCEDURE


4.2.6.6.3    S̲E̲N̲D̲ ̲R̲E̲P̲L̲Y̲ ̲T̲O̲ ̲S̲U̲P̲V̲



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

         The procedure sends a reply to the supervisor after
         execution of a supervisor command.



4.2.6.6.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)  SEND ̲REPLY ̲TO ̲SUPV (REPLY:REPLY ̲TYPE)

         b)  SEND ̲REPLY ̲TO ̲SUPV (R5, R6)

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

         R 5  REPLY

         R 6  LINK

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

         None



4.2.6.6.3.3 D̲a̲t̲a̲

         VAR D.TIME : TIME ̲TYPE

         S̲S̲C̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.DNO : LOGICAL ̲DEVICE ̲NO ̲TYPE

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.CMD : INTEGER
         VAR D.SUPV ̲QEL ̲REF: QEL ̲REFERENCE
         VAR D.SEND ̲PARAMS : SEND ̲PARAMS ̲TYPE
         VAR D.CC : INTEGER
             REPLY ̲TYPE=(OK,VALIDATION ̲NOT ̲OK,EXECUTION ̲NOT
             ̲OK)



4.2.6.6.3.4 P̲R̲O̲C̲E̲D̲U̲R̲E̲ ̲D̲E̲S̲I̲G̲N̲

   PROCEDURE   SEND ̲REPLY ̲TO ̲SUPV (REPLY: REPLY ̲TYPE)

   BEGIN


      D.SEND ̲PARAMS.INFORMATION ̲TYPE = TRUE

      D.SEND ̲PARAMS.CHECK ̲P ̲STATUS = FALSE 

      D.SEND ̲PARAMS.HEADER.MAINTYPE = ACK

      D.SEND ̲PARAMS.HEADER.SUBTYPE = SSC ̲ACK

      D.SEND ̲PARAMS.FLAGS = D.REPLY

      D.SEND ̲PARAMS.HEADER ̲INF = D.CMD

      D.SEND ̲PARAMS.INFORMATION (3) = D.DNO

      READ ̲TIME (F ̲TIME ̲TYPE)(D.SEND,̲PARAMS.INFORMATION(1)):ERROR
 ̲OK

      ERROR ?     ANALYZE ̲ERROR (CC, 0)

      SEND ̲REPLY (D.SEND ̲PARAMS, D.SUPV ̲QEL ̲REF, D.SUPV ̲QEL
 ̲REF)
                 (CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (CC, 0)


   END
      DISMANTLE (D.SUPV ̲QEL ̲REF)(CC):ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (CC, 0)


   END


   END PROCEDURE


4.2.6.6.4    C̲U̲T̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲



4.2.6.6.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 procedure dismantles a connection offered to a
         device subprocess .



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

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

         a)  CUT ̲CONNECTION

         b)  CUT ̲CONNECTION (R6)

         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̲

         None



4.2.6.6.4.3 D̲a̲t̲a̲

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.CONN : FDCB ̲INDEX


4.2.6.6.4.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

   PROCEDURE   CUT ̲CONNECTION

   BEGIN

      DISMANTLE (D.CONN) (CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (CC, 0)

      D.KEY ̲BUF.KEY = D.DNO

      UPDATE ̲ENTRY (DEVICE ̲TABLE,D.SEND ̲BUF,D-KEY ̲BUF,
                    CONNECT ̲KEY ̲MASK,RESET)


   END PROCEDURE



4.2.6.6.5    S̲E̲N̲D̲ ̲C̲O̲M̲M̲A̲N̲D̲



4.2.6.6.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 procedure sends a command to a device subprocess.
         A reply from the subprocess is awaited, but is subject
         to timeout.



4.2.6.6.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)  SEND ̲COMMAND (D.CMD : INTEGER) (D.REPLY:BOOLEAN)

         b)  SEND ̲COMMAND (R5, R6) (R5)

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

         R 5 COMMAND
         R 6 LINK

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

         R 5 reply from the device subprocess





4.2.6.6.5.3 D̲a̲t̲a̲

         D̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲

         VAR D.CMD : INTEGER
         VAR D.REPLY : BOOLEAN
         VAR D.CMD ̲Q : QUEUE ̲REFERENCE
         VAR D.TIME : SECONDS
         VAR D.WRK : ARRAY (1..16) OF INTEGER
         VAR D.ATT : QEL ̲ATTRIBUTES
         VAR D.QEL : QEL ̲REFERENCE
         VAR D.SUBQ : SUBQUEUE ̲INDEX
         VAR D.CC : INTEGER
         VAR D.SEND ̲PARAMS : SEND ̲PARAMS TYPE
         VAR D.STATE : STATE ̲TYPE
         VAR D.REPLY ̲Q : QUEUE ̲REFERENCE
         VAR D.OFFER ̲ID = ARRAY (1..2) OF USER ̲CONNECTION ̲TYPE

         REPLY ̲TYPE =(OK,VALIDATION ̲NOT ̲OK,EXECUTION ̲NOT ̲OK)



4.2.6.6.5.4 P̲R̲O̲C̲E̲D̲U̲R̲E̲ ̲D̲E̲S̲I̲G̲N̲ ̲

   PROCEDURE   SEND ̲COMMAND (D.CMD: INTEGER)(D.REPLY: REPLY
 ̲TYPE)

   BEGIN

      D.REPLY = EXECUTION ̲NOT ̲OK
      D.SEND ̲PARAMS.HEADER.INFORMATION ̲TYPE = TRUE
      D.SEND ̲PARAMS.CHECKP ̲STATUS=FALSE
      D.SEND ̲PARAMS.HEADER.MAINTYPE=SSC ̲COMMAND
      D.CMD NE (CLOSE ̲DOWN ̲INITIAL OR CLOSE ̲DOWN ̲FINAL) ?
      D.SEND ̲PARAMS.HEADER.SUBTYPE = CLOSE ̲DOWN
      D.CMD NE CLOSE ̲DOWN ̲INITIAL ?
      D.SEND ̲PARAMS.HEADER.FLAGS = 0


                     D.SEND ̲PARAMS.HEADER.FLAGS = 1



                     D.SEND ̲PARAMS.HEADER.SUBTYPE = D.CMD

      D.CMD NE START ̲SAD ?

      D.SEND ̲PARAMS.HEADERINF = D.OFFER ̲ID

      D.SEND ̲PARAMS.INFORMATION (1) = D.DNO

      SEND ̲REQUEST (D.SEND ̲PARAMS,NIL,D.COMMAND ̲Q,D.REPLY ̲Q)
                   (D.CC) : ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)

         D.TIME = 2

      WAIT ̲TIME ̲LIMITED ̲ON ̲QUEUE (D.REPLY ̲Q, D.TIME, D.WRK)
                                (D.QEL)

      D.CC EQ OK ?   D.REPLY = OK

      S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲ (SOFTWARE ̲ERROR)

      D.PARAMS.ERROR ̲TYPE = COPSY ̲Q ̲ERROR

      D.PARAMS-USER ̲ACTION = CONTINUE

      D.PARAMS.ERROR ̲COR = DEMCO ̲COR



      D.PARAMS.LOC = SEND ̲COMMAND

      D.ERROR ̲INFO = SAD ̲RQ

      C̲O̲P̲S̲Y̲ ̲S̲E̲N̲D̲ ̲G̲A̲R̲B̲L̲E̲ (D.QEL,D.PARAMS)

      D.STATE = DISCONNECTED

      DISMANTLE (D.QEL) (D.CC) :ERROR ̲OK

      ERROR ?     ANALYZE ̲ERROR (D.CC, 0)

   END PROCEDURE


4.2.6.5.6 S̲E̲N̲D̲ ̲W̲A̲R̲N̲I̲N̲G̲ ̲R̲E̲P̲O̲R̲T̲



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

         The procedure sends a warning report which is printed
         out at a supervisor position.



4.2.6.6.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)  SEND ̲WARNING ̲REPORT (D.TEXT ̲REF: 1..MAX ̲REPORT
             TEXT ̲REF)

         b)  SEND ̲WARNING ̲REPORT (R5, R6)

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

         R5  type of warning report
         R6  link

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

         None



4.2.6.6.6.3 D̲A̲T̲A̲

         TYPE D.REPORT =
             RECORD
                 SIZE :           INTEGER
                 TOC:             TIME ̲TYPE
                 TEXT ̲REF:        1..MAX ̲REPORT ̲TEXT ̲REF
                 TD:              ARRAY(1..16) OF CHAR
             END

         VAR D.SEND ̲PARAMS : SEND ̲PARAMS ̲TYPE
         VAR D.DNO : LOGICAL ̲DEVICE ̲NO ̲TYPE (SSC COMMON)
         VAR D.REPORT ̲Q : QUEUE ̲REFERENCE (DEMCO COMMON)
         VAR D.TEXT ̲REF : 1.. MAX ̲REPORT ̲TEXT ̲REF)
         VAR D.SIZE : INTEGER




4.2.6.6.6.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

         PROCEDURE SEND ̲WARNING ̲REPORT (T.TEXT ̲REF:
                                       1..MAX ̲REPORT ̲TEXT ̲REF)

         BEGIN

         CASE READ ̲TIME  (F.̲TIME ̲TYPE)
                          D.REPORT.TOC,CC) : ERROR ̲OK

             ERROR?-ANALYZE ̲ERROR (CC,0)

         END

         D.REPORT.TEXT ̲REF = D.TEXT ̲REF

         D.REPORT.TD = D.DNO

         CASE RESERVE ̲BUFFER (D.REPORT.SIZE,D.REPLY ̲Q)
                              D-QEL,CC) : ERROR ̲OK

             ERROR?   ANALYZE ̲ERROR (CC,0)

         END

         CASE WRITE ̲BUFFER (D.QEL,D.REPORT,D.REPORT.SIZE, 1)
                           (D.SIZE; CC) : ERROR ̲OK

             ERROR?   ANALYZE ̲ERROR (CC,0)

         END

         D.SEND ̲PARAMS.INFORMATION ̲TYPE = FALSE

         D.SEND ̲PARAMS.CHECKP ̲STATUS = FALSE

         D.SEND ̲PARAMS.HEADER.MAINTYPE = REPORT

         D.SEND ̲PARAMS.HEADER.SUBTYPE = WARNING ̲REPORT

         CASE SEND ̲QEL (D.SEND ̲PARAMS, NIL, D.REPORT ̲Q)

                       (CC) : ERROR ̲OK

             ERROR?   ANALYZE ̲ERROR (CC,0)

         END

         END PROCEDURE


4.2.6.6.7    S̲E̲T̲ ̲S̲U̲B̲P̲ ̲A̲C̲C̲E̲S̲S̲ ̲P̲R̲O̲F̲I̲L̲E̲



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

         The procedure changes the access profile of the device
         subprocess when the device is connected by the supervisor.
          When the device is disconnected the access profile
         of the subprocess is set to no rights (all bits are
         zero).



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

         a)  SET ̲SUBP ̲ACCESS ̲PROFILE (  CMD : INTEGER)

         b)  SET ̲SUBP ̲ACCESS ̲PROFILE (R5, R6)

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

         R5 COMMAND
         R6 LINK

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

         None

4.2.6.6.7.3 D̲a̲t̲a̲

         D.ATTRIBUTES : SUBPROCESS ̲ATTRIBUTES

         D.SUBP ̲NO : SUBPROCESS ̲INDEX

         D.DNO : LOGICAL ̲DEVICE ̲NO ̲TYPE

         D.PARAMS : COPSY ̲GARBLE ̲PARAMS




4.2.6.6.7.4 P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲D̲e̲s̲i̲g̲n̲

  PROCEDURE SET ̲SUBP ̲ACCESS ̲PROFILE (CMD)

  BEGIN

     D.PARAMS.ERROR ̲TYPE = VOPSY ̲INT ̲ERROR

     D.PARAMS.USER ̲ACTION = GIVE ̲UP

     D.PARAMS-ERROR ̲COR = DEMCO ̲COR

     D.PARAMS.LOC = SET ̲SUBP ̲ACCESS ̲PROFILE

     D.PARAMS.ERROR ̲INFO = NIL

     D.ATTRIBUTES.PROFILE = 0

     CMD EQ STOP?

     CASE D.DEVICE ̲PROFILE.DEVICE ̲TYPE OF

        ROP? D.SUBP ̲NO = FIRST ̲ROP ̲NO + D.DNO ̲T

        OCR? D.SUBP ̲NO = FIRST ̲OCR ̲NO

        PTR? D.SUBP ̲NO = PTR ̲SUBP ̲NO

        PTP? D.SUBP ̲NO = PTP ̲NO

        OTHER?       COPSY ̲SEND ̲GARBLE(NIL,D.PARAMS)

      END CASE

      D.ATTRIBUTES.PROFILE = D.INIT ̲ACCESS ̲PROFILE LOGOR

                         D.DEVICE ̲PROFILE.CLASS

     D.ATTRIBUTES.PROFILE ̲FLAG = TRUE

     CASE CHANGE ̲SUBPROCESS ̲ATTRIBUTES (D.SUBP ̲NO,D.ATTRIBUTES)

                                        (CC) : ERROR ̲OK

        ERROR?       ANALYZE ̲ERROR(CC,0)

      END CASE

  END ̲PROCEDURE