After you decrement LOP, you need to decrement MAX. Otherwise the loop will be unable to get beyond 4.
Think about it - as soon as you delete a null value, you are guaranteeing that "if null" will be true on your last pass, thereby decrementing LOP and requiring another pass, which will do the same, which will do the same ... That's why I ALWAYS do a "FOR I = MAX TO 1 STEP -1" style loop when coding this sort of stuff ... Bit slower, but far harder to mess up ... Cheers, Wol -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Olson Sent: 25 March 2004 12:41 To: 'U2 Users Discussion List' Subject: RE: Optimisation ? LOL... I can't get this to get out of the loop!!! the trim crt'ed pretty quick... neat! ----: L23 0001: PETE = 'THIS}IS }}}A TEST}}}' 0002: CRT TRIM( PETE , @VM ) 0003: REC = PETE 0004: MAX = DCOUNT( REC< 1 > , @VM ) 0005: FOR LOP=1 TO MAX 0006: IF REC<1,LOP> = '' THEN 0007: REC=DELETE(REC,1,LOP,0) 0008: IF LOP = MAX THEN GO 300 0009: LOP=LOP-1 0010: END 0011: NEXT LOP 0012: 300: 0013: CRT REC -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Jonathan Leckie Sent: Thursday, March 25, 2004 7:29 AM To: [EMAIL PROTECTED] Subject: Optimisation ? I have the following piece of code : IF REC<1> £ '' THEN MAX=DCOUNT(REC<1>,VM) FOR LOP=1 TO MAX IF REC<1,LOP> = '' THEN REC=DELETE(REC,1,LOP,0) IF LOP = MAX THEN GO 300 LOP=LOP-1 END NEXT LOP END I wonder could this simply be replaced with : IF REC<1> £ '' THEN REC<1>=TRIM(REC<1>,@VM) GO 300 END Can anyone see any problems with using TRIM to remove trailing, repeated and initial value markers and therefore achieving the same effect without looping through each multi-value? This is on Unidata 3.3.2 incidentally. -- ************************************************************************ * This message has been scanned for viruses and dangerous content by * Blairs of Scotland MailScanner, and is believed to be clean. * * This email and any files transmitted with it are confidential and * intended solely for the use of the individual or entity to which they * are addressed. * * If you have received this email in error please notify us at Blairs * of Scotland via email at [EMAIL PROTECTED] ************************************************************************ -- u2-users mailing list [EMAIL PROTECTED] http://www.oliver.com/mailman/listinfo/u2-users Notice of Confidentiality: The information included and/or attached in this electronic mail transmission may contain confidential or privileged information and is intended for the addressee. Any unauthorized disclosure, reproduction, distribution or the taking of action in reliance on the contents of the information is prohibited. If you believe that you have received the message in error, please notify the sender by reply transmission and delete the message without copying or disclosing it. -- u2-users mailing list [EMAIL PROTECTED] http://www.oliver.com/mailman/listinfo/u2-users *********************************************************************************** This transmission is intended for the named recipient only. It may contain private and confidential information. If this has come to you in error you must not act on anything disclosed in it, nor must you copy it, modify it, disseminate it in any way, or show it to anyone. Please e-mail the sender to inform us of the transmission error or telephone ECA International immediately and delete the e-mail from your information system. Telephone numbers for ECA International offices are: Sydney +61 (0)2 9911 7799, Hong Kong + 852 2121 2388, London +44 (0)20 7351 5000 and New York +1 212 582 2333. *********************************************************************************** -- u2-users mailing list [EMAIL PROTECTED] http://www.oliver.com/mailman/listinfo/u2-users