Mark: Generally, the FOR/NEXT structure is used for looping where the loop count is known. If the loop count is unknown the LOOP/REPEAT structure should be used. Don't try to fit a square peg into a round hole.
The REMOVE function is designed to traverse an array while preventing the next field read from having to start from the beginning of the array. When using small arrays, the need to use REMOVE is unnecessary. However, when using large arrays REMOVE is mandatory (this isn't true in UV). This is not true for D3, mvBase, and maybe UniData. So, use REMOVE when traversing large arrays and forget this FOR/NEXT looping BS. If you're only wanting to extract single valued arrays then READNEXT works just fine. D3 doesn't allow a SELECT to create a READNEXT list from an array so REMOVE is all D3 can use. As a result, REMOVE seems to be the generic statement to use under the specific circumstances. However, the syntax for D3 is different than the UV so one should keep in mind of the potential differences. Hope this helps. Bill > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Mark Johnson > Sent: Friday, July 29, 2005 4:33 PM > To: [email protected] > Subject: Re: [U2] Text extraction. > > I guess I was more focused on the REMOVE statement and let my > fingers do the other typing. I'm not a LOOP REPEAT guy but > rather a FOR NEXT guy, especially when knowing the boundary > values. Not knowing the ending value of D caused me to use > LOOP REPEAT which, given the wide variety of placements for > the WHILE and UNTIL clauses, used the wrong one first. > > Since REMOVE (sans DCOUNT) doesn't know the end value, > putting it in a FOR NEXT loop may require FOR I=1 TO I+1. I > don't like using FOR I=1 TO I+1 as it mentally doesn't have a > real ending. I'd rather DCOUNT a known ending, use LOOP UNTIL > "", REMOVE (with some more good experiences behind me) or use > the EXIT clause. In my travels, the FOR I=1 TO I+1 usually > has a test and a branch out of the loop which brings in > single purpose statement labels which this forum frowns upon. > > BTW, i just tested REMOVE on D3 sans the AT clause and it > didn't compile. > That doesn't mean that it won't if another $OPTIONS clause is > brought into the fray. > > Being an old-school guy, I got a little gun shy with all of > the $OPTIONS and UDT.OPTIONS in my travels. Being a > consultant and not a full time programmer or admin at my > client's locations, I dare not fiddle with these settings. > Every one of my clients has had their systems established by > a VAR or someone else before me. I'm usually the current cook > in the application kitchen. I don't need a phone call on > Tuesday for some OPTION that I mis-set on Monday. > > Thanks > Mark Johnson > ----- Original Message ----- > From: "Ken Wallis" <[EMAIL PROTECTED]> > To: <[email protected]> > Sent: Thursday, July 28, 2005 8:41 PM > Subject: RE: [U2] Text extraction. > > > > > Does this behave (misbehave) on u2 systems, ie be careful of the > > > location of the UNTIL statement? > > > > Mark, that is the documented behaviour, it certainly isn't > misbehaving. > > > > Yes, you have to be precise about when you terminate the loop, but > > surely > a > > guy with your experience would always be precise about such things? > > > > BTW, is the AT clause something that D3 requires? UniData, > UniVerse > > and jBASE certainly don't. > > > > Cheers, > > > > Ken > > ------- > > 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/ ------- u2-users mailing list [email protected] To unsubscribe please visit http://listserver.u2ug.org/
