COmpile Insert Foreign.Subs.Equates
*>>
* FOREIGN.SUBS.EQUATES - equates for the subroutine handler supplied with
*                        bond.
*
* Each environmental bond may supply a subroutine handler as part of its
* bonding kit.  This subroutine has a name of the form XXXX.SUBS, where
* 'XXXX' is the name of the bond (e.g. DBASE, ASCII, etc.).
*<<
!
!
*
* FOREIGN.SUBS command codes
*
* The first argument to the subroutine handler is a code which specifies
* the function to be performed:
*
EQU     FBS.TYPE.EXPAND$     TO        1
*>>
* FBS.TYPE.EXPAND$ - bond-specific fill-out of dictionary record.
*
* Syntax:
*     $INSERT FOREIGN.SUBS.EQUATES
*     CALL ____.SUBS(FBS.TYPE.EXPAND$, TYPE.ARGS, MAP.RECORD, FILE.ATTR
*                    DICT.RECORD, STATUS)
*
* Where:
*     TYPE.ARGS    -
*         contains the fieldmark-separated argument values for the core
*         generic type.  Note that, for derived types, this may be different
*         than the argument list which appears in the 'D.E.GENERIC.TYPE'
*         field of 'DICT.RECORD'.
*     MAP.RECORD   -
*         is the record from the type-mapping table which corresponds to the
*         type mapping the user has (implicitly or explicitly) selected.
*     FILE.ATTR    -
*         contains the bond-specific file attributes as returned by the
*         associated bond-specific collector window.  Each attribute value
*         is separated by a fieldmark.  The first field is reserved for
*         specifying the "file type".  If this argument is NULL, the default
*         file attributes are to be assumed.
*     DICT.RECORD  -
*         contains the dictionary record to be filled out.  This may already
*         have been partially filled out by the user and/or the generic type
*         expansion routines.
*     STATUS       -
*
* Description:
*     FBS.TYPE.EXPAND$ may be called by BOND.SUBS when it is using a type
* specification to fill out a dictionary record.  The bond designer specifies
* which mappings require bond-specific manipulation of the dictionary record
* by setting a flag (BSTM.CALL.EDIT$) in the corresponding record in the
* type mappings file.
*<<
EQU     FBS.MAP.FILENAME$   TO        2
*>>
* FBS.MAP.FILENAME$ - Map filename into acceptable foreign filename.
*
* Syntax:
*     $INSERT FOREIGN.SUBS.EQUATES
*     CALL ____.SUBS(FBS.MAP.FILENAME$, NAME.IN, NAME.OUT, STATUS)
*
* Where:
*     NAME.IN      -
*         Contains a filename to be validated for the foreign
*         environment.
*     NAME.OUT     -
*         Will contain a translated version of the input filename
*         which would be acceptable to the foreign environment.  If
*         the input filename did not require any translation, then
*         NAME.OUT will be set to NAME.IN.
*     STATUS       -
*         ''                 - The input filename is acceptable to
*                              the foreign environment as is.
*         FS_INVALID_FILENAME_ERR$
*                            - The input file name cannot be directly
*                              represented in the foreign environment.
* Description:
*     FBS.MAP.FILENAME$ can be used to map an Advanced Revelation
* filename into a foreign filename.  It can also be used to
* determine the validity of a foreign filename.  If the given
* filename is legal in the foreign environment, then it is
* returned and STATUS will be NULL.  If not, the bond will return
* (in NAME.OUT) a similar filename which is legal and will set the
* status to FS_INVALID_FILENAME_ERR$
*<<
EQU     FBS.MAP.FIELDNAME$   TO        3
*>>
* FBS.MAP.FIELDNAME$ - Map fieldname into acceptable foreign fieldname.
*
* Syntax:
*     $INSERT FOREIGN.SUBS.EQUATES
*     CALL ____.SUBS(FBS.MAP.FIELDNAME$, NAME.IN, NAME.OUT, STATUS)
*
* Where:
*     NAME.IN      -
*         Contains a fieldname to be validated for the foreign
*         environment.
*     NAME.OUT     -
*         Will contain a translated version of the input fieldname
*         which would be acceptable to the foreign environment.  If
*         the input fieldname did not require any translation, then
*         NAME.OUT will be set to NAME.IN.
*     STATUS       -
*         ''                 - The input fieldname is acceptable to
*                              the foreign environment as is.
*         FS_INVALID_FIELDNAME_ERR$
*                            - The input file name cannot be directly
*                              represented in the foreign environment.
* Description:
*     FBS.MAP.FIELDNAME$ can be used to map an Advanced Revelation
* fieldname into a foreign fieldname.  It can also be used to
* determine the validity of a foreign fieldname.  If the given
* fieldname is legal in the foreign environment, then it is
* returned and STATUS will be NULL.  If not, the bond will return
* (in NAME.OUT) a similar fieldname which is legal and will set the
* status to FS_INVALID_FIELDNAME_ERR$
*<<
EQU     FBS.SELECT.DERIVED$     TO      4
*>>
* FBS.SELECT.DERIVED$ - Select which type this one is derived from.
*
* Syntax:
*     $INSERT FOREIGN.SUBS.EQUATES
*     CALL ____.SUBS(FBS.SELECT.DERIVED$, TYPE.NAME, TYPE.ARGS,
*                                         SELECTED.TYPE, STATUS)
*
* Where:
*   TYPE.NAME -
*       is an input variable containing the name of a data type in
*       TYPE_TABLE.
*   TYPE.ARGS -
*       is an input variable containing the arguments to the data type
*       specified in TYPE.NAME.  These arguments will be separated by
*       field marks.
*   SELECTED.TYPE -
*       is an output variable containing a data type specification,
*       including parameters, if any.
*   STATUS -
*       is either NULL if no error was encountered
* Description:
*   FBS.SELECT.DERIVED$ is used to dynamically decide what data type
* a particular type is derived from.  When the "Derived From" field of
* a TYPE_TABLE record contains the word "DYNAMIC", BOND.SUBS will call
* FOREIGN.SUBS with this function code in order to obtain a dynamically-
* generated value for the "Derived From" field.  This value may contain
* insertable parameters (e.g. "%1%").
*
*<<
* Source Date: 15:47:15  09 JAN 1991  Build ID: AREV*2.1.26  Level: 2.1
