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

⟦681f195bf⟧ Wang Wps File

    Length: 51297 (0xc861)
    Types: Wang Wps File
    Notes: CPS/SDS/039               
    Names: »1553A «

Derivation

└─⟦7f5d2b450⟧ Bits:30006107 8" Wang WCS floppy, CR 0170A
    └─ ⟦this⟧ »1553A « 

WangText

…1f……00……00……00……00……15……0a……00……00……15……0b……15……0c……15……0f……15……00……15……01……15……07……14……0d……14……02……13……09……13……0a……13……0e……13……0f……13……00……13……01……13… …13……05……12……09……12……0a……12……0c……12……0d……12……0e……12……0f……12……05……12……06……11……0a……11……0b……11……0e……11……0f……11……86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/039

…02…841101…02……02…
USER VDU
DETAILED DESIGN SPECIFICATION…02…ISSUE 1…02…CAMPS











                      Fig. 4.1.1.4-2




4.1.2    S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

         In this section the software structure of VUP will
         be described. The allocation of functions onto processes
         and coroutines will be explained, based on the analysis
         performed in section 4.1.1.

         Figure 4.1.2-1 shows the mapping of functions onto
         processes and coroutines



4.1.2.1. V̲U̲S̲ ̲P̲r̲o̲c̲e̲s̲s̲

         The VDU USER PROCESS controls the interaction with
         the user VDU, under supervision of TEMCO (SSC software).
         It thus has the following responsibilities:

         -   TEMCO command execution
         -   Control and execution of user transactions
         -   User transaction accounting
         -   Maintaining the VDU Header queue status
         -   Monitoring of FLASH queues.




 


                       Fig. 4.1.2-1











               Fig. 4.1.2.1-1 VUS Structure




4.1.2.1.1    V̲U̲S̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲s̲

         The VDU USER PROCESS consists of four coroutines: 

         -   the VDU Control Coroutine
         -   the User Function Control Coroutine
         -   the VDU Dialogue Coroutine
         -   the Retrieve Coroutine.
         
         In figure 4.1.2.1-1 an overview of VUS is depicted.



4.1.2.1.1.1 V̲D̲U̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

         The VDU Control (VCO) Coroutine is the controlling
         coroutine, controlling the start / stop of the processing
         of all the other coroutines.

         VCO is responsible for the execution of commands received
         from TEMCO, e.g initialize, close down, restart, start/stop,
         for VDU Header queue status update and that no message
         is kept longer in a Flash precedence queue than allowed
         by the supervisor.

         During the analysis it was found that TEMCO Control
         Functions and Queue Status Maintenance functions were
         to be executed with higher priority than User Transaction
         Control Functions. Thus these two functions have been
         allocated their own coroutine named V̲DU C̲O̲NTROL COROUTINE
         (VCO).

         The VCO coroutine shall be asssigned the highest priority
         among the coroutines of VUS, meaning that whenever
         VCO and other VUS coroutines are ready to run, VCO
         shall be allowed to run first.



4.1.2.1.1.2 U̲s̲e̲r̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

         The User Function Control (UFCO) Coroutine performs
         the direct control of the VDU Dialogue Coroutine.


         UFCO performs the user transaction control, which consists
         of: 

         -   user transaction execution 
         -   user requested transaction interruption 
         -   user transaction accounting.

         The functions of UFCO and VDIA have been assigned separate
         coroutines to decrease the complexity of the software.
         When a user transaction is in progress, UFCO software
         shall only take care of transaction interruption while
         all formatting and I/O transfer initiation / awaiting
         is performed by VDIA. UFCO is assigned a higher priority
         than VDIA.



4.1.2.1.1.3 V̲D̲U̲ ̲D̲i̲a̲l̲o̲g̲u̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

         The VDU dialogue (VDIA) coroutine is responsible for
         the VDU format transformation of input and output and
         for validation of user input.



4.1.2.1.1.4 R̲e̲t̲r̲i̲e̲v̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲

         The Retrieve (RETR) Coroutine is responsible for reception
         and treatment of retrieval answers from SAR. 

         The functions of RETR have been assigned to a separate
         coroutine, due to the fact that the function may be
         performed even when the other coroutines have been
         stopped after user sign-off. Furthermore, the function
         of the RETR may be considered as low priority tasks,
         having in mind that during on-line retrieval all the
         other coroutines associated with user transaction processing
         (UFCO, VDIA) will await input from RETR, thereby allowing
         RETR to be processing. RETR is assigned the lowest
         priority within VUS.






4.1.2.1.2    U̲s̲e̲r̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲ ̲U̲S̲P̲R̲

         The USPR subpackage is a set of procedures, which is
         able to convert specific types of data from external
         (shown on the VDU) to internal (stored in CIF's or
         memory records) representation and vise versa.

         The USPR is divided into three different parts, namely:

         D̲i̲s̲p̲l̲a̲y̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         Converts from internal representation to a string which
         can be displayed in a field on the VDU. This kind of
         procedures works on single fields.

         S̲y̲n̲t̲a̲x̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         Validates the content of a single field on the VDU
         and converts it to the internal representative.

         S̲e̲m̲a̲n̲t̲i̲c̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲

         Validates that the contents of different fields in
         a format not interfere with each other. Each procedure
         validates a whole format.

         Because each of the Function COntrol (UFCO, MAFCO,
         SVCO) subpackages has its own formats, and because
         a procedure is connected to a specific field in a format,
         or a specific format the USPR subpackage is rather
         related to the FCO than to the VDIA subpackage.



4.1.2.2  U̲M̲A̲M̲ ̲P̲r̲o̲c̲e̲s̲s̲

         The UMAM process controls the access to the preparation
         database and maintains the Outgoing Message Status,
         the Release Status, the Delivery Status and the Service
         Message Status for each VDU and printer.

         In figure 4.1.2.1-2 an overview of the UMAM process
         is shown.

         The functions of UMAM have been allocated their own
         process for the following reasons:

         a)  To keep security access control as simple and tight
             as possible.

         b)  To minimize the damage caused by system malfunction.
             With reference to the analysis in 4.1.1.4.1 this
             means that the solution where the releaser process
             queues a request for removing or changing items
             is not chosen. Note that due to security, it is
             our aim that a user process should not be trusted,
             meaning that access rights possessed by an unassigned
             user process (no user has signed on) shall be kept
             at a minimum.

         c)  The close relationship between Preparation Database
             Access Control and Message / Comment Status Maintenance
             has caused both functions to be allocated to the
             same process.

         d)  The allocation of one process to Status Maintenance
             gives the designer the freedom to optimize disk-accesses
             and to utilize the fact that identical entries
             in different status types exist.

         e)  The centralization of status maintenance and PDB
             access control for all VDU processes in one process,
             increases the flexibility of the system.



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

         In the preceding subsections of section 4.1.2, the
         processes and coroutines of VUP have been isolated,
         and the functions to be performed by these software
         components identified.












F̲I̲G̲U̲R̲E̲ ̲4̲.̲1̲.̲2̲.̲1̲-̲2̲…86…1         …02…   …02…   …02…   …02…                                     
      
         The software structure for each component (i.e. coroutine)
         will be outlined in the following subsections. The
         description of the software structure will mainly be
         in the form of software structure charts.

         In figure 4.1.2.3-1 an overview of the VUP processes
         is shown.

4.1.2.3.1 V̲U̲S̲ ̲I̲N̲I̲T̲I̲A̲L̲I̲Z̲A̲T̲I̲O̲N̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This subpackage contains the software which initializes
         the coroutines and semaphores of the VUS subprocess.

         The software structure is shown in figure 4.1.2.3-2.



4.1.2.3.2    V̲C̲O̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This coroutine receives commands from TEMCO and starts/stops
         UFCO accordingly.

         Furthermore the periodic updating of the VDU-header
         is performed by VCO.

         The software structure of the VDU Control Coroutine
         (VCO) is outlined in the structure chart in fig. 4.1.2.3-3.






   Fig. 4.1.2.3-1 Software Structure Process Overview.







  Fig. 4.1.2.3-2 VUS INITIALIZATION - SOFTWARE STRUCTURE







    Fig. 4.1.2.3-3 VCO COROUTINE - SOFTWARE STRUCTURE




4.1.2.3.3    U̲F̲C̲O̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This coroutine controls input/output to and from the
         VDU and the communication with other packages.

         It accepts commands from VCO and control VDIA via commands
         and process completion reports from VDIA corresponding
         to the commands.

         It communicates with VCO by sending completion report
         corresponding to commands received by VCO.

         The control of the MMI is exercised via function key
         interrupts received from the VDU, via execution of
         commands entered from the VDU and via input / output
         commands sent to VDIA.

         Fig. 4.1.2.3-4 shows the software structure.






    Fig. 4.1.2.3-4 UFCO COROUTINE - SOFTWARE STRUCTURE


4.1.2.3.4    V̲D̲I̲A̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This coroutine transfers and converts data between
         the format area of the VDU and storage in CIF or memory.

         The function of VDIA is controlled by operation buffers
         send to the activation semaphore, as a response VDIA
         returns a completion report by a operation buffer send
         to the answer semaphore.

         It communicates with the VDU via the Format Handler
         of the IOC Package and accesses data in the I̲nternal
         M̲essage F̲ormat (IMF) via the Message Monitor of the
         CSF Package.

         The reading and writing of a format is controlled by
         Format Control Program (FCP) which is interpreted by
         VDIA.

         Fig. 4.1.2.3-5 shows the software structure.









   F̲I̲G̲U̲R̲E̲ ̲4̲.̲1̲.̲2̲.̲3̲-̲5̲ ̲V̲D̲I̲A̲ ̲C̲O̲R̲O̲U̲T̲I̲N̲E̲ ̲-̲ ̲S̲O̲F̲T̲W̲A̲R̲E̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲







4.1.2.3.5    RE̲T̲R̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This coroutine receives input from SAR via the Retrieve
         Queue and communicates with UFCO.

         This communication is done either by RETR sending Online
         Retrieval Results direct to UFCO or Off-line Retrieval
         Results indirectly via the Response Queue.

         The coroutine is implemented in one module.







    Fig. 4.1.2.3-6 RETR COROUTINE - SOFTWARE STRUCTURE





4.1.2.3.6    U̲M̲A̲M̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         This processs receives input from other packages in
         the Collect and Command Queues.

         Figure 4.1.2.3-7 shows the software structure.




          Fig. 4.1.2.3-7 UMAM Software Structure




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

         In this section, the data flow between the VUS processes
         and coroutines will be described together with the
         control logic used to synchronize their execution of
         the VUP functions allocated to them.



4.1.3.1  P̲r̲o̲c̲e̲s̲s̲ ̲D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲P̲r̲o̲c̲e̲s̲s̲ ̲S̲y̲n̲c̲h̲r̲o̲n̲i̲z̲a̲t̲i̲o̲n̲

         The data flow and process synchronization of the UMAM
         process and the VUS incarnations will be described
         for the UMAM process and one VUS process, as the flow
         and synchronization for all VUS incarnations are identical.
         

         In fig. 4.1.3.1-1 the data flow between UMAM and VUS
         is depicted. The flow is shown for the VUS process
         possessing full access rights to the CAMPS USER FUNCTIONS.
         However, the dataflow for a VUS process possessing
         access right to a subset of the CAMPS USER FUNCTIONS
         only (i.e. one or more of the subfunctions PREPARATION,
         RECEPTION or RELEASE) is indicated as well by means
         of the capital letters enclosed in parentheses, which
         denote the subfunction to which the flow is associated.

         VUS acts as the master(controlling) process and UMAM
         is the slave process, i.e. UMAM does not execute any
         function before requested by VUS, and while UMAM executes
         the requested function, VUS stops its own processing
         and awaits the result to be delivered by UMAM in its
         answer queue.






                     Figure 4.1.3.1-1




         The different incarnations of VUS do not communicate
         with each other in a way requiring synchronization
         of their operations. However, they do exchange information
         directly (i.e. messages for release and release notifications).

         In the following subsections, the data flow and control
         logic internal to UMAM and VUS, i.e. between their
         coroutines, are described. 



4.1.3.2  V̲U̲S̲ ̲I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲S̲y̲n̲c̲h̲r̲o̲n̲i̲z̲a̲t̲i̲o̲n̲

         The data flow internal to VUS is depicted in fig. 4.1.3.2-1.
         The command parameters listed with the arrows 3 and
         6 are identical, but those associated with arrow 3
         are unformatted while those associated with arrow 6
         are input via a format, refer section 4.1.1.3.4.

         In fig. 4.1.3.2-2, an overview of the VUS coroutines
         and the operation-semaphores (S1, S2, S3) used for
         synchronization is depicted.






      Fig. 4.1.3.2-1 Dataflow between VUS Coroutines




         L̲e̲g̲e̲n̲d̲ ̲f̲o̲r̲ ̲f̲i̲g̲.̲ ̲4̲.̲1̲.̲3̲.̲2̲-̲1̲ ̲o̲n̲ ̲P̲r̲e̲v̲i̲o̲u̲s̲ ̲P̲a̲g̲e̲

         1.  Commands from SSC (e.g. start, stop) and time events.

         2.  Timer initiated update of VDU header (queues, time).

         3.  Control information from VCO to UFCO.

         4.  Commands / parameters and function keys.

         5.  Transaction ID, classification, error messages.

         6.  Messages and system update requests.

         7.  Validated / unvalidated messages and system information.

         8.  Retrieved messages.

         9.  Off-line retrieval results are sent to the response
             queue.

         10. Retrieve finished signal to UFCO and on-line retrieval
             results.

         11. Answers to requests and retrieved messages.








  Fig. 4.1.3.2-2 VUS Coroutine Synchronization Overview




         VCO receives its input from S1. VCO is the coroutine
         which controls the activities of all the others through
         its control of UFCO. VCO starts and stops UFCO by executing
         a send operation on S2 with the proper command. When
         UFCO has executed a command sent by VCO, UFCO notifies
         VCO by performing a send operation on S1 with the relevant
         Command Completion code.

         UFCO receives its input from S2. UFCO controls the
         activities of VDIA through S3. The control logic is
         analogous to that described above for VCO control of
         UFCO.

         On the basis of the UFCO Software Structure (ref. section
         4.1.2.3.2) the control logic for UFCO can be constructed
         in the same way as done for VCO.

         VDIA receives its input from S3. As the main work load
         due to I/O transfers and validation of messages / comments
         of the VUS process is actually performed by VDIA, a
         way to interrupt VDIA function execution within a reasonable
         time has to be considered. This means that VDIA shall
         return to its waiting point frequently enough to fulfil
         the requirements for being controlable by UFCO.

         RETR receives input from the retrieve queue only, thus
         its control structure will be to await items to be
         inserted and process the occurred events.

         Further, two pure synchronization semaphores exist
         (not depicted):

         -   a split semaphore to ensure that VCO & UFCO do
             not perform I/O on the header split simultaneously

         -   a retrieval semaphore to ensure that UFCO - in
             some off-line situations - gets running before
             RETR.



4.1.3.3  U̲M̲A̲M̲ ̲I̲n̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲

         UMAM receives input in the Command and Collect queues,
         thus the control structure will be to await item to
         be inserted and process the occured events.



         In figure 4.1.3.3-1 an overview of the UMAM process
         is depicted.

         As UMAM is a process without coroutines, then no internal
         synchronization is required.



4.1.3.4  T̲r̲a̲n̲s̲a̲c̲t̲i̲o̲n̲ ̲E̲x̲a̲m̲p̲l̲e̲

         Below is given a typical example of a complete transaction,
         as seen from UFCO's point of view. The considered example
         is continued comment preparation (CTCP).

         The inital conditions are as follows:

         -   user-menu displayed at VDU
         -   UFCO waits at semaphore S2 in module UFCO ̲MAIN
         -   VDIA waits at semaphore S3.

         1.  Operator keys function-key F1 (command), causing..

         2.  UFCO leaves S2 and enters module FC ̲KEY ̲PROC, noting
             that a fc-key now is pending (i.e. return).

         3.  After exit from module FC ̲KEY ̲PROC, UFCO waits
             at S2.

         4.  Operator keys CTCP,1, followed by fc-key enter,
             causing ...

         5.  UFCO exits S2 and enters module FC ̲KEY ̲PROC. A
             fc-key was pending, meaning that module FC ̲KEY
             ̲PROC*VUS ̲CMD ̲PEND is entered.

             The latter validates the entered command - succesfully
             in this case - causing module FC ̲KEY ̲PROC*VUS ̲CMD
             ̲PEND*VUS ̲SEQUENCE to be entered.

             Table-entry (keys)=(format, code)=(CTCP, input
             ̲ok) is executed, i.e. request to UMAN is issued.
             When done ...

         6.  UFCO waits at S2, while UNAM searches the preparation-database.
             Eventually, the reply from UMAM arrives. This event
             causes ...



         7.  UFCO enters module ANQ ̲PROC. If reply is acceptable,
             module ANQ ̲PROC*VUS ̲SEQUENCE is entered and table-entry
             (CTCP, ANQ ̲CONT) is executed, i.e. a new CIF-version
             (named OUTPUT ̲CIF), of cif received from umam (named
             INPUT ̲CIF), is created.

             Initial log-report is generated.Transaction-number
             is drawn. Further, an output-data command is issued
             to VDIA. Note that next table-entry will have (format,
             code) = (G3, ?).

         8.  UFCO waits at S2 in UFCO ̲MAIN. When completion-code
             from arrives from VDIA ...

         9.  UFCO enters module VDIA ̲CC ̲PROC, i.e. enables vdu-keyboard
             and sets cursor in format-split.

         10. Header format of the comment is now displayed and
             operator may enter corrections. Both UFCO and VDIA
             waits at their main waiting-points (S2 and S3,
             respectively).

         11. Operator keys fc-key enter.

         12. UFCO enters module FC ̲KEY ̲PROC. As no fc-keys are
             pending, module FC ̲KEY ̲PROC*VUS ̲SEQUENCE is entered.
             Table-entry (G3, enter) is executed, i.e. an input-data
             command is issued to VDIA. Input-target is OUTPUT
             ̲CIF.

         13. UFCO waits at S2 for completion from VDIA. Assuming
             VDIA validates the input'd data as ok ...

         14. UFCO enters module VDIA ̲CC ̲PROC*VUS ̲SEQUENCE. Table-entry
             (G3, input ̲ok) is executed, i.e. the text of INPUT
             ̲CIF is copied to OUTPUT ̲CIF (new header, old text).

             OUTPUT ̲CIF is renamed to INPUT ̲CIF. A new view
             of OUTPUT ̲CIF (also named OUTPUT ̲CIF) is created.

             Status quo: INPUT ̲CIF (new header, old text) is
                         saved, OUTPUT ̲CIF (empty header, empty
                         text) is input-target.

             Finally and output-date command is issued to VDIA.
             Next table-entry will be (G3 ̲2, ?).



         15. UFCO waits at S2. When VDIA has displayed text
             (of INPUT ̲CIF) and replied...

         16. UFCO enters module VDIA ̲CC ̲PROC, enabling vdu-keyboard
             and setting cursor in format-split.

         17. Text is displayed. UFCO and VDIA waits at S2 and
             S3, respectively.

             Operator may alter text. Eventually fc-key enter
             is depressed, causing ...

         18. UFCO enters module FC ̲KEY ̲PROC*VUS ̲SEQUENCE. Table-entry
             (G3 ̲2, enter) is executed, i.e. and input-data
             command is issued to VDIA. 

             Provided that validation is ok, VDIA now inputs
             new-header (kept in memory-buffer) and new text
             (from vdu) to empty OUTPUT ̲CIF.

         19. UFCO waits at S2. When reply from vdia arrives
             ...

         20. UFCO enters VDIA ̲CC ̲PROC*VUS ̲SEQUENCE. Table-entry
             is (G3 ̲2, input ̲ok), i.e. OUTPUT ̲CIF is saved,
             INPUT ̲CIF dismantled. An output ̲format command
             is issued to VDIA. Next table-entry will be (G3
             ̲3, ?).

         21. UFCO waits at S2, when VDIA has output'd decision-format
             and signalled reply to S2...

         22. UFCO enters module VDIA ̲CC ̲PROC, enabling keyboard
             and setting cursor in format-split. UFCO waits
             at S2 until ...

         23. Operator enters decision defer then fc-key enter
             .

         24. UFCO enters module FC ̲KEY ̲PROC*VUS ̲SEUENCE. Table-entry
             (G3 ̲3, enter) leads to vdia ̲command input ̲data.

         25. UFCO waits at S2. When VDIA signals reply ...

         26. UFCO enters VDIA ̲CC ̲PROC*VUS ̲SEQUENCE. Table-entry
             (G3 ̲3, defer) is executed, i.e. final log-report
             is generated, OUTPUT ̲CIF is send to UMAN (for storage
             in preparation database) then dismantled. VDIA
             command is display ̲menu.

         27. UFCO waits at S2. Transaction is ended.







                     F̲I̲G̲U̲R̲E̲ ̲4̲.̲1̲.̲3̲.̲3̲-̲1̲


4.1.4    C̲o̲m̲m̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲

4.1.4.1  V̲U̲S̲ ̲C̲O̲M̲M̲O̲N̲ ̲D̲A̲T̲A̲

         a)  D̲A̲T̲A̲ ̲R̲E̲F̲E̲R̲E̲N̲C̲E̲S̲          Refer sourcelisting for
                                      prefixes used.

         b)  V̲U̲S̲ ̲C̲O̲M̲M̲O̲N̲ ̲T̲Y̲P̲E̲S̲         Refer sourcelistings.



         c)  V̲U̲S̲ ̲C̲O̲M̲M̲O̲N̲ ̲C̲O̲N̲S̲T̲A̲N̲T̲S̲
             Q̲U̲E̲U̲E̲ ̲N̲A̲M̲E̲S̲

             Refer source listings



         d)  V̲U̲S̲ ̲C̲O̲M̲M̲O̲N̲ ̲V̲A̲R̲I̲A̲B̲L̲E̲S̲

         Refer source listings




4.1.5    C̲o̲m̲m̲o̲n̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲



4.1.5.1  T̲E̲P̲ ̲Q̲U̲E̲U̲E̲ ̲E̲R̲R̲O̲R̲



4.1.5.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 purpose of this procedure is to report queue errors
         to the SSC. The referenced CIF will be set to NIL.



4.1.5.1.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

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

         a)  TEP ̲QUEUE ̲ERR(USER ̲ACTION: USER ̲ACTION ̲TYPE,
                             QEL:  QEL ̲REFERENCE)

         b)  TEP ̲QUEUE ̲ERR(R1, R3, R6)

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

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

         R1      USER ̲ACTION                       DEST
         R3      pointer to QEL                    DEST
         R6      LINK                              DEST

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

         None

         R0-R7                                     DEST


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

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

             Refer source listing for prefixes used.

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

             TEP ̲ERROR (m)               refer 4.1.4

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

             Refer source listing.



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

         This procedure reports queue errors to the SSC by calling
         the SEND ̲GARBLE-procedure. The QEL will be set to NIL.



4.1.5.2  T̲E̲P̲ ̲I̲N̲T̲E̲R̲N̲A̲L̲ ̲E̲R̲R̲O̲R̲



4.1.5.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 purpose of this procedure is to report internal
         errors to the SSC.



4.1.5.2.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

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

         a)  TEP ̲INT ̲ERR (USER ̲ACTION ̲ USER ̲ACTION ̲TYPE,
                          IDENTIFICATION: 4 INTEGERS)

         b)  TEP ̲INT ̲ERR (R1, R2, R3, R4, R5, R6)



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



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

         R1      USER ̲ACTION                  DEST
         R2      SUBPACKAGE ID                DEST
         R3      MODULE ID                    DEST
         R4      PROCEDURE ID                 DEST
         R5      Call ID                      DEST
         R6      LINK                         DEST

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

         None
         R0-R7                                DEST



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

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

             Refer source listing for prefixes used.

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

             TEP ̲ERROR (m)                   refer 4.1.4

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

             Refer source listing.



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

         This procedure reports internal errors to the SSC by
         calling the SEND ̲GARBLE-procedure.




4.1.5.3  T̲E̲P̲ ̲D̲I̲S̲M̲A̲N̲T̲L̲E̲



4.1.5.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 purpose of this procedure is to dismantle an object
         referenced by a QEL.

         If the object is of type view, it will be checkpointed
         and/or closed as specified.



4.1.5.3.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

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

         a)  TEP ̲DISMANTLE  (QEL:         QEL ̲REFERENCE
                            CP ̲STATUS:    BOOLEAN,
                            OBJECT:       OBJECT ̲TYPE,
                            CLOSE:        NO ̲YES)

         b)  TEP ̲DISMANTLE  (R2, R3, R4, R5, R6)

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

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

         R2 pointer to QEL                (Dest.)
         R3      CP ̲STATUS                (Dest.)
         R4      OBJECT                   (Dest.)
         R5      CLOSE                    (Dest.)
         R6      LINK                     (Dest.)

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

         None

         R0 - R7                          (Dest.)


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

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

             Refer source listing for prefixes used.

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

             None

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

             Refer source listing.



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

         Refer figure 4.1.5.3-1

         Note: This procedure is called from several coroutines
         and contains external waiting-points, hence it must
         be re-entrant.


 TEP ̲DISMANTLE

 QEL EQ NIL?

 CASE OBJECT OF OBJECT ̲TYPE

     SINGLE,
     TIMEOUT     DISMANTLE (QEL) (CC): OK

     BUFFER? CASE DISMANTLE ̲BUFFER (QEL) (CC):ERROR
             OK

                ERROR?       ANALYZE ̲ERROR (CC,O)

                OK ?

             END CASE

     VIEW?   CLOSE EQ TRUE?  CASE CLOSE ̲VIEW (QEL) (CC):
                             ERROR ̲OK

                                ERROR?       ANALYZE
                                             ̲ERROR (CC,1
                                                  ALREADY
                                             ̲CLOSED)

                                OK?

                             END CASE

             CP EQ FALSE? CASE DISMANTLE ̲VIEW(QEL) (CC):ERROR
             ̲OK

                             ERROR? ANALYZE ̲ERROR (CC,0)

                             OK?

                          END CASE

             CASE SAVE ̲VIEW (DISMANTLE,QEL) (CC,0):ERROR
             ̲OK

                ERROR?       ANALYZE ̲ERROR (CC,0)

                OK?

             END CASE

     OTHERWISE? T̲E̲P̲ ̲I̲N̲T̲E̲R̲N̲A̲L̲ ̲E̲R̲R̲O̲R̲ ̲(̲G̲I̲V̲E̲ ̲U̲P̲)̲ ̲(̲4̲.̲1̲.̲5̲.̲2̲)̲

 END CASE



                 Figure 4.1.5.3-1


4.1.5.4  S̲E̲T̲ ̲H̲E̲A̲D̲E̲R̲ ̲T̲X̲T̲



4.1.5.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 purpose of this procedure is to update the VDU
         ̲HEADER ̲AREA (Terminal txt part) with the HEADER ̲TXT
         which is specified by the caller. No I/O is performed.



4.1.5.4.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

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

         a)  SET ̲HEADER ̲TEXT (HEADER ̲TEXT: HEADER ̲TEXT ̲TYPE)

         b)  SET ̲HEADER ̲TEXT (R0, R6)

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

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

         R0  HEADER ̲TEXT         DEST
         R6  LINK                DEST

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

         None
         R0-R7                   DEST



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

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

             HEADER ̲TEXT ̲TYPE            refer 4.1.4

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

             VDU ̲HD ̲AREA (m)             refer 4.1.4

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

             None


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

         A text is setup in VDU ̲HD ̲AREA (terminal ̲text ̲field)
         in accordance with specified HEADER ̲TEXT ̲TYPE.



4.1.5.5  S̲E̲T̲ ̲H̲E̲A̲D̲E̲R̲ ̲C̲L̲A̲S̲S̲I̲F̲I̲C̲A̲T̲I̲O̲N̲



4.1.5.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 VDU ̲HEADER ̲AREA is updated with the required classification
         which can be either CURRENT ̲CLASS or MAX ̲CLASS. No
         I/O performed.



4.1.5.5.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲D̲e̲f̲i̲n̲i̲t̲i̲o̲n̲

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

         a)  SET ̲HEADER ̲CLASS (REQUIRED ̲CLASS:  REQ ̲CLASS ̲TYPE;
                               CURRENT ̲CLASS:  CLASSIFICATION
                     ̲TYPE)

         b)  SET ̲HEADER ̲CLASS (R0, R1, R6)

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

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

         R0          REQUIRED ̲CLASS         DEST
         R1          CURRENT ̲CLASS          DEST
         R6          LINK                   DEST

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

         None
         R0-R7                              DEST



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

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

             Refer sourcelisting for prefixes used.

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

             VDU ̲HD ̲AREA (m)            refer 4.1.4
             INIT ̲AREA                  refer 4.1.4



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

             None



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

         A clarification (in plain language) is setup in output
         buffer VDU ̲HD ̲AREA (classification-field).

         If MAX ̲CLASS is specified to classification will be
         fetched from INIT ̲AREA, otherwise the classification
         specified will be used.




4.1.5.6  V̲U̲P̲ ̲C̲O̲N̲V̲E̲R̲T̲I̲O̲N̲



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

         This module contains two auxilliary functions

         1)  INTEGER ̲TO ̲ASCII

             Converts integer to the corresponding ASCII-format.

         2)  ASCII ̲TO ̲INTEGER

             Converts an numeric ASCII-string to the corresponding
             integer value.



4.1.5.6.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲.̲

         a1) INT ̲TO ̲ASCII (2-CHAR ̲STRING)(5-CHAR ̲STRING)

         a2) ASCII ̲TO ̲INT (5-CHAR ̲STRING)(2-CHAR ̲STRING)

         b1) INT ̲TO ̲ASCII (R1, R2, R3, R4, R5, R6)

         b2) ASCII ̲TO ̲INT (R1, R2, R3, R4, R5, R6)

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

         Call registers

         1)  R1    pointer to input      (dest)
             R2    byte ̲offset, input 
                   (any value)           (dest)
             R4    pointer to output     (dest)
             R5    byte ̲offset, output
                   (any value)           (dest)
             R6    link

         2)  R1    pointer to input      (dest)
             R2    byte ̲offset, input
                   (any value            (dest)
             R4    pointer to output     (kept)
             R5    byte ̲offset, output
                   (0 or 1)              (dest)
             R6    link



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

         1)  R3    no of bytes outputted
             others destroyed

         2)  R3    no of bytes outputted (2)
             others except R4 destroyed.



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

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

             Refer source listing for prefixes used.

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

             None

         c)  Local Data

             Refer source listing.



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

         1)  INT ̲TO ̲ASCII

             The number is extracted from the source-array and
             converted to an internal variable. The needed numbers
             of characters (1 or up to 5) are these moved to
             the specified destination.

         2)  The characters, from last to first, are extracted
             converted to digits and summed according to weight.
             If non-numeric characters are encounted or the
             number exceeds 65535 (unsigned), an internal error
             is reported.

         3)  Common feautures:

             The caller should have SWELLS layout of byte-arrays
             in mind. Both in- & output-pointers are superposed
             byte-array with minimum index null.





4.1.5.7  S̲e̲m̲a̲p̲h̲o̲r̲e̲-̲O̲p̲e̲r̲a̲t̲i̲o̲n̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲



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

         This module manages a pool of semaphore operation.
         Two functions are implemented:

         1)  FETCH ̲SEMAPHORE ̲OERATION

             A coroutine-operation is fetched from free set.
             Sender ̲id is inserted into returned operation.

         2)  FREE ̲SEMAPHORE ̲OPERATION

             A previously fetched coroutine-operation is returned
             to the free set of the pool.



4.1.5.7.2    I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲.̲

         a1) FETCH ̲SEMOP (SENDER ̲ID: TEP ̲SENDER ̲ID)
                         (OPERATION:TEP ̲COROUTINE ̲OP)

         a2) FREE ̲SEMOP (OPERATION: TEP ̲COROUTINE ̲OP)

         b1) FETCH ̲SEMOP (SENDER ̲ID, R5, R6)

         b2) FREE ̲SEMOP (R5, R6)

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

         Call registers

         1)  R6  link
         2)  R5  pointer to operation         (kept)
             R6  link

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

         1)  R5  pointer to operation
             others destroyed

         2)  all except R5 destroyed.



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

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

             Refer source listing for prefixes used.

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

             SEMOP   refer 4.1.4

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

             SEMOP ̲STATE: ARRAY (SEMOP ̲RANGE) of (FREE, OCCUPIED)
                          The array is initial FREE.



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

         1)  FETCH ̲SEMOP

             The state-description of the operation-pool is
             scanned. If an FREE operation is found, the state
             is changed to OCCUPIED and a pointer to the operation
             is returned. If a FREE operation could not be found
             an internal error is reported.

         2)  FREE ̲SEMOP

             The pool of operation and the state description
             is scanned. If the specified operation is in pool
             and marked as OCCUPIED, the state is changed to
             FREE. Otherwise an internal error is reported.
             


4.1.6    G̲l̲o̲b̲a̲l̲ ̲D̲a̲t̲a̲

         Global data used by VUP are defined in CPS/DBD/OO1



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



4.1.7.1  E̲x̲t̲e̲r̲n̲a̲l̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         User Procedures ref. doc. no. CPS/230/ICD/0001.

         All VUP subpackages interfaces, this document.



4.1.7.2  P̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲



4.1.7.2.1    T̲r̲a̲f̲f̲i̲c̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲(̲T̲H̲P̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutine
         UFCO.

         For details refer CPS/ICD/009.



4.1.7.2.2    D̲i̲s̲t̲r̲i̲b̲u̲t̲i̲o̲n̲ ̲(̲M̲D̲P̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutine
         UFCO.

         For details refer CPS/ICD/009.




4.1.7.2.3    S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲ ̲(̲S̲A̲R̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutines
         UFCO (requests queued to SAR) and RETR (reception of
         SAR responses).

         For details refer CPS/ICD/009.



4.1.7.2.4    L̲o̲g̲ ̲a̲n̲d̲ ̲A̲c̲c̲o̲u̲n̲t̲a̲b̲i̲l̲i̲t̲y̲ ̲(̲L̲O̲G̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutine
         UFCO. 

         For details refer CPS/ICD/009.



4.1.7.2.5    S̲t̲a̲t̲i̲s̲t̲i̲c̲s̲ ̲(̲S̲T̲P̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutine
         UFCO. 

         For details refer CPS/ICD/009.



4.1.7.2.6    S̲S̲C̲ ̲S̲o̲f̲t̲w̲a̲r̲e̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutines
         VCO (start / stop function ) and UFCO (security interrogation
         request).

         For details refer CPS/ICD/009.



4.1.7.2.7    T̲a̲b̲l̲e̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲ ̲P̲a̲c̲k̲a̲g̲e̲ ̲(̲T̲M̲P̲)̲ ̲I̲/̲F̲

         This interface is implemented by the VUS coroutines
         UFCO and VDIA.

         For details refer CPS/ICD/009.


4.1.7.3  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲



4.1.7.3.1    P̲r̲o̲c̲e̲s̲s̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         These are the interfaces between UMAM and VUS:


         F̲r̲o̲m̲ ̲V̲U̲S̲ ̲t̲o̲ ̲U̲M̲A̲M̲:

         1.  Status Requests
         2.  Edit Requests
         3.  Delete Requests
         4.  Access State Changes
         5.  VDU-PAGE Retrieval
         6.  Status Records
         7.  Storage of VDU-PAGES
         8.  Messages retrieved for append


         F̲r̲o̲m̲ ̲U̲M̲A̲M̲ ̲t̲o̲ ̲V̲U̲S̲:

         1.  Access Key to CIF (QEL ref)
         2.  Append Notification
         3.  Message Release Status
         4.  Outgoing Message Status
         5.  Delivery Status.



4.1.7.3.2    C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲


         1̲.̲ ̲F̲r̲o̲m̲ ̲V̲C̲O̲ ̲t̲o̲ ̲U̲F̲C̲O̲

         1.  Start UFCO Command
         2.  Stop UFCO Command
         3.  Close UFCO Command
         4.  Block UFCO Command


         2̲.̲ ̲F̲r̲o̲m̲ ̲U̲F̲C̲O̲ ̲t̲o̲ ̲V̲C̲O̲

         1.  Start UFCO CC                                        2. Stop
                                                                     UFCO
                                                                     CC
                                                                     
         3.  Close UDCO CC
         4.  Block-UFCO ̲CC


         3̲.̲ ̲F̲r̲o̲m̲ ̲U̲F̲C̲O̲ ̲t̲o̲ ̲V̲D̲I̲A̲

         1.  Display Format CMD
         2.  Input CMD
         3.  Output CMD
         4.  Insert Lines/Group CMD
         5.  Delete Lines/Group CMD
         6.  Clear VDU CMD
         7.  Close Down CMD.
         8.  Start VDIA CMD
         9.  Append CMD
         10. COPY ̲CIF CMD
         11. Suspend
         12. Cancel


         4̲.̲ ̲F̲r̲o̲m̲ ̲V̲D̲I̲A̲ ̲t̲o̲ ̲U̲F̲C̲O̲

         All CMD's mentioned above (UFCO to VDIA) is acknowledged.


         5̲.̲ ̲F̲r̲o̲m̲ ̲R̲E̲T̲R̲ ̲t̲o̲ ̲U̲F̲C̲O̲

         1. SAR on-line retrieval notification
         2. SAR off-line retrieval notification
         3. On-line retrieval result
         4. On-line append result
         5. On-line retrieval error
         6. Queue error





4.2      S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲



4.2.1    V̲D̲U̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲(̲V̲C̲O̲)̲

         This subpackage is the controlling subpackage within
         the package. The control is exercised by issue of commands
         and reception of responses.



4.2.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 subpackage contains the following functions:

         -   Initialization
         -   TEMCO Command Processing
         -   Flash Item Control
         -   Timer Event Processing
         -   VDU Header Control
         -   UFCO Control
         -   Error Reporting

         Figure 4.2.1.1-1 presents the functional breakdown.








                     F̲I̲G̲U̲R̲E̲ ̲4̲.̲2̲.̲1̲.̲1̲-̲1̲




4.2.1.1.1    I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲ ̲(̲1̲.̲0̲)̲

         a)  Initialize VUS Data (1.1)
             Performs initialization of data for VUS and VCO.
             Handler for FORMAT- and FCP-file are looked up.

         b)  Initialize splits and FORMAT-handler (1.2)
             Performs initialization for the format-handler
             and defines the VDU-splits.



4.2.1.1.2    T̲E̲M̲C̲O̲ ̲C̲o̲m̲m̲a̲n̲d̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲(̲2̲.̲0̲)̲

         a)  Process START USER CMD (2.1)
             This command is received after a successful SIGN
             ON procedure has taken place and VCO takes action
             and starts UFCO.

         b)  Process STOP USER CMD (2.2)
             This command is received after SIGN OFF and VCO
             takes action and stops UFCO.

         c)  Process BLOCK TERMINAL CMD (2.3)
             This command is received when the terminal has
             been blocked (by supervisor or as a result of a
             failed SIGN ON procedure or security interrogation)
             and VCO informs UFCO.

         d)  Process CLOSE DOWN CMD (2.4)
             This command informs VUS that a system close down
             procedure is to take place and VCO informs UFCO.

         e)  Send Response to TEMCO (2.5)
             For each TEMCO command a corresponding command
             to UFCO exists and to each UFCO command a corresponding
             completion response exists. When VCO has received
             the expected completion response from UFCO an acknowledge
             to the TEMCO command is sent to TEMCO.





4.2.1.1.3    F̲l̲a̲s̲h̲ ̲I̲t̲e̲m̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲(̲3̲.̲0̲)̲

         a)  Interpret flash notification (3.1)
             Analyses the flash notification to determine the
             precedence (superflash or flash) and which queue
             the flash item is in (Release - or Receive queue).

         b)  Request/Cancel Timeout (3.2)
             Calls upon the timer monitor functions.

         c)  Search Flash Queues (3.3)
             Searches for flash items in the flashqueues.

         d)  Send Flash Items to MDCO (3.4)
             Sends old flash items to MDCO.



4.2.1.1.4    T̲i̲m̲e̲r̲s̲ ̲E̲v̲e̲n̲t̲ ̲P̲r̲o̲c̲e̲s̲s̲i̲n̲g̲ ̲(̲4̲.̲0̲)̲

         a)  Interpret Timeout (4.1)
             Analyses timeout to determine whether it is a flash
             timeout request or a periodic timeout.

         b)  Request Timeout (4.2)
             Requests a flash timeout.



4.2.1.1.5    V̲D̲U̲ ̲H̲e̲a̲d̲e̲r̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲(̲5̲.̲0̲)̲

         a)  Update Date/Time Field (5.1)
             Maintains the Date/Time Field in the VDU-header
             when a periodic timeout occurs.

         b)  Update Q-Status Fields (5.2)
             Maintains the queue length fields in the VDU-header.

         c)  Display VDU-Header (5.3)
             Updates the VDU-header display.



4.2.1.1.6    U̲F̲C̲O̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲(̲6̲.̲0̲)̲

         a)  Send CMD to UFCO (6.1)
             Controls UFCO by sending commands.



         b)  Process Command Completion from UFCO (6.2)
             Interprets and reacts upon acknowledge from UFCO.

         c)  Process User Mode Change (6.3)
             Monitors information from UFCO about current user
             mode (i.e. release, preparation, reception) has
             changed.

         d)  Process Precedence Change (6.4)
             Monitors information from UFCO about current precedence.
             



4.2.1.1.7    E̲r̲r̲o̲r̲ ̲R̲e̲p̲o̲r̲t̲i̲n̲g̲ ̲(̲7̲.̲0̲)̲

         a)  Queue Error Reporting (7.1)
             Reports to SSC that an unexpected Queue element
             has been received.

         b)  Internal Error Handling (7.2)
             Reports to SSC that an unexpected response has
             been received from UFCO or from monitor procedures
             called.



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

         The software structure is shown on figure 4.2.1.2-1.
         VCO consists of one coroutine (refer section 4.2.1.3
         for details regarding modules.








                     F̲I̲G̲U̲R̲E̲ ̲4̲.̲2̲.̲1̲.̲2̲-̲1̲



4.2.1.3  D̲a̲t̲a̲f̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲ ̲w̲i̲t̲h̲i̲n̲ ̲V̲C̲O̲

         An overview of the dataflow through VCO is shown on
         diagrams 4.2.1.3-1 to 4.








           F̲I̲G̲U̲R̲E̲ ̲4̲.̲2̲.̲1̲.̲3̲-̲1̲ ̲-̲ ̲F̲I̲G̲U̲R̲E̲ ̲4̲.̲2̲.̲1̲.̲3̲-̲4



4.2.1.4  V̲C̲O̲ ̲M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲

         M̲o̲d̲u̲l̲e̲s̲

         VCO ̲CONTR         Initialization Main Loop

         VCO ̲VDU           Update Header Display other VDU Access

         VCO ̲CMDS          Execution of Commands from SSC

         VCO ̲FLASH         Handling of Flash Item

         VCO ̲COM           Service Subroutine for Queue Scannity

         VCO ̲DATA          Data for VCO Subpackage

         VCO ̲PREFIX        Type Definitions



4.2.1..4.1   V̲C̲O̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



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

         Entry Point for VCO. Performs the following Initialization:

         -   Find FORMATS Directory
         -   Find FDCB for FCP File
         -   Set FF ̲HANDLE.FCP ̲FDCB
         -   Call VCO ̲INIT ̲FH (in VCO ̲VDU)

         Afterwards the VCO Main Loop is entered.

         The Main Loop receives SSC Commands or FCO Operations
         by use of procedure NEXT ̲VCO ̲OPERATION.



4.2.1.4.1.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲

         Export Procedure V̲C̲O̲ ̲C̲O̲N̲T̲R̲O̲L̲

         (R5  -  -   NOT USED
          R6) -  -   NOT USED





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

         Procedure N̲E̲X̲T̲ ̲V̲C̲O̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲

         (R0       -   R  result from RECEIVE ̲FIRST ̲QEL
          R1       -   R  MAINTYPE
          R2       -   R  SUBTYPE
          R3       -   R  FLAGS
          R4       -   R  PM ̲TIME.LEAST
          R5       -   R  PM ̲TIME.MOST
          R6)      C   K  LINK

         QEL       R   Reference to queue element received
         OBJECT    R   Objecttype for queue element received
         CHECK ̲STATUS  R  CHECK ̲STATUS for queue element received

         Receives next element from COMMAND queue and handles
         UFCO operations. The UFCO operations sent to semaphore
         VUS ̲S1 are handled without returning from the procedure.



4.2.1.4.2          V̲C̲O̲ ̲V̲D̲U̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



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

         Export procedure V̲C̲O̲ ̲I̲N̲I̲T̲ ̲F̲H̲

         (R4       C   K  FDCB Index for directory containing
                          FORMAT file
          R6)      C   K  LINK

         FORMAT ̲
         IFCB      -   R  Updated to found value
         HEADER ̲
         IFCB      -   R  Updated to found value
         FF ̲HANDLE -   R  FF ̲HANDLER.FORMAT ̲IFCB updated to
                          found value

         Initializes format handler by a call of FH ̲INIT ̲FORMAT
         and , for each VDU split, a call of FH ̲DEFINE ̲FORMAT
         ̲AREA.

         Export procedure V̲C̲O̲ ̲I̲N̲I̲T̲ ̲T̲E̲R̲M̲I̲N̲A̲L̲

         (R5      C    K  % USER ̲START ̲ID
          R6)     C    K  LINK



         Initializes both VDU splits by calls of FH ̲INIT ̲TERMINAL

         Export Procedure V̲C̲O̲ ̲S̲T̲A̲R̲T̲ ̲V̲D̲U̲

         (R6)      C   K  LINK
         VDU ̲STATE -   R  VDU ̲READY if no FH ̲ERRORS,else VDU
                          ̲FAIL
         INVERT ̲
         MASK      -   r  Set to 0000

         Gets and outputs the header split format by calls of
         FH ̲GET ̲FORMAT and FH ̲OUTPUT ̲FORMAT.

         Writes terminal text and classification fields with
         blank and highest classification.

         Gets system time and counter and writes them on the
         VDU.

         Export procedure V̲C̲O̲ ̲S̲T̲O̲P̲ ̲V̲D̲U̲

         (R6)      C   K  LINK
         VDU ̲STATE -   R  Set to VDU ̲REMOVED

         Deactivates the VDU by calling FH ̲REMOVED ̲TERMINAL
         for both VDU splits. Sets VDU ̲STATE to VDU ̲REMVED.

         Export procedure V̲C̲O̲ ̲U̲P̲D̲A̲T̲E̲ ̲V̲D̲U̲ ̲H̲D̲

         (R6)     C    K  LINK
         VDU ̲
         STATE    C    R  Set to VDU ̲FAIL if FH ̲ERROR

         Computes values of system  time and VCO ̲COUNTERS: If
         VDU ̲READY the fields with changed value are output
         to the VDU. In case of FH ̲ERROR the variable VDU ̲STATE
         is set to VDU ̲FAIL.

         Displays RELS or REW counter in inverse video of flash.
         Item are in the corresponding queue.

         Export procedure V̲C̲O̲ ̲B̲E̲E̲P̲

         (R6)     C    K  LINK
         VDU ̲
         STATE    C    R  Set to VDU ̲ERROR if FH ̲ERROR

         Rings the BELL on the VDU if VDL ̲STATE is VDU ̲READY.
         VDU ̲STATE is set to VDU ̲ERROR by FH ̲ERROR.





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

         Procedure U̲P̲D̲A̲T̲E̲ ̲C̲O̲U̲N̲T̲E̲R̲S̲

         (R0      -    R  CHANGED MASK
          R6)     C    K  LINK

         COUNTERS C    R  UPDATED TO NEW VALUES

         Computes and stores values for TIME and COUNTERS. If
         time or a counter value has changed, the corresponding
         bit is set in CHANGED MASK.

         Procedure D̲I̲S̲P̲L̲A̲Y̲ ̲C̲O̲U̲N̲T̲E̲R̲S̲

         (R0      C    K  DIAPLAY MASK
          R6)     C    K  LINK
         VDU ̲
         STATE    C    R  Set to VDU ̲FAIL if FH ̲ERROR
         INVERT ̲
         MASK     C    R  Set as fileds are displayed

         If VDU ̲STATE = VDU ̲READY then REVERSE/NORMAL VIDEO
         for RELEASE and DISPLAY counters are updated according
         to the values of the FLASH priority counters for the
         queues. The INVERT MASK is given the present state
         of reverse/normal for the fields.

         Afterwards the fields specified in DISPLAY MASK are
         output to the VDU. In case of FH ̲ERROR the variable
         VDU ̲STATE is set to VDU ̲FAIL.

         Procedure G̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲

         (R3      C    K  Header field no. (0, 1, ...)
          R5      C    K  % Memory area to receive field list
          R6      C    K  LINK
          R7)          R  Set = VCO ̲STACK.CUR ̲PTR

         Moves field list for specified header field to memory
         location %R5.





4.2.1.4.3         V̲C̲O̲ ̲C̲M̲D̲S̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲



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

         Export procedure V̲C̲O̲ ̲S̲T̲A̲R̲T̲

         (R6)     C    K  LINK

         VCO ̲CONTR ̲VAR.QEL    Used to find SSC command
          -. VCO ̲STATE        Updated to VCO ̲STARTED
          -. VDU ̲STATE        Updated by call of VCO ̲START ̲VDU
         USER ̲ACTIVE          Set to true

         start the user as follows:

             Calls USE ̲SSC ̲DATA with makes some initialization
             (see above)
             Sends answer to SSC
             Starts the VDU's by a call of VCO ̲START ̲VDU
             Empties ANSWER QUEUE (by call of EMPTY ̲ANSWER ̲QUEUE)
             Starts UFCO by a Start command to semaphore VUS
             ̲s2
             Sets VCO ̲STATE to VCO ̲started

         Export procedure V̲C̲O̲ ̲S̲T̲O̲P̲

         (R2      C    K  SSC command code (subtype from qel)
          R6)     C    K  LINK
         VCO ̲STATE        VCO ̲STOPPED
         VDU ̲STATE        Updated by VCO ̲STOP ̲VDU
         USER ̲ACTIVE      Set to false

         Cancels periodic timeout.
         Sends command to UFCO (depending of call R2).
         Remove terminals by call of VCO ̲STOP ̲VDU
         Sends reply to SSC

         If command = CLOSE an infinite wait-loop is entered
         - otherwise: Flash queues are emptied, and procedure
         returns.



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

         Procedure S̲S̲C̲ ̲R̲E̲P̲L̲Y̲

         (R6)     C    K  LINK
         VCO ̲CONTR ̲VAR.QEL used to identify request queue element

         Returns the command reply to SSC.



         Procedure U̲S̲E̲ ̲S̲S̲C̲ ̲D̲A̲T̲A̲

         (R6)     C    K  LINK

         VCO ̲CONTR ̲VAR.QEL used to find SSC command

         Reads the buffer from SSC command and uses the contents
         for:

                  Initialize INIT ̲AREA
                  Initialize Terminal ̲designator in ACCOUNT
                  Initialize Terminals by calling
                  VCO ̲INIT ̲TERMINALS:

         Procedure E̲M̲P̲T̲Y̲ ̲A̲N̲S̲W̲E̲R̲ ̲Q̲U̲E̲U̲E̲

         (R6)     C    K  LINK

         Takes care of all elements in answer queue as follows
         depending on maintype:

         INITIAL ̲MAINTYPE:

             QUEUE ̲ELEMENT is send to UMAN with maintype =
             TEP ̲INTERNAL and SUBTYPE = UNKNOWN ̲SATUS ̲CHANGE

         Other Maintype:

             QUEUE ̲ELEMENT is just dismantled (thrown away !!!)

         Procedure R̲E̲Q̲ ̲P̲E̲R̲I̲O̲D̲I̲C̲ ̲T̲I̲M̲E̲O̲U̲T̲

         (R6)     C    K  LINK

         Starts the periodic timer (which gives timeout at every
         change of minute).

         Procedure C̲A̲N̲C̲ ̲P̲E̲R̲I̲O̲D̲I̲C̲ ̲T̲I̲M̲E̲O̲U̲T̲

         (R6)     C    K  LINK

         Cancels the request for periodic timeouts.





4.2.1.4.4          V̲C̲O̲ ̲F̲L̲A̲S̲H̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲



4.2.1.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̲s̲

         Export procedure V̲C̲O̲ ̲F̲L̲A̲S̲H̲ ̲N̲O̲T̲I̲F̲

         (R2       C   K  SUBTYPE, e.g. code for priority
          R3       C   K  FLAGS, e.g code for queue
          R4       C   K  CURRENT ̲PM ̲TIME.LEAST
          R5       C   K  CURRENT ̲PM ̲TIME.MOST
          R6)      C   K  LINK

         CUR ̲PREC  C   K  Used to determine SEND ̲ACTION (in
                          call of HANDLE ̲FLASH ̲QUEUE);
         FLASH.
         STATE     C   R  Updated if a FLASH ̲TIMEOUT is requested
         VCO ̲STATE C   K  Used to determine SAEND ̲ACTION

         If received item is FOR ̲RELEASE a BEEP is made and
         VDU header is updated.

         Otherwise the priority SUB QUEUE specified is handled
         with ation depending on VCO ̲STATE:

             VCO ̲STOPPED: SEND ̲ALL
             VCO ̲STARTED: SEND ̲PROFILE

         If no elemets are removed a BEEP and VDU Header update
         is made. If elements remains in queue and if there
         is no outstanding FLASH timeout, a FLASH TIMEOUT REQUEST
         is made.

         Export procedure V̲C̲O̲ ̲F̲L̲A̲S̲H̲ ̲T̲I̲M̲E̲O̲U̲T̲

         (R4       C   K  Current PM ̲TIME.LEAST
          R5       C   K  Current PM ̲TIME.MOST
          R6)      C   K  LINK

         FLASH.
         STATE     C   R  Updated if precedence FLASH or if
                          FLASH TIMEOUT is requested
         VCO ̲STATE C   K
         CURRENT ̲
         PREC      C   K



         If VCO ̲STATE = VCO ̲STOPPED then nothing is done - otherwise:
         If current precedence is higher or equal to flash then
         an extra flash timeout (with period = sample interval)
         is requested. Otherwise the FLASH queues are emtied
         for OLD elements. If any elements remains a new FLASH
         timeout is requested - with period = MIN (LIFETIME,
         SAMPLE ̲INTERVAL).

         Export procedure V̲C̲O̲ ̲E̲M̲P̲T̲Y̲ ̲F̲L̲A̲S̲H̲ ̲C̲

         (R6)      C   K  LINK

         Sends all elements of precedence FLASH or SUPER ̲FLASH
         in RECEIVE QUEUE which are NOR FOR ̲COORDINATION to
         the MDCO.



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

         Procedure R̲E̲C̲ ̲F̲L̲A̲S̲H̲ ̲T̲I̲M̲E̲O̲U̲T̲

         (R3       C   K  Period in seconds
          R6)      C   K  LINK

         Requests a FLASH TIMEOUT to be returned after the number
         of SECONDS specified in call.

         Procedure G̲E̲T̲ ̲F̲Q̲T̲

         (R2       -   R  Flash queue timeout (in seconds)
          R6)      C   K  LINK

         Gets the actual value of FLASH QUEUE TIMEOUT by calling
         the TMP ̲REQUEST TMP ̲GET ̲SYSTEM ̲PARAM, FLASH ̲QUEUE ̲
         TIMEOUT.

         Procedure H̲A̲N̲D̲L̲E̲ ̲F̲L̲A̲S̲H̲ ̲Q̲U̲E̲U̲E̲

         (R0       C   K  SEND ̲ACTION (FLASH ̲SEND ̲TYPE)
          R1       C   K  Priority (FLASH or SUPER ̲FLASH)
          R2       C   K  Flash queue timeout in sec's (only
                          used by SEND ̲OLD)
          R3       -   R  Remaining lifetime in sec's for oldest
                          element (only SEND ̲OLD)
          R4       C      PM ̲TIME.LEAST (only SEND ̲OLD)
                       R  No. of elements send to MDCO


          R5       C      PM ̲TIME.MOST (only SEND ̲OLD)
                       R  No. of elements left (=updated FLASH
                          ̲
                          CNT value)
          R6)      C   K  LINK
         FLASH ̲
         CNT(R1)          Updated to elements left at return
                          from procedure.

         Scars the PRIORITY subqueue of RECEIVE queue and handles
         elements found which are not for coordination as follows,
         depending on SEND ̲ACTION (R0).

         SEND ̲ALL:     All queue elements (not for coordination)
                       are send to MDCO.

         SEND ̲PROFILE: All queue elements (not for coordination)
                       which gives profile check error are send
                       to MDCO.

         SEND ̲OLD:     All queue elements (not for coordination)
                       which give profile check error or with
                       an age greater than Flash Queue Timeout
                       (R2) are send to MDCO. Remaining lifetime
                       for oldest left element (if any) is returned
                       in R3. Age is computed by use of PM ̲TIME
                       in queue element and call PM ̲TIME (considered
                       to be current time).



4.2.1.4.5          V̲C̲O̲ ̲C̲O̲M̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲



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

         Export procedure V̲C̲O̲ ̲S̲T̲A̲C̲K̲ ̲E̲R̲R̲O̲R̲

         Export procedure V̲C̲O̲ ̲Q̲ ̲P̲A̲R̲ ̲C̲O̲P̲Y̲

         (R4       C   K  % SEND ̲PARAMS
          R5       C   K  % QEL ̲ATTRIBUTES
          R6)      C   K  LINK

         Copies selected parts of QEL ̲ATTRIBUTES (%R5) to SEND
         ̲PARAMS (%R4) so that the SEND ̲PARAMS can afterwards
         be used for SEND ̲REPLY.



         Export procedure V̲C̲O̲ ̲Q̲ ̲I̲N̲I̲T̲

         (R0       -   R  VCO ̲Q ̲RESULT
          R1       C   K  MAIN QUEUE
          R2       C   R  SUBQUEUE
          R3       -   R  Qel ref, if qel received
          R4       C   K  % VCO ̲Q ̲DESCR
          R5       C   K  % QEL ̲ATTRIBUTES for receive
          R6)      C   K  LINK

         Initializes the VCO ̲Q ̲DESCR (%R4) for scan of QUEUE
         and receives the first QUEUE ̲ELEMENT (if any) in QEL
         ̲ATTRIBUTES (%R5).

         Export procedure V̲C̲O̲ ̲Q̲ ̲N̲E̲X̲T̲

         (R0       -   R  VCO ̲Q ̲RESULT
          R3       -   R  Qel ref (if qel received)
          R4       C   K  % VCO ̲Q ̲DESCR
          R5       C   K  % QEL ̲ATTRIBUTES for receive
          R6)      C   K  LINK

         Receives the next QUEUE ̲ELEMENT (if any) from SUB QUEUE.
         The present element is returned to QUEUE or dismantled
         (by a call of TEP ̲DISMANTLE). Dismantle is performed
         if the procedure VCO ̲Q ̲DISM has been called after the
         previous call of VCO ̲Q ̲NEXT (or VCO ̲Q ̲INIT).

         Export procedure V̲C̲O̲ ̲Q̲ ̲D̲I̲S̲M̲

         (R3       C   K  Check status: BOOLEAN
          R4       C   K  % VCO ̲Q ̲DESCR
          R6)      C   K  LINK

         Marks the current queue element to be dismantled or
         saved with dismantle = true by the next call of VCO
         ̲Q ̲NEXT or VCO ̲Q ̲TERM.

         Export procedure V̲C̲O̲ ̲Q̲ ̲T̲E̲R̲M̲

         (R4       C   K  % VCO ̲Q ̲DESCR
          R6)      C   K  LINK

         Procedure R̲E̲T̲U̲R̲N̲ ̲Q̲ ̲E̲L̲

         (R4       C   D  % VCO ̲Q ̲DESCR
          R6)      C   K  LINK
          R7           R  Set to VCO ̲STACK.CUR ̲PTR
         Other reg's   Destroyed !!!



         Returns or dismantles the queue element references
         by VCO ̲Q ̲DESCR according to VCO ̲Q ̲DESCR.STATE as follows:

         QU ̲EMPTY:     Nothing is done
         QU ̲RETURN:    Queue element is RETURN'ed to QUEUE
         QU ̲DISMANTLE: Queue is TEP ̲DISMANTLE's with CHECKPOINT
                       = FALSE
         QU ̲SAVE:      Queue is TEP ̲DISMANTLE'd with CHECKPOINT
                       = TRUE

         Afterwards STATE IN VCO ̲Q ̲DESCR is set to QU ̲EMPTY.



4.2.1.7  S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲



4.2.1.7.1          V̲C̲O̲ ̲U̲F̲C̲O̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         The following commands are sent from VCO to UFCO via
         operation semaphore VUS ̲S2:

         START ̲UFCO
         STOP ̲UFCO
         BLOCK ̲UFCO
         CLOSE ̲UFCO



4.2.1.7.2          U̲F̲C̲O̲ ̲V̲C̲O̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲

         Completion codes are sent from UFCO to VCO for the
         following commands:

         START ̲UFCO
         STOP ̲UFCO
         BLOCK ̲UFCO
         CLOSE ̲UFCO

         The following completion codes exist:

         OK ̲CC
         ERROR ̲CC
         SPLIT ̲FAILED ̲CC