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

⟦28e485413⟧ Wang Wps File

    Length: 81005 (0x13c6d)
    Types: Wang Wps File
    Notes: CPS/SDS/038               
    Names: »1883A «

Derivation

└─⟦d6c5ca2c3⟧ Bits:30006095 8" Wang WCS floppy, CR 0149A
    └─ ⟦this⟧ »1883A « 

WangText

…00……00……00……00……00… …02……00……00… 
…1a……05……19……0f……18……09……18……0c……18……01……18… …18……05……17……0c……17……01……17……07……16……08……16……0d……16……00……16……01……16……02……16……06……15……09……15……0c……15……01……15…
…14……08……14……0c……14……00……14… …14……06……13……0c……13……0e……13……0f……13… …13……06……12……0b……12……0e……12……00……12……02……12… …11……09……11……0d……11……01……11……06……10……0b……10……0d……10……02……0f……08……0f……0a……0f……0c……0f……0f……0f…
…0f……05……0e……86…1                                             …02…           …02…   …02…        

…02…CPS/SDS/038

…02…JHH/820514…02……02…
MSO VDU
DETAILED DESIGN SPECIFICATION…02……02…CAMPS









       4.2.3 Dialogue Subpackage ....................
                 
         4.2.3.1 Functional Specification ...........
             
           4.2.3.1.1 Output of Data .................
                         
           4.2.3.1.2 Input of Data ..................
                         
           4.2.3.1.3 Validation .....................
                         
           4.2.3.1.4 Display of Error Codes .........
                         

         4.2.3.2 Software Structure .................
                     
         4.2.3.3 Data Flow and Control Structure ....
                     
         4.2.3.5 SEDIA Module Specifications .........
             
           4.2.3.4.1 DIALOGUE CONTROL Specification .
                         
             4.2.3.4.1.1 Functional Specification ...
                 
             4.2.3.4.1.2 Module Interface ...........
                 
             4.2.3.4.1.3 Module Components ..........
                 
             4.2.3.4.1.4 Data Description ...........
                 
             4.2.3.4.1.5 Module Design ..............
                 

           4.2.3.4.2 VDU DATA OUTPUT Specification ..
                         
             4.2.3.4.2.1 Functional Specification ...
                 
             4.2.3.4.2.2 Module Interface ...........
                 
             4.2.3.4.2.3 Module Components ..........
                 
               4.2.3.4.2.3.1 READ CIF FIELDS ........
                   
               4.2.3.4.2.3.2 CREATE DISPLAY BUFFERS .
                   
               4.2.3.4.2.3.3 DISPLAY FIELDS .........
                   
               4.2.3.4.2.3.4 EXEC DISP PROC .........
                   
               4.2.3.4.2.3.5 READ SINGLE CIF FIELD ..
                   
               4.2.3.4.2.3.6 MARGIN DISPLAY .........
                   
               4.2.3.4.2.3.7 CREATE FIELD LIST
                             ELEMENT ................
                                 
             4.2.3.4.2.4 Data Description ...........
                 
             4.2.3.4.2.5 Module Design ..............
                 

           4.2.3.4.3 VDU DATA INPUT Specification ...
                         
             4.2.3.4.3.1 Functional Specification ...
                 
             4.2.3.4.3.2 Module Interface ...........
                 
             4.2.3.4.3.3 Module Components ..........
                 
               4.2.3.4.3.3.1 FIND FIRST FIELD .......
                   
               4.2.3.4.3.3.2 WRITE ADM ..............
                   

             4.2.3.4.3.4 Data Description ...........
                 
             4.2.3.4.3.5 Module Design ..............
                 

           4.2.3.4.4 VDU FORMAT OUTPUT ..............
                         
             4.2.3.4.4.1 Functional Specification ...
                 
             4.2.3.4.4.2 Module Interface ...........
                 
             4.2.3.4.4.3 Module Components ..........
                 


             4.2.3.4.4.4 Data Description ...........
                 
             4.2.3.4.4.5 Module Design ..............
                 

           4.2.3.4.5 SYNTAX VALIDATION ..............
                         
             4.2.3.4.5.1 Functional Specification ...
                 
             4.2.3.4.5.2 Module Interface ...........
                 
             4.2.3.4.5.3 Module Components ..........
                 
               4.2.3.4.5.3.1 EXEC VAL PROC ..........
                   

             4.2.3.4.5.4 Data Description ...........
                 
             4.2.3.4.5.5 Module Design ..............
                 

           4.2.3.4.6 SEMANTIC VALIDATION ............
                         
             4.2.3.4.6.1 Functional Specification ...
                 
             4.2.3.4.6.2 Module Interface ...........
                 
             4.2.3.4.6.3 Module Components ..........
                 
             4.2.3.4.6.4 Data Description ...........
                 
             4.2.3.4.6.5 Module Design ..............
                 

           4.2.3.4.7 DISPLAY ERROR CODES ............
                         
             4.2.3.4.7.1 Functional Specification ...
                 
             4.2.3.4.7.2 Module Interface ...........
                 
             4.2.3.4.7.3 Module Components ..........
                 
               4.2.3.4.7.3.1 DISP ERR CODE ..........
                   
               4.2.3.4.7.3.2 CHANGE ATTR ............
                   
             4.2.3.4.7.4 Data Description ...........
                 

           4.2.3.4.8 GA INPUT .......................
                         
             4.2.3.4.8.1 Functional Specification ...
                 
             4.2.3.4.8.2 Module Interface ...........
                 
             4.2.3.4.8.3 Module Components ..........
                 
               4.2.3.4.8.3.1 CALC NO OF FIELDS ......
                   
               4.2.3.4.8.3.2 GA VAL .................
                   

             4.2.3.4.8.4 Data Description ...........
                 
             4.2.3.4.8.5 Module Design ..............
                 

         4.2.3.5 Common Subpackage Data .............
                     
         4.2.3.6 Common Subpackage Procedures .......
                     
           4.2.3.6.1 STOP INPUT OUTPUT ..............
                         
             4.2.3.6.1.2 Interface Definition .......
                 
             4.2.3.6.1.3 Data Description ...........
                 
             4.2.3.6.1.4 Procedure Design ...........
                 

           4.2.3.6.2 CLEAN UP .......................
                         
             4.2.3.6.2.1 Functional Specification ...
                 
             4.2.3.6.2.2 Interface Definition .......
                 
             4.2.3.6.2.3 Data Description ...........
                 
             4.2.3.6.2.4 Procedure Design ...........
                 



           4.2.3.6.3 LINE INSERT ....................
                         
             4.2.3.6.3.1 Functional Specification ...
                 
             4.2.3.6.3.2 Interface Specification ....
                 
             4.2.3.6.3.3 Data Description ...........
                 
             4.2.3.6.3.4 Procedure Design ...........
                 

           4.2.3.6.4 LINE DELETE ....................
                         
             4.2.3.6.4.1 Functional Specification ...
                 
             4.2.3.6.4.2 Interface Specification ....
                 
             4.2.3.6.4.3 Data Description ...........
                 
             4.2.3.6.4.4 Procedure Design ...........
                 

           4.2.3.6.5 CLEAR ..........................
                         
             4.2.3.6.5.1 Functional Specification ...
                 
             4.2.3.6.5.2 Interface Definition .......
                 
             4.2.3.6.5.3 Data Description ...........
                 
             4.2.3.6.5.4 Procedure Design ...........
                 

           4.2.3.6.6 SET BUFFER STRUCTURE ...........
                         
             4.2.3.6.6.1 Functional Specification ...
                 
             4.2.3.6.6.2 Interface Definition .......
                 
             4.2.3.6.6.3 Data Description ...........
                 
             4.2.3.6.6.4 Procedure Design ...........
                 

           4.2.3.6.7 SET MMI VDU ADDRESSES ..........
                         
             4.2.3.6.7.1 Functional Specification ...
                 
             4.2.3.6.7.2 Interface Definition .......
                 
             4.2.3.6.7.3 Data Description ...........
                 
             4.2.3.6.7.4 Design Procedure ...........
                 

           4.2.3.6.8 SET IOC REC ADDRESSES ..........
                         
             4.2.3.6.8.1 Functional Specification ...
                 
             4.2.3.6.8.2 Interface Definition .......
                 
             4.2.3.6.8.3 Data Description ...........
                 
             4.2.3.6.8.4 Procedure Design ...........
                 

           4.2.3.6.9 SET FIELD LIST ADDRESSES .......
                         
             4.2.3.6.9.1 Functional Specification ...
                 
             4.2.3.6.9.2 Interface Definition .......
                 
             4.2.3.6.9.3 Data Description ...........
                 
             4.2.3.6.9.4 Procedure Design ...........
                 

           4.2.3.6.10 SET ̲MEMORY ̲ADDRESSES ..........
               
             4.2.3.6.10.1 Functional Specification ..
                 
             4.2.3.6.10.2 Interface Definition ......
                 
             4.2.3.6.10.3 Data Description ..........
                 
             4.2.3.6.10.4 Procedure Design ..........
                 



           4.2.3.6.11 SET ERROR LIST ADDRESSES ......
               
             4.2.3.6.11.1 Functional Specification ..
                 
             4.2.3.6.11.2 Interface Definition ......
                 
             4.2.3.6.11.3 Data Description ..........
                 
             4.2.3.6.11.4 Procedure Design ..........
                 

           4.2.3.6.12 WRITE CIF BUF .................
               
             4.2.3.6.12.1 Functional Specification ..
                 
             4.2.3.6.12.2 Interface Definition ......
                 
             4.2.3.6.12.3 Data Description ..........
                 
             4.2.3.6.12.4 Procedure Design ..........
                 


4.2.3    D̲i̲a̲l̲o̲g̲u̲e̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲



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

         This subpackage handles:

         -   output of data to VDU
         -   input of data from VDU
         -   validation of input data

         as shown on figure 4.2.3.1-1.

         The task is to transform data from the internal format
         to the format presented to the VDU user and vice versa.



4.2.3.1.1    O̲u̲t̲p̲u̲t̲ ̲o̲f̲ ̲D̲a̲t̲a̲

         On command the Dialogue Subpackage will select a format,
         transfer data from disk to memory, perform the necessary
         conversion and transfer data to the VDU by call to
         the Format Handler (IOC). The functions are shown on
         figure 4.2.3.1-2.



4.2.3.1.2    I̲n̲p̲u̲t̲ ̲o̲f̲ ̲D̲a̲t̲a̲

         On command the Dialogue Subpackage will transfer data
         from the VDU to memory, validate data and transfer
         data to disk (if valid). The functions are shown on
         figure 4.2.3.1-3).



4.2.3.1.3    V̲a̲l̲i̲d̲a̲t̲i̲o̲n̲

         Validation is Syntax Validation of each data item and
         Semantic Validation for the whole format.

         Messages and comments are transferred to disk and requests
         are transferred to common data area.

         The functions are shown on figures 4.2.3.1-4 to 4.2.3.1-6.


4.2.3.1.4    D̲i̲s̲p̲l̲a̲y̲ ̲o̲f̲ ̲E̲r̲r̲o̲r̲ ̲C̲o̲d̲e̲s̲

         When errors are found during validation error codes
         are output in the margin area for the line containing
         the field in error and the field in error is displayed
         in REVERSE VIDEO. If second or subsequent validation
         finds new errors the display of error codes is repeated
         and old error codes removed together with REVERSE VIDEO
         attributes. The functions are shown on figure 4.2.3.1-7.



4.2.3.1.5    E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲

         This is analysis of the error condition and sending
         error information to SSC. The functions are shown on
         figure 4.2.3.1-8.






              Figure 4.2.3.1-1 to 4.2.3.1-8



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

         The Dialogue Subpackage is a generalized table driven
         mechanism for transformation of data from any internal
         format to any screen format and vice versa.

         The table that contains the control information is
         the VUS ̲MMI ̲CONTROL ̲TABLE shown in figure 4.2.3.2-1.

         The MMI CONTROL TABLE contains the following fields:

         VDU ADDRESS:    Composed of:

         TYPE:           This field is a bit mask:

         1:  F̲(̲F̲i̲x̲e̲d̲)̲:̲   The line is not repeatable.

         2:  R̲(̲R̲e̲p̲e̲a̲t̲)̲:̲  The line is repeatable. (From VDU)
                          F ̲COUNT
                                                           
                          must be
                                                           
    = 1

         3:  A̲(̲A̲p̲p̲e̲n̲d̲)̲:̲  The line/field may be appended to 
                          FG ̲COUNT
                                                           
                          must be
                                                           
                          = 0

         4:  I̲(̲I̲n̲p̲u̲t̲)̲:̲   The line/field may be input (all fields
                         in a group must be of the same type)

         5:  O̲(̲O̲u̲t̲p̲u̲t̲)̲:̲  The line/field may be output (all fields
                         in a group must be of the same type).

         6:  X̲(̲E̲x̲c̲e̲p̲t̲)̲:̲  The line/field shall be output when
                         format is output.

         L̲I̲N̲E̲ ̲N̲O̲:̲

         This is the line number as defined on the screen format.

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

         This is the incarnation number as defined on the screen
         format. For non-repeatable lines the incarnation number
         equals 1. For repeatable lines the field contains either
         zero (in which case the actual number of incarnations
         are found via the ITEM COUNT in the MEMORY ADDRESS)
         or a number which is the initial number of repeats
         of the line.



         F̲I̲E̲L̲D̲ ̲N̲O̲:̲

         This is the field number as defined on the screen format.
         If the field is part of a field group the field number
         is the number of the field in the first occurrence
         of the group. If the field is repeated on the line,
         the field number is the number of the first occurrence
         of the field.

         F̲I̲E̲L̲D̲ ̲C̲O̲U̲N̲T̲:̲

         If the field is not part of a group this count is the
         number of occurrences of the field on the line. If
         the field is part of a group the count is the number
         of fields in the group.

         F̲I̲E̲L̲D̲ ̲G̲R̲O̲U̲P̲ ̲C̲O̲U̲N̲T̲:̲

         This is the number of field groups on the line.

         F̲I̲E̲L̲D̲ ̲S̲I̲Z̲E̲:̲

         This is the size (in characters) as defined on the
         screen format.

         M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲:̲

         F̲I̲E̲L̲D̲ ̲N̲O̲:̲

         If data are contained in a CIF this field contains
         the number of the CIF-Field in EMF, IMF or IIF. Otherwise
         the field contains zero.

         F̲I̲E̲L̲D̲ ̲S̲I̲Z̲E̲:̲

         This is the size (in bytes) of the field.

         F̲I̲E̲L̲D̲ ̲T̲Y̲P̲E̲:̲

         Fixed or variable.

         B̲A̲S̲E̲:̲

         If data are contained in a CIF this is the number of
         the CIF-field to where the POINTER to DATA ITEM is
         relative, otherwise the field contains zero.



         P̲O̲I̲N̲T̲E̲R̲ ̲T̲O̲ ̲D̲A̲T̲A̲ ̲I̲T̲E̲M̲:̲

         This is a pointer to the location where the start-address
         of the item is placed. The pointer is relative to BASE
         (unless BASE = 0 in which case it is absolute).

         B̲A̲S̲E̲:̲

         If data are contained in a CIF this is the number of
         the CIF-field to where the POINTER to ITEM COUNT is
         relative, otherwise the field contains zero.

         P̲O̲I̲N̲T̲E̲R̲ ̲T̲O̲ ̲I̲T̲E̲M̲ ̲C̲O̲U̲N̲T̲:̲

         This is a pointer to the location where the address
         of the item count is placed. The pointer is relative
         to BASE (unless BASE = 0 in which case it is absolute).

         D̲I̲S̲P̲L̲A̲Y̲ ̲M̲O̲D̲I̲F̲I̲C̲A̲T̲I̲O̲N̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲:̲

         This is the name of the procedure to be called when
         the data item shall be displayed. If the field contains
         zero no procedure is required to display the item.

         S̲Y̲N̲T̲A̲X̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲ ̲P̲R̲O̲C̲E̲D̲U̲R̲E̲:̲

         This is the name of the procedure to be called when
         the data item shall be validated. If the field contains
         zero no validation is required, (This requires that
         CIF- and IOC- buffers are shared).

         E̲R̲R̲ ̲N̲O̲:̲

         This is the error code to be used in case of validation
         error. The field contains zero if no validation error
         exists.

         *̲:̲

         If the POINTER TO DATA ITEM field or the POINTER TO
         ITEM COUNT field is updated during display/validation
         this is indicated with asterisk.

         An example of use of the VDU ̲MMI ̲CONTROL ̲TABLE is shown
         on figure 4.2.3.2-2. For the specified VDU FORMAT LINE
         the figure shows the contents of the VUS ̲MMI ̲CONTROL
         ̲TABLE and the FIELD LIST.






                  Figure 4.2.3.2-1 to -2



         The structure of the IMF, EMF, and IIF together with
         the structure of the VUS ̲MMI ̲CONTROL ̲TABLE requires
         a dynamic buffer structure in order to maximize throughput
         and minimize memory consumption.

         This structure is shown in figure 4.2.3.2-3.

         It contains the following:

         -   ADM1 ̲BUF:

             This is the input buffer to hold the CIF-Administration
             field of the CIF to be displayed.

         -   ADM2 ̲BUF:

             This is the output buffer to hold the CIF-Administration
             field of the CIF written to.

         -   FORMAT ̲ID:

             This is the current format.

         -   CONTINUATION ̲FORMAT:

             This is the next format-part (this facilitates
             sectioning of formats and thus restructuring of
             the buffer layout for optimization purposes).

         -   INPUT ̲BUFFER ̲CTRL ̲GROUP:

             This gives the length of all buffers when used
             for input

         -   OUTPUT ̲BUFFER ̲CTRL ̲GROUP:

             This gives the length of all buffers when used
             for output.

         -   MMI ̲RECORD ̲COUNT:

             This is the number of record in the MMI ̲CONTROL
             ̲TABLE ̲SECTION.

         -   MMI ̲CONTROL ̲TABLE ̲SECTION:

             This is the section of the MMI ̲CONTROL ̲TABLE corresponding
             to the current format-part.



         -   FIELD ̲LIST:

             This is the field list used in connection with
             the Format Handler (IOC)

         -   IOC ̲BUF:

             This is the buffer used by the Format Handler

         -   CIF ̲FIELDN ̲BUF:

             This is the buffer used for input/output of CIF-field
             N.

         In addition to these buffers two sets of error lists
         exist as shown in figure 4.2.3.2-4. Each list contains
         a margin area section and a field section to control
         display of error codes and change of field attributes.

         The structure of the software composing the Dialogue
         Subpackage is shown in figure 4.2.3.2-5 to 4.2.3.2-9.






              Figure 4.2.3.2-3 to 4.2.3.2-8








                Diag. 4.2.3.4-1/4.2.3.4-7



4.2.3.3  D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲

         The internal flow is shown on HIPO diagrams 4.2.3.3-1
         to 4.2.3.3-7.



4.2.3.4  M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



4.2.3.4.1    D̲I̲A̲L̲O̲G̲U̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



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

         This module is the controlling module within the subpackage.
         It receives commands from SEFCO and I/O-Completions
         via semaphore MSOS ̲S3. It calls upon the modules for
         input/output to/from the VDU and signals completion
         to semaphore MSOS ̲S2.



4.2.3.4.1.2 M̲o̲d̲u̲l̲e̲ ̲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)  DIALOGUE ̲CONTROL

         b)  DIALOGUE ̲CONTROL (R6)

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

         R6  LINK        destroyed

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

         R0 - R7

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

         None



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

         None.





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

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

             CURSOR ̲RECORD ̲1   4.1.4

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

             N/A

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

             N/A



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

         The module performs the following tasks:

         -   analysis of operations received in MSOS ̲S3

         -   Calls modules and common procedures corresponding
             to the following commands:

             CLOSE
             CANCEL ̲I ̲0
             CLEAR ̲VDU
             INPUT ̲DATA
             OUTPUT ̲DATA
             DISPLAY ̲MENU
             OUTPUT ̲FORMAT
             L ̲INSERT
             L ̲DELETE
             GARBLE ̲IN

         -   Call modules corresponding to the I/O completions:

             VDU ̲DATA ̲OUTPUT
             VDU ̲DATA ̲INPUT



         D̲I̲A̲L̲O̲G̲U̲E̲ ̲C̲O̲N̲T̲R̲O̲L̲

         LOOP FOREVER

             WAIT ̲OPSEM (MSOS ̲S3) (MSOS ̲OP): OK

             CASE MSOS ̲OP.OP ̲ID(1) OF IDENT ̲TYPE

                 SEFCO ̲ID?  INCREMENT CMD ̲OP ̲CNT
                            OPLIST(CMD ̲OP ̲CNT) = MSOS ̲OP

                            CASE MSOS ̲OP.CMD OF SEFCO ̲CMD ̲TYPE

                            CLOSE?

                            CANCEL ̲I ̲0?  C̲M̲D̲ ̲E̲X̲E̲C̲U̲T̲I̲O̲N̲(̲4̲.̲2̲.̲3̲.̲4̲.̲1̲-̲1̲)̲

                            OTHERWISE?   CMD ̲OP ̲CNT GT 1?

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

                                         C̲M̲D̲ ̲E̲X̲E̲C̲U̲T̲I̲O̲N̲(̲4̲.̲2̲.̲3̲.̲4̲.̲1̲-̲1̲)̲

                            END CASE

                 VDU ̲ID?    V̲D̲U̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲(̲4̲.̲2̲.̲3̲.̲4̲.̲1̲-̲2̲)̲

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

             END CASE

         END FOREVER LOOP

         END












                    Figure 4.2.3.4.1-1



         C̲M̲D̲ ̲E̲X̲E̲C̲U̲T̲I̲O̲N̲

         CASE MSOS ̲OP.CMD OF CO ̲CMD ̲TYPE

             CLOSE

             CANCEL ̲I ̲O  S̲T̲O̲P̲ ̲I̲N̲P̲U̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲-̲1̲)̲

             CLEAR ̲VDU?  C̲L̲E̲A̲N̲ ̲U̲P̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲-̲1̲)̲

             INPUT ̲DATA? V̲D̲U̲ ̲D̲A̲T̲A̲ ̲I̲N̲P̲U̲T̲ ̲(̲I̲N̲I̲T̲)̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲)̲

             OUTPUT ̲DATA?   O̲U̲T̲P̲U̲T̲ ̲D̲A̲T̲A̲.̲P̲T̲ ̲=̲ ̲M̲S̲O̲S̲ ̲O̲P̲.̲P̲A̲R̲A̲2̲
                            V̲D̲U̲ ̲D̲A̲T̲A̲ ̲O̲U̲T̲P̲U̲T̲ ̲(̲I̲N̲I̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲)̲

             DISPLAY ̲MENU?

             OUTPUT ̲FORMAT? V̲D̲U̲ ̲F̲O̲R̲M̲A̲T̲ ̲O̲U̲T̲P̲U̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲4̲)̲

             L ̲INSERT?   L ̲NO = CURSOR ̲RECORD ̲1.LINE ̲NO

                         INC = CURSOR ̲RECORD ̲1.INC ̲NO

                         CNT = MSOS ̲OP.PARA1

                            L̲I̲N̲E̲ ̲I̲N̲S̲E̲R̲T̲(̲F̲O̲R̲M̲A̲T̲ ̲I̲F̲C̲B̲,̲L̲ ̲N̲O̲,̲ ̲I̲N̲C̲,̲
                            ̲C̲N̲T̲)̲
                                                      (̲4̲.̲2̲.̲3̲.̲6̲.̲3̲-̲1̲)̲

             L ̲DELETE?      L ̲NO = CURSOR ̲RECORD ̲1.LINE ̲NO

                            INC = CURSOR ̲RECORD ̲1.INC ̲NO

                            CNT = MSOS ̲OP.PARA1

                            L̲I̲N̲E̲ ̲D̲E̲L̲E̲T̲E̲(̲F̲O̲R̲M̲A̲T̲ ̲I̲F̲C̲B̲,̲L̲ ̲N̲O̲,̲ ̲I̲N̲C̲,̲
                            ̲C̲N̲T̲)̲
                                                      (̲4̲.̲2̲.̲3̲.̲6̲.̲4̲-̲1̲)̲


             GARBLE ̲IN?     G̲A̲ ̲I̲N̲P̲U̲T̲ ̲(̲I̲N̲I̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲)̲

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

         END CASE

         END


                    Figure 4.2.3.4.1-2


         V̲D̲U̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲

         CASE MSOS ̲OP.CMD OF VDU ̲ID ̲TYPE

             VDU ̲DATA ̲OUTPUT?  V̲D̲U̲ ̲D̲A̲T̲A̲ ̲O̲U̲T̲P̲U̲T̲ ̲(̲C̲O̲N̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲)̲

             VDU ̲DATA ̲INPUT?   V̲D̲U̲ ̲D̲A̲T̲A̲ ̲I̲N̲P̲U̲T̲ ̲(̲C̲O̲N̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲)̲

             VDU ̲GA ̲INPUT?     G̲A̲ ̲I̲N̲P̲U̲T̲ ̲(̲C̲O̲N̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲)̲

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

         END CASE

         END
































                    Figure 4.2.3.4.1-3


4.2.3.4.2    V̲D̲U̲ ̲D̲A̲T̲A̲ ̲O̲U̲T̲P̲U̲T̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



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

         This module performs output to the VDU. It performs
         either initial or continued output:

         I̲n̲i̲t̲i̲a̲l̲:̲

         The module reads in the VUS ̲MMI ̲CONTROL ̲TABLE (via
         TMP), sets the output buffer structure, clears the
         format split, creates display buffers, initiates display
         of fields and associates completion of I/O to semaphore
         MSOS ̲S3:

         C̲o̲n̲t̲i̲n̲u̲e̲d̲:̲

         The module checks if the FIELD ̲LIST is full or if end
         of IOC ̲BUF is reached in which case display is performed
         as described above. If end of CIF ̲BUF is reached continued
         read from current CIF field and display is performed.
         If end of CIF field is reached it is checked if continuation
         is required in which case read from CIF and display
         is performed as described above, otherwise completion
         is signalled to SEFCO via MSOS ̲S2.



4.2.3.4.2.2 M̲o̲d̲u̲l̲e̲ ̲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)  VDU ̲DATA ̲OUTPUT (INITIAL ̲CONTINUED: BOOLEAN)

         b)  VDU ̲DATA ̲OUTPUT (R0, R6)

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

         R0  BOOLEAN        (destr.)
         R6  LINK           (destr.)

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

         R0-R7



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

         None



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



4.2.3.4.2.3.1 R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲

         Sets up parameters for performing a READ ̲VIEW call.
         Parameters are setup based on information contained
         in the VUS ̲MMI ̲CONTROL ̲TABLE. If required the CIF ̲Administration
         field is included.



4.2.3.4.2.3.2 C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲B̲U̲F̲F̲E̲R̲S̲

         Creates of Field List and Buffer List for use by the
         Format Handler (IOC) based on the VUS ̲MMI ̲CONTROL ̲TABLE.



4.2.3.4.2.3.3 D̲I̲S̲P̲L̲A̲Y̲ ̲F̲I̲E̲L̲D̲S̲

         Sets up parameters for the Format Handler (IOC) and
         initiates output to the VDU.



4.2.3.4.2.3.4 R̲E̲A̲D̲ ̲S̲I̲N̲G̲L̲E̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲

         Set up parameters and performs READ ̲VIEW call.



4.2.3.4.2.3.5 M̲A̲R̲G̲I̲N̲ ̲D̲I̲S̲P̲L̲A̲Y̲

         Displays relevant information in the margin corresponding
         to the current format.





4.2.3.4.2.3.6 C̲R̲E̲A̲T̲E̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲E̲L̲E̲M̲E̲N̲T̲

         Creates a single field list element and moves an IOC-record
         to the IOC ̲BUF.



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

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

             FORMAT ̲IFCB             4.1.4
             CURRENT ̲FORMAT          4.2.3.5
             MMI ̲HEAD ̲REC            4.2.3.5
             INITIAL                 4.2.3.5
             VDU ̲SPLIT ̲FAILED        CPS/SDS/001
             END ̲OF ̲CIF ̲BUF          4.2.3.5
             FIELD ̲LIST ̲FULL         4.2.3.5
             END ̲OF ̲IOC ̲BUF          4.2.3.5
             END ̲OF ̲CIF ̲FIELD        4.2.3.5
             MMI ̲PT                  4.2.3.5
             EOMM                    4.2.3.5
             ICBL ̲PT                 4.2.3.5
             BIBL                    4.2.3.5
             CIF ̲F ̲LIST              4.2.3.5
             EIBL                    4.2.3.5
             BOCB                    4.2.3.5
             EOCF                    4.2.3.5
             FL ̲PT                   4.2.3.5
             BOFL                    4.2.3.5
             IOC ̲PT                  4.2.3.5
             BOIB                    4.2.3.5
             FIELD ̲LIST              4.2.3.5
             FIELD ̲LIST ̲LENGTH       4.2.3.5
             BUFFERS ̲SHARED          4.2.3.5
             FIXED                   4.2.3.5
             EOFL                    4.2.3.5
             EOIB                    4.2.3.5
             F ̲BYTE ̲ADR              4.2.3.5
             NO ̲OF ̲FIELDS            CPS/DBD/001
             IOC ̲BLE                 4.2.3.5
             INPUT ̲CIF               4.1.4



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

             N/A

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

             BUFSIZE                 INTEGER



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

         The module performs either initial output or continued
         output:

         I̲n̲i̲t̲i̲a̲l̲

         -   Reads in VUS ̲MMI ̲CONTROL ̲TABLE (via TMP)

         -   Sets output buffer structure

         -   Clears format split

         -   Reads in CIF-Administration field

         -   Creates Display Buffers

         -   Initiates Fields Output

         -   Associates completion of Fields Output to semaphore
             MSOS ̲S3

         C̲o̲n̲t̲i̲n̲u̲e̲d̲:̲

         -   checks end conditions:

             1.  End of CIF-buffer: Reads form current CIF-field

             2.  Field list full

             3.  End of IOC buffer.

                 In all three cases creation of display buffers,
                 initiation of Fields Output and association
                 of completion of I/O to semaphore MSOS ̲S2 is
                 performed.



             4.  End of CIF-field.

                 If continuation format is specified in VUS
                 ̲MMI ̲CONTROL ̲TABLE a new VUS ̲MMI ̲CONTROL ̲TABLE
                 record is read (via TMP), buffer structure
                 set, CIF-fields read, display buffers created,
                 Fields Output initiated and association of
                 completion of I/O to semaphore MSOS ̲S2 is performed.

                 If continuation is not required completion
                 of output is signalled to semaphore MSOS ̲S2.



 V̲D̲U̲ ̲D̲A̲T̲A̲ ̲O̲U̲T̲P̲U̲T̲
 INITIAL?    CURRENT ̲FORMAT = MSOS ̲OP.PARA1
             R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲3̲-̲1̲)̲
             S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲O̲U̲T̲P̲U̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲6̲-̲1̲)̲
             C̲L̲E̲A̲R̲ ̲S̲P̲L̲I̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲4̲-̲1̲)̲
             GET ̲FORMAT (FORMAT ̲IFCB, CURRENT ̲FORMAT)(CC):OK
             MMI ̲HEAD ̲REC.CIF ̲ACCESS? R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲A̲D̲M̲)̲
                                     (̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲5̲)̲
             C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲B̲U̲F̲F̲E̲R̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲6̲)̲
             D̲I̲S̲P̲L̲A̲Y̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲8̲)̲
             VDU ̲OP.CMD = VDU ̲DATA ̲OUTPUT
             ASSOCIATE (MSOS ̲S3, VDU ̲OP): OK
             INITIAL = FALSE
 CASE WAIT ̲SYSTEM ̲CALL (VDU ̲OP)(OUTRO,OUTR1,OUTR2, OUTR3,OUTR4)
                                               (CC): ERROR ̲OK
     ERROR? CASE ANALYZE ̲ERROR(CC, 1, VDU ̲SPLIT ̲FAILED):L1
                 L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                           (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲.̲3̲-̲1̲)̲
     OK?     END CASE
 END CASE
 END ̲OF ̲CIF ̲BUF? READ ̲SINGLE ̲CIF ̲FIELD (4.2.3.4.2-9)
 FIELD ̲LIST FULL?
 END ̲OF ̲IOC ̲BUF? C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲B̲U̲F̲F̲E̲R̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲6̲)̲
                 D̲I̲S̲P̲L̲A̲Y̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲8̲)̲
                 VDU ̲OP.CMD = VDU ̲DATA ̲OUTPUT
                 ASSOCIATE (MSOS ̲S3, VDU ̲OP): OK
 END ̲OF ̲CIF ̲FIELD?   INCREMENT MMI ̲PT
                     SET MEMORY ADDRESSES (4.2.3.6.10-1)
 MMI ̲PT GT EOMM?     MMI ̲HEAD ̲REC.CONT ̲FORMAT ̲ID EQ ZERO?
                                     T̲E̲R̲M̲I̲N̲A̲T̲E̲ ̲(̲4̲.̲2̲.̲3̲.̲2̲-̲3̲)̲
                     N̲E̲X̲T̲ ̲F̲O̲R̲M̲A̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲2̲)̲
 T̲E̲P̲ ̲I̲N̲T̲E̲R̲N̲A̲L̲ ̲E̲R̲R̲O̲R̲ ̲(̲G̲I̲V̲E̲ ̲U̲P̲)̲(̲4̲.̲2̲.̲5̲.̲2̲)̲
 END

                               Figure 4.2.3.4.2-1 (Cont.)


 N̲E̲X̲T̲ ̲F̲O̲R̲M̲A̲T̲

 CURRENT ̲FORMAT = MMI ̲HEAD ̲REC. CONT ̲FORMAT ̲ID

 R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲3̲-̲1̲)̲

 S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲O̲U̲T̲P̲U̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲6̲-̲1̲)̲

 R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲N̲O̲ ̲A̲D̲M̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲4̲)̲

 C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲B̲U̲F̲F̲E̲R̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲6̲)̲

 D̲I̲S̲P̲L̲A̲Y̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲8̲)̲

 VDU ̲OP.CMD = VDU ̲DATA ̲OUTPUT

 ASSOCIATE (MSOS ̲S3, VDU ̲OP): OP

 END






























                Figure 4.2.3.4.2-2


 T̲E̲R̲M̲I̲N̲A̲T̲E̲

 M̲A̲R̲G̲I̲N̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲1̲0̲)̲

 S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲O̲K̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

 END






































                Figure 4.2.3.4.2-3


 R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲
 BUF ̲SIZE = 0
 ICBL ̲PT = BIBL
 ADM?    BUF ̲SIZE = SIZE (ADM1 ̲BUF)
         BUFFER = BAM1
         CIF ̲F ̲LIST.NO ̲OF ̲ELEM = 1
         CIF ̲F ̲LIST.ELEM(1).F ̲GROUP ̲ID = 1
         CIF ̲F ̲LIST.ELEM(1).F ̲BYTE ̲ADR = 0
         CIF ̲F ̲LIST.ELEM(1).REC ̲LENGTH = SIZE (ADM1 ̲BUF)
         READ ̲VIEW(BUF ̲SIZE, CIF ̲F ̲LIST, INPUT ̲CIF, BUFFER)
                                     (CIF ̲F ̲LIST,CC): ERROR ̲OK
 CIF ̲F ̲LIST.NO ̲OF ̲ELEM = 0
 LOOP UNTIL ICBL ̲PT GT EIBL
     EQUIVALENCE (MMI ̲HEAD ̲REC.INPUT ̲BUFFER ̲CTRL ̲GROUP.
                 CIF ̲BUF ̲LEN ̲ARRAY (ICBL ̲PT), BUF ̲LEN: INTEGER)
     BUF ̲LEN=0?  INCREMENT ICBL ̲PT
     BUFFER = BOCB (ICBL ̲PT)
     ICBL ̲PT = EIBL + 1
 END LOOP
 ICBL ̲PT = BIBL
 LOOP UNTIL ICBL ̲PT GT EIBL
     EQUIVALENCE (MMI ̲HEAD ̲REC.INPUT ̲BUFFER ̲CTRL ̲GROUP.
                  CIF ̲BUF ̲LEN ̲ARRAY(ICBL ̲PT), BUF ̲LEN: INTEGER)
     BUF ̲LEN = 0?
     BUF ̲SIZE = BUF ̲SIZE + BUF ̲LEN
     INCREMENT CIF ̲F ̲LIST.NO ̲OF ̲ELEM
     CIF ̲F ̲LIST.ELEM(CIF ̲F ̲LIST.NO ̲OF ̲ELEM).F ̲GROUP ̲ID = ICBL ̲PT+1
     CIF ̲F ̲LIST.ELEM(CIF ̲F ̲LIST.NO ̲OF ̲ELEM).F ̲BYTE ̲ADR = 0
     CIF ̲F ̲LIST.ELEM(CIF ̲F ̲LIST. NO ̲OF ̲ELEM).REC ̲LENGTH=BUF ̲LEN
     INCREMENT ICBL ̲PT
 END LOOP

 continued

                                   Figure 4.2.3.4.2-4


 R̲E̲A̲D̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲ (continued)

 READ ̲VIEW(BUF ̲SIZE, CIF ̲F ̲LIST, INPUT ̲CIF, BUFFER)(CIF
 ̲F ̲LIST,                                                            
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    CC):ERROR
                                                                    ̲OK
 ICBL ̲PT = BIBL
 LOOP UNTIL ICBL ̲PT GT EIBL
     EOCF (ICBL ̲PT) = CIF ̲F ̲LIST.ELEM(ICBL ̲PT).REC ̲LENGTH
 END LOOP
 END




































                    Figure 4.2.3.4.2-5


 C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲L̲A̲Y̲ ̲B̲U̲F̲F̲E̲R̲S̲

 FL ̲PT = BOFL

 IOC ̲PT = BOIB

 C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

 LOOP UNTIL MMI ̲PT GO EOMM

     S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲

     S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲0̲-̲1̲)̲

     S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

     INC EQ ZERO?  INC = CNT

                   L̲I̲N̲E̲ ̲I̲N̲S̲E̲R̲T̲ ̲(̲F̲O̲R̲M̲A̲T̲ ̲I̲F̲C̲B̲,̲L̲ ̲N̲O̲,̲0̲,̲C̲N̲T̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲3̲-̲1̲)̲

     C ̲INC = 1

     LOOP UNTIL C ̲INC GT INC

     BUFFERS ̲SHARED?  C̲R̲E̲A̲T̲E̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲E̲L̲E̲M̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲2̲-̲7̲)̲

                      FIELD ̲LIST ̲FULL?   EXIT

                      END ̲OF ̲CIF ̲FIELD?  EXIT

                      END ̲OF ̲CIF ̲BUF?    EXIT

     I ̲TYPE = FIXED?  FG ̲COUNT EQ ZERO? F̲I̲E̲L̲D̲ ̲R̲E̲P̲E̲A̲T̲
     ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲6̲-̲1̲)̲

                      F̲I̲E̲L̲D̲ ̲G̲R̲O̲U̲P̲ ̲R̲E̲P̲E̲A̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲7̲-̲1̲)̲

     S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲8̲-̲1̲)̲

     IOC ̲PT + BYTE ̲COUNT GT EOIB-3?          END ̲OF
     ̲IOC ̲BUF = TRUE

     C̲R̲E̲A̲T̲E̲ ̲D̲I̲S̲P̲ ̲R̲E̲C̲ ̲(̲V̲A̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲5̲-̲1̲)̲       EXIT

     END ̲OF ̲CIF ̲FIELD?   EXIT

     END ̲OF ̲CIF ̲BUF?     EXIT

     INCREMENT INC

 END LOOP
 INCREMENT MMI ̲PT
 END LOOP
   END                 Figure 4.2.3.4.2-6


 C̲R̲E̲A̲T̲E̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲E̲L̲E̲M̲

 S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

 S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲8̲-̲1̲)̲

 IOC ̲L ̲NO = L ̲NO

 IOC ̲INC = CURRENT ̲INC

 IOC ̲F ̲NO = F ̲NO

 INCREMENT FL ̲PT

 FL ̲PT GT EOFL? FIELD ̲LIST ̲FULL = TRUE

 FIELD ̲LIST ̲FULL = FALSE

 IOC ̲PT + BYTE ̲COUNT GE EOCF (I ̲PT ̲BASE)? END ̲OF ̲CIF
 ̲FIELD = TRUE

 END ̲OF ̲CIF ̲FIELD = FALSE

 IOC ̲PT + BYTE ̲COUNT GT EOIB-3?      END ̲OF ̲CIF ̲BUF
                                     = TRUE

                                     CIF ̲F ̲LIST.ELEM
                                     (I ̲PT ̲BASE)

 END ̲OF ̲CIF ̲BUF = FALSE              F ̲BYTE ̲ADR = CIF
                                     ̲F ̲LIST

                                     ELEM (I ̲PT ̲BASE).F
                                     ̲BYTE ̲ADR

                                     - (BOIB - IOC ̲PT)

 END














                Figure 4.2.3.4.2-7


 D̲I̲S̲P̲L̲A̲Y̲ ̲F̲I̲E̲L̲D̲S̲

 NO ̲OF ̲FIELDS = FL ̲PT - BOFL

 BYTE ̲LENGTH = IOC ̲PT - BOIB

 IOC ̲BLE.BYTE ̲SIZE = BYTE ̲LENGTH

 CASE INIT FIELDS ̲OUTPUT (FORMAT ̲IFCB, FIELD ̲LIST, IOC
 ̲BLE,
                         NO ̲OF ̲FIELDS, BYTE ̲LENGTH)(CC):
                   ERROR ̲OK

     ERROR?  CASE ANALYSE ̲ERROR (CC, 1, VDU ̲SPLIT ̲FAILED):
             L1

             L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

     OK?


 END CASE

 END






















                Figure 4.2.3.4.2-8


 R̲E̲A̲D̲ ̲S̲I̲N̲G̲L̲E̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲

 BUF ̲SIZE = MMI ̲HEAD ̲REC.INPUT ̲BUFFER ̲CTRL ̲GROUP.CIF
 ̲BUF ̲LEN.ARRAY
                                                   
                                       (I ̲PT ̲BASE)

 CIF ̲F ̲LIST.NO ̲OF ̲ELEM = 1

 CIF ̲F ̲LIST.ELEM(1).F ̲GROUP ̲ID = I ̲PT ̲BASE

 READ ̲VIEW(BUF ̲SIZE, CIF ̲F ̲LIST, INPUT ̲CIF, BUFFER)(CIF
 ̲F ̲LIST, CC):ERROR ̲OK

 EOCF(I ̲PT ̲BASE) = CIF ̲F ̲LIST.ELEM(I ̲PT ̲BASE).REC ̲LENGTH

 END

































                Figure 4.2.3.4.2-9


 M̲A̲R̲G̲I̲N̲ ̲D̲I̲S̲P̲L̲A̲Y̲

 CURRENT ̲FORMAT EQ GA69?  D̲I̲S̲P̲L̲A̲Y̲ ̲A̲N̲A̲L̲Y̲S̲I̲S̲ ̲E̲R̲R̲O̲R̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲9̲-̲1̲)̲

 CURRENT ̲FORMAT NE "DISPLAY ̲FORMAT"?

 D̲I̲S̲P̲L̲A̲Y̲ ̲L̲I̲N̲E̲ ̲N̲O̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲8̲-̲1̲)̲

 END






































               Figure 4.2.3.4.2-10



4.2.3.4.3    V̲D̲U̲ ̲D̲A̲T̲A̲ ̲I̲N̲P̲U̲T̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲



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

         This module input from VDU. It performs either initial
         or continued input:

         I̲n̲i̲t̲i̲a̲l̲:̲

         The module clears buffers, sets input buffer structure,
         sets parameters for call of Format Handler (IOC), initiates
         Fields Input and associates completion of I/O to semaphore
         MSOS ̲S3.

         C̲o̲n̲t̲i̲n̲u̲e̲d̲:̲

         The module calls the modules SYNTAX ̲VALIDATION, SEMANTIC
         ̲VALIDATION and possibly DISPLAY ̲ERROR ̲CODES. It writes
         data to CIF (if required), sets up parameters for call
         of Format Handler (IOC), initiates Fields Output and
         associates completion of I/O to semaphore MSOS ̲S2.
         When input is complete the CIF-Administration field
         is written to disk and a response to SEFCO signalled
         to semaphore MSOS ̲S2.



4.2.3.4.3.2 M̲o̲d̲u̲l̲e̲ ̲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)  VDU ̲DATA ̲INPUT (INITIAL ̲CONTINUED: BOOLEAN)

         b)  VDU ̲DATA ̲INPUT (R0, R6)

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

         R0  BOOLEAN        Destr.
         R6  LINK           Destr.

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

         R0-R7              Destr.

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

         None.


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



4.2.3.4.3.3.1 F̲I̲N̲D̲ ̲F̲I̲R̲S̲T̲ ̲F̲I̲E̲L̲D̲

         Searches by means of the VUS ̲MMI ̲CONTROL ̲TABLE for
         the first field to be input from the VDU.



4.2.3.4.3.3.2 W̲R̲I̲T̲E̲ ̲A̲D̲M̲

         Sets up parameters and performs WRITE ̲VIEW call.



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

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

             INITIAL                 4.2.3.5
             ADM2 ̲BUF                4.2.3.5
             ADM2 ̲BUF ̲LENGTH         4.2.3.5
             FIELD ̲LIST              4.2.3.5
             FIELD ̲LIST ̲LENGTH       4.2.3.5
             CURRENT ̲FORMAT          4.2.3.5
             SEQ ̲REC.SEDIA.FORMAT    4.1.4
             INPUT                   4.2.3.5
             INITIAL                 4.2.3.5
             FORMAT ̲IFCB             4.1.4
             IOC ̲BLE                 4.2.3.5
             FIRST ̲FIELD             4.2.3.5
             NO ̲OF ̲FIELDS            4.2.3.5
             VAL ̲ERR                 4.2.3.5
             ERR ̲LIST ̲FULL           4.2.3.5
             VDU ̲SPLIT ̲FAILED        CPS/DBD/001
             BUFFERS ̲SHARED          4.2.3.5
             CIF ̲BUF ̲PT              4.2.3.5
             BOCB                    4.2.3.5
             MMI ̲PT                  4.2.3.5
             EOMM                    4.2.3.5
             MMI ̲CTRL ̲REC            4.2.3.5
             IOC ̲PT                  4.2.3.5
             CIF ̲F ̲LIST              4.2.3.5
             OUTPUT ̲CIF              4.1.4


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

             N/A

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

             BUF ̲SIZE



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

         The module performs either initial input or continued
         input:

         I̲n̲i̲t̲i̲a̲l̲:̲

         -   Clears ADM2 ̲BUF and Field List

         -   Sets input buffer structure

         -   Sets parameters for the Format Handler (IOC)

         -   Initiates Fields Input

         -   Associates completion of I/O to semaphore MSOS
             ̲S3

         C̲o̲n̲t̲i̲n̲u̲e̲d̲:̲

         -   Calls SYNTAX ̲VALIDATION

         -   Calls SEMANTIC ̲VALIDATION

         -   Writes data to CIF

         -   Calls DISPLAY ̲ERROR ̲CODES

         -   Writes Administration field to CIF

         -   Sets parameter for the Format Handler (IOC)

         -   Initiates Fields Input

         -   Associates completion of I/O to semaphore MSOS
             ̲S3

         -   Responds to SEFCO upon completion of input by signaling
             semaphore MSOS ̲S2


 V̲D̲U̲ ̲D̲A̲T̲A̲ ̲I̲N̲P̲U̲T̲

 INITIAL?    C̲L̲E̲A̲R̲ ̲(̲A̲D̲M̲2̲ ̲B̲U̲F̲,̲ ̲A̲D̲M̲2̲ ̲B̲U̲F̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

             C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲
             ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

             C̲L̲E̲A̲R̲ ̲(̲B̲O̲C̲B̲(̲1̲)̲,̲ ̲E̲O̲C̲B̲(̲M̲A̲X̲ ̲N̲O̲ ̲O̲F̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲)̲
                            -̲ ̲B̲O̲C̲B̲(̲1̲)̲,̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

             CURRENT ̲FORMAT = SEQ.REC.SEDIA ̲FORMAT

             S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲I̲N̲P̲U̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲6̲-̲1̲)̲

             S̲E̲T̲ ̲F̲H̲ ̲P̲A̲R̲A̲M̲ ̲(̲I̲N̲I̲T̲I̲A̲L̲)̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲-̲3̲)̲

             CASE INIT FIELDS ̲INPUT (FORMAT ̲IFCB, IOC
             ̲BLE,
                                FIRST ̲FIELD, NO ̲OF ̲FIELDS,
                            VDU ̲OP
                                (CC,SO ̲REF): ERROR ̲OK

                 ERROR?  ANALYSE ̲ERROR (CC,0)

                 OK?     VDU ̲OP.CMD = VDU ̲DATA ̲INPUT
                         ASSOCIATE (MSOS ̲S3, VDU ̲OP):
                 OK

             END CASE

             VAL ̲ERR = ERR ̲LIST ̲FULL = FALSE

             INITIAL = FALSE                       
                RETURN

 CASE WAIT ̲SYSTEM ̲CALL(VDU ̲OP)(OUTR0,OUTR1,OUTR2,OUTR3,OUTR4)
                                                 (CC):ERROR
                                     ̲OK

     ERROR?  CASE ANALYSE ̲ERROR (CC,1,VDU ̲SPLIT ̲FAILED):L1

             L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                         (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?


 END CASE

 Continued              4.2.3.4.3-1


 V̲D̲U̲ ̲D̲A̲T̲A̲ ̲I̲N̲P̲U̲T̲       continued

 BUFFERS ̲SHARED?  CIF ̲BUF ̲PT(I ̲PT ̲BASE) = BOCB (I ̲PT
 ̲BASE) +
                                   BYTES ̲TRANSFERRED

                  C̲H̲E̲C̲K̲ ̲F̲I̲N̲A̲L̲ ̲C̲A̲L̲L̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲0̲-̲1̲)̲

                  E̲X̲E̲C̲ ̲V̲A̲L̲ ̲P̲R̲O̲C̲(̲V̲A̲L̲ ̲P̲R̲O̲C̲,̲ ̲R̲E̲A̲D̲ ̲I̲T̲E̲M̲
                 ̲P̲T̲,̲ ̲I̲T̲E̲M̲ ̲L̲E̲N̲G̲T̲H̲,̲
                      W̲R̲I̲T̲E̲ ̲I̲T̲E̲M̲ ̲P̲T̲)̲(̲I̲T̲E̲M̲ ̲L̲E̲N̲G̲T̲H̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲1̲-̲1̲)̲:̲O̲K̲

                  W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲2̲-̲1̲)̲

 S̲Y̲N̲T̲A̲X̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲5̲)̲

 MMI ̲PT GT EOMM OR ERR ̲LIST ̲FULL? S̲E̲M̲A̲N̲T̲I̲C̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲
                                     (̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲
                                     ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲)̲

                                  VAL ̲ERR? D̲I̲S̲P̲L̲A̲Y̲ ̲E̲R̲R̲O̲R̲
                            ̲C̲O̲D̲E̲S̲
                                                   
                                     (4̲.̲2̲.̲3̲.̲4̲.̲7̲)̲

                                  W̲R̲I̲T̲E̲ ̲A̲D̲M̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲-̲8̲)̲

                                  S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲
                            ̲S̲2̲,̲
                                  S̲E̲M̲A̲N̲ ̲V̲A̲L̲ ̲R̲E̲S̲U̲L̲T̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

                                       R̲E̲T̲U̲R̲N̲

 C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲(̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

 S̲E̲T̲ ̲F̲H̲ ̲P̲A̲R̲A̲M̲ ̲(̲C̲O̲N̲T̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲-̲3̲)̲

 CASE INIT FIELDS ̲INPUT (FORMAT ̲IFCB, IOC ̲BLE, FIRST
 ̲FIELD,
                                     NO ̲OF ̲FIELDS, VDU
                                     ̲OP)
                                     (CC,SO ̲REF): ERROR
                                     ̲OK

     ERROR? ANALYSE ̲ERROR (CC,0)

     OK?    VDU ̲OP.CMD = VDU ̲DATA ̲INPUT
            ASSOCIATE (MSOS ̲S3, VDU ̲OP): OK

 END CASE

 END









                Figure 4.2.3.4.3-2


 S̲E̲T̲ ̲F̲H̲ ̲P̲A̲R̲A̲M̲

 INITIAL?                                 MMI ̲PT = BOMM

 F̲I̲N̲D̲ ̲F̲I̲R̲S̲T̲ ̲F̲I̲E̲L̲D̲ ̲(̲C̲O̲N̲T̲)̲(̲4̲.̲2̲.̲3̲.̲4̲.̲5̲-̲5̲)̲     F̲I̲N̲D̲ ̲F̲I̲R̲S̲T̲
                                          ̲F̲I̲E̲L̲D̲
                                         (̲I̲N̲I̲T̲)̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲-̲5̲)̲

 F̲I̲N̲D̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲3̲-̲4̲)̲

 END






































                Figure 4.2.3.4.3-3


 F̲I̲N̲D̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲

 NO ̲OF ̲FIELDS = CHAR ̲COUNT = 0
 LOOP UNTIL MMI ̲PT GT EOMM
 S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
 F ̲TYPE EQ FIXED?  FG ̲COUNT EQ ZERO?           NO ̲OF ̲FIELDS =
                   NO ̲OF ̲FIELDS = NO ̲OF ̲FIELDS   NO ̲OF ̲FIELDS +
                      INCxF ̲COUNT x FG ̲COUNT     INC x F ̲COUNT
                   LG ̲COUNT = F ̲COUNT          CHAR ̲COUNT=CHAR ̲COUNT+
                   LOOP UNTIL LG ̲COUNT EQ ZERO  INCxF ̲COUNTx(F ̲SIZE+3)
                       CHAR ̲COUNT = CHAR ̲COUNT +
                          INCxF ̲COUNT x FG ̲COUNTx(F ̲SIZE+3)
                       DECREMENT LG ̲COUNT
                       INCREMENT MMI ̲PT
                       EQUIVALENCE (MMI ̲CTRL ̲TABLE (MMI ̲PT)
                         F ̲SIZE: MMI ̲CTRL ̲REC.FIELD ̲SIZE)
                   END LOOP
 LOOP UNTIL C ̲ING GT INC
     LOOP UNTIL C ̲L ̲NO NE L ̲NO
         IOC ̲PT + F ̲SIZE+3 GT EOIB?   EXIT
         CHAR ̲COUNT = CHAR ̲COUNT + F ̲SIZE+3
         IOC ̲PT = IOC ̲PT + CHAR ̲COUNT
         C ̲F ̲NO = F ̲NO
         INCREMENT MMI ̲PT, NO ̲OF ̲FIELDS
         S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
     END LOOP
     INCREMENT C ̲INC
 END LOOP
     INCREMENT MMI ̲PT
 END LOOP
 END

                                   Figure 4.2.3.4.3-4


 F̲I̲N̲D̲ ̲F̲I̲R̲S̲T̲ ̲F̲I̲E̲L̲D̲

 INITIAL?    LOOP UNTIL MMI ̲PT GT EOMM
                 S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
                 F ̲TYPE EQ INPUT?  C ̲L ̲NO = L ̲NO
                                   C ̲INC = 1
                                   C ̲F ̲NO = 1
                 INCREMENT MMI ̲PT
                 INITIAL ̲CALL = TRUE
             END LOOP
 S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
 LOOP UNTIL MMI ̲PT GT EOMM
     F ̲TYPE EQ INPUT?   FG ̲COUNT EQ ZERO?    C ̲F ̲NO
                        LT F ̲NO?
                                                INCREMENT
                                     C ̲F ̲NO
     INCREMENT MMI ̲PT                           INITIAL
                                     ̲CALL = FALSE
     INITIAL ̲CALL = TRUE                     C ̲INC LT
                                     INC?
                                                INCREMENT
                                     C ̲INC
     SET ̲MMI ̲VDU ̲ADDRESSES
     (4.2.3.6.7-1)                              C ̲F
                                     ̲NO = 1
                                                INITIAL
                                     ̲CALL = FALSE
                                             INCREMENT
                                     MMI ̲PT
     C ̲L ̲NO = L ̲NO                           INITIAL
                                     ̲CALL = TRUE
                                             S̲E̲T̲ ̲M̲M̲I̲
                                     ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲
                                                   
                                      (̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
     C ̲INC = 1                               C ̲L ̲NO
                                     = L ̲NO
     C ̲F ̲NO = 1                              C ̲INC =
                                     1
                                             C ̲F ̲NO
                                     = 1
                        C ̲F ̲NO LT F ̲COUNTxFG ̲COUNT?
                        INCREMENT C ̲F ̲NO
                                                   
                                     INCREMENT MMI ̲PT
                                                   
                                     INITIAL ̲CALL=TRUE
                        C ̲INC LT INC?     INCREMENT
                        C ̲INC
                        INCREMENT MMI ̲PT  C ̲F ̲NO = 1
                        INITIAL ̲CALL =    INITIAL ̲CALL
                        = FALSE
                                  TRUE
                        S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲
                        C ̲L ̲NO = L ̲NO
                        C ̲INC = 1
                        C ̲F ̲NO = 1

 END LOOP
 CONTINUE
                Figure 4.2.3.4.3-5


 F̲I̲N̲D̲ ̲F̲I̲R̲S̲T̲ ̲F̲I̲E̲L̲D̲ ̲(̲C̲O̲N̲T̲I̲N̲U̲E̲D̲)̲

 FIRST ̲FIELD.IOC ̲LINE ̲NO = C ̲L ̲NO

 FIRST ̲FIELD.IOC ̲INC ̲NO = C ̲INC

 FIRST ̲FIELD.IOC ̲FIELD ̲NO = C ̲F ̲NO + MAX ̲NO ̲OF ̲MARGIN
 ̲FIELDS

 SAVE ̲MMI ̲PT = MMI ̲PT

 END




































                Figure 4.2.3.4.3-6


 W̲R̲I̲T̲E̲ ̲A̲D̲M̲

 BUF ̲SIZE = SIZE (ADM2 ̲BUF)

 CIF ̲F ̲LIST.NO ̲OF ̲ELEM = 1

 CIF ̲F ̲LIST.ELEM(1).F ̲GROUP ̲ID = 1

 CIF ̲F ̲LIST.ELEM(1).F ̲BYTE ̲ADR = 0

 CIF ̲F ̲LIST ̲ELEM (1). REC ̲LENGTH = BUF ̲SIZE

 CASE WRITE ̲VIEW (BUF ̲SIZE, CIF ̲F ̲LIST, OUTPUT ̲CIF,
 ADM2 ̲BUF)

                        (CIF ̲F ̲LIST, CC): ERROR ̲OK

     ERROR? A̲N̲A̲L̲Y̲S̲E̲ ̲E̲R̲R̲O̲R̲ ̲(̲0̲,̲C̲C̲)̲

     OK?

 END CASE

 END
























                Figure 4.2.3.4.3-7


4.2.3.4.4    V̲D̲U̲ ̲F̲O̲R̲M̲A̲T̲ ̲O̲U̲T̲P̲U̲T̲



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

         This module outputs a format (possibly including data)
         to the VDU. it reads in the appropriate VUS ̲MMI ̲CONTROL
         ̲TABLE, sets output buffer structure, clears the format
         split, creates output buffers for the Format Handler
         (if required) and displays the format.



4.2.3.4.4.2 M̲o̲d̲u̲l̲e̲ ̲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)  VDU ̲FORMAT ̲OUTPUT

         b)  VDU ̲FORMAT ̲OUTPUT (R6)

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

         R6  LINK                    destr.

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

         R0-R7                       destr.

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

         None



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

         None





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

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

             CURRENT ̲FORMAT          4.2.3.5
             OUTPUT                  4.2.3.5
             FORMAT ̲IFCB             4.1.4
             FL ̲PT                   4.2.3.5
             BOFL                    4.2.3.5
             IOC ̲PT                  4.2.3.5
             BOIB                    4.2.3.5
             FIELD ̲LIST              4.2.3.5
             FIELD ̲LIST ̲LENGTH       4.2.3.5
             MMI ̲PT                  4.2.3.5
             EOMM                    4.2.3.5
             IOC ̲BLE                 4.2.3.5
             VDU ̲SPLIT ̲FAILED        CPS/DBD/001

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

             N/A.

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

             N/A



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

         The module performs as follows:

         -   Reads in the VUS ̲MMI ̲CONTROL ̲TABLE record corresponding
             to the current format

         -   Sets output buffer structure

         -   Clears split

         -   Calls Format Handler to get format

         -   Creates Field List and Buffer List based on VUS
             ̲MMI ̲CTRL ̲TABLE

         -   Inserts lines for repeatable fields corresponding
             to actual output

         -   Displays data fields by call to Format Handler

         -   Outputs remaining part of format


         V̲D̲U̲ ̲F̲O̲R̲M̲A̲T̲ ̲O̲U̲T̲P̲U̲T̲

         CURRENT ̲FORMAT = MSOS ̲OP.PARA1

         R̲E̲A̲D̲ ̲M̲M̲I̲ ̲C̲T̲R̲L̲ ̲T̲A̲B̲L̲E̲ ̲(̲C̲U̲R̲R̲E̲N̲T̲ ̲F̲O̲R̲M̲A̲T̲)̲ ̲4̲.̲2̲.̲3̲.̲6̲.̲1̲3̲-̲1̲)̲

         S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲ ̲(̲O̲U̲T̲P̲U̲T̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲6̲-̲1̲)̲

         C̲L̲E̲A̲R̲ ̲S̲P̲L̲I̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲4̲-̲1̲)̲

         GET ̲FORMAT (FORMAT ̲IFCB, CURRENT ̲FORMAT)(CC): OK

         C̲R̲E̲A̲T̲E̲ ̲F̲O̲R̲M̲A̲T̲ ̲B̲U̲F̲F̲E̲R̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲4̲-̲2̲)̲

         D̲I̲S̲P̲L̲A̲Y̲ ̲F̲O̲R̲M̲A̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲4̲-̲3̲)̲

         END






























                    Figure 4.2.3.4.4-1



         C̲R̲E̲A̲T̲E̲ ̲F̲O̲R̲M̲A̲T̲ ̲B̲U̲F̲F̲E̲R̲S̲

         FL ̲PT = BOFL

         IOC ̲PT = BOIB

         C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

         LOOP UNTIL MMI ̲PT GT EOMM

             S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲

             S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲0̲-̲1̲)̲

             S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

             F ̲TYPE NE EXCEPT?

             INC EQ ZERO?   INC = CNT

                            L̲I̲N̲E̲ ̲I̲N̲S̲E̲R̲T̲ ̲(̲F̲O̲R̲M̲A̲T̲ ̲I̲F̲C̲B̲,̲ ̲L̲ ̲N̲O̲,̲0̲,̲C̲N̲T̲)̲
                                                   (̲4̲.̲2̲.̲3̲.̲6̲.̲3̲-̲1̲)̲

             C ̲CNT = 1

             LOOP UNTIL C ̲INC GT INC

                 FG ̲COUNT EQ ZERO?  F̲I̲E̲L̲D̲ ̲R̲E̲P̲E̲A̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲6̲-̲1̲)̲

                 F̲I̲E̲L̲D̲ ̲G̲R̲O̲U̲P̲ ̲R̲E̲P̲E̲A̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲7̲-̲1̲)̲

                 INCREMENT INC

             END LOOP

             INCREMENT MMI ̲PT

         END LOOP

         END







                    Figure 4.2.3.4.4-2



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

 NO ̲OF ̲FIELDS = FL ̲PT - BOFL

 BYTE ̲LENGTH  = IOC ̲PT - BOIB

 CASE FIELDS ̲OUTPUT (FORMAT ̲IFCB, FIELD ̲LIST, IOC ̲BLE,
                    NO ̲OF ̲FIELDS, BYTE ̲LENGTH)(CC):
                   ERROR ̲OK

     ERROR?  CASE ANALYSE ̲ERROR (CC, 1, VDU ̲SPLIT ̲FAILED):
     L1

                 L1?  S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                           (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?

 END CASE

 CASE FORMAT ̲OUTPUT (FORMAT ̲IFCB)(CC): ERROR ̲OK

     ERROR?  CASE ANALYSE ̲ERROR (CC,1,VDU ̲SPLIT ̲FAILED):L1

             L1?  S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                       (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?


 END CASE

 S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲O̲K̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲







                Figure 4.2.3.4.4-3


4.2.3.4.5    S̲Y̲N̲T̲A̲X̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲



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

         This module scans through the Field List and Buffer
         List and based on the VUS ̲MMI ̲CONTROL ̲TABLE calls the
         appropriate validation procedure for each field, moving
         data to output buffer. The Error List is updated if
         appropriate.



4.2.3.4.5.2 M̲o̲d̲u̲l̲e̲ ̲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)  SYNTAX ̲VALIDATION

         b)  SYNTAX ̲VALIDATION (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̲

         R6  LINK                    Destr.

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

         R0-R7                       Destr.

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

         None



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

         None





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

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

             FL ̲PT                   4.2.3.5
             BOFL                    4.2.3.5
             IOC ̲PT                  4.2.3.5
             BOIB                    4.2.3.5
             MMI ̲PT                  4.2.3.5
             SAVE ̲MMI ̲PT             4.2.3.5
             FIXED                   4.2.3.5
             CIF ̲BUF ̲PT              4.2.3.5
             BOCB                    4.2.3.5
             VAL ̲ERR                 4.2.3.5
             ERR ̲LIST ̲FULL           4.2.3.5
             OLD ̲ERROR ̲LIST          4.2.3.5
             NE ̲PT                   4.2.3.5
             BOEL                    4.2.3.5
             OE ̲PT                   4.2.3.5
             EOEL                    4.2.3.5
             BNEL                    4.2.3.5
             ENEL                    4.2.3.5
             EOMM                    4.2.3.5
             INITIAL ̲CALL            4.2.3.5
             FINAL ̲CALL              4.2.3.5

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

             N/A

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

             BOER                    INTEGER
             ER ̲PT                   INTEGER
             EOER                    INTEGER



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

         This module performs syntax validation on input data
         from VDU:

         -   Scans through Field List and Buffer List

         -   Calls appropriate validation procedure

         -   Updates Error List (old or new)



 S̲Y̲N̲T̲A̲X̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲

 FL ̲PT = BOFL

 IOC ̲PT = BOIB

 MMI ̲PT = SAVE ̲MMI ̲PT

 S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

 L̲O̲O̲P̲ ̲U̲N̲T̲I̲L̲ ̲I̲O̲C̲ ̲L̲ ̲N̲O̲ ̲E̲Q̲ ̲Z̲E̲R̲O̲

     S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲7̲-̲1̲)̲

     S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲0̲-̲1̲)̲

     READ ̲ITEM ̲PT = IOC ̲PT

     ITEM ̲LENGTH = I ̲SIZE

     I ̲TYPE = FIXED?  FG ̲COUNT = ZERO? WRITE ̲ITEM ̲PT
     = IOC ̲F ̲NO x
                                                   
                                     I ̲SIZE + I ̲PT

                      WRITE ̲ITEM ̲PT = "(IOC ̲F ̲NO/F ̲COUNT)"
                   + I ̲PT

     WRITE ̲ITEM ̲PT = CIF ̲BUF ̲PT (I ̲PT ̲BASE) + I ̲SIZE

     WRITE ̲ITEM ̲PT GT EOCB (I ̲PT ̲BASE)? W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲(̲I̲
     ̲P̲T̲ ̲B̲A̲S̲E̲)̲
                                                  (̲4̲.̲2̲.̲3̲.̲6̲.̲1̲2̲-̲1̲)̲

     C̲H̲E̲C̲K̲ ̲F̲I̲N̲A̲L̲ ̲C̲A̲L̲L̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲8̲-̲1̲)̲

     CASE E̲X̲E̲C̲ ̲V̲A̲L̲ ̲P̲R̲O̲C̲ ̲(̲V̲A̲L̲ ̲P̲R̲O̲C̲,̲ ̲R̲E̲A̲D̲ ̲I̲T̲E̲M̲ ̲P̲T̲,̲ ̲I̲T̲E̲M̲
     ̲L̲E̲N̲G̲T̲H̲
             W̲R̲I̲T̲E̲ ̲I̲T̲E̲M̲ ̲P̲T̲)̲(̲I̲T̲E̲M̲ ̲L̲E̲N̲G̲T̲H̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲9̲-̲1̲)̲:̲
             ̲E̲R̲R̲O̲R̲ ̲O̲K̲

         ERROR?--- U̲P̲D̲A̲T̲E̲ ̲E̲R̲R̲O̲R̲ ̲L̲I̲S̲T̲ ̲(̲I̲O̲C̲ ̲L̲ ̲N̲O̲,̲ ̲I̲O̲C̲
                   ̲I̲N̲C̲,̲ ̲
                            I̲O̲C̲ ̲F̲ ̲N̲O̲,̲ ̲E̲R̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲4̲-̲1̲)̲

                 VAL ̲ERR = TRUE

                 ERR ̲LIST ̲FULL?   EXIT

         OK?

     END CASE

 Continued              "( )"  means integer division
 rounded up

                Figure 4.2.3.4.5-1


 S̲Y̲N̲T̲A̲X̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲          (continued)


     I ̲TYPE = VARIABLE?  CIF ̲BUF ̲PT (I ̲PT ̲BASE) = CIF
     ̲BUF ̲PT
                                     (I ̲PT ̲BASE) + ITEM
                                     ̲LENGTH

     INCREMENT FL ̲PT

     S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

     F̲I̲N̲D̲ ̲M̲M̲I̲ ̲E̲N̲T̲R̲Y̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲5̲-̲3̲)̲

     S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲8̲-̲1̲)̲

     IOC ̲PT = IOC ̲PT + BYTE ̲COUNT

 END LOOP

 END


























               Figure 4.2.3.4.5-2  









                Figuer 4.2.3.4.5-2


 F̲I̲N̲D̲ ̲M̲M̲I̲ ̲E̲N̲T̲R̲Y̲

 LOOP UNTIL MMI ̲PT GT EOMM

     L ̲NO EQ IOC ̲L ̲NO?  FG ̲COUNT EQ ZERO?  INITIAL ̲CALL=FALSE
                                             EXIT

     INCREMENT MMI ̲PT   LOOP UNTIL MMI ̲PT GT EOMM

                         "(IOC ̲F ̲NO/F ̲COUNT)" EQ F ̲NO?
                          EXIT

                          INCREMENT MMI ̲PT

                        END LOOP

 END LOOP


 INITIAL ̲CALL = TRUE

 END






















      "( )"  means integer division rounded up.



                Figure 4.2.3.4.5-3


4.2.3.4.6    S̲E̲M̲A̲N̲T̲I̲C̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲



4.2.3.4.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 performs semantic validation corresponding
         to the format. The validation is based on data set
         up by the syntax validation procedures.



4.2.3.4.6.2 M̲o̲d̲u̲l̲e̲ ̲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)  SEMANTIC ̲VALIDATION (FORMAT: FORMAT ̲ID ̲TYPE)

         b)  SEMANTIC ̲VALIDATION (R0, R6)

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

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

         R0  Pointer to Current Format   destr.
         R6  LINK                        destr.

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

         R0-R7

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

         None



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

         None



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

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

             CURRENT ̲FORMAT          4.2.3.5



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

             N/A

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

             N/A



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

         The module calls the semantic validation procedure
         corresponding to the CURRENT ̲FORMAT.




         S̲E̲M̲A̲N̲T̲I̲C̲ ̲V̲A̲L̲I̲D̲A̲T̲I̲O̲N̲

         CASE CURRENT ̲FORMAT OF

             PRPF?      PRPF ̲SEMAN ̲VAL

             PRAP?      PRAP ̲SEMAN ̲VAL

             PRAS?      PRAS ̲SEMAN ̲VAL

             CPFP?      CPFP ̲SEMAN ̲VAL

             CAPP?      CAPP ̲SEMAN ̲VAL

             CASP?      CASP ̲SEMAN ̲VAL

             SH ̲A?      SH ̲A ̲SEMAN ̲VAL

             SH ̲B?      SH ̲B ̲SEMAN ̲VAL

             SH ̲E?      SH ̲E ̲SEMAN ̲VAL

             READD?     READ ̲SEMAN ̲VAL

             RI ̲DEC?    RI ̲DEC ̲SEMAN ̲VAL

         END CASE

         END







4.2.3.4.7    D̲I̲S̲P̲L̲A̲Y̲ ̲E̲R̲R̲O̲R̲ ̲C̲O̲D̲E̲S̲



4.2.3.4.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 displays error codes in the margin of the
         format on the VDU. The error codes correspond to the
         errors found by the validation procedures. Previously
         displayed error codes are removed. Fields in error
         are displayed in REVERSE VIDEO and for fields previously
         displayed in REVERSE VIDEO this effect is removed.



4.2.3.4.7.2 M̲o̲d̲u̲l̲e̲ ̲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)  DISPLAY ̲ERROR ̲CODES

         b)  DISPLAY ̲ERROR ̲CODES (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̲

         R6  LINK                    Destr.

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

         R0-R7                       Destr.

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

         None



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



4.2.3.4.7.3.1 D̲I̲S̲P̲ ̲E̲R̲R̲ ̲C̲O̲D̲E̲

         Displays one error code in the margin by call to Format
         Handler (IOC)





4.2.3.4.7.3.2 C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲

         Changes field attributes to/from REVERSE ̲VIDEO.



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

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

             OLD ̲ERROR ̲LIST          4.2.3.5
             BOEL                    4.2.3.5
             EOEL                    4.2.3.5
             BNEL                    4.2.3.5
             ENEL                    4.2.3.5
             FL ̲PT                   4.2.3.5
             BOFL                    4.2.3.5
             IOC ̲PT                  4.2.3.5
             BOIB                    4.2.3.5
             FORMAT ̲IFCB             4.1.4
             FIELD ̲LIST              4.2.3.5
             IOC ̲BLE                 4.2.3.5
             VDU ̲SPLIT ̲FAILED        CPS/DBD/001

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

             N/A

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

             O ̲PT                    INTEGER
             N ̲PT                    INTEGER
             OEND                    INTEGER
             OEND                    INTEGER
             EEND                    INTEGER



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

         This module displayes the Old Error List or the NEW
         ERROR LIST and changes field attributes to/from REVERSE
         ̲VIDEO.



 D̲I̲S̲P̲L̲A̲Y̲ ̲E̲R̲R̲O̲R̲ ̲C̲O̲D̲E̲S̲

 OLD ̲ERROR ̲LIST?   O ̲PT = BNEL

 O ̲PT = BOEL       OEND = ENEL

 OEND = EOEL       N ̲PT = BOEL

 N ̲PT = BNEL       NEND = EOEL

 NEND = ENEL

 S̲E̲T̲ ̲E̲R̲R̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲8̲4̲.̲2̲.̲3̲.̲6̲.̲1̲1̲-̲1̲)̲

 OEND GT NEND? EEND = OEND

 EEND = NEND

 FL ̲PT = BOFL

 IOC ̲PT = BOIB

 LOOP UNTIL O ̲PT GT EEND

     S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲5̲.̲9̲-̲1̲)̲

     S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲8̲-̲1̲)̲

     O ̲L ̲NO LT N ̲L ̲NO?  B̲L̲A̲N̲K̲ ̲I̲N̲V̲E̲R̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲2̲)̲

                        INCREMENT O ̲PT

     O ̲L ̲NO EQ N ̲L ̲NO?  C̲H̲A̲N̲G̲E̲ ̲I̲N̲V̲E̲R̲T̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲3̲)̲

     D̲I̲S̲P̲L̲A̲Y̲ ̲I̲N̲V̲E̲R̲T̲
     (̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲4̲)̲      INCREMENT O ̲PT

     INCREMENT N ̲PT     INCREMENT N ̲PT

     INCREMNT FL ̲PT

     INCREMNT IOC ̲PT

     S̲E̲T̲ ̲E̲R̲R̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲8̲4̲.̲2̲.̲3̲.̲6̲.̲1̲1̲-̲1̲)̲

 END LOOP

 OLD ̲ERROR ̲LIST?  OLD ̲ERROR ̲LIST = FALSE

 END                      Figure 4.2.3.4.7-1


         B̲L̲A̲N̲K̲ ̲I̲N̲V̲E̲R̲T̲

         IOC ̲L ̲NO = O ̲L ̲NO

         IOC ̲INC = O ̲INC

         IOC ̲F ̲NO = 1

         START ̲BYTE = HEX 1E

         BYTE ̲COUNT = 0

         TYPE = 1

         NO ̲OF ̲FIELDS = 1

         BYTE ̲LENGTH = 3

         D̲I̲S̲P̲ ̲E̲R̲R̲ ̲C̲O̲D̲E̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲5̲)̲

         IOC ̲F ̲NO = O ̲F ̲NO

         FIELD ̲ATTR = 0

         C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲6̲)̲

         END




















                    Figure 4.2.3.4.7-2


         C̲H̲A̲N̲G̲E̲ ̲I̲N̲V̲E̲R̲T̲

         IOC ̲L ̲NO =  N ̲L ̲NO

         IOC ̲INC = N ̲INC

         IOC ̲F ̲NO = 1

         START ̲BYTE = HEX 1E

         BYTE ̲COUNT = 3

         TYPE = 1

         DATA = N ̲ERR

         NO ̲OF ̲FIELDS = 1

         BYTE ̲LENGTH = 6

         D̲I̲S̲P̲ ̲E̲R̲R̲ ̲C̲O̲D̲E̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲5̲)̲

         IOC ̲F ̲NO = O ̲F ̲NO

         FIELD ̲ATTR = 0

         C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲6̲)̲

         IOC ̲F ̲NO = N ̲F ̲NO

         FIELD ̲ATTR = BIT ̲2

         C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲6̲)̲

         END













                    Figure 4.2.3.4.7-3


         D̲I̲S̲P̲L̲A̲Y̲ ̲I̲N̲V̲E̲R̲T̲

         IOC ̲L ̲NO =  N ̲L ̲NO

         IOC ̲INC = N ̲INC

         IOC ̲F ̲NO = 1

         START ̲BYTE = HEX 1E

         BYTE ̲COUNT = 3

         TYPE = 1

         DATA = N ̲ERR

         NO ̲OF ̲FIELDS = 1

         BYTE ̲LENGTH = 6

         D̲I̲S̲P̲ ̲E̲R̲R̲ ̲C̲O̲D̲E̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲5̲)̲

         IOC ̲F ̲NO = N ̲F ̲NO

         FIELD ̲ATTR = BIT ̲2

         C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲6̲-̲6̲)̲

         END




















                    Figure 4.2.3.4.7-4


         D̲I̲S̲P̲ ̲E̲R̲R̲ ̲C̲O̲D̲E̲

         CASE FIELDS ̲OUTPUT (FORMAT ̲IFCB, FIELD ̲LIST, IOC ̲BLE,
                            NO ̲OF ̲FIELDS, BYTE ̲LENGTH)(CC):
                                                        ERROR
                                     ̲OK

             ERROR?  CASE ANALYZE ̲ERROR (CC, 1,VDU ̲SPLIT ̲FAILED):L1

                        L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                                    (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

                     END CASE

             OK?

         END CASE

         END




























                    Figure 4.2.3.4.7-5


         C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲

         CASE CHANGE ̲FIELD ̲ATTR (FORMAT ̲IFCB, IOC ̲FIELD ̲LIST,
                            FIELD ̲ATTR)(CC): ERROR ̲OK

             ERROR?  CASE ANALYZE ̲ERROR (CC, 1,VDU ̲SPLIT ̲FAILED):L1

                        L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲
                                                    (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

                     END CASE

             OK?

         END CASE

         END




























                    Figure 4.2.3.4.7-6


4.2.3.4.8    G̲A̲ ̲I̲N̲P̲U̲T̲



4.2.3.4.8.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 inputs a message after Garble Correction,
         performs all necessary validation and transfers it
         to a CIF if valid.



4.2.3.4.8.2 M̲o̲d̲u̲l̲e̲ ̲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)  GA ̲INPUT (INITIAL ̲CONT: BOOLEAN

         b)  GA ̲INPUT (R0, R6)

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

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

         R0: BOOLEAN     Destr.
         R6: LINK     Destr.

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

         R0-R7           Destr.



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



4.2.3.4.8.3.1 C̲A̲L̲C̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲

         Calculates the maximum number of lines (fields) on
         the screen for use by call to Format Handler (IOC).



4.2.3.4.8.3.2 G̲A̲ ̲V̲A̲L̲

         Performs syntax and semantic validation of the message.





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

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

             BOCB                  4.2.3.6
             ACP ̲PARAM ̲FIELD       CPS/DBD/001
             TEXT ̲PARAMS           CPS/DBD/001
             CURRENT ̲FORMAT        4.2.3.6
             GA80 ̲HEAD ̲L ̲NO        CPS/DBD/001
             GA80 ̲HEAD ̲F ̲NO        CPS/DBD/001
             GA69 ̲HEAD ̲L ̲NO        CPS/DBD/001
             GA69 ̲HEAD ̲F ̲NO        CPS/DBD/001
             FIRST ̲FIELD           4.2.3.5
             FL ̲PT                 4.2.3.5
             BOFL                  4.2.3.5
             FORMAT ̲IFCB           4.1.4
             IOC ̲BLE               4.2.3.5
             NO ̲OF ̲FIELDS          4.2.3.5
             VDU ̲OP                4.1.4
             MSOS ̲S3               4.1.4
             VAL ̲ERR               4.2.3.5
             INITIAL               4.2.3.5
             VDU ̲SPLIT ̲FAILED      CPS/DBD/001
             ACP ̲TEXT ̲CORC ̲FIELD   CPS/DBD/001
             FIELD ̲LIST            4.2.3.5
             FIELD ̲LIST ̲LENGTH     4.2.3.5
             IOC ̲BUF ̲LEN           4.2.3.5
             CIF ̲BUF ̲PT            4.2.3.5
             IOC ̲PT                4.2.3.5
             BOIB                  4.2.3.5
             SEDIA ̲CC ̲OP           4.1.4

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

             N/A

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

             TOTAL ̲CNT:            INTEGER
             END ̲OF ̲BT:            BOOLEAN
             NO ̲OF ̲BT:             INTEGER
             MAX ̲L ̲SIZE:           INTEGER
             MAX ̲L ̲SIZE:           INTEGER
             NO ̲OF ̲FIELDS:         INTEGER
             TOTAL ̲NO ̲OF ̲FIELDS:   INTEGER
             CURRENT ̲CIF ̲F ̲NO:     INTEGER





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

         This module performs:

         -   Input of message from VDU

         -   Detection and removal of "BT" and "NNNN"

         -   Distribution of message to CIF-fields

         -   Validation of message (number of "BTs" and presence
             of "NNNN").




G̲A̲ ̲I̲N̲P̲U̲T̲

INITIAL? C̲L̲E̲A̲R̲(̲A̲D̲M̲2̲ ̲B̲U̲F̲,̲ ̲A̲D̲M̲ ̲B̲U̲F̲ ̲L̲E̲N̲G̲T̲H̲,̲ ̲0̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

       C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

       C̲L̲E̲A̲R̲ ̲(̲B̲O̲C̲B̲(̲1̲)̲,̲E̲O̲C̲B̲(̲M̲A̲X̲ ̲N̲O̲ ̲O̲F̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲)̲-̲B̲O̲X̲B̲(̲1̲)̲,̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

       S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲(̲I̲N̲P̲U̲T̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲6̲-̲1̲)̲

       EQUIVALENCE(BOCB(ACP ̲PARAM ̲FIELD),TEXT ̲PARAMS)

       TOTAL ̲CNT = TEXT ̲PARAMS.HEADER ̲LINE ̲COUNT +
                   TEXT ̲PARAMS.TEXT ̲LINE ̲COUNT +
                   TEXT ̲PARAMS.TEXT ̲ENDING ̲COUNT + 3

       CURRENT ̲FORMAT EQ GA69?  FIRST ̲FIELD.IOC ̲LINE
                                ̲NO=GA69 ̲HEAD ̲L ̲NO

       FIRST ̲FIELD.IOC ̲LINE ̲NO= FIRST ̲FIELD.IOC ̲NO =
                                1
            GA80 ̲HEAD ̲L ̲NO

       FIRST ̲FIELD.IOC ̲INC ̲NO=1 FIRST ̲FIELD.IOC ̲FIELD
                                ̲NO=GA69 ̲HEAD ̲F ̲NO

       FIRST ̲FIELD.IOC ̲FIELD ̲NO = GA80 ̲HEAD ̲F ̲NO

       G̲A̲L̲C̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲-̲2̲)̲

       FL ̲PT = BOFL

       CASE INIT.FIELDS ̲WAIT (FORMAT ̲IFCB, IOC ̲BUS,
       FIRST ̲FIELD,
                             NO ̲OF ̲FIELDS, VUD ̲OP)(CC,SO
                     ̲REF):ERROR ̲OK

             ERROR?  ANALYZE ̲ERROR (CC,0)
             OK?     ASSOCIATE (MSOS ̲S3, VDU ̲OP): OK

       END CASE

       VAL ̲ERR = INITIAL = FALSE             RETURN

CASE WAIT ̲SYSTEM ̲CALL(VDU ̲OP)(OUTR0, OUTR1, OUTR2, OUTR3,
 OUTR4)
                                                   
    (CC):ERROR ̲OK

 ERROR?  CASE ANALYZE ̲ERROR (CC,1,VDU ̲SPLIT ̲FAILED):L1
            L1?  S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

         END CASE

 OK?

END CASE

CONTINUED                Figure 4.2.3.4.7-1


G̲A̲ ̲I̲N̲P̲U̲T̲            (CONTINUED)

G̲A̲ ̲V̲A̲L̲ ̲(̲)̲

END ̲OF ̲INPUT?    NO ̲OF ̲BT NE 2?  VAL ̲ERR = TRUE

                             S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲
                     ̲E̲R̲R̲O̲R̲)̲
                                            (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             TEXT ̲PARAMS.TEXT ̲ENDING ̲LINE ̲COUNT = FL
             ̲PT - TEXT ̲PARAMS.
                                                   
 TEXT ̲LINE ̲COUNT

             TEXT ̲PARAMS.TEXT ̲ENDING ̲START ̲OFFSET =
             0

             TEXT ̲PARAMS.TEXT ̲ENDING ̲END ̲OFFSET = CIF
             ̲BUF ̲PT (ACP ̲TEXT ̲
                                                   
 CORC ̲FIELD)

             W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲ ̲(̲A̲C̲P̲ ̲T̲E̲X̲T̲ ̲C̲O̲R̲C̲ ̲F̲I̲E̲L̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲2̲-̲1̲)̲

             S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲E̲R̲R̲O̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

VAL ̲ERR?         S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲E̲R̲R̲O̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

C̲L̲E̲A̲R̲ ̲(̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲,̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲L̲E̲N̲G̲T̲H̲,̲0̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲5̲)̲

C̲A̲L̲C̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲-̲2̲)̲

CASE INIT FIELDS ̲INPUT (FORMAT ̲IFCB,IOC ̲BLE, FIRST ̲FIELD,
 NO ̲OF ̲FIELDS,
                       VDU ̲OP)(CC,SO ̲REF): ERROR ̲OK

 ERROR?   ANALYZE ̲ERROR (CC,0)

 OK?      ASSOCIATE (MSOS ̲S3, VDU ̲OP): OK

END CASE

END






C̲A̲L̲C̲ ̲N̲O̲ ̲O̲F̲ ̲F̲I̲E̲L̲D̲S̲

CURRENT ̲FORMAT.EQ GA80?  MAX ̲L ̲SIZE = 83

MAX ̲L ̲SIZE = 72


NO ̲OF ̲FIELDS = (IOC ̲BUF ̲LEN/MAX ̲L ̲SIZE)

NO ̲OF ̲FIELDS EQ TOTAL ̲NO ̲OF ̲FIELDS?  END ̲OF ̲INPUT =
 TRUE

NO ̲ON ̲FIELDS GT TOTAL ̲NO ̲OF ̲FIELDS?  NO ̲OF ̲FIELDS =
 TOTAL ̲NO ̲OF ̲FIELDS

END ̲OF ̲INPUT = FALSE

END































                Figure 4.2.3.4.7-2


G̲A̲ ̲V̲A̲L̲

NO ̲OF ̲BT = 0

CIF ̲BUF ̲PT (ACP ̲PARAM ̲FIELD) = BOCB (ACP ̲PARAM ̲FIELD)

IOC ̲PT = BOIB

S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

LOOP UNTIL IOC ̲L ̲NO EQ ZERO

 S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲8̲-̲1̲)̲

 BYTE ̲COUNT EQ 2?  DATA EQ "BT"?   INCREMENT NO ̲OF ̲BT

                                   N̲E̲X̲T̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲-̲4̲)̲

                                   VAL ̲ERR?  EXIT

 BYTE ̲COUNT EQ4?  DATA EQ "NNNN"?  EXIT

 % CIF ̲BUF ̲PT (CURRENT ̲CIF ̲F ̲NO) = %IOC ̲PT

 CIF ̲BUF ̲PT (CURRENT ̲CIF ̲F ̲NO) =   CIF ̲BUF ̲PT (CURRENT
                                   ̲CIF ̲F ̲NO)+
                                   BYTE ̲COUNT

 IOC ̲PT = IOC ̲PT + BYTE ̲COUNT

 INCREMENT FL ̲PT

 S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

END LOOP

DECREMENT FL ̲PT

S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲9̲-̲1̲)̲

FIRST ̲FIELD.IOC ̲LINE ̲NO = IOC ̲L ̲NO

FIRST ̲FIELD.IOC ̲INC ̲NO = IOC ̲INC

FIRST ̲FIELD.IOC ̲FIELD ̲NO = IOC ̲F ̲NO

INCREMENT FL ̲PT

TOTAL ̲CNT = TOTAL ̲CNT - NO ̲OF ̲FIELDS

END                      Figure 4.2.3.4.7-3


 N̲E̲X̲T̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲

 NO ̲OF ̲BT EQ 1?  W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲ ̲(̲A̲C̲P̲ ̲H̲E̲A̲D̲E̲R̲ ̲F̲I̲E̲L̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲2̲-̲1̲)̲

                 CURRENT ̲CIF ̲F ̲NO = TEXT ̲FIELD

                 CIF ̲BUF ̲PT (CURRENT ̲CIF ̲F ̲NO)=BOCB(CURRENT
                 ̲CIF ̲F ̲NO)

                 TEXT ̲PARAMS.HEADER ̲LINE ̲COUNT = FL
                 ̲PT - BOFL

                 TEXT ̲PARAMS.HEADER.START ̲OFFSET = 0

                 TEXT ̲PARAMS.HEADER ̲END ̲OFFSET = CIF
                 ̲BUF ̲PT
                                                   
 (ACP ̲HEADER ̲FIELD)

 NO ̲OF ̲BT EQ 2?  W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲ ̲(̲T̲E̲X̲T̲ ̲F̲I̲E̲L̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲1̲2̲-̲1̲)̲

                 CURRENT ̲CIF ̲F ̲NO = ACP ̲TEXT ̲CORC ̲FIELD

                 CIF ̲BUF ̲PT (CURRENT ̲CIF ̲F ̲NO) = BOCB(CURRENT
                 ̲CIF ̲F ̲NO)

                 TEXT ̲PARAMS.TEXT ̲LINE ̲COUNT = FL ̲PT
                 - TEXT ̲PARAMS.
                                                   
 HEADER ̲LINE ̲COUNT

                 TEXT ̲PARAMS.TEXT ̲START ̲OFFSET = 0

                 TEXT ̲PARAMS.TEXT ̲END ̲OFFSET = CIF ̲BUF
                 ̲PT (TEXT ̲FIELD)

 VAL ̲ERROR = TRUE

 END
















                Figure 4.2.3.4.7-4



4.2.3.5  C̲o̲m̲m̲o̲n̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲

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

             N/A

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

             N/A

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

             TYPE  BUF ̲CTRL ̲REC ̲TYPE =

                      RECORD
                         FIELD ̲LIST ̲LENGTH:  INTEGER
                         IOC ̲BUFFER ̲LENGTH:  INTEGER
                         CIF ̲BUF ̲LEN ̲ARRAY:  CIF ̲BUF ̲LEN ̲ARRAY
                                             ̲TYPE
                      END;

             TYPE  CIF ̲BUF ̲LEN ̲ARRAY ̲TYPE =

                   ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS - 1) OF INTEGER

             VAR   MMI ̲HEAD ̲REC =

                      RECORD
                         FORMAT ̲ID           FORMAT ̲ID ̲TYPE
                         CONT ̲FORMAT ̲ID      FORMAT ̲ID ̲TYPE
                         INPUT ̲BUFFER ̲CTRL ̲
                         GROUP               BUF ̲CTRL ̲REC ̲TYPE
                         OUTPUT ̲BUFFER ̲CTRL ̲
                         GROUP               BUF ̲CTRL ̲REC ̲TYPE
                         MAX ̲NO ̲OF ̲MARGIN ̲
                         FIELDS              INTEGER
                         CIF ̲ACCESS          BOOLEAN
                         MMI ̲REC ̲COUNT       INTEGER
                      END;

             VAR   CMD ̲OP ̲CNT                INTEGER
                   OP ̲LIST = ARRAY(1..3) OF INTEGER



             TYPE  MMI ̲CTRL ̲REC =

                      RECORD
                         FIELD ̲TYPE           MMI ̲FIELD ̲TYPE
                         LINE ̲NO              INTEGER
                         INC ̲COUNT            INTEGER
                         FIELD ̲NO             INTEGER
                         FIELD ̲COUNT          INTEGER
                         FIELD ̲GROUP ̲COUNT    INTEGER
                         FIELD ̲SIZE           INTEGER
                         CIF ̲FIELD ̲NO         INTEGER
                         ITEM ̲SIZE            INTEGER
                         ITEM ̲TYPE            MMI ̲ITEM ̲TYPE
                         ITEM ̲PT ̲BASE         INTEGER
                         DATA ̲ITEM ̲PT         INTEGER
                         ITEM ̲COUNT ̲BASE      INTEGER
                         ITEM ̲COUNT ̲PT        INTEGER
                         DISPLAY ̲PROCEDURE    DISPLAY ̲PROCEDURE
                                              ̲TYPE
                         VALIDATION ̲PROCEDURE VALIDATION ̲PROCEDURE
                                              ̲TYPE
                         ERROR ̲CODE           ERROR ̲CODE ̲TYPE
                      END;

             TYPE  MMI ̲FIELD ̲TYPE             (FIXED, REPEATABLE,
                                              APPENDABLE, INPUT,
                                              OUTPUT, EXCEPT)

             TYPE  MMI ̲ITEM ̲TYPE              (FIXED, VARIABLE)

             VAR   MMI ̲CTRL ̲TABLE =

                   ARRAY(1..MAX ̲MMI ̲CTRL ̲TABLE ̲SIZE) OF MMI
                   ̲CTRL ̲REC

             VAR   FIRST ̲FIELD =

                      RECORD
                         IOC ̲LINE ̲NO          INTEGER
                         IOC ̲INC ̲NO           INTEGER
                         IOC ̲FIELD ̲NO         INTEGER
                      END;

             VAR   IOC ̲FIELD ̲LIST =

                      ARRAY (1..END ̲OF ̲BUFFER ̲AREA)OF INTEGER;

             VAR IOC ̲BUF =

                      ARRAY (1..END ̲OF ̲BUFFER ̲AREA) OF INTEGER;



             TYPE  IOC.HEADER ̲TYPE =

                      RECORD
                         START ̲BYTE           BYTE
                         BYTE ̲COUNT           BYTE
                         TYPE                 BYTE
                      END;

             VAR   IOC ̲REC =

                      RECORD
                         IOC ̲HEADER           IOC ̲HEADER ̲TYPE
                         IOC ̲DATA             ARRAY (1..BYTE
                                              ̲COUNT) OF CHAR
                      END;

             VAR   IOC ̲BLE                    BUFFER ̲LIST ̲ELEMENT
                                              ̲TYPE

             TYPE  F ̲LIST ̲ELEM =

                      RECORD
                         F ̲GROUP ̲ID           NO ̲OF ̲FIELDS
                         F ̲BYTE ̲ADR           INTEGER
                         REC ̲LENGTH           INTEGER
                      END;

             VAR   CIF ̲F ̲LIST =

                      RECORD
                         NO ̲OF ̲ELEM           INTEGER
                         ELEM                 ARRAY (1..MAX
                                              ̲NO ̲OF ̲CIF ̲FIELDS)
                                              OF F ̲LIST ̲ELEM
                      END;

             VAR   CIF ̲BUF (1..N) =

                      ARRAY (1..END ̲OF ̲BUFFER ̲AREA) OF INTEGER;

             VAR   ADM1 ̲BUF =

                      ARRAY (1..EAM1) OF INTEGER;

             VAR   ADM2 ̲BUF =

                      ARRAY(1..EAM2) OF INTEGER;



             TYPE  ERRL ̲REC =

                      RECORD
                         MARGIN ̲LINE ̲NO       INTEGER
                         MARGIN ̲INC ̲NO        INTEGER
                         MARGIN ̲ERR ̲CODE      INTEGER
                         ERR ̲FIELD ̲NO         INTEGER
                      END;

             VAR   ERR ̲LIST =

                      ARRAY (1..2 x MAX ̲NO ̲OF ̲VAL ̲ERR) OF ERRL
                      ̲REC;

             VAR   KEY ̲LIST =

                      RECORD
                         INFO                 INTEGER
                         LINK                 POINTER
                         KEY                  FORMAT ̲ID ̲TYPE
                      END;

             VAR   MMI ̲TMP ̲PARAM              TMP ̲PARAM ̲TYPE;

             VAR   BAM1                       INTEGER
                   ADM1 ̲PT                    INTEGER
                   EAM1                       INTEGER
                   BAM2                       INTEGER
                   ADM2 ̲PT                    INTEGER
                   EAM2                       INTEGER
                   BIBL                       INTEGER
                   ICBL ̲PT                    INTEGER
                   EIBL                       INTEGER
                   BOBL                       INTEGER
                   OCBL ̲PT                    INTEGER
                   EOBL                       INTEGER
                   BOMM                       INTEGER
                   MMI ̲PT                     INTEGER
                   EOMM                       INTEGER
                   BOFL                       INTEGER
                   FL ̲PT                      INTEGER
                   EOFL                       INTEGER
                   BOIB                       INTEGER
                   IOC ̲PT                     INTEGER
                   EOIB                       INTEGER
                   FIELD ̲LIST ̲LENGTH          INTEGER
                   IOC ̲BUF ̲LENGTH             INTEGER



             VAR   BOCB=

                      ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS-1) OF INTEGER;

                   EOCB =

                      ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS-1) OF INTEGER;

                   CIF ̲BUF ̲PT =

                      ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS-1) OF INTEGER;

                   EOCF =

                      ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS-1) OF INTEGER;

             VAR   BOEL                       INTEGER
                   OE ̲PT                      INTEGER
                   EOEL                       INTEGER
                   BNEL                       INTEGER
                   NE ̲PT                      INTEGER
                   ENEL                       INTEGER

             VAR   CIF ̲BUF ̲LENGTH =

                      ARRAY (1..MAX ̲NO ̲OF ̲CIF ̲FIELDS-1) OF INTEGER;

             VAR   BUFFERS ̲SHARED             BOOLEAN
                   INPUT                      BOOLEAN
                   MMI ̲HEAD ̲SIZE              SIZE(MMI ̲HEAD
                                              ̲REC)
                   MMI ̲SECTION ̲SIZE           INTEGER
                   CTRL ̲REC ̲SIZE              SIZE(MMI ̲CTRL
                                              ̲REC)
                   CURRENT ̲FORMAT             FORMAT ̲ID ̲TYPE
                   END ̲OF ̲CIF ̲FIELD           BOOLEAN
                   END ̲OF ̲CIF ̲BUF             BOOLEAN
                   F ̲BYTE ̲ADR                 INTEGER
                   FIXED                      BOOLEAN
                   OUTPUT                     BOOLEAN
                   ADM                        BOOLEAN
                   INITIAL                    BOOLEAN
                   FIELD ̲LIST ̲FULL            BOOLEAN
                   END ̲OF ̲IOC ̲BUF             BOOLEAN
                   ADM1 ̲BUF ̲LENGTH            INTEGER
                   ADM2 ̲BUF ̲LENGTH            INTEGER
                   VAL ̲ERR                    BOOLEAN
                   SAVE ̲MMI ̲PT                INTEGER
                   OLD ̲ERROR ̲LIST             BOOLEAN
                   INITIAL ̲CALL               BOOLEAN
                   FINAL ̲CALL                 BOOLEAN


4.2.3.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.3.6.1    S̲T̲O̲P̲ ̲I̲N̲P̲U̲T̲ ̲O̲U̲T̲P̲U̲T̲



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

         Cancels outstanding system call and clears buffers.



4.2.3.6.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)  STOP ̲INPUT ̲OUTPUT

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

         R6  LINK           Destr.

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

         R0-R7              Destr.

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

         None



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

             MSOS ̲S2                          4.1.4

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

             VDU ̲SPLIT ̲FAILED                 CPS/DBD/001
             CANCELLED                        CPS/DBD/001



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

             N/A



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

         Ref. figure 4.2.3.6-1.




 S̲T̲O̲P̲ ̲I̲N̲P̲U̲T̲ ̲O̲U̲T̲P̲U̲T̲

 CMD ̲OP ̲CNT LT 2?     S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲O̲K̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

 CANCEL ̲SYSCALL (VDU ̲OP): OK

 CASE WAIT ̲SYSTEM ̲CALL (VDU ̲OP) (OUTR0, OUTR1, OUTR2,
 OUTR3, OUTR4)
                                                   
                                               (CC):
                                              ERROR
                                              ̲OK

     ERROR?  CASE ANALYZE ̲ERROR(CC,2,SPLIT ̲FAILED, CANCELLED):
             L1, L2

              L1?

              L2?

             END CASE

     OK?

 END CASE

 S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲O̲K̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲


 C̲L̲E̲A̲N̲ ̲U̲P̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲-̲1̲)̲

 END



















                Figure 4.2.3.6.1-1


4.2.3.6.2    C̲L̲E̲A̲N̲ ̲U̲P̲



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

         Clears the format split and clears buffers.



4.2.3.6.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)  CLEAN ̲UP

         b)  CLEAN ̲UP (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̲

         R6  LINK                   Destr.

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

         R0-R7                      Destr.

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

         None



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

             FORMAT ̲IFCB            4.1.4
             IOC ̲PT                 4.2.3.5
             BAM1                   4.2.3.5
             BAM2                   4.2.3.5
             EAM1                   4.2.3.5
             EAM2                   4.2.3.5



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

             CLEAR ̲THE ̲SPLIT        CPS/DBD/001
             VDU ̲SPLIT ̲FAILED       CPS/DBD/001
             MAX ̲NO ̲OF ̲CIF ̲FIELDS   CPS/DBD/001

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

             N/A



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

         Ref. figure 4.2.3.6.2-1.




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

 CASE SEND ̲CONTROL (FORMAT ̲IFCB, CLEAR ̲THE ̲SPLIT): ERROR
 ̲OK

     ERROR? CASE ANALYZE ̲ERROR (CC, 1, VDU ̲SPLIT ̲FAILED):L1

             L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲ ̲F̲A̲I̲L̲E̲D̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?


 END CASE

 C̲L̲E̲A̲R̲ ̲(̲%̲I̲O̲C̲ ̲P̲T̲,̲ ̲E̲O̲C̲B̲(̲M̲A̲X̲ ̲N̲O̲ ̲O̲F̲ ̲C̲I̲F̲ ̲F̲I̲E̲L̲D̲S̲)̲-̲I̲O̲C̲ ̲P̲T̲,̲
 ̲0̲)̲

 C̲L̲E̲A̲R̲ ̲(̲%̲B̲A̲M̲1̲,̲ ̲E̲A̲M̲1̲ ̲-̲ ̲B̲A̲M̲1̲,̲ ̲0̲)̲

 C̲L̲E̲A̲R̲ ̲(̲%̲B̲A̲M̲2̲,̲ ̲E̲A̲M̲2̲ ̲-̲ ̲B̲A̲M̲2̲,̲ ̲0̲)̲

 E̲N̲D̲




















                Figure 4.2.3.6.2-1


4.2.3.6.3    L̲I̲N̲E̲ ̲I̲N̲S̲E̲R̲T̲



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

         Insert number of lines specified after line/incarnation
         specified.



4.2.3.6.3.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

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

         a)  LINE ̲INSERT (SPLIT:    SPLIT ̲TYPE
                          LINE:     LINE ̲NUMBER ̲TYPE
                          INC:      INCARNATION ̲NUMBER ̲TYPE)

         b)  LINES ̲INSERT (R0, R1, R2, 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: SPLIT ̲TYPE                  destr.
         R1: LINE ̲NUMBER ̲TYPE            destr.
         R2: INCARNATION ̲NUMBER ̲TYPE     destr.
         R6: LINK                        destr.

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

         R0-R7                           destr.

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

         None.



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

             FORMAT ̲IFCB            4.1.4
             L ̲NO                   4.2.3.5
             INC                    4.2.3.5
             CNT                    4.2.3.5



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

             VDU ̲SPLIT ̲FAILED       CPS/DBD/001
             INSERT ̲NOT ̲ALLOWED     CPS/DBD/001

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

             N/A



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

         Ref. figure 4.2.3.6.3-1.




 L̲I̲N̲E̲ ̲I̲N̲S̲E̲R̲T̲

 CASE INSERT ̲LINES (FORMAT ̲IFCB, L ̲NO, INC, CNT)(CC):
 ERROR ̲OK

     ERROR? CASE ANALYSE ̲ERROR (CC, 2, VDU ̲SPLIT ̲FAILED)
                               INSERT ̲NOT ̲ALLOWED)::L1,
                               L2

                   L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲
                   ̲F̲A̲I̲L̲E̲D̲)̲
                                               (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

                   L2?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲E̲R̲R̲O̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?


 END CASE





























                Figure 4.2.3.6.3-1


4.2.3.6.4    L̲I̲N̲E̲ ̲D̲E̲L̲E̲T̲E̲



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

         Deletes number of lines specified after line/incarnation
         specified.



4.2.3.6.4.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲

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

         a)  LINE ̲INSERT (SPLIT:              SPLIT ̲TYPE
                         LINE:                LINE ̲NUMBER ̲TYPE
                         INC:                 INCARNATION ̲NUMBER
                                              ̲TYPE)

         b)  LINE ̲INSERT (R0, R1, R2, 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: SPLIT ̲TYPE                       Destr.
         R1: LINE ̲NUMBER ̲TYPE                 Destr.
         R2: INCARNATION ̲NUMBER ̲TYPE          Destr.
         R6: LINK                             Destr.

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

         R0-R7                                Destr.

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

         None



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

             FORMAT ̲IFCB                      4.1.4
             L ̲NO                             4.2.3.5
             INC                              4.2.3.5
             CNT                              4.2.3.5



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

             VDU ̲SPLIT ̲FAILED                 CPS/DBD/001
             DELETE ̲NOT ̲ALLOWED               CPS/DBD/001

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

             N/A



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

         Ref. figure 4.2.3.6.4-1.




 L̲I̲N̲E̲ ̲D̲E̲L̲E̲T̲E̲

 CASE DELETE ̲LINES (FORMAT ̲IFCB, L ̲NO, INC, CNT)(CC):
 ERROR ̲OK

     ERROR? CASE ANALYSE ̲ERROR (CC, 2, VDU ̲SPLIT ̲FAILED)
                               DELETE ̲NOT ̲ALLOWED)::L1,
                               L2

                   L1?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲S̲P̲L̲I̲T̲
                   ̲F̲A̲I̲L̲E̲D̲)̲
                                               (̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

                   L2?   S̲I̲G̲N̲A̲L̲ ̲S̲E̲F̲C̲O̲ ̲(̲M̲S̲O̲S̲ ̲S̲2̲,̲ ̲E̲R̲R̲O̲R̲)̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲

             END CASE

     OK?


 END CASE





























                Figure 4.2.3.6.4-1


4.2.3.6.5    C̲L̲E̲A̲R̲



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

         Clears specified area by overwriting with specified
         character.



4.2.3.6.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)  CLEAR (POINTER:   POINTER ̲TYPE
                    LENGTH:    INTEGER
                    CHAR:      CHARACTER)

         b)  CLEAR (R0, R1, R2, R6)

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

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

         R0: POINTER ̲TYPE      destr.
         R1: INTEGER           destr.
         R2: CHARACTER         destr.
         R6: LINK              destr.

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

         R0-R7

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

         None



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

             N/A



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

             N/A

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

             N/A



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

         Ref. Functional Specification.



4.2.3.6.6    S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲



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

         Sets up pointers to buffers according to VUS ̲MMI ̲CONTROL
         ̲TABLE ̲HEADER. Call parameter specifies whether to use
         input of output buffer control sets.



4.2.3.6.6.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 ̲BUFFER ̲STRUCTURE (INPUT ̲OUTPUT: BOOLEAN)

         b)  SET ̲BUFFER ̲STRUCTURE (R0, R6)

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

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

         R0: BOOLEAN           destr.
         R6: LINK              destr.

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

         R0-R7                 destr.

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

         None


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

             FIELD ̲LIST ̲LENGTH                4.2.3.5
             INPUT ̲BUFFER ̲CTRL ̲GROUP          4.2.3.5
             EOFL                             4.2.3.5
             BOFL                             4.2.3.5
             IOC ̲BUF ̲LENGTH                   4.2.3.5
             BOIB                             4.2.3.5
             ICL ̲PT                           4.2.3.5
             BIBL                             4.2.3.5
             BOCB                             4.2.3.5
             EOIB                             4.2.3.5
             EIBL                             4.2.3.5
             CIF ̲BUF ̲LENGTH                   4.2.3.5
             EOCB                             4.2.3.5
             OUTPUT ̲BUFFER ̲CTRL ̲GROUP         4.2.3.5
             BUFFERS ̲SHARED                   4.2.3.5
             CIF ̲F ̲LIST                       4.2.3.5
             IOC ̲BLE                          4.2.3.5
             MMI ̲PT                           4.2.3.5
             INPUT                            4.2.3.5
             MMI ̲SECTION ̲SIZE                 4.2.3.5
             CTRL ̲REC ̲SIZE                    4.2.3.5
             MMI ̲REC ̲COUNT                    4.2.3.5

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

             N/A

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

             N/A



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

         Refer figure 4.2.3.6.6.-1



S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲
INPUT?   FIELD ̲LIST ̲LENGTH = INPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL ̲REC ̲
                                            TYPE.FIELD ̲LIST ̲LENGTH
     EOFL = BOFL + FIELD ̲LIST ̲LENGTH
     IOC ̲BUF ̲LENGTH = INPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL ̲REC ̲
                                          TYPE.IOC ̲BUFFER ̲LENGTH
     BOIB = EOFL+1
     EOIB = BOIB + IOC ̲BUF ̲LENGTH
     ICBL ̲PT = BIBL
     BOCB (ICBL ̲PT) = EOIB + 1
     LOOP UNTIL ICBL ̲PT GT EIBL
         CIF ̲BUF ̲LENGTH(ICBL ̲PT) = INPUT ̲BUFFER ̲CTRL ̲GROUP
                                   BUFFER ̲CTRL ̲REC ̲TYPE.
                                     CIF ̲BUF ̲LEN ̲ARRAY(ICBL ̲PT)
         EOCB (ICBL ̲PT) =
         BOCB(ICBL ̲PT) +
         CIF ̲BUF ̲LENGTH (ICBL ̲PT)
         INCREMENT ICBL ̲PT
         BOCB (ICBL ̲PT)=EOCB (ICBL ̲PT - 1) + 1
     END LOOP
 FIELD ̲LIST ̲LENGTH = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL ̲REC ̲TYPE.
                                                   FIELD ̲LIST ̲LENGTH
 EOFL = BOFL + FIELD ̲LIST ̲LENGTH
 IOC ̲BUF ̲LENGTH = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL ̲REC ̲TYPE.
                                                   IOC ̲BUFFER ̲LENGTH
 BOIB = EOFL + 1
 EOIB = BOIB + IOC ̲BUF ̲LENGTH
 ICBL ̲PT = BIBL
 MMI ̲HEAD ̲REC.CIF ̲ACCESS?   BOCB(ICBL ̲PT) = EOIB + 1
 BOCB (ICBL ̲PT) = OUTPUT ̲DATA ̲PT
 LOOP UNTIL ICBL ̲PT GT EIBL
     CIF ̲BUF ̲LENGTH(ICBL ̲PT) = OUTPUT ̲BUFFER ̲CTRL ̲GROUP.BUFFER ̲CTRL ̲
                               REC ̲TYPE.CIF ̲BUF ̲LEN ̲ARRAY (ICBL ̲PT)
     EOCB (ICBL ̲PT) = BOCB (ICBL ̲PT) +CIF ̲BUF ̲LENGTH (ICBL ̲PT)
     INCREMENT ICBL ̲PT
     BOCB (ICBL ̲PT)  = EOCB (ICBL ̲PT-1) + 1
 END LOOP       (continued)                  Figure 4.2.3.6.6-1


 S̲E̲T̲ ̲B̲U̲F̲F̲E̲R̲ ̲S̲T̲R̲U̲C̲T̲U̲R̲E̲        /continued

 BUFFERS ̲SHARED = FALSE

 ICBL ̲PT = BIBL

 LOOP UNTIL ICBL ̲PT GT EIBL

     CIF ̲F ̲LIST.F ̲LIST ̲ELEM.F ̲BYTE ̲ADR = 0

     BOCB (ICBL ̲PT) LE BOIB?  BUFFERS ̲SHARED = TRUE

 END LOOP

 IOC ̲BLE.ADDRESS = BOIB

 MMI ̲PT = BOMM

 MMI ̲SECTION ̲SIZE = CTRL ̲REC ̲SIZE x MMI ̲REC ̲COUNT

 INPUT ̲DATA ̲PT = BOCB(1)

 END

























                Figure 4.2.3.6.6-2


4.2.3.6.7    S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲



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

         Sets up addresses to the VDU address part of the VUS
         ̲MMI ̲CONTROL ̲TABLE.



4.2.3.6.7.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 ̲MMI ̲VDU ̲ADDRESSES

         b)  SET ̲MMI ̲VDU ̲ADDRESSES (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̲

         R6  LINK                             Destr.

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

         R0-R7                                Destr.

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

         None.



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

             MMI ̲CTRL ̲TABLE                   4.2.3.5
             MMI ̲PT                           4.2.3.5

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

             N/A



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

             N/A



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

         Refer 4.2.3.6.7-1



         S̲E̲T̲ ̲M̲M̲I̲ ̲V̲D̲U̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       F ̲TYPE: MMI ̲CTRL ̲REC.FIELD ̲TYPE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       L ̲NO: MMI ̲CTRL ̲REC.LINE ̲NO)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       INC: MMI ̲CTRL ̲REC.INC ̲COUNT)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       F ̲NO: MMI ̲CTRL ̲REC.FIELD ̲NO)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       F ̲COUNT: MMI ̲CTRL ̲REC.FIELD ̲COUNT)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       FG ̲COUNT: MMI ̲CTRL ̲REC.FIELD ̲GROUP ̲COUNT)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                       F ̲SIZE: MMI ̲CTRL ̲REC.FIELD ̲SIZE)

         END























                    Figure 4.2.3.6.7-1


4.2.3.6.8    S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲



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

         Sets up addresses to the IOC ̲BUFFER.



4.2.3.6.8.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 ̲IOC ̲REC ̲ADDRESSES  destr.

         b)  SET ̲IOC ̲REC ̲ADDRESSES (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̲

         R6  LINK                   Destr.

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

         R0-R7                      Destr.

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

         None.



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

             IOC ̲BUFFER             4.2.3.5
             IOC ̲PT                 4.2.3.5

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

             N/A



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

             N/A



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

         Refer figure 4.2.3.6.8-1


         S̲E̲T̲ ̲I̲O̲C̲ ̲R̲E̲C̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲

         EQUIVALENCE (IOC ̲BUFFER(IOC ̲PT),
                    START ̲BYTE: IOC ̲REC.IOC ̲HEADER.START ̲BYTE)

         EQUIVALENCE (IOC ̲BUFFER(IOC ̲PT),
                    BYTE ̲COUNT: IOC ̲REC.IOC ̲HEADER.BYTE ̲COUNT)

         EQUIVALENCE (IOC ̲BUFFER(IOC ̲PT),
                    TYPE: IOC ̲REC.IOC ̲HEADER.TYPE)

         EQUIVALENCE (IOC ̲BUFFER(IOC ̲PT),
                    DATA: IOC ̲REC.IOC ̲DATA)

         END
































                    Figure 4.2.3.6.8-1


4.2.3.6.9    S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲



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

         Sets up addresses to the FIELD ̲LIST.



4.2.3.6.9.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 ̲FIELD ̲LIST ̲ADDRESSES

         b)  SET ̲FIELD ̲LIST ̲ADDRESSES (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̲

         R6  LINK                  Destr.

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

         R0-R7                     Destr.

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

         None



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

             IOC ̲FIELD ̲LIST        4.2.3.5
             FL ̲PT                 4.2.3.5

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

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



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

         Refer figure 4.2.3.6.9-1


         S̲E̲T̲ ̲F̲I̲E̲L̲D̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲

         EQUIVALENCE (IOC ̲FIELD ̲LIST(FL ̲PT),
                     IOC ̲L ̲NO: FIELD ̲DESCRIPTOR ̲TYPE.IOC ̲LINE
                     ̲NO)

         EQUIVALENCE (IOC ̲FIELD ̲LIST (FL ̲PT),
                     IOC ̲INC: FIELD ̲DESCRIPTOR ̲TYPE.IOC ̲INC
                     ̲NO)

         EQUIVALENCE (IOC ̲FIELD ̲LIST (FL ̲PT)
                     IOC ̲F ̲NO: FIELD ̲DESCRIPTOR ̲TYPE.IOC ̲FIELD
                     ̲NO)

         END


































                    Figure 4.2.3.6.9-1


4.2.3.6.10   S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲



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

         Sets up addresses to the memory part of the VUS ̲MMI
         ̲CONTROL ̲TABLE.



4.2.3.6.10.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 ̲MEMORY ̲ADDRESSES

         b)  SET ̲MEMORY ̲ADDRESSES (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̲

         R6  LINK                  Destr.

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

         R0-R7                     Destr.

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

         None



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

             MMI ̲CTRL ̲TABLE        4.2.3.5
             MMI ̲PT                4.2.3.5
             BOCB                  4.2.3.5

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

             N/A



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

             N/A



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

         Refer figure 4.2.3.6.10-1


         S̲E̲T̲ ̲M̲E̲M̲O̲R̲Y̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     (CIF ̲F ̲NO: MMI ̲CTRL ̲REC.CIF ̲FIELD ̲NO)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     I ̲SIZE: MMI ̲CTRL ̲REC.ITEM ̲SIZE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     I ̲TYPE: MMI ̲CTRL ̲REC.ITEM ̲TYPE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     I ̲PT ̲BASE: MMI ̲CTRL ̲REC.ITEM ̲PT ̲BASE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     DATA ̲PT: MMI ̲CTRL ̲REC.DATA ̲ITEM ̲PT)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     I ̲CNT ̲BASE: MMI ̲CTRL ̲REC.ITEM ̲COUNT ̲BASE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     CNT ̲PT: MMI ̲CTRL ̲REC.ITEM ̲COUNT ̲PT)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     DISP ̲PROC: MMI ̲CTRL ̲REC.DISPLAY ̲PROCEDURE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     VAL ̲PROC: MMI ̲CTRL ̲REC.VALIDATION ̲PROCEDURE)

         EQUIVALENCE (MMI ̲CTRL ̲TABLE(MMI ̲PT),
                     ERR: MMI ̲CTRL ̲REC. ERROR ̲CODE)

         EQUIVALENCE ((BOCB(I ̲PT ̲BASE)+DATA ̲PT)%,
                     ITEM: ARRAY (1..I ̲SIZE) OF BYTES)

         EQUIVALENCE ((BOCB(I ̲CNT ̲BASE) + CNT ̲PT)%, CNT: INTEGER)

         EQUIVALENCE ((BOCB(I ̲PT ̲BASE) + DATA ̲PT), I ̲PT: INTEGER)

         END







                   Figure 4.2.3.6.10-1



4.2.3.6.11   S̲E̲T̲ ̲E̲R̲R̲O̲R̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲



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

         Sets up addresses to OLD ̲ERROR ̲LIST and to NEW ̲ERROR
         ̲LIST.



4.2.3.6.11.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 ̲ERROR ̲LIST ̲ADDRESSES

         b)  SET ̲ERROR ̲LIST ̲ADDRESSES (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̲

         R6  LINK                  Destr.

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

         R0-R7                     Destr.

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

         None



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

             ERR ̲LIST              4.2.3.5
             O ̲PT                  4.2.3.5
             N ̲PT                  4.2.3.5

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

             N/A



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

             N/A



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

         Refer figure 4.2.3.6.11-1


         S̲E̲T̲ ̲E̲R̲R̲ ̲L̲I̲S̲T̲ ̲A̲D̲D̲R̲E̲S̲S̲E̲S̲

         EQUIVALENCE (ERR ̲LIST(O ̲PT),O ̲L ̲NO: ERR ̲REC.MARGIN
         ̲LINE ̲NO)

         EQUIVALENCE (ERR ̲LIST(O ̲PT),O ̲INC: ERR ̲REC.MARGIN ̲INC
         ̲NO)

         EQUIVALENCE (ERR ̲LIST(O ̲PT),O ̲ERR: ERR ̲REC.MARGIN ̲ERR
         ̲CODE)

         EQUIVALENCE (ERR ̲LIST(O ̲PT),O ̲F ̲NO: ERR ̲REC.ERR ̲FIELD
         ̲NO)

         EQUIVALENCE (ERR ̲LIST(N ̲PT),N ̲L ̲NO: ERR ̲REC.MARGIN
         ̲LINE ̲NO)

         EQUIVALENCE (ERR ̲LIST(N ̲PT),N ̲INC: ERR ̲REC.MARGIN ̲INC
         ̲NO)

         EQUIVALENCE (ERR ̲LIST(N ̲PT),N ̲ERR: ERR ̲REC.MARGIN ̲ERR
         ̲CODE)

         EQUIVALENCE (ERR ̲LIST(N ̲PT),N ̲F ̲NO: ERR ̲REC.ERR ̲FIELD
         ̲NO)

         END




























                   Figure 4.2.3.6.11-1


4.2.3.6.12   W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲



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

         Sets up parameters and calls WRITE ̲VIEW.



4.2.3.6.12.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)  WRITE ̲CIF ̲BUF (INDEX:  INTEGER)

         b)  WRITE ̲CIF ̲BUF (R0, R6)

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

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

         R0  INTEGER               destr.
         R6  LINK

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

         R0-R7                     destr.

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

         None



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

             CIF ̲F ̲LIST            4.2.3.5
             CIF ̲FIELD ̲BYTE ̲ADDR   4.2.3.5
             CIF ̲BUF ̲PT            4.2.3.5
             BOCB                  4.2.3.5
             OUTPUT ̲CIF            4.1.4

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

             N/A



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

             BUFSIZE               INTEGER



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

         Refer figure 4.2.3.6.12-1



         W̲R̲I̲T̲E̲ ̲C̲I̲F̲ ̲B̲U̲F̲

         BUF ̲SIZE = BOCB (INDEX) - CIF ̲BUF ̲PT (INDEX)

         CIF ̲F ̲LIST. NO ̲OF ̲ELEM = 1

         CIF ̲F ̲LIST.ELEM (INDEX).F ̲GROUP ̲ID = INDEX

         CIF ̲F ̲LIST.ELEM(INDEX).F ̲BYTE ̲ADR = CIF ̲FIELD ̲BYTE
         ̲ADDR

         CIF ̲F ̲LIST.ELEM (INDEX).REC ̲LENGTH = BUF ̲SIZE

         CIF ̲FIELD ̲BYTE ̲ADDR = CIF ̲FIELD ̲BYTE ̲ADDR + BUF ̲SIZE

         CASE WRITE ̲VIEW (BUF ̲SIZE, CIF ̲F ̲LIST, OUTPUT ̲CIF,
         BOCB 
                                  (INDEX) (CIF ̲F ̲LIST, CC):
                     ERROR ̲OK

             ERROR?      A̲N̲A̲L̲Y̲S̲E̲ ̲ ̲E̲R̲R̲O̲R̲ ̲(̲0̲,̲C̲C̲)̲

             OK?

         END CASE

         CIF ̲BUF ̲PT(INDEX) = BOCB (INDEX)

         END























                   Figure 4.2.3.6.12-1