|
Is there any trick available to create a multiple occurrence data
structure and define the size at run time?
The "trick" is to manually do what the compiler does with a MODS and simply
use a pointer to base the structure. You then move to the next occurrence
by updating the pointer. Pointer can reference dynamic memory, or a user
space - your choice.
Like this:
d dynamicMODS DS Based(pdynamicMODS)
d field1 5p 0
d field2 30a
d pbase s *
d x s 10i 0
d max s 10i 0 Inz(30)
/Free
// Allocate enough space for 30 elements
pbase = %alloc(max * %size(dynamicMODS));
pdynamicMODS = pbase; // Occurrence is set at 1
// Increment to next element
pdynamicMODS = pdynamicMODS + %size(dynamicMODS);
// Set to occurrence x
pdynamicMODS = pdynamicMODS + ((x -1) * %size(dynamicMODS));
// Increase storage by 20 elements (max now 50)
max = max + 20;
pbase = %realloc(max * %size(dynamicMODS));
// NOTE pbase may have changed so current value of
// pdynamicMODS should now be reset to avoid nasty accidents!
Jon Paris
Partner400
www.Partner400.com
www.systemideveoper.com
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.