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

⟦e706587df⟧ Wang Wps File

    Length: 39361 (0x99c1)
    Types: Wang Wps File
    Notes: CPS/SDS/029               
    Names: »1738A «

Derivation

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

WangText



G…06…G…07…F…0d…F
 …00…    …05…
    …06……1f……09……1f……0a……1f……0c……1f……0d……1f……0f……1f……00……1f…    …1f……05……1e……08……1e……0c……1e……0e……1e……00……1e……02……1e……06……86…1
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        …02…
        
        
        
        
        
        
        
        
        
        
        …02…
        
        
        …02…
        
        
        
        
        
        
        
        

…02…CPS/SDS/029

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








4.2.7    C̲h̲a̲n̲n̲e̲l̲ ̲M̲o̲n̲i̲t̲o̲r̲i̲n̲g̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲



4.2.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 Channel Monitoring and Control (CEMCO) functions
         are detailed on figure 4.2.7.1-1.

         The following types of channels are controlled by CEMCO:

         N̲I̲C̲S̲-̲T̲A̲R̲E̲

         Queues related to NICS-TARE channel subprocess:

         -   Command queue: NT-CCQ

         -   Circuit queue: NT-CIQ

         T̲R̲C̲/̲p̲o̲i̲n̲t̲ ̲t̲o̲ ̲p̲o̲i̲n̲t̲ ̲c̲o̲n̲n̲e̲c̲t̲i̲o̲n̲

         Queues related to TRC channel subprocess:

         -   Command queue: TP-CCQ

         -   Circuit queue: NT-CIQ

         S̲C̲A̲R̲S̲-̲C̲C̲I̲S̲

         Queues related to SCARS-CCIS channel subprocess:

         -   Command queue: SC-CCQ

         -   Circuit queue: SC-CIQ.

         The functions performed are described in the following
         sections.















































             Fig. 4.2.7.1-1 …01…CEMCO Functions


4.2.7.1.1    E̲X̲C̲ ̲L̲o̲g̲i̲c̲a̲l̲ ̲L̲T̲U̲-̲l̲i̲n̲e̲ ̲h̲a̲n̲d̲l̲e̲

         The access control to NICS-TARE and SCARS-CCIS channel
         are controlled by the supervisor.

         Using the accept/non accept EXC command the supervisor
         can open or close the logical connection to an EXC.



4.2.7.1.2    E̲X̲C̲ ̲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 TRC/point to point connection
         is controlled by the supervisor.

         Using the accept/non accept EXC command the supervisor
         can open or close the logical connection to an EXC.



4.2.7.1.3    E̲X̲C̲ ̲C̲o̲n̲t̲r̲o̲l̲

         The command START is sent to the channel 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, after detection
         of a line error or after a software error.

         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 channel subprocess
         to stop processing when a complete message is received/transmitted.
         After receipt of a "final close down" the subprocess
         terminates all activities and dismantles the IO-connection.





4.2.7.1.4    U̲p̲d̲a̲t̲e̲ ̲p̲r̲o̲f̲i̲l̲e̲

         The supervisor command CHANGE ̲CIRCUIT ̲PROFILE specifies
         that the classification of a circuit profile is changed.
         CEMCO changes the circuit queue profile according to
         the new classification of the circuit. Special handling,
         encryption, item type and applictaion fields in circuit
         queue profile is not changed.

         Prior to sending a CHANGE ̲CIRCUIT ̲PROFILE command the
         supervisor has

         -   emptied the circuit queue
         -   blocked the circuit queue



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

         C̲h̲a̲n̲n̲e̲l̲ ̲s̲u̲b̲p̲r̲o̲c̲e̲s̲s̲ ̲p̲r̲o̲f̲i̲l̲e̲

         The queue access profile of the device subprocess is
         set when the channel is connected by the supervisor
         (see fig. 4.2.7.1.7-1,fig. 4.2.7.1.7-3,fig. 4.2.7.1.7-5).

         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 channel is disconnected by the supervisor the
         access profile of the channel subprocess is set to
         no rights (all bits are set to zero).  When the supervisor
         connects a channel the access profile is set according
         to fig. 4.2.7.1.7-7 to fig. 4.2.7.1.7-9.



4.2.7.1.6    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.7.1.7    I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲

         As the coroutine is started the internal CEMCO data
         are initialized and it is checked in the channel profile
         whether the channel is connected or not.

         The type of device in the port table and the type of
         circuit in the circuit profile are compared. The chain-status
         in the port table is also checked.

         In the NICS/TARE subprocess the queue access profiles
         for the command queue NTf̲CCQ and the circuit queue
         NTc̲Q are set by CEMCO according to fig. 4.2.7.1.7-1
         and fig. 4.2.7.1.7-4.

         In the TRC/point to point subprocess the queue access
         profiles for the command queue TP ̲CCQ are set by CEMCO
         according to fig. 4.2.7.1.7-3 and fig. 4.2.7.1.7-6.

         In the SCARS/CCISS subprocess the queue access profiles
         for the command queue SC-̲CCQ and circuit queue SC ̲CIQ
         are set by CEMCO according to fig. 4.2.7.1.7-5 and
         fig. 4.2.7.1.7-6.

         If the channel is connected, the access profile of
         the channel subprocess is set by CEMCO according to
         fig. 4.2.7.1.7-7 to fig. 4.2.7.1.7-9

         If the device is disconnected, the access profile of
         the device subprocess is not changed by CEMCO (the
         access profile bits are all zero)





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

         CEMCO 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 EXC ̲OS or in the queue
             EXC ̲RQ. An error report is sent via the procedure
             COPPSY ̲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 ANALYSE ̲ERROR (CC).
             Internal logical program errors are reported via
             the procedure COPSY ̲SEND ̲GARBLE.



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

         The channel monitoring and control (CEMCO) functions
         are implemented in one coroutine per channel.

         The CEMCO program is decomposed as defined in fig.
         4.2.7.2-1.

         The program is implemented in 2 modules and a number
         of common procedures.







            Figs: 4.2.7.1.7-1/2/3/4/5/6/7/8/9/
















































          Fig. 4.2.7.2-1…01…CEMCO Software Modules


         Three states for CEMCO are defined:

         -   initial
         -   connected
         -   disconnected

         Eight input types are defined:

         -   accept
         -   non ̲accept
         -   change ̲circuit ̲profile
         -   set ̲access ̲profiles
         -   start ̲cor
         -   close ̲initial
         -   line ̲error
         -   invalid ̲input

         Every input type and state defines the next state of
         CEMCO 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 CEMCO is connected, the next
         state of CEMCO is disconnected and the action to be
         executed is disconnect ̲channel. See table 4.2.7.2-1.

















































                     TABLE 4.2.7.2-1


4.2.7.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 CEMCO fig. 4.2.7.3-1 showing data
         and control logic is depicted overleaf. A simplified
         flowgram for the Main program is shown in fig. 4.2.7.3-2.

         A State diagram for CEMCO is defined in fig. 4.2.7.3-3.















































          Fig. 4.2.7.3-1…01…Blockdiagram for CEMCO



         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


























Fig. 4.2.7.3-2…01…A Simplified Flowgram for the Main Program















































Fig. 4.2.7.3-3…01…State Diagram for a CEMCO coroutine


4.2.7.4.1    M̲a̲i̲n̲ ̲P̲r̲o̲g̲r̲a̲m̲



4.2.7.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.
         Thereafter it reads and interprets the operation sent
         to the coroutine from the configuration handler or
         the command dispatcher.

         The type of input to the coroutine is determined. A
         new state of CEMCO is determined and the action to
         take, according to the type of input received, is calculated.

         The action to perform is executed in the action module.



4.2.7.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.7.4.1.3  M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲

         The CEMCO main module contains the following procedures,
         see fig. 4.2.7.4.1.3-1.

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

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

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

             The procedure determines the type of supervisor
             command sent to CEMCO:



















































     Fig. 4.2.7.4.1.3-1…01…CEMCO Main Module Procedures


4.2.7.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

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

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

         EXC ̲OS
         SHORT ̲OS
         C.LOCAL ̲CNO: LOGICAL ̲CHANNEL ̲NO ̲TYPE
                     range: 1..NO ̲OF ̲EXC

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

         VAR C. ACTION ̲TABLE, C.STATE ̲TABLE
             C.STATE: STATE ̲TYPE
             C.INPUT: INPUT ̲TYPE
             C.ACTION: ACTION ̲TYPE
             C.CMD: INTEGER
             C.SUPV ̲QEL ̲REFERENCE: QEL ̲REFERENCE
             C.INFORMATION: INTEGER " used when a circuit queue
             profile is changed, contains the reference to the
             circuit queue.

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

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

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


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

   PROCEDURE CEMCO ̲MAIN

   BEGIN

      EQUIVALENCE(RUNNING ̲COROUTINE,C:CHANNEL ̲COROUTINE)

      C.STATE = INITIAL

      LOOP FOREVER

         WAIT ̲OPSEM(EXC ̲OS(C.LOCAL ̲CNO)(C ̲OP)

         C.CMD ̲TYPE = C ̲OP.CMD ̲TYPE

         C.CMD = C ̲OP.CMD ̲TYPE

         C.CMD = C ̲OP.CMD

         C.INFORMATION = C ̲OP.INFORMTION                         "contains
                                                                 reference
                                                                 to
                                                                 circuit
                                                                 queue,
                                                                 used
                                                                 by
                                                                 UPDATE
                                                                 ̲PROFILE
         C.CMD ̲TYPE NE SUPV ̲CMD?


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


         SIGNAL ̲OPSEM (SHORTS ̲OS, C ̲OP)


         CASE C.CMD ̲TYPE OF

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

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

             OTHER?                     C.INPUT = C.INVALID
                                        ̲INPUT

         END CASE

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

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

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

      END ̲LOOP

   END PROCEDURE


   PROCEDURE     CFH ̲C.CMD

   BEGIN


      CASE C.CMD OF


      SET-ACCESSS ̲PROFILES?             C.INPUT = C.SET
                                        ̲ACCESSS ̲PROFILES

      START ̲COR?           C.INPUT = C.START ̲COR

      CLOSE ̲INITIAL?       C.INPUT = C.CLOSE ̲INITIAL

      CLOSE ̲FINAL?                      C.INPUT = C.CLOSE
                                        ̲FINAL

      LINE ̲ERROR?                       C.INPUT = C.LINE
                                        ̲ERROR

      OTHER?               C.INPUT = C.INVALID ̲INPUT


      END CASE


   END PROCEDURE CFH ̲C ̲CMD


   PROCEDURE SUPV ̲C.CMD


   BEGIN


      CASE C.CMD OF

         ACCEPT ̲EXC? -     C.INPUT = C.ACCEPT


         NON ̲ACCEPT ̲EXC? - C.INPUT = C.NON ̲ACCEPT


         CIRCUIT ̲PROFILE ̲CHANGE? - C.INPUT=C.CHANGE
         ̲CIRCUIT ̲PROFILE


         OTHER? -    C.INPUT = C.INVALID ̲INPUT


      END CASE


   END PROCEDURE SUPV ̲C ̲CMD



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



4.2.7.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 CEMCO ̲MAIN
         is executed in this module.



4.2.7.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 (C.ACTION : ACTION ̲TYPE)
         b)  ACTION ̲MODULE (R5, R6)

         R̲e̲g̲i̲s̲t̲e̲r̲ ̲C̲o̲n̲v̲e̲n̲t̲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.7.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.7.4.2.3-1.

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

             The procedure initializes local CEMCO data, and
             sets the classification of the circuit queue profile
             and the command queue profile of the channel subprocess
             according to the classification of the circuit
             profile.

             The classification of the command queue profile
             is set according to the classification of the circuit
             profile, while two types of views (flash ack. and
             self-addressed-channel-check-asm.) are sent to
             the command queue.

             The subprocess access profile is set to no rights.

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

             If the channel is connected the procedure sends
             a START-command containing offer-id, to the channel
             subprocess. Also the classification of the channel
             subprocess profile is changed to the classification
             of the circuit.















































       Fig. 4.2.7.4.2.3-1…01…Action Module Procedures


         c)  C̲O̲N̲N̲E̲C̲T̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

             The procedure sends a START-command containing
             offer-id, to the channel subprocess. Also the classification
             of the channel subprocess profile is changed to
             the classification of the circuit.
             A reply is sent to the suprvisor.

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

             The procedure sends a STOP-command to the channel
             subprocess, and it dismantles the connection used
             by the channel subprocess.

             The channel subprocess access profile is changed
             to no rights.

             A reply is sent to the supervisor.

         e)  C̲H̲A̲N̲G̲E̲ ̲C̲I̲R̲C̲U̲I̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲ ̲P̲

             The procedure changes the classification of a circuit.

         f)  I̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

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

         g)  F̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

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

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

             The procedure increases the semaphore counter CFH
             ̲S.


         i)  L̲I̲N̲E̲ ̲E̲R̲R̲O̲R̲ ̲P̲

             The procedure sends a STOP-command to the channel
             subprocess, and it dismantles the connection used
             by the channel subprocess. The channel subprocess
             access profile is changed to unclassified.

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

             The procedure performs nothing.

         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.




4.2.7.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 ̲TRC ̲PTOP ̲NO
         CONST FIRST ̲NICS ̲TARE ̲NO
         CONST FIRST ̲SCARS ̲CCIS ̲NO

             CFH ̲S
             VAR C.LOCAL ̲CNO: LOGICAL ̲CHANNEL ̲NO ̲TYPE
                     "range 1..MAX ̲EXC
             C.CNO: LOGICAL ̲CHANNEL ̲NO ̲TYPE
                     "range 1..NO ̲OF ̲EXC

             LOG ̲CI ̲TO ̲LOCAL(1..MAX ̲CIRCUITS) OF BYTES
             C.CI ̲NO: LOGICAL ̲CIRCUIT ̲NO ̲TYPE
                     "range 1..MAX ̲CIRCUITS

             C.LTU ̲LINE ̲REC: LTU ̲LINE ̲REC
             C.LTUX ̲LINE ̲REC: LTUX ̲LINE ̲REC
             C.LINE ̲TABLE: PORT ̲TABLE ̲TYPE


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

   CONST C.INIT ̲ACCESS ̲PROFILE "unclass,all,yes,message
   only,more


   VAR

         C.COMMAND ̲Q: QUEUE ̲REFERENCE
         C.CIRCUIT ̲Q: QUEUE ̲REFERENCE
         C.ALT ̲Q: QUEUE ̲REFERENCE
         C.REPLY ̲Q: QUEUE ̲REFERENCE
         C.REPORT ̲Q: QUEUE ̲REFERENCE
         C.STATE: STATE ̲TYPE
         C.KEY ̲BUF: KEY ̲BUF ̲TYPE
         C.CHANNEL ̲PROFILE: CHANNEL ̲PROFILE ̲TYPE
         C.CIRCUIT ̲PROFILE: CIRCUIT ̲PROFILE ̲TYPE
         C.SUBPROCESS ̲NO: SUBPROCESS ̲INDEX
         C.ATTRIBUTES: SUBPROCESS ̲ATTRIBUTES
         C.ACCESS ̲PROFILE: ACCESS ̲PROFILE
         C.CC: INTEGER
         C.REPLY: BOOLEAN
         C.SEND ̲BUF: TMS ̲PARAMS


         L̲o̲c̲a̲l̲ ̲d̲a̲t̲a̲

   VAR

         C.PROFILE: CIRCUIT ̲PROFILE
         C.CHANGE ̲Q: QUEUE ̲REFERENCE
         C.COM1, COM2: INTEGER
         C.TYPE: INTEGER
         C.PARAMS : COPSY ̲GARBLE ̲PARAMS


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

   PROCEDURE ACTION ̲MODULE(C.ACTION)

   BEGIN

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

     C.PARAMS ̲USER ̲ACTION = CONTINUE

     C.PARAMS.LOC = ACTION ̲MODULE

     C.PARAMS-ERROR ̲INFO = C.ACTION

     CASE C.ACTION OF

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

         CEMCO ̲INIT? - C̲E̲M̲C̲O̲ ̲I̲N̲I̲T̲ ̲P̲

         CONNECT ̲CHANNEL? - C̲O̲N̲N̲E̲C̲T̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

         DISCONNECT ̲CHANNEL? - D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲ ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

         CHANGE ̲CIRCUIT ̲PROFILE? - C̲H̲A̲N̲G̲E̲ ̲C̲I̲R̲C̲U̲I̲T̲ ̲P̲R̲O̲F̲I̲L̲E̲
         ̲P̲

         I ̲CLOSE ̲CONNECTED ̲CHANNEL? I̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲
         ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

         F ̲CLOSE ̲CONNECTED ̲CHANNEL? - F̲ ̲C̲L̲O̲S̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲E̲D̲
         ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

         F ̲CLOSE ̲DISCONNECTED ̲CHANNEL? -F̲ ̲C̲L̲O̲S̲E̲ ̲D̲I̲S̲C̲O̲N̲N̲E̲C̲T̲E̲D̲
         ̲C̲H̲A̲N̲N̲E̲L̲ ̲P̲

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

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

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

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


   END PROCEDURE


   PROCEDURE SET ̲PROFILES ̲P

   BEGIN

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

     C.PARAMS.USER ̲ACTION = GIVE ̲UP

     C.PARAMS.ERROR ̲COR = CEMCO ̲COR

     C.PARAMS.LOC = SET ̲PROFILES ̲P

     C.PARAMS.ERROR ̲INFO = NIL

     C.COMMAND ̲Q. SUB ̲QUEUE = O

     C.CIRCUIT ̲Q.MAIN ̲QUEUE = CIO + C ̲CI ̲NO

     C.CIRCUIT ̲Q.SUB ̲QUEUE = O

     C.ALT ̲Q.MAIN ̲QUEUE = EXC ̲RQ

     C.ALT ̲Q.SUB ̲QUEUE = C.CNO

     C.REPLY ̲Q.MAIN ̲QUEUE = EXC ̲RQ

     C.REPLY ̲Q.SUB ̲QUEUE = C.LOCAL ̲CNO

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

     C.REPORT ̲Q.SUB ̲QUEUE = O

     C.KEY ̲BUF.KEY = C.CNO

     SEARCH ̲ENTRY(CHANNEL ̲TABLE, C.KEY ̲BUF, ALL, 
                 C.SEND ̲BUF)(C.CHANNEL ̲PROFILE)

     C.KEY ̲BUF.KEY = C.CHANNEL ̲PROFILE. CIRCUIT ̲NO

     SEARCH ̲ENTRY(CIRCUIT ̲TABLE, C.KEY ̲BUF, ALL,
                     C.SEND ̲BUF)(C.CIRCUIT ̲PROFILE)



   CASE C.CIRCUIT ̲PROFILE.CIRCUIT OF

     NICS ̲TARE?  C.COMMAND ̲Q.MAIN ̲QUEU = NT ̲CCQ + C.CNO

                 C.CIRCUIT ̲Q.MAIN ̲QUEUE = NT ̲CIQ + C.CNO

                 C.CMD ̲ACCESS ̲PROFILE = C.NT ̲CMD ̲PROFILE

                 C.CIRCUIT ̲ACCESS ̲PROFILE = C.NT ̲CIRCUIT
                 ̲PROFILE

   TRC ̲PTOP?     C.COMMAND ̲Q.MAIN ̲QUEUE = TP ̲CCQ + C.CNO

                 C.CIRCUIT ̲Q.MAIN ̲QUEUE = TP ̲CIQ + C.CNO

                 C.CMD ̲ACCESS ̲PROFILE = C.TP ̲CMD ̲PROFILE

                 C.CIRCUIT ̲ACCESS ̲PROFILE = C.TP ̲CIRCUIT
                 ̲PROFILE

   SCARS/CCISS?  C.COMMAND ̲Q.MAIN ̲QUEUE = SC ̲CCQ + C.CNO

                 C.CIRCUIT ̲Q.MAIN ̲QUEUE = SC ̲CIQ + C.CNO

                 C.CMD ̲ACCESS ̲PROFILE = C.SC ̲CMD ̲PROFILE

                 C.CIRCUIT ̲ACCESS ̲PROFILE = C.SC ̲CIRCUIT
                 ̲PROFILE

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


 END ̲CASE



   C.ACCESS ̲PROFILE = C.CIRCUIT ̲ACCESS ̲PROFILE LOG OR
                     C.CIRCUIT ̲PROFILE.CLASS

   SET ̲PROFILE(C.ACCESS ̲PROFILE, C.CIRCUIT ̲Q, C.ALT ̲Q)
             (CC):  ERROR ̲OK

   ERROR? - ANALYSE ̲ERROR (CC, O)

   C.ACCESS ̲PROFILE = C.CMD ̲ACCESS ̲PROFILE LOG OR
                      C.CIRCUIT ̲PROFILE.CLASS

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

   ERROR?    ANALYZE ̲ERROR (CC.CC,O)



   END PROCEDURE


   PROCEDURE CEMCO ̲INIT ̲P

   BEGIN

     C.KEY.BUF = C.CNO

     SEARCH ̲ENTRY(CHANNEL ̲TABLE, C.KEY ̲BUF, ALL, C.SEND
     ̲BUF)
                 (C.CHANNEL ̲PROFILE)

     C.CHANNEL ̲PROFILE.CONNECTED EQ FALSE?

                                 C.STATE = DISCONNECTED

     C.CIRCUIT ̲PROFILE.CIRCUIT EQ SCARS ̲CCIS? - C.COM1
     = SCARS ̲CCIS

     C.COM1 = C.CIRCUIT ̲PROFILE.CIRCUIT

     C.KEY ̲BUF.KEY = C.CHANNEL ̲PROFILE.PORT ̲ID.TABLE
     C.LINE ̲TABLE = C.CHANNEL ̲PROFILE.PORT ̲ID.TABLE
     C.LINE ̲TABLE EQ LTUX ̲LINE ̲TABLE?

     SEARCH ̲ENTRY(LTU ̲LINE ̲TABLE, C.KEY ̲BUF, ALL, C.SEND
     ̲BUF)
                 (C.LTU ̲LINE ̲REC)
     C.TYPE = C.LTU ̲LINE ̲REC.TYPE ̲DEV

                 SEARCH ̲ENTRY(LTUX ̲LINE ̲TABLE,C.KEY ̲BUF,ALL,
                 C.SEND ̲BUF
                     (C.LTUS ̲LINE ̲REC)
                 C.TYPE = C.LTUX ̲LINE ̲REC.TYPE ̲DEV

   C.TYPE EQ NICS ̲TARE ̲LOCAL LOG OR NICS ̲TARE ̲REMOTE?

   C.COM2 = C.TYPE               C.COM2 = NICS ̲TARE

   C.COM1 EQ C.COM2?

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

   C.PARAMS.USER ̲ACTION = GIVE ̲UP

   C.PARAMS.ERROR ̲INFO = NIL

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



   CREATE ̲CONNECTION

   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 ̲EXC)(C.REPLY)

   C.REPLY EQ OK? - C.STATE = CONNECTED

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

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

   C.STATE = DISCONNECTED

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


   END PROCEDURE


   PROCEDURE CONNECT ̲CHANNEL ̲P

   BEGIN

     CREATE ̲CONNECTION

     C.KEY ̲BUF.KEY = C.CI ̲NO

     SEARCH ̲ENTRY(CIRCUIT ̲TABLE, C.KEY ̲BUF,ALL, C.SEND
     ̲BUF)
                     (C.CIRCUIT ̲PROFILE)

     C.ACCESS ̲PROFILE = C.CMD ̲ACCESS ̲PROFILE LOG OR
                                 C.CIRCUIT ̲PROFILE.CLASS
     SET ̲PROFILE(C.ACCESS ̲PROFILE,C.COMMAND ̲Q, C. ALT
     ̲Q)
                 (C.CC): ERROR ̲OK
     ERROR? -    ANALYZE ̲ERROR(C.CC,O)

     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 ̲EXC)(C.REPLY)

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

     C.REPLY EQ OK?

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

     C.STATE = 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 ̲CHANNEL ̲P

   BEGIN


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

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

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

     C.REPLY = OK

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


   END PROCEDURE


   PROCECURE CHANGE ̲CIRCUIT ̲PROFILE ̲P

   BEGIN


     C.KEY ̲BUF.KEY = C.INFORMATION

                     "C.INFORMATION contains reference
                     to circuit queue

     SEARCH ̲ENTRY(CIRCUIT ̲TABLE, C.KEY ̲BUF, ALL, C.SEND
     ̲BUF)
                     (C.CIRCUIT ̲PROFILE)

     C.CHANGE ̲Q.MAIN ̲QUEUE = CIO + LOG ̲CI ̲TO ̲LOCAL(C.INFORMATION)

     C.CHANGE ̲Q.SUB ̲QUEUE = O

     C.ACCESS ̲PROFILE = C.CIRCUIT ̲ACCESS ̲PROFILE LOG OR
                                        C.CIRCUIT.̲PROFILE.CLASS
     SET ̲PROFILE(C.ACCESS ̲PROFILE,C.CHANGE ̲Q,C.ALT ̲Q)

                 (C.CC): ERROR ̲OK

     ERROR? -    ANALYZE ̲ERROR (C.CC,O)

     C.REPLY = OK

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


   END PROCEDURE


   PROCEDURE I ̲CLOSE ̲CONNECTED ̲CHANNEL ̲P

   BEGIN


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

     C.REPLY EQ OK?

     C̲U̲T̲ ̲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̲ (STOP)

     C.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 ̲CHANNEL ̲P

   BEGIN


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


     C̲U̲T̲ ̲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̲ (STOP)

     SIGNAL ̲SEM(CFH ̲S)


   END PROCEDURE


   PROCEDURE F ̲CLOSE ̲DISCONNECTED ̲CHANNEL ̲P


   BEGIN


     SIGNAL ̲SEM(CFH ̲S)


   END PROCEDURE



   PROCEDURE LINE ̲ERROR ̲P

   BEGIN

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

     C̲U̲T̲ ̲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̲ (STOP)


   END PROCEDURE

   PROCEDURE NO ̲ACTION ̲P

   BEGIN

   END


   PROCEDURE ILLEGAL ̲ACTION ̲P

   BEGIN

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

     C.PARAMS.USER ̲ACATION = CONTINUE

     C.PARAMS.ERROR ̲COR = CEMCO ̲COR

     C.PARAMS.LOC = ILLEGAL ̲ACTION ̲P

     C.PARAMS:ERROR ̲INFO = C.INPUT

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


   END ̲PROCEDURE



4.2.7.5  C̲E̲M̲C̲O̲ ̲C̲O̲M̲M̲O̲N̲ ̲D̲A̲T̲A̲

   STATE ̲TYPE = (INITIAL, CONNECTED, DISCONNECTED)

   ACTION ̲TYPE = (CEMCO ̲INIT, CONNECT ̲CHANNEL,
                  DISCONNECT ̲CHANNEL, CHANGE ̲CIRCUIT ̲
                  PROFILE, I ̲CLOSE ̲CONNECTED ̲CHANNEL,
                  F ̲CLOSE ̲CONNECTED ̲CHANNEL,
                  F ̲CLOSE ̲DISCONNECTED ̲CHANNEL,
                  LINE ̲ERROR, NO ̲ACTION, ILLEGAL ̲ACTION)


   INPUT ̲TYPE =  (C.ACCEPT, C.NON ̲ACCEPT,
                  C.CHANGE ̲CIRCUIT ̲PROFILE,
                  C.SET ̲ACCESS ̲PROFILES, C.START ̲COR
                  C.CLOSE ̲INITIAL, C.CLOSE ̲FINAL,
                  C.LINE ̲ERROR, C.INVALID ̲INPUT)


   VAR   C.STATE:    STATE ̲TYPE
         C.INPUT:    INPUT ̲TYPE
         C.ACTION:   ACTION ̲TYPE
         C.CMD:      INTEGER
         C.SUPV ̲QEL ̲REF: QEL ̲REFERENCE
         C. INFORMATION: INTEGER
         C.COMMAND ̲Q: QUEUE ̲REFERENCE
         C.CIRCUIT ̲Q: QUEUE ̲REFERENCE
         C.ALT ̲Q: QUEUE ̲REFERENCE
         C.KEY ̲BUF: KEY ̲BUF ̲TYPE
         C.CHANNEL ̲PROFILE: CHANNEL ̲PROFILE ̲TYPE
         C.CIRCUIT ̲PROFILE: CIRCUIT ̲PROFILE ̲TYPE
         C.SUBPROCESS ̲NO: SUBPROCESS ̲INDEX
         C.ATTRIBUTES: SUBPROCESS ̲ATTRIBUTES
         C.ACCESS ̲PROFILE: ACCESS ̲PROFILE
         C.REPLY: BOOLEAN



4.2.7.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.7.6.1    C̲R̲E̲A̲T̲E̲ ̲C̲O̲N̲N̲E̲C̲T̲I̲O̲N̲



4.2.7.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.7.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.7.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
         C.LINE ̲TABLE: PORT ̲TABLE ̲TYPE
         LTUX ̲CON = ARRAY(1..MAX ̲LTUX) OF FDCB ̲INDEX
         LTU ̲CON = ARRAY(1..MAX ̲LTUS) OF FDCB ̲INDEX

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

     VAR
         C.KEY ̲BUF: KEY ̲BUF ̲TYPE
         C.CHANNEL ̲PROFILE: CHANNEL ̲PROFILE
         C.CNO: LOGICAL ̲CHANNEL ̲NUMBER ̲TYPE
         C.CONN = ARRAY(1..2) OF USER ̲CONNECTION ̲TYPE
         C.OFFER ̲ID = ARRAY(1..2) OF USER ̲CONNECTION ̲TYPE

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

     VAR C.LINE ̲REC: NEW ̲TMS ̲DEVICE (TMS)

         C.CFH ̲CONN: FDCB ̲INDEX
         C.CHAIN ̲STATUS: BOOLEAN
         C.LTUX ̲LINE ̲REC: LTUX ̲LINE ̲REC
         C.LTU ̲LINE ̲REC: LTU ̲LINE ̲REC
         C.ACCESS: ACCESS ̲TYPES
         C.PARAMS:COPSY ̲GARBLE ̲PARAMS



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

   PROCEDURE CREATE ̲CONNECTION


   BEGIN

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

     C.PARAMS.USER ̲ACTION = GIVE ̲UP

     C:PARAMS.ERROR ̲COR = CEMCO ̲COR

     C.PARAMS.LOC = CREATE ̲CONNECTION

     C.PARAMS.ERROR ̲INFO = NIL

     C.KEY ̲BUF.KEY = C.CHANNEL ̲PROFILE.PORT ̲ID

     C.LINE ̲TABLE = C.CHANNEL ̲PROFILE.PORT ̲ID.TABLE

     C.LINE ̲TABLE EQ LTUX ̲LINE ̲TABLE?

     SEARCH ̲ENTRY(LTU ̲LINE ̲TABLE, C.KEY ̲BUF,ALL,C.SEND
     ̲BUF)
                 (C.LTU ̲LINE ̲REC)

     C.CFH ̲CONN = LTU ̲CON(C.LTU ̲LINE ̲REC.LTU ̲NO)

     C.CHAIN ̲STATUS = C.LTU ̲LINE ̲REC.CHAIN ̲STATUS


         SEARCH ̲ENTRY(LTUX ̲LINE ̲TABLE, C.KEY ̲BUF,ALL,
         C.SEND ̲BUF)
                     (C.LTUX ̲LINE ̲REC)

         C.CFH ̲CONN = LTUX ̲CON(C.LTU ̲LINE ̲REC.LTUX ̲NO)

         C.CHAIN ̲STATUS = C.LTUX ̲LINE ̲REC.CHAIN ̲STATUS


     C.CHAIN ̲STATUS EQ FALSE? - COPSY ̲SEND ̲GARBLE(NIL,C.
                                              PARAMS)

     C.CFH ̲CONN EQ - 1?          COPSY ̲SEND ̲GARBLE(NIL,C.
                                              PARAMS)



   CASE C.CIRCUIT ̲PROFILE.TYPE OF

     NICS ̲TARE? - CREATE ̲NICS ̲TARE ̲SUBDEVICES(C.LTU ̲LINE
     ̲REC.TYPE.DEV,
                     C.CFH ̲CONN)(C.OFFER ̲ID(1), C.OFFER
                     ̲ID (2))



     SCARS ̲CCIS? - CREATE ̲SCARS ̲CCIS ̲SUBDEVICE(C.CFH ̲CONN)
                                 (C.OFFER ̲ID(1), C. OFFER
                                 ̲ID (2))


     TRC ̲PTOP? - CREATE ̲TRC ̲PTOP(C.LTUX ̲LINE ̲REC, C.CFH
     ̲CONN)
                                 (C.OFFER ̲ID(1), (C.OFFER
                                 ̲ID(2))


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



   END CASE



   END PROCEDURE


   PROCEDURE CREATE ̲NICS ̲TARE ̲SUBDEVICES(NICS ̲TARE ̲TYPE:
   LTU ̲LINE ̲DEV,CFH ̲CONN: USER ̲CONNECTION ̲TYPE)
                                 (OFFER ̲ID(1):USER ̲CONNECTION
                                 ̲TYPE,
                                 OFFER ̲ID(2):USER ̲CONNECTION
                                 ̲TYPE)

   BEGIN

   C.LINE ̲REC.PARAMS = NICS ̲TARE ̲PARAMS ̲D

   C.ACCESS ̲ACCESS = SUBP ̲TABLE(NICS ̲TARE ̲S).CHILD ̲TMS
   ̲ACCESS ̲RIGHTS

   C.PROCESS ̲NO = SUBP ̲PROCESS ̲TABLE(SUBPROCESS ̲NO)
   C.ACCESS.USER.USER ̲GROUP = C.PROCESS ̲NO
   C.ACCESS.SEQ ̲NBR = PROCESS ̲TABLE(PROCESS ̲NO).PROC ̲ID

   I = 0

   LOOP

   I = I + 1

   C. LINE ̲REC.SDA = I

   C. LINE ̲REC.U ̲SDID.PROFILE ̲TYPE = CHANNEL ̲P

   C. LINE ̲REC.V ̲SDID.LOGICAL ̲NO = C.CNO

   C.LINE ̲REC.PROTOCOL ̲ID = CASE NICS-TARE ̲TYPE OF

                            NICS ̲TARE ̲LOCAL? - NICS ̲TARE
                     ̲LOCAL ̲PROTOCOL

                           NICS ̲TARE ̲REMOTE?- NICS ̲TARE
                     ̲REMOTE ̲PROTOCOL

                            END CASE

   C.LINE ̲REC.SD ̲TYPE = TERMINAL

   C.LINE ̲REC.ACCESS ̲LEVEL = 0

   C.LINE ̲REC.SELECT ̲BY ̲TMS = FALSE


   CREATE ̲SUBDEVICE(CFH ̲CONN,C.LINE ̲REC, DEVICE ̲SE)

                 (C.CONN(I), C.CC): ERROR ̲OK

   ERROR? -  ANALYZE ̲ERROR(C.CC, O)

   OFFER(C.CONN(I), C.ACCESS)(OFFER ̲ID(I), C.CC): ERROR
   ̲OK

   ERROR? -  ANALYZE ̲ERROR(C.CC, O)

   I = 2?    EXIT 


   END LOOP


END PROCEDURE


   PROCEDURE CREATE ̲SCARS ̲CCIS ̲SUBDEVICE(
                 CHF ̲CONN:USER ̲CONNECTION ̲TYPE)
                 (OFFER ̲ID(1): USER ̲CONNECTION ̲TYPE,
                 OFFER ̲ID(2): USER ̲CONNECTION ̲TYPE)
   BEGIN

     C.LINE ̲REC.PARAMS = SCARS ̲CCIS ̲PARAMS ̲D

     C. LINE ̲REC.SDA = 1

     C. LINE ̲REC.U ̲SDID.PROFILE ̲TYPE = CHANNEL ̲P

     C. LINE ̲REC. LOGICAL ̲NO = C. CND

     C. LINE ̲REC. PROTOCOL ̲ID = SCARS ̲CCIS

     C. LINE ̲REC. SD ̲TYPE = TERMINAL

     C. LINE ̲REC. ACCESS ̲LEVEL = 0

     C. LINE ̲REC. SELECT ̲BY ̲TMS = FALSE

     CREATE ̲SUBDEVICE(CFH ̲CONN, C.LINE.REC, DEVICE ̲SE)
                 (C ̲CONN, C.CC): ERROR ̲OK

     ERROR?  ANALYZE ̲ERROR(C.CC, O)

     C.ACCESS.ACCESS = SUBP ̲TABLE(SCARS ̲CCIS ̲S).CHILD
     ̲TMS ̲ACCESS ̲RIGHTS

     C.PROCESS ̲NO = SUBP ̲PROCESS ̲TABLE(SUBPROCESS ̲NO)

     C.ACCESS.USER.USER ̲GROUP = C.PROCESS ̲NO

     C.ACCESS.SEQ ̲NBR = PROCESS ̲TABLE(PROCESS ̲NO).PROC
     ̲ID

     OFFER(C.CONN, C.ACCESS)(OFFER ̲ID(1), C.CC): ERROR
     ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC, O)

     OFFER ̲ID(2) = NIL


   END PROCEDURE 


   PROCEDURE CREATE ̲TRC ̲PTOP ̲SUBDEVICE(W ̲REC: LTUX ̲LINE
   ̲REC ̲TYPE,

                     CONN: USER ̲CONNECTION ̲TYPE)
                     (OFFER ̲ID(1): USER ̲CONNECTION ̲TYPE,
                     OFFER ̲ID(2): USER ̲CONNECTION ̲TYPE)

   BEGIN

     C.LINE ̲REC. SDA = (W ̲REC.NO-1) MODULE 4

     C.LINE ̲REC.U ̲SDID.PROFILE ̲TYPE = CHANNEL ̲P

     C.LINE ̲REC.U ̲SDID.LOGICAL ̲NO = C.CNO

     C.LINE ̲REC.SD ̲TYPE = TERMINAL

     C.LINE ̲REC.ACCESS ̲LEVEL = 0

     C.LINE ̲REC.SELECT ̲BY ̲TMS = FALSE

     C.LINE ̲REC.PARAMS = OTH ̲LTUX ̲PARAMS ̲D

     C.LINE ̲REC.PROTOCOL ̲ID = LTUX ̲OTH ̲PROTOCOL

     CREATE ̲SUBDEVICE(CONN, C.LINE ̲REC, DEVICE ̲SE)
                 (C.CONN, C.CC)ERROR ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC,0)

     C.ACCESS.ACCESS = SUBP ̲TABLE(TRC ̲PTOP ̲S).CHILD ̲TMS
     ̲ACCESS ̲RIGHTS

     C.PROCESS ̲NO = SUBP ̲PROCESS ̲TABLE(SUBPROCESS ̲NO)

     C.ACCESS.USER.USER ̲GROUP = C.PROCESS ̲NO

     C.ACCESS.SEQ ̲NBR = PROCESS ̲TABLE(PROCESS ̲NO).PROC
     ̲ID

     OFFER(C.CONN, C.ACCESS)(OFFER ̲ID ̲(1), C.CC): ERROR
     ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC,O)

     OFFER ̲ID(2) = NIL


END PROCEDURE


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



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

         R6  LINK

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

         None



4.2.7.6.2.3  D̲a̲t̲a̲

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

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

         TYPE CONN = ARRAY(1..2) OF USER ̲CONNECTION ̲TYPE

         VAR C.CONN: CONN

     VAR C.CIRCUIT ̲PROFILE: CIRCUIT ̲PROFILE

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

     VAR C.SECURITY ̲PROFILE: WORD


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

   PROCEDURE SET ̲DAMOS ̲LINE ̲PROFILE

   BEGIN

     C.SECURITY ̲PROFILE = C.CIRCUIT ̲PROFILE.CLASS LOG
     AND USE ̲2 ̲
                                                FIRST
                                 ̲BIT

     CHANGE ̲PROFILE(C.CONN(1), C.SECURITY ̲PROFILE)

                     (CC):ERROR ̲DONE

     ERROR? - ANALYZE ̲ERROR(C.CC, O)

     C.CIRCUIT ̲PROFILE.CIRCUIT NE NICS ̲TARE?

     CHANGE ̲PROFILE(C.CONN(2), C.SECURITY ̲PROFILE)

                     (CC): ERROR ̲DONE

     ERROR? - ANALYZE ̲ERROR(CC, O)


   END PROCEDURE


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



4.2.7.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.7.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(C.REPLY: BOOLEAN)

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

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

         R6  REPLY
         R6  LINK

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

         None






4.2.7.6.3.3  D̲a̲t̲a̲

         VAR     C.TIME: TIME ̲TYPE


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

         VAR     C.CNO: LOGICAL ̲CHANNEL ̲NO ̲TYPE


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

         VAR     C.CMD: INTEGER

         VAR     C.REPLY: REPLY ̲TYPE

         VAR     C.SUPV ̲QEL ̲REF: QEL ̲REFERENCE

         VAR     C.SEND ̲PARAMS: SEND ̲PARAMS ̲TYPE

         VAR     C.CC: INTEGER

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



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

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

   BEGIN

     C.SEND ̲PARAMS.INFORMATION ̲TYPE = TRUE

     C.SEND ̲PARAMS.CHECKP ̲STATUS = FALSE

     C.SEND ̲PARAMS.HEADER.MAINTYPE = ACK

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

     C.SEND ̲PARAMS.FLAGS = C.REPLY

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

     C.SEND ̲PARAMS.INFORMATION(3) = C.CNO

     READ ̲TIME(F ̲TIME ̲TYPE)(T.SEND ̲PARAMS.INFORMATION(1)CC):
     ERROR ̲OK

     ERROR? - ANALYZE ̲ERROR(CC,O)

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

     ERROR? - ANALYZE ̲ERROR(CC,O)

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

     ERROR? - ANALYZE ̲ERROR(CC,O)


     END PROCEDURE


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



4.2.7.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
         transport subprocess and changes the classification
         in the access profile of the subprocess to unclassified.



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

         R6 LINK

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

         None



4.2.7.6.4.3 D̲a̲t̲a̲

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

         TYPE    CONN = ARRAY (1..2) OF USER ̲CONNECTION ̲TYPE

         VAR C.CONN: CONN

         VAR C.SUBPROCESS ̲NO: SUBPROCESS ̲INDEX

         VAR C.CC: INTEGER

         VAR C.ATTRIBUTES: SUBPROCESS ̲ATTRIBUTES


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



   PROCEDURE CUT ̲CONNECTION


   BEGIN

     DISMANTLE(C.CONN(1))(C.CC): ERROR ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC,O)

     C.CONN(2)   EQ NIL?

     DISMANTLE(C.CONN(2))(C.CC): ERROR ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC,O)


   END PROCEDURE


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



4.2.7.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 transport
         subprocess. A reply from the subprocess is awaited,
         but is subject to timeout.



4.2.7.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(C.CMD: INTEGER)(C.REPLY: BOOLEAN)

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

         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̲

         R5 reply from the transport subprocess




4.2.7.6.5.3 D̲a̲t̲a̲

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

     VAR C.CMD: INTEGER

     VAR: C.REPLY: REPLY ̲TYPE

     VAR: C.CMD ̲Q: QUEUE ̲REFERENCE

     VAR: C.TIME: SECONDS

     VAR: C.WRK: ARRAY(1..NO) OF INTEGER

     VAR: C.ATT: QEL ̲ATTRIBUTES

     VAR: C.SUBQ: SUBQUEUE ̲INDEX

     VAR: C.CC: INTEGER

     VAR: C.SEND ̲PARAMS: SEND ̲PARAMS TYPE

     VAR: C.STATE: STATE ̲TYPE

     VAR: C.REPLY ̲Q: QUEUE ̲REFERENCE

     VAR: C.OFFER ̲ID = ARRAY(1..2) OF USER ̲CONNECTION
     TYPE

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



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

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

   BEGIN


     C.REPLY = EXECUTION ̲NOT ̲OK

     C.SEND ̲PARAMS.HEADER.INFORMATION ̲TYPE = TRUE

     C.SEND ̲PARAMS.CHECKP ̲STATUS = FALSE

     C.SEND ̲PARAMS.HEADER.MAINTYPE = SSC ̲COMMAND

     C.CMD NE (CLOSE ̲DOWN ̲INITIAL OR CLOSE ̲DOWN ̲FINAL)
     ?

     C.SEND ̲PARAMS.HEADER.SUBTYPE = CLOSE ̲DOWN

     C.CMD NE CLOSE ̲DOWN ̲INITIAL?

     C.SEND ̲PARAMS.HEADER.FLAGS = 0

                 C.SEND ̲PARAMS.HEADER.FLAGS = 1


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

     C.CMD NE START ̲EXC?

     C.SEND ̲PARAMS.HEADER ̲INF = C.OFFER ̲ID(1)

     C.SEND ̲PARAMS.INFORMATION(1) = C.OFFERE ̲ID(2)

     C.SEND ̲PARAMS.INFORMTION(2) = C.CNO


     SEND ̲REQUEST(C.SEND ̲PARAMS,NIL, C.COMMAND ̲Q, C.REPLY
     ̲Q)

                 (C.CC): ERROR ̲OK

     ERROR? - ANALYZE ̲ERROR(C.CC,O)


   C.TIME = 2


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

                                 (C.ATT, C.QEL, C.SUBQ,
                                 C.CC)

   C.CC EQ OK? - C.REPLY = OK

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

   C.STATE = DISCONNECTED

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

   C.PARAMS.USER ̲ACTION = CONTINUE

   C.PARAMS-ERROR ̲COR = CEMCO ̲COR

   C.PARAMS.LOC = SEND ̲PARAMS

   C.ERROR ̲INFO = EXC ̲RQ

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


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


   ERROR? -  ANALYZE ̲ERROR(C.CC,O)


   END PROCEDURE


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



4.2.7.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.7.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(C.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

         F̲a̲t̲a̲l̲ ̲E̲r̲r̲o̲r̲s̲

         None



4.2.7.6.6.3 D̲A̲T̲A̲

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

         VAR C.SEND ̲PARAMS :     SEND ̲PARAMS ̲TYPE
         VAR C.TNO : LOGICAL ̲CHANNEL ̲NO ̲TYPE (SSC COMMON)
         VAR C.REPORT ̲Q : QUEUE ̲REFERENCE (CEMCO COMMON)
         VAR.C.TEXT REF : !.. MAX ̲REPORT ̲TEXT ̲REF)
         VAR C.SIZE : INTEGER




4.2.7.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)
                   C.REPORT.TOC,CC) : ERROR ̲OK

         ERROR?-ANALYZE ̲ERROR ( CC,0)

   END

   C.REPORT-TEXT ̲REF = C.TEXT ̲REF

   C.REPORT.TD = C.CNO

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

         ERROR?  ANALYZE ̲ERROR (CC,0)

   END

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

         ERROR?  ANALYZE ̲ERROR (CC,0)

   END

     C.SEND ̲PARAMS.INFORMATION ̲TYPE = FALSE

     C.SEND ̲PARAMS ̲CHECKP ̲STATUS = FALSE

     C.SEND ̲PARAMS-HEADER ̲MAINTYPE = REPORT

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

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

                    (CC) : ERROR ̲OK

         ERROR?  ANALYZE ̲ERROR (CC,0)

   END

   END PROCEDURE





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



4.2.7.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
         channel subprocess when the chnnel is connected
         `by the supervisor.  When the channel is disconnected
         the access profile of the subprocess is set to
         no rights (all bits are zero).



4.2.7.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.7.6.7.3 D̲A̲T̲A̲

         C.ATTRIBUTES : SUBPROCESS ̲ATTRI@BUTES
         C.SUBPROCESS ̲NO : SUBPROCESS ̲INDEX
         C.CNO : LOGICAL ̲CHANNEL ̲NO ̲TYPE
         C.PARAMS : COPSY ̲GARBLE ̲PARAMS





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

   PROCEDURE SET ̲SUBP ̲ACCESS ̲PROFILE (CMD

   BEGIN

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

     C.PARAMS.USER ̲ACTION = GIVE ̲UP

     C.PARAMS.ERROR ̲COR = CEMCO ̲COR

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

     C.PARAMS.ERROR ̲INFO = NIL

     C.ATTRIBUTES:PROFILE = 0

     CMD EQ STOP?

     CMD NE START?   COPSY ̲SEND ̲GARBLE(NIL,C.PARAMS)

     CASE C.CIRCUIT ̲PROFILE.CIRCUIT OF

         TRC-PTOP?   C.SUBPROCESS ̲NO = FIRST ̲TRC ̲PTOP
                     ̲NO

         SCARS ̲CISS? C.SUBPROCESS ̲NO = FIRST ̲SCARS ̲CCISS
                     ̲NO

         NICS ̲TARE?  C.SUBPROCESS ̲NO = FIRST ̲NICS ̲TARE
                     ̲NO

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

     END ̲CASE

     C.SUBPROCESS ̲NO = C.SUBPROCESS ̲NO + C.CNO-1

     C.ATTRIBUTESS.PROFILE = C.INITA ̲ACCESS ̲PROFILE LOG
     OR
                             C.DEVICE ̲PROFILE.CLASS

     C.ATTRIBUTES.PROFILE ̲FLAG = TRUE

     CASE CHANGE ̲SUBPROCESS ̲ATTRIBUTES (C.SUBPROCESS ̲NO,
                    C.ATTRIBUTES)(CC):ERROR ̲OK

         ERROR?      ANALYZE ̲ERROR (CC,0)

     END CASE

   END ̲PROCEDURE