top - download
⟦0aaf79a5d⟧ Wang Wps File
Length: 42506 (0xa60a)
Types: Wang Wps File
Notes: CPS/SDS/025
Names: »1602A «
Derivation
└─⟦c333b847f⟧ Bits:30005811 8" Wang WCS floppy, CR 0118A
└─ ⟦this⟧ »1602A «
WangText
'…00……00……00……00……19……0a……00……00……19……0b……19……00……19……02……19…
…19……07……18……0b……18……01……18……05……17……09……17……0d……17……01……17……06……16……0a……16……0b……16……00……16… …16……07……15……0a……15……0e……15……0f……15…
…15……07……14……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.2.4.6 F̲i̲e̲l̲d̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲ ̲M̲o̲d̲u̲l̲e̲
4.2.2.4.6.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The module performs the command CREATE FIELDS. In
addition, it contains service functions for other modules
for handling of fields.
4.2.2.4.6.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module contains two subpackage interfaces:
a) Create Fields refer 4.2.2.7.11
b) Extend Field refer 4.2.2.7.15
and 2 additional interfaces.
c) D̲e̲f̲i̲n̲e̲ ̲F̲i̲e̲l̲d̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Generates fields and field references for a View
according to Field Information in Attributes.
The parameter New View specifies if the View is
under creation, or if the procedure is called from
CREATE FIELDS.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
DEFINE ̲FIELDS(VCB: VIEW ̲CONTROL ̲BLOCK,
NEW ̲VIEW: BOOLEAN)
(CC: COMPLETION ̲CODE): ERROR
̲OK
4.2.2.4.6.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module consists of the following procedures:
a) Create Fields
b) Define Fields
c) Get Last Fragment
d) Check Field Parameters
e) Update Field References
f) Generate Field
g) Extend Field
h) Check FD
4.2.2.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̲
Refer source list.
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) OPERATION (m)
b2) CC (m)
b3) ATTRIBUTES (m)
b4) CIF ̲CONTROL ̲BLOCK
b5) VIEW ̲CONTROL ̲BLOCK (m)
b6) FIELD ̲DESCRIPTOR (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
None
Figure 4.2.2.4.6.3-1
Field Handling Control Flow
4.2.2.4.6.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̲
- Get CIF 4.1.5.1
- Open CIF 4.1.5.2
- Close CIF 4.1.5.3
- MMS ̲Receive Words 4.1.5.11
- Put Attributes 4.2.2.4.5.2 c)
- Allocate Sector 4.2.2.4.7.2 a)
- Get Field Desceiptor 4.2.2.4.5.2f
- Next Addr Element 4.2.2.4.5.2d
- Prev Addr Element 4.2.2.4.5.2e
- Put In Addr Element
a) C̲r̲e̲a̲t̲e̲ ̲F̲i̲e̲l̲d̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Opens the CIF, reads field information from calling
application, defines fields according to the field
information and returns updated attributes.
F̲l̲o̲w̲g̲r̲a̲m̲
None
b) D̲e̲f̲i̲n̲e̲ ̲F̲i̲e̲l̲d̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Call the procedures Check Field Parameters and
Update Field References.
F̲l̲o̲w̲g̲r̲a̲m̲
None
c) G̲e̲t̲ ̲L̲a̲s̲t̲ ̲F̲r̲a̲g̲m̲e̲n̲t̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Given an address element, the last fragment of
the field or the last fragment of the field group
is fetched.
d) C̲h̲e̲c̲k̲ ̲F̲i̲e̲l̲d̲ ̲P̲a̲r̲a̲m̲e̲t̲e̲r̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The Field Information Elements of Attributes are
checked for internal consistency, and consistency
with the Views of the CIF. The number of elements
to be checked is CIF ̲CONTROL ̲BLOCK.NUMBER ̲OF ̲FIELD
̲GROUPS. The check depends upon the New View parameter.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CHECK ̲FIELD ̲PARAMETERS (VCB: VIEW ̲CONTROL
̲
BLOCK,
NEW ̲VIEW: BOOLEAN)
(CC: COMPLETION ̲CODE)
: ERROR ̲OK
F̲L̲O̲W̲G̲R̲A̲M̲
Figure 4.2.2.4.6.5-1.
e) U̲p̲d̲a̲t̲e̲ ̲F̲i̲e̲l̲d̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Updates the field references of specified VCB by
means of the information in ATTRIBUTES.FIELD ̲
INFORMATION Generates new fields if required.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
UPDATE ̲FIELD ̲REFERENCES (VCB: VIEW ̲CONTROL ̲BLOCK)
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.2.4.6.5-2.
f) G̲e̲n̲e̲r̲a̲t̲e̲ ̲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̲
Adds a new field to specified Field Group according
to specified Field Information. If the Field Group
is currently empty, the empty Field Descriptor
is used. Otherwise a new Field Descriptor is inserted
at the end of the group. The Field Id is generated
as the currently last Field Id of the group plus
one. The reference count is set to one. Used Length
is set to zero, and Allocated Length is set as
specified in Field Information. If nonzero, space
is allocated by calling Extend Field. It is checked
that the number of fields in field group is not
greater than MAX ̲FIELDS.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲o̲n̲
GENERATE ̲FIELD (VCB: VIEW ̲CONTROL ̲BLOCK,
FG: FIELD ̲GROUP,
INFO: FIELD ̲INFO ̲ELEMENT)
(FD: FIELD ̲DESCRIPTOR,
CC: COMPLETION ̲CODE):ERROR
̲OK
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.2.4.6.5-3.
g) E̲x̲t̲e̲n̲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̲
Extends the specified field by specified number
of sectors, by a series of Allocate Sectors calls.
The sectors are attempted to be appended to currently
last fragment of the field. If it is not possible,
new fragments are generated.
F̲l̲o̲w̲g̲r̲a̲m̲
Figure 4.2.2.4.6.5-4.
h) C̲h̲e̲c̲k̲ ̲F̲D̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Update the specified FD ̲ADDR if
CC = MMS ̲ADDRESS ̲BLOCK ̲ADJUSTED
CHECK ̲FIELD ̲PARAMETERS (VCB: VIEW ̲CONTROL ̲BLOCK, NEW
̲VIEW: BOOLEAN)
(CC: COMPLETION ̲CODE):
ERROR ̲CODE;
START
PVCB = VCB predecessor
LOOP "through all field groups"
ATTR.FIELD ̲INF(FG).REFERENCED NE TRUE?
(PVCB) AND (PVCB exists. RS EQ NOT ̲REF)?
NEW ̲VIEW NE TRUE? ATTR.FIELD ̲INF(FG).FIELD ̲STATUS
EQ NOT ̲EXISTING?
VCB.FIELD ̲ID NE 0?
VCB.RS EQ NOT ̲REF?
FIELD ̲STATUS EQ INCLUDED ̲FROM ̲PREDECESSOR?
PVCB does not exist?
(NEW ̲VIEW NE TRUE) AND (PVCB.FIELD ̲ID EQ 0)? -
ATTR.FIELD ̲INF(FG).WRITE ̲ACCESS EQ TRUE? PVCB.RS EQ
INCL ̲W ̲READ?
NEW ̲FIELD? max no of fields in group reached?
advance to next field group CC = FIELD ̲INFO
̲ERROR
EXIT FG GE CIFCB.NO ̲OF ̲FG
END LOOP "field groups
CC = OK
RETURN (CC)
STOP
Figure 4.2.2.4.6.5-1
Check Field Parameters Flowgram
UPDATE ̲FIELD ̲REFERENCES (VCB: VIEW ̲CONTROL ̲BLOCK, NEW
̲VIEW:BOOLEAN)
START
PVCB = VCB.PREDECESSOR
LOOP "through all field groups
FATT.REFERENCED NE TRUE? - NEW ̲VIEW NE
TRUE?
CASE ATTR.FIELD ̲INF(FG).FIELD ̲STATUS VCB.RS = NOT
̲REF
NOT ̲EXISTING?
VCB.FIELD ̲ID = 0
INCLUDED ̲FROM ̲PREDECESSOR?
VCB.FIELD ̲ID = PVCB.FIELD ̲ID
INCREMENT (FD.REF ̲CONNT)
ATTR.FIELD ̲INF(FG).WRITE ̲ACCESS EQ TRUE?
VCBF.RS = INCL ̲W ̲READ VCBF.RS = INCL ̲W ̲WRITE
NEW ̲FIELD?
GENERATE ̲FIELD (VCB, FG, INFO) (FD)
VCBF.FIELD ̲ID = FD.FIELD ̲ID
VCBF.RS = CREATED ̲BY ̲VIEW
END CASE
advance to next field group
EXIT FG GE CIFCB.NO ̲OF ̲FG
END LOOP "field groups
RETURN
STOP
Figure 4.2.2.4.6.5-2
Update Field References Flowgram
EXTEND ̲FIELD (CIFCB: CIF ̲CONTROL ̲BLOCK, FIELD: SHORT
OR LONG ̲FIELD ̲
DESCRIPTOR, COUNT:
INTEGER)
START
repeat until no more sectors LOOP
CASE FIELD.SHORT ̲FIELD ̲INDICATOR:
SHORT?
FIELD.SECTOR ̲COUNT EQ short ̲max?
CASE ALLOCATE ̲SECTOR(CIFCB, first ̲sector + count,
ADDRESS):ERROR ̲OK
OK? INCREMENT (sector ̲count)
ERROR?
CONVERT ̲TO ̲LONG ̲FIELD(CIFCB,ADDR(FIELD)) ALLOCATE
̲FRAGMENT
ALLOCATE ̲FRAGMENT (CIFCB,ADDR(FIELD),ADDRESS)
END CASE "ALLOCATE ̲SECTOR"
LONG?
locate last fragment
CASE ALLOCATE ̲SECTOR (CIFCB,first ̲sector+count,ADDRESS):ERROR
̲OK
OK? INCREMENT (sector ̲count)
ERROR? ALLOCATE ̲FRAGMENT(CIFCB,ADDR(FRAGMENT),ADDRESS)
END CASE
END CASE
DECREMENT (COUNT)
COUNT EQ 0 EXIT
END LOOP
RETURN
STOP
Figure 4.2.2.4.6.5-4
Extend Field Flowgram
GENERATE FIELD (VCB: VIEW ̲CONTROL ̲BLOCK, FE: FIELD ̲INFO ̲ELEMENT,
CURRENT
̲FD:
FIELD
̲DESCRIPTOR)
(NEW ̲FD: FIELD ̲DESCRIPTOR)
START
SEARCH ̲FG (CURRENT ̲FD, NEW ̲FD)
NEW ̲FD.FIELD ̲ID EQ 0? - NEW ̲FD.FIELD ̲ID = 1
search last ̲field ̲descr. of group
PUT ̲IN ̲ADDRESS ̲ELEMENT (VCB.CIFCB.ADDRESS ̲LIST,
last ̲field ̲descr.)
NEW ̲FD = new element
sector ̲count = first ̲sector = field ̲length = 0
reference count = 0
set not NG and short field
NEW ̲FD = last ̲field ̲descr.FIELD ̲ID + 1
FE.ALLOCATED-LENGTH EQ 0?
COUNT = FE.ALLOCATED ̲LENGTH/512
FE.ALLOCATED ̲LENGTH MOD 512 NE 0? - INCREMENT (COUNT)
EXTEND ̲FIELD (VCB.CIFCB, NEW ̲FD, COUNT)
RETURN
STOP
Figure 4.2.2.4.6.5-3
Generate Field Flowgram
4.2.2.4.7 S̲t̲o̲r̲a̲g̲e̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲ ̲M̲o̲d̲u̲l̲e̲
4.2.2.4.7.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲o̲n̲
The module contains functions for allocation and deallocation
of STS storage.
4.2.2.4.7.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has 3 interfaces:
a) A̲l̲l̲o̲c̲a̲t̲e̲ ̲S̲e̲c̲t̲o̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Allocates a new sector to specified CIF. If possible,
it is allocated at specified sector address in
STS. A zero address specified means, that the address
does not matter. If it is not possible to allocate
at specified address, a sector is allocated at
another address, and error return is made.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
A̲L̲L̲O̲C̲A̲T̲E̲ ̲S̲E̲C̲T̲O̲R̲ (CIFCB: CIF-CONTROL ̲BLOCK,
ADDRESS: STS ̲SECTOR)
(NEW ̲ADDRESS: STS ̲SECTOR):ERROR
̲OK
b) R̲e̲l̲e̲a̲s̲e̲ ̲S̲e̲c̲t̲o̲r̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Release a sector previously occupied by specified
CIF.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲o̲n̲
RELEASE ̲SECTOR (CIFCB: CIF ̲CONTROL ̲BLOCK,
ADDRESS: STS ̲SECTOR)
c) R̲e̲l̲e̲a̲s̲e̲ ̲S̲T̲S̲ ̲B̲l̲o̲c̲k̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲o̲n̲
Releases a complete STS Block. The specified profile
is the security profile of the information stored
in the block. If it is not contained in the Purge
Profile, the block is purged.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
RELEASE ̲STS ̲BLOCK (BLOCK: STS ̲BLOCK,
PROFILE: SECURITY ̲PROFILE)
4.2.2.4.7.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module consists of 6 procedures:
a) Allocate Sector
b) Release Sector
c) Release STS Block
d) Extend CIF
e) Remove Addr Element
f) Put In Addr Element
4.2.2.4.7.4 D̲a̲t̲a̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Refer source list.
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) CIF ̲CONTROL ̲BLOCK (M)
b2) BLOCK ̲LIST ̲ELEMENT (M)
b3) FREE ̲BLOCK ̲MAP (M)
b4) PURGE ̲BLOCK ̲MAP (M)
b5) FREE ̲STS ̲BLOCKS (M)
b6) PENDING ̲THRESHOLD ̲WARNING (M)
b7) STS ̲WARNING ̲PENDING (M)
Figure 4.2.2.4.7.3-1
Storage Management Control Flow
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
None
4.2.2.4.7.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 Reply Command Large 4.1.5.11
- Cm Signal (j)
- Allocate 4.2.2.4.9.2a
- Deallocate 4.2.2.4.9.2b
- Next Addr Element 4.2.2.4.5.2d
- Prev Addr Element 4.2.2.4.5.2e
a) A̲l̲l̲o̲c̲a̲t̲e̲ ̲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̲
A sector is allocated to the CIF, possibly by extending
the CIF with a new block, calling Extend CIF.
If the specified address is 0, the sector may be
allocated anywhere, else the sector is allocated
at the specified address. If this is not possible,
an error is returned.
Flowgram: Figure 4.2.2.4.7.5-1.
b) R̲e̲l̲e̲a̲s̲e̲ ̲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̲
The Block List Element containing the specified
sector is located in the CIF Address List, and
is released from the block. If it was the last
reserved sector of the block, it is released by
Release STS Block.
Flowgram: None.
c) R̲e̲l̲e̲a̲s̲e̲ ̲S̲T̲S̲ ̲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̲
If Profile is not contained in Purge Profile, the
corresponding bit is set in PBM, and Purge Semaphore
is signalled. Otherwise the specified block is
released by freeing its bit in FBM.
FREE ̲STS ̲BLOCKS is then incremented, and Warning
Enable Threshold is inspected.
Flowgram: None
d) E̲x̲t̲e̲n̲d̲ ̲C̲I̲F̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Allocates a new STS Block to specified CIF. If
no free blocks are available, retire. Decrement
FREE ̲STS ̲BLOCKS and check STS Threshold and return
a warning if appropriate. Search FBM for a free
bit. When found, reserve bit and return bit number
in FBM as block number.
Flowgram: Figure 4.2.2.4.7.5-2.
e) R̲e̲m̲o̲v̲e̲ ̲A̲d̲d̲r̲ ̲E̲l̲e̲m̲e̲n̲t̲
The specified address element is removed, i.e.
the following elements are moved upwards in the
list. A Cif Address Block may be released.
Flowgram: None
f) P̲u̲t̲ ̲I̲n̲ ̲A̲d̲d̲r̲ ̲E̲l̲e̲m̲e̲n̲t̲
A new address element is allocated in specified
position of address block. A new Cif Address Block
may be allocated.
Flowgram: None
ALLOCATE ̲SECTOR(CIFCB: CIF ̲CONTROL ̲BLOCK,
(ADDRESS:STS ̲SECTOR)
(NEW ̲ADDRESS:STS ̲SECTOR):ERROR ̲OK
ADDRESS EQ 0?
BLOCK ̲NO = ADDRESS/SECTORS ̲IN ̲BLOCK
find BLE with BLOCK ̲NO
not found ?
ADDRESS not free ?
reserve sector
NEW ̲ADDRESS = ADDRESS
find BLE with free sector
found ?
EXTEND ̲CIF(CIFCB)
reserve sector
initialize NEW ̲ADDRESS
ADDRESS EQ 0 ? - EXIT=OK
EXIT=ERROR
EXIT = OK
RETURN (EXIT)
Fig. 4.2.2.4.7.5-1…01…Allocate Sector Flowgram
EXTEND ̲CIF (CIFCB: CIF ̲CONTROL ̲BLOCK)
START
decrement (NO ̲OF ̲STS ̲BLOCKS)
NO ̲OF ̲STS ̲BLOCKS EQ 0? - IMPOSSIBLE (INTERNAL ERROR)
CHECK ̲STS ̲WARNING
set first cleared bit of FBM
locate last BLE of CIF
BLE.BLOCK2 EQ 0? - BLE.BLOCK2 = blocknumber
PUT ̲IN ̲ADDRESS ̲ELEMENT (CIFCB.ADDRESS ̲LIST, ADDRESS
(FIRST FD))
NEW ̲BLE.BLOCK1 = blocknumber
NEW ̲BLE.BLOCK ̲SECTOR ̲MAP1 = 0
NEW ̲BLE.BLOCK ̲SECTOR ̲MAP2 = 0
RETURN
Figure 4.2.2.4.7.5-2
Extend Cif Flowgram
4.2.2.4.8 P̲u̲r̲g̲e̲ ̲M̲o̲d̲u̲l̲e̲
4.2.2.4.8.1 F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
The module performs purge of disk blocks
in STS, refer 4.2.2.1.8.
4.2.2.4.8.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has one subpackage interface:
a) Purge Block, refer 4.2.2.7.16
4.2.2.4.8.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module consists of one coroutine,
and one procedure
a) Purge
b) Purge Word String
4.2.2.4.8.4 D̲a̲t̲a̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
Refer source list.
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) PBM (m)
b2) FBM (m)
b3) ITS ̲BUF (m)
b4) FREE ̲STS ̲BLOCKS (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
C̲o̲r̲o̲u̲t̲i̲n̲e̲ ̲R̲e̲c̲o̲r̲d̲
VAR PURGE ̲COROUTINE: MMS ̲COROUTINE
Figure 4.2.2.4.8.3-1
Purge Control Flow
4.2.2.4.8.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̲
- Reserve OCD 4.1.5.7
- Release OCD 4.1.5.8
- Init Write Block 4.2.5.7.2
- Release Buffer 4.2.5.7.5
- Put Sequential 4.2.5.7.10
- Write Buffer 4.2.5.7.4
a) P̲u̲r̲g̲e̲ ̲C̲o̲r̲o̲u̲t̲i̲n̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The coroutine waits in Purge Semaphore for a signal
that a block must be purged. Then locates a set
bit in PBM. The bit number is the number of the
block to be purged. OCD is reserved. The ITS
buffer is filled with the random pattern and written
the prescribed number of times. ITS buffer and
OCD are released. The block is released by resetting
its bit in PBM and in FBM. FREE ̲STS ̲BLOCKS are
incremented and Warning Enable Threshold is inspected.
F̲l̲o̲w̲g̲r̲a̲m̲
None
a) P̲u̲r̲g̲e̲ ̲W̲o̲r̲d̲ ̲S̲t̲r̲i̲n̲g̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Fill a data area with a random purge pattern.
4.2.2.4.9 C̲o̲n̲t̲r̲o̲l̲ ̲B̲l̲o̲c̲k̲ ̲A̲l̲l̲o̲c̲a̲t̲i̲o̲n̲ ̲M̲o̲d̲u̲l̲e̲
4.2.2.4.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̲
The module manages 3 pools of control blocks, namely:
- Free CIF Control Blocks, refer 4.1.4.3.1
- Free View Control Blocks, refer 4.1.4.3.2
- Free CIF Address Blocks, refer 4.1.4.3.3.3
4.2.2.4.9.2 I̲n̲t̲e̲r̲f̲a̲c̲e̲
a) A̲l̲l̲o̲c̲a̲t̲e̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Allocates a control block from specified pool.
If NEW ̲SEGM = FALSE the CIFCB must be allocated
in the present segment.
Retires process if no free element available.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
ALLOCATE (NEW ̲SEGM: BOOLEAN)
(POOL: POOL ̲TYPE,
ELEMENT: POINTER)
b) D̲e̲a̲l̲l̲o̲c̲a̲t̲e̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Returns a control block to specified pool.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
DEALLOCATE(POOL: POOL ̲TYPE,
ELEMENT: POINTER)
4.2.2.4.9.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module consists of the procedures:
- Allocate
- Deallocate
4.2.2.4.9.4 D̲a̲t̲a̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
a) D̲a̲t̲a̲ ̲R̲e̲f̲e̲r̲e̲n̲c̲e̲s̲
a1) Pool Descriptors 4.1.4.3.3.5
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) POOLDESCR (m)
4.2.2.4.9.5 M̲o̲d̲u̲l̲e̲ ̲D̲e̲s̲i̲g̲n̲
Allocate - flowgram, fig. 4.2.2.4.9.5-1
Deallocate - flowgram, fig. 4.2.2.4.9.5-2
ALLOCATE(POOL: POOL ̲TYPE,
NEW ̲SEGM: BOOLEAN)
(ELEMENT: POINTER)
START
DECREMENT(POOLDESCR(POOL).FREE ̲COUNT)
POOLDESCR(POOL).FREE ̲COUNT LT 0? IMPOSSIBLE
CIFIB ̲POOL AND NEW ̲SEGM=TRUE? FIND BEST SEGMENT
RETURN
STOP
Figure 4.2.2.4.9.5-1
Allocate Flowgram
DEALLOCATE(POOL: POOL ̲TYPE,
ELEMENT: POINTER)
START
INCREMENT(POOLDESCR(POOL).FREE ̲COUNT)
FREE ̲COUNT GE ENABLE ̲THRESHOLD? ENABLE=TRUE
RETURN
STOP
Figure 4.2.2.4.9.5-2
Deallocate Flowgram
4.2.2.5 C̲o̲m̲m̲o̲n̲ ̲S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲D̲a̲t̲a̲
None
4.2.2.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.2.7 S̲u̲b̲p̲a̲c̲k̲a̲g̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲s̲
4.2.2.7.1 C̲r̲e̲a̲t̲e̲ ̲C̲I̲F̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs CREATE CIF Command. Operation must contain
parameters at call. Reply and CC are updated. Attributes
are read from and returned to calling application.
No Disk Accesses.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CREATE ̲CIF
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲
field info error
4.2.2.7.2 C̲r̲e̲a̲t̲e̲ ̲N̲e̲w̲ ̲C̲I̲F̲ ̲V̲e̲r̲s̲i̲o̲n̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the CREATE NEW CIF VERSION command. Operation
must contain parameters at call. Reply and CC are
updated. Attributes are read from and returned to
calling application. Referenced CIF is opened. No
Disk accesses.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CREATE ̲NEW ̲CIF ̲VERSION
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲
illegal view reference
none existing CIF
CIF not permanent
not latest version
CIF stopped
field info error
4.2.2.7.3 C̲r̲e̲a̲t̲e̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the CREATE ̲VIEW command. Operation must contain
parameters at call. Reply and CC are updated. Attributes
are read from and returned to calling application.
Referenced CIF is opened. No Disk Access.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CREATE ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
none existing CIF
view id overflow
field info error
4.2.2.7.4 R̲e̲m̲o̲v̲e̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the REMOVE ̲VIEW command. Operation must contain
parameter at call. Reply and cc are updated. Referenced
CIF is opened. Disk accesses for Unload and passivation
may take place. CIF is opened with OCD reservation.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
REMOVE ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
none existing CIF
4.2.2.7.5 L̲o̲c̲k̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs LOCK VIEW command.
Operation must contain parameters at call. Reply and
CC are updated. Referenced CIF is opened with OCD
reservation. Disk Access for checkpoint update.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
LOCK ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view references
none existing CIF
view not checkpointed
4.2.2.7.6 U̲n̲l̲o̲c̲k̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs UNLOCK VIEW command. Otherwise as 4.2.2.7.5
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
UNLOCK ̲VIEW
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲
illegal view reference
none existing CIF
view not checkpointed
no matching lock
4.2.2.7.7 S̲t̲o̲p̲ ̲C̲I̲F̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs STOP CIF command. Operation must contain
parameters at call. Reply and CC are updated. The
CIFs found are opened with OCD reservation while their
checkpoints are updated. Disk accesses for checkpoint
update.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
STOP ̲CIF
4.2.2.7.8 L̲o̲o̲k̲u̲p̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the LOOKUP command. Operation must contain
parameters at call. Reply and CC are updated.
Attributes are returned to calling application. OCD
reserved during search. Disk accesses for OCD search
and CIF activation.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
LOOKUP
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
nonexisting CIF
unknown view name
CIF not in STS
no matching look
4.2.2.7.9 G̲e̲t̲ ̲V̲i̲e̲w̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the GET VIEW ATTRIBUTES Command. Operation
must contain parameters at call. Reply and CC are
updated. Attributes are returned to calling application.
CIF opened. No disk accesses.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
GET ̲VIEW ̲ATTRIBUTES
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
none existing CIF
4.2.2.7.10 C̲h̲a̲n̲g̲e̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the CHANGE ATTRIBUTES command. Operation
must contain parameters at call. Reply and CC are
updated. CIF opened. No disk access.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CHANGE ̲ATTRIBUTES
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
none existing CIF
security violation
4.2.2.7.11 C̲r̲e̲a̲t̲e̲ ̲F̲i̲e̲l̲d̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Performs the CREATE FIELD command. Operation must
contain parameters at call. Reply and CC are updated.
Attributes are read from and returned to calling application.
CIF opened. No disk accesses.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CREATE ̲FIELDS
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
illegal view reference
none existing CIF
field info error
4.2.2.7.12 G̲e̲n̲e̲r̲a̲t̲e̲ ̲C̲I̲F̲C̲B̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Generates a CIF Control Block with Address List, and
the first View Control Block for a CIF as specified
in Attributes.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
GENERATE ̲CIFCB ( )
(CIFCB: CIF ̲CONTROL ̲BLOCK,
CC: COMPLETION ̲CODE) : ERROR
̲OK
4.2.2.7.13 C̲h̲e̲c̲k̲ ̲P̲a̲s̲s̲i̲v̲a̲t̲i̲o̲n̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Checks, if specified CIF shall be made passive, and
passivates it if appropriate. The CIF must have been
opened with OCD reservation. The Lock Descriptor is
specified at call. CIF is closed.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CHECK ̲PASSIVATION(CIFCB: CIF ̲CONTROL ̲BLOCK,
LOCK: LOCK ̲DESCRIPTOR)
4.2.2.7.14 D̲e̲l̲e̲t̲e̲ ̲V̲i̲e̲w̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Deletes a view of a CIF. All field references are
removed, and if the View is the last one referencing
a field, the field is removed from disk.
Note that a view must not be deleted, if it exists
in the current checkpoint of the CIF.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
DELETE ̲VIEW (VCB: VIEW ̲CONTROL ̲BLOCK)
4.2.2.7.15 E̲x̲t̲e̲n̲d̲ ̲F̲i̲e̲l̲d̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Extends the specified field with specified number of
sectors.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
EXTEND ̲FIELD (CIFCB: CIF ̲CONTROL ̲BLOCK,
FD: FIELD ̲DESCRIPTOR,
COUNT: INTEGER)
(CC: COMPLETION ̲CODE): ERROR
̲OK
4.2.2.7.16 P̲u̲r̲g̲e̲ ̲B̲l̲o̲c̲k̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Assigns a block in STS to be purged. When the block
has been purged, it is set free, and can then be reused.
I̲n̲v̲o̲c̲a̲t̲i̲o̲n̲
In PBM, the bit corresponding to the block must be
set, and the Purge Semaphore must be signalled. There
must be one semaphore signal for each block to be purged.
4.2.2.7.17 P̲u̲t̲ ̲A̲t̲t̲r̲i̲b̲u̲t̲e̲s̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Sends attributes of specified view to calling application.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PUT ̲ATTRIBUTES (VCB: VIEW ̲CONTROL ̲BLOCK)
4.2.2.7.18 C̲h̲e̲c̲k̲ ̲D̲e̲l̲e̲t̲i̲o̲n̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
Checks wheather the next Remove View command will result
in removal of the CIF from STS.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
CHECK ̲DELETION
C̲o̲m̲p̲l̲e̲t̲i̲o̲n̲ ̲C̲o̲d̲e̲s̲
last handle
4.2.2.7.19 M̲a̲k̲e̲ ̲C̲I̲F̲ ̲P̲e̲r̲m̲a̲n̲e̲n̲t̲
F̲u̲n̲c̲t̲i̲o̲n̲a̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
A temporary CIF, specified by view, is made permanent.
A new CIF Reference Number is generated. Version is
set to one. For each field group of View Attributes,
FIELD ̲IN-
FO.PERMANENT indicates wheather group should be made
permanent.
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
MAKE ̲CIF ̲PERMANENT
4.2.3 C̲I̲F̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲a̲n̲d̲ ̲R̲e̲t̲r̲i̲e̲v̲a̲l̲ ̲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̲
The subpackage manages I̲ntermediate S̲torage and L̲ong
T̲erm S̲torage and transfers between the three storage
types. Cf. figure. 2.2.1.1.-2
The functional break down of the subpackage is shown
on figure 4.2.3.1-1.
G̲e̲n̲e̲r̲a̲l̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
To store a CIF means to retain it in the system in
a way that allows subsequent retrieval. CIFs which
can be subject to storage are those having at least
one permanent field. However, not all those CIFs will
be stored. Only those for which an application process
issues a STORE command will be stored. All other CIFs
will just be deleted from Short Term Storage when they
are no longer in use.
A STORE command actually refers to a View of a CIF,
and only those views for which at least one STORE command
has been issued will be retained. Furthermore, only
permanent fields of those views will be retained.
Stored CIFs are identified by a CIF ID consisting of
a 32 bit CIF REFERENCE NUMBER and an 8 bits VERSION
INDICATOR. The CIF ID is allocated when the CIF is
created, cf. section 2.2.1.4.1. The CIF REFERENCE NUMBER
is increased by one each time a new permanent CIF is
created. Different versions of the same CIF carry same
reference number but different version indicators.
For each CIF, a sequence of STORE commands may be issued
by applications. The STORE commands for a CIF may
be widely dispersed in time. The Store Time for a CIF
is the latest time at which a STORE command has been
issued. It is represented by the 32 most significant
bits of the KERNEL Real Time Clock. The store Time
is used to determine when a CIF shall be removed from
Intermediate Storage, refer 4.2.3.1.1.2.
The first STORE command must not be issued until the
CIF has been checkpointed.
The MMS Storage and Retrieval functions assume that
STORE commands are issued in a̲l̲m̲o̲s̲t̲ the same sequence
as that in which the CIFs were created. This assumption
is not a requirement, but large deviations will decrease
the efficiency of the algorithms for OCD and ITS management.
To retrieve a CIF means to make a copy in STS of a
view of the CIF. As shown on figure 2.2.1.1-2, a CIF
may be retrieved from STS, ITS or LTS.
The retrieved CIF will be temporary, and it is thus
not recoverable.
Note that the STORE command will have no effect on
a CIF, unless the CIF Security profile is contained
in the STORE Profile, refer 2.2.2.6.3 Such CIFs will
consequently never be unloaded or dumped.
The sequence of events for a permanent CIF is as follows,
cf. figure 4.2.3.1-2.
1) The CIF is created in STS by CREATE CIF or
CREATE NEW CIF VERSION command. A CIF ID is
generated.
2) A SAVE command is issued. This will cause
an OCD entry to be created for the CIF. Until
step 4, additional SAVE commands may be issued.
3) During processing of the CIF, one or more STORE
commands may be issued.
The CIF can be retrieved by a RETRIEVE command
from the time the first STORE command has been
issued.
4) CIF Handling Subpackage determines when the
CIF is no longer referenced. At that time,
the CIF shall be u̲n̲l̲o̲a̲d̲e̲d̲ to ITS.
5) The CIF is Dumped to Long Term Storage when
it is referenced in a DUMP command. If the
processing of the CIF takes unusually long
time, for instance because of several edit
cycles, step 5 may actually take place before
step 4. In that case, the CIF is dumped directly
from STS as shown on figure 2.2.1.1-2.
In any case, step 4 will always be performed,
and step 5 may possibly be repeated a number
of times.
6) After step 4, the CIF may be removed from ITS
by a CLEAR command. This will take place when
the time parameter in CLEAR is greater than
the Store Time of the CIF.
Fig. 4.2.3.1-1…01…Functional Break Down
Fig. 4.2.3.1-2…01…Event Sequence for a CIF
4.2.3.1.1 S̲t̲o̲r̲a̲g̲e̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲
4.2.3.1.1.1 P̲a̲c̲k̲e̲d̲ ̲C̲I̲F̲ ̲R̲e̲p̲r̲e̲s̲e̲n̲t̲a̲t̲i̲o̲n̲
A CIF in ITS or LTS is packed into a format taking
up as little space as possible. The packed CIF contains
the data fields together with copies of the control
blocks containing attributes and structure information
for the CIF.
The packed format is shown in figure 4.2.3.1.1-1 through
4, and the parts are explained in the following:
a) Length.
The length in sectors of the packed CIF.
b) Packed CIF Control Block.
A copy of the fields ACCESS ̲PROFILE through FIELD
̲GROUP ̲TYPES of CIF Control Block.
c) Packed View Control Blocks.
An array containing copies of the view control
blocks for the CIF. Only those views for which
at least one STORE command have been issued are
included.
d) Packed Field Descriptors.
An array containing a Field Descriptor for each
stored field. The field descriptors are placed
in sequence of increasing field group id and increasing
field id within same field group. Only those descriptors
referenced by View Control Blocks are included.
e) Fields.
The fields of the CIF, stored in same sequence
as the field descriptors.
A packed CIF will always start on a sector boundary.
4.2.3.1.1.2 I̲n̲t̲e̲r̲m̲e̲d̲i̲a̲t̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲O̲r̲g̲a̲n̲i̲z̲a̲t̲i̲o̲n̲
Intermediate Storage is a contiguous disk area used
as a cyclical buffer for unloaded CIFs, see figure
4.2.3.1.1-5.
When a CIF is unloaded, it is converted to packed format
and stored in ITS from Unload Pointer and onwards,
and Unload Pointer is then moved correspondingly. It
will thus come closer to Clear Pointer.
After a dump of CIFs to Long Term Storage, a CLEAR
command may be issued. It will normally cause a number
of CIFs to be removed from ITS, and will thus normally
but not necessarily cause the Clear Pointer to move
upwards thus freeing storage space in ITS.
The CLEAR command will cause ITS to be read sequentially
from Clear Pointer and onwards. For each packed CIF
read, the Store Time of the CIF will be compared with
Clear Time. If Store Time is smaller or equal, the
following will be done:
- Clear Pointer is updated to point to next CIF in
ITS.
- The OCD entry for the CIF is deleted.
This process is stopped when Clear Pointer reaches
Unload Pointer or a CIF is met with Store Time greater
than Clear Time.
During unload, an ITS Threshold Warning may be issued.
4.2.3.1.1.3 L̲o̲n̲g̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲O̲r̲g̲a̲n̲i̲z̲a̲t̲i̲o̲n̲
Long Term Storage is organized by a 3 level storage
hierarchy:
a) LTS consists of a number of removable disk volumes.
b) Each volume consists of one or more d̲u̲m̲p̲ ̲f̲i̲l̲e̲s̲.
c) Each dump file consists of a number of d̲u̲m̲p̲ ̲s̲e̲g̲m̲e̲n̲t̲s̲.
The concepts are explained below.
By a Dump is meant the process of moving a specified
set of CIFs from Online Storage to Long Term Storage.
The result of a dump is a Dump Segment. It consists
of a CIF storage area containing the dumped CIFs in
packed format, and a CIF directory with an entry for
each dumped CIF. See figure 4.2.3.1.1.3-1.
A Dump File is a contiguous file containing sequence
of Dump Segments. A Dump Segment is identified by Dump
Segment Id, which is its sequence number within the
Dump File. A Dump File starts with a Dump File Header
containing the number of Dump Segments and the location
of each segment. See figure 4.2.3.1.1.3-2 through 5.
When a Dump File is created, it is initialized to be
empty. Each dump to the file will automatically add
a new Dump Segment. A Dump Segment is created by the
following sequence of commands from an application
process:
1) I̲n̲i̲t̲ ̲D̲u̲m̲p̲
Prepares a new Dump segment and returns its Id.
Reserves the Dump File, thus preventing concurrent
dumps to the file.
2) D̲u̲m̲p̲ ̲C̲I̲F̲ ̲S̲e̲q̲u̲e̲n̲c̲e̲
Specifies a list of CIF IDs for CIFs to be dumped
to the segments. The CIFs are moved to the CIF
Storage Area of the segment while the corresponding
directory entries are temporarily stored in an
area at the top of the Dump File. See figure 4.2.3.1.1.3-6.
3) T̲e̲r̲m̲i̲n̲a̲t̲e̲ ̲D̲u̲m̲p̲
Closes the Dump Segment. The CIF directory entries
are moved to the Dump Segment. Then the Dump File
header is updated to reflect the existence of the
new segment. It is not until this time that the
new segment can be recovered after a system failure.
Fig. 4.2.3.1.1-1
Packed CIF
Fig. 4.2.3.1.1-2…01…Packed CIF Tail
Fig. 4.2.3.1.1-3 Packed CIF Header
Fig. 4.2.3.1.1-4…01…Packed Field Descriptor
Fig. 4.2.3.1.1-5…01…Intermediate Storage Organization
Fig. 4.2.3.1.1.3-1 Dump Segment
Fig. 4.2.3.1.1.3-2…01…Dump File
Fig. 4.2.3.1.1.3-3…01…Dump File Header
Fig. 4.2.3.1.1.3-4…01…Segment Descriptor
Fig. 4.2.3.1.1.3-5…01…Dump Segment Directory Sector
Fig. 4.2.3.1.1.3-6…01…Dump Segment Creation
4.2.3.1.1.4 I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲ ̲a̲n̲d̲ ̲R̲e̲c̲o̲v̲e̲r̲y̲
a) I̲n̲i̲t̲a̲l̲i̲z̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲I̲n̲t̲e̲r̲m̲e̲d̲i̲a̲t̲e̲ ̲S̲t̲o̲r̲a̲g̲e̲
Upon a dead start the disk area used for ITS shall
be allocated based on system generation parameters.
Upon a dead or cold start ITS is initialized to
be empty.
The ITS Control Variables Unload Pointer and Clear
Pointer are recovered as follows:
a1) U̲n̲l̲o̲a̲d̲ ̲P̲o̲i̲n̲t̲e̲r̲
As part of each Unload, the new Unload Pointer
is saved in OCD by Checkpoint and Recovery Subpackage
function OCD Unload Update. It is restored as
part of recovery upon a warm start.
a2) C̲l̲e̲a̲r̲ ̲P̲o̲i̲n̲t̲e̲r̲
The Clear Pointer is saved in the ITS Control Sector.
This is done at regular intervals during processing
of the Clear command, and upon termination of this
command. The sector is read upon a warm start.
b) I̲n̲i̲t̲i̲a̲l̲i̲z̲a̲t̲i̲o̲n̲ ̲o̲f̲ ̲L̲o̲n̲g̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲
LTS volumes and Dump Files on those volumes must
be initialized by an application process using
ordinary FMS Commands.
A Dump File must be created as a contiguous file,
and the first sector in the file must be overwritten
with zeroes. By the first Init Dump command for
the file, MMS will then initialize the file with
a Dump File Header, refer 4.2.3.1.1.3.
4.2.3.1.2 D̲i̲r̲e̲c̲t̲o̲r̲y̲ ̲M̲a̲n̲a̲g̲e̲m̲e̲n̲t̲
A CIF Directory is a table of references to retrievable
CIFs, organized directly or sequentially with CIF REFERENCE
NUMBER as key.
There are two kinds of CIF Directories:
a) O̲nline C̲IF D̲irectory.
Contains references to all permanent CIFs in STS
and ITS. All CIFs in ITS are referenced via this
directory. It is maintained by Checkpoint and
Recovery Subpackage.
b) L̲ong Term Storage C̲IF D̲irectory.
Each dump segment contains an LCD referencing the
CIFs in the segment. Cf figure 4.2.3.1.1.3-1.
L̲o̲n̲g̲ ̲T̲e̲r̲m̲ ̲S̲t̲o̲r̲a̲g̲e̲ ̲C̲I̲F̲ ̲D̲i̲r̲e̲c̲t̲o̲r̲i̲e̲s̲
Each dump segment contains its own LCD which is completely
self-contained. The entry format is shown in figure
4.2.3.1.2.-1.
The LCD is a simple list of entries.
During the dump process directory entries for the dumped
CIFs are created and collected in an area at the top
of the dump file. During dump termination, the entries
are moved to the end of the dump segment.
After termination of a dump, the corresponding LCD
can never be changed.
Fig. 4.2.3.1.2-1…01…Long Term Storage CIF Directory Entry
4.2.3.1.3 E̲r̲r̲o̲r̲ ̲H̲a̲n̲d̲l̲i̲n̲g̲
Parameter Errors and Disk Errors on Offline Volumes
are returned as completion codes to calling application.
Internal Errors result in a Retire of the FMS process.
This is done in the procedure Impossible, refer 4.1.5.1.6.
Disk Errors on Online Volumes result in a Retire of
the FMS process. This is done in the procedure Impossible.
Refer 4.1.5.1.6.
4.2.3.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 executed
by the Command Handling coroutines, refer 4.1.2.
4.2.3.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.3.3.1 C̲I̲F̲ ̲a̲n̲d̲ ̲O̲C̲D̲ ̲R̲e̲s̲e̲r̲v̲a̲t̲i̲o̲n̲
Most functions of the subpackage reserve CIF and/or
OCD. Details are described in section 4.2.3.7.
The functions CLEAR and DUMP CIF SEQUENCE may require
a long processing time. They thus release OCD after
each processing cycle in order to allow other commands
accessing OCD to be performed in parallel.
4.2.3.3.2 D̲u̲m̲p̲ ̲C̲o̲n̲t̲r̲o̲l̲
Two booleans DUMP IN PROGRESS and ERROR IN DUMP are
used to control the processing of a Dump. DUMP IN PROGRESS
must be false when INIT DUMP command is issued. It
is set true by INIT DUMP and must be true when commands
DUMP CIF SEQUENCE and TERMINATE DUMP are issued. It
is set false by TERMINATE DUMP.
ERROR IN DUMP is set true if any error occurs during
a dump. Further DUMP CIF SEQUENCE commands are then
rejected. It is set false by INIT DUMP.
Figure 4.2.3.3-1
Procedures influence on Disk buffer states
Figure 4.2.3.3-2
Continued
4.2.3.3.3 A̲c̲t̲i̲v̲e̲ ̲a̲n̲d̲ ̲P̲a̲s̲s̲i̲v̲e̲ ̲C̲I̲F̲s̲
A CIF in STS may be passive at the time it shall be
Dumped or Retrieved. In that case the CIF is made
active, and when the command has been performed, it
is made passive again. Refer 2.2.1.7.
4.2.3.4 M̲o̲d̲u̲l̲e̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲s̲
4.2.3.4.1 S̲t̲o̲r̲e̲ ̲M̲o̲d̲u̲l̲e̲
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̲
The Store module handles the STORE command. This command
has only an effect on the memory resident control information
for the referenced View and CIF.
A Store command is only accepted for a permanent CIF,
and only if the CIF has been checkpointed at least
once.
The effect of the Store command is not recoverable
until the next checkpoint is made for the CIF.
If the CIF security profile has any compartment higher
than or equal to corresponding compartment in STORE
PROFILE, the command is accepted but has no effect.
The STORE TIME of the CIF is updated by the command.
4.2.3.4.1.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has 1 subpackage interface:
- Store, refer 4.2.3.7.1
4.2.3.4.1.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The module has 2 components:
a) Store
b) Get Current Time
Figure 4.2.3.4.1.3-1
Store Control Flow
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̲
Refer source list.
b) E̲x̲t̲e̲r̲n̲a̲l̲ ̲D̲a̲t̲a̲
b1) OPERATION
b2) CC
b3) CIF ̲CONTROL ̲BLOCK
CHECKPOINT ̲STATUS
FIELD ̲GROUP ̲TYPES
STORE ̲TIME (m)
SECURITY ̲PROFILE
CIF ̲ID
b4) VIEW ̲CONTROL ̲BLOCK
STORAGE ̲STATUS (m)
b5) NUMBER ̲OF ̲STORE ̲CALLS (m)
c) L̲o̲c̲a̲l̲ ̲D̲a̲t̲a̲
None.
4.2.3.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̲
- Get CIF 4.1.5.1
- Open CIF 4.1.5.2
- Close CIF 4.1.5.3
a) S̲t̲o̲r̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
Refer 4.2.3.4.1.1
Flowgram: Refer figure 4.2.3.4.1.5-1
b) G̲e̲t̲ ̲C̲u̲r̲r̲e̲n̲t̲ ̲T̲i̲m̲e̲
N̲a̲r̲r̲a̲t̲i̲v̲e̲ ̲D̲e̲s̲c̲r̲i̲p̲t̲i̲o̲n̲
The procedure reads and delivers current time in
seconds.
PROCEDURE STORE
INCREMENT(NUMBER ̲OF ̲STORE ̲CALLS)
CASE GET ̲CIF( )(CIFCB,VCB,CC):ERROR ̲OK
ERROR?
END CASE
CASE OPEN ̲CIF(CIFCB,FALSE)(LOCK,CC):ERROR
̲OK
ERROR ?
END CASE
CIFCB.CHECKPOINT ̲STATUS EQ FALSE OR ? CC =
STORE ̲NOT ̲ALLOWED
CIFCB.FIELD ̲GROUP ̲TYPES EQ 0
CIFCB.SECURITY ̲PROFILE NOT
CONTAINED IN STORE PROFILE ?
VCB.STORAGE ̲STATUS = TRUE
GET ̲CURRENT ̲TIME (TIME)
CIFCB.STORE ̲TIME = TIME
Put CIFCB.CIF ̲ID and VCB.VIEW ̲ID into reply
CC = OK
CLOSE ̲CIF(LOCK)
RETURN
Fig. 4.2.3.4.1.5-1…01…STORE FLOWGRAM
4.2.3.4.2 U̲n̲l̲o̲a̲d̲ ̲M̲o̲d̲u̲l̲e̲
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̲
The module performs the unload of a CIF from STS to
ITS, and contains service functions for the Dump module
to pack a CIF which shall be dumped.
In connection with ITS storage allocation, it controls
the ITS Threshold Warning.
4.2.3.4.2.2 M̲o̲d̲u̲l̲e̲ ̲I̲n̲t̲e̲r̲f̲a̲c̲e̲
The module has one subpackage interface:
a) Unload, refer 4.2.3.7.7
and one additional interface:
b) P̲a̲c̲k̲ ̲C̲I̲F̲
C̲a̲l̲l̲ ̲S̲p̲e̲c̲i̲f̲i̲c̲a̲t̲i̲o̲n̲
PACK ̲CIF (CIFCB: CIF ̲CONTROL ̲BLOCK,
START,
MAXLENGTH: SECTOR ̲NUMBER)
(CIFLENGTH: SECTOR ̲NUMBER,
CC: COMPLETION ̲CODE): ERROR
̲OK
4.2.3.4.2.3 M̲o̲d̲u̲l̲e̲ ̲C̲o̲m̲p̲o̲n̲e̲n̲t̲s̲
The components are procedures.
a) Unload.
b) Pack CIF.
An active CIF in STS is converted to packed format
and written at specified sector location in ITS
or a Dump File on an offline volume. It is checked,
that the length of the packed CIF does not exceed
the specified max. length.
c) Write Packed Header.
d) Pack Fields.
e) Check Free ITS.
f) Determine Packed CIF Length.
g) Decrease Free ITS.
h) Next dest disk buf
i) Move field buf to cache