ST_FLDDEF

Added October 2018

The layout of ST_FLDDEF, defined in ASHINC:DYNSTRUCT.DEF, is:

define MAX_ARY_DIMS = 4         ! max # array dimensions

deftype T_DYN_NAME  = S,64      ! type,size for DYNSTRUCT struct and field names

deftype T_DEFTYP    = S,64      ! type used to store name a DEFTYPE name

 

defstruct ST_FLDDEF                 !

    map2 name,T_DYN_NAME            ! name of struct or field

    map2 vartyp,b,2                 ! see VARTYP_xxx

    map2 varsiz,b,4                 ! size of field (or element in array)

    map2 pos,b,4                    ! offset from base of structure, base 0

    map2 subs,b,2                   ! # subscripts (0 for scalar)

    map2 subext(MAX_ARY_DIMS),b,4   ! # of elements in up to 4 dimensions

    map2 deftyp,T_DEFTYP            ! name of deftype (if applic.)

endstruct

 

The deftyp member will contain the name of the DEFTYPE used to define the member type and size, if it didn’t use a built-in type.  The idea behind including it is to allow DEFTYPEs to be used as data dictionary data types, allowing you to write generic code to handle the special formatting or other semantic attributes of members that aren’t otherwise knowable from the simple types.