SCAN DO CASE CASE MOD(RECNO("SeeksList"), 4) = 0 && divisible by 4? =SEEK(SeeksList.StartLow, "Frag01", "StartLow") =SEEK(SeeksList.StartLow, "Frag02", "StartLow") =SEEK(SeeksList.StartLow, "Frag03", "StartLow") CASE MOD(RECNO("SeeksList"), 3) = 0 && divisible by 3? =SEEK(SeeksList.StartHigh, "Frag01", "StartHigh") =SEEK(SeeksList.StartHigh, "Frag02", "StartHigh") =SEEK(SeeksList.StartHigh, "Frag03", "StartHigh") CASE MOD(RECNO("SeeksList"), 2) = 0 && divisible by 2? =SEEK(SeeksList.LongChar, "Frag01", "LongChar") =SEEK(SeeksList.LongChar, "Frag02", "LongChar") =SEEK(SeeksList.LongChar, "Frag03", "LongChar") OTHERWISE && none of above =SEEK(SeeksList.ShortChar, "Frag01", "ShortChar") =SEEK(SeeksList.ShortChar, "Frag02", "ShortChar") =SEEK(SeeksList.ShortChar, "Frag03", "ShortChar") ENDCASE ENDSCANThe SCAN is on a 5,000 record table where the keys for every 100th record of the tables were extracted (all tables have same keys, generated at same time).
SELECT Frag01.StartHigh, Frag01.Memo1a ; FROM C:\VFPmisc\Frag01, C:\VFPmisc\SeeksList ; WHERE Frag01.StartLow = SeeksList.StartLow ; AND Frag01.ShortChar = SeeksList.ShortChar ; INTO CURSOR FromFrag01 SELECT Frag02.StartLow, Frag02.Filler1 ; FROM C:\VFPmisc\Frag02, C:\VFPmisc\SeeksList ; WHERE Frag02.StartHigh = SeeksList.StartHigh ; AND Frag02.LongChar = SeeksList.LongChar ; INTO CURSOR FromFrag02 SELECT Frag03.ShortChar, Frag03.Memo1c, Frag03.Memo2c ; FROM C:\VFPmisc\Frag03, C:\VFPmisc\SeeksList ; WHERE Frag03.StartHigh = SeeksList.StartHigh ; AND Frag03.ShortChar = SeeksList.ShortChar ; INTO CURSOR FromFrag03 * * Above 3 in single prg, below alone in prg * SELECT Frag01.StartHigh, Frag01.Memo1a, ; Frag02.StartLow, Frag02.Filler1, ; Frag03.ShortChar, Frag03.Memo1c, Frag03.Memo2c ; FROM C:\VFPmisc\Frag01, ; C:\VFPmisc\Frag02, ; C:\VFPmisc\Frag03, C:\VFPmisc\SeeksList ; WHERE Frag01.StartLow = SeeksList.StartLow ; AND Frag01.ShortChar = SeeksList.ShortChar ; AND Frag02.StartHigh = SeeksList.StartHigh ; AND Frag02.LongChar = SeeksList.LongChar ; AND Frag03.StartHigh = SeeksList.StartHigh ; AND Frag03.ShortChar = SeeksList.ShortChar ; INTO CURSOR FromAllFragsI think they are pretty straight-forward, but I must mention that a CLOSE TABLES ALL and a SYS(1104) was issued between each SELECT.