The SET family is documented as an engine feature, not just a collection of shell conveniences. src/cli/cmd_set.cpp is the general dispatcher, and specialized cmd_set*.cpp handlers own path, index/order, filter, relation, locale, and unique-state behavior.
Dispatcher boundary
SET with no arguments reports usage. SET USAGE is read-only. Mutating forms change session/runtime state but should not directly rewrite table records unless the delegated command explicitly performs data work.
Important delegated forms include:
SET INDEX ...
SET ORDER ...
SET FILTER ...
SET RELATION ...
SET PATH ...
SET CNX ...
SET CDX ...
SET LMDB ...
SET UNIQUE ...
Output and session presentation
The dispatcher covers command-output behavior:
SET CONSOLE ON|OFF
SET PRINT ON|OFF
SET PRINT TO <file>
SET DEVICE TO SCREEN|FILE <path>|PRINTER|NULL
SET ALTERNATE ON|OFF
SET ALTERNATE TO <file>
SET TALK ON|OFF
SET ECHO ON|OFF
SET PAGING ON|OFF
SET WRAP ON|OFF
The dispatcher also carries SET STATUS and SET TIMER.
Data and editing behavior
Current documented surfaces include:
SET TABLE BUFFER ON|OFF|ON ALL|OFF ALL
SET DELETED ON|OFF
SET CASE ON|OFF
SET NEAR ON|OFF
Until 2026-09-03 this block also listed SET SAFETY, SET EXACT, SET ESCAPE,
SET CARRY, SET CONFIRM, SET EXCLUSIVE and SET MULTILOCKS, and the
sentence above it listed SET TIME, SET CLOCK, SET BELL, SET TYPEAHEAD
and SET REPROCESS. None of those twelve is in the dispatcher. They are
removed rather than relabelled, because a familiar xBase name in a list of
current surfaces is an invitation to type it.
SET TABLE BUFFER toggles buffering for the current area or all open areas. COMMIT and ROLLBACK remain the commands that finish or discard buffered edits.
Paths
SET PATH and SETPATH route named filesystem slots:
DATA
DBF
XDBF
INDEXES
LMDB
WORKSPACES
SCHEMAS
PROJECTS
SCRIPTS
TESTS
HELP
LOGS
TMP
SETPATH RESET returns slots to defaults. Path validation warns when needed, but assignment is still explicit state.
Index and order
The index-related SET family is flavor-aware:
| Area flavor | Default order container | Accepted SET INDEX containers |
|---|---|---|
| V32 classic/MS-DOS/FoxPro-like | .cnx | .inx, .cnx |
| V64 VFP/x64 | .cdx | .cdx, .cnx (an explicit .cnx attaches with an advisory; owner ruling 2026-08-09) |
SET ORDER 0, SET ORDER PHYSICAL, SET ORDER NATURAL, and SET ORDER PHYS clear the active order. SET ORDER TAG <tag> activates a tag in the flavor-appropriate container. INX remains a single-order SET INDEX attachment path.
Filters and relations
Control and diagnostic settings
These dispatch and were undocumented here until 2026-09-03:
SET ERRORSTOP ... an errored line bails out of the running construct
SET RECURSION ON|OFF whether WORKSPACE CLOSE descends into nested workspaces
SET INDEXTXN ... transactional in-COMMIT index maintenance
SET CATALOG ... catalog slot selection
SET VALIDATE ... validation behaviour
SET MESSAGE ... message-catalog surface
SET POLLING ... poll hooks
SET PROOF ... proof capture
SET EXPORT ... export behaviour
Filters and relations
SET FILTER installs the current expression filter used by navigation and list-style commands.
SET RELATION manages parent-to-child relation state:
SET RELATION TO <expr> INTO <child>
SET RELATION TO <expr> INTO <child> ADDITIVE
SET RELATION OFF ALL
SET RELATION OFF INTO <child>
Relation state belongs with areas and workspaces, so documentation should describe it as part of the object-oriented runtime state.
Locale and formatting
The SET family also carries presentation and formatting settings:
SET LANGUAGE TO <locale|DEFAULT>
SET LOCALE TO <locale|DEFAULT>
SET LANGUAGE CHECK
SET LANGUAGE REPORT
SET LOCALE CHECK
SET LOCALE REPORT
SET CENTURY ON|OFF
SET DATE TO <format>
SET DECIMALS TO <n>
SET FIXED ON|OFF
SET MEMOWIDTH TO <n>
SET MEMOERROR ON|OFF
SET EDITOR TO <value>|DEFAULT|OFF
Locale currently has explicit command paths and message-manager integration work; public wording should stay proof-labeled by command.