This is probably a memory leak issue related to a while loop. Try changing your while loop into an IF statement and a GOTO.
Troy -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Michael Moser Sent: Monday, August 18, 2003 9:46 AM To: RBASE-L Mailing List Subject: [RBASE-L] - The impossible seems to happen Hi all, Here is a mystery that I have been beating my head against a wall with. This code processes about 8,000 records just fine then, with about 2,000 records to go, goes into a infinite loop where variables have to have the same value but do not. if I reverse the sort order, the problem happens after about 300 records. P800, 512MB Ram, Windows XP Pro, R:Base 6.5++ 1.864xRT03. Suddenly the second while loop starts evaluating as False, even though the values are being set immediately above it to insure a True evaluation. I have even inserted diagnostic code to check the length (SLEN) of the values which has shown that the variables do contain the same text information of the same length but they are being evaluated as different. In one variation of the diagnostics I checked all three values in an IF statement, if one was false I checked each one individually to determine which one. The check of the 3 indicated that 1 was false, the individual check found all to be True ... go figure. Any Ideas? Thanks, Michael Michael Moser EXAQ Micro Services Phone: 916-768-7656 Fax: 916-966-8313 (Note: the quotes change allows me to insert a text value for "Id" using the 'text' format.) SET QUOTES=" SET V WhereClause = + ("Where id IS NOT NULL and Qty < 0 and SvcCode <> 10") SET QUOTES=' DECLARE PTR1 CURSOR FOR SELECT + Id,tDate,SvcCode,SvcDesc,Qty,SvcPr,SvcTot,SCS,Paid,tDOE + FROM Transactions ORDER BY SCS=A, id, SvcCode &WhereClause OPEN PTR1 SET V LastId TEXT = 'NONE' FETCH PTR1 INTO + oscId X1, osctDate X1, oscSvcCode X1, oscSvcDesc X1, oscQty X1, + oscSvcPr X1, oscSvcTot X1, oscSCS X1, oscPaid X1, osctDOE X1 IF SQLCODE <> 100 THEN SET V LoopStatus = 'RUN' ELSE SET V LoopStatus = 'STOP' ENDIF WHILE LoopStatus <> 'STOP' THEN IF oscId = .LastId AND oscSCS = .LastSCS AND LoopStatus = 'RUN' THEN -- this should NEVER happen but it does. write 'error 1' ENDIF -- ... more code here SET V LastSCS TEXT = .oscSCS SET V LastId = .oscId WHILE oscId = .LastId AND oscSCS = .LastSCS AND LoopStatus = 'RUN' THEN -- ... more code here FETCH PTR1 INTO + oscId X1, osctDate X1, oscSvcCode X1, oscSvcDesc X1, oscQty X1, + oscSvcPr X1, oscSvcTot X1, oscSCS X1, oscPaid X1, osctDOE X1 IF SQLCODE <> 100 THEN SET V LoopStatus = 'RUN' ELSE SET V LoopStatus = 'STOP' ENDIF IF oscId <> .LastId OR oscSCS <> .LastSCS OR LoopStatus <> 'RUN' THEN write 'message 1, ok to exit exit loop' ENDIF ENDWHILE ENDWHILE DROP CURSOR PTR1 RETURN

