class %MV.File
extends %RegisteredObject
property %Account
as %String;
property %BSCAN
as %String [ MultiDimensional ];
Simpler index functions such as BSCAN, expect the file variable to track the last index
access. In order to allow this, we store these in an array, subscripted by index name.
The top level is used to track when BSCAN walks over the global itself, instead of
an index.
property %COSName
as %String;
property %CasePreserveName
as %String;
Case preserving form of file name
property %ClassName
as %String;
property %ClassNamespace
as %String;
Namespace for Class
property %DictFlag
as %Integer [ InitialExpression = 0 ];
property %FileName
as %String;
property %FireTriggers
as %Integer [ InitialExpression = 0 ];
This boolean flag indicates that the MVFIO routines must process trigger calls
when it is set to TRUE. The trigger routine itself will clear this flag to call
back in to MVFIO to process the operation then set it back to TRUE when the
operation is complete. This allows Pre and Post operations to exist for an
MVFIO function without interfering with the indexing routine calls.
property %Global
as %String;
property %IOTable
as %String;
IO table used for reading or writing to the files in this directory
property %IndColl
as %String;
$LIST of index collations that can be used by index functions
property %IndFlag
as %Boolean [ InitialExpression = 0 ];
Flag to determine if index names/collations has been loaded yet
property %IndMV
as %String;
String of index MV flags (0->S,1->M) that can be used by index functions
property %IndNames
as %String;
$LIST of index names that can be used by index functions
property %IndexCollation
as %Integer [ InitialExpression = 0 ];
A select list can represent an index. An index stores the actual keys
as oppposed to the key values returned by READNEXT in collated encoding
sequence such as MV R or SPACE (equivlant to MV L) etc.
This property defines the collation in use for the index.
property %IndexName
as %String;
When the file variable is produced as a result of OPENINDEX
then the index that was opened is stored here for future use by any select
lists. Note that at the moment index storage is restricted to the default
of ^INDEXGLOBAL("indexName",... and we may need to review this, though it
is unlikely to be an issue
property %IndexRoutine
as %String;
property %IndexType
as %Integer [ InitialExpression = 0 ];
property %IsBinary
as %Boolean [ InitialExpression = 0 ];
property %IsTranslated
as %Boolean [ InitialExpression = 1 ];
property %LockName
as %String;
property %Namespace
as %String;
property %Options
as %String;
Options (from attribute 6)
property %SectionName
as %String;
Section Name when not the default data section
property %StorageType
as %Integer [ InitialExpression = $$$MVFIOTypeUndef ];
property %TargetAccount
as %String;
property %TargetFileName
as %String;
property %TriggerOperations
as %Integer [ InitialExpression = 0 ];
This integer flag stores a number of bits indicating which, if any MVFIO
operations must operate trigger subroutines. If the bit corresponding to the
operation at hand is set, and the trigger processing is not currently executing
then a specific COS routine entry point will be be queued up by the MVFIO C
routine and the processing function will DISP to it.
property %TriggerRoutine
as %String;
Stores the name of the generated COS routine (including namespace) that must be
called if this file descriptor is subject to any of the file trigger processing
options described below.
How this works is that when a file is opened the FireTriggers flag is set
(if there are ANY triggers). When any MVFIO routine is called it checks to see
if this flag is set and if it is, then it checks to see if there are triggers
for this specific operation (may do this the other way around). If both tests
pass then control is transferred to the named COS routine TriggerRoutine.
The first thing the entry point for the particular IO function does is turn
that flag off. It is then free to call the BASIC subroutines pre and post
operation and call back in to the MVFIO system to do the actual operation
(which will this time not fire the COS routine).
method %OnClose()
as %Status
This callback method is invoked by the %Close method to
provide notification that the current object is being closed.
The return value of this method is ignored.
method Close()
as %Status
method Dump()
as %Status
method UnlockAll()
as %Status