/* COPY TO via PP rule. */ PROCEDURE Main() LOCAL aStruct, n FErase( "src.dbf" ) FErase( "dst1.dbf" ) FErase( "dst2.dbf" ) FErase( "dst3.dbf" ) aStruct := { ; { "ID", "N", 4, 0 }, ; { "NAME", "C", 20, 0 }, ; { "AGE", "N", 3, 0 } } dbCreate( "src.dbf", aStruct ) USE src.dbf NEW EXCLUSIVE ALIAS s dbAppend() ; FieldPut(1,1) ; FieldPut(2,"Alice") ; FieldPut(3,18) dbAppend() ; FieldPut(1,2) ; FieldPut(2,"Bob") ; FieldPut(3,25) dbAppend() ; FieldPut(1,3) ; FieldPut(2,"Carol") ; FieldPut(3,30) dbAppend() ; FieldPut(1,4) ; FieldPut(2,"Dan") ; FieldPut(3,45) dbAppend() ; FieldPut(1,5) ; FieldPut(2,"Eve") ; FieldPut(3,60) dbCommit() /* 1. plain COPY TO — all rows */ dbGoTop() COPY TO dst1.dbf dbCloseArea() USE dst1.dbf NEW EXCLUSIVE COUNT TO n ? "1. COPY TO dst1.dbf rows =", n, "(expect 5)" dbGoTop() ? " first row id/name/age =", FieldGet(1), AllTrim(FieldGet(2)), FieldGet(3) dbCloseArea() /* 2. COPY TO ... FOR */ USE src.dbf NEW EXCLUSIVE ALIAS s dbGoTop() COPY TO dst2.dbf FOR s->age >= 30 dbCloseArea() USE dst2.dbf NEW EXCLUSIVE COUNT TO n ? "2. COPY TO dst2.dbf FOR age>=30 rows =", n, "(expect 3)" dbCloseArea() /* 3. COPY TO ... FIELDS subset */ USE src.dbf NEW EXCLUSIVE ALIAS s dbGoTop() COPY TO dst3.dbf FIELDS id, name dbCloseArea() USE dst3.dbf NEW EXCLUSIVE COUNT TO n ? "3. COPY TO dst3.dbf FIELDS id,name rows =", n, "(expect 5)" ? " field count =", FCount(), "(expect 2)" dbGoTop() ? " row1 =", FieldGet(1), AllTrim(FieldGet(2)) dbCloseArea() FErase( "src.dbf" ) FErase( "dst1.dbf" ) FErase( "dst2.dbf" ) FErase( "dst3.dbf" ) ? "DONE" RETURN