top - download
⟦acd2451cc⟧ Wang Wps File
Length: 32866 (0x8062)
Types: Wang Wps File
Notes: CPS/SDS/025
Names: »1621A «
Derivation
└─⟦11f497f33⟧ Bits:30005812 8" Wang WCS floppy, CR 0119A
└─ ⟦this⟧ »1621A «
WangText
'…00……00……00……00…-…02……00……00…-
,…09…,…0e……0c……0b……0c……0c……0c……0d……0c…
…0c……05……0c……06……0c……07……0b……0d……0b……0e……0b……01……0b……06……86…1 …02… …02… …02…
…02…CPS/SDS/025
…02…850401…02……02…
MESSAGE MANAGEMENT
DETAILED DESIGN SPECIFICATION…02…ISSUE 1…02…CAMPS
4.2.5 D̲i̲s̲k̲ ̲I̲/̲O̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲
4.2.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 subpackage consists of a number of serviceprocedures
performing all functions related to disk manipulation
and transfer of data between disk buffers and application
data space. Additionally the subpackage processes the
two I/O commands, Read View and Write View.
4.2.5.1.1 D̲i̲s̲k̲ ̲B̲u̲f̲f̲e̲r̲
A data structure called a disk buffer refer 4.1.4.3.8,
is used to describe a logically consecutive area of
disk buffer space. Disk buffers are the memory buffers
which are involved in the data transfers between memory
and disk. This logically area can be described in 3
ways, refer fig. 4.2.5.1.1-1.
- the cache buffer of the disk buffer points out
a collection of sector buffers, forming a logical
disk cache buffer,
- the field buffer points out a number of pieces
of the buffer described by the cache buffer thus
forming a logical disk cache buffer,
- the field sequence points out parts of a number
of fields. This sequence can be translated to a
combination of a field and a cache buffer.
4.2.5.1.2 U̲s̲e̲ ̲a̲f̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲s̲
The set of procedures use the disk buffer for describing
the disk cache buffers. Thereby the disk transfers
of the relevant structures e.g. fields are greatly
facilitated.
The disk buffers can be in one of the two states, passive
or active.
Passive state means that the disk buffer does not describe
a disk cache buffer. Active state means that it does
describe a disk cache buffer.
A disk buffer is passive if the status of all associated
DC operations are NOT ̲IN ̲USE, else it is active.
1) The following procedures must have a passive disk
buffer as input parameter - at return the status
of the disk buffer is active:
- Read Block
- Init Write Block
- Init Update Block
- Prepare Field Buffer
2) The following procedures must have an active disk
buffer as input parameter - at return, the status
of the disk buffer is still active:
- Write Buffer
- Get Sequential
- Get Random
- Put Sequential
- Put Random
- Move Buffer
3) The following procedure must have an active disk
buffer as input parameter - at return, the status
of the disk buffer is passive.
- Release Buffer
- Write and Release Buffer
A typical disk access is realized by firstly calling
a procedure from group 1, secondly one or more procedures
from group 2 and lastly the procedure from group 3.
OPERATION ̲TYPE of the disk buffer tells whether
the operation it describes is external or internal.
The field must be properly initialized before
calling the procedures. The field is used
by the disk access procedures to maintain the
statistics counters.
The OPERATION ̲PROFILE of the disk buffer must
be properly initialized before call of the
procedures. If the profile is higher than
the Purge Profile, the disk cache buffers are
automatically purged when they are released,
refer 2.2.2.6.2.
The DEVICE of the disk buffer must be properly
initialized before calling the procedures.
4.2.5.1.3 M̲o̲d̲u̲l̲e̲s̲
The subpackage is divided into three modules, refer
fig. 4.2.5.1.3-1.
- disk manipulation module,
- data transfer module
- I/O functions module
4.2.5.1.4 E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲
The procedures accessing the disks, return error codes
to caller.
The procedures performing data transfers do not return
completion codes. If an internal error occurs the FMS
process is retired by means of a call of the procedure
IMPOSSIBLE.
Fig. 4.2.5.1.1-1 Disk cache buffer description.
Fig. 4.2.5.1.3-1 Functional Breakdown.
4.2.5.2 S̲o̲f̲t̲w̲a̲r̲e̲ ̲S̲t̲r̲u̲c̲t̲u̲r̲e̲
The subpackage consists of a set of procedures.
The procedures are executed by the Command Handling
Coroutines. The Init Write Block, Write Buffer and
Release Buffer are also executed by the Disk Purge
Coroutine.
4.2.5.3 D̲a̲t̲a̲ ̲F̲l̲o̲w̲ ̲a̲n̲d̲ ̲C̲o̲n̲t̲r̲o̲l̲ ̲L̲o̲g̲i̲c̲
4.2.5.3.1 D̲i̲s̲k̲ ̲M̲a̲n̲i̲p̲u̲l̲a̲t̲i̲o̲n̲
Disk manipulations are performed via the Disk Cache
Manager which is executed by a number of coroutines.
A disk cache function is requested by sending a DC
operation (a buffer appropriately initialised) to the
receive semaphore of the DCM
Thereafter an answer is awaited at a semaphore specified
in the DC operation. The answer is the DC operation
itself with a completion code filled in.
The DCM administers the disk cache, a pool of sector
buffers. Only DC operations for which an actual disk
access is required, result in a call of the disk driver.
Reference (f) 3.1.2.1.
4.2.5.3.2 D̲a̲t̲a̲ ̲T̲r̲a̲n̲s̲f̲e̲r̲s̲
As mentioned earlier disk operations involve the transfer
of data between disk and disk cache. This means that
a transfer of data between disk cache and application
data space is necessary. This transfer as well as transfer
of data between application data space and other parts
of FMS data space is done by means of DMA.
The Command Controller Module consists of a set of
service procedures executed by the Command Handler
Coroutines. These procedures are described in ref.
(e) 3.1.2.2.
They call a system module, XFER, which initiates the
DMA transport. The involved data buffer(s) of the application
are defined by a transfer list built by the application
(Message Monitor) ref. (g) 3.4.2.1
Fig. 4.2.5.3-1-1 Control Flow
Fig. 4.2.5.3-1-2 Control Flow
4.2.5.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲
4.2.5.4.1 D̲i̲s̲k̲ ̲M̲a̲n̲i̲p̲u̲l̲a̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲
4.2.5.4.1.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The module takes care of all disk manipulation requested
by the MMS Package.
It contains the following service procedures:
- Read Block refer 4.2.5.4.1.5 a
- Init Write Block refer 4.2.5.4.1.5 b
- Init Update Block refer 4.2.5.4.1.5 c
- Write Buffer refer 4.2.5.4.1.5 d
- Release Buffer refer 4.2.5.4.1.5 e
- Write and Release Buffer refer 4.2.5.4.1.5 f
4.2.5.4.1.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has 7 subpackage interfaces
a) Read Block refer 4.2.5.7.1
b) Init Write Block refer 4.2.5.7.2
c) Init Update Block refer 4.2.5.7.3
d) Write Buffer refer 4.2.5.7.4
e) Release Buffer refer 4.2.5.7.5
f) Write and Release
Buffer refer 4.2.5.7.6
4.2.5.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module components are identical to the 6 procedures
forming the 6 subpackage interfaces plus three extra
procedures:
- Get Statistics
- Perform DC Operation
- Perform Buffer Operation
Fig. 4.2.5.4.1.3-1 Control Flow
4.2.5.4.1.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) Data References
Refer Source List
b) External Data
b1) IO ̲BUF
b2) CIFCB
b3) VCB
c) L̲o̲c̲a̲l̲ ̲d̲a̲t̲a̲
None
4.2.5.4.1.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
E̲x̲t̲e̲r̲n̲a̲l̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
- Signal Op (j) 3.1.2.3
- MMS ̲Wait Op 4.1.5.11
- Get Field Descriptor 4.2.2.4.5.2f
- Next Addr Element 4.2.2.4.5.2d
a) R̲e̲a̲d̲ ̲B̲l̲o̲c̲k̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲d̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
A number of consecutive sectors are read claimed
and read from disk and placed in the Disk Cache,
by call of PERFORM ̲OC ̲OP
Flowgram: None
b) I̲n̲i̲t̲ ̲W̲r̲i̲t̲e̲ ̲B̲l̲o̲c̲k̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
A number of consecutive sectors are write claimed.
The processing is similar to READ ̲BLOCK except
that the function used is WRITE ̲CLAIM.
Flowgram: None
INIT ̲WRITE ̲BLOCK(FIRST: SECTOR ̲NUMBER,
COUNT: INTEGER)
(BUFFER: DISK ̲BUFFER,
CC: COMP ̲CODE) :ERROR ̲OK
c) I̲n̲i̲t̲ ̲U̲p̲d̲a̲t̲e̲ ̲B̲l̲o̲c̲k̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
A number of consecutive sectors are read and write
claimed.
Processing as for Read Block, except that function
code equals READ ̲AND ̲WRITE ̲CLAIM.
Flowgram: None.
INIT ̲UPDATE ̲BLOCK(FIRST: SECTOR ̲NUMBER,
COUNT: INTEGER)
(BUFFER: DISK ̲BUFFER,
CC: COMP ̲CODE):
ERROR ̲OK
d) W̲r̲i̲t̲e̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Sectors which have previously been write claimed
are written out on disk.
The disk buffer from an earlier write claim is
used to build an operation with function set to
WRITE ̲OUT.
Flowgram: None
WRITE ̲BUFFER(BUFFER:DISK ̲BUFFER)
(CC:COMP ̲CODE):ERROR ̲OK
e) R̲e̲l̲e̲a̲s̲e̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The buffer is released according to the most recent
operation (read or write). The DC operation is
set passive.
Flowgram: None
f) W̲r̲i̲t̲e̲ ̲a̲n̲d̲ ̲R̲e̲l̲e̲a̲s̲e̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The disc buffer which has previously been write
claimed is written out by a call to Perform Buffer
Op.
Flowgram: None
g) G̲e̲t̲ ̲S̲t̲a̲t̲i̲s̲t̲i̲c̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The appropriate statistics counter is incremented.
The decision of which to use is based on operation
type of disk buffer and operation code of DC
operation..
Flowgram: None
h) P̲e̲r̲f̲o̲r̲m̲ ̲D̲C̲ ̲O̲p̲e̲r̲a̲t̲i̲o̲n̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified operation is performed on specified
DC ̲OP
Flowgram: None
i) P̲e̲r̲f̲o̲r̲m̲ ̲B̲u̲f̲f̲e̲r̲ ̲O̲p̲e̲r̲a̲t̲i̲o̲n̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified operation (in DC ̲OP) is performed
on specified buffer.
Flowgram: None
4.2.5.4.2 D̲a̲t̲a̲ ̲T̲r̲a̲n̲s̲f̲e̲r̲ ̲M̲o̲d̲u̲l̲e̲
4.2.5.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̲
The module takes care of all data transfers between
disk cache and application data space, FMS data space
or another part of the disk cache.
It contains the following service procedures
- Get Sequential refer 4.2.5.4.2.5 a
- Get Random refer 4.2.5.4.2.5 b
- Put Sequential refer 4.2.5.4.2.5 f
- Init Put Sequential refer 4.2.5.4.2.5 g
- Put Random refer 4.2.5.4.2.5 i
- Put Integer refer 4.2.5.4.2.5.j
- Put Words refer 4.2.5.4.2.5 k
- Flush Put refer 4.2.5.4.2.5 l
- Move Buffer refer 4.2.5.4.2.5 m
4.2.5.4.2.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has 9 subpackage interfaces
a) Get Sequential refer 4.2.5.7.8
b) Get Random refer 4.2.5.7.9
c) Put Sequential refer 4.2.5.7.10
d) Put Random refer 4.2.5.7.11
e) Put Integer refer 4.2.5.7.12
f) Put Words refer 4.2.5.7.13
g) Move Buffer refer 4.2.5.7.14
h) Init Put Sequential refer 4.2.5.7.16
i) Flush Put refer 4.2.5.7.17
4.2.5.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
In addition to the procedures forming the subpackage
interface, the module contains the following procedures:
- Get Via Cache
- Trans Via Field Buffer
- Put Via Cache
- Move
- Move Bytes
4.2.5.4.2.4 D̲a̲t̲a̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
a) Data Reference
Refer source list
b) External Data
IO ̲BUF
c) Local data
None
Fig. 4.2.5.4.2.3-1 Control Flow
4.2.5.4.2.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
E̲x̲t̲e̲r̲n̲a̲l̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
- MMS Receive Sectors 4.1.5.11
- MMS Send Sectors 4.1.5.11
- Impossible 4.1.5.4
a) G̲e̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from sector buffers to user
data space or MMS data space. In the former case
DMA transfer is used, in the latter simple CPU
move.
Flowgram: None
b) G̲e̲t̲ ̲R̲a̲n̲d̲o̲m̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The processing is identical to that of Get Sequential,
except that the location is taken from the input
parameter rather than from the disk buffer.
Flowgram: None
GET ̲RANDOM(BUFFER: DISK ̲BUFFER
DESTINATION: DATA ̲SPECIFICATION,
LOCATION,COUNT: INTEGER)
c) T̲r̲a̲n̲s̲ ̲G̲e̲t̲ ̲V̲i̲a̲ ̲F̲i̲e̲l̲d̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from application data space or MMS data space controlled by field
buffer of disc buffer.
Flowgram: Refer Fig. 4.2.5.4.2.5-1.
d) G̲e̲t̲ ̲V̲i̲a̲ ̲C̲a̲c̲h̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from sector buffers controlled by cache buffer. SECT and OFS tell
where within the cache buffer to start.
Flowgram: None
e) M̲o̲v̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is moved from source to destination. The number of bytes to be moved are specified.
Flowgram: None
MOVE(SOURCE,DESTINATION,COUNT:INTEGER)
f) P̲u̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
This is exactly analogous to Get Sequential, the difference being the direction of transfer.
Flowgram: None
PUT ̲SEQUENTIAL(BUFFER: DISK ̲BUFFER,
SOURCE: DATA ̲SPECIFICATION,
COUNT: INTEGER)
g) I̲n̲i̲t̲ ̲P̲u̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The put-buffer of specified disc buffer is initiated.
Flowgram: None
INIT ̲PUT ̲SEQUENTIAL(BUFFER: DISC ̲BUFFER)
h) P̲u̲t̲ ̲V̲i̲a̲ ̲C̲a̲c̲h̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Analogous to Get Via Cache.
Flowgram: None
PUT ̲VIA ̲CACHE(BUFFER: DISK ̲BUFFER,
SOURCE: DATA ̲SPECIFICATION,
SECT,OFS,COUNT: INTEGER)
(COUNT: INTEGER)
i) P̲u̲t̲ ̲R̲a̲n̲d̲o̲m̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Analogous to Get Random, the difference being the
direction of transfer
Flowgram: None
PUT ̲RANDOM(BUFFER: DISK ̲BUFFER,
…02……02……02… SOURCE: DATA-SPECIFICATION,
…02… LOCATION,COUNT: INTEGER)
j) P̲u̲t̲ ̲I̲n̲t̲e̲g̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲o̲n̲
Analoguous to Put Sequential
Flowgram: None
PUT ̲INTEGER(BUFFER: DISK ̲BUFFER,
WORK: INTEGER)
k) P̲u̲t̲ ̲W̲o̲r̲k̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Analogeous to Put Seqential
Flowgram: None
PUT ̲WORDS(BUFFER: DISC ̲BUFFER,
COUNT: INTEGER,
SOURCE: POINTER)
l) F̲l̲u̲s̲h̲ ̲P̲u̲t̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Put Sequential is called according to contents
of Put-Buffer of specified Disc Buffer
Flowgram: None
FLUSH ̲PUT(BUFFER: DISC ̲BUFFER)
m) M̲o̲v̲e̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is moved from one disk buffer to another,
controlled by source, destination and count. The
total move is divided into moves of smaller portions
of data. The basic moves proceed until end of sector
buffer or end of field element in either source
or destination.
Flowgram: None
n) M̲o̲v̲e̲ ̲B̲y̲t̲e̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Moves the demanded number of bytes
Flowgram: None
TRANS ̲VIA ̲FIELD ̲BUFFER (DIRECTION: (PUT,GET),
BUFFER: DISK ̲BUFFER
DESTINATION: DATA ̲SPECIFICATION,
COUNT: INTEGER)
(COUNT: INTEGER)
START
N = 1
BUFFER.SL.COUNT 1 ?
R5 NIL ? IMPOSSIBLE (CC)
LOOP "through all field elements
OFFSET = BUFFER.FBUFFER.ELEMENT(N). OFFSET
LENGTH = BUFFER.FBUFFER.ELEMENTS(N). LENGTH
SECTOR = BUFFER.FBUFFER.ELEMENTS(N). SECTOR
DIRECTION = GET ?
CASE SEND ̲SECTOR (OFFSET,SECTOR)(CC): ERROR ̲OK
ERROR: IMPOSSIBLE (CC)
END CASE
CASE RECEIVE ̲SECTOR (OFFSET,SECTOR)(CC): ERROR ̲OK
ERROR: IMPOSSIBLE(CC)
END CASE
N + 1
N GT BUFFER.SL.COUNT EXIT
END LOOP
RETURN
STOP
FIGURE 4.2.5.4.2.5-1
4.2.5.4.3 I̲/̲O̲ ̲F̲u̲n̲c̲t̲i̲o̲n̲s̲ ̲M̲o̲d̲u̲l̲e̲
4.2.5.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̲
The module handles the two MMS-commands concerned with
input/output. These are:
- Read View
- Write View
4.2.5.4.3.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has the following subpackage interfaces:
a) Read View
b) Write View
c) Prepare ̲Field ̲Buffer
4.2.5.4.3.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module consists of the following procedures:
- read view
- write view
- prepare field buffer
- prepare view IO
- terminate view IO
- convert sector list
- init disc buffer
- perform IO
- next unload field
- next field sequence element
- make slice
- check sectors
- check holes
Fig. 4.2.5.4.3.3-1 Control Flow
4.2.5.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̲
a1) Refer source list
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) IO ̲BUF
b2) CIFCB
b3) VCB
b4) Field List
c) Local Data
None
4.2.5.4.3.5M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
E̲x̲t̲e̲r̲n̲a̲l̲ ̲P̲r̲o̲c̲e̲d̲u̲r̲e̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
- Get Sequential 4.2.5.7.8
- Read Fields 4.2.5.7.6
- MMS Skip Destination 4.1.5.11
- MMS Receive Words 4.1.5.11
- MMS Send Words 4.1.5.11
- Get CIF 4.1.5.1.2
- Open CIF 4.1.5.2.2
- Close CIF 4.1.5.3.2
- Release Buffer 4.2.5.7.5
- Put Sequential 4.2.5.7.10
- Write Buffer 4.2.5.7.4
- Init Write Fields 4.2.5.7.4
- Check Access (i) 4.1.1.10
a) R̲e̲a̲d̲ ̲V̲i̲e̲w̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The Read View command is processed.
The data is read according to the command trailer
and transferred to calling application. Updated
command trailer is returned to calling application.
Flowgram: Refer fig. 4.2.5.4.3.5-1
b) W̲r̲i̲t̲e̲ ̲V̲i̲e̲w̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The Write View command is processed.
The data is fetched according to the command trailer
from calling application and written to disk. Updated
command trailer is returned to calling application.
Flowgram: Refer fig. 4.2.5.4.3.5-2
c) P̲r̲e̲p̲a̲r̲e̲ ̲F̲i̲e̲l̲d̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
If DISK ̲BUFFEK.FSE.PURPOSE = IO, the procedure
generates a sector list corresponding to part of
the field sequence in disc buffer. Begins at current
FS location, which is updated to point at the location
just after last byte described by sector list.
This location may be a non existing FSE at top
of FS, indicating that field sequence has been
entirely processed.
The FSE's POS and RECORD ̲LENGTH are updated corresponding
to the data mapped by sector list.
If DISC ̲BUFFER.FSE.PURPOSE = UNLOAD,
it generates a sector list corresponding to a sequence
of fields to be unloaded. The FSE ̲DESCR then described
current field.
The sector list is used to generate a disc cache
operation of one of the types INIT ̲WRITE or INIT
̲UPDATE, so that the DISKBUFFER is afterwards ready
for a move of data. The sector list elements have
sector descriptor pointers on return.
The return parameter finish is true if the source
has been emptied.
Flowgram: None
PREPARE ̲FIELD ̲BUFFER (IO ̲MODE: READ ̲WRITE,
IO ̲BUF: DISC ̲BUFFER)
(FINISH: BOOLEAN,
CC: COMPLETION ̲CODE)
d) P̲r̲e̲p̲a̲r̲e̲ ̲V̲i̲e̲w̲ ̲I̲O̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified CIF is found and opened.
The security profile of the calling process is
checked against the security profile of the involved
CIF.
The field list corresponding to the IO function
is fetched from the data area of the calling process
and finally the FSE ̲DESCR and FD ̲ADDR of the specified
DISK ̲BUFFER is initialized.
Flowgram: None
PREPARE ̲VIEW ̲ID(IO ̲MODE: READ ̲WRITE)
(LOCK: LOCK ̲DESCRIPTOR,
IO ̲BUF: DISK ̲BUFFER,
CC: COMPLETION ̲CODE)
e) T̲e̲r̲m̲i̲n̲a̲t̲e̲ ̲V̲i̲e̲w̲ ̲I̲O̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The updated view attributes are returned to the
caller and the sector statistics are updated.
Flowgram: None
TERMINATE ̲VIEW ̲IO(IO ̲MODE: READ ̲WRITE)
(CC: COMPLETION ̲CODE)
f) C̲o̲n̲v̲e̲r̲t̲ ̲S̲e̲c̲t̲o̲r̲ ̲L̲i̲s̲t̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure goes through the sector list and
cache buffer converting SECTOR ̲NO to SECTOR ̲DESCRIPTOR
̲POINTER
Flowgram: None
CONVERT ̲SECTOR ̲LIST(MIN ̲SECTOR: INTEGER,
(IO ̲BUF: DISK ̲BUFFER)
g) I̲n̲i̲t̲i̲a̲l̲i̲z̲e̲ ̲D̲i̲s̲c̲ ̲B̲u̲f̲f̲e̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified disc buffer is intitialized
Flowgram: None
INIT ̲DISK ̲BUFFER(IO ̲MODE: READ ̲WRITE,
IO ̲BUF: DISK ̲BUFFER)
h) P̲e̲r̲f̲o̲r̲m̲ ̲I̲O̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Depending on IO-mode either a
READ ̲BLOCK,
INIT ̲WRITE ̲BLOCK or a
INIT ̲UPDATE BLOCK command is performed on specified
disc buffer.
Flowgram: None
PERFORM ̲IO(IO ̲BUF: DISK ̲BUFFER,
SECTOR ̲LIST: SL ̲DESCR)
i) N̲e̲x̲t̲ ̲U̲n̲l̲o̲a̲d̲ ̲F̲i̲e̲l̲d̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure finds the next field descriptor having
CKP mark = true then initialized FSE ̲DESCR and
REM to describe the complete field.
ERROR ̲RESULT if there were no more fields
Flowgram: None
NEXT ̲UNLOAD ̲FIELD(IO ̲BUF: DISK ̲BUFFER,
RESULT: ERROR ̲OK)
j) N̲e̲x̲t̲ ̲F̲i̲e̲l̲d̲ ̲S̲e̲q̲u̲e̲n̲c̲e̲ ̲E̲l̲e̲m̲e̲n̲t̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure updates pos and length of current
FSE and advances to next FSE. The corresponding
FD is found, and parameters are checked according
to mode and parameter check flags. A CC is returned
on any parameter error.
Error result, if there were no remaining FSE's.
If FS ̲DESCR.FSE ̲INDEX = 0, no update of current
FSE is performed.
Flowgram: None
NEXT ̲FIELD ̲SEQUENCE ̲ELEMENT(SLICE: SL ̲DESCR,
IO ̲BUF: DISK ̲BUFFER)
(CC: COMPLETION
̲CODE,
RESULT: ERROR ̲OK)
k) M̲a̲k̲e̲ ̲S̲l̲i̲c̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
If FSE ̲DESCR fits completely or partly into current
block, a new sector list element is generated.
Position and remaining bytes of FSE ̲DESCR are updated
accordingly.
If IO ̲MODE = WRITE, it is checked, if the generated
SLE shall cause an update operation. The result
of this check is IOR'ed into SL ̲DESCR.UPDATE.
In addition it is checked, if field length shall
be extended. If a slice is generated, and an OK
return is made, SL ̲DESCR is updated to next SLE
in disc buffer
Flowgram: None
MAKE ̲SLICE(SLICE: SL ̲DESCR,
IO ̲BUF: DISK ̲BUFFER)
(RESULT: ERROR ̲OK)
l) C̲h̲e̲c̲k̲ ̲S̲e̲c̲t̲o̲r̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
An attempted slice is described by FIRST ̲SECTOR,
position and length these parameters are checked
against current MIN ̲SECT, MAX ̲SECT of SL to see
if they fit.
MIN ̲SECT, MAX ̲SECT are updated to reflect the new
slice.
Returned length gives the number of bytes which
could fit into MIN ̲SECT, MAX ̲SECT.
Returned CC specified, if length had to be cut
down.
Flowgram: None
CHECK ̲SECTORS(LENGTH,
FIRST ̲SECTOR,
POSITIONS: INTEGER;
SLICE: SL ̲DESCR
(LENGTH: INTEGER,
CC: COMPLETION
̲CODE)
m) C̲h̲e̲c̲k̲ ̲H̲o̲l̲e̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure check, if there are any holes between
MIN ̲SECT and MAX ̲SECT by running through sector
list and collect a bit map for the sectors covered
by SLE's.
If the resulting bitmap is without holes nothing
is done otherwise SL.UPDATE = TRUE.
Flowgram: None
CHECK ̲HOLES(IO ̲BUFFER: DISK ̲BUFFER,
SLICE: SL ̲DESCR)
START
PREPARE ̲VIEW ̲IO(READ)(LOCK,IOBUF ,CC)
CC EQ ERROR
LOOP
PREPARE ̲FIELD ̲BUFFER(READ,IOBUF )(FINISH,CC)
CC EQ ERROR:
SUBUF.SL.COUNT EQ 0 ?
GET ̲SEQUENTIAL(IOBUS,NIL)
CASE RELEASE ̲BUFFER(IOBUF)(CC):ERROR ̲OK
ERROR:IMPOSSIBLE(CC)
END CASE
FINISH EQ TRUE? EXIT LOOP
END LOOP
TOBUF.FSE.REM ̲BUF ̲SIZE LT 1 ?
IOBUF.FSE.DATA ̲READ EQ TRUE ?
MMS SEND ̲WORDS(OPERATION,IOBUF.SEQUENCE,0)
MMS ̲SKIP ̲SOURCE(OPERATION,NIL)
TERMINATE ̲VIEW ̲IO(READ)
CLOSE ̲CIF(LOCK)
RETURN
STOP
READ VIEW FLOWGRAM
FIGURE 4.2.5.4.3.5-1
START
PREPARE ̲VIEW ̲IO(WRITE)(LOCK,IOBUF,CC)
CC EQ ERROR ?
LOOP
PREPARE ̲FIELD ̲BUFFER(WRITE,IOBUF)(FINISH,CC)
CC EQ ERROR ?
IOBUF.SL.COUNT EQ 0 ?
PUT ̲SEQUENTIAL(IOBUF,NIL)
CASE WRITE ̲AND ̲RELEASE ̲BUFFER(IOBUF)(CC):ERROR ̲OK
ERROR: IMPOSSIBLE(CC)
END CASE
FINISH EQ TRUE? EXIT LOOP
END LOOP
TERMINATE ̲VIEW ̲IO(WRITE)
CLOSE ̲CIF(LOCK)
RETURN
STOP
WRITE VIEW FLOWGRAM
FIGURE 4.2.5.4.3.5-2
4.2.5.5 C̲o̲m̲m̲o̲n̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲
None
4.2.5.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̲
None
4.2.5.7 S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
4.2.5.7.1 R̲e̲a̲d̲ ̲B̲l̲o̲c̲k̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified contiguous sectors are read into the
disk cache.
At return the disk buffer is updated according to sectors
read REMAINING is set to number of bytes read LOCATION
is set to start position within buffer.
At call operation type, operation profile and DEVICE
are set in the disk buffer.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
READ ̲BLOCK(FIRST: SECTOR ̲NUMBER,
COUNT: INTEGER)
(BUFFER: DISK ̲BUFFER,
CC: COMP ̲CODE):ERROR ̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
- not all requested sectors read
- refer to DCM error codes.
4.2.5.7.2 I̲n̲i̲t̲ ̲W̲r̲i̲t̲e̲ ̲B̲l̲o̲c̲k̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified contiguous sectors are made ready for
a write operation.
At return the disk buffer is updated according to claimed
sectors. REMAINING and LOCATION are set as in READ
̲BLOCK.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
INIT ̲WRITE ̲BLOCK(FIRST: SECTOR ̲NUMBER,
COUNT: INTEGER)
(BUFFER: DISK ̲BUFFER,
CC: COMP ̲CODE):ERROR ̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
Refer to DCM error codes
4.2.5.7.3 I̲n̲i̲t̲ ̲U̲p̲d̲a̲t̲e̲ ̲B̲l̲o̲c̲k̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The specified contiguous sectors are read and made
ready for a write operation. At return the disk buffer
is updated according to claimed sectors. REMAINING
and LOCATION are set as in READ ̲BLOCK.
At call operation type and operation profile are set
in the disk buffer.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
INIT ̲UPDATE ̲BLOCK(FIRST: SECTOR ̲NUMBER,
COUNT: INTEGER)
(BUFFER: DISK ̲BUFFER,
CC: COMP ̲CODE):ERROR ̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
Refer to DCM error codes
4.2.5.7.4 W̲r̲i̲t̲e̲ ̲B̲u̲f̲f̲e̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The sectors specified by the disk buffer are transferred
from disk cache to disk.
At call operation type and operation profile are set
in the disk buffer.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
WRITE ̲BUFFER(BUFFER: DISK ̲BUFFER)
(CC: COMP ̲CODE):ERROR ̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
Refer to DCM error codes.
4.2.5.7.5 R̲e̲l̲e̲a̲s̲e̲ ̲B̲u̲f̲f̲e̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The disk cache buffers pointed out by the disk buffer
are released,i.e. they can be used for some other purpose.
At call operation type and operation profile are set
in the disk buffer.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
RELEASE ̲BUFFER(BUFFER: DISK ̲BUFFER)
(CC: COMP ̲CODE):ERROR ̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
Refer to DCM error codes.
4.2.5.7.6 W̲r̲i̲t̲e̲ ̲a̲n̲d̲ ̲R̲e̲l̲e̲a̲s̲e̲ ̲B̲u̲f̲f̲e̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The sectors specified by disc buffer are transferred
from disc cache to disc and the disc buffers are released.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
WRITE ̲AND ̲RELEASE ̲BUFFER(BUFFER: DISC ̲BUFFER)
CC: COMP ̲CODE):ERROR
̲OK
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
Refer to DCM error codes.
4.2.5.7.7 G̲e̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from sector buffers described by
disk buffer and count. The destination is application
data space or MMS data space. Location tells where
to start and is updated together with remaining.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
GET ̲SEQUENTIAL(BUFFER: DISK ̲BUFFER,
DESTINATION: DATA ̲SPECIFICATION,
COUNT: INTEGER)
4.2.5.7.8 G̲e̲t̲ ̲R̲a̲n̲d̲o̲m̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from sector buffers described by
disk buffer, LOCATION and COUNT. The destination is
application data space or MMS data space. Location
and remaining are updated.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
GET ̲RANDOM(BUFFER :DISK ̲BUFFER,
DESTINATION: DATA ̲SPECIFICATION,
LOCATION,COUNT: INTEGER)
4.2.5.7.9 P̲u̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from application data space or
MMS data space to sector buffers. This transfer is
controlled by disk buffer,COUNT and SOURCE.
Location tells where to start and is updated together
with remaining.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PUT ̲SEQUENTIAL(BUFFER: DISK ̲BUFFER,
SOURCE: DATA ̲SPECIFICATION,
COUNT: INTEGER)
4.2.5.7.10 P̲u̲t̲ ̲R̲a̲n̲d̲o̲m̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Data is transferred from application data space or
MMS data space to sector buffers. This transfer is
controlled by disk buffer, SOURCE,COUNT and LOCATION.
Location and remaining are updated.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PUT ̲RANDOM(BUFFER: DISK ̲BUFFER,
SOURCE: DATA ̲SPECIFICATION,
LOCATION,COUNT: INTEGER)
4.2.5.7.11 P̲u̲t̲ ̲I̲n̲t̲e̲g̲e̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The current location of the buffer is returned to caller.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PUT ̲INTEGER (BUFFER: DISC ̲BUFFER)
POSITION: INTEGER)
4.2.5.7.12 P̲u̲t̲ ̲W̲o̲r̲d̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The buffer is positioned to the requested location.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PUT ̲WORDS(BUFFER: DISC ̲BUFFER);
LOCATION: INTEGER)
4.2.5.7.13 M̲o̲v̲e̲ ̲B̲u̲f̲f̲e̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
A disc buffer is copied to another disc buffer. The
parts of the buffers between which the transfer shall
take place are specified by location which is updated
together with remaining.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
MOVE ̲BUFFER(SOURCE,DESTINATION: DISK ̲BUFFER,
COUNT: INTEGER)
4.2.5.7.14 R̲e̲a̲d̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure processes the Read View command. Based
upon the user supplied field list data is read from
fields and delivered in the users data buffer. The
field list, updated according to the performed read
operation, is returned to caller.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
READ ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
illegal view reference
none existing CIF
buffer size error
security violation
4.2.5.7.15 W̲r̲i̲t̲e̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure processes the Write View command. Based
upon the user supplied field list data is transferred
from user data buffer and written to disk. The field
list,updated according to the performed write operation,
is returned to caller.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
WRITE ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲c̲o̲d̲e̲s̲
illegal view reference
none existing CIF
buffer size error
security violation
4.2.5.7.16 I̲n̲i̲t̲ ̲P̲u̲t̲ ̲S̲e̲q̲u̲e̲n̲t̲i̲a̲l̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
4.2.5.7.17 F̲l̲u̲s̲h̲ ̲P̲u̲t̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲