I had this discussion with Ian Sanders and from what I understood, in
current versions of [UV] that the pointer is now maintained in loops. So
that there is no longer speed related advantages (pointer based) using
REMOVE.

FOR I = 1 TO 10000
   X = ARRAY<I>
NEXT I

Is equivalent to:

FOR I = 1 TO 10000
   X = REMOVE(ARRAY<I>)
NEXT I

-[d]-

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 27, 2004 9:10 AM
To: [EMAIL PROTECTED]
Subject: RE: [U2] [UD] Exit BASIC program with SELECT list?


On 26 Oct 2004 13:26:22 -0700, Allen Egerton wrote:
> Why wouldn't you use the REMOVE statement?

On 26 Oct 2004 16:33:55 -0700, Allen E. Elwood wrote:
> Ohh.....lemme see, could it be that I've never heard of REMOVE?

A caution with REMOVE - It removes up to the next DELIMITER, so if you have
value marks or lower delimiters in your data, you won't skip an entire
attribute.  Full UniData syntax is

REMOVE var FROM dyn.var [AT col.pos] SETTING delim.code

delim.code returns the delimiter:  0=End, 1=Record Mark, 2=Attribute Mark,
etc.

I found the following works rather well, and returns full attributes
without extra coding:

SELECT DYM.ARRAY TO LIST.VAR
LOOP WHILE READNEXT ATTR FROM LIST.VAR DO
   <process ATTR>
REPEAT

Also, when building a list, I found on our system that using

NEW.LIST = NEW.LIST:@AM:NEW.VAL

works faster than the <-1> construct.

Your mileage may vary.

--Tom Pellitieri
  Century Equipment
  Toledo, Ohio
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to