// Multi-RDD Test — DBFNTX and DBFCDX work areas simultaneously // Tests: multiple USE VIA, SELECT, alias access, cross-area operations // Copyright (c) 2026 Charles KWON OhJun (charleskwonohjun@gmail.com) FUNCTION Main() LOCAL i ? "================================================" ? " Multi-RDD Test (NTX + CDX simultaneous)" ? "================================================" ? "" // === Create two databases === ? "1. Creating databases..." dbCreate("customers", {{"ID","N",6,0},{"NAME","C",20,0},{"CITY","C",15,0}}) dbCreate("orders", {{"ORDID","N",6,0},{"CUSTID","N",6,0},{"AMOUNT","N",10,2},{"PRODUCT","C",20,0}}) ? " customers.dbf created" ? " orders.dbf created" ? "" // === Open both with different drivers === ? "2. Opening with different RDD drivers..." SELECT 1 USE "customers" ALIAS CUST ? " Area 1: customers (CUST)" SELECT 2 USE "orders" ALIAS ORD ? " Area 2: orders (ORD)" ? "" // === Populate customers === ? "3. Populating customers..." SELECT 1 FOR i := 1 TO 20 APPEND BLANK FieldPut(1, i) FieldPut(2, {"Kim","Lee","Park","Choi","Jung","Kang","Cho","Yoon","Jang","Lim"}[Int(Mod(i-1,10))+1]) FieldPut(3, {"Seoul","Tokyo","NYC","London","Paris"}[Int(Mod(i-1,5))+1]) NEXT ? " Customers:", RecCount() // === Populate orders === ? "4. Populating orders..." SELECT 2 FOR i := 1 TO 50 APPEND BLANK FieldPut(1, i) FieldPut(2, Int(Mod(i-1, 20)) + 1) FieldPut(3, 100 + i * 10) FieldPut(4, {"Laptop","Phone","Tablet","Monitor","Mouse"}[Int(Mod(i-1,5))+1]) NEXT ? " Orders:", RecCount() ? "" // === Create indexes === ? "5. Creating indexes..." SELECT 1 INDEX ON NAME TO cust_name ? " customers INDEX ON NAME created" SELECT 2 INDEX ON CUSTID TO ord_cust ? " orders INDEX ON CUSTID created" ? "" // === Switch between areas === ? "6. Cross-area navigation..." SELECT 1 GO TOP ? " CUST first (by name):", AllTrim(FieldGet(2)), "City:", AllTrim(FieldGet(3)) SELECT 2 GO TOP ? " ORD first (by custid):", FieldGet(1), "CustID:", FieldGet(2), "Product:", AllTrim(FieldGet(4)) ? "" // === SEEK in each area === ? "7. SEEK tests..." SELECT 1 SEEK "Park" ? " CUST SEEK Park: Found=", Found(), "ID=", FieldGet(1), "Name=", AllTrim(FieldGet(2)) SELECT 2 SEEK 5 ? " ORD SEEK CustID=5: Found=", Found(), "OrdID=", FieldGet(1), "Amount=", FieldGet(3) ? "" // === Navigate with index in area 1, natural in area 2 === ? "8. Simultaneous navigation..." SELECT 1 GO TOP ? " CUST Top 5 by name:" FOR i := 1 TO 5 IF !Eof() ? " ", FieldGet(1), AllTrim(FieldGet(2)), AllTrim(FieldGet(3)) SKIP ENDIF NEXT SELECT 2 GO TOP ? " ORD first 5 by custid:" FOR i := 1 TO 5 IF !Eof() ? " ", FieldGet(1), FieldGet(2), FieldGet(3), AllTrim(FieldGet(4)) SKIP ENDIF NEXT ? "" // === Close both === ? "9. Closing..." SELECT 1 USE SELECT 2 USE ? " All closed." ? "" ? "================================================" ? " Multi-RDD Test PASSED!" ? "================================================" RETURN NIL