Please enable JavaScript to view this site.

A-Shell Reference

Updated August 2022

.BINDSTRUCT ds, st

Parameters

ds

an instance of a DYNSTRUCT

st

an instance of a DEFSTRUCT

The .BINDSTRUCT statement binds the specified DYNSTRUCT variable (ds) to the structure definition corresponding to the specified DEFSTRUCT instance variable (st). Then it copies the data from the DEFSTRUCT instance to the DYNSTRUCT.

This would be equivalent to the following...

xcall MIAMEX, MX_DYNSTRUCT, DYNOP_DEF, status, src$, fields, stsize, dsname$

xcall MIAMEX, MX_DYNSTRUCT, DYNOP_BIND, status, dsname$, ds

ds = st

 

... except that the structure name (dsname$) is determined implicitly from the structure variable instance (st), and the src$ parameter is set to "" to extract the structure definition from the current RUN file directly.

Note that DEFSTRUCTs are embedded in the RUN file only under certain conditions. If not embedded by the compiler, you can embed them at run time using MX_DYNSTRUCT. See the links before for more details.

Also note that the second argument (the defstruct instance) may be a base array reference. For example:

.BINDSTRUCT ds, st()

In this case, the structure is bound to the DYNSTRUCT instance (ds), but no data is copied. However, once bound, you can then manually copy elements from the array, using the same binding, e.g.

.bindstruct ds, st()      ! bind w/o copy

for i = .extent(st())

    ds = st(i)            ! copy, preserving prior binding

    ? ds,@fldname$        ! dynstruct deferred indirect ref

next i

 

See Also

History

2022 August , A-Shell 6.5.1718:  Add option, as described above, allowing st to be a base array reference.

2022 February, A-Shell 6.5.1711:  Function added to A-Shell