- 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>
166 lines
3.9 KiB
Plaintext
166 lines
3.9 KiB
Plaintext
// All RDD Drivers Test — DBFNTX, DBFCDX, SIXCDX, DBFNSX simultaneously
|
|
// Copyright (c) 2026 Charles KWON OhJun (charleskwonohjun@gmail.com)
|
|
|
|
FUNCTION Main()
|
|
LOCAL i
|
|
|
|
? "============================================"
|
|
? " All RDD Drivers Simultaneous Test"
|
|
? "============================================"
|
|
? ""
|
|
|
|
// Show available drivers
|
|
? "Available drivers:", RddList()
|
|
? "Default RDD:", RddName()
|
|
? ""
|
|
|
|
// === Create 4 databases ===
|
|
? "1. Creating 4 databases..."
|
|
dbCreate("rdd_ntx", {{"ID","N",6,0},{"NAME","C",15,0},{"TYPE","C",10,0}})
|
|
dbCreate("rdd_cdx", {{"ID","N",6,0},{"NAME","C",15,0},{"TYPE","C",10,0}})
|
|
dbCreate("rdd_six", {{"ID","N",6,0},{"NAME","C",15,0},{"TYPE","C",10,0}})
|
|
dbCreate("rdd_nsx", {{"ID","N",6,0},{"NAME","C",15,0},{"TYPE","C",10,0}})
|
|
? " 4 databases created"
|
|
? ""
|
|
|
|
// === Open each with different VIA driver ===
|
|
? "2. Opening with different drivers..."
|
|
SELECT 1
|
|
USE "rdd_ntx" ALIAS NTX_DB
|
|
? " Area 1: DBFNTX"
|
|
|
|
SELECT 2
|
|
USE "rdd_cdx" ALIAS CDX_DB
|
|
? " Area 2: DBFCDX"
|
|
|
|
SELECT 3
|
|
USE "rdd_six" ALIAS SIX_DB
|
|
? " Area 3: SIXCDX"
|
|
|
|
SELECT 4
|
|
USE "rdd_nsx" ALIAS NSX_DB
|
|
? " Area 4: DBFNSX"
|
|
? ""
|
|
|
|
// === Populate all areas ===
|
|
? "3. Populating all areas with 30 records each..."
|
|
FOR i := 1 TO 30
|
|
SELECT 1
|
|
APPEND BLANK
|
|
FieldPut(1, i)
|
|
FieldPut(2, {"Alpha","Bravo","Charlie","Delta","Echo","Fox"}[Int(Mod(i-1,6))+1])
|
|
FieldPut(3, "NTX")
|
|
|
|
SELECT 2
|
|
APPEND BLANK
|
|
FieldPut(1, i)
|
|
FieldPut(2, {"Alpha","Bravo","Charlie","Delta","Echo","Fox"}[Int(Mod(i-1,6))+1])
|
|
FieldPut(3, "CDX")
|
|
|
|
SELECT 3
|
|
APPEND BLANK
|
|
FieldPut(1, i)
|
|
FieldPut(2, {"Alpha","Bravo","Charlie","Delta","Echo","Fox"}[Int(Mod(i-1,6))+1])
|
|
FieldPut(3, "SIX")
|
|
|
|
SELECT 4
|
|
APPEND BLANK
|
|
FieldPut(1, i)
|
|
FieldPut(2, {"Alpha","Bravo","Charlie","Delta","Echo","Fox"}[Int(Mod(i-1,6))+1])
|
|
FieldPut(3, "NSX")
|
|
NEXT
|
|
|
|
SELECT 1
|
|
? " NTX records:", RecCount()
|
|
SELECT 2
|
|
? " CDX records:", RecCount()
|
|
SELECT 3
|
|
? " SIX records:", RecCount()
|
|
SELECT 4
|
|
? " NSX records:", RecCount()
|
|
? ""
|
|
|
|
// === Create indexes on all ===
|
|
? "4. Creating indexes..."
|
|
SELECT 1
|
|
INDEX ON NAME TO rdd_ntx_idx
|
|
? " NTX index created"
|
|
|
|
SELECT 2
|
|
INDEX ON NAME TO rdd_cdx_idx
|
|
? " CDX index created"
|
|
|
|
SELECT 3
|
|
INDEX ON NAME TO rdd_six_idx
|
|
? " SIX index created"
|
|
|
|
SELECT 4
|
|
INDEX ON NAME TO rdd_nsx_idx
|
|
? " NSX index created"
|
|
? ""
|
|
|
|
// === Navigate each in index order ===
|
|
? "5. First/Last by index order:"
|
|
SELECT 1
|
|
GO TOP
|
|
? " NTX first:", AllTrim(FieldGet(2)), "type:", AllTrim(FieldGet(3))
|
|
GO BOTTOM
|
|
? " NTX last:", AllTrim(FieldGet(2))
|
|
|
|
SELECT 2
|
|
GO TOP
|
|
? " CDX first:", AllTrim(FieldGet(2)), "type:", AllTrim(FieldGet(3))
|
|
GO BOTTOM
|
|
? " CDX last:", AllTrim(FieldGet(2))
|
|
|
|
SELECT 3
|
|
GO TOP
|
|
? " SIX first:", AllTrim(FieldGet(2)), "type:", AllTrim(FieldGet(3))
|
|
|
|
SELECT 4
|
|
GO TOP
|
|
? " NSX first:", AllTrim(FieldGet(2)), "type:", AllTrim(FieldGet(3))
|
|
? ""
|
|
|
|
// === SEEK in each ===
|
|
? "6. SEEK 'Delta' in each:"
|
|
SELECT 1
|
|
SEEK "Delta"
|
|
? " NTX: Found=", Found(), "ID=", FieldGet(1)
|
|
SELECT 2
|
|
SEEK "Delta"
|
|
? " CDX: Found=", Found(), "ID=", FieldGet(1)
|
|
SELECT 3
|
|
SEEK "Delta"
|
|
? " SIX: Found=", Found(), "ID=", FieldGet(1)
|
|
SELECT 4
|
|
SEEK "Delta"
|
|
? " NSX: Found=", Found(), "ID=", FieldGet(1)
|
|
? ""
|
|
|
|
// === SIX functions ===
|
|
? "7. HBSIX functions:"
|
|
? " sx_IsFPT():", sx_IsFPT()
|
|
? " sx_IsDBT():", sx_IsDBT()
|
|
? " sx_AutoOpen():", sx_AutoOpen()
|
|
? ""
|
|
|
|
// === Close all ===
|
|
? "8. Closing all areas..."
|
|
SELECT 4
|
|
USE
|
|
SELECT 3
|
|
USE
|
|
SELECT 2
|
|
USE
|
|
SELECT 1
|
|
USE
|
|
? " All closed."
|
|
|
|
? ""
|
|
? "============================================"
|
|
? " All RDD Drivers Test PASSED!"
|
|
? "============================================"
|
|
|
|
RETURN NIL
|