- 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>
70 lines
1.7 KiB
Plaintext
70 lines
1.7 KiB
Plaintext
// dbEdit using compiled TBrowse — no ? output before browse
|
|
|
|
FUNCTION Main()
|
|
LOCAL oBrowse, oCol, nKey
|
|
|
|
USE "dbf/customer"
|
|
|
|
oBrowse := TBrowseDB(1, 0, 22, 79)
|
|
|
|
oCol := TBColumnNew("ID", {|| FieldGet(1)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("FIRST", {|| FieldGet(2)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("LAST", {|| FieldGet(3)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("STREET", {|| FieldGet(4)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("CITY", {|| FieldGet(5)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("STATE", {|| FieldGet(6)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("ZIP", {|| FieldGet(7)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("HIREDATE", {|| FieldGet(8)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("MARRIED", {|| FieldGet(9)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("AGE", {|| FieldGet(10)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("SALARY", {|| FieldGet(11)})
|
|
oBrowse:addColumn(oCol)
|
|
oCol := TBColumnNew("NOTES", {|| FieldGet(12)})
|
|
oBrowse:addColumn(oCol)
|
|
|
|
CLS
|
|
SetCursor(0)
|
|
SetPos(0, 0)
|
|
DevOut("customer.dbf - 500 records - ESC to quit")
|
|
|
|
DO WHILE .T.
|
|
oBrowse:forceStable()
|
|
nKey := Inkey(0)
|
|
|
|
DO CASE
|
|
CASE nKey = 5
|
|
oBrowse:up()
|
|
CASE nKey = 24
|
|
oBrowse:down()
|
|
CASE nKey = 19
|
|
oBrowse:left()
|
|
CASE nKey = 4
|
|
oBrowse:right()
|
|
CASE nKey = 18
|
|
oBrowse:pageUp()
|
|
CASE nKey = 3
|
|
oBrowse:pageDown()
|
|
CASE nKey = 1
|
|
oBrowse:goTop()
|
|
CASE nKey = 6
|
|
oBrowse:goBottom()
|
|
CASE nKey = 27
|
|
EXIT
|
|
ENDCASE
|
|
ENDDO
|
|
|
|
CLS
|
|
SetCursor(1)
|
|
USE
|
|
RETURN NIL
|