- Compiler: PP → Lexer → Parser → Analyzer → Gengo pipeline - Parser: 232/236 (98%) Harbour compatibility, registry-based dispatch - RTL: 351 Harbour-compatible functions - RDD: DBF/NTX/CDX engines with Rushmore bitmap optimization - Go Interop: IMPORT + pkg.Func() + obj:Method() with FastPath (15M calls/sec) - HB_FUNC API: Full Harbour C API compatible Go bridge - Concurrency: SPAWN/LAUNCH/GOROUTINE, <-, WATCH, PARALLEL FOR, ASYNC/AWAIT - Extensions: Multi-return, DEFER, Slice, f-string, Nil-safe ?:, CONST - Macro Compiler: Runtime AST parsing and evaluation - Debugger: TUI debugger with source display, breakpoints, stepping - FRB: Native + Pcode dual mode runtime binary - Tests: 13 packages ALL PASS Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
131 lines
3.2 KiB
Plaintext
131 lines
3.2 KiB
Plaintext
// 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
|