compile insert DICT_EQUATES
/*
   ** Copyright (C) 1992-2016 Revelation Software Inc. All Rights Reserved **
   
   Author   : The wizards of old
   Date     : Once upon a time ...
   Purpose  : Equates that define the structure of Advanced Revelation's and 
              OpenEngine's Data Dictionary
   
   Comments
   ========
   
   Amended  Date        Reason
   =======  ====        ======
   Mr C     14 Jun 18   Added DICT_FOREIGN_KEY_TABLE$
   Mr C     16 Feb 16   Added a couple of delimiter notes
   Mr C     24 Sep 15   Cleaned up, Added header guards, removed HR equates
   mtr      05 Jan 11   Added DICT_BITMAP_IDX_FLAG$ for field 46
   mtr      21 Feb 06   Added fields 36 and 37, And  FIELDS For %fields%
   mtr      19 Jan 06   Added field 35
*/
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#ifndef _DICT_EQUATES_
#define _DICT_EQUATES_
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

   equ DICT_TYPE$               to 1      ;* Type of current field.
                                          ;* 'F' = Data Field
                                          ;* 'S' = Symbolic (formula in DICT_FORMULA)
                                          ;* 'G' = Group (group data in DICT_DISPLAY)

   equ DICT_COLUMN_NO$          to 2      ;* The position of the data in the record

   equ DICT_DISPLAY$            to 3      ;* The Column Heading used by RLIST and other tools
                                          ;* For type 'G' dictionary records, this field
                                          ;* contains the group data.
                                          ;* ( Lines are @vm delimited )

   equ DICT_SM$                 to 4      ;* Single or Multivalue flag "S"ingle "M"ulti

   equ DICT_PART$               to 5      ;* Key part.  For multi-part keys, this field
                                          ;* specifies the part number (1, 2, 3, etc.)
                                          ;* For single-part key fields, this field should be 0.

   equ DICT_INDEX_FLAG$         to 6      ;* BTREE INDEX flag (boolean value).

   equ DICT_CONV$               to 7      ;* Contains the output conversion for data

   equ DICT_FORMULA$            to 8      ;* If the field type = "S" then this field will contain an rbasic formula

   equ DICT_JUST$               to 9      ;* Justification for displaying and sorting data.
                                          ;* 'L' = Left
                                          ;* 'R' = Right
                                          ;* 'C' = Centered
                                          ;* 'T' = Text
                                          ;* Text justification means no justification.

   equ DICT_LENGTH$             to 10     ;* Display length for this field.  Note that this length
                                          ;* is not necessarily the length of the data itself,
                                          ;* especially in bonded files.

   equ DICT_PATTERN$            to 11     ;* Input validation/conversion for this field

   equ DICT_GENERIC_TYPE$       to 12     ;* The Arev Generic Data type associated with this field

   equ DICT_SOURCE$             to 13     ;* This field is basically reserved for backwards compatibility
                                          ;* with REV/G.  Don't use it.

   equ DICT_LAST_UPDATE_BY$     to 13     ;* Well, I guess we are using it now then right? :)
   
   equ DICT_DESC$               to 14     ;* Description of this field. Used for documentation.
                                          ;* Can be displayed as online help using an HD code.
                                          ;* ( Lines are @tm delimited )

   equ DICT_FOREIGN_TYPE$       to 15     ;* The data type name in the foreign environment

   equ DICT_FOREIGN_NAME$       to 16     ;* The field name in the foreign environment

   equ DICT_FOREIGN_MAP$        to 17     ;* For bonded files, this field uniquely specifies
                                          ;* a data mapping (that is, the algorithm used to
                                          ;* transfer data between the Advanced Revelation data type
                                          ;* and the foreign data type).

   equ DICT_FOREIGN_ATTR$       to 18     ;* This field contains any foreign field attributes
                                          ;* that a bonded dictionary field may have, separated
                                          ;* by value marks.

   equ DICT_PMD$                to 19     ;* This field is still being designed.  (Still?)

   equ DICT_NULL_TRUNC$         to 20     ;* This field allows the user to override the bond's
                                          ;* default handling of null values for this field.
                                          ;* If the bond cannot support null values, setting the first
                                          ;* value of this field to 'Y' allows nulls to be stored
                                          ;* without an error.  A 'N' or null first value allows the
                                          ;* default behaviour: if the bond cannot store nulls in this
                                          ;* field and a null is written, an I/O error will result.
                                          ;* If the first value is 'Y', the second value can be
                                          ;* used to specify what value the bond should store in
                                          ;* the field when a null is written.  The bond is not
                                          ;* required to support this latter ability.

   equ DICT_DEPENDENT$          to 21     ;* Reserved for indexing.

   equ DICT_XREF$               to 22     ;* If non-null, then there is a cross-reference index
                                          ;* on this field.  In that case, the value in DICT_XREF
                                          ;* is the name of the symbolic field that calculates the
                                          ;* cross-reference index.

   equ DICT_RELATIONAL$         to 23     ;* If non-null, then this field is used to update a relational
                                          ;* index in another file and contains the key to a record
                                          ;* in that other file.

   equ DICT_RELATED$            to 24     ;* For relational indexes, this field is updated to contain the
                                          ;* keys to the related records in the other file.

   equ DICT_PROTECT$            to 25     ;* 1 if this field is protected.  This flag is set by
                                          ;* relational indexing process.

   equ DICT_LOWERCASE$          to 26     ;* Controls how indexed fields are indexed:
                                          ;* 0 = convert to uppercase
                                          ;* 1 = maintain case supplied.

   equ DICT_COMPUTED$           to 27     ;* Reserved for indexing.

   equ DICT_MASTER_FLAG$        to 28     ;* For 'F'-type dictionary records, this flag
                                          ;* distinguishes synonym fields from the "real" field.
                                          ;* This flag is '0' for synonyms and '1' otherwise.

   equ DICT_DEFAULT$            to 29     ;* SQL default value for insertions.

   equ DICT_REFERENCE$          to 30     ;* SQL.  Indicates this column is a foreign key to the listed table(s).

   equ DICT_NULL$               to 31     ;* SQL.
                                          ;* 0 = column can store nulls.
                                          ;* 1 = column can't store nulls.
                                          ;* We're still figuring out whether this field and
                                          ;* DICT_NULL.TRUNC should be the same field.
                                          ;*
                                          ;* (Well don't keep us in suspense - you've have 20 years or so... )

   equ DICT_UNIQUE$             to 32     ;* SQL.  0=column may contain duplicate values. 1=column must contain unique values.

   equ DICT_LENGTH_LIMIT$       to 33     ;* SQL.  Length (in chars) of data.  Needs to be
                                          ;* integrated with bonding.

   equ DICT_PRODUCT$            to 34     ;* Product flag
                                          ;* 0 or null - both Advanced Revelation and OpenInsight
                                          ;* 1 Advanced Revelation only
                                          ;* 2 OpenInsight only

   equ DICT_TIMEDATE$           to 35     ; *TimeDate stamp On dictionary Field - back For OI 8.0
   equ DICT_MV_GROUPNAME$       to 36     ; *GroupName For AMV groups - back For OI 8.0
   equ DICT_MV_GROUP_MASTER$    to 37     ; *GroupName For AMV groups - back For OI 8.0

   equ DICT_IN_TRUNC$           to 39     ;* The first value in this field is either null, 0, or 1.
                                          ;* 0 or null means the default handling of input truncation:
                                          ;* if transferring a field into AREV would result in any loss of
                                          ;* information, an I/O error is returned.  1 allows the
                                          ;* the bond to truncate the data without returning an error.
                                          ;* In this case, either one or two values can follow the 1.
                                          ;* For character-based fields, a single value specifies what the
                                          ;* bond should read in when all information would be lost
                                          ;* (e.g., the field consisted of 3 field marks).  For numeric-
                                          ;* based fields, the second value is the replacement for
                                          ;* numeric underflow and the third value is the replacement for
                                          ;* overflow.

   equ DICT_OUT_TRUNC$          to 40     ;* Same as DICT_IN.TRUNC, except for output.

   equ DICT_USER1$              to 41     ;* This field is reserved for the application.
   equ DICT_USER2$              to 42     ;* ""
   equ DICT_USER3$              to 43     ;* ""
   equ DICT_USER4$              to 44     ;* ""
   equ DICT_USER5$              to 45     ;* ""

   equ DICT_BITMAP_IDX_FLAG$    to 46     ;* Bitmap Index Flag. MTR 1-5-2011
   equ DICT_FOREIGN_KEY_TABLE$  to 47     ;* Flags the column as containing keys to a foreign table
                                          ;* (contains the foreign table name)

   equ DICT_OBJECT$             to 51     ;* This field contains binary data; object code for the current Field


///////////////////////////////////////////////////////////////////////////////

   * // Equates that define the structure of the special record "%FIELDS%" 
   * // found in each Arev Dictionary. All of these fields are associated 
   * // multivalued fields.
   
   equ FIELDS_ID$                to "%FIELDS%"

   equ FIELDS_VERSION$           to 1      ;* Dict.mfs associated version number
   equ FIELDS_MAXFIELD$          to 2      ;* The highest FMC number in the dictionary.
   equ FIELDS_NAME$              to 3      ;* Contains field names.
   equ FIELDS_TYPE$              to 4      ;* Contains DICT_TYPE values.
   equ FIELDS_FIELD_NO$          to 5      ;* Contains DICT_FIELD.NO values.
   equ FIELDS_INDEX$             to 6      ;* Contains DICT_INDEX.FLAG values.
   equ FIELDS_XREF$              to 7      ;* Contains DICT_XREF values.
   equ FIELDS_PART$              to 8      ;* Contains DICT_PART values.
   equ FIELDS_MVFLAG$            to 9      ;* Contains DICT_SM values.
   equ FIELDS_JUST$              to 10     ;* Contains DICT_JUST values.
   equ FIELDS_LENGTH$            to 11     ;* Contains DICT_LENGTH values.
   equ FIELDS_CONV$              to 12     ;* Contains DICT_CONV values.
   equ FIELDS_DEFAULT$           to 13     ;* Contains DICT_DEFAULT values.
   equ FIELDS_MASTER_FLAG$       to 14     ;* Contains DICT_MASTER.FLAG values.

   equ FIELDS_PRODUCT$           to 18     ;* Contains DICT_PRODUCT values
   equ FIELDS_MV_GROUPNAME$      to 19     ;* GroupName For AMV groups - back For OI 8.0 * mtr 2-21-06
   equ FIELDS_MV_GROUP_MASTER$   to 20     ;* GroupMaster For AMV groups - back For OI 8.0 * mtr 2-21-06

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#endif
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
