version 1.48, 2025/05/05 13:13:39
|
version 1.55, 2025/05/08 12:52:53
|
Line 4
|
Line 4
|
@settitle The FreeM Manual |
@settitle The FreeM Manual |
|
|
@copying |
@copying |
This manual is for FreeM, (version 0.64.0-rc1), which is a free software implementation of the M programming language. |
This manual is for FreeM, (version 0.65.0-rc0), which is a free software implementation of the M programming language. |
|
|
Print-optimized versions of this book are typeset in @emph{Computer Modern} by the author using the @emph{GNU Texinfo} tools. |
Print-optimized versions of this book are typeset in @emph{Computer Modern} by the author using the @emph{GNU Texinfo} tools. |
|
|
Line 19 Permission is granted to copy, distribut
|
Line 19 Permission is granted to copy, distribut
|
|
|
@title The FreeM Manual |
@title The FreeM Manual |
@subtitle @sc{The Official Manual of FreeM} |
@subtitle @sc{The Official Manual of FreeM} |
@subtitle Version 0.64.0-rc1 |
@subtitle Version 0.65.0-rc0 |
@c@vskip 10pt |
@c@vskip 10pt |
@c@center @image{freem-logo-sm,,,,.png} |
@c@center @image{freem-logo-sm,,,,.png} |
@author Serena Willis |
@author Serena Willis |
Line 100 This is the official manual for the Free
|
Line 100 This is the official manual for the Free
|
* Accessing FreeM from C Programs:: How to use the mlib interface. |
* Accessing FreeM from C Programs:: How to use the mlib interface. |
|
|
* FreeM Administrator:: The fmadm system manager tool. |
* FreeM Administrator:: The fmadm system manager tool. |
* FreeM Legacy Utilities:: FreeM legacy system manager utilities. |
|
* FreeM VIEW Commands and Functions:: Getting and setting info about FreeM internals. |
* FreeM VIEW Commands and Functions:: Getting and setting info about FreeM internals. |
* Implementation Limits:: FreeM limitations. |
* Implementation Limits:: FreeM limitations. |
* US-ASCII Character Set:: The US-ASCII character set. |
* US-ASCII Character Set:: The US-ASCII character set. |
Line 441 Attempting to start a FreeM interpreter
|
Line 440 Attempting to start a FreeM interpreter
|
The FreeM direct-mode environment is the mode entered when FreeM is invoked without the use of @option{-r @emph{<entryref>}} or @option{--routine=@emph{<entryref>}}: |
The FreeM direct-mode environment is the mode entered when FreeM is invoked without the use of @option{-r @emph{<entryref>}} or @option{--routine=@emph{<entryref>}}: |
|
|
@example |
@example |
Coherent Logic Development FreeM version 0.64.0-rc1 (x86_64-pc-linux-gnu) |
Coherent Logic Development FreeM version 0.65.0-rc0 (x86_64-pc-linux-gnu) |
Copyright (C) 2014, 2020, 2021 Coherent Logic Development LLC |
Copyright (C) 2014, 2020, 2021 Coherent Logic Development LLC |
|
|
|
|
Line 1115 See @emph{https://wiki.osdev.org/Target_
|
Line 1114 See @emph{https://wiki.osdev.org/Target_
|
* $ZLSD():: Compute Levenshtein distance between two arguments. |
* $ZLSD():: Compute Levenshtein distance between two arguments. |
* $ZM():: Unknown. |
* $ZM():: Unknown. |
* $ZNAME():: Unknown. |
* $ZNAME():: Unknown. |
* $ZNEXT():: Unknown. |
* $ZNEXT():: Return glvn of next numeric subscript following given glvn. |
* $ZORDER():: Unknown. |
* $ZORDER():: Unknown. |
* $ZPIECE():: Unknown. |
* $ZPIECE():: Unknown. |
* $ZPREVIOUS():: Unknown. |
* $ZPREVIOUS():: Unknown. |
Line 1313 The optional second argument indicates t
|
Line 1312 The optional second argument indicates t
|
@cindex intrinsic functions, $NEXT |
@cindex intrinsic functions, $NEXT |
|
|
Deprecated. Use @code{$ORDER} instead. |
Deprecated. Use @code{$ORDER} instead. |
|
Returns the next numeric subscript of the specified glvn. |
|
|
|
@emph{Syntax} |
|
|
|
@example |
|
$NEXT(@emph{glvn}) |
|
@end example |
|
|
|
@emph{Example} |
|
|
|
Assume the following array: |
|
|
|
@example |
|
^foo(1)="" |
|
^foo(2)="" |
|
@end example |
|
|
|
And the following code: |
|
|
|
@example |
|
W $ZNEXT(^foo(1)) ; => 2 |
|
@end example |
|
|
@node $ORDER() |
@node $ORDER() |
@section $ORDER |
@section $ORDER |
Line 1713 Returns the Levenshtein distance between
|
Line 1734 Returns the Levenshtein distance between
|
@cindex intrinsic functions, $ZM |
@cindex intrinsic functions, $ZM |
@cindex intrinsic functions, implementation-specific |
@cindex intrinsic functions, implementation-specific |
|
|
|
Purpose unknown. |
|
|
@node $ZNAME() |
@node $ZNAME() |
@section $ZNAME |
@section $ZNAME |
@cindex $ZNAME |
@cindex $ZNAME |
Line 1721 Returns the Levenshtein distance between
|
Line 1744 Returns the Levenshtein distance between
|
|
|
Purpose unknown. |
Purpose unknown. |
|
|
|
This function relies on the value of @code{$VIEW(71)} being @code{0} (this is not the default). |
|
|
@node $ZNEXT() |
@node $ZNEXT() |
@section $ZNEXT |
@section $ZNEXT |
@cindex $ZNEXT |
@cindex $ZNEXT |
@cindex intrinsic functions, $ZNEXT |
@cindex intrinsic functions, $ZNEXT |
@cindex intrinsic functions, implementation-specific |
@cindex intrinsic functions, implementation-specific |
|
|
Purpose unknown. |
Returns a fully-formed variable reference of the next numeric subscript of the specified glvn. |
|
|
|
@emph{Syntax} |
|
|
|
@example |
|
$ZNEXT(@emph{glvn}) |
|
@end example |
|
|
|
@emph{Example} |
|
|
|
Assume the following array: |
|
|
|
@example |
|
^foo(1)="" |
|
^foo(2)="" |
|
@end example |
|
|
|
And the following code: |
|
|
|
@example |
|
W $ZNEXT(^foo(1)) ; => ^foo(2) |
|
@end example |
|
|
|
This function relies on the value of @code{$VIEW(71)} being @code{1} (this is the default). |
|
|
@node $ZORDER() |
@node $ZORDER() |
@section $ZORDER |
@section $ZORDER |
Line 2048 Identical to @ref{$TRANSLATE()}, except
|
Line 2096 Identical to @ref{$TRANSLATE()}, except
|
* ZBREAK:: Enable/disable ZBREAK mode. |
* ZBREAK:: Enable/disable ZBREAK mode. |
* ZCONST:: Define a constant that cannot be altered after initial definition. |
* ZCONST:: Define a constant that cannot be altered after initial definition. |
* ZGOTO:: @code{GOTO} with @code{BREAK} control. |
* ZGOTO:: @code{GOTO} with @code{BREAK} control. |
* ZHALT:: Unknown. |
* ZHALT:: Exit FreeM job with return value. |
* ZINSERT:: Insert code into routine buffer. |
* ZINSERT:: Insert code into routine buffer. |
* ZJOB:: Invokes a job, ignoring any timeouts. |
* ZJOB:: Invoke 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. |
* 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:: Quits multiple stack levels at once. |
* ZQUIT:: Quit 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. |
* ZTHROW:: Programmatically raise an error condition. |
* ZTRAP:: Unknown. |
* ZTRAP:: Raise a FreeM error. |
* ZUNMAP:: Remove a mapping of a global to a non-default namespace. |
* 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. |
* 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. |
* ZWITH:: Set prefix for future variable references. |
Line 2600 In the above @emph{inclusive} form, @cod
|
Line 2648 In the above @emph{inclusive} form, @cod
|
@cartouche |
@cartouche |
@quotation |
@quotation |
@emph{Note} |
@emph{Note} |
The below @emph{argumentless} and @emph{exclusive} forms of @code{KSUBSCRIPTS} are not implemented in FreeM, as of version 0.64.0-rc1, but are planned for a future release. |
The below @emph{argumentless} and @emph{exclusive} forms of @code{KSUBSCRIPTS} are not implemented in FreeM, as of version 0.65.0-rc0, but are planned for a future release. |
@end quotation |
@end quotation |
@end cartouche |
@end cartouche |
|
|
Line 2635 In the above @emph{inclusive} form, @cod
|
Line 2683 In the above @emph{inclusive} form, @cod
|
@cartouche |
@cartouche |
@quotation |
@quotation |
@emph{Note} |
@emph{Note} |
The below @emph{argumentless} and @emph{exclusive} forms of @code{KVALUE} are not implemented in FreeM, as of version 0.64.0-rc1, but are planned for a future release. |
The below @emph{argumentless} and @emph{exclusive} forms of @code{KVALUE} are not implemented in FreeM, as of version 0.65.0-rc0, but are planned for a future release. |
@end quotation |
@end quotation |
@end cartouche |
@end cartouche |
|
|
Line 3579 Raises an error condition as long as the
|
Line 3627 Raises an error condition as long as the
|
@cindex commands, non-standard |
@cindex commands, non-standard |
@emph{FreeM Extension} |
@emph{FreeM Extension} |
|
|
|
Synonymous with @ref{ZTHROW}. |
|
|
@node ZUNMAP |
@node ZUNMAP |
@section ZUNMAP |
@section ZUNMAP |
@cindex ZUNMAP |
@cindex ZUNMAP |
Line 6440 int main(int argc, char **argv, char **e
|
Line 6490 int main(int argc, char **argv, char **e
|
@cindex fmadm |
@cindex fmadm |
|
|
The @code{fmadm} utility is the preferred method of managing a FreeM installation, and will eventually replace all of the existing utilities. |
The @code{fmadm} utility is the preferred method of managing a FreeM installation, and will eventually replace all of the existing utilities. |
Unlike the existing, legacy utilities, @code{fmadm} presents a consistent, simple interface for all FreeM management tasks, and is namespace-aware. |
In support of FreeM operators, @code{fmadm} presents a consistent, simple interface for all FreeM management tasks, and is namespace-aware. |
This appendix will document each @code{fmadm} facility as it is implemented, until all of the legacy utilities have been replaced. |
This appendix will document each @code{fmadm} facility as it is implemented. |
|
|
The @code{fmadm} utility's functions all follow the below, consistent syntax: |
The @code{fmadm} utility's functions all follow the below, consistent syntax: |
|
|
Line 6535 Supported actions are @code{list} and @c
|
Line 6585 Supported actions are @code{list} and @c
|
@end table |
@end table |
|
|
|
|
@node FreeM Legacy Utilities |
|
@appendix FreeM Legacy Utilities |
|
@cindex utilities, legacy |
|
|
|
@section Global Compactor (gcompact) |
|
@cindex utilities, legacy, gcompact |
|
|
|
Compacts the specified global in place. |
|
|
|
@emph{Syntax} |
|
|
|
@example |
|
gcompact @emph{/path/to/global/file} |
|
@end example |
|
|
|
@section Block Examiner (gfix) |
|
@cindex utilities, gfix |
|
|
|
The @emph{gfix} interactive utility program permits navigation of the B-tree structure of the specified global a block at a time. |
|
|
|
@emph{Syntax} |
|
|
|
@example |
|
gfix @emph{</path/to/global/file>} |
|
@end example |
|
|
|
@section Global Repair Tool (grestore) |
|
@cindex utilities, legacy, grestore |
|
|
|
This utility will fix problems with the specified global. |
|
|
|
@emph{Syntax} |
|
|
|
@example |
|
grestore @emph{</path/to/global/file>} |
|
@end example |
|
|
|
@node FreeM VIEW Commands and Functions |
@node FreeM VIEW Commands and Functions |
@appendix FreeM VIEW Commands and Functions |
@appendix FreeM VIEW Commands and Functions |
|
|