>select xyz && current >replace xyz1.f1 with xyz2.f2 in xyz1 >* or >replace f1 with xyz2.f2 in xyz1 >>but "in xyz1" was required in both cases to make it happen in xyz1.
>replace xyz1.f1 with xyz2.f2 && implicit in xyz1 >>does work. If I am not mistaken in thinking that "in non_current_alias" was required long time ago, just wondering, when did this change happen ?
SET TALK OFF CLEAR CREATE CURSOR Cursor1 ; ( Col C( 1 ) ) INSERT INTO Cursor1 ; ( Col ) ; VALUES ; ( "1" ) SELECT ; * ; FROM Cursor1 ; INTO CURSOR Cursor2 ; NOFILTER READWRITE SELECT ; * ; FROM Cursor1 ; INTO CURSOR Cursor3 ; NOFILTER READWRITE REPLACE Cursor2.Col WITH "2" IN Cursor2 REPLACE Cursor3.Col WITH "3" IN Cursor3 * At this point none of the cursors are at EOF( ) SELECT Cursor1 REPLACE Cursor2.Col WITH Cursor3.Col ? "Cursor2.Col: " + Cursor2.Col && "3" * Set it back: REPLACE Cursor2.Col WITH "2" IN Cursor2 * Go to EOF( ) in Cursor1: SKIP 1 IN Cursor1 REPLACE Cursor2.Col WITH Cursor3.Col ? "Cursor2.Col: " + Cursor2.Col && "2" * Above REPLACE did nothing because currently selected work area is at EOF( ) and IN clause not specified REPLACE Cursor2.Col WITH Cursor3.Col IN Cursor2 ? "Cursor2.Col: " + Cursor2.Col && "3", as "expected" * Set it back: REPLACE Cursor2.Col WITH "2" IN Cursor2 * Now select an empty work area: SELECT 0 REPLACE Cursor2.Col WITH Cursor3.Col && fails, generates Error 52 REPLACE Cursor2.Col WITH Cursor3.Col IN Cursor2 ? "Cursor2.Col: " + Cursor2.Col && "3", as "expected" USE IN Cursor3 USE IN Cursor2 USE IN Cursor1The EOF( ) "feature" was present in dBASE III/III+ if not earlier. Legend has it that Fox Software, when creating FoxBASE+ thought about fixing it, but they made a conscious decision to retain it because the overriding product requirement was 100% ironclad compatibility with dBASE III+. So, it has persisted in xBASE to this day.