# Accessing Members in the Dynstruct

> [HTML Version](accessingmembers.htm)

This example continues from the previous one in which we retrieved the layout of the dynstruct ST\_TEST into a flddefs() array, and then created a simple array, fnames\$(), of member names. Here we’ll bind the defined dynstruct to a dynstruct variable, make assignments to members via the Simple Indirect syntax, and then retrieve members using the Indirect Deferred syntax with the help of the fnames\$() array.

map1 status,i,4              \! status variable

map1 dstest, dynstruct       \! dynstruct variable 

map1 fields,i,4              \! # fields (see previous example)

map1 i,i,2                   \! loop variable

dimx flddefs(10),ST\_FLDDEF   \! array of field info (see prev example)

dimx fnames\$(0), T\_MAX\_DYNAME, auto\_extend \! array of field names (see prev)



<define ST\_TEST, retrieve flddefs(), create fnames\$() per above examples>



status = Fn'Dynst'Bind("ST\_TEST", dstest)   \! bind ST\_TEST Dynstruct to dstest

if status = 0 then          \! success

    \! samples assignments using simple indirect syntax

    dstest.sku = "SKU12345"

    dstest.qty = 2

    dstest.price.retail = 1.99

    dstest.notes(1) = "steal this product"

    dstest.notes(2) = "and live in infamy"



    \! sample retrieval/display using indirect deferred syntax

    for i = 1 to fields 

        ? dstest.@fnames\$(i)    \! warning: see notes below

    next i

endif



Although the indirect deferred system is very convenient and indeed essential if the goal is to write totally generic code without any hard-coded references to specific dynamic structure members, there are a couple of complications which need to be considered when iterating through the fields by name; see the subtopics noted below.

**Subtopics**

- [Multi-level field structures](multi-levelfieldstructures.md)

- [Array members](arraymembers.md)