Sort of like deleting MV's backwards in an attribute to not miss any. Been there as well.
----- Original Message ----- From: "Dean Fox" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, December 13, 2004 2:04 PM Subject: RE: [U2] LOOP or GOTO on READNEXT > Your understanding of the BASIC select is correct. It starts in group one > and works it's way down. In my early years of PICK programming I learned > this the hard way. As this user hasn't yet seen adverse effects is luck vs. > design. > > Probably because of the a change to the least significant portion of the ID > (hash wise) and the number of groups vs. items, they're all hashing to the > same group after the ID change. > > In a similar test where the new ID would hash to a forward group, in the > code provided, it would be deleted. Been there, done that and now know > better. > > -[d]- > > -----Original Message----- > From: Derek Falkner [mailto:[EMAIL PROTECTED] > Sent: Monday, December 13, 2004 11:16 AM > To: [EMAIL PROTECTED] > Subject: RE: [U2] LOOP or GOTO on READNEXT > > > Karl, > > I cannot speak to the issue of speed but I am concerned about the safety of > either process; I believe you may end up with missing employees! > > I believe the BASIC SELECT sets a pointer at the start of group 1 and steps > it through each item in that group before moving on to group 2. What could > happen is that the record with the new 6 digit key is written to a later > group and the item with the old key is deleted. Later, the SELECT would pick > up the new employee and, even though it already has a 6-digit key, would > write it back to the file and then immediately delete it! > > I would prefer to see a TCL-style SELECT be performed instead of the BASIC > SELECT, e.g. PERFORM "SELECT CUSTEMP" instead of SELECT CF. This will > definitely not select any of the newly-created items, though it would also > fail if any employees on file already had 6-digit keys. > > Alternatively, you could check the new item key differs from the original > item key before deleting an item. > E.g. write REC on CF,NK > if K # NK then > delete CF,K > end > > If my understanding of the BASIC SELECT is wrong I would be happy if someone > on this list could enlighten me. > > Oh, and I must add that I much prefer the LOOP ... REPEAT syntax too! I > wouldn't imagine there would be much difference in speed and I find it > easier to write/debug. > > Thanks for the interesting question! > > Derek Falkner > Kingston, Ontario, Canada > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > [EMAIL PROTECTED] > Sent: Monday, December 13, 2004 10:33 AM > To: [EMAIL PROTECTED] > Subject: [U2] LOOP or GOTO on READNEXT > > > I've seen 2 ways to read a client key, change the length to 6 digits, then > write it back out, delete the old one and move on: > > EXAMPLE 1 of 2: > !(FIXEMPNO) - Fix the employee number length > open '','CUSTEMP' to CF else stopm 'Not' > select CF > 10: readnext K else stop > read REC from CF,K then > NK = fmt(K,"R%6") > write REC on CF,NK > delete CF,K > end > go 10 > end > > EXAMPLE 2 of 2: > !(FIXEMPNO) - Fix the employee number length > DONE = 0 > open '','CUSTEMP' to CF else stopm 'Not' > select CF > loop > readnext K else DONE = 1 > read REC from CF,K then > NK = fmt(K,"R%6") > write REC on CF,NK > delete CF,K > end > repeat > end > > My intent is not to start a religious discussion about GO or GOTOs because I > see that method all over the place and regardless of why, who or whatever, > my question is, which is faster. (I prefer using loop..repeat syntax, FWIW). > > -- > Karl L. Pearson > Director of IT, > ATS Industrial Supply > Direct: 801-978-4429 > Toll-free: 800-789-9300 1,29 > Fax: 801-972-3888 > http://www.atsindustrial.com > [EMAIL PROTECTED] > ------- > 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/ ------- u2-users mailing list [EMAIL PROTECTED] To unsubscribe please visit http://listserver.u2ug.org/