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