Difference between revisions of "Conformance Clause"

From FreeM Wiki
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.
+
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 08:45, 18 September 2023

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:

  • FOR loops in FreeM support argument indirection
  • FreeM supports list indirection, such as S X="1,2,3",ARGS="X,"","",2" W $P(@ARGS), which will output 2

MERGE

  • MERGE should be implemented as M[ERGE] postcond SP L mergeargument, but is currently implemented as M[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

  • ETRIGGER is not yet implemented
  • Of the event classes defined in the MDS, only the INTERRUPT evclass is implemented
  • The TRIGGER 'evclass' is nonstandard
  • The ^$EVENT SSVN is incomplete
  • Environment-wide events defined in ^$SYSTEM are nonstandard

Globals

Routines

  • Dotted routine names are nonstandard

Miscellaneous Language Features

  • ASSERT is nonstandard
  • WITH and USING are nonstandard
  • CONST is nonstandard
  • MAP is nonstandard
  • WATCH is nonstandard
  • THROW is nonstandard
  • $DIALECT is nonstandard