× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Rich Duzenbury wrote:
Hello,

I've ALLOC'd some variable amount of storage, and now I want to move some
data into it.  I currently use the following idiom to base a character
variable onto a pointer:

D pentry          s               *
D entry           s            100    based(pentry)

Now, I can MOVEL some data into entry (up to 100 bytes), and it goes where
the pointer is pointing to quite nicely.

My problem is that since the amount of storage is variable, I don't want to
have to declare a fixed length for the 'entry' variable.

How can I copy data into the contents of pentry while avoiding a fixed
length restriction?
Clearly, MOVEL is inappropriate since you don't often really know
how much storage is actually allocated.

First, as someone else mentioned, declare your based variable with
some large length, such as 65535. Since no static storage is
allocated, the length doesn't really matter. Then, *only* work with
the data using %SUBST. If the length is maintained in variable
ENTRY_LEN, then use the based variable as %SUBST(ENTRY:1:ENTRY_LEN).
This works on both left-hand side and right-hand side of an EVAL
statement.

Of course, you're still limited to a maximum of 65535 characters. If
you want to work with more data than that, then you need to manage
the bits and bytes yourself at an even lower level.

On the other hand, I'd recommend keeping things simple and just use
a normal statically allocated, varying length character variable,
even if it takes up a lot of storage. It's a lot easier than having
to mess around with pointers and the extra complexity of remembering
the actual allocated size. I'm sure you can handle these issues
fine, but what about the next programmer who has to maintain this
code? You just have to forget the %SUBST once to get into
potentially very tricky debugging problems.

Cheers!  Hans





As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.