Bind a Definition to a Variable

Binding a dynstruct definition to a dynstruct variable is a one-line operation, once the dynstruct has been defined and the variable declared…

map1 status,i,4      ! status variable

map1 ds, dynstruct   ! dynstruct variable

 

status = Fn'Dynst'Bind("ST_TEST", ds)

if status < 0 then <error>

 

As in the previous example, instead of using the MX_DYNSTRUCT call directly, here we used a wrapper function from fndynst.bsi in SOSLIB:[907,10], mainly to isolate us from possible changes in the implementation of the underlying mechanism. Using the MX_DYNSTRUCT directly would look like this:

map1 status,i,4      ! status variable

map1 ds, dynstruct   ! dynstruct variable

 

xcall MIAMEX, MX_DYNSTRUCT, DYNOP_BIND, status, "ST_TEST", ds

if status < 0 then <error>

 

Once the dynstruct definition has been bound to the dynstruct variable ds, the variable will have same size as the defined structure (ST_TEST) and can be copied to/from traditional structure variables of the same type, or X,0 variables. The following assumes that ds was defined and bound as show above.

map1 test1, ST_TEST  ! traditional structure

 

test1 = ds           ! copy from DYNSTRUCT var to traditional structure

ds = test1           ! or vice versa

 

To copy a bound dynstruct variable and its bound definition to another dynstruct variable that has not yet been bound, use the MX_DYNSTRUCT DYNOP_COPY or its wrapper function.