DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Wang WCS documentation floppies

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Wang WCS documentation floppies

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦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̲