top - download
⟦5ebad25ad⟧ Wang Wps File
Length: 66771 (0x104d3)
Types: Wang Wps File
Notes: CPS/SDS/037
Names: »1890A «
Derivation
└─⟦3aebbc545⟧ Bits:30006093 8" Wang WCS floppy, CR 0145A
└─ ⟦this⟧ »1890A «
WangText
+…05…*…0b…*…0d…*…0e…*
*…05…)…0a…)…0d…)…00…)…02…)
(…08…(…0c…(…00…(…05…'…0a…'…0c…'…01…'…07…&…09…&…0b…&…0e…&…86…1
…02… …02… …02…
…02…CPS/SDS/037
…02…CGN/820514…02……02…
MDCO VDU
DETAILED DESIGN SPECIFICATION…02……02…CAMPS
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 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-9
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-5.
4.2.3.4 D̲I̲D̲I̲A̲ ̲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 DIFCO and I/O-Completions
via semaphore MDOS ̲S3. It calls upon the modules for
input/output to/from the VDU and signals completion
to semaphore MDOS ̲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 4.1.6
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 MDOS ̲S3
- Calls modules and common procedures corresponding
to the following commands:
CLOSE
CANCEL
CLEAR ̲VDU
INPUT ̲DATA
OUTPUT ̲DATA
DISPLAY ̲MENU
OUTPUT ̲FORMAT
L ̲INSERT
L ̲DELETE
- 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 (MDOS ̲S3)(MSOS ̲OP): OK
CASE MDOS ̲OP.OP ̲ID.ID OF SENDER ̲ID ̲TYPE
DIFCO ̲ID? INCREMENT CMD ̲OP.̲CNT
OPLIST (CMD ̲OP ̲CNT) = MDOS ̲OP
CASE MDOS ̲OP.CMD OF DIFCO ̲CMD ̲TYPE
CLOSE ?
CANCEL ̲I ̲O? 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.1.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̲.̲1̲.̲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 MDOS ̲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? OUTPUT ̲DATA ̲PT=MDOS ̲OP.PARA2
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.LINE ̲NO
INC = CURSOR ̲RECORD.INC ̲NO
CNT = MDOS ̲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.LINE ̲NO
INC = CURSOR ̲RECORD.INC ̲NO
CNT = MDOS ̲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̲.̲4̲-̲1̲)̲
OTHERWISE? T̲E̲P̲ ̲I̲N̲T̲E̲R̲N̲A̲L̲ ̲E̲R̲R̲O̲R̲(̲G̲I̲V̲E̲ ̲U̲P̲)̲(̲4̲.̲1̲.̲5̲.̲2̲)̲
END CASE
END
Figure 4.2.3.4.1-2
V̲D̲U̲ ̲O̲P̲E̲R̲A̲T̲I̲O̲N̲
CASE MDOS ̲OP.CMD OF VDU ̲CMD ̲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̲)̲
OTHERWISE? T̲E̲P̲ ̲I̲N̲T̲E̲R̲N̲A̲L̲ ̲E̲R̲R̲O̲R̲ ̲(̲G̲I̲V̲E̲ ̲U̲P̲)̲(̲4̲.̲1̲.̲5̲.̲2̲)̲
END CASE
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
MDOS ̲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 DIFCO via MDOS ̲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
MDOS ̲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 MDOS ̲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 MDOS ̲S2 is performed.
If continuation is not required completion
of output is signalled to semaphore MDOS ̲S2.
V̲D̲U̲ ̲D̲A̲T̲A̲ ̲O̲U̲T̲P̲U̲T̲
INITIAL? CURRENT ̲FORMAT = MDOS ̲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 (MDOS ̲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̲ ̲D̲I̲F̲C̲O̲(̲M̲D̲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 (MDOS ̲S3, VDU ̲OP): OK
END ̲OF ̲CIF ̲FIELD? INCREMENT MMI ̲PT
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̲)̲
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̲.̲1̲.̲2̲.̲5̲)̲
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 (MDOS ̲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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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
INCREMENT CIF ̲F ̲LIST.NO ̲OF ̲ELEM
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 EO 1B-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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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.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 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
MDOS ̲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 MDOS ̲S2.
When input is complete the CIF-Administration field
is written to disk and a response to DIFCO signalled
to semaphore MDOS ̲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.DIDIA.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 VUS ̲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 MDOS
̲S3
- Responds to DIFCO upon completion of input by signaling
semaphore MDOS ̲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.DIDIA ̲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 (MDOS ̲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?
SIGNAL ̲DIFCO MDOS ̲S2, SPLIT ̲FAILED)
(4.2.3.6.23-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̲-̲7̲)̲
S̲I̲G̲N̲A̲L̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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 (MDOS ̲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 = MDOS ̲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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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?
SIGNAL ̲DIFCO (MDOS ̲S2, SPLIT ̲FAILED)
(4.2.3.6.23-1)
END CASE
OK?
END CASE
S̲I̲G̲N̲A̲L̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲O̲S̲ ̲S̲2̲,̲ ̲O̲K̲)̲ ̲(̲4̲.̲2̲.̲3̲.̲6̲.̲2̲3̲-̲1̲)̲
END
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 (1/2)
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
Figure 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? P̲R̲P̲F̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
PRAP? P̲R̲A̲P̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
PRAS? P̲R̲A̲S̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
CPFP? C̲P̲F̲P̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
CAPP? C̲A̲P̲P̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
CASP? C̲A̲S̲P̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
SH ̲C? S̲H̲ ̲C̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
REDI? R̲E̲D̲I̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
IN ̲E1? E̲N̲ ̲E̲1̲ ̲S̲E̲M̲A̲N̲ ̲V̲A̲L̲
IN ̲E2? IN E2 SEMAN VAL
IN ̲RE ̲E1? IN RE E1 SEMAN VAL
IN ̲RE ̲E2? IN RE E2 SEMAN VAL
AL ̲E1? AL E1 SEMAN VAL
AL ̲E2? AL E2 SEMAN VAL
AL ̲RE ̲E1? AL RE E1 SEMAN VAL
AL ̲RE ̲E2? AL RE E2 SEMAN VAL
AL SC E1 AL SC E1 SEMAN VAL
END CASE
END
Figure 4.2.3.4.6.5-1
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̲ ̲(̲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̲.̲7̲-̲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̲.̲7̲-̲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̲ ̲(̲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̲.̲7̲-̲5̲)̲
IOC ̲F ̲NO = O ̲F ̲NO
FIELD ̲ATTR = 0
C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲-̲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̲.̲7̲-̲5̲)̲
IOC ̲F ̲NO = O ̲F ̲NO
FIELD ̲ATTR = 0
C̲H̲A̲N̲G̲E̲ ̲A̲T̲T̲R̲ ̲(̲4̲.̲2̲.̲3̲.̲4̲.̲7̲-̲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̲.̲7̲-̲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̲.̲7̲-̲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̲.̲7̲-̲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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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?
SIGNAL ̲DIFCO (MDOS ̲S2, SPLIT ̲FAILED)
(4.2.3.6.23-1)
END CASE
OK?
END CASE
END
Figure 4.2.3.4.7-6
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;
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̲
MDOS-S2 4.1.6
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? SIGNAL ̲DIFCO (MDOS ̲S2, OK)(4.2.3.6.23-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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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?
SIGNAL ̲DIFCO (MDOS ̲S2,SPLIT ̲FAILED)
(4.2.3.6.23-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? SIGNAL DIFCO(MDOS ̲S2)SPLIT
̲FAILED)
(4.2.3.6.23-1)
L2? SIGNAL DIFCO (MDOS ̲S2, ERROR)
(4.2.3.6.23-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.6
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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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̲ ̲D̲I̲F̲C̲O̲ ̲(̲M̲D̲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
MMJ ̲HGAD ̲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