|
|
| version 1.40, 2025/05/03 04:05:23 | version 1.43, 2025/05/05 04:55:42 |
|---|---|
| Line 699 Please note that FreeM is not entirely s | Line 699 Please note that FreeM is not entirely s |
| * $SYSTEM:: MDC system ID of FreeM. | * $SYSTEM:: MDC system ID of FreeM. |
| * $TEST:: Truth value of last conditional expression or result of certain @code{LOCK} operations. | * $TEST:: Truth value of last conditional expression or result of certain @code{LOCK} operations. |
| * $TLEVEL:: Current level of transaction nesting. | * $TLEVEL:: Current level of transaction nesting. |
| * $WITH:: Current variable prefix set by @code{WITH} command. | * $WITH:: Current variable prefix set by @code{ZWITH} command. |
| * $X:: Current horizontal screen position. | * $X:: Current horizontal screen position. |
| * $Y:: Current vertical screen position. | * $Y:: Current vertical screen position. |
| * $ZA:: Current position of file on @code{$IO}. | * $ZA:: Current position of file on @code{$IO}. |
| Line 895 uncommitted transactions exist. | Line 895 uncommitted transactions exist. |
| @cindex $WITH | @cindex $WITH |
| @cindex intrinsic special variables, $WITH | @cindex intrinsic special variables, $WITH |
| Returns the variable prefix set by the @code{@ref{WITH}} command. | Returns the variable prefix set by the @code{@ref{ZWITH}} command. |
| @node $X | @node $X |
| @section $X | @section $X |
| Line 2018 Identical to @ref{$TRANSLATE()}, except | Line 2018 Identical to @ref{$TRANSLATE()}, except |
| * AUNBLOCK:: Decrement the block counter for one or more event classes. | * AUNBLOCK:: Decrement the block counter for one or more event classes. |
| * BREAK:: Interrupt a running routine to allow interactive debugging. | * BREAK:: Interrupt a running routine to allow interactive debugging. |
| * CLOSE:: Close an input/output device. | * CLOSE:: Close an input/output device. |
| * CONST:: Define a constant that cannot be altered after initial definition. | |
| * DO:: Transfer program control to one or more subroutines or introduces a new execution level. | * DO:: Transfer program control to one or more subroutines or introduces a new execution level. |
| * ELSE:: Execute the remainder of a line if @code{@ref{$TEST}} evaluates @emph{false}. | * ELSE:: Execute the remainder of a line if @code{@ref{$TEST}} evaluates @emph{false}. |
| * FOR:: Repeat execution of a line or block of code. | * FOR:: Repeat execution of a line or block of code. |
| Line 2031 Identical to @ref{$TRANSLATE()}, except | Line 2030 Identical to @ref{$TRANSLATE()}, except |
| * KSUBSCRIPTS:: Kill only the descendant subscripts of a local, global, global, or structured system variable. | * KSUBSCRIPTS:: Kill only the descendant subscripts of a local, global, global, or structured system variable. |
| * KVALUE:: Kill only the value of a local, global, or structured system variable. | * KVALUE:: Kill only the value of a local, global, or structured system variable. |
| * LOCK:: Control advisory locking for concurrency control. | * LOCK:: Control advisory locking for concurrency control. |
| * MAP:: Map a global name to a non-default namespace. | |
| * MERGE:: Merge contents of one local, global, or structured system variable into another. | * MERGE:: Merge contents of one local, global, or structured system variable into another. |
| * NEW:: Introduce a new scope for a specified local variable or intrinsic special variable or instantiate an object. | * NEW:: Introduce a new scope for a specified local variable or intrinsic special variable or instantiate an object. |
| * OPEN:: Open a sequential or socket input/output device. | * OPEN:: Open a sequential or socket input/output device. |
| Line 2040 Identical to @ref{$TRANSLATE()}, except | Line 2038 Identical to @ref{$TRANSLATE()}, except |
| * SET:: Set the value of a local variable, global, intrinsic special variable, or structured system variable. | * SET:: Set the value of a local variable, global, intrinsic special variable, or structured system variable. |
| * TCOMMIT:: Commit a transaction. | * TCOMMIT:: Commit a transaction. |
| * THEN:: Preserve @code{@ref{$TEST}} until the end of the current line. | * THEN:: Preserve @code{@ref{$TEST}} until the end of the current line. |
| * THROW:: Programmatically raise an error condition. | |
| * TROLLBACK:: Roll back all pending transactions. | * TROLLBACK:: Roll back all pending transactions. |
| * TSTART:: Introduce a new transaction processing level. | * TSTART:: Introduce a new transaction processing level. |
| * UNMAP:: Remove a mapping of a global to a non-default namespace. | |
| * USE:: Set the currently-active input/output device. | * USE:: Set the currently-active input/output device. |
| * VIEW:: Modify FreeM internal parameters. | * VIEW:: Modify FreeM internal parameters. |
| * WATCH:: Enable or disable watchpoints, or set or clear watchpoints on specified globals, locals, or structured system variables. | |
| * WITH:: Set prefix for future variable references. | |
| * WRITE:: Write output to current input/output device. | * WRITE:: Write output to current input/output device. |
| * XECUTE:: Interpret string as M code. | * XECUTE:: Interpret string as M code. |
| * ZBREAK:: Unknown. | * ZBREAK:: Unknown. |
| * ZCONST:: Define a constant that cannot be altered after initial definition. | |
| * ZGO:: Unknown. | * ZGO:: Unknown. |
| * ZHALT:: Unknown. | * ZHALT:: Unknown. |
| * ZINSERT:: Insert code into routine buffer. | * ZINSERT:: Insert code into routine buffer. |
| * ZJOB:: Unknown. | * ZJOB:: Invokes a job, ignoring any timeouts. |
| * ZLOAD:: Load routine into routine buffer. | * ZLOAD:: Load routine into routine buffer. |
| * ZMAP:: Map a global name to a non-default namespace. | |
| * ZNEW:: Unknown. | * ZNEW:: Unknown. |
| * ZPRINT:: Print contents of routine buffer. | * ZPRINT:: Print contents of routine buffer. |
| * ZQUIT:: Unknown. | * ZQUIT:: Quits multiple stack levels at once. |
| * ZREMOVE:: Remove code from routine buffer. | * ZREMOVE:: Remove code from routine buffer. |
| * ZSAVE:: Save routine buffer to disk. | * ZSAVE:: Save routine buffer to disk. |
| * ZTHROW:: Programmatically raise an error condition. | |
| * ZTRAP:: Unknown. | * ZTRAP:: Unknown. |
| * ZUNMAP:: Remove a mapping of a global to a non-default namespace. | |
| * ZWATCH:: Enable or disable watchpoints, or set or clear watchpoints on specified globals, locals, or structured system variables. | |
| * ZWITH:: Set prefix for future variable references. | |
| * ZWRITE:: Write local variable, global, or structured system variable to @code{@ref{$IO}}. | * ZWRITE:: Write local variable, global, or structured system variable to @code{@ref{$IO}}. |
| @end menu | @end menu |
| Line 2359 In its argumentless form, @code{CLOSE} c | Line 2359 In its argumentless form, @code{CLOSE} c |
| In its single-argument form, @code{CLOSE} closes the I/O device associated with channel @emph{channel}, provided that @emph{channel} represents a currently-open device, and the optional @emph{postcondition} is @emph{true} or omitted. | In its single-argument form, @code{CLOSE} closes the I/O device associated with channel @emph{channel}, provided that @emph{channel} represents a currently-open device, and the optional @emph{postcondition} is @emph{true} or omitted. |
| @node CONST | |
| @section CONST | |
| @cindex CONST | |
| @cindex commands, CONST | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Defines a local @emph{constant}, or variable that cannot be altered after its initial definition, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| Constants must only be locals, and globals are not supported. | |
| @emph{Syntax} | |
| @example | |
| @code{CONST@emph{:postcondition} @emph{mref1}=@emph{initial-value1},...,@emph{mrefN}=@emph{initial-valueN}} | |
| @end example | |
| @node DO | @node DO |
| @section DO | @section DO |
| @cindex DO | @cindex DO |
| Line 2742 If @code{LOCK} succeeds within @emph{tim | Line 2725 If @code{LOCK} succeeds within @emph{tim |
| LOCK[@emph{:postcondition}] @emph{name}[:@emph{timeout}][,...@emph{name}[:@emph{timeout}]] | LOCK[@emph{:postcondition}] @emph{name}[:@emph{timeout}][,...@emph{name}[:@emph{timeout}]] |
| @end example | @end example |
| @node MAP | |
| @section MAP | |
| @cindex MAP | |
| @cindex commands, MAP | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| Maps global name @code{gvn} to be mapped to the non-default namespace @emph{expr V namespace}, provided the optional @emph{postcondition} evaluates to @emph{true} or is omitted. | |
| @emph{Syntax} | |
| @example | |
| MAP[@emph{:postcondition}] GLOBAL @emph{gvn}=@emph{expr V namespace} | |
| @end example | |
| @node MERGE | @node MERGE |
| @section MERGE | @section MERGE |
| @cindex MERGE | @cindex MERGE |
| Line 3006 Saves the value of @code{$TEST} until th | Line 2974 Saves the value of @code{$TEST} until th |
| IF 1 THEN WRITE "HELLO!",! | IF 1 THEN WRITE "HELLO!",! |
| @end example | @end example |
| @node THROW | |
| @section THROW | |
| @cindex THROW | |
| @cindex commands, THROW | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Raises an error condition as long as the optional @emph{postcondition} is @emph{true} or omitted. | |
| @emph{Syntax} | |
| @example | |
| @code{THROW@emph{:postcondition} @emph{expr V error-code}} | |
| @end example | |
| @emph{Example} | |
| @example | |
| @code{THROW "M102"} | |
| @end example | |
| @node TROLLBACK | @node TROLLBACK |
| @section TROLLBACK | @section TROLLBACK |
| @cindex TROLLBACK | @cindex TROLLBACK |
| Line 3091 If you are using more than one transacti | Line 3038 If you are using more than one transacti |
| TSTART (FOO,BAR):(SERIAL,TRANSACTIONID="FOO") | TSTART (FOO,BAR):(SERIAL,TRANSACTIONID="FOO") |
| @end example | @end example |
| @node UNMAP | |
| @section UNMAP | |
| @cindex UNMAP | |
| @cindex commands, UNMAP | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| Removes any mapping connecting @emph{gvn} to a non-default namespace, provided the optional @emph{postcondition} evaluates to @emph{true} or is omitted. | |
| @emph{Syntax} | |
| @example | |
| UNMAP GLOBAL @emph{gvn} | |
| @end example | |
| @node USE | @node USE |
| @section USE | @section USE |
| Line 3409 VIEW 133:@emph{tvexpr} | Line 3342 VIEW 133:@emph{tvexpr} |
| @end table | @end table |
| @node WATCH | |
| @section WATCH | |
| @cindex WATCH | |
| @cindex commands, WATCH | |
| @cindex commands, debugging | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Sets a watchpoint on a global, local, or SSVN node. | |
| @emph{Syntax} | |
| In its @emph{argumentless} form, @code{WATCH} toggles watchpoints on and off, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| @example | |
| WATCH[@emph{:postcondition}] | |
| @end example | |
| In its @emph{inclusive} form, @code{WATCH} adds, removes, or examines watchpoints, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| A @code{+} adds a new watchpoint to the following variable. | |
| A @code{-} removes an existing watchpoint for the following variable. | |
| A @code{?} examines the status of a watchpoint for the following variable. | |
| @example | |
| WATCH[@emph{:postcondition}] [+|-|?]@emph{var1}...,[+|-|?]@emph{varN} | |
| @end example | |
| The following example demonstrates turning watchpoint processing on and adding a watchpoint for global variable @code{^snw(1)}. It then changes the value of @code{^snw(1)}. | |
| @example | |
| DEFAULT.USER> WATCH | |
| Watchpoints enabled. | |
| DEFAULT.USER> WATCH +^SNW(1) | |
| Added '^SNW("1")' to the watchlist. | |
| DEFAULT.USER> SET ^SNW(1)="new value" | |
| >> WATCHPOINT: ^SNW("1") => 'new value' (changed 1 times) | |
| @end example | |
| The following example will remove that watchpoint: | |
| @example | |
| DEFAULT.USER> WATCH -^SNW(1) | |
| Removed '^SNW("1")' from the watchlist. | |
| DEFAULT.USER> WATCH ?^SNW(1) | |
| '^SNW("1")' is not being watched. | |
| @end example | |
| @node WITH | |
| @section WITH | |
| @cindex WITH | |
| @cindex commands, WITH | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| NOTE: This command may be deprecated and removed in future FreeM releases. | |
| Sets a prefix to be applied to all subsequent local variable or constant references. | |
| @emph{Syntax} | |
| @example | |
| @code{WITH@emph{:postcondition} @emph{var-prefix}} | |
| @end example | |
| In the above single-argument form, sets the @code{$WITH} prefix to @emph{var-prefix}, provided that the optional @emph{postcondition} is either @emph{true} or omitted. | |
| The @emph{var-prefix} argument may be a string literal or any valid FreeM expression. | |
| @example | |
| @code{WITH@emph{:postcondition}} | |
| @end example | |
| In the above argumentless form, clears the @code{$WITH} prefix, provided the optional @emph{postcondition} is either @emph{true} or omitted. Equivalent to @code{WITH ""}. | |
| @node WRITE | @node WRITE |
| Line 3518 In the above argumentless form, clears t | Line 3363 In the above argumentless form, clears t |
| @cindex commands, non-standard | @cindex commands, non-standard |
| @emph{FreeM Extension} | @emph{FreeM Extension} |
| @node ZCONST | |
| @section ZCONST | |
| @cindex ZCONST | |
| @cindex commands, ZCONST | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Defines a local @emph{constant}, or variable that cannot be altered after its initial definition, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| Constants must only be locals, and globals are not supported. | |
| @emph{Syntax} | |
| @example | |
| @code{ZCONST@emph{:postcondition} @emph{mref1}=@emph{initial-value1},...,@emph{mrefN}=@emph{initial-valueN}} | |
| @end example | |
| @node ZGO | @node ZGO |
| @section ZGO | @section ZGO |
| @cindex ZGO | @cindex ZGO |
| Line 3570 Loads routine @emph{<routine-name>} into | Line 3432 Loads routine @emph{<routine-name>} into |
| ZLOAD@emph{:postcondition} @emph{<routine-name>} | ZLOAD@emph{:postcondition} @emph{<routine-name>} |
| @end example | @end example |
| @node ZMAP | |
| @section ZMAP | |
| @cindex ZMAP | |
| @cindex commands, ZMAP | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| Maps global name @code{gvn} to be mapped to the non-default namespace @emph{expr V namespace}, provided the optional @emph{postcondition} evaluates to @emph{true} or is omitted. | |
| @emph{Syntax} | |
| @example | |
| ZMAP[@emph{:postcondition}] GLOBAL @emph{gvn}=@emph{expr V namespace} | |
| @end example | |
| @node ZNEW | @node ZNEW |
| @section ZNEW | @section ZNEW |
| @cindex ZNEW | @cindex ZNEW |
| Line 3628 In its argumentless form, quits from @co | Line 3506 In its argumentless form, quits from @co |
| @cindex commands, non-standard | @cindex commands, non-standard |
| @emph{FreeM Extension} | @emph{FreeM Extension} |
| @node ZTHROW | |
| @section ZTHROW | |
| @cindex ZTHROW | |
| @cindex commands, ZTHROW | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Raises an error condition as long as the optional @emph{postcondition} is @emph{true} or omitted. | |
| @emph{Syntax} | |
| @example | |
| @code{ZTHROW@emph{:postcondition} @emph{expr V error-code}} | |
| @end example | |
| @emph{Example} | |
| @example | |
| @code{ZTHROW "M102"} | |
| @end example | |
| @node ZTRAP | @node ZTRAP |
| @section ZTRAP | @section ZTRAP |
| @cindex ZTRAP | @cindex ZTRAP |
| Line 3637 In its argumentless form, quits from @co | Line 3537 In its argumentless form, quits from @co |
| @cindex commands, non-standard | @cindex commands, non-standard |
| @emph{FreeM Extension} | @emph{FreeM Extension} |
| @node ZUNMAP | |
| @section ZUNMAP | |
| @cindex ZUNMAP | |
| @cindex commands, ZUNMAP | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| Removes any mapping connecting @emph{gvn} to a non-default namespace, provided the optional @emph{postcondition} evaluates to @emph{true} or is omitted. | |
| @emph{Syntax} | |
| @example | |
| ZUNMAP GLOBAL @emph{gvn} | |
| @end example | |
| @node ZWATCH | |
| @section ZWATCH | |
| @cindex ZWATCH | |
| @cindex commands, ZWATCH | |
| @cindex commands, debugging | |
| @cindex commands, implementation-specific | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| Sets a watchpoint on a global, local, or SSVN node. | |
| @emph{Syntax} | |
| In its @emph{argumentless} form, @code{ZWATCH} toggles watchpoints on and off, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| @example | |
| ZWATCH[@emph{:postcondition}] | |
| @end example | |
| In its @emph{inclusive} form, @code{ZWATCH} adds, removes, or examines watchpoints, provided the optional @emph{postcondition} is @emph{true} or omitted. | |
| A @code{+} adds a new watchpoint to the following variable. | |
| A @code{-} removes an existing watchpoint for the following variable. | |
| A @code{?} examines the status of a watchpoint for the following variable. | |
| @example | |
| ZWATCH[@emph{:postcondition}] [+|-|?]@emph{var1}...,[+|-|?]@emph{varN} | |
| @end example | |
| The following example demonstrates turning watchpoint processing on and adding a watchpoint for global variable @code{^snw(1)}. It then changes the value of @code{^snw(1)}. | |
| @example | |
| DEFAULT.USER> ZWATCH | |
| Watchpoints enabled. | |
| DEFAULT.USER> ZWATCH +^SNW(1) | |
| Added '^SNW("1")' to the watchlist. | |
| DEFAULT.USER> SET ^SNW(1)="new value" | |
| >> WATCHPOINT: ^SNW("1") => 'new value' (changed 1 times) | |
| @end example | |
| The following example will remove that watchpoint: | |
| @example | |
| DEFAULT.USER> ZWATCH -^SNW(1) | |
| Removed '^SNW("1")' from the watchlist. | |
| DEFAULT.USER> ZWATCH ?^SNW(1) | |
| '^SNW("1")' is not being watched. | |
| @end example | |
| @node ZWITH | |
| @section ZWITH | |
| @cindex ZWITH | |
| @cindex commands, ZWITH | |
| @cindex commands, non-standard | |
| @emph{FreeM Extension} | |
| NOTE: This command may be deprecated and removed in future FreeM releases. | |
| Sets a prefix to be applied to all subsequent local variable or constant references. | |
| @emph{Syntax} | |
| @example | |
| @code{ZWITH@emph{:postcondition} @emph{var-prefix}} | |
| @end example | |
| In the above single-argument form, sets the @code{$WITH} prefix to @emph{var-prefix}, provided that the optional @emph{postcondition} is either @emph{true} or omitted. | |
| The @emph{var-prefix} argument may be a string literal or any valid FreeM expression. | |
| @example | |
| @code{ZWITH@emph{:postcondition}} | |
| @end example | |
| In the above argumentless form, clears the @code{$WITH} prefix, provided the optional @emph{postcondition} is either @emph{true} or omitted. Equivalent to @code{ZWITH ""}. | |
| @node ZWRITE | @node ZWRITE |
| @section ZWRITE | @section ZWRITE |
| @cindex ZWRITE | @cindex ZWRITE |
| Line 4780 The effect of this is that the operation | Line 4791 The effect of this is that the operation |
| @cindex variables, local | @cindex variables, local |
| @cindex local variables | @cindex local variables |
| @menu | |
| * Local Variables Overview:: The basics of locals. | |
| * Creating Local Variables:: Creating locals with SET. | |
| * Removing Local Variables:: Removing locals with KILL. | |
| @end menu | |
| @node Local Variables Overview | |
| @section Local Variables Overview | @section Local Variables Overview |
| FreeM @emph{local variables} have the same data structure as global variables, but are scoped to a single FreeM process, and stored in memory. | FreeM @emph{local variables} have the same data structure as global variables, but are scoped to a single FreeM process, and stored in memory. |
| Line 4927 If you use other M implementations, you | Line 4945 If you use other M implementations, you |
| @cindex object-oriented programming | @cindex object-oriented programming |
| @cindex programming, object-oriented | @cindex programming, object-oriented |
| @menu | |
| * Classes:: The basis of object-oriented programming. | |
| * Inheritance:: Basing one class upon another. | |
| * Methods:: Attaching code to a class. | |
| * Public and Private Variables:: Managing class member access. | |
| * Instantiating Objects:: Creating instances of classes. | |
| * Determining Object Class:: Getting object information at runtime. | |
| @end menu | |
| @node Classes | @node Classes |
| @section Classes | @section Classes |
| @menu | |
| * Class Overview:: Class basics. | |
| * Constructors:: Managing object creation. | |
| * Destructors:: Cleaning up. | |
| * Runtime Polymorphism:: Selecting methods at runtime. | |
| @end menu | |
| @node Class Overview | @node Class Overview |
| @subsection Class Overview | @subsection Class Overview |