Difference between revisions of "Conformance Clause"
Jump to navigation
Jump to search
(Add indirection section) |
(Enhance Indirection section) |
||
| Line 9: | Line 9: | ||
== Indirection == | == Indirection == | ||
| − | + | FreeM supports several forms of indirection that are nonstandard, as well as allowing indirection in several constructs where the standard prohibits it. Below is a list of some known instances of idiosyncratic indirection; please note that this list is by no means comprehensive: | |
| + | |||
| + | * <code>FOR</code> loops in FreeM support argument indirection | ||
| + | * FreeM supports list indirection, such as <code>S X="1,2,3",ARGS="X,"","",2" W $P(@ARGS)</code>, which will output <code>2</code> | ||
== MERGE == | == MERGE == | ||
Revision as of 07:45, 18 September 2023
Contents
Conformance Policy
FreeM attempts to comply with ANSI X11.1-1995 and the unpublished Millennium Draft Standard (MDS) from the MUMPS Development Committee, in routine buffers where the dialect setting is set to a particular version of the standard.
Routine buffers in FREEM dialect enable all nonstandard extensions.
This article attempts to track missing and/or nonstandard features in the current main branch of FreeM. It is a work-in-progress.
Indirection
FreeM supports several forms of indirection that are nonstandard, as well as allowing indirection in several constructs where the standard prohibits it. Below is a list of some known instances of idiosyncratic indirection; please note that this list is by no means comprehensive:
FORloops in FreeM support argument indirection- FreeM supports list indirection, such as
S X="1,2,3",ARGS="X,"","",2" W $P(@ARGS), which will output2
MERGE
MERGEshould be implemented asM[ERGE] postcond SP L mergeargument, but is currently implemented asM[ERGE] postcond SP mergeargument
KVALUE/KSUBSCRIPTS
- Only the inclusive forms of these commands are currently implemented
Transaction Processing
- Restartable transactions are not complete
Event Processing
ETRIGGERis not yet implemented- Of the event classes defined in the MDS, only the
INTERRUPTevclass is implemented - The
TRIGGER'evclass' is nonstandard - The
^$EVENTSSVN is incomplete - Environment-wide events defined in
^$SYSTEMare nonstandard
Globals
Routines
- Dotted routine names are nonstandard
Miscellaneous Language Features
ASSERTis nonstandardWITHandUSINGare nonstandardCONSTis nonstandardMAPis nonstandardWATCHis nonstandardTHROWis nonstandard$DIALECTis nonstandard