<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ConvertBot</id>
	<title>ICE Enterprises - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ConvertBot"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/Special:Contributions/ConvertBot"/>
	<updated>2026-04-13T15:38:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ENDDO&amp;diff=860</id>
		<title>ENDDO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ENDDO&amp;diff=860"/>
		<updated>2020-04-27T22:05:20Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: end a DO block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;end a DO block&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Each DO statement in a macro must be coupled with an ENDDO statement at &lt;br /&gt;
 the end of the DO block.&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  DO, BREAK&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=POLYFIT&amp;diff=861</id>
		<title>POLYFIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=POLYFIT&amp;diff=861"/>
		<updated>2020-04-27T22:05:20Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: evaluates polynomial fit on data in a piecewise manner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;evaluates polynomial fit on data in a piecewise manner&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IN&amp;gt;    - Type 1000/2000 format S# input file name. &lt;br /&gt;
&amp;lt;ORDER&amp;gt; - Order of polynomial [DEF=1]&lt;br /&gt;
&amp;lt;COEF&amp;gt;  - Results label to receive coefficients&lt;br /&gt;
&amp;lt;OUT&amp;gt;   - Output file name to receive fit coefficients.Type 2000 format SD.&lt;br /&gt;
&amp;lt;FIT&amp;gt;   - Output file name to receive fit output. Type/Format of &amp;lt;IN&amp;gt;.&lt;br /&gt;
&amp;lt;ERR&amp;gt;   - Output file name to receive error output. Type/Format of &amp;lt;IN&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;IN&amp;gt; file can be a type 1000 or 2000 file.  If 1-D file, POLYFIT will fit&lt;br /&gt;
one curve to the entire file.  If 2-D, POLYFIT will fit one curve to each frame&lt;br /&gt;
of the input file.  The output files follow the input file type.&lt;br /&gt;
&lt;br /&gt;
The internal algorithm normalizes the abscissa to be from 0 to 1 to prevent&lt;br /&gt;
floating point overflow errors when XSTART or XDELTA are large numbers.  The&lt;br /&gt;
coefficients are transformed to the file's abscissa reference frame before&lt;br /&gt;
output.&lt;br /&gt;
&lt;br /&gt;
All internal statistics and matrix transformations are computed in double &lt;br /&gt;
precision regardless of input data type.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Switches: NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SAY&amp;diff=857</id>
		<title>SAY</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SAY&amp;diff=857"/>
		<updated>2020-04-27T22:05:19Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: echoes a text line to the terminal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;echoes a text line to the terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;TEXT&amp;gt; - A formatable string with optional results substitution&lt;br /&gt;
&lt;br /&gt;
This is used to print an informative string to the terminal - normally for&lt;br /&gt;
use in macros.  &amp;lt;TEXT&amp;gt; will normally be surrounded with doubles quotes (&amp;quot;&amp;quot;)&lt;br /&gt;
to preserve case and allow spaces.  A typical string would have the form:&lt;br /&gt;
&lt;br /&gt;
  SAY  &amp;quot;The bin ^NBIN frequency shift is ^FREQ Hz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The trailing quote may be omitted. When executed, the strings preceded by&lt;br /&gt;
the caret (^) will be interpreted as results parameters, and assuming the&lt;br /&gt;
parameters NBIN and FREQ are defined as 5 and 5.6420 respectively, the user&lt;br /&gt;
will see:&lt;br /&gt;
&lt;br /&gt;
  The bin 5 frequency shift is 5.6420 Hz&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  * nM&amp;gt; SAY &amp;quot;Hello&amp;quot;&lt;br /&gt;
    Hello&lt;br /&gt;
&lt;br /&gt;
  * nM&amp;gt; SAY &amp;quot;The bin ^NBIN frequency shift is ^FREQ Hz&amp;quot;&lt;br /&gt;
    The bin 5 frequency shift is 5.6420 Hz&lt;br /&gt;
&lt;br /&gt;
  * The /L=F switch can be used to repress the new line in a macro&lt;br /&gt;
    startmacro&lt;br /&gt;
      SAY/L=F &amp;quot;Running&amp;quot;&lt;br /&gt;
      SAY/L=F &amp;quot;.&amp;quot;&lt;br /&gt;
      SAY/L=F &amp;quot;.&amp;quot;&lt;br /&gt;
      SAY/L=F &amp;quot;.&amp;quot;&lt;br /&gt;
      SAY &amp;quot;Done&amp;quot;&lt;br /&gt;
    endmacro&lt;br /&gt;
&lt;br /&gt;
    Outputs the text:&lt;br /&gt;
      Running...Done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /L - Write a new line if true [DEF=TRUE]&lt;br /&gt;
&lt;br /&gt;
See Also: INFO, WARN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=Geogui&amp;diff=858</id>
		<title>Geogui</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=Geogui&amp;diff=858"/>
		<updated>2020-04-27T22:05:19Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Demonstration macro of geographical plotting capability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Demonstration macro of geographical plotting capability&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GEOGUI &amp;lt;PORT&amp;gt; &amp;lt;REMOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Displays a macro that demonstrates the useage of much of the plotting&lt;br /&gt;
capability of the NeXtMidas framework.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PORT&amp;gt; NOT USED&lt;br /&gt;
&lt;br /&gt;
&amp;lt;REMOTE&amp;gt; NOT USED&lt;br /&gt;
&lt;br /&gt;
When executed an application frame will be shown that contains interactive&lt;br /&gt;
plots of the world, a line spectrum, an image, and a table.  The application&lt;br /&gt;
is broken into three columns.  The left hand column displays different menus&lt;br /&gt;
controlling the display of data and displaying the metadata for the world&lt;br /&gt;
plot.  The center of the display contains a world plot on which different&lt;br /&gt;
features can be overlayed and a table containing metadata on the features&lt;br /&gt;
which can be displayed on the map.  The right hand panel shows two different&lt;br /&gt;
styles of line plots and an image raster of a penny.&lt;br /&gt;
&lt;br /&gt;
Menu behavior&lt;br /&gt;
&lt;br /&gt;
  - Mouse click on the title will expand/collapse the menu.&lt;br /&gt;
  &lt;br /&gt;
  - Left clicking on the value of a menu entry will display a popup menu&lt;br /&gt;
    containing the available values or a text entry field if the value is&lt;br /&gt;
    unconstrained. &lt;br /&gt;
&lt;br /&gt;
  - Right/Left clicking on the circle between the menu label and its value&lt;br /&gt;
    will cause the value to cycle through the available settings.&lt;br /&gt;
&lt;br /&gt;
Map/Plot behavior&lt;br /&gt;
&lt;br /&gt;
  - Left mouse click in the window will cause geolocation features to change&lt;br /&gt;
    according to where you click.&lt;br /&gt;
&lt;br /&gt;
  - Left mouse click and drag will cause a viewing box to be drawn.  When the&lt;br /&gt;
    mouse button is released, the map will zoom to display the selected area.&lt;br /&gt;
&lt;br /&gt;
  - Right mouse click will cause the map to revert to its &amp;quot;clean&amp;quot; state.&lt;br /&gt;
&lt;br /&gt;
  - Middle mouse click will cause a popup menu to be displayed which will&lt;br /&gt;
    allow you to discover the properties of the map and all of its layers.&lt;br /&gt;
&lt;br /&gt;
Table behavior&lt;br /&gt;
&lt;br /&gt;
  - Clicking in a sell will select that cell&lt;br /&gt;
&lt;br /&gt;
  - Clicking on a row or column header will select that row or column.&lt;br /&gt;
&lt;br /&gt;
  - Holding shift or control will allow you to perform multiple selections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  None&lt;br /&gt;
&lt;br /&gt;
See Also: SD360&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=PLOT&amp;diff=859</id>
		<title>PLOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=PLOT&amp;diff=859"/>
		<updated>2020-04-27T22:05:19Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Generic plotter for Midas files (or shared Layer objects)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Generic plotter for Midas files (or shared Layer objects)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file&amp;gt; - File(s) to plot (file1|file2|... for multiple)&lt;br /&gt;
&lt;br /&gt;
Keyword Only Parameters:  NOTE: These cannot be abbreviated. These keys are also&lt;br /&gt;
    available with the SET/GET messages and/or the set/get methods.&lt;br /&gt;
&lt;br /&gt;
[AUTOL]       - autoscale length (in frames) (See [SCALE]) [DEF=8]&lt;br /&gt;
                Supported by Layer1D, Layer2D, and LayerXY. Cannot be zero.&lt;br /&gt;
[AUTOM]       - mask of layers to include in autoscaling, -1 for all.  [DEF=2]&lt;br /&gt;
[AXIS]        - axis mode = DEF,UNLAB,NUM,FRAME,TFrame,BFrame,TRFrame,BRFrame,&lt;br /&gt;
                            TLFrame,BLFrame,~Grid,~Show,Modify,~Gridfront,&lt;br /&gt;
                            ~RotateVals,~AutoRotate&lt;br /&gt;
[BUTTONACTION] - Table to control what happens when a mouse button is pressed&lt;br /&gt;
                 (Since 3.5.2)&lt;br /&gt;
                 The table should be in the form:&lt;br /&gt;
                    {LMB=&amp;lt;act&amp;gt;,MMB=&amp;lt;act&amp;gt;,RMB=&amp;lt;act&amp;gt;}&lt;br /&gt;
                 Where &amp;lt;act&amp;gt; is one of the following:&lt;br /&gt;
                    Default            - default action for button&lt;br /&gt;
                    None               - do nothing&lt;br /&gt;
                    Menu               - bring up menu (default for MMB)&lt;br /&gt;
                    Mark/Mark__Message - mark this location (default for LMB)&lt;br /&gt;
                    UnZoom             - zoom out (default for RMB)&lt;br /&gt;
[C1,C2,CD]    - set color min, max, and/or delta (Not Implemented)&lt;br /&gt;
[CM]          - complex mode = Mag,Phase,Real,Imag,RnI,RvI,10Log,20Log,X,Y,Z&lt;br /&gt;
[CMAP]        - (Layer2D, Layer1D for type 2000) Use predefined Color map =&lt;br /&gt;
                  GrayScale,Ramp,XRamp,Wheel,Terrain,Multi,T5Layer,MapLine,Grid,&lt;br /&gt;
                  Spectrum,XDatalist. [DEF=based on input file]&lt;br /&gt;
                See MColor.colorMapList for full list. See also [NC] parameter.&lt;br /&gt;
[CNT]         - controls mode = Click|Motion|Drag|NONE [DEF=Click]&lt;br /&gt;
                Sets the mouse interaction messages to send to the macro.&lt;br /&gt;
[DRANGEUNITS] - Units to use for the dRange [READOUT] display value. (M,KM,NMI)&lt;br /&gt;
[FEATURES]    - table of features to set on plot class&lt;br /&gt;
[FILE]        - Input files (FILE1|FILE2...)&lt;br /&gt;
[LAYER]       - table of default parameters for all layers. This can be used&lt;br /&gt;
                to  persist things like colormaps from one file to the next.&lt;br /&gt;
                Use {TAG=mytagname} to change the layer name, otherwise the&lt;br /&gt;
                root file name is used.&lt;br /&gt;
[MAXRANGE]    - sets the maximum autoscale range (usually Y values) [DEF=100]&lt;br /&gt;
[MINRANGE]    - sets the minimum autoscale range (usually Y values) [DEF=50]&lt;br /&gt;
[MIMIC]       - sets the IDs of the plotters that any PAN/ZOOM messages should&lt;br /&gt;
                be forwarded to such that they will mimic this PLOT and&lt;br /&gt;
                PAN/ZOOM along with any changes to this plot; note that if&lt;br /&gt;
                bi-directional behavior is desired both plots need to be&lt;br /&gt;
                passed MIMIC= that point to the other; it is OK if the other&lt;br /&gt;
                PLOT has not been defined yet as the ID is not used until the&lt;br /&gt;
                first message is sent (Since NeXtMidas 3.5.4)&lt;br /&gt;
[NC]          - (Layer2D, Layer1D for type 2000) Number of colors to use for&lt;br /&gt;
                [CMAP] parameter [DEF=32].&lt;br /&gt;
[OPTIONS]     - MPlot options (BStore|Axes|Mark|Contrast|CrossHairs|XCut|YCut|&lt;br /&gt;
                               ZCut|StillZoom|BlockZoom|Pager|All|Auto2D|&lt;br /&gt;
                               DBuffer|NearInt|DragZoom)&lt;br /&gt;
[RANGE]       - sets the autoscale (max) range for the plot (and the range below&lt;br /&gt;
                automax mode). Same as setting both SCALE=+MaxRange and&lt;br /&gt;
                MAXRANGE=[value of RANGE]&lt;br /&gt;
[READOUT]     - specs readout, use | as separator, i.e. READOUT=Show|onTitle&lt;br /&gt;
                ( Show|onStatus|onAxis|onTitle|&lt;br /&gt;
                  X|dX|1/X|iX|Y|dY|dY/dX|iY|Z|dZ|dZ/dX|iZ|T|dT|1/T|1/dT|dRange|&lt;br /&gt;
                  extPrec|Index|DMS|Units|View|DateString|Scientific|Azimuth)&lt;br /&gt;
                (Macro mode default=Show|onStatus|onTitle|X|dX|Y|dY|dRange|&lt;br /&gt;
                View|Scientific; Interactive mode default +onAxis)&lt;br /&gt;
[SCALE]       - autoscale= AutoMin|AutoMax|MinRange|MaxRange|&lt;br /&gt;
                           MinZRange|MaxZRange|NoAverage|ExpandOnly&lt;br /&gt;
                  NOTE: Autoscaling uses the min/max exponential (sliding)&lt;br /&gt;
                        averages of [AUTOL] frames in the [AUTOM] layer(s),&lt;br /&gt;
                        unless NoAverage (Since 3.3.3) is set, then it will use&lt;br /&gt;
                        the actual min/max over [AUTOL] frames.&lt;br /&gt;
                        For TYPE=LINE:   min sets y1, max sets y2 (y-axis)&lt;br /&gt;
                        For TYPE=RASTER: min sets z1, max sets z2 (color range)&lt;br /&gt;
                  AutoMin   - autoscale the min&lt;br /&gt;
                  AutoMax   - autoscale the max&lt;br /&gt;
                  MinRange  - bound autoscale of max within a range of&lt;br /&gt;
                                (min + [MINRANGE])&lt;br /&gt;
                  MinRange  - bound autoscale of min within a range of&lt;br /&gt;
                                (max - [MAXRANGE])&lt;br /&gt;
                  MinRange|MaxRange - bound autoscale of min within a range of&lt;br /&gt;
                                1. (max - [MAXRANGE]), then to a range of&lt;br /&gt;
                                2. (max - [MINRANGE])&lt;br /&gt;
                  ExpandOnly - only expand min/max (no shrink) (Since 3.4.2)&lt;br /&gt;
[SETUP]       - table of configuration parameters to be applied to the plot&lt;br /&gt;
[TYPE]        - set plot mode = LINE,RASTER,CONTOUR,MESH,POINT,DOT&lt;br /&gt;
[VIEW]        - Change the plot view/layout, such as axis direction, etc.&lt;br /&gt;
                e.g. YX swaps X and Y axes; XiY reverses direction of Y axis.&lt;br /&gt;
                Options: XY,iXY,XiY,iXiY,YX,iYX,YiX,iYiX,&lt;br /&gt;
                         XYZ,Polar,LatLon,Mercator,Geodetic&lt;br /&gt;
[X1,X2,XD,XU] - set X min, max, delta, and/or units&lt;br /&gt;
[Y1,Y2,YD,YU] - set Y min, max, delta, and/or units&lt;br /&gt;
[Z1,Z2,ZD,ZU] - set Z min, max, delta, and/or units&lt;br /&gt;
[ZOOMTO]      - open the plot zoomed to a particular portion of the plot. E.g:&lt;br /&gt;
                 nM&amp;gt; plot apenny.prm ZOOMTO={x1=50,x2=100,y1=0,y2=100}&lt;br /&gt;
&lt;br /&gt;
This routine plots multiple files or layers in both static and real-time modes.&lt;br /&gt;
A file/pipe will have its I/O handled by this routine. A layer must provide its&lt;br /&gt;
own I/O and tell this routine when to update. The following is a short list of&lt;br /&gt;
*some* of the layers supported (see the LAYER explain file for details):&lt;br /&gt;
&lt;br /&gt;
    1000  - a type 1000 file&lt;br /&gt;
    2000  - a type 2000 x/y grid&lt;br /&gt;
    3000  - a non-homogeneous file with subrecords specified by&lt;br /&gt;
            qualifiers in the form {Layer={LT=XY,X=ABSC,Y=ORD}}.&lt;br /&gt;
    5000  - a type 5000 file with a vector component of interest&lt;br /&gt;
            qualifier {NAME=XXX} specifies component other than all&lt;br /&gt;
    1998  - a polygon file specifying 2 or 3 dimensions (filled)&lt;br /&gt;
    1999  - a line segment file specifying 2 or 3 dimensions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    - Plot supports markers and annotations. - See FEATURE.&lt;br /&gt;
    - Plot supports non-file based layers    - See LAYER.&lt;br /&gt;
    - Plot supports SHAPE (.shp) files.      - See the examples below.&lt;br /&gt;
    - Plot supports NGA image files.         - See the MAP option tree.&lt;br /&gt;
    - Plot supports IMAGE (gif,tif,jpg,png,xpm,pdf) files.&lt;br /&gt;
&lt;br /&gt;
Scaling:&lt;br /&gt;
  Plot autoscaling can be set or adjusted in many ways:&lt;br /&gt;
    0. Autoscaling of the min and max is on by default.&lt;br /&gt;
    1. If a user specifies an X, Y or Z minimum value on the plot command line,&lt;br /&gt;
       then the plot will not automatically scale minimum values.&lt;br /&gt;
    2. Likewise, setting a max value will turn off autoscaling of max values.&lt;br /&gt;
    3. Setting the range on the command line (via the &amp;quot;RANGE&amp;quot;=&amp;lt;range&amp;gt; parameter)&lt;br /&gt;
       will set the scale to include scaling by Max data range values.&lt;br /&gt;
    4. A user can set the autoscale options on the plot command line using the&lt;br /&gt;
       &amp;quot;SCALE=&amp;lt;scale&amp;gt;&amp;quot; parameter.&lt;br /&gt;
    5. Scaling can be done on an active plot by using the Scale menu described&lt;br /&gt;
       in the Menus section below.&lt;br /&gt;
    6. Also on an active plot, users can invoke either the setScale(String) or&lt;br /&gt;
       the setScale(int) methods.&lt;br /&gt;
       a. The setScale(int) method accepts values or groups of int values&lt;br /&gt;
          corresponding to the items listed in [SCALE], above.&lt;br /&gt;
       b. The method setScale(String) takes in String forms of those values and&lt;br /&gt;
          includes, for convenience, several common group designations.&lt;br /&gt;
          These group designations are:&lt;br /&gt;
            &amp;quot;FIX&amp;quot;   : De-selects autoscaling (uses current range)&lt;br /&gt;
            &amp;quot;FULL&amp;quot;  : Sets to &amp;quot;AUTOMIN|AUTOMAX&amp;quot;&lt;br /&gt;
            &amp;quot;AUTO&amp;quot;  : Same as &amp;quot;FULL&amp;quot; (Sets to &amp;quot;AUTOMIN|AUTOMAX&amp;quot;)&lt;br /&gt;
            &amp;quot;RANGE&amp;quot; : Sets to &amp;quot;MINRANGE|MAXRANGE&amp;quot;.&lt;br /&gt;
          As with many methods that relates to setting mask values, users can&lt;br /&gt;
          use the word &amp;quot;NONE&amp;quot; to de-select all current values.&lt;br /&gt;
&lt;br /&gt;
Menus:&lt;br /&gt;
  Plot menus may be accessed by using the middle-mouse button (MMB). An MMB can&lt;br /&gt;
  be simulated on a two-button mouse by briefly holding down the right-mouse&lt;br /&gt;
  button. Menu selections made with the left-mouse button (LMB) and are not&lt;br /&gt;
  &amp;quot;sticky&amp;quot; (the menu goes away after selection). Menu selections made using the&lt;br /&gt;
  MMB are sticky.  The following is a summary of the options available through&lt;br /&gt;
  plot menus:&lt;br /&gt;
&lt;br /&gt;
    Files       -&amp;gt; Addnew / Reread / [plot file #1,...]&lt;br /&gt;
    Layers      -&amp;gt; [same as Legend]&lt;br /&gt;
    Features    -&amp;gt; Load / Save / AddNew&lt;br /&gt;
    View        -&amp;gt; YX / iYX / YiX / iYiX / XY / iXY / XiY / iXiY / XYZ /&lt;br /&gt;
                     Polar / LatLon / Mercator / Geodetic&lt;br /&gt;
    Mode        -&amp;gt; Mag / Phase / Real / Imag / RnI / RvI / 10Log / 20Log&lt;br /&gt;
    Scale       -&amp;gt; Flags: AutoMin,AutoMax,MinRange,MaxRange,MinZRange,MaxZRange,&lt;br /&gt;
                          NoAverage&lt;br /&gt;
                   / XMin / YMin / ZMin / MinRange / ScaleAvg / XMax / YMax /&lt;br /&gt;
                   ZMax / MaxRange&lt;br /&gt;
    Axis        -&amp;gt; Default / Unlabeled / Numbered / Frame / TFrame / BFrame /&lt;br /&gt;
                     TRFrame / BRFrame / TLFrame / ~Grid / ~Show / Modify /&lt;br /&gt;
                     ~Gridfront / ~RotateVals / ~AutoRotate&lt;br /&gt;
    Readout     -&amp;gt; Show / onStatus / onAxis / onTitle / X / dX / 1/X / iX / Y /&lt;br /&gt;
                     dY /dY/dX / iY / Z / dZ / dZ/dX / iZ / T / dT / 1/T / 1/dT/&lt;br /&gt;
                     dRange / ExtPrec / Index / DMS / Units / View /&lt;br /&gt;
                     DateString / Scientific / Azimuth / dRangeUnits&amp;gt;&lt;br /&gt;
    dRangeUnits -&amp;gt; M / KM / NMI&lt;br /&gt;
    Legend      -&amp;gt; [display options for each layer...]&lt;br /&gt;
    Options     -&amp;gt; BStore / Axes / Mark / Contrast / CrossHairs / XCut / YCut /&lt;br /&gt;
                     ZCut / StillZoom / BlockZoom / Pager / All / Auto2D /&lt;br /&gt;
                     DBuffer / NearInt / DragZoom&lt;br /&gt;
    Query       -&amp;gt; [PLOT status information]&lt;br /&gt;
    Export      -&amp;gt; [ExportImage parameters and options]&lt;br /&gt;
    More        -&amp;gt; Window / Controls / Animate / Theme / Precision / Type /&lt;br /&gt;
                     ~Dots / Locate / GoToLocation&lt;br /&gt;
    Exit&lt;br /&gt;
&lt;br /&gt;
  Menu options presented with a tilde (~) in front are toggle options.  For&lt;br /&gt;
  example, the menu selection Plot -&amp;gt; Axis -&amp;gt; ~Show toggles view of the X and Y&lt;br /&gt;
  axes.&lt;br /&gt;
&lt;br /&gt;
  Menu options followed by a greater than (&amp;gt;) lead to further options, such as&lt;br /&gt;
  popup menus. For example, the Readout selection dRangeUnits&amp;gt; pops up a menu&lt;br /&gt;
  asking the user to select the unit type (M, KM, or NMI).&lt;br /&gt;
&lt;br /&gt;
Plot Mode Options:&lt;br /&gt;
  NeXtMidas plots support the rendering of data several ways. Typically, the&lt;br /&gt;
  data values are treated as REAL numbers and plotted as such. Users are able&lt;br /&gt;
  to change the data representation on the command line using the cm=&amp;lt;mode&amp;gt;&lt;br /&gt;
  argument or via the Menus as depicted above.&lt;br /&gt;
&lt;br /&gt;
  Note: not all data can be rendered in all modes, or the rendering change may&lt;br /&gt;
  have no effect.&lt;br /&gt;
&lt;br /&gt;
Axis Menu Options:&lt;br /&gt;
  Default       - The default axis layout. Includes Axis lines and labeled tics&lt;br /&gt;
  Unlabeled     - The axis does not includes labels&lt;br /&gt;
  Numbered      - Axis has numbers and tics&lt;br /&gt;
  Frame         - Axis has tics only&lt;br /&gt;
  TFrame        - Show axis values at top&lt;br /&gt;
  BFrame        - Show axis values at bottom&lt;br /&gt;
  TRFrame       - Show axis values at top and right&lt;br /&gt;
  BRFrame       - Show axis values at bottom and right&lt;br /&gt;
  TLFrame       - Show axis values at top and left&lt;br /&gt;
  ~Grid         - Toggle showing grid&lt;br /&gt;
  ~Show         - Toggle showing axis&lt;br /&gt;
  Modify        - Brings up axis configure menu&lt;br /&gt;
  ~GridFront    - Place grid in front of data&lt;br /&gt;
  ~RotateVals   - Draw vertically the labels on the Y axis (since 3.1.0)&lt;br /&gt;
  ~AutoRotate   - Rotate if necessary labels on the Y axis (since 3.1.0)&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  BStore     - Put drawn data or features into a backing store for faster&lt;br /&gt;
               refreshes. Not recommended for moving features or realtime&lt;br /&gt;
               (piped) data.&lt;br /&gt;
  Axes       - Show axes&lt;br /&gt;
  Mark       - Show marks&lt;br /&gt;
  Contrast   - Adjust contrast (slightly darkens plot)&lt;br /&gt;
  CrossHairs - Display cross hairs at the mouse location&lt;br /&gt;
  XCut       - Creates a &amp;quot;cut&amp;quot; of the X-Axis cross-section at the mouse position&lt;br /&gt;
  YCut       - Creates a &amp;quot;cut&amp;quot; of the Y-Axis cross-section at the mouse position&lt;br /&gt;
  ZCut       - TBD&lt;br /&gt;
  StillZoom  - Use still zoom&lt;br /&gt;
  BlockZoom  - Use block zoom&lt;br /&gt;
  Pager      - Use pager&lt;br /&gt;
  All        - Use all available data&lt;br /&gt;
  Auto2D     - Auto Geodetic To Mercator for speed where appropriate&lt;br /&gt;
  DBuffer    - Simulate Double BUffering (helps eliminate flicker)&lt;br /&gt;
  NearInt    - Use nearest integral scaling&lt;br /&gt;
  DragZoom   - Allow zooming by RMB dragging top-right corner of plot&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
  NAME       - (IN/OUT) DESCRIPTION&lt;br /&gt;
  -----------------------------------------------------------------------&lt;br /&gt;
  BUTTON       - (IN)  (Internal Message:) Mouse click.&lt;br /&gt;
  CLOSEFILE    - (IN)  Close a layer/file. Data=&amp;lt;TAG name&amp;gt;&lt;br /&gt;
  CONTROLS     - (IN)  Set the controls mask: ONCLICK, ONMOTION.&lt;br /&gt;
                       INFO=&amp;lt;controls mask&amp;gt;&lt;br /&gt;
  DBLCLICKZOOM - (IN)  Disable or enable zooming in/out through the use of&lt;br /&gt;
                       double-clicking the mouse.        (Since NeXtMidas 2.7.2)&lt;br /&gt;
                       DATA=TRUE,FALSE&lt;br /&gt;
                        NOTE: When enabled, this can cause confusion if Left&lt;br /&gt;
                              Mouse Clicks or Right Mouse Clicks are already&lt;br /&gt;
                              mapped by the user's application.&lt;br /&gt;
  DRAG         - (IN)  (Internal Message:) Mouse drag.&lt;br /&gt;
  DRAGBOX      - (OUT) Indicates user has drawn a dragbox (a Shift+Drag).&lt;br /&gt;
                       (e.g. macro test %test_box)&lt;br /&gt;
  DROPDATA     - (OUT) Indicates user has executed a drag and drop.&lt;br /&gt;
  DRANGEUNITS  - (IN)  Sets the dRange Units&lt;br /&gt;
  EXIT         - (IN)  Exit plot (if EXIT_MESSAGE enabled)&lt;br /&gt;
  EXPORTIMAGE  - (IN)  Creates and saves the image. INPUT DATA=&amp;lt;FileName&amp;gt;.&amp;lt;ext&amp;gt;&lt;br /&gt;
                       Image type is based on file extension.&lt;br /&gt;
  FEATURE      - (??)  TBE&lt;br /&gt;
  FOCUS        - (IN)  No action taken if plot receives this message.&lt;br /&gt;
  GOTOLOCATION - (IN)  Marks or Zooms to a given location. Message data is a&lt;br /&gt;
                       table with:&lt;br /&gt;
                          XVAL   - X coordinate (or center point)&lt;br /&gt;
                          YVAL   - Y coordinate (or center point)&lt;br /&gt;
                          RADIUS - Zoom radius (same units as plot)&lt;br /&gt;
                          FLAGS  - Type of action (|MarkLocation|Zoom|)&lt;br /&gt;
  HOLDREFRESH  - (IN)  Prevent refreshes, allowing the user to make many changes&lt;br /&gt;
                       before allowing refreshes again, thus drawing all&lt;br /&gt;
                       changes at once. DATA=&amp;lt;what to hold&amp;gt;&lt;br /&gt;
                         DATA=NONE (Allow all refreshes) [DEF]&lt;br /&gt;
                         DATA=[~,+,-]FEATURE (Hold refreshes on Features only)&lt;br /&gt;
                         DATA=[~,+,-]LAYER (Hold Layer refreshes)&lt;br /&gt;
                         DATA=ALL (Hold Feature AND Layer refreshes)&lt;br /&gt;
  KEYPRESS     - (IN)  (Internal Message:) Keyboard interaction.&lt;br /&gt;
  KEYRELEASE   - (IN)  (Internal Message:) Keyboard interaction.&lt;br /&gt;
  LAYER        - (IN)  (Internal Message:) Brings up the layer configuration&lt;br /&gt;
                       menu. DATA=[LayerName]&lt;br /&gt;
  LOADFEATURESFROMFILE - (IN)  Loads features from a file.&lt;br /&gt;
  MARK         - (OUT) Indicates current pointer position. [CNT] controls when&lt;br /&gt;
                       MARK message will be sent. INFO=[0=Motion,1=Click/Drag]&lt;br /&gt;
  MENU         - (IN)  (Internal Message:) Brings up the plot menu.&lt;br /&gt;
  MODIFY       - (OUT) (Internal Message:) Used with RMIF connections.&lt;br /&gt;
  MORE         - (IN)  (Internal Message:) Brings up the more menu.&lt;br /&gt;
  MOUSEWHEELZOOM - (IN) Disable or Enable zooming in/out through the use of the&lt;br /&gt;
                        mouse scroll wheel.              (Since NeXtMidas 2.7.2)&lt;br /&gt;
                        DATA=TRUE,FALSE&lt;br /&gt;
  NOFILE       - (IN)  (Not Implemented)&lt;br /&gt;
  OPENFILE     - (IN)  Open a layer/file. DATA=&amp;lt;filename&amp;gt;. Unlike REREAD&lt;br /&gt;
                       message this processes the file header information. If&lt;br /&gt;
                       info=-1, clears old files first. To set additional&lt;br /&gt;
                       arguments or to update the viewable area of the plot&lt;br /&gt;
                       when opening, use the optional message field&lt;br /&gt;
                       QUALS=&amp;lt;table&amp;gt;. See the example for using QUALS with&lt;br /&gt;
                       OPENFILE in EXAMPLES for more details.&lt;br /&gt;
  PANOBS       - (IN)  Pan the observer position.&lt;br /&gt;
  PANX         - (IN)  Pan in X dimension only.&lt;br /&gt;
  PANXY        - (IN)  Pan in both X and Y  dimensions.&lt;br /&gt;
  PANY         - (IN)  Pan in Y dimension only.&lt;br /&gt;
  PANTW        - (IN)  Pan to specified time window (start,len)&lt;br /&gt;
  PLOT         - (??)  TBE&lt;br /&gt;
  POINTER      - (IN)  Set the current pointer position.&lt;br /&gt;
  PRECISION    - (IN)  Set the readout precision (# places after decimal).&lt;br /&gt;
  REFRESH      - (IN)  Perform a FULL refresh (Drawable.FULL)&lt;br /&gt;
  REPARENT     - (IN)  MPLOT.reParent is invoked with data&lt;br /&gt;
  REREAD       - (IN)  REREAD the file, does not reread the header&lt;br /&gt;
  RESIZE       - (IN)  (Internal Message:) Resizes plot.&lt;br /&gt;
  SAVEFEATURESTOFILE - (IN)  Saves features to a file.&lt;br /&gt;
  SHOW         - (IN)  (Internal Message:) Shows or hides the plot.&lt;br /&gt;
                       INFO=[1=Show,0=Hide,-1=Iconify]&lt;br /&gt;
  SHOWN        - (IN)  (Internal Message:) Sets plot visibility status.&lt;br /&gt;
  THEME        - (IN)  Change the THEME (&amp;quot;MORE -&amp;gt; Theme&amp;quot; menu)&lt;br /&gt;
                       Data=Desktop,Default,WoB,GoB,BoW,Browser,Gear1,Gear2,&lt;br /&gt;
                            Gear3,Gear4,Nak.&lt;br /&gt;
  TIME         - (IN)  Set the time for animated displays. Same as using&lt;br /&gt;
                       MPLOT.setTime(String) method.&lt;br /&gt;
  TYPE         - (IN)  Set Type as per [TYPE] above&lt;br /&gt;
  UNZOOM       - (I/O) Unzoom back one zoom level.&lt;br /&gt;
                       Output Data=nxm.sys.libg.DragBox (as of NeXtMidas 2.5.0)&lt;br /&gt;
  WINDOW       - (IN)  (Internal Message:) Sets window status.&lt;br /&gt;
  XCUT         - (IN)  Create a cut of the X-Axis cross-section&lt;br /&gt;
                       DATA={IX=&amp;lt;xpos&amp;gt;,IY=&amp;lt;ypos&amp;gt;}&lt;br /&gt;
  YCUT         - (IN)  Create a cut of the Y-Axis cross-section&lt;br /&gt;
                       DATA={IX=&amp;lt;xpos&amp;gt;,IY=&amp;lt;ypos&amp;gt;}&lt;br /&gt;
  ZOOM         - (I/O) Zoom one level to the X1,X2,Y1,Y2 real world coordinates.&lt;br /&gt;
                       INPUT DATA={X1=&amp;lt;x1&amp;gt;,X2=&amp;lt;x2&amp;gt;,Y1=&amp;lt;y1&amp;gt;,Y2=&amp;lt;y2&amp;gt;} or&lt;br /&gt;
                                 ={XMIN=&amp;lt;x1&amp;gt;,XMAX=&amp;lt;x2&amp;gt;,YMIN=&amp;lt;y1&amp;gt;,YMAX=&amp;lt;y2&amp;gt; or&lt;br /&gt;
                                 =nxm.sys.libg.DragBox&lt;br /&gt;
                       OUTPUT DATA=&amp;lt;same as input data&amp;gt; (macro initiated) or&lt;br /&gt;
                                  =nxm.sys.libg.DragBox (user initiated)&lt;br /&gt;
  ZOOMIN       - (I/O) Zoom in on a plot by a given percentage (0 &amp;lt; % &amp;lt; 1)&lt;br /&gt;
                         INPUT DATA=&amp;lt;float&amp;gt; [DEF=0.5f], QUALS={PERCENT=&amp;lt;float&amp;gt;}&lt;br /&gt;
                           Examples:&lt;br /&gt;
                             DATA=0.1 (Zoom in 10%)&lt;br /&gt;
                             DATA=0.9 (Zoom in 90%)&lt;br /&gt;
                             DATA=0.5 (Zoom in 50%) [DEF]&lt;br /&gt;
                         OUTPUT DATA={XMIN=&amp;lt;x1&amp;gt;,XMAX=&amp;lt;x2&amp;gt;,YMIN=&amp;lt;y1&amp;gt;,YMAX=&amp;lt;y2&amp;gt;}&lt;br /&gt;
                                QUALS={PERCENT=0.5}&lt;br /&gt;
  ZOOMOUT      - (I/O) Zoom out on a plot by a given percentage (0 &amp;lt; % &amp;lt; 1) or&lt;br /&gt;
                       all the way out (-1)&lt;br /&gt;
                         INPUT DATA=&amp;lt;float&amp;gt; [DEF=0.5f], QUALS={PERCENT=&amp;lt;float&amp;gt;}&lt;br /&gt;
                           Examples:&lt;br /&gt;
                             DATA=0.1 (Zoom out 10%)&lt;br /&gt;
                             DATA=0.9 (Zoom out 90%)&lt;br /&gt;
                             DATA=0.5 (Zoom out 50%) [DEF]&lt;br /&gt;
                             DATA=-1  (Zoom all the way out)&lt;br /&gt;
                         OUTPUT DATA={XMIN=&amp;lt;x1&amp;gt;,XMAX=&amp;lt;x2&amp;gt;,YMIN=&amp;lt;y1&amp;gt;,YMAX=&amp;lt;y2&amp;gt;}&lt;br /&gt;
                                QUALS={PERCENT=0.5}&lt;br /&gt;
  ZOOMX        - (I/O) Same as ZOOM for X only&lt;br /&gt;
  ZOOMY        - (I/O) Same as ZOOM for Y only&lt;br /&gt;
&lt;br /&gt;
  NOTE 1: Some messages only support passing because a way to implement&lt;br /&gt;
          their data portion has not yet been implemented.&lt;br /&gt;
&lt;br /&gt;
  NOTE 2: There is an inherent delay when using the message command with the&lt;br /&gt;
          function SEND, since the message is put onto the plot message queue&lt;br /&gt;
          and waits there for plot to retrieve it. Therefore, the user should&lt;br /&gt;
          not update any values on the plot until the plot has had time to&lt;br /&gt;
          process the message. An alternative is to use SENDW or SENDX. See&lt;br /&gt;
          Message explain file for details on their use.&lt;br /&gt;
&lt;br /&gt;
  NOTE 3: Messages are intended to be processed and executed by the PLOT thread,&lt;br /&gt;
          although it is possible to call plot.processMessage directly via an&lt;br /&gt;
          INVOKE or through Swing EDT interaction (such as mouse interaction).&lt;br /&gt;
          Since 3.1.1, PLOT will re-queue most messages that are not on the&lt;br /&gt;
          PLOT thread in order to avoid possible thread collision issues. For&lt;br /&gt;
          performance reasons, the PAINT, POINTER, and DRAG messages are&lt;br /&gt;
          excluded from this behavior.&lt;br /&gt;
&lt;br /&gt;
  NOTE 4: The original MouseEvent, generated by a user interacting with the Plot,&lt;br /&gt;
          is saved in a table in the &amp;quot;quals&amp;quot; field of the Plot Message under the &lt;br /&gt;
          key ORIG_MSG_DATA. (Since 3.5.4)&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Axis and grid options:&lt;br /&gt;
&lt;br /&gt;
    Plot a Layer2D file with a grid in the background using a 3-D view.&lt;br /&gt;
       nM&amp;gt; plot alaska.prm axis=grid view=xyz&lt;br /&gt;
&lt;br /&gt;
    Plot a Layer2D file with a grid in the foreground using a 3-D view.&lt;br /&gt;
       nM&amp;gt; plot alaska.prm axis=grid|gridfront view=xyz&lt;br /&gt;
&lt;br /&gt;
    Toggle the appearance of the axis (turn it off).&lt;br /&gt;
       nM&amp;gt; plot fftdemo.prm axis=show&lt;br /&gt;
&lt;br /&gt;
    Rotate the Y axis labels (draw the text vertically)&lt;br /&gt;
       nM&amp;gt; plot fftdemo.prm axis=+rotateVals&lt;br /&gt;
&lt;br /&gt;
    Disable the buffer that is added to axis values&lt;br /&gt;
       nM&amp;gt; plot/axisBuffer=0 fftdemo.prm&lt;br /&gt;
&lt;br /&gt;
    Increase the size of the axis buffer&lt;br /&gt;
       nM plot/axisBuffer=12 fftdemo.prm&lt;br /&gt;
&lt;br /&gt;
  2. Change the default color attribute for all layers.&lt;br /&gt;
      nM&amp;gt; plot/bg fftdemo.prm layer={color=red}&lt;br /&gt;
      nM&amp;gt; mess FUNC=send ID=plot NAME=openfile INFO=-1 DATA=fftdemo.prm&lt;br /&gt;
      NOTE: Color is still red&lt;br /&gt;
      NOTE: The INFO=-1 flags plot to close all current files.&lt;br /&gt;
&lt;br /&gt;
  3. Override the units settings for the plot.&lt;br /&gt;
      nM&amp;gt; plot/bg/id=myplot fftdemo.prm&lt;br /&gt;
      nM&amp;gt; set reg.myplot.xUnits 1&lt;br /&gt;
      nM&amp;gt; set reg.myplot.yUnits 3&lt;br /&gt;
&lt;br /&gt;
  4. Override the symbol settings for a layer.&lt;br /&gt;
        nM&amp;gt; plot world|cities{LAYER={SYMBOL=tri,SymbolSize=8,SymbolFill=on}}&lt;br /&gt;
     or&lt;br /&gt;
        nM&amp;gt; plot world|cities{LAYER={SYMBOL=square,SymbolFill=off,COLOR=red}}&lt;br /&gt;
&lt;br /&gt;
     See the FEATURE explain file for details on the symbols and symbol settings&lt;br /&gt;
     available.&lt;br /&gt;
&lt;br /&gt;
  5. Display x Units in MHz when DataFile units are Hz by default:&lt;br /&gt;
        nM&amp;gt; plot/bg/id=myplot/xmult=6 fftdemo.prm&lt;br /&gt;
     or&lt;br /&gt;
        nM&amp;gt; set reg.myplot.setxmult 6&lt;br /&gt;
&lt;br /&gt;
  6. Turn AutoSelect on for a LayerT5 layer so that when a user clicks near a&lt;br /&gt;
     point the name of the point is displayed.&lt;br /&gt;
        nM&amp;gt; plot world.prm|cities.prm{Layer={AutoSelectEnable=&amp;quot;CLICK&amp;quot;,&amp;amp;&lt;br /&gt;
                                             AutoSelectMode=&amp;quot;GreatArc&amp;quot;,&amp;amp;&lt;br /&gt;
                                             AutoSelectRange=&amp;quot;750000.0&amp;quot;}}&lt;br /&gt;
  7. Have a default color for a file&lt;br /&gt;
      nM&amp;gt; plot/bg/id=plotid LAYER={COLOR=RED}&lt;br /&gt;
      nM&amp;gt; message FUNC=SEND ID=PLOTID NAME=OPENFILE INFO=-1 DATA=fftdemo.prm&lt;br /&gt;
    or for type 2000 files&lt;br /&gt;
      nM&amp;gt; plot/bg/id=plotid LAYER={COLORMAP=XRAMP}&lt;br /&gt;
      nM&amp;gt; message FUNC=SEND ID=PLOTID NAME=OPENFILE INFO=-1 DATA=apenny.prm&lt;br /&gt;
&lt;br /&gt;
  8. Plot a KML file and set the MAX Image Icon Size for non-zoomed icons to 10&lt;br /&gt;
     and the blending ratio for blending (tinting) colors in image Icons.&lt;br /&gt;
      nM&amp;gt; plot world.shp|kmlSamples.kml{LAYER={IconSize=10,&lt;br /&gt;
                                        ColorBlendRatio=.9}} view=geo&lt;br /&gt;
&lt;br /&gt;
  9. Plot a KML file and do not display any labels for points.&lt;br /&gt;
      nM&amp;gt; plot world.shp|kmlSamples.kml{LAYER={SHOWLABEL=FALSE}} view=geo&lt;br /&gt;
&lt;br /&gt;
  10. Plot a KML file and position the point label above the point Icon.&lt;br /&gt;
       nM&amp;gt; plot world.shp|kmlSamples.kml{LAYER={LABELPOS=TOP}} view=geo&lt;br /&gt;
&lt;br /&gt;
  11. Do all painting in the SWING thread (EDT)&lt;br /&gt;
       nM&amp;gt; env set graphics SWING&lt;br /&gt;
&lt;br /&gt;
  12. Let plots draw outside of the SWING thread&lt;br /&gt;
       nM&amp;gt; env set graphics SWING|REALTIME&lt;br /&gt;
&lt;br /&gt;
  13. Plot a map and set the Readout to display ranges in Nautical Miles&lt;br /&gt;
       nM&amp;gt; plot world.shp dRangeUnits=NMI&lt;br /&gt;
&lt;br /&gt;
  14. Plot a 1D file that has a very large Axis START value using /INDEX&lt;br /&gt;
       nM&amp;gt; wave temp.tmp start=1e30&lt;br /&gt;
       nM&amp;gt; plot/index temp.tmp&lt;br /&gt;
&lt;br /&gt;
  15. Zoom in on a plot by 90% then zoom all the way out&lt;br /&gt;
       nM&amp;gt; plot world.prm /bg&lt;br /&gt;
       nM&amp;gt; message FUNC=sendw ID=PLOT NAME=ZOOMIN  DATA=.9&lt;br /&gt;
       nM&amp;gt; message FUNC=sendw ID=PLOT NAME=ZOOMOUT  DATA=-1&lt;br /&gt;
&lt;br /&gt;
  16. Zoom in / out on a plot using keyboard shortcuts:&lt;br /&gt;
       nM&amp;gt; plot world.prm&lt;br /&gt;
       &amp;lt;press '+' keys on keyboard or number pad&amp;gt; (Zoom in %50)&lt;br /&gt;
       &amp;lt;press '-' keys on keyboard or number pad&amp;gt; (Zoom out %50)&lt;br /&gt;
&lt;br /&gt;
       Note: These shortcuts can be re-mapped in ENV.KEYMAP.PLOT. See&lt;br /&gt;
             $NMROOT/nxm/sys/cfg/keyMap.tbl for example.&lt;br /&gt;
&lt;br /&gt;
  17. Plot two files with different Z MIN/MAX ranges with z scaling by the layer&lt;br /&gt;
      nM&amp;gt; plot/scalez=layer temp.tmp|apenny.prm{LAYER={ZMIN=-50,ZMAX=100}}&lt;br /&gt;
&lt;br /&gt;
  18. Open a file and immediately set the left Outer Limit (Bounds) using QUALS&lt;br /&gt;
      nM&amp;gt; message send idplot name=openfile data=&amp;quot;world.shp&amp;quot; &amp;amp;&lt;br /&gt;
                  quals={outerlimits={x1=-100}}&lt;br /&gt;
&lt;br /&gt;
  19. Create a XCut plot from a point on a Layer2D plot (message)&lt;br /&gt;
      nM&amp;gt; plot/id=plotid apenny.prm /bg&lt;br /&gt;
      nM&amp;gt;  message func=sendw id=plotid name=&amp;quot;XCUT&amp;quot; data={IX=200,IY=200}&lt;br /&gt;
&lt;br /&gt;
  20. Create a XCut of the current mouse position (keyboard shortcut)&lt;br /&gt;
      nM&amp;gt; plot apenny.prm&lt;br /&gt;
      Hover mouse where you want the cut and press X&lt;br /&gt;
&lt;br /&gt;
  21. Display the Azimuth from a clicked point to the current mouse position&lt;br /&gt;
      in the readout.&lt;br /&gt;
      nM&amp;gt; plot world.prm READOUT=&amp;quot;+azimuth&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  22. Reverse the current colormap on the apenny.prm plotted file&lt;br /&gt;
      invoke ,, reg.plotid.layers.apenny.reverseColorMap()&lt;br /&gt;
&lt;br /&gt;
  23. Reverse a colormap when initially plotting&lt;br /&gt;
      nM&amp;gt; plot apenny.prm /reverseColors&lt;br /&gt;
&lt;br /&gt;
  24. Reverse the colormap on a single layer only when initially plotting&lt;br /&gt;
      nM&amp;gt; plot world.shp{LAYER={ReverseColormap=&amp;quot;TRUE&amp;quot;}}|cities.prm&lt;br /&gt;
&lt;br /&gt;
  25. Plot type 1000 file without connecting lines by setting the Layer's line&lt;br /&gt;
      type to &amp;quot;Symbol&amp;quot; and to make the points &amp;quot;Diamond&amp;quot; symbols.&lt;br /&gt;
      nM&amp;gt; plot fftdemo.prm{LAYER={Type=&amp;quot;Symbol&amp;quot;,Symbol=&amp;quot;Diamond&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
  26. Set the Max Range of Z (Data) values to be within 50 units of the&lt;br /&gt;
      file data max value:&lt;br /&gt;
      nM&amp;gt; plot apenny scale=MAXZRANGE maxrange=50&lt;br /&gt;
&lt;br /&gt;
  27. Invert the colormap (creating a photo negative effect)&lt;br /&gt;
      nM&amp;gt; plot/id=plotid apenny.prm{LAYER={InvertColormap=&amp;quot;TRUE&amp;quot;}} /bg&lt;br /&gt;
      or using invoke after plot is already running:&lt;br /&gt;
      nM&amp;gt; invoke ,, reg.plotid.layers.apenny.invertColorMap()&lt;br /&gt;
&lt;br /&gt;
  28. Set the mouse cursor appearance to be the wait cursor.&lt;br /&gt;
      nM&amp;gt; set reg.plot.cursor &amp;quot;WAIT&amp;quot;&lt;br /&gt;
      ... do something or wait for something ...&lt;br /&gt;
      nM&amp;gt; set reg.plot.cursor &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  29. Zoom in to a portion of the plot when the plot is opened.&lt;br /&gt;
      nM&amp;gt; plot apenny.prm ZOOMTO={x1=50,x2=100,y1=0,y2=100}&lt;br /&gt;
&lt;br /&gt;
  30. Plot a type 2000 file with multiple lines in &amp;quot;line&amp;quot; mode&lt;br /&gt;
      and use the /LPS switch to tell NeXtMidas to compute the&lt;br /&gt;
      data buffer size of the file.&lt;br /&gt;
      nM&amp;gt; plot alaska.prm type=line /lps=-1&lt;br /&gt;
&lt;br /&gt;
  31. Create a plot with a LayerGeo and set the reference time for the&lt;br /&gt;
      StateVectors in the LayerGeo plot from within a macro:&lt;br /&gt;
       startmacro&lt;br /&gt;
       ...&lt;br /&gt;
       timex now sod=mySOD&lt;br /&gt;
       plot/id=plot1 world&lt;br /&gt;
       layer geoLayer {NAME=GL,SVA=sv1.prm,SVB=sv2.prm,...} plot1&lt;br /&gt;
       set geoLayer.timeCode mySOD&lt;br /&gt;
       ...&lt;br /&gt;
       endmacro&lt;br /&gt;
&lt;br /&gt;
   32. Create a plot with a LayerGeo and set the timecode (J1950) for the&lt;br /&gt;
       StateVectors in the LayerGeo plot from within a macro:&lt;br /&gt;
       startmacro&lt;br /&gt;
       ...&lt;br /&gt;
       timex now sod=mySOD&lt;br /&gt;
       calc myEpoch now 300 -   ! 5 minutes ago&lt;br /&gt;
       plot/id=plot1 world&lt;br /&gt;
       layer geoLayer {NAME=GL,SVA=sv1.prm,SVB=sv2.prm,...} plot1&lt;br /&gt;
       set geoLayer.timeCode myEpoch&lt;br /&gt;
       ...&lt;br /&gt;
       endmacro&lt;br /&gt;
&lt;br /&gt;
   33. Create a plot that updates a RESULT named &amp;quot;cfreq&amp;quot; with the Y value of&lt;br /&gt;
       the current mouse position whenever the mouse is clicked:&lt;br /&gt;
         nM&amp;gt; plot/xcnt=click/mtag={y=&amp;quot;cfeq&amp;quot;} nxm.sys.dat.sinewave&lt;br /&gt;
&lt;br /&gt;
   34. Save/export contents of the PLOT to an image file.&lt;br /&gt;
       nM&amp;gt; plot/bg/id=plotid world&lt;br /&gt;
       nM&amp;gt; message FUNC=SEND ID=PLOTID NAME=EXPORTIMAGE DATA=myplotimage.png&lt;br /&gt;
&lt;br /&gt;
   35. Change the default units labels on the X axis to custom text:&lt;br /&gt;
       nM&amp;gt; plot/bg/id=plot1 sinewave&lt;br /&gt;
       nM&amp;gt; set reg.plot1.XAxisLabel &amp;quot;Puppies&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   36. Change the custom label on the X axis back to default text:&lt;br /&gt;
       nM&amp;gt; set reg.plot1.XAxisLabel &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   37. Open a new file and pass in the /ALL argument in order to show all the&lt;br /&gt;
       data in the plot area. (Since NeXtMidas 3.3.1)&lt;br /&gt;
       nM&amp;gt; message send plot1 name=&amp;quot;OPENFILE&amp;quot; info=-1 &amp;amp;&lt;br /&gt;
           data=myfile quals={&amp;quot;/ALL=true&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
   38. Hiding/showing a layer:&lt;br /&gt;
       nM&amp;gt; plot/bg/id=plotid world.prm|cities.prm&lt;br /&gt;
       nM&amp;gt; set reg.plotid.layers.cities.enable -GLOBAL ! hide cities layer&lt;br /&gt;
       nM&amp;gt; set reg.plotid.layers.cities.enable +GLOBAL ! show cities layer&lt;br /&gt;
       nM&amp;gt; set reg.plotid.layers.cities.enable ~GLOBAL ! toogle layer visibility&lt;br /&gt;
       nM&amp;gt; invoke ,, reg.plotid.layers.cities.toggle   ! toggle layer visibility&lt;br /&gt;
&lt;br /&gt;
  Using dRange and Azimuth Readout Options (LatLon and Mercator Views Only)&lt;br /&gt;
  ========================================================&lt;br /&gt;
    The dRange and Azimuth readout options give the user the distance and&lt;br /&gt;
    direction between a mouse click location and the current mouse pointer.&lt;br /&gt;
    The default readout includes dRange but Azimuth must be enabled by the&lt;br /&gt;
    user. The units of measurement for the dRange is meters by default but&lt;br /&gt;
    can be set to kilometers or nautical miles.&lt;br /&gt;
&lt;br /&gt;
  Holding Graphical Refreshes on Features and Layers&lt;br /&gt;
  ========================================================&lt;br /&gt;
    In NeXtMidas 2.7.2, enhancements were made to allow users to suspend&lt;br /&gt;
    graphical refreshes on entire plots or just the Features on the plots. This&lt;br /&gt;
    was expanded in 2.7.4 to allow users to hold refreshes on just the Layers&lt;br /&gt;
    while still allowing Feature refreshes to continue.&lt;br /&gt;
&lt;br /&gt;
    The typical use of holding refreshes is when a user is processing a large&lt;br /&gt;
    amount of updates in a short amount of time and does not want or need to&lt;br /&gt;
    draw each update.&lt;br /&gt;
&lt;br /&gt;
    For detailed example see $NMROOT/nxm/sys/test/test_plot_hold_refreshes.mm&lt;br /&gt;
&lt;br /&gt;
    NOTE: In order to avoid unnecessary refreshes, when re-allowing refreshes&lt;br /&gt;
    on Layers, NeXtMidas does NOT automatically refresh the plot. It is up to&lt;br /&gt;
    the user to do this (if needed).&lt;br /&gt;
&lt;br /&gt;
  ZOOMing and Adjusting the Viewable Area of a Plot&lt;br /&gt;
  ========================================================&lt;br /&gt;
    Plot keeps track of and applies user bounds changes as they occur.&lt;br /&gt;
    This allows the user to set ZOOM boundaries (as well as standard x1=, x2=,&lt;br /&gt;
    y1=, etc boundaries) before actually having data. The QUALS field of some&lt;br /&gt;
    MESSAGEs was expanded to allow for passing in outer limits or viewport&lt;br /&gt;
    limits (current view) using the syntax QUALS={OUTERLIMITS={X1=,X2=,Y1=,&lt;br /&gt;
    Y2=,Z1=,Z2=},VIEWLIMITS={X1=,X2=,Y1=, Y2=,Z1=,Z2=}}. See the example in&lt;br /&gt;
    the example section. Since 3.1.0, users can substitute XMIN, XMAX, YMIN,&lt;br /&gt;
    YMAX, ZMIN, and ZMAX for X1, X2, Y1, Y2, Z1, and Z2, respectively.&lt;br /&gt;
&lt;br /&gt;
    In NeXtMidas 2.9.1, the ZOOMTO= keyword only parameter was added to allow&lt;br /&gt;
    users to zoom in on a plot when they initially open it.&lt;br /&gt;
&lt;br /&gt;
    ZOOMIN:&lt;br /&gt;
      ZOOMIN allows a user to quickly zoom in on a plot without the need for&lt;br /&gt;
      dragging a box or sending a message. To ZOOMIN using the keyboard, simply&lt;br /&gt;
      press the '+' key (there is no need to hold down SHIFT). This will zoom&lt;br /&gt;
      in the current view by the default (currently 50%). If /dblclickzoom is&lt;br /&gt;
      enabled, double-clicking with the left mouse button will re-center the&lt;br /&gt;
      plot on the location of the double-click and then execute a ZOOMIN.&lt;br /&gt;
      Finally, rotating the mouse scroll wheel forward will execute one ZOOMIN&lt;br /&gt;
      per notch.&lt;br /&gt;
&lt;br /&gt;
    ZOOMOUT:&lt;br /&gt;
      ZOOMOUT allows a user to quickly zoom out on a plot without the need for&lt;br /&gt;
      dragging a box or sending a message. To ZOOMOUT using the keyboard, simply&lt;br /&gt;
      press the '-' key. This will zoom out the current view by the default&lt;br /&gt;
      (currently 50%). If /dblclickzoom is enabled, double-clicking with the&lt;br /&gt;
      right mouse button will re-center the plot on the location of the&lt;br /&gt;
      double-click and then execute a ZOOMOUT. Finally, rotating the mouse&lt;br /&gt;
      scroll wheel backward will execute one ZOOMOUT per notch.&lt;br /&gt;
&lt;br /&gt;
    PAMNXY:&lt;br /&gt;
      PANXY allows a user to quickly shift the viewable area of a plot. To&lt;br /&gt;
      PANXY, simply press the arrow (left, right, up, down) key of the direction&lt;br /&gt;
      you wish to shift. This will move the viewable area by the default pan&lt;br /&gt;
      view adjustment (currently 10%).&lt;br /&gt;
&lt;br /&gt;
      Pressing HOME (left), END (right), PAGE UP, or PAGE DOWN&lt;br /&gt;
      will adjust the view by a greater percentage (currently 50%).&lt;br /&gt;
&lt;br /&gt;
      You can also click and drag the small scrollbar that appears when zoomed&lt;br /&gt;
      in or press and hold the Middle Mouse Button and drag the mouse to pan.&lt;br /&gt;
&lt;br /&gt;
    NOTE 1: Keyboard shortcut keys can be remapped using the environment&lt;br /&gt;
            variable KEYMAP={PLOT={&amp;lt;TABLE&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
    NOTE 2: Double-Click ZOOMIN/ZOOMOUT can be enabled/disabled with the switch&lt;br /&gt;
            /DBLCLICKZOOM=TRUE,FALSE.&lt;br /&gt;
&lt;br /&gt;
    NOTE 3: Mouse scroll wheel ZOOMIN/ZOOMOUT can be disabled with the switch&lt;br /&gt;
            /MOUSEWHEELZOOM=FALSE, which is the current default.&lt;br /&gt;
&lt;br /&gt;
    NOTE 4: ZOOMIN/ZOOMOUT from the keyboard, message, or mouse does not use&lt;br /&gt;
            the stored image ZOOMs (history), therefore the normal limitation&lt;br /&gt;
            of fifteen ZOOM levels does not apply. Thus, ZOOMOUTs will&lt;br /&gt;
            execute a redraw.&lt;br /&gt;
&lt;br /&gt;
    NOTE 5: In addition to the keyboard/mouse shortcuts, ZOOMIN/ZOOMOUT/&lt;br /&gt;
            PANXY can be accomplished using messages, which allows the user&lt;br /&gt;
            to use a different percentage for the action. See messages above for&lt;br /&gt;
            details.&lt;br /&gt;
&lt;br /&gt;
  Plotting KML files&lt;br /&gt;
  ========================&lt;br /&gt;
    In NeXtMidas, KML files are plotted like other files. However, since the&lt;br /&gt;
    representation (Mark-up) of the data is handled in the KML file itself via&lt;br /&gt;
    element tags and attributes, there are no input arguments for items such as&lt;br /&gt;
    colors, fonts, etc.&lt;br /&gt;
&lt;br /&gt;
    NeXtMidas recognizes the .kml extension on the file and parses it using its&lt;br /&gt;
    KML parser, which uses the Java SAX XML parser. Mal-formed files will throw&lt;br /&gt;
    exceptions as in XML.&lt;br /&gt;
&lt;br /&gt;
    **NOTE**: In the JAVA SAX parser, ending element tag names are case&lt;br /&gt;
              sensitive relative to the starting element tag. For example:&lt;br /&gt;
&lt;br /&gt;
             &amp;lt;folder&amp;gt; ... &amp;lt;/folder&amp;gt;   CORRECT&lt;br /&gt;
             &amp;lt;FOLDER&amp;gt; ... &amp;lt;/FOLDER&amp;gt;   CORRECT&lt;br /&gt;
             &amp;lt;Folder&amp;gt; ... &amp;lt;/Folder&amp;gt;   CORRECT&lt;br /&gt;
             &amp;lt;folder&amp;gt; ... &amp;lt;/Folder&amp;gt;  - WRONG -&lt;br /&gt;
&lt;br /&gt;
    The following plots the drawable objects in a KML file on a globe:&lt;br /&gt;
&lt;br /&gt;
      nM&amp;gt; plot world.shp|nxm.sys.test.kmlSamples.kml view=geo&lt;br /&gt;
&lt;br /&gt;
      Note: The above example file requires an Internet connection to properly&lt;br /&gt;
            display the Ground Overlay and Image Icons.&lt;br /&gt;
&lt;br /&gt;
    NeXtMidas allows the user to configure several items not specified in the&lt;br /&gt;
    KML specification:&lt;br /&gt;
      ALLOWPOPUPS     - Boolean - Whether or not to show popups for KML points&lt;br /&gt;
      COLORBLENDRATIO - float   - Ratio (0 to 1.0) to blend (tint) an image icon&lt;br /&gt;
      FORCEREFRESH    - boolean - Ignore the modified date on a linked file.&lt;br /&gt;
                                  (see details below).&lt;br /&gt;
      ICONSIZE        - int     - Max allowable size of (non-zoomed) Image Icons&lt;br /&gt;
      ICONZOOMSIZE    - int     - Max allowable size of (zoomed) Image Icons&lt;br /&gt;
      LABELPOS        - String  - Where to position the labels for points.&lt;br /&gt;
                                  Allowable settings:&lt;br /&gt;
                                    TOP     - Centered above the icon&lt;br /&gt;
                                    TOPR    - Text begins near the top right&lt;br /&gt;
                                    BOTTOM  - Centered below the icon&lt;br /&gt;
                                    BOTTOMR - Text begins near bottom right&lt;br /&gt;
                                    RIGHT   - Text begins to the right of icon&lt;br /&gt;
      SHOWLABEL       - Boolean - Whether or not to display labels for points.&lt;br /&gt;
&lt;br /&gt;
      Without FORCEREFRESH being set to TRUE, LayerKML will ignore (not plot)&lt;br /&gt;
      any network linked file that has already been plotted if it has not been&lt;br /&gt;
      modified, regardless of the specified refresh interval. This is done to&lt;br /&gt;
      avoid &amp;quot;blinking&amp;quot; displays from the refresh and to conserve cpu. The flag&lt;br /&gt;
      FORCEREFRESH is intended to be used when the network linked file is a cgi-&lt;br /&gt;
      script and can generate new data without the script itself changing.&lt;br /&gt;
&lt;br /&gt;
    For more information, see the JavaDocs for LayerKML.java and the Google&lt;br /&gt;
    online reference (for KML structure).&lt;br /&gt;
&lt;br /&gt;
  Plotting type 3000 files&lt;br /&gt;
  ========================&lt;br /&gt;
    A non-homogeneous file is plotted X vs. Y where the axis is specified by:&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; plot file3000{Layer={LAYERTYPE=XY,X=LAT,Y=LON}}&lt;br /&gt;
    or&lt;br /&gt;
       nM&amp;gt; plot file3000{Layer={LT=XY,X=LAT,Y=LON}}&lt;br /&gt;
&lt;br /&gt;
    where LT or LAYERTYPE represents the Layer Type.  The layer type may be  a&lt;br /&gt;
    full package name (i.e. nxm.sys.libg.Layer1D) or the layer suffix (i.e. 1D,&lt;br /&gt;
    2D, XY,...) if the layer named Layer[suffix] and is located in nxm.sys.libg.&lt;br /&gt;
&lt;br /&gt;
    Type 3000 files that store multiple columns of data can be plotted using&lt;br /&gt;
    LayerMulti:&lt;br /&gt;
      nM&amp;gt; plot testxy3000.prm{Layer={LT=&amp;quot;Multi&amp;quot;,COLUMNS=&amp;quot;*&amp;quot;}}&lt;br /&gt;
    or&lt;br /&gt;
      nM&amp;gt; plot testxy3000.prm{Layer={LT=&amp;quot;Multi&amp;quot;,COLUMNS=&amp;quot;ORD|ORD2|ORD3&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
  Plotting type 5000 files&lt;br /&gt;
  ========================&lt;br /&gt;
    To plot a cone flag file clipped at a plane vertical to the point (the POS&lt;br /&gt;
    field in the file) on  the Earth's surface (this is what X-Midas does)&lt;br /&gt;
      nM&amp;gt; plot world.prm|coneflags5000.prm{layer={flags=CONEFLAGVERT}}&lt;br /&gt;
&lt;br /&gt;
    To plot a cone flag file along the Earth's surface, extending to the horizon&lt;br /&gt;
      nM&amp;gt; plot world.prm|coneflags5000.prm&lt;br /&gt;
&lt;br /&gt;
  Plotting type 6000 files&lt;br /&gt;
  ========================&lt;br /&gt;
    These types of files are also non-homogeneous and can be treated almost&lt;br /&gt;
    exactly like a type 3000.  In fact, type 6000 files are merely extensions of&lt;br /&gt;
    type 3000 files that allow longer record names and more than 26 subrecords.&lt;br /&gt;
&lt;br /&gt;
    For example, a Type 6000 file with columns &amp;quot;LON&amp;quot; and &amp;quot;LAT&amp;quot; can be plotted&lt;br /&gt;
    using the following syntax:&lt;br /&gt;
&lt;br /&gt;
      nM&amp;gt; plot testfile6000.prm{LAYER={LT=&amp;quot;Scatter&amp;quot;,X=&amp;quot;LON&amp;quot;,Y=&amp;quot;LAT&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Plotting SHAPE (.shp) files&lt;br /&gt;
  ===========================&lt;br /&gt;
    To plot a SHAPE file:&lt;br /&gt;
      nM&amp;gt; plot world.shp&lt;br /&gt;
&lt;br /&gt;
    If the SHAPE file has a companion file (.dbf) which contains the country&lt;br /&gt;
    name (here indicated by NAME), the following allows the country name to be&lt;br /&gt;
    displayed  in the readout.&lt;br /&gt;
      nM&amp;gt; plot world.shp{LAYER={LABEL=NAME}}&lt;br /&gt;
&lt;br /&gt;
    The layer used by shape files (see nxm.sys.libg.LayerShape) can use one of&lt;br /&gt;
    the following algorithms to determine how to color the shapes in the file:&lt;br /&gt;
      Default - Uses the default algorithm (currently MinAdj, but may change&lt;br /&gt;
                between releases).&lt;br /&gt;
      Mono    - Monochrome, all shapes have the same color. This was the default&lt;br /&gt;
                in NeXtMidas 2.0.0 and earlier when a single COLOR was given.&lt;br /&gt;
                NOTE: The Monochrome color will be the first color listed in&lt;br /&gt;
                the colormap. To change the mono color, change the first color&lt;br /&gt;
                in the colormap.&lt;br /&gt;
      Mod5    - The index of the color (in the color map) to use for a shape is&lt;br /&gt;
                equal to the shape's index MOD 5. This was the default in&lt;br /&gt;
                NeXtMidas 2.0.0 and earlier. (The color map must have 5 or more&lt;br /&gt;
                colors in it for this to work.)&lt;br /&gt;
      ModN    - Same as Mod5 but uses all available colors in the color map.&lt;br /&gt;
      MinAdj  - Minimizes the number of adjacent shapes that have the same color&lt;br /&gt;
                (works best with five or more colors in the color map). This&lt;br /&gt;
                algorithm considers two shapes to be adjacent if they share&lt;br /&gt;
                a common point. (Note: This is the slowest option, but has the&lt;br /&gt;
                best results, by far.) If the file is an ARC or POINT file then&lt;br /&gt;
                this defaults to using the ModN algorithm to improve speed.&lt;br /&gt;
      OnSelect- Colors the selected shape in one color while other items use&lt;br /&gt;
                a default color. When the world.shp file is used this enables&lt;br /&gt;
                the user to highlight an individual country. By invoking the&lt;br /&gt;
                setSelectedValue(&amp;lt;tag&amp;gt;,&amp;lt;value&amp;gt;,&amp;lt;ignoreCase&amp;gt;) method in&lt;br /&gt;
                LayerShape. For example:&lt;br /&gt;
                nM&amp;gt; invoke,,reg.plot.layers.world.setSelectedValue(CODE,US,TRUE)&lt;br /&gt;
&lt;br /&gt;
      nM&amp;gt; plot world.shp{LAYER={LABEL=NAME,ColoringMode=Mod5}}&lt;br /&gt;
      nM&amp;gt; plot world.shp{LAYER={LABEL=NAME,ColoringMode=MinAdj}}&lt;br /&gt;
&lt;br /&gt;
  Plotting NGA images (requires MAP option tree)&lt;br /&gt;
  ==============================================&lt;br /&gt;
  To plot NGA data:&lt;br /&gt;
    1) Generate the list of table-of-contents files in the NGA directory&lt;br /&gt;
       structure Assuming the directory /midas/mapdata/ contains NGA directories&lt;br /&gt;
       (such as CIB10_129, GNC_126, JNC_127, ...)&lt;br /&gt;
         nM&amp;gt;mapper MTOC /midas/mapdata/master_toc.tmp /midas/mapdata&lt;br /&gt;
&lt;br /&gt;
    2) Create a table file (.tbl) with FILE= references for all desired layers&lt;br /&gt;
       in addition to /midas/mapdata/master_toc.tmp.&lt;br /&gt;
       For example (master_toc_maps.tbl):&lt;br /&gt;
         FILE=nxm.map.dat.world.shp{LAYER={LABEL=NAME},TAG=CONTINENTS}&lt;br /&gt;
         FILE=/midas/mapdata/master_toc.tmp&lt;br /&gt;
&lt;br /&gt;
    3) Run the plot command with the table file as the SETUP= input.&lt;br /&gt;
       nM&amp;gt;plot setup=/midas/mapdata/master_toc_maps.tbl&lt;br /&gt;
       Zoom into area of map with imagery to see them.&lt;br /&gt;
&lt;br /&gt;
    Steps 1 and 2 only have to be performed once (unless the NGA directories are&lt;br /&gt;
    changed, of course)&lt;br /&gt;
&lt;br /&gt;
  If the NGA data is on a remote system the NeXtMidas Map Server can be used to&lt;br /&gt;
  serve the images up for remote plotting with LayerNMS (see EXPLAIN MAPSERVER).&lt;br /&gt;
&lt;br /&gt;
  Plotting Maps from a Map Server (WMS/NMS)&lt;br /&gt;
  ================================================&lt;br /&gt;
    o Plot images from an OpenGIS Web Map Server (WMS):&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;WMS&amp;quot;,URL=&amp;quot;http://&amp;lt;server&amp;gt;&amp;quot;}|world.prm view=LatLon&lt;br /&gt;
&lt;br /&gt;
      Since 3.3.2, the URL String can contain a comma-separated list of multiple&lt;br /&gt;
      URLs. NeXtMidas will attempt to connect to the first URL in the list, and&lt;br /&gt;
      if that is not reachable, then it will attempt to connect to the second&lt;br /&gt;
      URL in the list, etc.&lt;br /&gt;
&lt;br /&gt;
      Since 3.3.3, the automatic connection to the Map Server while setting the&lt;br /&gt;
      URL can be disabled using (NOTE: AutoConnect= must be before URL=):&lt;br /&gt;
        nM&amp;gt; set url &amp;quot;http://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/...&amp;quot;&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;WMS&amp;quot;,AutoConnect=false,URL=&amp;quot;^url&amp;quot;}|world.prm view=LatLon&lt;br /&gt;
      later, the connection can be established using:&lt;br /&gt;
        nM&amp;gt; res reg.plot.layers.wms.connect()&lt;br /&gt;
&lt;br /&gt;
      By default, no WMS layers are turned on. The WMS layers can be graphically&lt;br /&gt;
      enabled using the WMS config panel. In the plot MMB-&amp;gt;LAYERS-&amp;gt;WMS to get&lt;br /&gt;
      the config window. Layers can be specified on the command line by name&lt;br /&gt;
      separated by commas (where the highest priority is at the end of list):&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;WMS&amp;quot;,URL=mapURL,Layers=&amp;quot;shapePolitical,Relief,cadrg&amp;quot;}|...&lt;br /&gt;
&lt;br /&gt;
      To override the default network connection/open and read timeouts when&lt;br /&gt;
      communicating with the Map Server to 30 and 99 seconds, respectively.&lt;br /&gt;
      NOTE: the ConnectTimeout and ReadTimeout MUST come before the URL setting:&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;WMS&amp;quot;,ConnectTimeout=30,ReadTimeout=99,URL=mapURL,...}|...&lt;br /&gt;
&lt;br /&gt;
      To enable use of tiles with three download threads in the background:&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;WMS&amp;quot;,URL=mapURL,UseTiles=true,DownloadThreads=3,...}|...&lt;br /&gt;
&lt;br /&gt;
      Once the layer is configured, the configuration can be dumped to a table&lt;br /&gt;
      using:&lt;br /&gt;
        nM&amp;gt; res reg.plot.layers.wms.config&lt;br /&gt;
&lt;br /&gt;
      Note that layer names and URLs are CASE SENSITIVE, so always use quotes!&lt;br /&gt;
&lt;br /&gt;
    o Plot images from the NeXtMidas Map Server (NMS):&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;NMS&amp;quot;,URL=&amp;quot;http://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/nms/&amp;quot;} view=LatLon&lt;br /&gt;
&lt;br /&gt;
      Plot images from the mapserver with the BLUEMARBLE background:&lt;br /&gt;
        nM&amp;gt; plot {LT=&amp;quot;NMS&amp;quot;,URL=&amp;quot;http://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/nms/&amp;quot;,&amp;amp;&lt;br /&gt;
             BACKGROUND=&amp;quot;BLUEMARBLE&amp;quot;}|world.shp{LAYER={LABEL=&amp;quot;NAME&amp;quot;,OPAQ=0}} &amp;amp;&lt;br /&gt;
             view=LatLon&lt;br /&gt;
&lt;br /&gt;
  Plotting Files Using LayerGeo&lt;br /&gt;
  =============================&lt;br /&gt;
    o NeXtMidas has a custom layer for plotting certain geo data. This class&lt;br /&gt;
      is intended for use through the macro language.&lt;br /&gt;
&lt;br /&gt;
    o When bypassing the macro language (i.e. calling directly from Java),&lt;br /&gt;
      users should call the setRef(Object ref) method to set their Midas&lt;br /&gt;
      reference, otherwise some files (such as those in RAM, may not be found).&lt;br /&gt;
&lt;br /&gt;
    o LayerGeo uses two StateVectors (usually type 500 files) to compute&lt;br /&gt;
      FDOA,TDOA, etc. These two files typically reference their data elements&lt;br /&gt;
      through a time reference (offset from start). Since NeXtMidas 3.1.1,&lt;br /&gt;
      when setting the desired time for the StateVectors, users can call either&lt;br /&gt;
      LayerGeo.setTime(double) to pass in the reference time, or call&lt;br /&gt;
      LayerGeo.setTimeCode(double) and pass in a J1950 time, which is&lt;br /&gt;
      then converted to the appropriate reference time for the StateVectors.&lt;br /&gt;
&lt;br /&gt;
    o When setting the reference time in LayerGeo.setTime(double), if the given&lt;br /&gt;
      value is a double greater than 86400*100 (100 days), NeXtMidas assumes&lt;br /&gt;
      the user meant to call setTimeCode(double), so the given value is&lt;br /&gt;
      passed through to that method.&lt;br /&gt;
&lt;br /&gt;
  Plotting IMAGE Files (and TBL Files)&lt;br /&gt;
  ====================================&lt;br /&gt;
    To plot the PNG file in the SYS/DAT area:&lt;br /&gt;
      nM&amp;gt; plot network.png&lt;br /&gt;
&lt;br /&gt;
    To plot a JPEG so it lines up with other data (this example is one of the&lt;br /&gt;
    NASA Blue Marble pictures of the world:&lt;br /&gt;
      nM&amp;gt; plot world_200409_3x5400x2700.jpg{LAYER={XSTART=-180,YSTART=90,&amp;amp;&lt;br /&gt;
                                            XDELTA=360/5400,YDELTA=-180/2700}}&amp;amp;&lt;br /&gt;
               |world.shp{LAYER={LABEL=NAME,OPAQ=0}} view=LatLon&lt;br /&gt;
&lt;br /&gt;
      Here XSTART and YSTART are the real-world-coordinates of there the upper&lt;br /&gt;
      left pixel is located. The XDELTA and YDELTA are the extents divided&lt;br /&gt;
      by number of pixels (i.e. deg/pixels). Most of the time YDELTA will need&lt;br /&gt;
      to be negative to account for images being measured top-to-bottom rather&lt;br /&gt;
      than bottom-to-top.&lt;br /&gt;
&lt;br /&gt;
   Alternatively this information could all be put into a tbl file...&lt;br /&gt;
      bluemarble.tbl&lt;br /&gt;
        : COMMENT=&amp;quot;My comment&amp;quot;&lt;br /&gt;
        : FILENAME=&amp;quot;nxm.map.dat.bluemarble.jpg&amp;quot;&lt;br /&gt;
        : XSTART=-180.0&lt;br /&gt;
        : YSTART=90.0&lt;br /&gt;
        : XDELTA=360.0/5400.0&lt;br /&gt;
        : YDELTA=-180.0/2700.0&lt;br /&gt;
   and then plotted quickly using:&lt;br /&gt;
     nM&amp;gt; plot bluemarble.tbl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Plotting CSV Files&lt;br /&gt;
  ==================&lt;br /&gt;
    CSV files can be plotted as &amp;quot;X vs Y&amp;quot; or &amp;quot;Multi&amp;quot; files depending on their&lt;br /&gt;
    data. (Note that the name of the columns to be plotted must be prefixed with&lt;br /&gt;
    a numeric type specifier.) Read &amp;quot;Plotting type 3000 files&amp;quot; for details on&lt;br /&gt;
    these layer types.&lt;br /&gt;
&lt;br /&gt;
    LayerMulti (default):&lt;br /&gt;
      nM&amp;gt; plot myfile.csv{HEADERROWS=1,COLUMNNAMES=SF:A|SF:B,&amp;amp;&lt;br /&gt;
                          LAYER={COLUMNS=A},TAG=A}&lt;br /&gt;
&lt;br /&gt;
    LayerXY:&lt;br /&gt;
      nM&amp;gt; set quals {HEADERROWS=L:1,COLUMNNAMES=&amp;quot;NAME|CODE|F:LAT|F:LON&amp;quot;,&amp;amp;&lt;br /&gt;
               LAYER={LT=&amp;quot;XY&amp;quot;,X=&amp;quot;LON&amp;quot;,Y=&amp;quot;LAT&amp;quot;,LINE={COLOR=&amp;quot;red&amp;quot;,TYPE=&amp;quot;symbol&amp;quot;}}}&lt;br /&gt;
      nM&amp;gt; plot world|nxm.sys.dat.airports.csv^{quals}&lt;br /&gt;
&lt;br /&gt;
    In NeXtMidas 3.1.1, a new Layer (LayerScatter) was added to provide more&lt;br /&gt;
    support for plottinig CSV (and other) files. LayerScatter may replace&lt;br /&gt;
    LayerXY in future releases.&lt;br /&gt;
&lt;br /&gt;
    LayerScatter:&lt;br /&gt;
      nM&amp;gt; set quals {HEADERROWS=L:1,COLUMNNAMES=&amp;quot;NAME|CODE|F:LAT|F:LON&amp;quot;,&amp;amp;&lt;br /&gt;
         LAYER={LT=&amp;quot;Scatter&amp;quot;,X=&amp;quot;LON&amp;quot;,Y=&amp;quot;LAT&amp;quot;,LINE={COLOR=&amp;quot;red&amp;quot;,TYPE=&amp;quot;symbol&amp;quot;}}}&lt;br /&gt;
      nM&amp;gt; plot world|nxm.sys.dat.airports.csv^{quals}&lt;br /&gt;
&lt;br /&gt;
Formatting:&lt;br /&gt;
  In NeXtMidas 3.3.3, the /DATEFORMAT switch supports a wide variety of&lt;br /&gt;
  time/date formats made available via the MFormat class. Acceptable formats can&lt;br /&gt;
  be either a standard Midas format (&amp;quot;STD&amp;quot;, &amp;quot;ACQ&amp;quot;, &amp;quot;EPOCH&amp;quot;, &amp;quot;NORAD&amp;quot;, &amp;quot;VAX&amp;quot;,&lt;br /&gt;
  &amp;quot;TCR&amp;quot;, &amp;quot;HMS&amp;quot;, &amp;quot;YMD&amp;quot;, &amp;quot;ISO8601&amp;quot;, etc.) or they can be any of the patterns&lt;br /&gt;
  accepted by the java.text.SimpleDateFormat class.&lt;br /&gt;
&lt;br /&gt;
  For details, please see nxm.sys.lib.MFormat, nxm.sys.lib.Time.formatList and&lt;br /&gt;
  java.text.SimpleDateFormat.&lt;br /&gt;
&lt;br /&gt;
DRAG and DROP:&lt;br /&gt;
  PLOT supports Drop in the following way (DRAG is not supported):&lt;br /&gt;
&lt;br /&gt;
  Since actions to take for DROP-ed objects are application-dependant,&lt;br /&gt;
  objects DROP-ed onto a PLOT are sent to the Message Handler (then typically&lt;br /&gt;
  sent to a Macro application) for handling.&lt;br /&gt;
&lt;br /&gt;
  For example usage, see the macro $NMROOT/nxm/sys/test/test_plot_drag_drop.mm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ALL        - Plots ALL data in the file. Note: this also sets the Backing&lt;br /&gt;
                Store option, so the following two lines are equivalent:&lt;br /&gt;
                   nM&amp;gt; plot myfile.prm /all&lt;br /&gt;
                   nM&amp;gt; plot myfile.prm options=&amp;quot;+ALL|BS&amp;quot;&lt;br /&gt;
  /AXISBUFFER= - Set the size of the buffer area drawn around the plot axis.&lt;br /&gt;
                This buffer area ensures that values that fall exactly on the&lt;br /&gt;
                axis are displayed. Set to 0.0 to disable. Set to a negative&lt;br /&gt;
                number to reduce values display area. [DEF=1e-12]. (Since 3.1.0)&lt;br /&gt;
  /AXISINDEX  - Sets Axis START=0 and DELTA=1 (Identical to /INDEX) [DEF=FALSE]&lt;br /&gt;
  /CMAP=      - (Layer2D only) Use predefined Color map. e.g: GrayScale,Ramp,&lt;br /&gt;
                XRamp,Wheel,Terrain,Multi,T5Layer,Grid,Spectrum,XDatalist.&lt;br /&gt;
                This overrides the [CMAP] parameter.&lt;br /&gt;
  /COLORS=    - (Layer2D only) Custom list of colors to use. This overrides the&lt;br /&gt;
                [CMAP] parameter and /CMAP switch.&lt;br /&gt;
  /DATEFORMAT= - Output format used to display time. See the above section&lt;br /&gt;
                titled &amp;quot;Formatting&amp;quot; for details of valid inputs. In addition,&lt;br /&gt;
                use AUTO to allow the plot to determine the appropriate format&lt;br /&gt;
                where time spanning over a day will display STD, otherwise, HMS&lt;br /&gt;
                format will be displayed.                (Since NeXtMidas 3.3.3)&lt;br /&gt;
  /DB         - Display in dB (same as CM=10LOG)&lt;br /&gt;
  /DB2        - Display in dB (same as CM=20LOG)&lt;br /&gt;
  /DBLCLICKZOOM - Enable zooming in/out through the use of double-clicking the&lt;br /&gt;
                mouse.                                   (Since NeXtMidas 2.7.2)&lt;br /&gt;
  /DRAGDROP   - Enable or disable Drag and Drop.         (Since NeXtMidas 3.3.0)&lt;br /&gt;
  /EXIT=      - Mask value with flags to exit: RETURN, MENU, MESSAGE, WINDOW&lt;br /&gt;
                or ALL [DEF=NONE in pipe mode, else ALL]&lt;br /&gt;
  /FOCUS      - Try to get focus if true. (DEF=TRUE from shell,FALSE from macro)&lt;br /&gt;
  /INDEX      - Set Axis START=0 &amp;amp; DELTA=1 (Identical to /AXISINDEX) [DEF=FALSE]&lt;br /&gt;
  /REVERSECOLORS - Reverse the colormap used by the layers of the plot&lt;br /&gt;
  /LAYER      - Same as [LAYER] parameter. Overrides [LAYER] if both are present&lt;br /&gt;
  /LEGEND=    - Legend corner (TL/TOPLEFT,TR/TOPRIGHT,BL/BOTTOMLEFT,&lt;br /&gt;
                BR/BOTTOMRIGHT) the /LEGEND switch alone default is TOPLEFT.&lt;br /&gt;
              or&lt;br /&gt;
                Table of settings for the legend. Table keys include:&lt;br /&gt;
                  CORNER - The corner in which to come up&lt;br /&gt;
  /LPB=n      - Type 2000. Lines per buffer (max) used in grabs [DEF=16]&lt;br /&gt;
                For LayerMulti this is Line-segments Per Buffer (this is the&lt;br /&gt;
                same as /LPS= for pipes, but can be less in the case of paging&lt;br /&gt;
                for a large static file).&lt;br /&gt;
  /LPS=n      - Type 1000,2000. Data frames/lines per screen over-ride (normally&lt;br /&gt;
                scales to window height). If using a LPS value less than 16, set&lt;br /&gt;
                /LPB=1. &lt;br /&gt;
                For Type 2000 files plotted with type=line (Layer1D): &lt;br /&gt;
                  You may specify /LPS=-1 to compute the PlotFile's data buffer &lt;br /&gt;
                  size. &lt;br /&gt;
                For Type 2000 files plotted with type=raster (Layer2D):&lt;br /&gt;
                  LPS=0 is the same as not having the switch (LPS based on&lt;br /&gt;
                        screen size) (Since NeXtMidas 3.7.0)&lt;br /&gt;
                  LPS = -1 will default LPS to 128&lt;br /&gt;
                  LPS &amp;gt; 0 sets LPS to the specified value&lt;br /&gt;
                  Note: In paging mode, LPS is set to /LPB (or default LPS of&lt;br /&gt;
                        128 if /LPB is not specified)&lt;br /&gt;
                For LayerMulti this is Line-segments Per Screen, and defaults to&lt;br /&gt;
                  the SIZE of the file/pipe; this should be &amp;gt;= LPB.&lt;br /&gt;
  /MSGID=     - Registry name of command to handle messages (usually MAIN)&lt;br /&gt;
  /MTAG=t     - Used in conjunction with [CNT] or /XCNT=. This is a table of&lt;br /&gt;
                key value pairs where the key is one of &amp;quot;X&amp;quot;,&amp;quot;Y&amp;quot;,&amp;quot;Z&amp;quot;, or &amp;quot;X+Y&amp;quot;&lt;br /&gt;
                and the value is the name of a RESULT to set with the&lt;br /&gt;
                corresponding value of the key, based on mouse actions&lt;br /&gt;
                defined in CNT or /XCNT. Since 3.1.1.&lt;br /&gt;
  /MOUSEWHEELZOOM - Enable zooming in/out through the use of the mouse scroll&lt;br /&gt;
                wheel.                                   (Since NeXtMidas 2.7.2)&lt;br /&gt;
  /NICE=      - 1=retry for layers if don't exist yet&lt;br /&gt;
                2=disconnect from pipes if iconified&lt;br /&gt;
  /NOPUSHPOP  - Disables user Push/Pop for a window (e.g. clicking the 'X' when&lt;br /&gt;
                popped out. Does not affect Push/Pop messages from a macro).&lt;br /&gt;
  /OPENWARN   - Mask value with flags indicating where to WARN when a file can not be&lt;br /&gt;
                opened: NONE, POPUP, or PRINT [DEF=POPUP]&lt;br /&gt;
                (Since NeXtMidas 3.5.2)&lt;br /&gt;
  /PRECISION= - Number of decimal places of precision used for readout display.&lt;br /&gt;
                This has higher precedence than the ExtPrec readout option.&lt;br /&gt;
  /QUICKDRAW  - Type 5000 only. Optimizes drawing of objects in Type 5000 files,&lt;br /&gt;
                but some objects do not get drawn (lines where one of the points&lt;br /&gt;
                is off-screen).                          (Since NeXtMidas 3.1.0)&lt;br /&gt;
  /READOUT=   - Sets the ReadOut mask (e.g. &amp;quot;/READOUT=&amp;quot;+OnAxis|+Units&amp;quot;).&lt;br /&gt;
                NOTE: This will override the [READOUT] parameter.&lt;br /&gt;
  /RT         - use real-time algorithm even on files&lt;br /&gt;
  /SCALEZ=    - Layer2D only. Scale color range option= PLOT,LAYER [DEF=PLOT]&lt;br /&gt;
                  PLOT  - All Layers / Files use the same Z Min and Z Max [DEF]&lt;br /&gt;
                  LAYER - Individual Layers scale their Z Min and Z Max&lt;br /&gt;
  /THEME=     - Use a named Theme (Desktop,Default,WoB,GoB,BoW,Browser,Gear1,&lt;br /&gt;
                Gear2,Gear3,Gear4,Nak)&lt;br /&gt;
  /THEME=tbl  - Creates a custom theme from a table of parameters. See PANEL for&lt;br /&gt;
                complete description. Table keys include:&lt;br /&gt;
                  CBG     - background color&lt;br /&gt;
                  CFG     - foreground color&lt;br /&gt;
                  CWTS    - widget top shadow&lt;br /&gt;
                  CWFH    - widget foreground highlight&lt;br /&gt;
                  CWBG    - widget background color&lt;br /&gt;
                  CWFG    - widget foreground color&lt;br /&gt;
                  CWTITLE - widget title color&lt;br /&gt;
                  CWBS    - widget bottom shadow&lt;br /&gt;
  /TIMEALIGN  - Type 1000 time-based plots only. Align overlapping layers based&lt;br /&gt;
                off the XStart of the base layer.        (Since NeXtMidas 3.1.2)&lt;br /&gt;
  /WIN=       - Specifies the name of WINdow (or panel) in the registry that&lt;br /&gt;
                will host this (see nxm.sys.libg.MWindow). If the window name&lt;br /&gt;
                is not specified, or included in panel config, a new frame is&lt;br /&gt;
                created.&lt;br /&gt;
  /WIN.cmd=   - Similar to /WIN.&lt;br /&gt;
  /WDISP=n    - Set the monitor number for the display [0...n-1]&lt;br /&gt;
  /WFS=         Set the axis labels and axis title font size [DEF=12]&lt;br /&gt;
  /WPOS=      - Set the position of the plot when it opens, use the syntax&lt;br /&gt;
                &amp;quot;/WPOS=(X,Y[,Width,Height])&amp;quot; where all values are in pixels.&lt;br /&gt;
  /WTITLE     - Sets the window bar title (not the axis title).  The readout&lt;br /&gt;
                will override this when READOUT=ONAXIS is selected. [DEF=PLOT]&lt;br /&gt;
  /XCNT=      - See [CNT] above. [CNT] has precedence when both are&lt;br /&gt;
                present.                                 (Since NeXtMidas 3.1.1)&lt;br /&gt;
  /XMULT=     - Convert x units using scientific notation prefix.&lt;br /&gt;
                Arguments for this switch can be passed in three ways:&lt;br /&gt;
                  1) n, where n is one of {-12,-9,-6,-3,3,6,9,12}:&lt;br /&gt;
                  (e.g. 6 is Mega) --OR--&lt;br /&gt;
                  2) One of { &amp;quot;pico&amp;quot;, &amp;quot;nano&amp;quot;, &amp;quot;micro&amp;quot;, &amp;quot;milli&amp;quot;,&lt;br /&gt;
                  &amp;quot;Kilo&amp;quot;, &amp;quot;Mega&amp;quot;, &amp;quot;Giga&amp;quot;, &amp;quot;Tera&amp;quot; } --OR--&lt;br /&gt;
                  3) One of {'p','n','u','m','K','M','G','T'}&lt;br /&gt;
  /YMULT=     - Convert y units using scientific notation prefix. (cf. /XMULT)&lt;br /&gt;
  /ZOOMADJ=   - Percentage (float) to adjust plots when doing incremental zoom.&lt;br /&gt;
                Value is greater than zero and less than 1. [DEF=0.1]&lt;br /&gt;
  /ZOOMMULT=  - Multiplier which is used when moving zoom by larger amount,&lt;br /&gt;
                typically through the use of PAGE UP, PAGE DOWN, HOME, and END&lt;br /&gt;
                shortcut keys. [DEF=5.0]&lt;br /&gt;
&lt;br /&gt;
See Also: LAYER, FEATURE, PANEL, nxm.sys.libg.MPlot, nxm.sys.libg.MColor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ENDIF&amp;diff=854</id>
		<title>ENDIF</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ENDIF&amp;diff=854"/>
		<updated>2020-04-27T22:05:18Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: end an IF block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;end an IF block&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 This command has no arguments.&lt;br /&gt;
&lt;br /&gt;
 Each block IF statement in a macro must be ended with an ENDIF statement&lt;br /&gt;
 at the end of the block.&lt;br /&gt;
&lt;br /&gt;
 SEE ALSO:  IF, ELSE, ELSEIF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ENVIRONMENT&amp;diff=855</id>
		<title>ENVIRONMENT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ENVIRONMENT&amp;diff=855"/>
		<updated>2020-04-27T22:05:18Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Performs various functions on the NeXtMidas environment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Performs various functions on the NeXtMidas environment&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;func&amp;gt;  Function to perform on environment [DEF=SHOW]&lt;br /&gt;
&amp;lt;key&amp;gt;   Function dependent keyword. Desired variable of interest for&lt;br /&gt;
        SET or GET&lt;br /&gt;
&amp;lt;value&amp;gt; Results label for GET, or value for SET&lt;br /&gt;
&lt;br /&gt;
This command performs a number of functions from showing the NeXtMidas&lt;br /&gt;
environment, to performing an NFSLOOKUP or showing system related&lt;br /&gt;
information like memory usage or threads Java properties&lt;br /&gt;
&lt;br /&gt;
Since the environment variables are now the table ENV in the results table,&lt;br /&gt;
they may be read directly without using this command.&lt;br /&gt;
&lt;br /&gt;
The NeXtMidas FILE intrinsic replaces the X-Midas environment file functions.&lt;br /&gt;
&lt;br /&gt;
Special keywords may not set an entry in the ENV table or may do more than&lt;br /&gt;
just set the entry.&lt;br /&gt;
&lt;br /&gt;
FUNCTIONS:&lt;br /&gt;
  GET - ENV GET &amp;lt;key&amp;gt; &amp;lt;label&amp;gt;&lt;br /&gt;
    Get the keyword in the environment. Prints to screen if &amp;lt;label&amp;gt; is blank&lt;br /&gt;
&lt;br /&gt;
    The environment variables in the ENV table are:&lt;br /&gt;
      NMROOT       - The NeXtMidas root installation directory&lt;br /&gt;
      USER         - User name&lt;br /&gt;
      HOME         - The home directory&lt;br /&gt;
      HOSTNAME     - The local host name&lt;br /&gt;
      HOSTADDR     - The local host IP address&lt;br /&gt;
      OSTYPE       - The operating system type (UNIX,WINDOWS,...)&lt;br /&gt;
      OSNAME       - The operating system name (Linux,...)&lt;br /&gt;
      OSREP        - The operating system data representation (EEEI,IEEE)&lt;br /&gt;
      EDITOR       - The desired editor. Automatically chosen by EDIT command.&lt;br /&gt;
      VIEW         - TBD&lt;br /&gt;
      THEME        - The current theme (see LOOKANDFEEL).&lt;br /&gt;
      STYLE        - TBD&lt;br /&gt;
      GRAPHICS     - What graphics options to use. See details below.&lt;br /&gt;
      PID          - Process ID&lt;br /&gt;
      MSF          - The current Midas State File&lt;br /&gt;
      NMVERSION    - The NeXtMidas version (x.y.z).&lt;br /&gt;
      JVMVERSION   - The Java version (x.y.z).&lt;br /&gt;
      NMPRERELEASE - TRUE if version is a pre-release, FALSE otherwise.&lt;br /&gt;
      PAUSE        - The default pause time between primitive process calls.&lt;br /&gt;
      VERIFY       - The VERIFY mask string&lt;br /&gt;
      DEBUG        - The DEBUG mask string of bar (&amp;quot;|&amp;quot;) separated values.&lt;br /&gt;
      HWFILE       - The hardware configuration file&lt;br /&gt;
      KEYMAP       - Mapping of Plot keyboard shortcuts&lt;br /&gt;
      UIMANAGER    - Adjustments made to the SWING UIManager&lt;br /&gt;
      IOOPTIONS    - The options for input/output for files and other I/O.&lt;br /&gt;
&lt;br /&gt;
    Special GET keywords (not necessarily in the table) are:&lt;br /&gt;
      COMPLETIONAUXEXCLUDE - Pipe-separated list of AUXes that are to be&lt;br /&gt;
                             excluded when using FILES searching and&lt;br /&gt;
                             tab-completion              (since NeXtMidas 3.1.0)&lt;br /&gt;
      DEFAULTTABLEFLAGS    - The default table flags     (since NeXtMidas 2.7.1)&lt;br /&gt;
      DEFAULTTABLEMODE     - The default table mode      (since NeXtMidas 2.7.0)&lt;br /&gt;
      FileNameCASE         - Default FileName case option (this is overridden&lt;br /&gt;
                             by the FNCASE= qualifier).  (since NeXtMidas 3.3.1)&lt;br /&gt;
      HOSTNAMEFQDN         - Fully-Qualified-Domain-Name for the ENV.HOSTNAME&lt;br /&gt;
                             (note that this will simply return ENV.HOSTNAME if&lt;br /&gt;
                             the name resolution fails.  (since NeXtMidas 3.3.2)&lt;br /&gt;
      NUMSCReens           - The number of screens in this graphics environment&lt;br /&gt;
      NUMNONVIRTSCREENS    - The number of non-virtual screens in this graphics&lt;br /&gt;
                             environment                 (since NeXtMidas 2.8.0)&lt;br /&gt;
      PRIV                 - The privileges mask&lt;br /&gt;
      SERVER               - Gets the current server address (this can be&lt;br /&gt;
                             overridden by /REMOTE=&amp;lt;server&amp;gt;)&lt;br /&gt;
      SERVERFQDN           - Fully-Qualified-Domain-Name for the ENV.SERVER&lt;br /&gt;
                             (note that this will simply return ENV.SERVER if&lt;br /&gt;
                             the name resolution fails.  (since NeXtMidas 3.3.2)&lt;br /&gt;
      USENATIVE            - The mask string defining native code use&lt;br /&gt;
&lt;br /&gt;
  GRAPHICS - The graphics options (found in Theme.java) allow for control over&lt;br /&gt;
             the method NeXtMidas uses to display certain items such as plots&lt;br /&gt;
             and widgets. The current default in Theme.java is SWING|REALTIME&lt;br /&gt;
             but this can be overridden using the 'env set' command (such as in&lt;br /&gt;
             startup scripts).&lt;br /&gt;
&lt;br /&gt;
             Options:&lt;br /&gt;
             --------&lt;br /&gt;
             HEADLESS      - Do not draw Windows (including Plots) on display&lt;br /&gt;
             AWT           - use heavyweight (AWT) objects&lt;br /&gt;
             SWING         - use lightweight (SWING) objects for Plots&lt;br /&gt;
             REALTIME      - allow lightweight plots to draw in their own thread&lt;br /&gt;
             MOBILE        - All-SWING with special parenting options for pop-ups&lt;br /&gt;
             SWINGDB       - turn on SWING double buffering&lt;br /&gt;
             SWINGWIDGETS  - GWidget controls drawn on SWING panels&lt;br /&gt;
             SWINGPOPUPS   - GWidget controls drawn on SWING panels&lt;br /&gt;
             NOSLAF        - No Swing Look and Feel theme support (or query)&lt;br /&gt;
             NOXLAF        - No external swing look and feel changes via UIManagers&lt;br /&gt;
             INITONLOAD    - Initialize graphics themes on load instead of on demand&lt;br /&gt;
             DEBUG         - Enable graphics environment debug output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  KEYMAP    - (Since 2.7.2) The keymap is a mapping of keyboard shortcuts to&lt;br /&gt;
              Plot zoom adjustments. Based on industry practices (most notably&lt;br /&gt;
              Google Maps), the keyboard shortcuts allow users to move the&lt;br /&gt;
              viewable area of a zoomed-in plot using only the keyboard.&lt;br /&gt;
&lt;br /&gt;
              ENV.KEYMAP is typically set in nmstartup.mm, but can be modified&lt;br /&gt;
              at any time. If it is null, Plot will use default settings. The&lt;br /&gt;
              defaults are basically to use the arrow keys to make small&lt;br /&gt;
              adjustments, the home/page up/page down/end keys for larger&lt;br /&gt;
              adjustments, and the &amp;quot;+&amp;quot; and &amp;quot;-&amp;quot; keys for incremental zooming in&lt;br /&gt;
              and out.&lt;br /&gt;
&lt;br /&gt;
  UIMANAGER - The SWING UIManager provides the ability to change many aspects&lt;br /&gt;
              of the Swing look and feel &amp;quot;on demand&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
              Starting in NeXtMidas 2.7.3, users can alter the UIManager by&lt;br /&gt;
              using the &amp;quot;environment set uimanager &amp;lt;table&amp;gt;&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
              nM&amp;gt; env set uimanager {scrollbar={width=10,thumb=red}}&lt;br /&gt;
&lt;br /&gt;
              The above example will change the Swing scrollbar to be 10 pixels&lt;br /&gt;
              wide and have a color of red.&lt;br /&gt;
&lt;br /&gt;
              Note that not all UIManager settings can be altered, as they may&lt;br /&gt;
              require inputs of sound files, images, etc.. Generally, the&lt;br /&gt;
              following input values types are supported:&lt;br /&gt;
&lt;br /&gt;
                Data Types (int, long, double, boolean, etc)&lt;br /&gt;
                Strings (or char)&lt;br /&gt;
                Colors&lt;br /&gt;
                Fonts (font name only, e.g. &amp;quot;courier&amp;quot;, &amp;quot;arial&amp;quot;, etc)&lt;br /&gt;
&lt;br /&gt;
              A complete list of UIManager properties depends on the Java&lt;br /&gt;
              version and OS, but can be found in Java by using the following:&lt;br /&gt;
&lt;br /&gt;
                Enumeration&amp;lt;Object&amp;gt; keys =    UIManager.getDefaults().keys();&lt;br /&gt;
&lt;br /&gt;
  IOOPTIONS - The options for input/output for files and other I/O.  Since 2.9.0&lt;br /&gt;
              DisableEscapeSequences - Turn off the handling of escape&lt;br /&gt;
                            sequences in quoted Strings (inside macro/prompt)&lt;br /&gt;
                            using the backslash character (i.e. '\') just like&lt;br /&gt;
                            Java/C string escape sequences.&lt;br /&gt;
                            Note: this does not apply to creating Tables from&lt;br /&gt;
                            Strings or writing out the contents of a Table with&lt;br /&gt;
                            Table.toByte(..). This option is DEPRECATED.&lt;br /&gt;
                            In 3.1.0, escape sequences are enabled by default.&lt;br /&gt;
              StrictHTTP  - Strictly follow HTTP 1.1 (RFC 2616) rules. E.g. Work&lt;br /&gt;
                            around HTTP servers that return 200 status code to a&lt;br /&gt;
                            GET/POST request with Range header (with desire to&lt;br /&gt;
                            read partial content), which will potentially break&lt;br /&gt;
                            communication with NeXtMidas 2.8.2 and prior HTTP&lt;br /&gt;
                            servers that did not correctly returned 206 status&lt;br /&gt;
                            code.&lt;br /&gt;
              TruncateBLUE - When overwriting existing BLUE files, truncate&lt;br /&gt;
                            them on the storage device to minimum size&lt;br /&gt;
                            necessary (Since 2.9.1).&lt;br /&gt;
              DisableQuadwordsEqualityChecks - Turn off the equality checks in&lt;br /&gt;
                            DataFile that check quadwords in Type 5000 files.&lt;br /&gt;
                            Setting this will enable the (buggy) behavior of&lt;br /&gt;
                            NeXtMidas 3.2 and earlier which ignored quadwords&lt;br /&gt;
                            in equality checks. (Since 3.3.0)&lt;br /&gt;
              WriteNoAbort - Do not abort even if an Exception occurs during&lt;br /&gt;
                            writing. (Since 3.5.4)&lt;br /&gt;
              FileIONoAbort- Do not abort even if an Exception occurs during&lt;br /&gt;
                            a file write or read. (Since 3.7.1)&lt;br /&gt;
&lt;br /&gt;
  SET - ENV SET &amp;lt;key&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
    Set the keyword in the environment&lt;br /&gt;
&lt;br /&gt;
    Special SET keywords are:&lt;br /&gt;
      COMPLETIONAUXEXCLUDE - Sets the pipe-separated list of AUXes which are&lt;br /&gt;
                             ignored when searching via the FILES command or&lt;br /&gt;
                             tab-completion.             (Since NeXtMidas 3.1.1)&lt;br /&gt;
      DEFAULTTABLEFLAGS    - The default table flags, this can also be set using&lt;br /&gt;
                             the TABLE command.          (since NeXtMidas 2.7.1)&lt;br /&gt;
      DEFAULTTABLEMODE     - The default table mode, this can also be set using&lt;br /&gt;
                             the TABLE command.          (since NeXtMidas 2.7.0)&lt;br /&gt;
      FileNameCASE         - Default FileName case option (this is overridden&lt;br /&gt;
                             by the FNCASE= qualifier).  (since NeXtMidas 3.3.1)&lt;br /&gt;
      PRIV                 - Sets the sandbox privileges (supports value=ALL)&lt;br /&gt;
      USENATIVE            - Sets the property in nxm.sys.lib.Native for use&lt;br /&gt;
                             of native code&lt;br /&gt;
&lt;br /&gt;
  SHOW - ENV SHOW &amp;lt;key&amp;gt;&lt;br /&gt;
    By default shows the current environment is listed on the terminal or&lt;br /&gt;
    any of the other special SHOW functions listed below.&lt;br /&gt;
&lt;br /&gt;
    Special SHOW functions are:&lt;br /&gt;
      &amp;quot;&amp;quot;       - shows all NeXtMidas environment variables in ENV table and&lt;br /&gt;
                 other special ones not in the table [DEFAULT]&lt;br /&gt;
      THREAD   - shows all threads&lt;br /&gt;
      MEM      - shows memory usage&lt;br /&gt;
      PROP &amp;lt;filter&amp;gt; - shows all Java Property values. Since 3.5.2, a simple&lt;br /&gt;
                 case-insensitive &amp;lt;filter&amp;gt; search string can be specified for&lt;br /&gt;
                 either property name or value.&lt;br /&gt;
      KEYGETS  - Deprecated since NeXtMidas 2.7.0 (always blank)&lt;br /&gt;
      KEYSETS  - Deprecated since NeXtMidas 2.7.0 (always blank)&lt;br /&gt;
      HANDLERS - show table of handlers for FILEs and PACKETs&lt;br /&gt;
&lt;br /&gt;
  RESET - TBD - resets variables affecting pipes and macros&lt;br /&gt;
&lt;br /&gt;
  NSLOOKUP - gets an IP address for the named node&lt;br /&gt;
    Syntax: ENV NSLOOKUP &amp;lt;hostname&amp;gt; &amp;lt;inetaddress&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  GC - runs the garbage collector.  Use /VERBOSE=T to see output in a macro.&lt;br /&gt;
    Syntax: ENV GC&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. A typical set of the environment variables kept in the ENV table are&lt;br /&gt;
    nM&amp;gt; env&lt;br /&gt;
      T: ENV             = Table of 24 entries&lt;br /&gt;
    19S:  NMROOT         = /home/midas/nxmxxx/&lt;br /&gt;
     3S:  USER           = jph&lt;br /&gt;
    10S:  HOME           = /home/jph/&lt;br /&gt;
     6S:  HOSTNAME       = JPHLAP&lt;br /&gt;
     9S:  HOSTADDR       = 127.0.0.1&lt;br /&gt;
     4S:  OSTYPE         = UNIX&lt;br /&gt;
     5S:  OSNAME         = Linux&lt;br /&gt;
     4S:  OSREP          = EEEI&lt;br /&gt;
     3S:  EDITOR         = nedit&lt;br /&gt;
     4S:  VIEW           = TEXT&lt;br /&gt;
     5S:  THEME          = GEAR3&lt;br /&gt;
     5S:  STYLE          = GEAR3&lt;br /&gt;
    14S:  GRAPHICS       = SWING|REALTIME&lt;br /&gt;
     4S:  PID            = 1172&lt;br /&gt;
    19S:  MSF            = /home/jph/nmsf_1172&lt;br /&gt;
     5S:  NMVERSION      = 3.4.3&lt;br /&gt;
     5S:  JVMVERSION     = 1.8.0&lt;br /&gt;
     4S:  NMPRERELEASE   = FALSE&lt;br /&gt;
      D:  PAUSE          = 0.0125&lt;br /&gt;
     1S:  VERIFY         = |&lt;br /&gt;
    17S:  DEBUG          = |Trace|Deprecate|&lt;br /&gt;
    34S:  USENATIVE      = |IO|Math|Cast|CastX|Convert|Other|&lt;br /&gt;
    20S:  HWFILE         = nxm.sys.dat.hwconfig&lt;br /&gt;
      T:  KEYMAP         = Table of 1 entries&lt;br /&gt;
    ------- Other Environment Settings ------&lt;br /&gt;
    CompletionAuxExclude = |99|&lt;br /&gt;
    DefaultTableFlags    = |AutoReadPrev|&lt;br /&gt;
    DefaultTableMode     = SynchronizedLinkedHashMap&lt;br /&gt;
    FileNameCase         = AutoCase&lt;br /&gt;
    HostNameFQDN         = jphlap.localdomain&lt;br /&gt;
    NumNonVirtScreens    = 1&lt;br /&gt;
    NumScreens           = 3&lt;br /&gt;
    Priv                 = ALL&lt;br /&gt;
    Server               = &lt;br /&gt;
    ServerFQDN           = &lt;br /&gt;
    UseNative            = |IO|Math|Cast|Convert|Other|&lt;br /&gt;
&lt;br /&gt;
  2. To determine the host address of this computer&lt;br /&gt;
    nM&amp;gt; ENV GET HOSTNAME myHostname&lt;br /&gt;
&lt;br /&gt;
  3. To set the control panel widgets to use SWING panels and double buffer&lt;br /&gt;
    nM&amp;gt; ENV SET GRAPHICS +SWINGWIDGETS|+SWINGDB&lt;br /&gt;
&lt;br /&gt;
  4. To set the Swing scrollbar to be 10 pixels wide and have a color of red:&lt;br /&gt;
    nM&amp;gt; env set uimanager {scrollbar={width=10,thumb=red}}&lt;br /&gt;
&lt;br /&gt;
  5. If the /SERVER switch is specified on a macro, it is to be run in server&lt;br /&gt;
     mode. If the /CLIENT switch is specified on a macro, it is to be run in&lt;br /&gt;
     client mode. The client macro gets the server address from the&lt;br /&gt;
     /REMOTE=host:port switch, the ENV.SERVER variable, or the Midas.getServer()&lt;br /&gt;
     function. This command will search this path for the servers address&lt;br /&gt;
    nM&amp;gt; ENV GET SERVER theServer&lt;br /&gt;
&lt;br /&gt;
  6. To determine how many screens your computer has:&lt;br /&gt;
    nM&amp;gt; env get NUMSCREENS ns&lt;br /&gt;
&lt;br /&gt;
  7. To determine how many screens your computer has that are not virtual (aka,&lt;br /&gt;
     cinerama is 1 screen not 3).&lt;br /&gt;
    nM&amp;gt; env get NUMNONVIRTSCREENS nsNonVirt&lt;br /&gt;
&lt;br /&gt;
  8. Disable the handling of escape sequences in Strings:&lt;br /&gt;
     nM&amp;gt; env set iooptions +DisableEscapeSequences&lt;br /&gt;
&lt;br /&gt;
  9. Set the list of AUXes to ignore when using the FILES command or&lt;br /&gt;
     tab-completion&lt;br /&gt;
     nM&amp;gt; env set COMPLETIONAUXEXCLUDE &amp;quot;RAM|99&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ALL        - Enumerate contents of any tables in the environment for SHOW&lt;br /&gt;
                function&lt;br /&gt;
  /REMOTE=&amp;lt;r&amp;gt; - Override the default host:port for the ENV GET SERVER function&lt;br /&gt;
  /VERBOSE    - Show additional information while command is running&lt;br /&gt;
&lt;br /&gt;
See Also: TABLE, LOOKANDFEEL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=HTTPSERV&amp;diff=856</id>
		<title>HTTPSERV</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=HTTPSERV&amp;diff=856"/>
		<updated>2020-04-27T22:05:18Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: An HTTP/1.1 server to serve files rooted in given directory.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An HTTP/1.1 server to serve files rooted in given directory.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;PORT&amp;gt; The port that the web server is to run on. [default=8080]&lt;br /&gt;
       Use 0 for any free port (Since NeXtMidas 2.7.0, once server is running,&lt;br /&gt;
       port is updated and printed to reflect the actual listen port.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;DIR&amp;gt;  The directory containing the files to be served.  If the parameter&lt;br /&gt;
       begins with a slash (/) then it is assumed to be an absolute pathname,&lt;br /&gt;
       otherwise it is assumed to be relative to NMROOT.  [default=htmlhelp]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;NAME&amp;gt; The alias by which the directory will be accessed. [default=dat]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The NAME parameter is the alias used by the web server for the directory.&lt;br /&gt;
HTTP requests that begin with the specified name will be mapped to a file&lt;br /&gt;
that is contained in the given directory.  Files in subdirectories will be&lt;br /&gt;
served if the request URI begins with the NAME.&lt;br /&gt;
&lt;br /&gt;
    +---------------------------------------------------------------+&lt;br /&gt;
    |                           WARNING                             |&lt;br /&gt;
    | Unlike most web servers, the names of the file accessible via |&lt;br /&gt;
    | HTTPSERV should be assumed to be case sensitive.              |&lt;br /&gt;
    +---------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
  HTTPGET    - Send from primitive to /MSGID= with the following:&lt;br /&gt;
                  NAME=HTTPGET&lt;br /&gt;
                  INFO=0&lt;br /&gt;
                  DATA={SOCKET=&amp;lt;outputSock&amp;gt;,PARAMAMETERS=&amp;lt;params&amp;gt;}&lt;br /&gt;
               &amp;lt;outputSock&amp;gt; is an instance of nxm.sys.net.HPage&lt;br /&gt;
               &amp;lt;params&amp;gt;     is a Table of input parameters (same as calling&lt;br /&gt;
                            &amp;lt;outputSock&amp;gt;.getParameters())&lt;br /&gt;
&lt;br /&gt;
               Note that the macro ***MUST*** invoke both openSocket() and&lt;br /&gt;
               closeSocket() on the &amp;lt;outputSock&amp;gt;. Failure to do this will cause&lt;br /&gt;
               the request handler to hang!!!&lt;br /&gt;
&lt;br /&gt;
  HTTPPOST   - Same as HTTPGET, except for an HTTP POST request. See the API&lt;br /&gt;
               for HPage.getPostData() for details on accessing POST data.&lt;br /&gt;
               (Note: Support for HTTP POST was added in NeXtMidas 2.7.0)&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Make the files in &amp;quot;${NMROOT}/nxm/sys/dat&amp;quot; available on the net via&lt;br /&gt;
     &amp;quot;http://hostname:8080/dat/&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; httpserv 8080 DIR=&amp;quot;nxm/sys/dat&amp;quot; NAME=&amp;quot;dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     This will instantiate a server on port 8080 that will serve files rooted&lt;br /&gt;
     in the ${NMROOT}/nxm/sys/dat directory and will use 'dat' as the alias for&lt;br /&gt;
     this directory.&lt;br /&gt;
&lt;br /&gt;
     While this is running, you can do the following from another system:&lt;br /&gt;
       nM&amp;gt; status http://hostname:8080/dat/apenny.prm&lt;br /&gt;
&lt;br /&gt;
     or even&lt;br /&gt;
       nM&amp;gt; noop http://hostname:8080/dat/apenny.prm localpenny&lt;br /&gt;
&lt;br /&gt;
     This connection is not limited to NeXtMidas sessions, any program with&lt;br /&gt;
     HTTP access can access the files, for example a web browser can load the&lt;br /&gt;
     &amp;quot;Sunset.jpg&amp;quot; file using &amp;quot;http://hostname:8080/dat/Sunset.jpg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
     Note that by default ALL files under $NMROOT are accessible via&lt;br /&gt;
     &amp;quot;http://hostname:8080/nmroot/&amp;quot; also note that any web browser pointed&lt;br /&gt;
     to &amp;quot;http://hostname:8080/&amp;quot; will automatically be able to access the&lt;br /&gt;
     NeXtMidas documentation (if built) and status information about any of&lt;br /&gt;
     the primitives running over the network.&lt;br /&gt;
&lt;br /&gt;
  2. Run SD360;SYS with HTTPSERV:&lt;br /&gt;
       nM&amp;gt; sd360/server=9000/http&lt;br /&gt;
&lt;br /&gt;
     Now it is possible to point a web browser to &amp;quot;http://hostname:9000/&amp;quot; and&lt;br /&gt;
     get status information about the running RMIF connection.&lt;br /&gt;
&lt;br /&gt;
     See the SD360 explain file for details.&lt;br /&gt;
&lt;br /&gt;
  3. Run HTTP server on any available port and display host and listen port&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; httpserv port=0 /bg&lt;br /&gt;
       INFO: Starting HTTP Web Server at URL=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/ [HTTPSERV]&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; say &amp;quot;using host=^{reg.httpserv.host} port=^{reg.httpserv.port}&amp;quot;&lt;br /&gt;
       using host=10.10.1.59 port=38375&lt;br /&gt;
&lt;br /&gt;
  4. Use the /MNAME= and /MSGID= switches to allow the macro to respond to a&lt;br /&gt;
     HTTP request:&lt;br /&gt;
        startmacro&lt;br /&gt;
          pipe on&lt;br /&gt;
            httpserv/msgid=main/mname=&amp;quot;mymacro&amp;quot; port=9999&lt;br /&gt;
          pipe off&lt;br /&gt;
        endmacro&lt;br /&gt;
&lt;br /&gt;
        procedure processMessage m:msg&lt;br /&gt;
          say &amp;quot;Got message name=^msg.name info=^msg.info data=^msg.data&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          if msg.name eqs &amp;quot;HTTPGET&amp;quot; then&lt;br /&gt;
            set socket msg.data.socket&lt;br /&gt;
            set params msg.data.parameters&lt;br /&gt;
&lt;br /&gt;
            ! say &amp;quot;Got HTTPGET request, URI= ^{socket.uri}&amp;quot;&lt;br /&gt;
            invoke,,socket.openSocket()&lt;br /&gt;
            invoke,,socket.writeln(&amp;quot;Got request with ^{params}&amp;quot;)&lt;br /&gt;
            invoke,,socket.closeSocket()&lt;br /&gt;
          elseif msg.name eqs &amp;quot;HTTPPOST&amp;quot; then&lt;br /&gt;
            ...&lt;br /&gt;
          endif&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
     A client can then use &amp;quot;http://localhost:9999/mymacro?a=1&amp;amp;b=2&amp;amp;c=3&amp;quot; to access&lt;br /&gt;
     this macro. NOTE: The macro MUST invoke both openSocket() and closeSocket()&lt;br /&gt;
     on the &amp;lt;socket&amp;gt;. Failure to do this will cause the primitive to hang!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /AUXLIST=&amp;lt;l&amp;gt;  - List of AUXs to make available under&lt;br /&gt;
                  &amp;quot;http://host:port/Files/&amp;lt;AUX&amp;gt;/&amp;lt;filename&amp;gt;&amp;quot;. By default none&lt;br /&gt;
                  are listed (same as /AUXLIST=null). /AUXLIST=&amp;quot;*&amp;quot; serves up&lt;br /&gt;
                  everything in AUX.READ (use of /AUXLIST=&amp;quot;*&amp;quot; is very common).&lt;br /&gt;
  /HOMEPAGE=&amp;lt;p&amp;gt; - Homepage location for HTTP web server (&amp;lt;p&amp;gt; = path).&lt;br /&gt;
  /MNAME=&amp;lt;n&amp;gt;    - Turns on macro handling of requests where &amp;lt;n&amp;gt; is the name of&lt;br /&gt;
                  the macro as given in the HTTP request. If /MNAME=&amp;quot;/mymacro&amp;quot;&lt;br /&gt;
                  (or /MNAME=&amp;quot;mymacro&amp;quot;, leading slash is implied) then the&lt;br /&gt;
                  client uses &amp;quot;http://&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;/mymacro&amp;quot; to access it).&lt;br /&gt;
                  When this is enabled HTTPGET and/or HTTPPOST messages will&lt;br /&gt;
                  be sent to /MSGID=. If /MNAME=&amp;quot;/&amp;quot; (e.g. root alias) then all&lt;br /&gt;
                  requests will be forwarded specified message handler otherwise&lt;br /&gt;
                  the default HServer index will serve up the / requests.&lt;br /&gt;
  /MSGID=&amp;lt;n&amp;gt;    - Registry name of command to handle messages (usually MAIN),&lt;br /&gt;
                  only used with /MNAME= switch.&lt;br /&gt;
  /PRANGE=n     - Range of port numbers above &amp;lt;PORT&amp;gt; to use if already&lt;br /&gt;
                  allocated. [DEF=1] Since 2.9.3.&lt;br /&gt;
&lt;br /&gt;
See Also: RMIF, nxm.sys.net.HServer, nxm.sys.net.HPage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=THIN&amp;diff=852</id>
		<title>THIN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=THIN&amp;diff=852"/>
		<updated>2020-04-27T22:05:17Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Copy one file to another with optional offset, length, and decimation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Copy one file to another with optional offset, length, and decimation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IN&amp;gt;     Input file&lt;br /&gt;
&amp;lt;OUT&amp;gt;    Output file&lt;br /&gt;
&amp;lt;START&amp;gt;  Starting offset (inclusive)&lt;br /&gt;
&amp;lt;END&amp;gt;    Ending offset (exclusive)&lt;br /&gt;
&amp;lt;INC&amp;gt;    Increment between input file elements&lt;br /&gt;
&amp;lt;FSTART&amp;gt; Frame Starting offset&lt;br /&gt;
&amp;lt;FEND&amp;gt;   Frame Ending offset&lt;br /&gt;
&amp;lt;FINC&amp;gt;   Frame Increment between input file elements&lt;br /&gt;
&lt;br /&gt;
This primitive performs data thinning on 1D, 2D, or record oriented file&lt;br /&gt;
formats. The last 3 arguments apply only to 2D interframe. (The X-Midas&lt;br /&gt;
TWODTHIN function). If the increment is negative, this primitive performs the&lt;br /&gt;
UPZERO function.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;START&amp;gt;, &amp;lt;END&amp;gt;, and &amp;lt;INC&amp;gt; arguments are absolute, offset addresses by&lt;br /&gt;
default. To use abscissa addressing, precede the argument with a tilde (~). To&lt;br /&gt;
use relative addressing, precede the argument with a plus.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;START&amp;gt; and &amp;lt;END&amp;gt; are ZERO based offsets, so that start=2 end=10 actually&lt;br /&gt;
gets the data elements starting and INCLUDING offset=2 up and EXCLUDING&lt;br /&gt;
offset=10.  This corresponds to the one-based elements 3 through 10. This is&lt;br /&gt;
identical to the way file trimming arguments are used.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  1. Copy infile to outfile downsampling by factor of 2 (i.e. 50% reduction)&lt;br /&gt;
    nM&amp;gt; thin infile outfile ,, 2&lt;br /&gt;
    -or-&lt;br /&gt;
    nM&amp;gt; thin infile outfile inc=2&lt;br /&gt;
&lt;br /&gt;
  2. Copy elements 1-3 of infile to outfile.&lt;br /&gt;
    nM&amp;gt; thin infile outfile 0 3&lt;br /&gt;
&lt;br /&gt;
  3. Copy all but the last two elements of infile to outfile.&lt;br /&gt;
    nM&amp;gt; thin infile outfile 0 -2&lt;br /&gt;
&lt;br /&gt;
  4. Copy every third element from the 2nd element to the end of the file (EOF).&lt;br /&gt;
    nM&amp;gt; thin infile outfile 1 -0 3&lt;br /&gt;
&lt;br /&gt;
  5. Copy 20 elements starting at 1 second into the file.&lt;br /&gt;
    nM&amp;gt; thin infile outfile ~1 +20&lt;br /&gt;
&lt;br /&gt;
  6. Copy every other element from 1sec to 2sec into the file.&lt;br /&gt;
    nM&amp;gt; thin infile outfile ~1 ~2 2&lt;br /&gt;
&lt;br /&gt;
  7. Upsample infile by 8 by inserting 7 zeros between each value.&lt;br /&gt;
    nM&amp;gt; thin infile outfile INC=-8&lt;br /&gt;
  or&lt;br /&gt;
    nM&amp;gt; thin infile outfile INC=.125&lt;br /&gt;
&lt;br /&gt;
  8. Get Y cut of a type 2000 file at index x (without adjustments).&lt;br /&gt;
    nM&amp;gt; thin in2000 out2000 fstart=x fend=x+1&lt;br /&gt;
    -or- into a type 1000 file with xstart, xdelta, xunits re-adjusted&lt;br /&gt;
    nM&amp;gt; thin in2000 out1000{type=1000,xs=inys,xd=inyd,xu=inxu,yu=none} &amp;amp;&lt;br /&gt;
             fstart=x fend=x+1&lt;br /&gt;
&lt;br /&gt;
  9. Reset the Frame Start value of a thinned Type 2000 data pipe&lt;br /&gt;
     nM&amp;gt; set reg.&amp;lt;id&amp;gt;.fstart &amp;lt;new fstart value&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 10. Reset the frame start, stop and increment of a thinned Type 2000 data pipe&lt;br /&gt;
     nM&amp;gt; set reg.&amp;lt;id&amp;gt;.fvals {FSTART=&amp;lt;val&amp;gt;,FEND=&amp;lt;val&amp;gt;,FINC=&amp;lt;val&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
 11. Thin out file forcing abscissa + timecode addressing&lt;br /&gt;
     nM&amp;gt; thin infile outfile startTime endTime /addressing=TIMECODE&lt;br /&gt;
&lt;br /&gt;
 12. Thin out file using only abscissa addressing (do not add timecode)&lt;br /&gt;
     nM&amp;gt; thin infile outfile startSec endSec /addr=ABSCISSA&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ABSC        Use ABSCISSA_LEGACY addressing for ALL arguments&lt;br /&gt;
  /ADDR=       Alias for /ADDRESSING&lt;br /&gt;
  /ADDRESSING= Addressing mode. [DEF=INDEX] (Since 2.9.1)&lt;br /&gt;
      INDEX           - Absolute indexing.&lt;br /&gt;
      ABSCISSA        - Abscissa indexing only (e.g. time or frequency).&lt;br /&gt;
      TIMECODE        - Indexing using time: abscissa address +&lt;br /&gt;
                        (TimeLine (if exists) or timecode, in that order).&lt;br /&gt;
      ABSCISSA_AUTO   - Same as TIMECODE mode when abscissa units is Time,&lt;br /&gt;
                        otherwise same a ABSCISSA mode.&lt;br /&gt;
      ABSCISSA_LEGACY - Similar to ABSCISSA_AUTO, but ONLY use&lt;br /&gt;
                        abscissa + TimeLine/timecode when abscissa units is Time&lt;br /&gt;
                        and when return index is greater than 100e6 seconds.&lt;br /&gt;
  /RESTART=T|F Enable/disable the output pipe from restarting when certain&lt;br /&gt;
               properties (inc, start, end, and fend) are changed. [DEF=TRUE]&lt;br /&gt;
  /TL=n        Specify the number of elements to process on each read&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SORT&amp;diff=853</id>
		<title>SORT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SORT&amp;diff=853"/>
		<updated>2020-04-27T22:05:17Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Sorts a Type 3000 file.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sorts a Type 3000 file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IN&amp;gt;      The input file.&lt;br /&gt;
&amp;lt;OUT&amp;gt;     The output file.&lt;br /&gt;
&amp;lt;KEYS&amp;gt;    The keys to sort by (separated by '|').&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION:&lt;br /&gt;
  This will sort a Midas BLUE Type 3000 file. The input file will be read in&lt;br /&gt;
  and then the data will be sorted before writing out to the output file. The&lt;br /&gt;
  provided keys specify which key or keys to sort by. They should be in the&lt;br /&gt;
  form:&lt;br /&gt;
    &amp;lt;KEYS&amp;gt; = &amp;quot;key1|key2|key3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  This will sort with &amp;quot;key1&amp;quot; as the primary key, and &amp;quot;key2&amp;quot; as the secondary&lt;br /&gt;
  key (used where multiple &amp;quot;key1&amp;quot; values match), and so forth.&lt;br /&gt;
&lt;br /&gt;
  This primitive is intended for use with only small data files. The following&lt;br /&gt;
  assumptions were made when the primitive was written:&lt;br /&gt;
    1. The entire file can be read into memory prior to sorting.&lt;br /&gt;
    2. The sort algorithm need not be highly optimized. (Though&lt;br /&gt;
       it is optimized in the current implementation.)&lt;br /&gt;
    3. The keys specified will match the fields in the records.&lt;br /&gt;
    4. All values for a given field will be of the same data type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SORT ORDER:&lt;br /&gt;
  To &amp;quot;normal&amp;quot;-sort on a key (smallest-to-largest) prefix the key name with a&lt;br /&gt;
  plus sign ('+'), or give it no prefix. Such as:&lt;br /&gt;
    &amp;lt;KEYS&amp;gt; = &amp;quot;+key1|+key2|+key3&amp;quot;   or   &amp;lt;KEYS&amp;gt; = &amp;quot;key1|key2|key3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  To reverse-sort on a key (largest-to-smallest) prefix the key name with a&lt;br /&gt;
  minus sign ('-'). Such as:&lt;br /&gt;
    &amp;lt;KEYS&amp;gt; = &amp;quot;-key1|-key2|-key3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Mixing the sort order between keys is permitted. Such as:&lt;br /&gt;
    &amp;lt;KEYS&amp;gt; = &amp;quot;key1|-key2|+key3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXAMPLES:&lt;br /&gt;
  1. Sort the 'testxy3000' file based on 'ABSC':&lt;br /&gt;
       nM&amp;gt; sort testxy3000 outfile absc&lt;br /&gt;
&lt;br /&gt;
  2. Sort the 'testxy3000' file based on 'ABSC',in the reverse order&lt;br /&gt;
     sort key (for instances where 'ABSC' values match):&lt;br /&gt;
       nM&amp;gt; sort testxy3000 outfile -absc&lt;br /&gt;
&lt;br /&gt;
  3. Sort a file based on multiple keys:&lt;br /&gt;
       nM&amp;gt; sort inFile outFile &amp;quot;-SINT|-NAME|+SLNG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SWITCH&amp;diff=850</id>
		<title>SWITCH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SWITCH&amp;diff=850"/>
		<updated>2020-04-27T22:05:17Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Define static switches or get a switch value into a results parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Define static switches or get a switch value into a results parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;NAME&amp;gt;  Name of the switch&lt;br /&gt;
&amp;lt;VALUE&amp;gt; Switch value for SET; Switch value label for GET (default) and DEL&lt;br /&gt;
&amp;lt;FUNC&amp;gt;  Action to perform (GET[DEF], GETALL, SET, or DEL)&lt;br /&gt;
&amp;lt;DEF&amp;gt;   Default value if switch is not present&lt;br /&gt;
&amp;lt;SDEF&amp;gt;  Default value if only a state switch is present&lt;br /&gt;
&lt;br /&gt;
SWITCH is the mechanism by which macros define their own switches and branch&lt;br /&gt;
in response to switches.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
  GET   - Gets a particular switch and stores its value in a result&lt;br /&gt;
&lt;br /&gt;
          Syntax:&lt;br /&gt;
            SWITCH &amp;lt;NAME&amp;gt; &amp;lt;VALUE&amp;gt; GET &amp;lt;DEF&amp;gt; &amp;lt;SDEF&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;NAME&amp;gt;  The name of the switch (e.g. &amp;quot;MYSWITCH&amp;quot;)&lt;br /&gt;
            &amp;lt;VALUE&amp;gt; The label of the result to store the value of the&lt;br /&gt;
                    switch in (e.g. &amp;quot;MYVALUE&amp;quot;)&lt;br /&gt;
            &amp;lt;DEF&amp;gt;   The default value if the switch is not specified&lt;br /&gt;
            &amp;lt;SDEF&amp;gt;  The default value to use if the switch is given as a&lt;br /&gt;
                    state switch (usually &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot;). If not set,&lt;br /&gt;
                    the empty string (&amp;quot;&amp;quot;) will be used.&lt;br /&gt;
&lt;br /&gt;
  SET  - The SET function works the same as the GET, but has the effect of&lt;br /&gt;
         setting the highest precedence for the value of the switch. This was&lt;br /&gt;
         done to allow commands within a macro to NOT inherit values of&lt;br /&gt;
         designated switches. See example. (Since NeXtMidas 2.9.0)&lt;br /&gt;
&lt;br /&gt;
         Syntax:&lt;br /&gt;
            SWITCH &amp;lt;NAME&amp;gt; &amp;lt;VALUE&amp;gt; SET&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;NAME&amp;gt;  The name of the switch (e.g. &amp;quot;MYSWITCH&amp;quot;)&lt;br /&gt;
            &amp;lt;VALUE&amp;gt; The value to set the switch to, or the label of the&lt;br /&gt;
                    result containing the value&lt;br /&gt;
&lt;br /&gt;
  DEL  - The DEL function allows the user to delete any current value for the&lt;br /&gt;
         switch. This also allows for users to not inherit a values of&lt;br /&gt;
         designated switches, but does not set a value in turn.&lt;br /&gt;
         See example. (Since NeXtMidas 2.9.0)&lt;br /&gt;
&lt;br /&gt;
         Syntax:&lt;br /&gt;
            SWITCH &amp;lt;NAME&amp;gt; &amp;lt;VALUE&amp;gt; DEL&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;NAME&amp;gt;  The name of the switch (e.g. &amp;quot;MYSWITCH&amp;quot;)&lt;br /&gt;
            &amp;lt;VALUE&amp;gt; The label of the result to store the previous value of&lt;br /&gt;
                    the switch (since neXtMidas 3.1.3)&lt;br /&gt;
&lt;br /&gt;
  GETALL - Gets all switches and stores their values in a result. Note that&lt;br /&gt;
           this function works by looking at all switches passed in on the&lt;br /&gt;
           macro's command line rather than looking only for a pre-defined&lt;br /&gt;
           set of switches. (Since NeXtMidas 2.9.0)&lt;br /&gt;
&lt;br /&gt;
           Syntax:&lt;br /&gt;
             SWITCH ,, &amp;lt;VALUE&amp;gt; GETALL ,, &amp;lt;SDEF&amp;gt;&lt;br /&gt;
&lt;br /&gt;
             &amp;lt;VALUE&amp;gt; The name of the table to put the switches in. If the table&lt;br /&gt;
                     exists, the contents of the table will be used as default&lt;br /&gt;
                     values (like &amp;lt;DEF&amp;gt; with GET)&lt;br /&gt;
             &amp;lt;SDEF&amp;gt;  The default value to use if the switch is given as a&lt;br /&gt;
                     state switch (usually &amp;quot;true&amp;quot; or &amp;quot;1&amp;quot;). If not set,&lt;br /&gt;
                     the empty string (&amp;quot;&amp;quot;) will be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In NeXtMidas, most switches can be tested in logical test directly, as with&lt;br /&gt;
&lt;br /&gt;
  if /C then&lt;br /&gt;
    ...&lt;br /&gt;
  else&lt;br /&gt;
    ...&lt;br /&gt;
  endif&lt;br /&gt;
&lt;br /&gt;
The same syntax works on numeric or string values, as with&lt;br /&gt;
&lt;br /&gt;
  if /FN eqs &amp;quot;MYFILE&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
  if /N gt 4&lt;br /&gt;
&lt;br /&gt;
The switch statement is useful for applying defaults to switches that may&lt;br /&gt;
or may not be present, as with&lt;br /&gt;
&lt;br /&gt;
  switch FN fnlabel get &amp;quot;MYFILE&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
  switch N nlabel get 20&lt;br /&gt;
&lt;br /&gt;
which applies the defaults &amp;quot;MYFILE&amp;quot; and 20 to those switches, if they are not&lt;br /&gt;
applied. String valued switches that supply the &amp;lt;SDEF&amp;gt; parameter will set the&lt;br /&gt;
value to &amp;lt;DEF&amp;gt; if the switch is not present, or &amp;lt;SDEF&amp;gt; if the switch is present&lt;br /&gt;
but no =value is given.&lt;br /&gt;
&lt;br /&gt;
SWITCH inheritance:&lt;br /&gt;
  1. Switches right after the command (no space in-between) are inherited by&lt;br /&gt;
     primitive and intrinsic commands called by the command. e.g.&lt;br /&gt;
     MYMACRO/ASWITCH arg1 arg2&lt;br /&gt;
&lt;br /&gt;
  2. Switches at END of argument list are the same as the above but they are&lt;br /&gt;
     also inherited by macro commands called by the command. e.g.&lt;br /&gt;
     MYMACRO arg1 arg2 /ASWITCH&lt;br /&gt;
&lt;br /&gt;
SWITCH precedence (order):&lt;br /&gt;
  1. Macro command line (passed in when macro is run)&lt;br /&gt;
  2. Commands (macros,primitives,intrinsics) in the macro&lt;br /&gt;
  3. Command dictionary (commands.cnf)&lt;br /&gt;
  4. Macro Defaults (on startmacro line)&lt;br /&gt;
     eg. startmacro/switch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  1. Set fnlabel to &amp;quot;NOFN&amp;quot; if no switch is present, or &amp;quot;MYFILE&amp;quot; if just /FN is&lt;br /&gt;
    present. If /FN=&amp;lt;text&amp;gt; is present, fnlabel will have the value of &amp;lt;text&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
      switch FN fnlabel get &amp;quot;NOFN&amp;quot; &amp;quot;MYFILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  2. A switch command with its own switch has the effect of setting the default:&lt;br /&gt;
&lt;br /&gt;
       switch MYSW myres /MYSW=10&lt;br /&gt;
&lt;br /&gt;
  3. Allow child macro to see a pipes created in calling macro&lt;br /&gt;
&lt;br /&gt;
       mymacro/sharemask=pipes&lt;br /&gt;
&lt;br /&gt;
  4. Set the value of a switch regardless of what is passed in on the command&lt;br /&gt;
     line (ignore precedence):&lt;br /&gt;
&lt;br /&gt;
       switch name=&amp;quot;MYSWITCH&amp;quot;  value=15  func=set&lt;br /&gt;
&lt;br /&gt;
  5. Delete a current switch but store its value, if it exists.&lt;br /&gt;
&lt;br /&gt;
        switch name=&amp;quot;MYSWITCH&amp;quot; value=savedVal func=del&lt;br /&gt;
&lt;br /&gt;
  6. Get all switches passed to the macro&lt;br /&gt;
&lt;br /&gt;
        switch ,, mytable ,, GETALL ,, 1&lt;br /&gt;
&lt;br /&gt;
  7. Use the switches passed to the macro to override a set of defaults&lt;br /&gt;
&lt;br /&gt;
        set t:mytable {SWITCH1=&amp;quot;VALUE1&amp;quot;,SWITCH2=&amp;quot;VALUE2&amp;quot;}&lt;br /&gt;
        switch ,, mytable ,, GETALL ,, 1&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /CS     - Get a case-sensitive value (for FUNC=GET) without requiring user to&lt;br /&gt;
            quote strings.                                         (Since 3.1.2)&lt;br /&gt;
  /QUIET  - Disable verbose messages (overrides universal /VERBOSE switch).&lt;br /&gt;
                                                                   (Since 3.3.0)&lt;br /&gt;
&lt;br /&gt;
  Graphical Command Switches:&lt;br /&gt;
    Applies to anything that extends nxm.sys.lib.MWindow, like PLOT, LIST2,&lt;br /&gt;
      GCONTROLS, etc.&lt;br /&gt;
    /DISPLAY=       - Make window come up in specified display mode:&lt;br /&gt;
                        Icon, Back, Front, or Maximized.           (Since 3.1.1)&lt;br /&gt;
    /EVENTFILTER=   - Window event filter mask (e.g. NoMouse,NoKeyboard,NoMove,&lt;br /&gt;
                      NoPushPop,NoMiddleMouse). For complete list of values&lt;br /&gt;
                      see nxm.sys.libg.MWindow.eventFilterList.    (Since 3.3.1)&lt;br /&gt;
    /ICON           - Make window come up in icon state.           (Since 3.1.0)&lt;br /&gt;
    /NOALTTITLE     - Disables automatic updates to the status/title bar text&lt;br /&gt;
                      from events such as mouse hovers.            (Since 3.3.0)&lt;br /&gt;
    /NOPUSHPOP      - Disable window push/pop out/in of panel. The /EVENTFILTER=&lt;br /&gt;
                      switch takes precedence over this.&lt;br /&gt;
    /SHARETHEME     - Whether or not to have all graphical components share&lt;br /&gt;
                      the same Theme.                              (Since 3.3.0)&lt;br /&gt;
    /THEME=         - Specifies the THEME to use. See EXPLAIN LOOKANDFEEL.&lt;br /&gt;
    /WDISP=         - Specifies the Window DISPlay to use (i.e. specifies which&lt;br /&gt;
                      monitor for systems with 2+ monitors).&lt;br /&gt;
    /WFS=           - Window or widget font size.&lt;br /&gt;
    /WIN=           - Specifies the name of WINdow (or panel) in the registry&lt;br /&gt;
                      that will host this window. If the window name is not&lt;br /&gt;
                      specified, or included in panel config, a new frame is&lt;br /&gt;
                      is created.&lt;br /&gt;
    /WIN.&amp;lt;cmd&amp;gt;=     - Similar to /WIN.&lt;br /&gt;
    /WIN.NEW        - Always open in a new frame.&lt;br /&gt;
    /WPOS=(x,y,w,h) - Window position in pixels. Width and height are optional.&lt;br /&gt;
    /WTITLE=        - Window title.&lt;br /&gt;
&lt;br /&gt;
  Macro Switches:&lt;br /&gt;
    /MSGDEBUG=mask  - Enable debugging printout of messages processed (e.g.&lt;br /&gt;
                      received) by macro. Default for just specifying as a state&lt;br /&gt;
                      switch is NAME|INFO|DATA|QUALS|FID|TID.         [DEF=NONE]&lt;br /&gt;
                                                                   (Since 2.7.1)&lt;br /&gt;
    /SHAREMASK=     - Control whether or not a child macro (a macro called from&lt;br /&gt;
                      another macro) can see the parent's (calling macro) pipes.&lt;br /&gt;
                      Currently the only options are &amp;quot;PIPES&amp;quot;.         [DEF=NONE]&lt;br /&gt;
                                                                   (Since 2.7.3)&lt;br /&gt;
&lt;br /&gt;
  Pipe and File Switches:&lt;br /&gt;
    /AUX=           - Specifies which AUX to use for file. The {AUX=&amp;lt;aux_name&amp;gt;}&lt;br /&gt;
                      file qualifier takes precedence over this.&lt;br /&gt;
    /PS=            - Pipe Size in bytes. [DEF=131072]&lt;br /&gt;
    /TLL=           - TimeLine length [DEF=128]&lt;br /&gt;
    /TLT=           - TimeLine tolerance [DEF=0.1]&lt;br /&gt;
&lt;br /&gt;
  Universal Switches for all command (when handled by NeXtMidas proper):&lt;br /&gt;
    /BG             - Run command in BackGround. [DEF=FALSE]&lt;br /&gt;
    /CMDOPENTIMEOUT=- Provides a way for a command run in a pipe section to NOT&lt;br /&gt;
                      wait for a very slow open() to complete before running&lt;br /&gt;
                      the next command in the pipe section.&lt;br /&gt;
                      [DEF=-1 for effectively infinite] (Since NeXtMidas 2.7.4)&lt;br /&gt;
    /CMDRUNMODE=    - Provides a way for a command to override its default run&lt;br /&gt;
                      mode behaviors. An example of this is running a primitive&lt;br /&gt;
                      to completion in a pipe section. Possible values:&lt;br /&gt;
                        Default         - Use default behavior (this is the&lt;br /&gt;
                                          default)&lt;br /&gt;
                        RunToCompletion - Run command to completion rather than&lt;br /&gt;
                                          following the normal pipe section&lt;br /&gt;
                                          rules, note that this does override&lt;br /&gt;
                                          /BG. (Since NeXtMidas 3.5.4)&lt;br /&gt;
    /ID=            - Associate an ID to a command. Only primitive, host&lt;br /&gt;
                      primitive, or macro IDs are used for message passing,&lt;br /&gt;
                      entry in the registry, etc. [DEF=based on command name]&lt;br /&gt;
    /MSGID=         - Sets the ID of the registry entry that will process&lt;br /&gt;
                      messages sent by this command. Using /MSGID=MAIN will&lt;br /&gt;
                      send all messages to the macro's processMessage procedure.&lt;br /&gt;
                      [DEF=none]&lt;br /&gt;
    /POLL=          - Time (in seconds) between process loops (e.g. reads of a&lt;br /&gt;
                      file) when there are no data to process. [DEF=ENV.PAUSE]&lt;br /&gt;
    /VERBOSE        - Produce more screen (verbose) output. [DEF=FALSE in macro,&lt;br /&gt;
                      TRUE at shell prompt]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=LOCAL&amp;diff=851</id>
		<title>LOCAL</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=LOCAL&amp;diff=851"/>
		<updated>2020-04-27T22:05:17Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: declare results names as local to the macro (deprecated)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;declare results names as local to the macro (deprecated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This command is a placeholder for help in transitioning XMidas scripts to&lt;br /&gt;
NextMidas.  The default behavior within NeXtMidas is to have all results be&lt;br /&gt;
local so this command is not necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=XGEOPLOT&amp;diff=847</id>
		<title>XGEOPLOT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=XGEOPLOT&amp;diff=847"/>
		<updated>2020-04-27T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: ALPHA! - An incomplete drop-in replacement for X-Midas XGEOPLOT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALPHA! - An incomplete drop-in replacement for X-Midas XGEOPLOT&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;SITE&amp;gt;     - Site file&lt;br /&gt;
&amp;lt;SV&amp;gt;       - State Vectors for platform A&lt;br /&gt;
&amp;lt;UNKNOWN&amp;gt;  -&lt;br /&gt;
&amp;lt;REFTIME&amp;gt;  - Reference time of interest in seconds (initial)&lt;br /&gt;
&lt;br /&gt;
This primitive is NOT COMPLETE but is the start of a replacement for the&lt;br /&gt;
X-Midas XGEOPLOT primitive.&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
  NAME     -  DESCRIPTION  (Note: all messages are INcoming)&lt;br /&gt;
  -----------------------------------------------------------------------&lt;br /&gt;
  OVERLAY  -  General Information:&lt;br /&gt;
                  This message is used to overlay a file onto the current file.&lt;br /&gt;
                  If an overlay message arrives which specifies a file that has&lt;br /&gt;
                  already been loaded, that file will be reread. To set additional&lt;br /&gt;
                  arguments or to update the viewable area of the plot when opening, &lt;br /&gt;
                  use the optional message field QUALS=&amp;lt;table&amp;gt;. For more details, see&lt;br /&gt;
                  the plot explain file.&lt;br /&gt;
&lt;br /&gt;
                  INFO = 3-layers 4-events&lt;br /&gt;
                  DATA = &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           -  Optional Fields:&lt;br /&gt;
                  QUALS = {OUTERLIMITS={}, VIEWLIMITS={}}&lt;br /&gt;
&lt;br /&gt;
  T5REC    -  General Information:&lt;br /&gt;
                  This message is a somewhat raw method of altering a LAYERT5 &lt;br /&gt;
                  record.  All type 5000 files are stored internally with a &lt;br /&gt;
                  record structure closely resembling the T5REC message fields.&lt;br /&gt;
&lt;br /&gt;
                  INFO = modmask (i.e. bitmask of fields to modify).  Note: This&lt;br /&gt;
                         information can also be supplied in String form by &lt;br /&gt;
                         having a MODMASK key in the DATA table (MODMASK Data &lt;br /&gt;
                         Field/Table entry will override INFO).&lt;br /&gt;
                         Only those items whose bit in the modmasks field is set&lt;br /&gt;
                         will be updated when the message is received.  For &lt;br /&gt;
                         short, modmask=0 modifies nothing, modmask=-1 modifies&lt;br /&gt;
                         everything.  Bits are numeric starting at 1 for alt, 2&lt;br /&gt;
                         for lat, and so on.  Bit 0 is unused.&lt;br /&gt;
                         Example modmasks:&lt;br /&gt;
                         14=alt,lat,lon  16=name   224=azim,elev,roll 1792=r,a,b&lt;br /&gt;
                         2048=color  12288=symbol,size  49152=cone,invert&lt;br /&gt;
&lt;br /&gt;
           -  Required Data Fields:&lt;br /&gt;
                  L:LAYER  -  The &amp;lt;layer&amp;gt; refers to the layer number associated &lt;br /&gt;
                              with the type5000 data.  If &amp;lt;layer&amp;gt; is negative, &lt;br /&gt;
                              it is the index counting from the last, backward. &lt;br /&gt;
                              (i.e. -1 is the last, -2 is 2nd from the last)  If&lt;br /&gt;
                              &amp;lt;layer&amp;gt; = 0, it refers to the marker record and &lt;br /&gt;
                              index is ignored.&lt;br /&gt;
                  L:INDEX  -  The &amp;lt;index&amp;gt; refers to the record index within the &lt;br /&gt;
                              layer.  If &amp;lt;index&amp;gt; is negative, it is the index &lt;br /&gt;
                              counting from the last, backward. If &amp;lt;index&amp;gt; = 0,&lt;br /&gt;
                              it refers to the entire layer.&lt;br /&gt;
&lt;br /&gt;
           -  Optional Data Fields:&lt;br /&gt;
                  D:ALT    -  Altitude (Geodetic coordinates of the point)&lt;br /&gt;
                  D:LAT    -  Latitude&lt;br /&gt;
                  D:LON    -  Longitude&lt;br /&gt;
                  D:NAME   -  8 character label for the point&lt;br /&gt;
                  D:R      -  Meaning varies and affects interpretation of other&lt;br /&gt;
                              fields as well (see next section)&lt;br /&gt;
                  S:MODMASK-  String representation of bit mask (fields that are&lt;br /&gt;
                              listed will be modified).  Full list:&lt;br /&gt;
                              |ALT|LAT|LON|NAME|AZIM|ELEV|ROLL|R|A|B|COLOR|&lt;br /&gt;
                              SYMBOL|SIZE|CONE|INVERT|&lt;br /&gt;
                  Flag fields:&lt;br /&gt;
                  L:COLOR  - T5 Color number:&lt;br /&gt;
                             1 - Gray (MPlot.T5_INDEX_GRAY)&lt;br /&gt;
                             2 - dark green (MPlot.T5_INDEX_DARK_GREEN)&lt;br /&gt;
                             3 - red (MPlot.T5_INDEX_RED)&lt;br /&gt;
                             4 - yellow (MPlot.T5_INDEX_YELLOW)&lt;br /&gt;
                             5 - green (MPlot.T5_INDEX_GREEN)&lt;br /&gt;
                  B:SYMBOL - 1:DOT, 2:CIRCLE, 3:PLUS, 4:CROSS, 5:UTRI, 6:DTRI&lt;br /&gt;
                  B:SIZE   - diameter of symbol in pixels&lt;br /&gt;
                  B:CONE   - specifies the type of conic to plot:&lt;br /&gt;
                             -9: uses XGEOPLOTs current/default CONELEV&lt;br /&gt;
                             -1: map cone to intersection with geosphere&lt;br /&gt;
                              0: off - no conic&lt;br /&gt;
                              N: number of sections (rings) along cone centerline&lt;br /&gt;
                  B:INVERT -  the cone is inverted, ie. the base of the cone&lt;br /&gt;
                              and the vertex are swapped.&lt;br /&gt;
                              (saved, but not used at this time)&lt;br /&gt;
&lt;br /&gt;
           -  Optional Data Fields Where Interpretation depends value of R:&lt;br /&gt;
              [R &amp;gt; 1 or not specified case - WARNING: Currently Unimplemented]:&lt;br /&gt;
                  D:AZIM   - Azimuth   | Used along with ELEV and ROLL to apply&lt;br /&gt;
                  D:ELEV   - Elevation | a coordinate reorientation at the &lt;br /&gt;
                  D:ROLL   - Roll      | geodetic position.  If all are zero, Z &lt;br /&gt;
                                       | points up, X points east, and Y north.&lt;br /&gt;
                                       | Conics are formed along the Z axis.&lt;br /&gt;
                  D:R      - Height of the conic&lt;br /&gt;
                  D:A      - Major half angle for the cone&lt;br /&gt;
                             (saved, but not used at this time)&lt;br /&gt;
                  D:B      - Minor half angle for the cone&lt;br /&gt;
                             (saved, but not used at this time)&lt;br /&gt;
              R = -1 case (cone):&lt;br /&gt;
                  D:AZIM   - ALT2 | Used along with LAT2 and LON2 to define&lt;br /&gt;
                  D:ELEV   - LAT2 | a second point. If any flag data fields are&lt;br /&gt;
                  D:ROLL   - LON2 | set, this point is the position the cone is &lt;br /&gt;
                                  | originating from (the viewer) and the first&lt;br /&gt;
                                  | point is the target location (the point the&lt;br /&gt;
                                  | viewer is looking at).  If no flag fields&lt;br /&gt;
                                  | are set, the points are reversed (this point&lt;br /&gt;
                                  | is the target and the first point the&lt;br /&gt;
                                  | viewer)&lt;br /&gt;
              R = 0 case (error ellipses):&lt;br /&gt;
                  D:AZIM   - ellipse orientation  | An error ellipse is a &lt;br /&gt;
                  D:A      - ellipse major radius | special case of a conic. &lt;br /&gt;
                  D:B      - ellipse minor radius |&lt;br /&gt;
&lt;br /&gt;
  T5TEXT   -  General Information:&lt;br /&gt;
                  This is a special case of the T5REC used to plot text strings.&lt;br /&gt;
&lt;br /&gt;
                  INFO = modmask (i.e. bitmask of fields to modify).  Note: This&lt;br /&gt;
                         information can also be supplied in String form by &lt;br /&gt;
                         having a MODMASK key in the DATA table (MODMASK Data &lt;br /&gt;
                         Field/Table entry will override INFO).&lt;br /&gt;
                         Only those items whose bit in the modmasks field is set&lt;br /&gt;
                         will be updated when the message is received.  For &lt;br /&gt;
                         short, modmask=0 modifies nothing, modmask=-1 modifies&lt;br /&gt;
                         everything.  Bits are numeric starting at 1 for alt, 2&lt;br /&gt;
                         for lat, and so on.  Bit 0 is unused.&lt;br /&gt;
                         Example modmasks:&lt;br /&gt;
                         14=alt,lat,lon  16=name  32=text  64=color&lt;br /&gt;
                         384=symbol,size&lt;br /&gt;
&lt;br /&gt;
           -  Required Data Fields:&lt;br /&gt;
                  L:LAYER  -  The &amp;lt;layer&amp;gt; refers to the layer number associated &lt;br /&gt;
                              with the type5000 data.  If &amp;lt;layer&amp;gt; is negative, &lt;br /&gt;
                              it is the index counting from the last, backward. &lt;br /&gt;
                              (i.e. -1 is the last, -2 is 2nd from the last)  If&lt;br /&gt;
                              &amp;lt;layer&amp;gt; = 0, it refers to the marker record and &lt;br /&gt;
                              index is ignored.&lt;br /&gt;
                  L:INDEX  -  The &amp;lt;index&amp;gt; refers to the record index within the &lt;br /&gt;
                              layer.  If &amp;lt;index&amp;gt; = 0, it refers to the entire&lt;br /&gt;
                              layer. If &amp;lt;index&amp;gt; is negative, it refers to the &lt;br /&gt;
                              last index.&lt;br /&gt;
                              (NOT IMPLEMENTED: If &amp;lt;index&amp;gt; is negative,&lt;br /&gt;
                              it is the index counting from the last, backward.)&lt;br /&gt;
&lt;br /&gt;
           -  Optional Data Fields:&lt;br /&gt;
                  D:ALT    -  Altitude (Geodetic coordinates of the point)&lt;br /&gt;
                  D:LAT    -  Latitude&lt;br /&gt;
                  D:LON    -  Longitude&lt;br /&gt;
                  D:NAME   -  8 character label for the point&lt;br /&gt;
                  S:TEXT   -  text string &lt;br /&gt;
                              (saved, but not displayed)&lt;br /&gt;
                              [Also NOT implemented: An &amp;quot;@&amp;quot; in the text is &lt;br /&gt;
                              treated as a CR/LF and the remaining text is &lt;br /&gt;
                              displayed on the next line.]&lt;br /&gt;
                  S:MODMASK-  String representation of bit mask (fields that are&lt;br /&gt;
                              listed will be modified).  Full list:&lt;br /&gt;
                              |ALT|LAT|LON|NAME|TEXT|COLOR|SYMBOL|SIZE|CONE|&lt;br /&gt;
                              INVERT|&lt;br /&gt;
&lt;br /&gt;
  T5LAYER  -  General Information:&lt;br /&gt;
                  This message is used to modify the structure of a type 5000&lt;br /&gt;
                  layer&lt;br /&gt;
&lt;br /&gt;
                  INFO = layer number&lt;br /&gt;
&lt;br /&gt;
           -  Data Fields:&lt;br /&gt;
                  S:ACTION - &amp;quot;DELETE&amp;quot; deletes points indexed P1 through P2&lt;br /&gt;
                                      P2 = -1 refers to the last point&lt;br /&gt;
                                      &amp;lt;TODO&amp;gt;&lt;br /&gt;
                             &amp;quot;COPY&amp;quot;   copies point index P1 to P2&lt;br /&gt;
                                      &amp;lt;p2&amp;gt; = 0 appends the point to the end&lt;br /&gt;
                                      &amp;lt;TODO&amp;gt;&lt;br /&gt;
                             &amp;quot;CREATE&amp;quot; creates a layer with P1 points&lt;br /&gt;
                                      INFO=0 is one after the last layer&lt;br /&gt;
                  L:P1     - first point  (1 indexed) / number of points&lt;br /&gt;
                  L:P2     - second point (inclusive &amp;amp; 1 indexed) / &amp;lt;not used&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  SETVIEW  -  General Information:&lt;br /&gt;
                  Set the view&lt;br /&gt;
&lt;br /&gt;
                  INFO = View:&lt;br /&gt;
                                  1: LATLON&lt;br /&gt;
                                  2: PERSP        &amp;lt;unsupported&amp;gt;&lt;br /&gt;
                                  3: SVA          &amp;lt;unsupported&amp;gt;&lt;br /&gt;
                                  4: SVB          &amp;lt;unsupported&amp;gt;&lt;br /&gt;
                           negative: split mode   &amp;lt;unsupported&amp;gt;&lt;br /&gt;
&lt;br /&gt;
           -  Required Data Fields:&lt;br /&gt;
                  D:VAL1 = longitude min&lt;br /&gt;
                  D:VAL2 = longitude max&lt;br /&gt;
                  D:VAL3 = latitude min&lt;br /&gt;
                  D:VAL4 = latitude max&lt;br /&gt;
&lt;br /&gt;
           -  Optional Data Fields &amp;lt;UNSUPPORTED&amp;gt;&lt;br /&gt;
                  eyelat/lon/dis = viewing lat/lon/distance for perspective mode&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  1. Use T5REC message to add/merge Point 1 with Error Ellipse component on &lt;br /&gt;
     Layer 2. (uses String MODMASK)&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=0 NAME=&amp;quot;T5REC&amp;quot; &amp;amp;&lt;br /&gt;
     DATA={Layer=2,INDEX=1,&amp;amp;&lt;br /&gt;
     ModMask=&amp;quot;ALT|LAT|LON|R|AZIM|A|B|COLOR|CONE|NAME|SYMBOL|SIZE&amp;quot;, &amp;amp;&lt;br /&gt;
     ALT=45.0,LAT=0.5,LON=0.5,R=0,AZIM=15.0,A=300000.0,B=70000.0,COLOR=2, &amp;amp;&lt;br /&gt;
     CONE=-9, SYMBOL=5,SIZE=3,NAME=PNT1REC}&lt;br /&gt;
&lt;br /&gt;
  2. Use T5REC message to add/merge Point 2 with Cone component on Layer 3&lt;br /&gt;
     (uses String MODMASK)&lt;br /&gt;
&lt;br /&gt;
  invoke red nxm.sys.libg.MColor.T5_INDEX_RED&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=0 NAME=&amp;quot;T5REC&amp;quot; &amp;amp;&lt;br /&gt;
     DATA={Layer=3,INDEX=2, &amp;amp;&lt;br /&gt;
     ModMask=&amp;quot;ALT|LAT|LON|R|AZIM|ELEV|ROLL|COLOR|CONE|NAME|SYMBOL|SIZE&amp;quot;,&amp;amp;&lt;br /&gt;
     ALT=1000000.0,LAT=1,LON=5,R=-1,AZIM=7.0,ELEV=5.0,ROLL=0.0,COLOR=^red, &amp;amp;&lt;br /&gt;
     CONE=-9, SYMBOL=5,SIZE=3,NAME=PNT2REC}&lt;br /&gt;
&lt;br /&gt;
  4. Use T5REC message to modify all points in the Layer to have Longitude 6.0&lt;br /&gt;
     and have the color gray. (uses INFO for modmask)&lt;br /&gt;
&lt;br /&gt;
  invoke gray  nxm.sys.libg.MColor.T5_INDEX_GRAY&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=72 NAME=&amp;quot;T5REC&amp;quot; &amp;amp;&lt;br /&gt;
             DATA={Layer=4,INDEX=0,LON=6.0,COLOR=1}&lt;br /&gt;
&lt;br /&gt;
  5. Use T5TEXT message to add Point with TEXT/NOTE component on third LayerT5&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=-1 NAME=&amp;quot;T5TEXT&amp;quot;, DATA={Layer=4,INDEX=3, &amp;amp;&lt;br /&gt;
     ModMask=&amp;quot;ALT|LAT|LON|NAME|COLOR|SYMBOL|TEXT|SIZE|INVERT&amp;quot;,ALT=55.0,LAT=2, &amp;amp;&lt;br /&gt;
     LON=2,COLOR=4,SYMBOL=2,SIZE=3,INVERT=1,NAME=PNT3TEXT, TEXT=NoteToDisplay}&lt;br /&gt;
&lt;br /&gt;
  6. Use T5LAYER ACTION=CREATE message to create a LayerT5&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=1 NAME=&amp;quot;T5LAYER&amp;quot; &amp;amp;&lt;br /&gt;
              DATA={ACTION=&amp;quot;CREATE&amp;quot;,P1=1}&lt;br /&gt;
&lt;br /&gt;
  7. Use T5LAYER ACTION=DELETE message to delete Points 1 to 2 in Layer 1&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=1 NAME=&amp;quot;T5LAYER&amp;quot; &amp;amp;&lt;br /&gt;
              DATA={ACTION=&amp;quot;DELETE&amp;quot;,P1=1,P2=2}&lt;br /&gt;
&lt;br /&gt;
  8. Use T5LAYER ACTION=DELETE message to delete Points 4 to the end in the&lt;br /&gt;
     layer defined as citiesLayer&lt;br /&gt;
&lt;br /&gt;
  set L:layNum ^citiesLayer&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=^layNum NAME=&amp;quot;T5LAYER&amp;quot; &amp;amp;&lt;br /&gt;
              DATA={ACTION=&amp;quot;DELETE&amp;quot;,P1=4,P2=-1}&lt;br /&gt;
&lt;br /&gt;
  9. Use T5LAYER ACTION=COPY to make Point 1 a copy of Point 3&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=3 NAME=&amp;quot;T5LAYER&amp;quot; &amp;amp;&lt;br /&gt;
              DATA={ACTION=&amp;quot;COPY&amp;quot;,P1=3,P2=1}&lt;br /&gt;
&lt;br /&gt;
  10. Use T5LAYER ACTION=COPY to append copy of Point 3 to the existing points&lt;br /&gt;
&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=3 NAME=&amp;quot;T5LAYER&amp;quot; &amp;amp;&lt;br /&gt;
              DATA={ACTION=&amp;quot;COPY&amp;quot;,P1=3,P2=0}&lt;br /&gt;
&lt;br /&gt;
  11. Use SETVIEW to zoom in&lt;br /&gt;
&lt;br /&gt;
  set box {MINLON=-1,MAXLON=8,MINLAT=-3,MAXLAT=5}&lt;br /&gt;
  message FUNC=SEND ID=^XGEOID INFO=1 NAME=&amp;quot;SETVIEW&amp;quot; &amp;amp;&lt;br /&gt;
     DATA={VAL1=^box.minLon,VAL2=^box.maxLon,VAL3=^box.minLat,VAL4=^box.maxLat} &lt;br /&gt;
     &lt;br /&gt;
  12. Use OVERLAY message to add a file to the current file.&lt;br /&gt;
  &lt;br /&gt;
  message FUNC=SEND ID=^XGEOID NAME=OVERLAY INFO=3 DATA=&amp;quot;temp_xgeo_cities&amp;quot; QUALS={OUTERLIMITS={x1=-100}}&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /DEBUG - Switch description&lt;br /&gt;
  /XN    - Window title&lt;br /&gt;
  /MTAG  - Switch description&lt;br /&gt;
  /MSGID - Switch description&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=KEYWORD&amp;diff=848</id>
		<title>KEYWORD</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=KEYWORD&amp;diff=848"/>
		<updated>2020-04-27T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: facility for displaying and changing keyword fields in a file header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;facility for displaying and changing keyword fields in a file header&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file&amp;gt;  File to access&lt;br /&gt;
&amp;lt;func&amp;gt;  Keyword function to perform on file&lt;br /&gt;
&amp;lt;name&amp;gt;  Keyword name, if applicable for &amp;lt;func&amp;gt;&lt;br /&gt;
&amp;lt;value&amp;gt; Keyword value, if applicable for &amp;lt;func&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KEYWORD provides access to the keyword fields in a file header.  Keywords&lt;br /&gt;
allow unrestricted free-format information storage in a KEY=VALUE format.&lt;br /&gt;
Keywords are typically stored in the extended header, which is extensible to&lt;br /&gt;
any size.&lt;br /&gt;
&lt;br /&gt;
The main header also has limited keyword storage (88 characters).  In general,&lt;br /&gt;
the user should use the EXTENDED header for keywords and reserve the MAIN&lt;br /&gt;
header keyword space for system use.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
&lt;br /&gt;
  ADD    Add a keyword in the MAIN or EXTENDED header. SET with flags=ADD.&lt;br /&gt;
         This can result in more than one key with the same name in the same&lt;br /&gt;
         scope. Multiple keywords can be added at once by specifying a list of&lt;br /&gt;
         name/value pairs.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; ADD NAME=&amp;lt;name&amp;gt; VALUE=&amp;lt;value&amp;gt; [&amp;lt;name2&amp;gt; &amp;lt;value2&amp;gt; ...]&lt;br /&gt;
&lt;br /&gt;
  DEL    Delete a keyword&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; DEL NAME=&amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  FGET   Create an ASCII text file (&amp;lt;file&amp;gt;) containing the keywords and their&lt;br /&gt;
         character string values. If &amp;lt;name&amp;gt; is not given, the output goes&lt;br /&gt;
         to a file called &amp;quot;&amp;lt;file&amp;gt;.key&amp;quot;, in the same directory as &amp;lt;file&amp;gt;.&lt;br /&gt;
         See section &amp;quot;.KEY FILES&amp;quot; below for more on the format of the .KEY file.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; FGET &amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  FPUT   Alias for FSET.&lt;br /&gt;
&lt;br /&gt;
  FSET   Replace current keyword entries by the entries in an ASCII keyword&lt;br /&gt;
         file (&amp;lt;name&amp;gt;). If &amp;lt;name&amp;gt; is not given, KEYWORD looks for a file called&lt;br /&gt;
         &amp;quot;&amp;lt;file&amp;gt;.key&amp;quot; in the same directory as the &amp;lt;file&amp;gt;. See section&lt;br /&gt;
         &amp;quot;.KEY FILES&amp;quot; below for more on the format of the .KEY file.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; FSET &amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  GET    Get a keyword or keywords from the MAIN or EXTENDED header.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; GET NAME=&amp;lt;name&amp;gt; VALUE=&amp;lt;result name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         Since NeXtMidas 2.5.0, multiple keywords can be retrieved on a single&lt;br /&gt;
         line.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; GET &amp;lt;KEYNAME1&amp;gt; &amp;lt;RESULTNAME1&amp;gt; [&amp;lt;KEYNAMEn&amp;gt; &amp;lt;RESULTNAMEn&amp;gt;...]&lt;br /&gt;
&lt;br /&gt;
  LIST   List to terminal all keywords matching &amp;lt;name&amp;gt; and their values in&lt;br /&gt;
         both main and extended headers; or all keywords if &amp;lt;name&amp;gt; is blank&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; LIST             ! list all keywords&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; LIST &amp;lt;name&amp;gt;      ! list only those matching &amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         Since NeXtMidas 2.7.0, &amp;lt;name&amp;gt; can be a wild-card pattern to indicate&lt;br /&gt;
         that all matching keywords should be listed (e.g. &amp;quot;*EX*&amp;quot; would list&lt;br /&gt;
         all keywords containing an &amp;quot;EX&amp;quot; in the name, &amp;quot;?VAL&amp;quot; will match any&lt;br /&gt;
         four-letter keywords ending in &amp;quot;VAL&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; LIST &amp;lt;name&amp;gt;      ! list keywords matching pattern &amp;lt;name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         Optional flags:&lt;br /&gt;
           /S   - Sort entries before printing to terminal. Note that this will&lt;br /&gt;
                  attempt a &amp;quot;friendly sort&amp;quot; such that &amp;quot;ABC2&amp;quot; comes before&lt;br /&gt;
                  &amp;quot;ABC12&amp;quot;, but does not preserve any internal scoping of the&lt;br /&gt;
                  keywords (other than MAIN vs EXT).     [Since NeXtMidas 3.3.0]&lt;br /&gt;
&lt;br /&gt;
  PUT    Alias for SET.&lt;br /&gt;
&lt;br /&gt;
  SET    Put a keyword in the MAIN or EXTENDED header. This will replace the&lt;br /&gt;
         named key in the same scope at the original location. Multiple keywords&lt;br /&gt;
         can be set at once by specifying a list of name/value pairs.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; PUT NAME=&amp;lt;name&amp;gt; VALUE=&amp;lt;value&amp;gt; [&amp;lt;name2&amp;gt; &amp;lt;value2&amp;gt; ...]&lt;br /&gt;
&lt;br /&gt;
  SVGET                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
         Gets state vector keywords from the file. One of the following&lt;br /&gt;
         modifiers may be included to specify the keyword format (if no&lt;br /&gt;
         qualifiers are specified an attempt will be made to try all available&lt;br /&gt;
         formats):&lt;br /&gt;
           /E   - Ephemeral keywords: ETIMn, POSXn, POSYn, POSZn, etc.&lt;br /&gt;
           /P   - Platinum keywords:  [prefix].TIME, [prefix]_POS.X,.Y,.Z, etc.&lt;br /&gt;
           /L   - Platinum keywords:  [prefix].LON,.LAT,.ALT&lt;br /&gt;
           /V   - Vector keywords:    ETIM_VEC, POSX_VEC, POSY_VEC, etc.&lt;br /&gt;
&lt;br /&gt;
         Note that the {SVPREFIX=[prefix]} qualifier should be used to set the&lt;br /&gt;
         prefix as needed for /P and /L modes (if not specified, it defaults to&lt;br /&gt;
         &amp;quot;EPH&amp;quot; with /P).&lt;br /&gt;
&lt;br /&gt;
         The /DT= switch will force all points to have the given time-delta&lt;br /&gt;
         between them rather than exactly matching the input points. If /DT=0&lt;br /&gt;
         the time delta will be set based on the keywords (defaulting to 1 min&lt;br /&gt;
         if the keywords are not evenly spaced). If the output is a Type 5000&lt;br /&gt;
         file, /DT=0 is implicit unless otherwise specified.&lt;br /&gt;
&lt;br /&gt;
         The output will be written to the specified state vector file. If the&lt;br /&gt;
         file already exists, any data in the file will be overwritten; if not,&lt;br /&gt;
         a new file will be created. For a BLUE file (.tmp/.prm) the output will&lt;br /&gt;
         be a Type 5001 file unless the TYPE= qualifier is used to designate an&lt;br /&gt;
         alternate type. All Type 5000 files will have their QUADWORDS set as&lt;br /&gt;
         appropriate. Usage:&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; SVGET/E &amp;lt;svFile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  SVPUT                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
           Alias for SVSET.&lt;br /&gt;
&lt;br /&gt;
  SVSET                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
         Sets state vector keywords into the file. Must include one or more of&lt;br /&gt;
         the following modifier switches indicating the state vector format:&lt;br /&gt;
           /E   - Ephemeral keywords: ETIMn, POSXn, POSYn, POSZn, etc.&lt;br /&gt;
           /P   - Platinum keywords:  [prefix].TIME, [prefix]_POS.X,.Y,.Z, etc.&lt;br /&gt;
           /L   - Platinum keywords:  [prefix].LON,.LAT,.ALT&lt;br /&gt;
           /V   - Vector keywords:    ETIM_VEC, POSX_VEC, POSY_VEC, etc.&lt;br /&gt;
&lt;br /&gt;
         Note that the {SVPREFIX=[prefix]} qualifier should be used to set the&lt;br /&gt;
         prefix as needed for /P and /L modes (if not specified, it defaults to&lt;br /&gt;
         &amp;quot;EPH&amp;quot; with /P).&lt;br /&gt;
&lt;br /&gt;
         Usage:&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; SVSET/E &amp;lt;svFile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  TCGET                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
         Gets time-code keywords from the file. Must specify one input and one&lt;br /&gt;
         output modifier from following:&lt;br /&gt;
           Input Options:&lt;br /&gt;
             /X - X-Midas style keywords: TC_WHOLE_n, TC_FRAC_n, etc.&lt;br /&gt;
           Output Options:&lt;br /&gt;
             /I - ICE packets&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; SVGET/X/I &amp;lt;ice_pkt_file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  TCPUT                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
         Alias for TCSET.&lt;br /&gt;
&lt;br /&gt;
  TCSET                                                  [Since NeXtMidas 3.3.0]&lt;br /&gt;
         Sets time-code keywords in the file. Must specify one input and one&lt;br /&gt;
         output modifier from following:&lt;br /&gt;
           Input Options:&lt;br /&gt;
             /I - ICE packets&lt;br /&gt;
           Output Options:&lt;br /&gt;
             /X - X-Midas style keywords: TC_WHOLE_n, TC_FRAC_n, etc.&lt;br /&gt;
&lt;br /&gt;
         Usage:&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; SVSET/I/X &amp;lt;ice_pkt_file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  TGET   Create a Results Table (&amp;lt;name&amp;gt;) containing the keywords and their&lt;br /&gt;
         values. If &amp;lt;name&amp;gt; is not given, the output goes to a Results Table&lt;br /&gt;
         which uses the root of &amp;lt;file&amp;gt; for its table name (e.g. MYFILE for&lt;br /&gt;
         &amp;quot;myfile.prm&amp;quot;). NOTE: For SCOPED Keywords, only the values in the&lt;br /&gt;
         final SCOPE will appear in the Results Table when the /SCOPE switch&lt;br /&gt;
         is NOT used.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; TGET &amp;lt;name&amp;gt;              ! Create a &amp;quot;flat&amp;quot; table&lt;br /&gt;
&lt;br /&gt;
         or&lt;br /&gt;
&lt;br /&gt;
           KEY/FLAT=F &amp;lt;file&amp;gt; TGET &amp;lt;name&amp;gt;       ! Create a table with INNER&lt;br /&gt;
                                               ! and EXTENDED inner tables&lt;br /&gt;
&lt;br /&gt;
  TGET/F Similar to TGET except that keywords are written to a .tbl file&lt;br /&gt;
         (&amp;lt;name&amp;gt;) rather than a table in the results table.&lt;br /&gt;
&lt;br /&gt;
           KEY &amp;lt;file&amp;gt; TGET/F &amp;lt;name&amp;gt;            ! Create a table file&lt;br /&gt;
&lt;br /&gt;
         or&lt;br /&gt;
&lt;br /&gt;
           KEY/FLAT=F &amp;lt;file&amp;gt; TGET/F &amp;lt;name&amp;gt;     ! Create a table file with&lt;br /&gt;
                                               ! INNER and EXTENDED inner tables&lt;br /&gt;
&lt;br /&gt;
.KEY FILES&lt;br /&gt;
  The .KEY file used by FGET and FSET have one keyword name/value pair per line.&lt;br /&gt;
&lt;br /&gt;
  The format is:&lt;br /&gt;
&lt;br /&gt;
          NAME=VALUE    ! single &amp;quot;=&amp;quot; for main header&lt;br /&gt;
          NAME==VALUE   ! double &amp;quot;==&amp;quot; for extended header&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;NAME&amp;quot; can start in any column.  &amp;quot;VALUE&amp;quot; is interpreted literally (no quotes&lt;br /&gt;
  needed, space retained) and stored by default in ASCII.  NAME can be preceded&lt;br /&gt;
  by a type character as with results parameters, to typecast the value as&lt;br /&gt;
  numeric (with binary storage).  The special type &amp;quot;S[&amp;lt;len&amp;gt;]&amp;quot;  means an ASCII&lt;br /&gt;
  string of length &amp;lt;len&amp;gt;; this is a way of forcing/capturing trailing spaces.&lt;br /&gt;
  Keyword arrays are represented by type-casting to numeric and separating the&lt;br /&gt;
  keyword values with commas.  A &amp;quot;&amp;amp;&amp;quot; at the end of the line forces continuation&lt;br /&gt;
  to the next line.  Blank lines or anything after a &amp;quot;!&amp;quot; are interpreted as a&lt;br /&gt;
  comment and ignored.&lt;br /&gt;
&lt;br /&gt;
  To load all key/value pairs into the extended header, use the /EXTONLY switch.&lt;br /&gt;
  This is useful for loading a 3rd party key=value text file into the&lt;br /&gt;
  extended header without having to change = to == in the text file.&lt;br /&gt;
  Use this switch to revert to behavior prior to NeXtMidas 3.1.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KEYWORD SCOPE&lt;br /&gt;
  Keyword &amp;quot;scope&amp;quot; refers to the keyword storage range actually visible at any&lt;br /&gt;
  given time.  By default, the entire extended header is visible.&lt;br /&gt;
&lt;br /&gt;
  Special scope syntax:&lt;br /&gt;
    * To access keywords in the main header, use /SCOPE=MAIN.&lt;br /&gt;
    * To access keywords at the start of the EXTENDED header, use /SCOPE=EXT.&lt;br /&gt;
    * To INCLUDE the scope keyword in your output use /SCOPE=TAG=VALUE&lt;br /&gt;
    * To EXCLUDE the scope keyword in your output use /SCOPE=TAG-=VALUE&lt;br /&gt;
    * To EXCLUDE the scope keyword but INCLUDE the next use /SCOPE=TAG+=VALUE&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Create a file, put a keyword in it and extract it.&lt;br /&gt;
      nM&amp;gt; header/create junk.tmp&lt;br /&gt;
      nM&amp;gt; key junk.tmp PUT mykey &amp;quot;INITIAL VALUE&amp;quot;&lt;br /&gt;
      nM&amp;gt; key junk.tmp GET mykey myval&lt;br /&gt;
      nM&amp;gt; res myval&lt;br /&gt;
      13S: MYVAL           = INITIAL VALUE&lt;br /&gt;
&lt;br /&gt;
  2. Replace the value of the keyword inserted above with a new value&lt;br /&gt;
      nM&amp;gt; key junk.tmp PUT mykey &amp;quot;NEW VALUE&amp;quot;&lt;br /&gt;
      nM&amp;gt; key junk.tmp GET mykey myval&lt;br /&gt;
      nM&amp;gt; res myval&lt;br /&gt;
       9S: MYVAL           = NEW VALUE&lt;br /&gt;
&lt;br /&gt;
  3. Scope with multiple keywords. Put the DUMMY keyword in twice and&lt;br /&gt;
     Now use scope to get the second DUMMY keyword.&lt;br /&gt;
      nM&amp;gt; header/create junk.tmp&lt;br /&gt;
      nM&amp;gt; keyword junk.tmp PUT DUMMY DUMMY1  TAG2 VAL2  NODE MYNODE&lt;br /&gt;
      nM&amp;gt; keyword junk.tmp ADD DUMMY DUMMY2&lt;br /&gt;
      nM&amp;gt; keyword/scope=&amp;quot;TAG=NAME,NODE=MYNODE&amp;quot; junk.tmp GET DUMMY out&lt;br /&gt;
      nM&amp;gt; res out&lt;br /&gt;
       6S: OUT             = DUMMY2&lt;br /&gt;
&lt;br /&gt;
    NOTE: Using () around the scope keyword works as well.&lt;br /&gt;
      nM&amp;gt; keyword/scope=(TAG=NAME,NODE=MYNODE) junk.tmp GET DUMMY out&lt;br /&gt;
&lt;br /&gt;
  4. Special syntax for /SCOPE. For a file with the keyword list:&lt;br /&gt;
      TIME==12:00&lt;br /&gt;
      FREQ==31e6&lt;br /&gt;
      AMPL==1.1&lt;br /&gt;
      TIME==13:00&lt;br /&gt;
      FREQ==32e6&lt;br /&gt;
      AMPL==1.2&lt;br /&gt;
      TIME==14:00&lt;br /&gt;
      FREQ==33e6&lt;br /&gt;
      AMPL==1.3&lt;br /&gt;
&lt;br /&gt;
      KEY/SCOPE=TIME=13:00&lt;br /&gt;
              (includes TIME=13:00, FREQ=32e6, and AMPL=1.2 in scope)&lt;br /&gt;
&lt;br /&gt;
      KEY/SCOPE=TIME-=13:00   ! &amp;quot;-=&amp;quot; means skip /scope keyword&lt;br /&gt;
              (skips TIME=13:00, includes FREQ=32e6 and AMPL=1.2 in scope)&lt;br /&gt;
&lt;br /&gt;
      KEY/SCOPE=TIME+=13:00   ! &amp;quot;+=&amp;quot; means skip /scope keyword, include next&lt;br /&gt;
              (skips TIME=13:00, includes FREQ=32e6, AMPL=1.2, TIME=14:00)&lt;br /&gt;
&lt;br /&gt;
  5. PUT a &amp;quot;D_VEC&amp;quot; keyword containing a vectorized list/array of doubles&lt;br /&gt;
      nM&amp;gt; keyword junk.tmp PUT &amp;quot;D_VEC&amp;quot; (1.1,2.2,3.3,4.4,5.5)&lt;br /&gt;
&lt;br /&gt;
     PUT a &amp;quot;I_VEC&amp;quot; keyword containing a vectorized list/array of short integers&lt;br /&gt;
      nM&amp;gt; res I:data (1,2,3)&lt;br /&gt;
      nM&amp;gt; keyword junk.tmp PUT &amp;quot;I_VEC&amp;quot; data&lt;br /&gt;
&lt;br /&gt;
  6. ADD multiple keywords using a single command&lt;br /&gt;
      nM&amp;gt; keyword junk.tmp ADD KEY1 &amp;quot;1st-Val&amp;quot; KEY2 &amp;quot;2nd-Val&amp;quot; THIRDKEY &amp;quot;3rd-Val&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /DT=     - Override the time delta used for SVGET.&lt;br /&gt;
  /EXTONLY - FPUT or FSET only. Load all key/value pairs from .KEY file into the&lt;br /&gt;
             extended header. (Since NeXtMidas 3.1.2) [DEF=FALSE]&lt;br /&gt;
  /FLAGS=  - Keywords flags/settings to use. [DEF=none, NoAbort for FUNC=LIST]&lt;br /&gt;
               NoAbort - Try to continue when an invalid keyword block is found.&lt;br /&gt;
               See also nxm.sys.lib.Keywords.flagsList. (Since NeXtMidas 3.1.1)&lt;br /&gt;
  /FLAT    - TGET or TGET/F only.  Generate a flat table or a table with&lt;br /&gt;
             inner tables MAIN and EXTENDED [DEF=TRUE]&lt;br /&gt;
  /LEGACYLIST - For LIST only, use old listing format prior to NeXtMidas 3.3.0&lt;br /&gt;
             that has paging enabled.        (Since NeXtMidas 3.5.4) [DEF=FALSE]&lt;br /&gt;
  /PREFIX= - Sets the prefix used with Platinum keywords in SVGET and SVSET.&lt;br /&gt;
  /SCOPE=  - restricts range of keywords currently visible.&lt;br /&gt;
               /SCOPE=MAIN will GET or SET in the main header.&lt;br /&gt;
               /SCOPE=EXT will GET or SET at the start of the extended header.&lt;br /&gt;
               /SCOPE=ALL will GET or SET in the main or extended header.&lt;br /&gt;
                      This is the equivalent of a space &amp;quot; &amp;quot; in X-Midas.&lt;br /&gt;
  /WARN    - State switch for warnings [DEF=TRUE]&lt;br /&gt;
&lt;br /&gt;
See Also: STATUS, nxm.sys.lib.Keywords&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=REPORT&amp;diff=849</id>
		<title>REPORT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=REPORT&amp;diff=849"/>
		<updated>2020-04-27T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: turns on/off reporting of INFO/WARN/ERROR messages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;turns on/off reporting of INFO/WARN/ERROR messages&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FUNC&amp;gt; - Function = ON|FLUSH|OFF|SAVEOFF|AUTOSAVE&lt;br /&gt;
&amp;lt;FILE&amp;gt; - Logging file name for ON function [DEF=midas_log.mlog]&lt;br /&gt;
         NOTE: any filename extension is currently overridden with .mlog.&lt;br /&gt;
&lt;br /&gt;
Reports Midas INFO/WARNING/ERROR messages to a display (terminal) and/or file.&lt;br /&gt;
&lt;br /&gt;
The log file is saved as a Type 3000 of NH format with following sub-records:&lt;br /&gt;
 1. SubRecord Name=TIME  Format=3A  Offset=0   - STD Date/time of message&lt;br /&gt;
 2. SubRecord Name=TYPE  Format=1A  Offset=24  - e.g. WARN, INFO, ERROR, etc.&lt;br /&gt;
 3. SubRecord Name=TEXT  Format=XA  Offset=32  - text of message &lt;br /&gt;
 4. SubRecord Name=FROM  Format=2A  Offset=112 - source of message&lt;br /&gt;
&lt;br /&gt;
Warning: Interactive commands's terminal output will be NOT be displayed when&lt;br /&gt;
         logging to a file is enabled, because it goes to the log file.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=EXIT&amp;diff=843</id>
		<title>EXIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=EXIT&amp;diff=843"/>
		<updated>2020-04-27T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: exit from NeXtMidas environment back to operating system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;exit from NeXtMidas environment back to operating system&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXIT returns to the operating system.  After EXIT, you can re-enter the &lt;br /&gt;
NeXtMidas environment by typing &amp;quot;nm&amp;quot; at the operating system prompt. If you are&lt;br /&gt;
really done with a session, type &amp;quot;nm end&amp;quot; at the operating system prompt, to&lt;br /&gt;
flush history buffer and delete any NeXtMidas symbols tables (this includes the&lt;br /&gt;
&amp;quot;nmsf_..&amp;quot; file a NeXtMidas session puts in the user's home directory). Then&lt;br /&gt;
restart NeXtMidas with an nmstart.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ABSCISSA&amp;diff=844</id>
		<title>ABSCISSA</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ABSCISSA&amp;diff=844"/>
		<updated>2020-04-27T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: alters abscissa fields in a Midas data file header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;alters abscissa fields in a Midas data file header&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file&amp;gt;          Name of input file&lt;br /&gt;
&amp;lt;start value&amp;gt;   New abscissa start value&lt;br /&gt;
&amp;lt;increment&amp;gt;     New abscissa increment value&lt;br /&gt;
&lt;br /&gt;
DEPRECATED: Use HEADERMOD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;increment&amp;gt; is the double precision increment between consecutive points or &lt;br /&gt;
number of current abscissa increments (integer) by which current start abscissa&lt;br /&gt;
should be changed.&lt;br /&gt;
&lt;br /&gt;
ABSCISSA accepts any type class or data format.  The header is not modified if &lt;br /&gt;
its write protect field is set to TRUE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=DEMUX&amp;diff=845</id>
		<title>DEMUX</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=DEMUX&amp;diff=845"/>
		<updated>2020-04-27T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: decomposes complex file into separate real and imag output files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;decomposes complex file into separate real and imag output files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;COMP&amp;gt; - Type 1000 COMPLEX input file&lt;br /&gt;
&amp;lt;REAL&amp;gt; - Real part output file&lt;br /&gt;
&amp;lt;IMAG&amp;gt; - Imaginary part output file&lt;br /&gt;
&lt;br /&gt;
Decomposes a &amp;lt;COMP&amp;gt; file into separate &amp;lt;REAL&amp;gt; and  &amp;lt;IMAG&amp;gt; files.  The&lt;br /&gt;
following rules apply:&lt;br /&gt;
&lt;br /&gt;
   * Output files are the same type as the input.&lt;br /&gt;
&lt;br /&gt;
Note: The default /TL is the variable bufSize defined in nxm.sys.lib.Primitive.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /TL - The number of elements to be read each process loop [DEF=32768]&lt;br /&gt;
&lt;br /&gt;
See Also: MUX, nxm.sys.lib.Primitive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=TIMER&amp;diff=846</id>
		<title>TIMER</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=TIMER&amp;diff=846"/>
		<updated>2020-04-27T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: implements various timer functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;implements various timer functions &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FUNC&amp;gt;  - Name of the function (ON,OFF,SET,ELAPSE) [DEF=ON]&lt;br /&gt;
&amp;lt;LABEL&amp;gt; - Name of results parameter to receive timer information&lt;br /&gt;
&lt;br /&gt;
The timer modes are: &lt;br /&gt;
  1) elapsed time per command&lt;br /&gt;
  2) elapsed time over several commands&lt;br /&gt;
  3) resource usage per primitive.&lt;br /&gt;
&lt;br /&gt;
FUNCTIONS:&lt;br /&gt;
  ON - TIMER ON&lt;br /&gt;
  turns on the &amp;quot;elapsed time per command&amp;quot; function.  The image&lt;br /&gt;
  activation time and the execution time for an intrinsic or primitive are&lt;br /&gt;
  shown in &amp;quot;wall clock&amp;quot; (not CPU) seconds.  System loading may affect this&lt;br /&gt;
  value.  These times are displayed on the terminal and cannot be recorded in&lt;br /&gt;
  results parameters.&lt;br /&gt;
&lt;br /&gt;
  OFF - TIMER OFF&lt;br /&gt;
  Turns off the timer&lt;br /&gt;
&lt;br /&gt;
  SET - TIMER SET&lt;br /&gt;
  turns on the &amp;quot;elapsed time over several commands&amp;quot; function, useful&lt;br /&gt;
  for timing a macro or a block within a macro.  Again, &amp;quot;wall clock&amp;quot; (not CPU)&lt;br /&gt;
  seconds are displayed, so system loading may affect this value as well.&lt;br /&gt;
  TIMER SET is used to &amp;quot;start the stopwatch&amp;quot;, and TIMER ELAPSEd is used to &lt;br /&gt;
  report the time to &amp;lt;LABEL&amp;gt;.  TIMER ELAPSED reports elapsed time and continues &lt;br /&gt;
  timing.&lt;br /&gt;
&lt;br /&gt;
  ELAPSEd - TIMER ELAPSE &amp;lt;LABEL&amp;gt;&lt;br /&gt;
  Used to report the time to &amp;lt;LABEL&amp;gt; since SET.  Reports elapsed time and &lt;br /&gt;
  continues timing.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Messages: NONE&lt;br /&gt;
&lt;br /&gt;
Switches: NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=FORALL&amp;diff=840</id>
		<title>FORALL</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=FORALL&amp;diff=840"/>
		<updated>2020-04-27T22:05:14Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: performs a Midas command for a list of items or counter index&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;performs a Midas command for a list of items or counter index&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file/count&amp;gt;	List filename or counter string&lt;br /&gt;
&amp;lt;command&amp;gt;       Midas command to perform&lt;br /&gt;
&lt;br /&gt;
FORALL performs the named command for each item in a list file or for each&lt;br /&gt;
increment of a count variable.  If either argument is left blank, it prompts &lt;br /&gt;
for them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;command&amp;gt; specifies the command to execute for each item, using a # everywhere&lt;br /&gt;
the current item value should be substituted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;file/count&amp;gt; parameter includes an &amp;quot;=&amp;quot; sign, FORALL expects a count&lt;br /&gt;
string of the form:&lt;br /&gt;
&lt;br /&gt;
    #=START:END;INC&lt;br /&gt;
&lt;br /&gt;
where START is the start count, END is the end count, and INC is an optional&lt;br /&gt;
increment.  &amp;lt;command&amp;gt; is executed for each count in the loop progression, with&lt;br /&gt;
the current iteration number substituted for each instance of &amp;quot;#&amp;quot;. For example,&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt;res n 0&lt;br /&gt;
    nM&amp;gt;forall #=1:21;2 calc n n # +&lt;br /&gt;
&lt;br /&gt;
sums all odd integers from 1 to 21.  Counts and increments are not required to&lt;br /&gt;
be integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;file/count&amp;gt; parameter does NOT include an &amp;quot;=&amp;quot; sign, FORALL expects the&lt;br /&gt;
name of a file containing a list of strings or numbers.  It loops through each&lt;br /&gt;
element of this file, substituting the indexed item wherever &amp;quot;#&amp;quot; is found in&lt;br /&gt;
&amp;lt;command&amp;gt;.  Often the file will be generated by a FILES/F or MENU/F command:&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt;files/f t* ,,1&lt;br /&gt;
    nM&amp;gt;forall FILES status #&lt;br /&gt;
&lt;br /&gt;
  will display the status of every file beginning with T.&lt;br /&gt;
  &lt;br /&gt;
  To see the DEFAULTS of each Intrinsic or Macro:&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt;menu/f ,,, IM&lt;br /&gt;
    nM&amp;gt;forall MENU syntax #&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: When using FORALL within a macro, note that its arguments are treated&lt;br /&gt;
      like arguments to operating system commands.  The reason is that it is&lt;br /&gt;
      unknown what kind of command you may be giving FORALL.  Thus local result&lt;br /&gt;
      parameter translation will only occur if you use the caret (^) to&lt;br /&gt;
      indicate a result substitution. For example:&lt;br /&gt;
&lt;br /&gt;
      mymacro L:number&lt;br /&gt;
&lt;br /&gt;
	forall #=1:number    ramp r#	! This will NOT work right&lt;br /&gt;
	forall #=1:^number   ramp r#	! This WILL work correctly&lt;br /&gt;
&lt;br /&gt;
      endmacro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: &amp;lt;command&amp;gt; cannot invoke GOTO or CALL.  This is because FORALL is itself&lt;br /&gt;
      a  macro with it's own macro level and local results parameters.  (The &lt;br /&gt;
      labels, procedures and subroutines of the calling macro are not visible&lt;br /&gt;
      to it.)   If you need to call a procedure  repeatedly within a macro use&lt;br /&gt;
      the DO,  FOREACH or WHILE commands.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ECHO - Shows each iteration of the command before performing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=RMIF&amp;diff=841</id>
		<title>RMIF</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=RMIF&amp;diff=841"/>
		<updated>2020-04-27T22:05:14Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Remote Midas InterFace handles communication with remote processors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remote Midas InterFace handles communication with remote processors&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;PORT&amp;gt;    - UDP port number for local node (may be output) use PORT=-1&lt;br /&gt;
            to use any available local port (NeXtMidas only).&lt;br /&gt;
&amp;lt;PROPS&amp;gt;   - Property list to export _:result|q:message|_pipe&lt;br /&gt;
&amp;lt;REMOTE&amp;gt;  - Host address and port of remote connection...&lt;br /&gt;
              NeXtMidas uses: {ID=&amp;lt;remoteId&amp;gt;,HP=&amp;quot;&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&amp;quot;}&lt;br /&gt;
              X-Midas   uses: &amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&lt;br /&gt;
&amp;lt;ITEMS&amp;gt;   - List of remote properties to connect to (&amp;quot;|&amp;quot; separated list)&lt;br /&gt;
&amp;lt;REMOTEN&amp;gt; - Remote connection #2,...&lt;br /&gt;
&amp;lt;ITEMSN&amp;gt;  - List of remote properties #2,...&lt;br /&gt;
&lt;br /&gt;
Since there are X-Midas (C/FORTRAN) and NeXtMidas (Java) versions of this&lt;br /&gt;
primitive, (N) and (X) are used to indicate NeXtMidas or X-Midas only&lt;br /&gt;
capabilities, respectively.&lt;br /&gt;
&lt;br /&gt;
This command, when put in a macro, allows another X-Midas or NeXtMidas macro&lt;br /&gt;
access to any of the items listed.  These items may be messages, results&lt;br /&gt;
parameters, pipes, or files.  The remote connections will always have read&lt;br /&gt;
access to any parameter available through the results table.&lt;br /&gt;
&lt;br /&gt;
The /HTTP switch (NeXtMidas only) starts an Http server on the same port for&lt;br /&gt;
application status, debug, control, and file serving through a web browser.&lt;br /&gt;
For example, on the local node, the URL might be:  http://localhost:9000&lt;br /&gt;
&lt;br /&gt;
The protocol is modeled after Remote Method Invocation (RMI) - a distributed&lt;br /&gt;
object model for the Java programming language.  The underlying socket transport&lt;br /&gt;
is UDP.  A reliable data protocol (RDP) is implemented by RMIF to &amp;quot;guarantee&amp;quot;&lt;br /&gt;
delivery of messages (configurable with the RETRY attribute).&lt;br /&gt;
&lt;br /&gt;
The RMIF protocol definition allows for data packet formats: RAW, BINARY, ASCII,&lt;br /&gt;
or XML. Currently only RAW is used.&lt;br /&gt;
&lt;br /&gt;
The port number, along with the local node name, serve to identify this&lt;br /&gt;
interface within a subsystem.  When this routine sends packets to remote nodes,&lt;br /&gt;
the local address is attached to the packet, allowing the recipient to respond&lt;br /&gt;
directly to the sender.&lt;br /&gt;
&lt;br /&gt;
If the specified port is already in use and the /PRANGE switch is specified,&lt;br /&gt;
RMIF will search for a free port.  In this case the actual port number will be&lt;br /&gt;
written to the first results parameter (assuming that an ASCII input is&lt;br /&gt;
specified, if the input is numeric, this step is skipped).&lt;br /&gt;
&lt;br /&gt;
All results table entries are available to the local interface upon request&lt;br /&gt;
using the SET and GET messages.  The properties argument is a &amp;quot;|&amp;quot; separated&lt;br /&gt;
list of results, messages, pipes, or files that this interface can serve to&lt;br /&gt;
remote application interfaces without queries.  Once a remote interface issues&lt;br /&gt;
an OPEN on one of these properties, updates will be sent whenever new data is&lt;br /&gt;
available, until a CLOSE message is issued.  The list of properties is made&lt;br /&gt;
available through the GETKEYNAMES message allowing a macro to publish&lt;br /&gt;
properties available to be displayed or manipulated by client GUI's.&lt;br /&gt;
&lt;br /&gt;
The pairs of remote node:port and &amp;quot;|&amp;quot; separated items list define client&lt;br /&gt;
connections that should be automatic and permanent.  Remote properties that are&lt;br /&gt;
specified here are automatically reOPENed if the remote node is temporarily&lt;br /&gt;
unavailable for any reason (death, network, reboot, ...)&lt;br /&gt;
&lt;br /&gt;
Each remote connection can have differently tuned parameters using the Port&lt;br /&gt;
Parameter Table.  The /PPT={table} switch defines the default for all new&lt;br /&gt;
connections. See the switches section for specifics.&lt;br /&gt;
&lt;br /&gt;
Clients that have OPEN channels, regularly ping the remote server to verify&lt;br /&gt;
health and status.  The servers also ping the clients.  This ping interval can&lt;br /&gt;
be set with the /TIMEPING switch.  The /TIMEOUT switch specifies how many&lt;br /&gt;
seconds to wait for a response before closing the remote channels.  The PINGs&lt;br /&gt;
are still issued to poll for life, but channels are CLOSED.  When the remote&lt;br /&gt;
node starts responding again, the listed channels are reOPENED.&lt;br /&gt;
&lt;br /&gt;
For X-Midas clients, the /RECONN switch allows RMIF to try to reconnect to&lt;br /&gt;
servers that disconnect and return. All pipes must be the same format between&lt;br /&gt;
the two instances since X-Midas can't change pipe headers on the fly. The client&lt;br /&gt;
decided that the server has disconnected if it doesn't respond to a PING packet&lt;br /&gt;
within the timeout or if no pipe data has been transferred during this time. The&lt;br /&gt;
latter case could happen if the server were recycled between two PINGs. If the&lt;br /&gt;
connection has been dropped and you don't want to wait for the timeouts, you can&lt;br /&gt;
send an OPEN message (X-Midas client only) to force a reconnect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LIMITATIONS&lt;br /&gt;
===========&lt;br /&gt;
Packet Size:&lt;br /&gt;
  Note that RMIF has an internal 32 KiB buffer and, while it can transmit&lt;br /&gt;
  piped data with frame sizes or record lengths greater than this (by&lt;br /&gt;
  splitting the frames into multiple packets), they are subject to misalignment&lt;br /&gt;
  if any packets are lost. There is no internal means to realign the data, so&lt;br /&gt;
  use of RMIF with large buffer size is not recommended.&lt;br /&gt;
&lt;br /&gt;
  The 32 KiB limit comes from the max size of a IP packet used for UDP. The IP&lt;br /&gt;
  packet includes IP header, UDP header, RMIF header (fixed), RMIF adjunct&lt;br /&gt;
  header (internal use only). The remaining space is available for RMIF data.&lt;br /&gt;
  Buffer sizes slightly larger than 32KiB will often fit, but this should not&lt;br /&gt;
  be counted on.&lt;br /&gt;
&lt;br /&gt;
  RMIF uses RDP (over UDP) for sending control messages (this includes any&lt;br /&gt;
  messages sent via the macro). Consequently, it is subject to the same 32 KiB&lt;br /&gt;
  limitation.&lt;br /&gt;
&lt;br /&gt;
  RMIF was designed to transmit plot data and small control messages associated&lt;br /&gt;
  with the same data. RMIF is not intended as a means of reliable transport for&lt;br /&gt;
  other types of data (such as database queries, imagery, HTML, etc); there are&lt;br /&gt;
  many other protocols (TCP, HTTP, FTP, SCTP, etc) that are designed for this&lt;br /&gt;
  type of application.&lt;br /&gt;
&lt;br /&gt;
Network Bandwidth:&lt;br /&gt;
  The network bandwidth along with the max read/write rate limits the actual&lt;br /&gt;
  transmission rate of the UDP packets. If too many packets are sent at once,&lt;br /&gt;
  some of them will be lost.&lt;br /&gt;
&lt;br /&gt;
  RMIF uses RDP to counteract this by retransmitting the lost packets, but this&lt;br /&gt;
  can only do so much (a saturated network is likely to drop many of the packets&lt;br /&gt;
  on retransmit).&lt;br /&gt;
&lt;br /&gt;
  The WINDOW= (in the /PPT= table) controls the maximum number of RDP packets&lt;br /&gt;
  outstanding (sent, but not yet receipted). RMIF will buffer outgoing packets&lt;br /&gt;
  when the window fills up. This prevents RMIF from over-saturating the network&lt;br /&gt;
  with its own packets. Making the window too large (even sizes &amp;gt;32 can be &amp;quot;too&lt;br /&gt;
  large&amp;quot; on many networks) will result in RMIF saturating the network which&lt;br /&gt;
  then causes the RMIF packets to be lost.&lt;br /&gt;
&lt;br /&gt;
  The RETRY= parameter in the /PPT= table controls the number of retries that&lt;br /&gt;
  will be attempted. If /WINDOW= is too large, increasing RETRY= only makes a&lt;br /&gt;
  bad problem worse.&lt;br /&gt;
&lt;br /&gt;
Network Latency:&lt;br /&gt;
  Increasing WINDOW= (in the /PPT= table) on networks with high latency will&lt;br /&gt;
  improve performance since it allows more outstanding packets to be in transit&lt;br /&gt;
  at the same time.&lt;br /&gt;
&lt;br /&gt;
Faulty Network:&lt;br /&gt;
  Increasing RETRY= (in the /PPT= table) on networks with a high rate of packet&lt;br /&gt;
  loss or corruption will improve performance since it permits more transmission&lt;br /&gt;
  attempts in the event of a lost/corrupted packet. (Remember, if loss/error&lt;br /&gt;
  rate is 10%, the odds of a loss/error on retransmit are also 10%.)&lt;br /&gt;
&lt;br /&gt;
Faulty Networks With High Latency:&lt;br /&gt;
  This is what RMIF was designed for... the WINDOW= and RETRY= give users the&lt;br /&gt;
  control they need to &amp;quot;tune&amp;quot; RMIF so that it will run well on these networks.&lt;br /&gt;
  Just be careful not to oversaturate the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COMPRESSION (X-Midas or NeXtMidas server, NeXtMidas clients)&lt;br /&gt;
============================================================&lt;br /&gt;
Compression is meant to be used on pipes destined for plotting. Compression&lt;br /&gt;
only works on pipes with FIXED-POINT SB data.  When using the NeXtMidas PLOT&lt;br /&gt;
command, the plot's rmif ID may be set to allow information to be sent so that&lt;br /&gt;
RMIF will compress the data to fill the plot screen.&lt;br /&gt;
&lt;br /&gt;
There are two types of compression, ONLY ONE of which is currently supported:&lt;br /&gt;
&lt;br /&gt;
1. Data - TBD&lt;br /&gt;
     There are hooks in place for this type of compression but it it not yet&lt;br /&gt;
  implemented.  This is completely recoverable non-lossy data compression&lt;br /&gt;
   (like zip).&lt;br /&gt;
&lt;br /&gt;
2. Plot - This is commonly used for plotting.&lt;br /&gt;
    In this mode, RMIF automatically chooses one of two modes based on the&lt;br /&gt;
  number of points per pixel.&lt;br /&gt;
    a.) BAND ( &amp;gt;= 3pts/pixel )&lt;br /&gt;
      Computes the upper and lower bounds giving a compression of &amp;gt;=1.5 times.&lt;br /&gt;
      For example, a 2k length frame would compress ~7 times in a plot window&lt;br /&gt;
      300 pixels wide.&lt;br /&gt;
    b.) PACK ( &amp;lt; 3pts/pixel )&lt;br /&gt;
      Computes the MAX of first point, and then 4bit deltas giving a compression&lt;br /&gt;
      of ~2x.&lt;br /&gt;
  When zoomed, the data not visible will also be thrown out.&lt;br /&gt;
&lt;br /&gt;
COPYING FILES from an RMIF server(N)&lt;br /&gt;
====================================&lt;br /&gt;
&lt;br /&gt;
Files may be transfered from an RMIF server to a client using HTTP or MFTP, the&lt;br /&gt;
Midas File Transfer Protocol.  For example,&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; noop/gpw http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Files/&amp;lt;aux&amp;gt;/remotefile.tmp localfile.tmp&lt;br /&gt;
or&lt;br /&gt;
  nM&amp;gt; noop/gpw mftp://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Files/&amp;lt;aux&amp;gt;/remotefile.tmp localfile.tmp&lt;br /&gt;
&lt;br /&gt;
RMIF can find and transfer any MIDAS file in its' current AUX path.  To specify&lt;br /&gt;
the AUX, use the AUX qualifier or use the syntax:&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; noop/gpw http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Files/&amp;lt;aux&amp;gt;/remotefile.tmp localfile.tmp&lt;br /&gt;
&lt;br /&gt;
the MFTP protocol has additional qualifiers to tune the performance.&lt;br /&gt;
  PKTRATE = target bytes per second to transfer over the link&lt;br /&gt;
  PKTLEN  = length in bytes of individual UDP data packets (typically 1K - 8K)&lt;br /&gt;
  PKTTO   = timeout in seconds for request responses&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; noop/gpw mftp://remotename:9000/Files/DAT/world.prm{PKTRATE=1e5,PKTTO=3}&lt;br /&gt;
      localfile.tmp&lt;br /&gt;
&lt;br /&gt;
See library help on MFTP for more information.&lt;br /&gt;
&lt;br /&gt;
Using an embedded server with the /HTTP switch&lt;br /&gt;
==============================================&lt;br /&gt;
If RMIF is run with the /HTTP switch, controls, files, and Queries can be&lt;br /&gt;
accessed from a remote node with the following syntax:&lt;br /&gt;
  * http://&amp;lt;server:port&amp;gt;/Controls  --&amp;gt; Returns HTML&lt;br /&gt;
  * http://&amp;lt;server:port&amp;gt;/Files/&amp;lt;AUX&amp;gt;/remotefile.prm&lt;br /&gt;
  * http://&amp;lt;server:port&amp;gt;/Query     --&amp;gt; Returns HTML&lt;br /&gt;
&lt;br /&gt;
For instance, to access a file on the server's DAT aux from a client,&lt;br /&gt;
  nM&amp;gt; noop http://&amp;lt;server:port&amp;gt;/Files/DAT/remotefile.prm localfile.prm&lt;br /&gt;
&lt;br /&gt;
To see an example of how this can be used run:&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; sd360/server&lt;br /&gt;
&lt;br /&gt;
then point your browser to http://localhost:9000/ and from there you will have&lt;br /&gt;
links to files, controls and more.&lt;br /&gt;
&lt;br /&gt;
Messages: (X) = X-Midas Only, (N) = NeXtMidas Only, otherwise valid for both&lt;br /&gt;
  In X-Midas, SETKEY, ACKKEY, GETKEY, and RETKEY are homogeneous messages&lt;br /&gt;
    consisting of one 40 char address followed by pairs of 40 char keynames and&lt;br /&gt;
    40 char keyvalues. The KEYMSGSTRUCT struct in rmif.inc maps this message&lt;br /&gt;
    data. The NDATA field is dynamic depending on the number of keys per&lt;br /&gt;
    message. Namely NDATA=1+2*NKEY.  In NeXtMidas, these 4 messages are replaced&lt;br /&gt;
    by sending a SET, ACK, GET, or RET message to the ID of the remote&lt;br /&gt;
    itself. The system knows to route it through the RMIF connection.&lt;br /&gt;
  In NeXtMidas, when RMIF receives a SET, ACK, GET, or RET message that has a&lt;br /&gt;
    MSGNAME key in the data table, it's value is used as the message name to&lt;br /&gt;
    send the data (with the MSGNAME key/value removed from the table) to the&lt;br /&gt;
    upper level (i.e. the macro) instead of the SET, ACK, GET, or RET name.&lt;br /&gt;
  In X-Midas, the ADDR, KEYS, PROPS, and PING messages uses the INFO field to&lt;br /&gt;
    represent the index of the remote to send the message to. Valid input values&lt;br /&gt;
    are 1 to MAXREMOTE(32).&lt;br /&gt;
&lt;br /&gt;
  NOTE: Any messages to a remote must be with FUNC=SEND (not SENDW). Messages to&lt;br /&gt;
        the RMIF primitive can be with either SEND or SENDW. (N)&lt;br /&gt;
&lt;br /&gt;
        When sending messages to RMIF, the only why to know that it has been&lt;br /&gt;
        fully processed (client-side and server-side) is via the corresponding&lt;br /&gt;
        acknowledgments sent back to the macro. For example, an OPENED message&lt;br /&gt;
        is the acknowledge for the OPEN message. See below for details.&lt;br /&gt;
&lt;br /&gt;
  ACK     - Acknowledges a SET message. An ACK message sent to RMIF with a null&lt;br /&gt;
            remote value will notify all remotes of the attribute change.&lt;br /&gt;
            (X-Midas uses &amp;quot;ACKKEY&amp;quot; instead of &amp;quot;ACK&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  ADDC    - Add a channel to a property on a remote. (N)&lt;br /&gt;
              ID=&amp;lt;remote&amp;gt;&lt;br /&gt;
              NAME=&amp;quot;ADDC&amp;quot;&lt;br /&gt;
              INFO=&amp;lt;channel number, -1 for next available number&amp;gt;&lt;br /&gt;
              DATA=&amp;lt;property to monitor or &amp;quot;Q:ACK&amp;quot;&amp;gt;&lt;br /&gt;
            A &amp;quot;channel&amp;quot; is a real-time attribute (a pipe or server-side change&lt;br /&gt;
            to a result). If &amp;quot;Q:ACK&amp;quot; is specified, this setups a channel to&lt;br /&gt;
            receive all ACKs from the remote (server) that are sent directly to&lt;br /&gt;
            this RMIF or to all it's remotes (clients). Even though a table-like&lt;br /&gt;
            syntax maybe be used when specifying a pipe to map (e.g.&lt;br /&gt;
            &amp;quot;{_clientPipe=_serverPipe}&amp;quot;), RMIF treats the message data as a&lt;br /&gt;
            string. Examples:&lt;br /&gt;
&lt;br /&gt;
              nM&amp;gt; message send ID=RID NAME=&amp;quot;ADDC&amp;quot; INFO=1 &amp;amp;&lt;br /&gt;
                               DATA=&amp;quot;{_clientPipe=_serverPipe}&amp;quot;&lt;br /&gt;
              nM&amp;gt; message send ID=RID NAME=&amp;quot;ADDC&amp;quot; INFO=2 DATA=&amp;quot;SFREQ&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            Note: This message should only be sent after an OPENED message is&lt;br /&gt;
                  received from the remote in the processMessage procedure&lt;br /&gt;
                  (i.e. it should not be send between PIPE ON ... PIPE OFF).&lt;br /&gt;
&lt;br /&gt;
  ADDC/M  - Add a channel in multi mode to a property on a remote. This allows&lt;br /&gt;
            multiple remotes writing into a single pipe. (N)&lt;br /&gt;
&lt;br /&gt;
  ADDR    - Create a reference to an RMIF process on a remote machine.&lt;br /&gt;
              ID=&amp;lt;RMIF ID&amp;gt;&lt;br /&gt;
              NAME=&amp;quot;ADDR&amp;quot;&lt;br /&gt;
              INFO=&amp;lt;desired remote index number; 1-MAXREMOTE&amp;gt; (X)&lt;br /&gt;
              DATA=&amp;lt;Table with properties for the remote to address&amp;gt;  (N)&lt;br /&gt;
                     ID = ID to name created remote (good idea to keep unique).&lt;br /&gt;
                     HP = Host:Port string of remote, e.g. the Internet&lt;br /&gt;
                          address (IP/hostname and PORT) of the remote machine.&lt;br /&gt;
              &amp;lt;ARGS&amp;gt;=1     (X)&lt;br /&gt;
              &amp;lt;TYPE&amp;gt;=S[40] (X)&lt;br /&gt;
              &amp;lt;VALUES=remote address IP/hostname:port string or hexadecimal&lt;br /&gt;
                      string of IP address/port (in network byte order). (X)&lt;br /&gt;
&lt;br /&gt;
            Note: The connection is not established until an OPEN message is&lt;br /&gt;
                  processed.&lt;br /&gt;
            In X-Midas, care should be taken for the specified remote index,&lt;br /&gt;
              otherwise an existing remote at that index may be overridden.&lt;br /&gt;
&lt;br /&gt;
  CLOSE   - Close the connection to a remote. (N)&lt;br /&gt;
            A CLOSED message acknowledges this request.&lt;br /&gt;
            Note: An OPEN message to the same remote &amp;lt;Host:Port&amp;gt; should not be&lt;br /&gt;
                  sent until the CLOSED message is received, otherwise the new&lt;br /&gt;
                  remote may receive the server's acknowledgment to this remote&lt;br /&gt;
                  (i.e. it gets a CLOSED message that was still in transit on&lt;br /&gt;
                  the network to RMIF).&lt;br /&gt;
&lt;br /&gt;
  CLOSE/R - Close the connection to a remote and remove it from the table. (N)&lt;br /&gt;
&lt;br /&gt;
  DELC    - Delete a channel to a property on a remote. (N)&lt;br /&gt;
              ID=&amp;lt;RMIF ID&amp;gt;&lt;br /&gt;
              INFO=&amp;lt;if &amp;gt; 0, channel number&amp;gt;&lt;br /&gt;
              DATA=&amp;lt;else,   name of exported property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  GET     - Is used to request one or more key=value pairs. (X-Midas uses&lt;br /&gt;
            &amp;quot;GETKEY&amp;quot; instead of &amp;quot;GET&amp;quot;). A RET message acknowledges this request.&lt;br /&gt;
&lt;br /&gt;
  KEYS    - Requests a list of properties to be returned for specified remote.&lt;br /&gt;
              ID=&amp;lt;remote&amp;gt; (N)&lt;br /&gt;
            or&lt;br /&gt;
              ID=&amp;lt;RMIF ID&amp;gt; (X)&lt;br /&gt;
              INFO=&amp;lt;desired remote index number; 1-MAXREMOTE&amp;gt; (X)&lt;br /&gt;
&lt;br /&gt;
  MODIFY  - Modifies parameters of an open channel (usually used for plot&lt;br /&gt;
            compression). (N)&lt;br /&gt;
            NOTE: Compression only works on pipes with fixed-point SB data.&lt;br /&gt;
              nM&amp;gt; message FUNC=send ID=RID NAME=MODIFY &amp;amp;&lt;br /&gt;
                  DATA={PROPERTY=_serverPipe,COMP=2,PLOTWIDTH=200}&lt;br /&gt;
              xM&amp;gt; rmsg send &amp;lt;addr&amp;gt;   MODIFY,,&lt;br /&gt;
                  {PROPERTY=_serverPipe,COMP=2,PLOTWIDTH=200}&lt;br /&gt;
            sets compression on the pipe for a 200 pixel wide plotter&lt;br /&gt;
&lt;br /&gt;
              nM&amp;gt; message FUNC=send ID=RID NAME=MODIFY &amp;amp;&lt;br /&gt;
                  DATA={PROPERTY=_serverPipe,TRIM1=plot.x1i,TRIM2=plot.x2i}&lt;br /&gt;
              xM&amp;gt; rmsg send &amp;lt;addr&amp;gt;   MODIFY,,&lt;br /&gt;
                  {PROPERTY=_serverPipe,TRIM1=plot.x1i,TRIM2=plot.x2i}&lt;br /&gt;
            sets compression for a plot zoom window from frame index x1i to x2i&lt;br /&gt;
&lt;br /&gt;
  OPEN    - Open a connection to a remote given the SERVER host and port.&lt;br /&gt;
            An OPENED message acknowledges this request.&lt;br /&gt;
              nM&amp;gt; message send RMIFID ,, OPEN ,, {ID=&amp;lt;rid&amp;gt;,HP=&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
            Note: Since &amp;lt;rid&amp;gt; is not passed to the server side, the RMIF server&lt;br /&gt;
                  defaults the remote's message ID to &amp;quot;REMOTE&amp;quot;. In most cases&lt;br /&gt;
                  it is not important to uniquely identify a client since the&lt;br /&gt;
                  server typically treats all clients the same (given that they&lt;br /&gt;
                  have the same channels open). Since NeXtMidas 2.5.3 it is&lt;br /&gt;
                  possible to specify an alternate ID for each remote client.&lt;br /&gt;
                  This is done by setting the remote's id to desired value when&lt;br /&gt;
                  processing the OPEN message in the server macro, for example:&lt;br /&gt;
                    nM&amp;gt; set msg.data.id &amp;quot;MY_REMOTE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  RADDR   - Remove an address from RMIFs table of remotes. (N)&lt;br /&gt;
&lt;br /&gt;
  RET     - Acknowledges a GET message. (X-Midas uses &amp;quot;RETKEY&amp;quot; instead of &amp;quot;RET&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  RPKT    - Is a more direct means to SEND or RECV an RMIF packet with less&lt;br /&gt;
            restrictions (see nxm.sys.exp.rmsg.exp). This is for X-Midas only.&lt;br /&gt;
            If the address field is blank, the packet is sent to all open&lt;br /&gt;
            remotes ONLY if the /RECONN switch is set (this was done to&lt;br /&gt;
            preserve the legacy, pre-/RECONN switch behavior).&lt;br /&gt;
&lt;br /&gt;
  PAUSE   - Pause, specify the time (seconds) in the info entry. (X)&lt;br /&gt;
&lt;br /&gt;
  PING    - Request a PING to be sent to specified remote.&lt;br /&gt;
              ID=&amp;lt;remote&amp;gt; (N)&lt;br /&gt;
            or&lt;br /&gt;
              ID=&amp;lt;RMIF ID&amp;gt; (X)&lt;br /&gt;
              INFO=&amp;lt;desired remote index number; 1-MAXREMOTE&amp;gt; (X)&lt;br /&gt;
&lt;br /&gt;
  PROPS   - Same as KEYS message.&lt;br /&gt;
&lt;br /&gt;
  SET     - Is used to set one or more key=value pairs. (X-Midas uses &amp;quot;SETKEY&amp;quot;&lt;br /&gt;
            instead of &amp;quot;SET&amp;quot;). An ACK message acknowledges this request.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. X-Midas server setup:&lt;br /&gt;
       rmif/pktmsg port _mypipe|myresult&lt;br /&gt;
&lt;br /&gt;
  2. NeXtMidas server setup with web server:&lt;br /&gt;
       rmif/http port sfreq|_waveb /ppt={RETRY=2,TIMEPING=3}&lt;br /&gt;
&lt;br /&gt;
  3. NeXtMidas client setup with web server:&lt;br /&gt;
       rmif/http/prange=5 port&lt;br /&gt;
&lt;br /&gt;
  4. NeXtMidas opening a connection to a remote server:&lt;br /&gt;
       set remote &amp;quot;&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&amp;quot;&lt;br /&gt;
       message send RMIF ,, &amp;quot;OPEN&amp;quot; ,, {ID=XM,HP=&amp;quot;^remote&amp;quot;}&lt;br /&gt;
       message send XM ,, &amp;quot;ADDC&amp;quot; 1 {_WAVEB=_WAVEB}&lt;br /&gt;
       message send XM ,, &amp;quot;ADDC&amp;quot; 2 &amp;quot;Q:ACK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     .... later in processMessage handler - sync up&lt;br /&gt;
       if msg.name eqs &amp;quot;OPENED&amp;quot; then&lt;br /&gt;
         message send XM ,, &amp;quot;GET&amp;quot; ,, {SFREQ=?,CFREQ=?}&lt;br /&gt;
       endif&lt;br /&gt;
&lt;br /&gt;
  5. NeXtMidas sending a message to an un-opened remote:&lt;br /&gt;
       message send &amp;quot;RMIF&amp;quot; ,, &amp;quot;ADDR&amp;quot; ,, {ID=RID,HP=&amp;quot;^rhost:^rport&amp;quot;}&lt;br /&gt;
       message send &amp;quot;RID&amp;quot; ,, &amp;quot;SET&amp;quot; ,, {FREQ=123,RATE=2345}&lt;br /&gt;
&lt;br /&gt;
  6. NeXtMidas replying to a GET message from a remote:&lt;br /&gt;
       if msg.name eqs &amp;quot;GET&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
     ... fill in values for entries in the msg.data table&lt;br /&gt;
       message send &amp;quot;REPLY&amp;quot; msg &amp;quot;RET&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  7. NeXtMidas replying to a SET message from a remote:&lt;br /&gt;
       if msg.name eqs &amp;quot;SET&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
     ... validate entries in the msg.data table and perform necessary actions&lt;br /&gt;
       message send &amp;quot;REPLY&amp;quot; msg &amp;quot;ACK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  8. NeXtMidas client to monitor all Q:ACK (channel) on remote host:port&lt;br /&gt;
       rmif -1 ,, {ID=REMOTE,HP=&amp;quot;^host:^port&amp;quot;} &amp;quot;Q:ACK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Many examples exists as part of the RMIF test cases, see:&lt;br /&gt;
    $NMROOT/nxm/sys/test/rmif/test_rmif_*.mm&lt;br /&gt;
&lt;br /&gt;
Switches: (X) = X-Midas Only, (N) = NeXtMidas Only, otherwise valid for both&lt;br /&gt;
  /AUXLIST=l  - List of AUXs to make available under&lt;br /&gt;
                &amp;quot;http://host:port/Files/&amp;lt;AUX&amp;gt;/&amp;lt;filename&amp;gt;&amp;quot;. By default all&lt;br /&gt;
                AUXs in AUX.READ are listed (same as /AUXLIST=&amp;quot;*&amp;quot;). Use&lt;br /&gt;
                /AUXLIST=null to disable. [Note that for to backwards-&lt;br /&gt;
                compatibility with older apps, the defaults for this&lt;br /&gt;
                switch differ between RMIF and HTTPSERV.] (N)&lt;br /&gt;
  /DEVICE=dev - Performs a network interface lookup to resolve server IP address&lt;br /&gt;
                to bind on based on a network device name (e.g. eth0, eth1.101).&lt;br /&gt;
                This switch takes precedence over the /HOST switch. (N)&lt;br /&gt;
                Since NeXtMidas 3.1.2.&lt;br /&gt;
  /HOMEPAGE=p - Homepage location for HTTP web server (p = path). [This&lt;br /&gt;
                matches HTTPSERV.] (N)&lt;br /&gt;
  /HOST=ip    - Sets the host IP address to bind on.&lt;br /&gt;
  /HTTP       - Start HTTP server for application status, debug, and file&lt;br /&gt;
                serving. Note that /AUXLIST= and /HOMEPAGE= have no affect&lt;br /&gt;
                if this switch is not specified. (N)&lt;br /&gt;
  /KEEPADJ    - Keep adjunct header with the data. (X)&lt;br /&gt;
  /KEYMSG     - Convert SET,GET,RET,ACK packets to SETKEY, GETKEY, ... messages.&lt;br /&gt;
                This allows the macro to take special action when a remote&lt;br /&gt;
                interface sends or requests information instead of letting&lt;br /&gt;
                RMIF handle this 'behind the scenes'. (X)&lt;br /&gt;
  /LOG=fname  - Logs all control activity to text file&lt;br /&gt;
  /MSGID=id   - The ID to process messages from the remote nodes (usually 1 in&lt;br /&gt;
                X-Midas, usually MAIN in NeXtMidas). [DEF=MAIN in NeXtMidas]&lt;br /&gt;
  /PAUSE=s    - Time (sec) to pause at the end of idle loop (DEF=Mc.pause) (X)&lt;br /&gt;
  /PKTMSG     - Convert SET,GET,RET,ACK packets to RPKT messages. This is the&lt;br /&gt;
                default if /MSGID is specified. (See nxm.sys.exp.rmsg.exp.)  (X)&lt;br /&gt;
  /PPT={tbl}  - Port Parameter Table for tuning connections. (N)&lt;br /&gt;
                Most setable attribute may be included but some typical&lt;br /&gt;
                parameters are: RETRY,TIMEPING,TIMEOUT&lt;br /&gt;
                TIMEDROP is not yet implemented in NeXtMidas.&lt;br /&gt;
  /PRANGE=n   - Range of port numbers above &amp;lt;port&amp;gt; to use if already allocated.&lt;br /&gt;
  /RECONN     - Reopens pipes after server recycle. (X)&lt;br /&gt;
  /REOPEN=NO  - Don't reopen same named pipes on client side when reconnecting.&lt;br /&gt;
                This keeps plotters from resetting but should only be used if&lt;br /&gt;
                the application is reconnecting to pipes with similar headers.&lt;br /&gt;
                (N)&lt;br /&gt;
  /RETRY=n    - Set maximum number of retries (default=5). (X)&lt;br /&gt;
                Use the /PPT switch for NeXtMidas.&lt;br /&gt;
  /STATUS=lbl - Writes the current number of remote connections to the result&lt;br /&gt;
  /TIMEDROP=s - Timeout to drop efforts to reconnect (default=600). (X)&lt;br /&gt;
                Use the /PPT switch for NeXtMidas.&lt;br /&gt;
  /TIMEOUT=s  - Timeout (in seconds) to declare link down (default=15). (X)&lt;br /&gt;
                Use the /PPT switch for NeXtMidas.&lt;br /&gt;
  /TIMEPING=s - Timeout (in seconds) between pings (default=4). (X)&lt;br /&gt;
                Use the /PPT switch for NeXtMidas.&lt;br /&gt;
  /VERBOSE    - Set verbose option.&lt;br /&gt;
  /WINDOW=n   - Set maximum window of messages to a given remote before RDP will&lt;br /&gt;
                not send. (X) Use the /PPT switch for NeXtMidas.&lt;br /&gt;
&lt;br /&gt;
See Also: nxm.sys.net.Rmif, SD360, nxm.sys.test.test_rmif.mm, HTTPSERV&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=TIMEX&amp;diff=842</id>
		<title>TIMEX</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=TIMEX&amp;diff=842"/>
		<updated>2020-04-27T22:05:14Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: perform various time transfer and conversion functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;perform various time transfer and conversion functions&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;in&amp;gt;           Input time specification&lt;br /&gt;
&amp;lt;out1...outn&amp;gt;  Output time specifications&lt;br /&gt;
&lt;br /&gt;
Keyword Only Parameters:&lt;br /&gt;
  [ROUND]  - See below for description&lt;br /&gt;
  [INFILE] - See below for description&lt;br /&gt;
  [INACQ]  - See below for description&lt;br /&gt;
  [INQUAD] - See below for description&lt;br /&gt;
&lt;br /&gt;
This intrinsic performs a number of time transformations with support for&lt;br /&gt;
multiple output formats in a single call.&lt;br /&gt;
&lt;br /&gt;
Input:&lt;br /&gt;
  The input time specifications are:&lt;br /&gt;
      NOW                   - the current system or CPU time (J1950)&lt;br /&gt;
      SSM                   - the seconds since midnight (this is similar to the&lt;br /&gt;
                              SECNDS() function in Fortran)&lt;br /&gt;
      DAY                   - the beginning of the current day&lt;br /&gt;
      &amp;lt;time&amp;gt;                - any valid time specifier:&lt;br /&gt;
                                o Time object&lt;br /&gt;
                                o &amp;quot;yyyy:mm:dd::hh:mm:ss&amp;quot;&lt;br /&gt;
                                o &amp;quot;&amp;lt;sec&amp;gt;&amp;quot;           (seconds since 01-JAN-1950)&lt;br /&gt;
                                o &amp;quot;(&amp;lt;sec&amp;gt;)&amp;quot;         (seconds since 01-JAN-1950)&lt;br /&gt;
                                o &amp;quot;(&amp;lt;wsec&amp;gt;,&amp;lt;fsec&amp;gt;)&amp;quot; (seconds since 01-JAN-1950)&lt;br /&gt;
                                o &amp;quot;&amp;lt;time string&amp;gt;&amp;quot;   (as specified by /INFMT=)&lt;br /&gt;
      ROUND=&amp;lt;seconds&amp;gt;       - round the output to the specified number of sec&lt;br /&gt;
      INFILE=&amp;lt;filename&amp;gt;     - the timecode field in a file&lt;br /&gt;
      INACQ=&amp;lt;filename&amp;gt;      - TBD (the ACQDATE/ACQTIME keywords in a file)&lt;br /&gt;
      INQUAD=&amp;lt;filename&amp;gt;     - the quadword epoch fields&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
  The output time specifications include (see nxm.sys.lib.Time for details):&lt;br /&gt;
      TERMINAL              - Displays time in the current terminal display&lt;br /&gt;
      &amp;lt;resname&amp;gt;             - Saves Time object in &amp;lt;resname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      FILE=&amp;lt;filename&amp;gt;       - Stores time in the timecode field of a BLUE file&lt;br /&gt;
      ACQ=&amp;lt;filename&amp;gt;        - TBD (the ACQDATE/ACQTIME keywords in a file)&lt;br /&gt;
      QUAD=&amp;lt;filename&amp;gt;       - Stores time in the quadword epoch fields of a&lt;br /&gt;
                              Type 5000 BLUE file (for ECR reference frame GHA)&lt;br /&gt;
&lt;br /&gt;
      YEAR=&amp;lt;resname&amp;gt;        - year (1950,...)&lt;br /&gt;
      MONTH=&amp;lt;resname&amp;gt;       - month of year (1..12)&lt;br /&gt;
      MONTHNAME=&amp;lt;resname&amp;gt;   - month of year (January,...)&lt;br /&gt;
      MONTHTRIGRAPH=&amp;lt;res&amp;gt;   - month of year (JAN,FEB,...)&lt;br /&gt;
      DAY=&amp;lt;resname&amp;gt;         - day of month (1..N)&lt;br /&gt;
      HOUR=&amp;lt;resname&amp;gt;        - hour of day (0..23)&lt;br /&gt;
      MINUTE=&amp;lt;resname&amp;gt;      - minute of hour (0..59)&lt;br /&gt;
      SECOND=&amp;lt;resname&amp;gt;      - second of minute (0..59)&lt;br /&gt;
      DAYOFWEEK=&amp;lt;resname&amp;gt;   - day of week (1=SUN,2=MON,...,7=SAT)&lt;br /&gt;
      DAYOFWEEKNAME=&amp;lt;res&amp;gt;   - day of week (Sunday,...)&lt;br /&gt;
      DAYOFWEEKTRIGRAPH=&amp;lt;r&amp;gt; - day of week (SUN,MON,...)&lt;br /&gt;
      JD=&amp;lt;resname&amp;gt;          - Julian day (or JUL=)&lt;br /&gt;
                              (NOTE: Julian Date Epoch is 12:00 1 Jan 4713BC)&lt;br /&gt;
      MJD=&amp;lt;resname&amp;gt;         - Midas Julian day (since J1950)&lt;br /&gt;
                              (NOTE: NOT the Modified Julian Day defined by SAO.&lt;br /&gt;
                               Modified Julian Day = Midas Julian Day + 33282.0)&lt;br /&gt;
      MJS=&amp;lt;resname&amp;gt;         - Midas Julian second (since J1950)&lt;br /&gt;
      SEC=&amp;lt;resname&amp;gt;         - seconds since 00:00 1 Jan 1950 (same as MJS)&lt;br /&gt;
      YIS=&amp;lt;resname&amp;gt;         - year in seconds&lt;br /&gt;
      DOY=&amp;lt;resname&amp;gt;         - day of year (0..364/365)&lt;br /&gt;
      SOY=&amp;lt;resname&amp;gt;         - seconds of year&lt;br /&gt;
      SOD=&amp;lt;resname&amp;gt;         - seconds of day&lt;br /&gt;
      FOD=&amp;lt;resname&amp;gt;         - fraction of day (0.0 to 1.0)&lt;br /&gt;
      GHA=&amp;lt;resname&amp;gt;         - Greenwich hour angle (in radians)&lt;br /&gt;
      WSEC=&amp;lt;resname&amp;gt;        - Whole Seconds since J1950&lt;br /&gt;
      FSEC=&amp;lt;resname&amp;gt;        - Fractional Seconds since J1950&lt;br /&gt;
      LEAPYEAR=&amp;lt;resname&amp;gt;    - Indicates if it is a leap year (true/false)&lt;br /&gt;
&lt;br /&gt;
Rounding:&lt;br /&gt;
  The input time can be rounded to a desired precision before output processing&lt;br /&gt;
  via the ROUND=&amp;lt;precision&amp;gt; parameter. This parameter causes the input time to&lt;br /&gt;
  be rounded to the nearest &amp;lt;precision&amp;gt; seconds. For example: ROUND=1 rounds to&lt;br /&gt;
  nearest second, ROUND=1:00:00 to the nearest hour, and ROUND=1e-3 rounds to&lt;br /&gt;
  the nearest millisecond.  Restrictions: precision must be an integer number&lt;br /&gt;
  of seconds or divide evenly into 1 second.&lt;br /&gt;
&lt;br /&gt;
Formatting:&lt;br /&gt;
  Since NeXtMidas 2.5.0 the TIMEX command supports a wide variety of time/date&lt;br /&gt;
  formats made available via the MFormat class. Acceptable in/out formats can&lt;br /&gt;
  be either a standard Midas format:&lt;br /&gt;
   Type       Format                       Example (1993-FEB-25 14:42:57.123456)&lt;br /&gt;
   -----------------------------------------------------------------------------&lt;br /&gt;
   &amp;quot;STD&amp;quot;      yyyy:MM:dd::HH:mm:ss[.SSS]   1993:02:25::14:42:57.123456&lt;br /&gt;
              T:yyyy:MM:dd::HH:mm:ss[.SSS] T:1993:03:25::14:42:57.123&lt;br /&gt;
   &amp;quot;ACQ&amp;quot;      [yy]yy.DDD:HH:mm:ss[.SSS]    93.056:14:42:57.123456&lt;br /&gt;
   &amp;quot;EPOCH&amp;quot;    yyyy:sec_in_year             1993:4804977.123456&lt;br /&gt;
   &amp;quot;FILENAME&amp;quot; yyyyMMdd_HHmmss[SSS]         19930225_144257123456&lt;br /&gt;
   &amp;quot;NORAD&amp;quot;    yyDDD.frac_of_day            93056.61316115&lt;br /&gt;
   &amp;quot;TCR&amp;quot;      D:HH:mm:ss.SSS               56:14:42:57.123456&lt;br /&gt;
   &amp;quot;VAX&amp;quot;      dd-MMM-yyyy:HH:mm:ss.SSS     25-FEB-1993:14:42:57.123456&lt;br /&gt;
   &amp;quot;HMS&amp;quot;      HH:mm:ss.SSS                 14:42:57.123456&lt;br /&gt;
   &amp;quot;YMD&amp;quot;      yyyy:MM:dd                   1993:02:25&lt;br /&gt;
   &amp;quot;ISO8601&amp;quot;  yyyy-MM-ddTHH:mm:ss.SSSZ     1993-02-25T14:42:57.123456Z&lt;br /&gt;
   &amp;quot;FULL_STD&amp;quot; yyyy:MM:dd::HH:mm:ss.SSS     1993:02:25::14:42:57.123456&lt;br /&gt;
&lt;br /&gt;
  Or they can be any of the patterns accepted by the java.text.SimpleDateFormat.&lt;br /&gt;
  This gives maximum flexibility when converting between various time/date&lt;br /&gt;
  formats. Here is mini-guide to above format/SimpleDateFormat pattern letters:&lt;br /&gt;
    D=Day in year (1-366),  d=Day in month (1-31),   M=Month in year (1-12),&lt;br /&gt;
    H=Hour in day (0-23),   h=Hour in am/pm (1-12),  m=Minute in hour (0-59),&lt;br /&gt;
    s=whole seconds in minute (0-59), S=fractional seconds (up to femtosecond),&lt;br /&gt;
    (NOTE: above doc difference vs S for milliseconds in SimpleDateFormat).&lt;br /&gt;
&lt;br /&gt;
  Note: When the time is one day or less, time formats STD, ACQ, EPOCH, and VAX&lt;br /&gt;
  do NOT output the year, month, and day, but only the hours, minutes, and&lt;br /&gt;
  seconds. ISO8601 time format in NeXtMidas 3.3.0 to 3.5.3 also had this&lt;br /&gt;
  behavior, but was change to always output full date and time in 3.5.4.&lt;br /&gt;
&lt;br /&gt;
  For details, please see nxm.sys.lib.MFormat, nxm.sys.lib.Time.formatList and&lt;br /&gt;
  java.text.SimpleDateFormat.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Display the current time at the terminal.&lt;br /&gt;
       nM&amp;gt; TIMEX&lt;br /&gt;
       Time = 2004:05:09::16:04:53.416&lt;br /&gt;
     or&lt;br /&gt;
       nM&amp;gt; TIMEX NOW terminal&lt;br /&gt;
       Time = 2004:05:09::16:04:53.416&lt;br /&gt;
&lt;br /&gt;
  2. Display the current time rounded to the nearest second.&lt;br /&gt;
       nM&amp;gt; TIMEX round=1 terminal&lt;br /&gt;
       Time = 2004:05:09::16:04:53.000&lt;br /&gt;
&lt;br /&gt;
  3. Writes the current system time to the epoch timecode fields of MYFILE&lt;br /&gt;
     and also to the result LOCALTIME.&lt;br /&gt;
       nM&amp;gt; TIMEX NOW file=myfile localtime&lt;br /&gt;
&lt;br /&gt;
  4. Copies the epoch timecode in MYFILE to the epoch timecode in YOURFILE&lt;br /&gt;
     and the YOUROTHERFILEs acquisition fields.&lt;br /&gt;
       nM&amp;gt; TIMEX infile=myfile file=yourfile acq=yourotherfile&lt;br /&gt;
&lt;br /&gt;
  5. Breaks out the acquisition date/time keywords for MYFILE into its&lt;br /&gt;
     Julian day components for system modeling functions.&lt;br /&gt;
       nM&amp;gt; TIMEX acq=myfile jd=julianday soy=secofyear gha=greenwichHourAngle&lt;br /&gt;
&lt;br /&gt;
  6. Uses the timecode field in MYFILE as the quadword epoch time for&lt;br /&gt;
     the ECI reference frame.  This affects the epoch_year, epoch_seconds,&lt;br /&gt;
     and epoch_hour_angle quadwords of the file, quadwords(10-12).&lt;br /&gt;
       nM&amp;gt; TIMEX file=myfile quad=myfile&lt;br /&gt;
&lt;br /&gt;
     (There are no restrictions on the number of output parameters.)&lt;br /&gt;
&lt;br /&gt;
  7. Converts a time string to a DOUBLE.&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;2004:11:15::13:55:31.503&amp;quot; d:mytime&lt;br /&gt;
       nM&amp;gt; res mytime&lt;br /&gt;
         D: MYTIME          = 1.731678931503E9&lt;br /&gt;
&lt;br /&gt;
     Could also use (note this only works when the time is not quoted):&lt;br /&gt;
       nM&amp;gt; res d:mytime 2004:11:15::13:55:31.503&lt;br /&gt;
       nM&amp;gt; res mytime&lt;br /&gt;
         D: MYTIME          = 1.731678931503E9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  8. Converts a time string to a long LONG.&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;2004:11:15::13:55:31.503&amp;quot; L:mytime&lt;br /&gt;
       nM&amp;gt; res mytime&lt;br /&gt;
         L: MYTIME          = 1731678932&lt;br /&gt;
&lt;br /&gt;
     Could also use (note this only works when the time is not quoted):&lt;br /&gt;
       nM&amp;gt; res d:mytime 2004:11:15::13:55:31.503&lt;br /&gt;
       nM&amp;gt; res mytime&lt;br /&gt;
         L: MYTIME          = 1731678931&lt;br /&gt;
&lt;br /&gt;
     Note that TIMEX will round the time to the nearest second while RESULT&lt;br /&gt;
     will always do a type cast (i.e. round down).&lt;br /&gt;
&lt;br /&gt;
  9. Use Java input and output formats (since NeXtMidas 2.5.0).&lt;br /&gt;
       nM&amp;gt; timex now /fmt=&amp;quot;yyyy-MM-dd hh:mm:ss.SSS&amp;quot;&lt;br /&gt;
       Time = 2007-08-06 10:30:14.745&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;2007-08-06 10:30:14.745&amp;quot; /infmt=&amp;quot;yyyy-MM-dd hh:mm:ss.SSS&amp;quot;&lt;br /&gt;
       Time = 2007:08:06::10:30:14.745&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;1994-01-01T00:00:00Z&amp;quot; /infmt=&amp;quot;yyyy-MM-dd'T'hh:mm:ss'Z'&amp;quot;&lt;br /&gt;
       Time = 1994:01:01::00:00:00&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;1994-01-01T00:00:00Z&amp;quot; /infmt=&amp;quot;ISO8601&amp;quot;  !since NeXtMidas 3.3.0&lt;br /&gt;
       Time = 1994:01:01::00:00:00&lt;br /&gt;
&lt;br /&gt;
  10. Get current time in Hour-Min-Sec time format into results TIMEHMS.&lt;br /&gt;
       nM&amp;gt; timex now timeHMS /fmt=&amp;quot;HMS&amp;quot;&lt;br /&gt;
       nM&amp;gt; res timeHMS&lt;br /&gt;
       12S: TIMEHMS         = 17:44:27.293&lt;br /&gt;
&lt;br /&gt;
  11. Comparison of time of day (since midnight) in STD versus FULL_STD&lt;br /&gt;
       nM&amp;gt; TIMEX SSM /fmt=&amp;quot;STD&amp;quot;&lt;br /&gt;
       Time = 19:56:12.337&lt;br /&gt;
       nM&amp;gt; TIMEX SSM /fmt=&amp;quot;FULL_STD&amp;quot;                     !since NeXtMidas 3.5.2&lt;br /&gt;
       Time = 1950:01:01::19:56:12.337&lt;br /&gt;
&lt;br /&gt;
  12. Up to femtosecond precision is available           !since NeXtMidas 3.5.2&lt;br /&gt;
       nM&amp;gt; timex &amp;quot;2014:04:03  02:34:56.123456789012345&amp;quot; &amp;amp;&lt;br /&gt;
             /infmt=&amp;quot;yyyy:MM:dd  hh:mm:ss.SSSSSSSSSSSSSSS&amp;quot; &amp;amp;&lt;br /&gt;
             /fmt=&amp;quot;d MMM yyyy HH:mm:ss.SSSSSSSSSSSSSSSSSS&amp;quot;&lt;br /&gt;
       Time = 3 Apr 2014 02:34:56.123456789012345&lt;br /&gt;
&lt;br /&gt;
  13. simpleDateFormat milliseconds used when 3 or less Ss are specified&lt;br /&gt;
        nM&amp;gt;  timex &amp;quot;2014:04:03::02:34:56.1234&amp;quot; /fmt=&amp;quot;d MMM yyyy HH:mm:ss.S&amp;quot;&lt;br /&gt;
        Time = 3 Apr 2014 02:34:56.123&lt;br /&gt;
&lt;br /&gt;
  14. T:&amp;lt;std_format&amp;gt; as STD Time&lt;br /&gt;
        nM&amp;gt; timex T:2015:03:14::09:26:53.589793238462 /PREC=12&lt;br /&gt;
        Time = 2015:03:14::09:26:53.589793238462&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /FMT=&amp;lt;str&amp;gt;    Output format to use. If present, the output is a formatted&lt;br /&gt;
                time/data string, otherwise it will be a Time object. See the&lt;br /&gt;
                above section titled &amp;quot;Formatting&amp;quot; for details.&lt;br /&gt;
  /INFMT=&amp;lt;str&amp;gt;  Input format to use. If present, the input value is parsed from&lt;br /&gt;
                a time/data string, otherwise it will assume one of the time&lt;br /&gt;
                specifiers listed above. See the &amp;quot;Formatting&amp;quot; section for&lt;br /&gt;
                details.&lt;br /&gt;
  /PREC=&amp;lt;n&amp;gt;     Number of places after the decimal point to display when given&lt;br /&gt;
                one of the &amp;quot;standard&amp;quot; formats on the /FMT= switch.&lt;br /&gt;
&lt;br /&gt;
See Also: nxm.sys.lib.Time, nxm.sys.lib.MFormat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=IMPLICIT&amp;diff=837</id>
		<title>IMPLICIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=IMPLICIT&amp;diff=837"/>
		<updated>2020-04-27T22:05:13Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: declares macro results name checking mode (deprecated)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;declares macro results name checking mode (deprecated)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resname&lt;br /&gt;
&lt;br /&gt;
This is a place holder intrinsic from XMidas. It has no effect within&lt;br /&gt;
NeXtMidas and will cause an Error to be generated when used.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=ELSEIF&amp;diff=838</id>
		<title>ELSEIF</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=ELSEIF&amp;diff=838"/>
		<updated>2020-04-27T22:05:13Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: starts macro block to be executed when prior IF conditions fail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;starts macro block to be executed when prior IF conditions fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;value1&amp;gt;    Left side of expression&lt;br /&gt;
&amp;lt;test&amp;gt;      Logical test to be performed&lt;br /&gt;
&amp;lt;value2&amp;gt;    Right side of expression&lt;br /&gt;
&lt;br /&gt;
ELSEIF begins an alternative execution block for the macro IF statement.  It&lt;br /&gt;
performs the same logical tests available for the IF statement.  An example of&lt;br /&gt;
its use to take operating system-specific action follows: &lt;br /&gt;
&lt;br /&gt;
	if ENV.OStype eqs VMS&lt;br /&gt;
	  ! perform VMS actions&lt;br /&gt;
	elseif ENV.OStype eqs UNIX&lt;br /&gt;
	  ! perform UNIX actions&lt;br /&gt;
	else&lt;br /&gt;
	  SAY &amp;quot;Not supported for operating system ^ENV.OStype&amp;quot;&lt;br /&gt;
	endif&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  IF, ELSE, ENDIF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=INFO&amp;diff=839</id>
		<title>INFO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=INFO&amp;diff=839"/>
		<updated>2020-04-27T22:05:13Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: causes a macro to issue an informational message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;causes a macro to issue an informational message&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;TEXT&amp;gt; - message to print to screen&lt;br /&gt;
&lt;br /&gt;
Prints the given informational message to the terminal, preceded by the string&lt;br /&gt;
&amp;quot;INFO:&amp;quot; and followed by the name of the invoking macro in square brackets (e.g.&lt;br /&gt;
&amp;quot;[%MYMACRO]&amp;quot;), if used in a macro.  &lt;br /&gt;
&lt;br /&gt;
Informational messages are treated as low priority messages for the purposes of&lt;br /&gt;
filtering.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See Also: SAY, WARN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=NMSTART&amp;diff=834</id>
		<title>NMSTART</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=NMSTART&amp;diff=834"/>
		<updated>2020-04-27T22:05:12Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Starts a new NeXtMidas session.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starts a new NeXtMidas session.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starts a new NeXtMidas session. This briefly starts the Java VM to initialize&lt;br /&gt;
environment settings and to execute the optional %nmstartup macro in the&lt;br /&gt;
user's home directory. This creates the NeXtMidas State File (NMSF) used &lt;br /&gt;
throughout the session.&lt;br /&gt;
&lt;br /&gt;
Use of nmstart is technically optional. NeXtMidas can be run in &amp;quot;independent&amp;quot;&lt;br /&gt;
mode without using nmstart or nmend (this is typically done when launching&lt;br /&gt;
NeXtMidas from a script). Type &amp;quot;nm -H&amp;quot; at the OS command line for details.&lt;br /&gt;
&lt;br /&gt;
Note that some users alias nms to nmstart.&lt;br /&gt;
&lt;br /&gt;
  **************************************************************************&lt;br /&gt;
  * This is an operating system command (aliased when nmstart is run), it  *&lt;br /&gt;
  * can only be used outside of the NeXtMidas shell.                       *&lt;br /&gt;
  *                                                                        *&lt;br /&gt;
  * If run from inside the NeXtMidas shell, bad things will happen.        *&lt;br /&gt;
  **************************************************************************&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Start a new NeXtMidas session and enter the shell:&lt;br /&gt;
       $ nmstart&lt;br /&gt;
       &amp;lt;prints version information and copyright&amp;gt;&lt;br /&gt;
       $ nm&lt;br /&gt;
       nM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Also:&lt;br /&gt;
  NMEND, NM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=STARTMACRO&amp;diff=835</id>
		<title>STARTMACRO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=STARTMACRO&amp;diff=835"/>
		<updated>2020-04-27T22:05:12Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: mark the start of the command section of a macro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mark the start of the command section of a macro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;parameter 1&amp;gt;      First macro parameter&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;parameter N&amp;gt;      Nth macro parameter&lt;br /&gt;
&lt;br /&gt;
The STARTMACRO command performs identifies formal macro parameters that&lt;br /&gt;
will be substituted at runtime by actual parameters.  It is not necessary&lt;br /&gt;
for a macro to have any parameters.&lt;br /&gt;
&lt;br /&gt;
At runtime, the STARTMACRO command does nothing, but NeXtMidas issues an&lt;br /&gt;
error if it encounters this command when a macro is not being executed or&lt;br /&gt;
if this command is not at the root level of the macro.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /MSGLOG - Set the midas messagelog&lt;br /&gt;
&lt;br /&gt;
See also:  ENDMACRO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=HISTOGRAM&amp;diff=836</id>
		<title>HISTOGRAM</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=HISTOGRAM&amp;diff=836"/>
		<updated>2020-04-27T22:05:12Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: computes the histogram of input data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;computes the histogram of input data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;IN&amp;gt;    - Input file name&lt;br /&gt;
&amp;lt;OUT&amp;gt;   - Output histogram&lt;br /&gt;
&amp;lt;START&amp;gt; - Center of bin containing lowest ordinate value &lt;br /&gt;
&amp;lt;END&amp;gt;   - End of range of interest&lt;br /&gt;
&amp;lt;DELTA&amp;gt; - Width of each bin&lt;br /&gt;
    &lt;br /&gt;
Keyword Only Parameters&lt;br /&gt;
[BINS]   - (Since 3.1.0) The number of bins to use (overrides &amp;lt;DELTA&amp;gt; &lt;br /&gt;
           as needed)&lt;br /&gt;
[CXMODE] - (Since 3.1.0) The format mode when using complex data. Must be in &lt;br /&gt;
           &amp;quot;MAG,PHASE,REAL,IMAG&amp;quot;. Default is MAG.&lt;br /&gt;
    &lt;br /&gt;
HISTOGRAM computes a histogram of the input data whose value falls between&lt;br /&gt;
&amp;lt;START&amp;gt; and &amp;lt;END&amp;gt;.  Values outside this range are not counted, and the number&lt;br /&gt;
of points that could not be counted is displayed, along with the total number&lt;br /&gt;
of points and number of bins. (This output is suppressed when in a macro and &lt;br /&gt;
/VERBOSE is not specified).&lt;br /&gt;
&lt;br /&gt;
(Since 3.1.0) If &amp;lt;START&amp;gt; and &amp;lt;END&amp;gt; are omitted (or set such that &lt;br /&gt;
&amp;lt;END&amp;gt; &amp;lt;= &amp;lt;START&amp;gt;) the &amp;lt;START&amp;gt; and &amp;lt;END&amp;gt; values will be set to match the &lt;br /&gt;
range of values for the input data type.&lt;br /&gt;
&lt;br /&gt;
(Since 3.1.0) If &amp;lt;DELTA&amp;gt; is not set and &amp;lt;BINS&amp;gt; is not set, a default of &lt;br /&gt;
BINS=512 will be used.&lt;br /&gt;
&lt;br /&gt;
If the input is a pipe, a histogram is computed on each transfer length.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /BITS - (Since 3.1.0) Count the bit values (usually used with 'SP' data).&lt;br /&gt;
          This implicitly sets START=0, END=1, BINS=2.&lt;br /&gt;
  /TL   - Set the transfer length in elements&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=LOOP&amp;diff=831</id>
		<title>LOOP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=LOOP&amp;diff=831"/>
		<updated>2020-04-27T22:05:11Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: implements a basic counting loop within a macro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;implements a basic counting loop within a macro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;count&amp;gt;  Number of times to loop&lt;br /&gt;
&amp;lt;label&amp;gt;	 Result label to hold count (optional)&lt;br /&gt;
&lt;br /&gt;
The LOOP loop is a simplified version of the DO loop that is provided for&lt;br /&gt;
compatibility with X-Midas.&lt;br /&gt;
&lt;br /&gt;
A LOOP-ENDLOOP combination is used in a macro to loop through a sequence of &lt;br /&gt;
commands &amp;lt;count&amp;gt; number of times. If specified, the results parameter &amp;lt;label&amp;gt;&lt;br /&gt;
will contain the current loop count.  When the loop is finished, &amp;lt;label&amp;gt; will&lt;br /&gt;
be equal to &amp;lt;count&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;label&amp;gt; starts at 1 and continues up through &amp;lt;count&amp;gt; inclusively. Thus for&lt;br /&gt;
&amp;lt;count&amp;gt;=3, &amp;lt;label&amp;gt; becomes 1, 2, 3, and then the loop stops.&lt;br /&gt;
&lt;br /&gt;
There are no restrictions nesting LOOP loops.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Initialize the results MYRES_1 ... MYRES_7.&lt;br /&gt;
&lt;br /&gt;
   LOOP 7 i&lt;br /&gt;
     result myres_^i 0&lt;br /&gt;
   ENDDO&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  DO, ENDLOOP, BREAK, CONTINUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=MAPDEMO&amp;diff=832</id>
		<title>MAPDEMO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=MAPDEMO&amp;diff=832"/>
		<updated>2020-04-27T22:05:11Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Demonstrates NeXtMidas Client-Side Mapping Capabilities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Demonstrates NeXtMidas Client-Side Mapping Capabilities&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;URL&amp;gt;  - URL of the server to connect to [DEF=http://nextmidas.techma.com:...]&lt;br /&gt;
&amp;lt;TYPE&amp;gt; - Type of map server (&amp;quot;WMS&amp;quot;,&amp;quot;NMS&amp;quot;,&amp;quot;GMap&amp;quot;) [DEF=WMS]&lt;br /&gt;
&lt;br /&gt;
The NeXtMidas PLOT command supports connecting to several types of map servers.&lt;br /&gt;
These include:&lt;br /&gt;
&lt;br /&gt;
  WMS  - OpenGIS-compatible Web Map Server (WMS version &amp;quot;1.1.1&amp;quot; or &amp;quot;1.3.0&amp;quot;)&lt;br /&gt;
  NMS  - NeXtMidas Map Server (MAP option tree)&lt;br /&gt;
  GMap - Google Maps&lt;br /&gt;
&lt;br /&gt;
Of these the most full-featured (and newest) is the WMS client. It features&lt;br /&gt;
individual layer selection, layer reordering, style selection, brightness and&lt;br /&gt;
contrast. All of these are configurable from a macro or from an easy-to-use&lt;br /&gt;
popup.&lt;br /&gt;
&lt;br /&gt;
When the window comes up click the 'Configure' button to configure the WMS&lt;br /&gt;
maps. Note that, by default no maps are selected. Different WMS servers can&lt;br /&gt;
support numerous types of maps (charts, imagery, shape files, etc).&lt;br /&gt;
&lt;br /&gt;
The GMap and NMS servers use a protocol that is more limited and does not&lt;br /&gt;
provide the clients with the same level of control. These clients come up&lt;br /&gt;
with a default set of imagery that has few configuration options.&lt;br /&gt;
&lt;br /&gt;
For more information please see the PLOT explain file and please see the&lt;br /&gt;
mapdemo.mm macro in the MCR area of the SYS option tree.&lt;br /&gt;
&lt;br /&gt;
WebStart:&lt;br /&gt;
  There is a sample JNLP file that can be used to launch this macro from&lt;br /&gt;
  Java Web Start. The file is located at $NMROOT/htdocs/mapdemo.jnlp. You&lt;br /&gt;
  will need to edit the file with the following changes before using it:&lt;br /&gt;
&lt;br /&gt;
    (1) Change the &amp;quot;codebase&amp;quot; URL for the host server (line 17).&lt;br /&gt;
    (2) Change the &amp;quot;href&amp;quot; (relative to &amp;quot;codebase&amp;quot; or absolute URL) if the&lt;br /&gt;
        JNLP file is at a different location/name (line 18).&lt;br /&gt;
    (3) Change the URL for the map server in the argument tag enclosed within&lt;br /&gt;
        the application-desc tag (line 43).&lt;br /&gt;
&lt;br /&gt;
  For more details on using Java Web Start to launch a NeXtMidas application,&lt;br /&gt;
  please see the &amp;quot;NeXtMidas User's Guide&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
WMS Servers:&lt;br /&gt;
  There are a number of WMS servers available on the Internet, a few that&lt;br /&gt;
  are interesting include:&lt;br /&gt;
&lt;br /&gt;
    Fulton County Government (http://wms.co.fulton.ga.us/wms/public)&lt;br /&gt;
      - Maps of streets and zoning information for Atlanta, GA.&lt;br /&gt;
      - Need to zoom in closely on Atlanta before anything will show up.&lt;br /&gt;
&lt;br /&gt;
    Geography Network Canada (http://www.geographynetwork.ca/wmsconnector/&lt;br /&gt;
                               com.esri.wms.Esrimap/OBM_Full_I)&lt;br /&gt;
      - Maps of streets and public utilities around Toronto, ON.&lt;br /&gt;
      - Demonstrates connecting to an ESRI server.&lt;br /&gt;
      - Need to zoom in closely on Toronto before anything will show up.&lt;br /&gt;
&lt;br /&gt;
    NASA World Wind (http://wms.jpl.nasa.gov/wms.cgi)&lt;br /&gt;
      - Imagery of the world and elevation data.&lt;br /&gt;
      - Demonstrates connecting to a NASA World Wind server.&lt;br /&gt;
&lt;br /&gt;
    USGS EO see http://eoportal.cr.usgs.gov/EO/gis.php for updated URLs)&lt;br /&gt;
      - e.g. http://gisdata.usgs.gov/wmsconnector/com.esri.wms.Esrimap/&amp;amp;&lt;br /&gt;
               USGS_EDC_Ortho_StateLocal&lt;br /&gt;
&lt;br /&gt;
  To debug your WMS server and see it's capabilities, append the following to&lt;br /&gt;
  the WMS URL &amp;quot;?SERVICE=WMS&amp;amp;REQUEST=GetCapabilities&amp;quot; and open it in your browser&lt;br /&gt;
  to see an XML document. e.g.&lt;br /&gt;
  http://nextmidas.techma.com:8888/wms/mapServer?SERVICE=WMS&lt;br /&gt;
         &amp;amp;REQUEST=GetCapabilities&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Connect to OpenGIS-compatible Web Map Server (WMS):&lt;br /&gt;
       nM&amp;gt; mapdemo &amp;quot;http://nextmidas.techma.com:8888/wms/mapServer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  2. Connect to NASA's WMS server:&lt;br /&gt;
       nM&amp;gt; mapdemo &amp;quot;http://wms.jpl.nasa.gov/wms.cgi&amp;quot; &amp;quot;WMS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  3. Connect to NeXtMidas Map Server (NMS):&lt;br /&gt;
       nM&amp;gt; mapdemo &amp;quot;http://nextmidas.techma.com:8080/nms&amp;quot; &amp;quot;NMS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  4. Connect to OGC-compatible Web Map Server (WMS):&lt;br /&gt;
       nM&amp;gt; mapdemo &amp;quot;http://nextmidas.techma.com:8800/wms/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /LOOK=&amp;lt;look&amp;gt;  Change the look and feel on startup (for use via WebStart).&lt;br /&gt;
&lt;br /&gt;
See Also: PLOT, nxm.sys.libg.LayerMap, nxm.sys.libg.LayerWMS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=CONFIDENCE&amp;diff=833</id>
		<title>CONFIDENCE</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=CONFIDENCE&amp;diff=833"/>
		<updated>2020-04-27T22:05:11Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Runs a set of NeXtMidas test macros on an option tree&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Runs a set of NeXtMidas test macros on an option tree&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;opt&amp;gt;  Option tree name to test&lt;br /&gt;
&lt;br /&gt;
Optional Test Configuration File:&lt;br /&gt;
  test_config.tbl - Input file to add to/modify tests in test area of &amp;lt;opt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
CONFIDENCE runs the any configured unit tests and test macros located in the&lt;br /&gt;
test area of the specified option tree.  This test suite returns an overall&lt;br /&gt;
PASS / FAIL message for each command tested.&lt;br /&gt;
&lt;br /&gt;
Each test typically exercises multiple aspects of the command it is testing.&lt;br /&gt;
If any of these constituent tests associated with the command fail, CONFIDENCE&lt;br /&gt;
returns a FAIL message to the user.  ALL constituent tests associated with a&lt;br /&gt;
command must pass in order for CONFIDENCE to return a PASS message for that&lt;br /&gt;
command.&lt;br /&gt;
&lt;br /&gt;
CONFIDENCE is actually a wrapper macro that runs tests for all commands in the&lt;br /&gt;
option tree that have a test_&amp;lt;command&amp;gt; macro in the test subdirectory.  If the&lt;br /&gt;
file test_config.tbl exists in the test area/subdirectory, it can be used to&lt;br /&gt;
modify the default behavior (see Configuration Table File Definition section&lt;br /&gt;
below for more details).  To run the individual tests, type;&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; home test &amp;lt;opt&amp;gt;&lt;br /&gt;
and run:&lt;br /&gt;
  nM&amp;gt; %test_&amp;lt;command&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If in the course of running the CONFIDENCE macro a FAIL message is returned,&lt;br /&gt;
and the user wishes to get PASS / FAIL information for the constituent tests&lt;br /&gt;
for that particular command; the macro in the nxm.&amp;lt;opt&amp;gt;.test area should be run&lt;br /&gt;
individually.  For example, with one's home path set to the test area you can&lt;br /&gt;
run:&lt;br /&gt;
  nM&amp;gt; %TEST_CALCULATOR&lt;br /&gt;
to see the individual results of the calculator command tests.&lt;br /&gt;
&lt;br /&gt;
Since 2.7.1: All test failures are printed (instead of rolled up into one FAIL&lt;br /&gt;
message for that command so that user does not need to re-run failed test cases&lt;br /&gt;
to get more detailed information.&lt;br /&gt;
&lt;br /&gt;
Since 3.1.0: the /baseline, /interactive, and /debug (using value of /dbg)&lt;br /&gt;
switches are propagated to all test macros and their sub-test macros.&lt;br /&gt;
&lt;br /&gt;
Configuration Table File Definition&lt;br /&gt;
-----------------------------------&lt;br /&gt;
The configuration table file (test_config.tbl) can be converted directly&lt;br /&gt;
to a NeXtMidas Table and consists of a number of TAG=VALUE lines.&lt;br /&gt;
Where TAG=VALUE can be:&lt;br /&gt;
  1) A quoted and comma separated list of additional test &amp;lt;name&amp;gt;'s.&lt;br /&gt;
       TESTLIST=&amp;quot;&amp;lt;name1&amp;gt;,...,&amp;lt;name2&amp;gt;&amp;quot;&lt;br /&gt;
    where &amp;lt;nameN&amp;gt; is TEST_&amp;lt;nameN&amp;gt;.mm. This allows TEST_&amp;lt;name&amp;gt;'s to be run&lt;br /&gt;
    when &amp;lt;name&amp;gt; does not correspond to a command in the option tree.&lt;br /&gt;
&lt;br /&gt;
  2) Any command in the command dictionary followed by a tag.&lt;br /&gt;
     &amp;lt;cmd&amp;gt;=[BROKEN|NOTEST|WEB|&amp;lt;cmd2&amp;gt;]&lt;br /&gt;
     where&lt;br /&gt;
       BROKEN - Test is KNOWN to be broken so you want to skip it&lt;br /&gt;
       NOTEST - Do not desire to have a test for this command&lt;br /&gt;
       WEB    - Test requires a WEBSERVER to be running&lt;br /&gt;
       &amp;lt;cmd2&amp;gt; - NO test required for &amp;lt;cmd&amp;gt;, it is tested when test for&lt;br /&gt;
                &amp;lt;cmd2&amp;gt; is run.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  Run only NON-INTERACTIVE tests (all interactive tests will show as passed)&lt;br /&gt;
    nM&amp;gt; confidence&lt;br /&gt;
&lt;br /&gt;
  Run INTERACTIVE and NON-INTERACTIVE tests&lt;br /&gt;
    nM&amp;gt;confidence/interactive&lt;br /&gt;
&lt;br /&gt;
  Run NON-INTERACTIVE tests and show any commands MISSING tests&lt;br /&gt;
    nM&amp;gt;confidence/miss&lt;br /&gt;
&lt;br /&gt;
  Run NON-INTERACTIVE tests and stop at the ASK command&lt;br /&gt;
    nM&amp;gt;confidence/stopat=ASK&lt;br /&gt;
&lt;br /&gt;
SWITCHES:&lt;br /&gt;
  /BASELINE    - Run this before baseline release, enables additional&lt;br /&gt;
                 non-interactive testing and turns on /INTERACTIVE. [DEF=FALSE]&lt;br /&gt;
  /DBG         - Show detailed status line for tests in sub-macros. [DEF=FALSE]&lt;br /&gt;
  /DEBUG       - Show status line for each test. [DEF=TRUE]&lt;br /&gt;
  /INTERACTIVE - Non-interactive and interactive tests. [DEF=/BASELINE]&lt;br /&gt;
  /MISS        - Show commands which are missing tests. [DEF=TRUE]&lt;br /&gt;
  /RESUME=cmd  - Skips test macros prior to specified command.&lt;br /&gt;
  /STOPAT=cmd  - Stops at specified command (does not run given command).&lt;br /&gt;
  /WEB         - Run tests which require HTTPD, see HELP WEBSERVERS&lt;br /&gt;
&lt;br /&gt;
SEE ALSO: HOMEPATH, ASSERT, UNITTEST&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=MACROFUNC&amp;diff=828</id>
		<title>MACROFUNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=MACROFUNC&amp;diff=828"/>
		<updated>2020-04-27T22:05:10Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: create or list macro for debug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;create or list macro for debug&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;U:name&amp;gt;  Name of macro [DEF=CURRENT]&lt;br /&gt;
&amp;lt;U:func&amp;gt;  Function to perform (ENTER,LIST) [DEF=LIST]&lt;br /&gt;
&amp;lt;L:wind&amp;gt;  Number of lines displayed for LIST function inside a macro [DEF=5]&lt;br /&gt;
&lt;br /&gt;
Provides some utilities for manipulating macros.  When executed the given macro&lt;br /&gt;
definition is loaded and the specified function is performed on the macro text. &lt;br /&gt;
&lt;br /&gt;
FUNCTIONS:&lt;br /&gt;
&lt;br /&gt;
  ENTER - macrofunc &amp;lt;name&amp;gt; ENTER&lt;br /&gt;
    Allows a user to enter a macro directly from the command prompt.  If &amp;lt;name&amp;gt;&lt;br /&gt;
    is given, the macro is written to the current homepath as a user macro. If  &lt;br /&gt;
    &amp;lt;name&amp;gt; is blank, the macro is entered and executed.&lt;br /&gt;
&lt;br /&gt;
  LIST - macrofunc &amp;lt;name&amp;gt; LIST&lt;br /&gt;
    Displays the contents of the macro to the terminal with line numbers to the&lt;br /&gt;
    left of each line. If &amp;lt;name&amp;gt; is blank and called within a macro, the lines&lt;br /&gt;
    +-&amp;lt;WIND&amp;gt; about the current macro index are displayed.  If name is not &lt;br /&gt;
    blank, the entire parsed macro is displayed.&lt;br /&gt;
&lt;br /&gt;
Switches: NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=DEMO&amp;diff=829</id>
		<title>DEMO</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=DEMO&amp;diff=829"/>
		<updated>2020-04-27T22:05:10Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: NeXtMidas software demonstration macro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NeXtMidas software demonstration macro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This is a demonstration macro designed to present some of the capability of&lt;br /&gt;
NeXtMidas in the following areas:&lt;br /&gt;
    1) GUI development&lt;br /&gt;
    2) Signal Processing&lt;br /&gt;
    3) Graphics - Geoplots, rasters and spectra&lt;br /&gt;
    4) Macro-level command-line interface&lt;br /&gt;
&lt;br /&gt;
While the DEMO macro is in fact only a demonstration, it can be used by&lt;br /&gt;
users and developers as an example on how to put together graphics-based&lt;br /&gt;
macros.  Within the DEMO macro a wide range of NeXtMidas capability is&lt;br /&gt;
hi-lighted.&lt;br /&gt;
&lt;br /&gt;
The left-most section of the window is the control area for the graphics&lt;br /&gt;
macro.  This control section consists of the following parts:&lt;br /&gt;
    MACRO         - Run, Pause and Stop buttons for the macro&lt;br /&gt;
    Waveform      - Control section for the Real-Time Spectra display in the&lt;br /&gt;
                    right-most part of the window and the Audio Spectra&lt;br /&gt;
                    display below it.  Provides the ability to change the&lt;br /&gt;
                    wave shape and the sine frequency of these spectra.&lt;br /&gt;
    GeoPlotter    - Provides the means to change the view of the geodetic&lt;br /&gt;
                    plot of the earth in the center screen.  It also&lt;br /&gt;
                    provides feature control (adding new, moving, clearing).&lt;br /&gt;
    Demodulator   - Provides the means to change the demodulation mode&lt;br /&gt;
                    (i.e., FM, AM, etc).  See the DEMOD explain file&lt;br /&gt;
                    for more detail on this capability.&lt;br /&gt;
    Audio Mixer   - Provides the means to change Gain, Low, Mid and High&lt;br /&gt;
                    filters for the audio spectra.&lt;br /&gt;
    Audio Spectra - Sample plot of a piped audio file.&lt;br /&gt;
    Other         - Sample of a graphical monitor for a data pipe.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
 1) These control sections may be rolled up/down by clicking on the title areas&lt;br /&gt;
    MACRO, Waveform,... This is particularly useful for saving screen space.&lt;br /&gt;
&lt;br /&gt;
 2) Numeric values may be entered/changed by:&lt;br /&gt;
    a) RIGHT-MOUSE(RM) click on the number an enter desired value&lt;br /&gt;
    b) LEFT-MOUSE(LM) click on a number place and then changing the values&lt;br /&gt;
       by clicking on the diamond. The values go UP/DOWN with a LM click or RM,&lt;br /&gt;
       respectively.&lt;br /&gt;
&lt;br /&gt;
The center section of the window consists of the following:&lt;br /&gt;
    Map Display   - A plot of the earth in geodetic view.  The view of the&lt;br /&gt;
                    earth can be changed via the GeoPlotter control section&lt;br /&gt;
                    described above or by right-clicking on the pane to&lt;br /&gt;
                    display a multi-level pop-up window.  Also by right-&lt;br /&gt;
                    clicking, holding, and moving the mouse the earth will&lt;br /&gt;
                    rotate.  By left-clicking and dragging the mouse, the&lt;br /&gt;
                    plot will be zoomed to the section selected (as defined&lt;br /&gt;
                    by the &amp;quot;box&amp;quot; constructed via the mouse movement).  By a&lt;br /&gt;
                    combination of rotating and zooming any point of interest&lt;br /&gt;
                    on the earth can be viewed.&lt;br /&gt;
    Macro Window  - This is labeled &amp;quot;RunTime Macro Language Interface&amp;quot;, and&lt;br /&gt;
                    is actually a mini command-line interface.  Any NeXtMidas&lt;br /&gt;
                    command can be typed into the small rectangular window&lt;br /&gt;
                    below the horizontal scroll bar and the results of that&lt;br /&gt;
                    command will be display in the window above (with the&lt;br /&gt;
                    nMP&amp;gt; prompt).  This is particularly useful for displaying&lt;br /&gt;
                    files via the FILES command.&lt;br /&gt;
&lt;br /&gt;
The left section of the window consists of the following:&lt;br /&gt;
    Real-Time Spectra - A mini spectral display.  Its parameters can be&lt;br /&gt;
                        controlled via the control area as described above.&lt;br /&gt;
    Static Raster     - This is a plot of the MIDAS type 2000 file called&lt;br /&gt;
                        apenny.prm.  This plot demonstrates the capability of&lt;br /&gt;
                        NeXtMidas color-mapping.  As with any NeXtMidas plot&lt;br /&gt;
                        it can be zoomed via left-clicking-and-dragging and it&lt;br /&gt;
                        can be altered via a right-mouse click that presents&lt;br /&gt;
                        a multi-level pop-up window.&lt;br /&gt;
&lt;br /&gt;
Additionally, developers can examine the GUI definition file associated with&lt;br /&gt;
the DEMO macro (called demo.mmp and located in the nxm.sys.mcr directory) to&lt;br /&gt;
determine how to define the geometry of NeXtMidas GUI displays, as well as to&lt;br /&gt;
see how the .mmp file is linked to the macro code (in the .mm file).&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /SERVER=port - Enable RMIF and HTTP server listening on given port.  [DEF=OFF]&lt;br /&gt;
&lt;br /&gt;
SEE ALSO: SD360, nxm.sys.mcr.demo.mmp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=FCALCULATOR&amp;diff=830</id>
		<title>FCALCULATOR</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=FCALCULATOR&amp;diff=830"/>
		<updated>2020-04-27T22:05:10Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: implements a reverse polish calculator on elements of data files.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;implements a reverse polish calculator on elements of data files.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;LABEL&amp;gt;     - Label for the output file.&lt;br /&gt;
&amp;lt;param 1:N&amp;gt; - Parameters for the fcalc function.&lt;br /&gt;
&lt;br /&gt;
Evaluates the expression contained in the list of &amp;lt;variables/operators/files&amp;gt;&lt;br /&gt;
entries and stores the answer(s) in the output file(s). Reverse Polish Notation&lt;br /&gt;
is used (just like most HP calculators). The NeXtMidas version of calculator&lt;br /&gt;
extends the syntax to allow multiple outputs per calculation. If this syntax&lt;br /&gt;
is not used, it assumes the 1st argument is the name of the single output file&lt;br /&gt;
as in the X-Midas version. This version also allows results or expressions&lt;br /&gt;
to be recomputed as the files are processed by using the /MON switch.&lt;br /&gt;
&lt;br /&gt;
If multiple input files are given with different lengths, the computations&lt;br /&gt;
will stop after then end of the shortest file is reached. The resulting output&lt;br /&gt;
file will have the same size as the *shortest* input file.&lt;br /&gt;
&lt;br /&gt;
Though at least one input for an operator needs to be a file, there is no restriction on order.&lt;br /&gt;
(As of 3.5.1 there is no longer a requirement that the first input be a file)&lt;br /&gt;
&lt;br /&gt;
3 input operators can have 2 of their 3 inputs be constants (as of 3.5.1).&lt;br /&gt;
&lt;br /&gt;
Note1: Since NeXtMidas 2.5.0, the string infinity can be used in computations.&lt;br /&gt;
Note2: Since NeXtMidas 2.6.0, the LOG, LN, and DB operators may return NaN&lt;br /&gt;
       (Not a Number) for negative arguments, and also treat zero arguments as&lt;br /&gt;
       if they were very small positive values, in order to avoid returning&lt;br /&gt;
       -infinity for log(0.0).  The old pre 2.6.0 backwards compatible behavior&lt;br /&gt;
       (incoming arguments were bounded at 1.0e-12 and the absolute value was&lt;br /&gt;
       always taken) is available via the LOG/B, LN/B, and DB/B operators.&lt;br /&gt;
Note3: Note that at the start of each JVM session, the initial seed value is set&lt;br /&gt;
       to 12345678 and this seed is used for the uniformly distributed RANDOM&lt;br /&gt;
       number generation. This consistent non-random setting of seed allows for&lt;br /&gt;
       consistent random data generation for testing across repeated session.&lt;br /&gt;
       SETSEED must be used if a truly random seed is required for each session.&lt;br /&gt;
       Since NeXtMidas 3.1.1: The RANDOM/P are RANDOM/S operators provide&lt;br /&gt;
       alternative random number generation that always are with a random seed.&lt;br /&gt;
&lt;br /&gt;
Operators:&lt;br /&gt;
   +   : addition                        -   : subtraction&lt;br /&gt;
   *   : multiplication                  /   : division&lt;br /&gt;
   ~   : conjugate of complex            ~*  : complex conjugate multiplication&lt;br /&gt;
   ~/  : complex conjugate division&lt;br /&gt;
   **  : power&lt;br /&gt;
&lt;br /&gt;
   Comparators:&lt;br /&gt;
   -----------&lt;br /&gt;
   EQ : equal to&lt;br /&gt;
   LT : less than                      GT : greater than&lt;br /&gt;
   LE : less than or equal to          GE : greater than or equal to&lt;br /&gt;
&lt;br /&gt;
   Trigonometric and Angle Functions:&lt;br /&gt;
   ---------------------------------&lt;br /&gt;
   COS : radians                       ACOS  : principal value (radians)&lt;br /&gt;
   SIN : radians                       ASIN  : principal value (radians)&lt;br /&gt;
   TAN : radians                       ATAN  : principal value (radians)&lt;br /&gt;
                                       ATAN2 : principal value (radians)&lt;br /&gt;
   POLAR : complex rect to polar       RECT  : complex polar to rect&lt;br /&gt;
   PHASE : phase of complex&lt;br /&gt;
&lt;br /&gt;
   All functions dealing with angles are by default in radians.&lt;br /&gt;
   To express in degrees, append a D to the operator.&lt;br /&gt;
   To express in cycles, append a C to the operator.&lt;br /&gt;
   This applies to SIN,COS,TAN,ASIN,ACOS,ATAN,ATAN2,PHASE,POLAR,RECT&lt;br /&gt;
&lt;br /&gt;
   COMPLEX NUMBERS&lt;br /&gt;
   ---------------&lt;br /&gt;
   ADDC        : Alias for ~+&lt;br /&gt;
   CMPLX       : Convert a real number &amp;lt;r&amp;gt; into a complex number (&amp;lt;r&amp;gt;,0)&lt;br /&gt;
   CONJ        : Alias for ~&lt;br /&gt;
   DIVC        : Alias for ~/&lt;br /&gt;
   MULC        : Alias for ~*&lt;br /&gt;
   REAL, IMAG  : Get the REAL or IMAGINARY part of a complex number&lt;br /&gt;
   SUBC        : Alias for ~-&lt;br /&gt;
&lt;br /&gt;
   Bit Manipulations:&lt;br /&gt;
   -----------------&lt;br /&gt;
   BOR  : bitwise OR         BAND : bitwise AND&lt;br /&gt;
   BXOR : Exclusive OR       BNOT : Complement&lt;br /&gt;
&lt;br /&gt;
   Miscellaneous (in alphabetical order):&lt;br /&gt;
   -------------------------------------&lt;br /&gt;
   ADD     : Alias for +&lt;br /&gt;
   ABS     : absolute value&lt;br /&gt;
   CEIL    : Get the closest fixed point number above given real number&lt;br /&gt;
   CLIP    : CLIP value to within a MAX,MIN range, i.e. MIN (b, MAX(c,a)) where&lt;br /&gt;
               a=value, b=maximum, c=minimum&lt;br /&gt;
   DB      : Convert number to DB (precise)&lt;br /&gt;
   DB/B    : Convert number to DB (precise &amp;amp; bounded - see Note2 above)&lt;br /&gt;
   DBF     : Convert number to DB (fast, less precise)&lt;br /&gt;
   DEMUX   : demux complex into 2 scalars&lt;br /&gt;
   DIV     : Alias for /&lt;br /&gt;
   DOT     : dot product of two vectors&lt;br /&gt;
   EXP     : natural exponential&lt;br /&gt;
   FIX     : real to integer truncation&lt;br /&gt;
   FLOOR   : Get the closest fixed point number below given real number&lt;br /&gt;
   LOG     : base 10 logarithm&lt;br /&gt;
   LOG/B   : Base 10 logarithm (bounded - see Note2 above)&lt;br /&gt;
   LN      : natural logarithm&lt;br /&gt;
   LN/B    : Natural logarithm (bounded - see Note2 above)&lt;br /&gt;
   MAG     : magnitude of complex&lt;br /&gt;
   MAG2    : magnitude squared&lt;br /&gt;
   MAX     : maximum of 2 values (Alias is MAXIMUM)&lt;br /&gt;
   MIN     : minimum of 2 values (Alias is MINIMUM)&lt;br /&gt;
   MUL     : Alias for *&lt;br /&gt;
   MUX     : mux 2 scalars into complex&lt;br /&gt;
   MOD     : Same as MOD/T&lt;br /&gt;
   MOD/E   : Euclidean Modulo function (always positive)&lt;br /&gt;
   MOD/F   : Floored Modulo function (sign follows divisor)&lt;br /&gt;
   MOD/T   : Truncation Modulo function (Java % operator)&lt;br /&gt;
   POW     : Alias for **&lt;br /&gt;
   POWER2  : Gets the power of 2 number &amp;gt;= given number&lt;br /&gt;
   RANDOM  : Pseudo-random number (0, 1). See Note3 above.&lt;br /&gt;
   RANDOM/P: Pseudo-random number [0, 1) (see java.util.Random - Since 3.1.1)&lt;br /&gt;
   RANDOM/S: Cryptographically secure-random number using [0, 1)&lt;br /&gt;
             (see java.security.SecureRandom - Since 3.1.1)&lt;br /&gt;
   ROUND   : real to integer rounding&lt;br /&gt;
   SQRT    : square root&lt;br /&gt;
   SQUARE  : Square a number&lt;br /&gt;
   SUB     : Alias for -&lt;br /&gt;
   VMUX    : mux 3 scalars into vector&lt;br /&gt;
   VDEMUX  : Demux vector into 3 scalars&lt;br /&gt;
   WRAP    : Wrap data to a range (usually phase to -180 to 180)&lt;br /&gt;
   UNWRAP  : UnWrap data from a range (usually phase to -180 to 180)&lt;br /&gt;
&lt;br /&gt;
   Stack Operations:&lt;br /&gt;
   ----------------&lt;br /&gt;
   PUSH : push top of stack (duplicate)&lt;br /&gt;
   POP  : pop the top of stack (discard)&lt;br /&gt;
   &amp;lt;&amp;gt;   : swaps the top two values on the stack&lt;br /&gt;
   ?:   : compare top of stack to zero and select top-1 if &amp;gt; or top-2&lt;br /&gt;
          if not &amp;quot;D=(C&amp;gt;0)?A:B&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   &amp;gt;name : pops the top of the stack to the named output file&lt;br /&gt;
   &amp;lt;name : pushes contents of named input file onto the stack&lt;br /&gt;
&lt;br /&gt;
  All entries are treated first as operators.  If the entry does not match any&lt;br /&gt;
  of the supported operators, it is tested to be a results parameter. If it can&lt;br /&gt;
  not be evaluated as a result, it is assumed to be a file name. Therefore, the&lt;br /&gt;
  operators identified above cannot be used as variable names.  The &amp;lt;name form&lt;br /&gt;
  for input files avoids trying to parse them as operators or constants.&lt;br /&gt;
&lt;br /&gt;
  NOTE: When using in-line file trimming the &amp;lt;name input file form may be&lt;br /&gt;
  necessary to avoid generating errors while trying to parse them as constants&lt;br /&gt;
  or operators.&lt;br /&gt;
&lt;br /&gt;
  The conversion of each numeric input parameter is handled by the Convert.s2o()&lt;br /&gt;
  routine. Thus, in-line calculations can be used within a parameter even though&lt;br /&gt;
  that argument is treated using reverse polish by the rest of the fcalculator&lt;br /&gt;
  command.&lt;br /&gt;
&lt;br /&gt;
  NOTE: FIX and ROUND do NOT convert the file format to fixed point. Use the&lt;br /&gt;
        /type switch to alter the output file format.&lt;br /&gt;
&lt;br /&gt;
  NOTE: Operations are defined in the Operators.cnf file. New operators may be&lt;br /&gt;
        added and defined in this file and the code is generated with the&lt;br /&gt;
        command:&lt;br /&gt;
          nM&amp;gt; GENERATE OPER ALL&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 1. Standard form:&lt;br /&gt;
      fcalc/type=l outfile infile1 infile2 + infile3 *&lt;br /&gt;
&lt;br /&gt;
 2. Explicit form (for 1st difference):&lt;br /&gt;
      fcalc &amp;lt;infile1 &amp;lt;infile1(1:) - &amp;gt;outfile&lt;br /&gt;
&lt;br /&gt;
 3. Explicit form multiple output:&lt;br /&gt;
      fcalc &amp;lt;infile push 2 / &amp;gt;outfile1 10 * &amp;gt;outfile2&lt;br /&gt;
&lt;br /&gt;
 4. Code snippet to show how this command can be used in a pipe and results and&lt;br /&gt;
    expressions. In this example, the output of fcalc changes as the Multiplier&lt;br /&gt;
    control (gc.multiplier) is changed (see nxm.sys.test.test_fcalculator for&lt;br /&gt;
    a detailed implementation of this example).&lt;br /&gt;
&lt;br /&gt;
      ...&lt;br /&gt;
      pipe on&lt;br /&gt;
        panel/setup/controls=gc&lt;br /&gt;
        gcontrol lval multiplier &amp;quot;Multiplier&amp;quot; 2 1 10 1&lt;br /&gt;
        ...&lt;br /&gt;
        waveform,OUT=_wave,FORM=SF,ELEM=5e9,SHAPE=CONST,AMP=1&lt;br /&gt;
        fcalc/mon _out _wave gc.multiplier.value-1 *&lt;br /&gt;
      pipe off&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /MON        - Treat results and expressions as variables that can be changed&lt;br /&gt;
                as the file(s) are processed. Usually used in a pipe section.&lt;br /&gt;
  /TL         - The number of elements to be read each process loop [DEF=1024]&lt;br /&gt;
  /TYPE=D|F|L - Data type for calculations (defaults to F)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SEE ALSO: CALCULATOR, nxm.sys.libm.Operators.cnf, nxm.sys.libm.ArgStack.java,&lt;br /&gt;
SEE ALSO: nxm.sys.test.test_fcalculator.mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=STATUS&amp;diff=824</id>
		<title>STATUS</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=STATUS&amp;diff=824"/>
		<updated>2020-04-27T22:05:09Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: outputs the header information of a Midas or other file types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;outputs the header information of a Midas or other file types&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file&amp;gt; - name of file (Midas BLUE, text, shape, image,...)&lt;br /&gt;
&lt;br /&gt;
Outputs the header of the file named &amp;lt;file&amp;gt; to the terminal. Typically, this is&lt;br /&gt;
used on Midas BLUE files but in NeXtMidas one can status any file that extends&lt;br /&gt;
nxm.sys.lib.BaseFile and implements a listHeader method. For example:&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; status world.shp&lt;br /&gt;
&lt;br /&gt;
works because nxm.sys.lib.ShapeFile has a listHeader method. Other examples of&lt;br /&gt;
classes with this ability are:&lt;br /&gt;
&lt;br /&gt;
  * BaseFile.java   - The default implementation&lt;br /&gt;
  * CsvFile.java    - For CSV files (CSV)&lt;br /&gt;
  * DataFile.java   - For Midas files (TMP,PRM)&lt;br /&gt;
  * DbfFile.java    - Companions to shape files (DBF)&lt;br /&gt;
  * ImageFile.java  - Image files: JPEG, PNG,...&lt;br /&gt;
  * JarFile.java    - Java Archive (JAR) files&lt;br /&gt;
  * TextFile.java   - Text files (TXT)&lt;br /&gt;
  * ZipFile.java    - Compressed Zip Files (ZIP)&lt;br /&gt;
&lt;br /&gt;
If the user supplies other arguments of the form TAG=LABEL, these values&lt;br /&gt;
will be written to the results table and the terminal output is skipped.&lt;br /&gt;
&lt;br /&gt;
NOTE: For most of the tags (except some legacy tags to match X-Midas), you will&lt;br /&gt;
not find them in the STATUS intrinsic itself.  Java reflection is used to find&lt;br /&gt;
any &amp;quot;get&amp;quot; method in the class.  For instance,&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; stat world.shp type=xxx&lt;br /&gt;
&lt;br /&gt;
finds the getType method in nxm.sys.lib.ShapeFile.  Where appropriate, digraphs&lt;br /&gt;
or trigraphs can be used to provide shorter syntax.  For instance, the NC tag&lt;br /&gt;
finds the method getNumberComponents in DataFile for type 5000 files.  The NSR&lt;br /&gt;
tag finds the method getNumberSubRecords in DataFile for type 3000 files.&lt;br /&gt;
While short tags are convenient from the command line, generally, it is&lt;br /&gt;
recommended  that the full method name is used in macros.&lt;br /&gt;
&lt;br /&gt;
For 3000 and 5000 record oriented files, the record formats are also shown.&lt;br /&gt;
For 5000 files, the frame of reference and any information pertinent to the&lt;br /&gt;
frame is displayed.&lt;br /&gt;
&lt;br /&gt;
Common tags in the DataFile class (all Midas BLUE files) are:&lt;br /&gt;
&lt;br /&gt;
  TAG	Longname    Description&lt;br /&gt;
  ------------------------------------------------------------------------------&lt;br /&gt;
  TYPE	TYPE        Type of file&lt;br /&gt;
  SIZE	SIZE        Size in logical elements&lt;br /&gt;
  SZ    SIZE        Same as SIZE. Special tag for X-Midas backward compatibility&lt;br /&gt;
  DS    DATASTART   Data start in bytes (usually 512)&lt;br /&gt;
  DR    DATAREP     Data representation&lt;br /&gt;
  FORM	FORMAT      Data Format&lt;br /&gt;
  --	XUNITSNAME  X or Abscissa units name (PREFERRED)&lt;br /&gt;
  XS	XSTART      X or Abscissa start&lt;br /&gt;
  XD	XDELTA      X or Abscissa delta&lt;br /&gt;
  --	YUNITSNAME  Y or Abscissa units name (PREFERRED)&lt;br /&gt;
  YS	YSTART      Y or Secondary start&lt;br /&gt;
  YD	YDELTA      Y or Secondary delta&lt;br /&gt;
  TC    TIMECODE    Timecode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  also available through tags are:&lt;br /&gt;
&lt;br /&gt;
  TAG	   Longname          Description&lt;br /&gt;
  ------------------------------------------------------------------------------&lt;br /&gt;
  FS       FRAMESIZE         Frame size&lt;br /&gt;
  RL       RECLENGTH         Record length (type 3000/5000)&lt;br /&gt;
  NSR      NUMBERSUBRECORDS  Number of subrecords (3000/5000)&lt;br /&gt;
  SR(NAME) N/A               Subrec specs table by name (PREFERRED)(3000/5000)&lt;br /&gt;
  SR(i)    N/A               Subrec specs table {NAME,FORMAT,OFFSET}: i=1..n&lt;br /&gt;
  NC       NUMBERCOMPONENTS  Number of components (type 5000)&lt;br /&gt;
  RF       REFERENCEFRAME    Frame of Reference (type 5000)&lt;br /&gt;
  C(i)     N/A               Component specs table: i=1..n&lt;br /&gt;
                                       {NAME,FORMAT,TYPE,UNITS}&lt;br /&gt;
  QW(i) N/A                  One-based version of QUADWORD(i) for legacy&lt;br /&gt;
                             X-Midas compatibility: i=1..n&lt;br /&gt;
  --       QUADWORD(i)       Quadword value: i=0..n-1 (type 5000)&lt;br /&gt;
	               QW(0)=ref frame  QW(1)=altitude   QW(2)=latitude,&lt;br /&gt;
                       QW(3)=longitude  QW(4)=azimuth    QW(5)=elevation,&lt;br /&gt;
                       QW(6)=roll,      QW(7)=unused     QW(8)=unused,&lt;br /&gt;
                       QW(9)=epoch_year QW(10)=epoch_sec QW(11)=epoch_hour_angle&lt;br /&gt;
&lt;br /&gt;
  common PIPE tags are:&lt;br /&gt;
&lt;br /&gt;
  TAG	   Longname          Description&lt;br /&gt;
  ------------------------------------------------------------------------------&lt;br /&gt;
  PS       PIPESIZE          Pipesize in bytes&lt;br /&gt;
  INB      INBYTE            Pipe input or writer byte&lt;br /&gt;
  OUTB     OUTBYTE           Pipe output or reader byte&lt;br /&gt;
&lt;br /&gt;
  DEPRECATED tags:&lt;br /&gt;
&lt;br /&gt;
  TAG	   Longname          Description&lt;br /&gt;
  ------------------------------------------------------------------------------&lt;br /&gt;
  XU	XUNITS      X or Abscissa units number  (Use XUNITSNAME instead)&lt;br /&gt;
  YU	YUNITS      Y or Secondary units number (Use YUNITSNAME instead)&lt;br /&gt;
&lt;br /&gt;
The tags may be used in conjunction with the file command. See example below.&lt;br /&gt;
&lt;br /&gt;
The EXIST qualifier may be used to change the behavior of the exists algorithm.&lt;br /&gt;
For example,&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; status http://localhost/nextmidas/nxm/sys/dat/world.prm{EXIST=NONE}&lt;br /&gt;
&lt;br /&gt;
turns off explicit existence checking, i.e. assume file exists.  The EXIST&lt;br /&gt;
qualifiers are CGI,STATUS,LIST and NONE and ALL may be used to select no or all&lt;br /&gt;
options, respectively. See help qualifiers for more details.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 * Put the frame size in result NFRAME.&lt;br /&gt;
  nM&amp;gt; status myfile framesize=nframe&lt;br /&gt;
&lt;br /&gt;
 * Test for a specific Midas file type and format.&lt;br /&gt;
  nM&amp;gt; file open/d mytag testxy3000&lt;br /&gt;
  nM&amp;gt; if mytag.type eq 3000 and mytag.format eqs &amp;quot;NH&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
 * List information about the NeXtMidas version.txt text file&lt;br /&gt;
  nM&amp;gt; stat ^{ENV.NMROOT}/nxm/sys/version.txt&lt;br /&gt;
  TextFile : file:/home/midas/nxmxxx//nxm/sys/version.txt&lt;br /&gt;
  Size     : 457.0 bytes&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ALL    List additional main header fields for debugging (since 3.1.1)&lt;br /&gt;
  /D=n    List n elements of data after the header (using DATALIST)&lt;br /&gt;
  /DATA=n Equivalent to /D  (since 2.7.3)&lt;br /&gt;
  /K      Equivalent to /KEY&lt;br /&gt;
  /KEY    Show keywords in the main and extended headers&lt;br /&gt;
  /PREC=n Equivalent to /PRECISION=  (since 3.3.0)&lt;br /&gt;
  /PRECISION=n Used only with /TIME to specify the number of decimal places to&lt;br /&gt;
          display for timeline entries. (since 3.3.0)               [DEF=3]&lt;br /&gt;
  /T      Equivalent to /TIME&lt;br /&gt;
  /TIME   Show a dump of any TimeLine keywords&lt;br /&gt;
&lt;br /&gt;
See Also: FILE, HEADERMOD, nxm.sys.lib.DataFile, nxm.sys.lib.BaseFile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=MEDIT&amp;diff=825</id>
		<title>MEDIT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=MEDIT&amp;diff=825"/>
		<updated>2020-04-27T22:05:09Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: opens a macro's source file for editing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;opens a macro's source file for editing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;   name of macro to edit&lt;br /&gt;
&lt;br /&gt;
MEDIT opens an editing session for the named macro's primary source file.&lt;br /&gt;
The path is determined from the dictionary lookup.  When the edit session &lt;br /&gt;
is completed, the file is translated to check for structural errors. &lt;br /&gt;
&lt;br /&gt;
This macro is a wrapper to the EDIT command.  &lt;br /&gt;
&lt;br /&gt;
SEE ALSO: EDIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=PATH&amp;diff=826</id>
		<title>PATH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=PATH&amp;diff=826"/>
		<updated>2020-04-27T22:05:09Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Configures dictionary to resemble hierarchical search path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Configures dictionary to resemble hierarchical search path&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FUNC&amp;gt;       - SHOW, SET, GET, ADD, ADD+, REMove, REDO, PUT, +, -  [DEF=SHOW]&lt;br /&gt;
&amp;lt;option 1:N&amp;gt; - Option or space separated list of options&lt;br /&gt;
&amp;lt;resname&amp;gt;    - Result name for GET function.&lt;br /&gt;
&lt;br /&gt;
This command is a way of emulating the behavior of a hierarchical search path&lt;br /&gt;
with the option-driven configuration control.  The options are listed from left&lt;br /&gt;
to right with the leftmost option taking precedence over those to the right.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
  PATH GET &amp;lt;option&amp;gt; &amp;lt;resname&amp;gt;&lt;br /&gt;
    Gets the path for &amp;lt;option&amp;gt; and places it in the result &amp;lt;resname&amp;gt;.&lt;br /&gt;
    If no &amp;lt;resname&amp;gt; the path is printed to the screen.&lt;br /&gt;
&lt;br /&gt;
  PATH SET &amp;lt;option1&amp;gt; &amp;lt;option2&amp;gt; ... &amp;lt;optionN&amp;gt;&lt;br /&gt;
    Commands from &amp;lt;option1&amp;gt; have precedence over &amp;lt;option2&amp;gt; commands which have&lt;br /&gt;
    precedence over SYS commands.  Note that the final &amp;quot;SYS&amp;quot; is not necessary&lt;br /&gt;
    since it is always implied.&lt;br /&gt;
&lt;br /&gt;
  PATH ADD &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
  PATH +   &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
    Puts the &amp;lt;option&amp;gt; option on the front of the existing path.  This means&lt;br /&gt;
    that the &amp;lt;option&amp;gt; option will be searched before any other.  If the option&lt;br /&gt;
    already exists elsewhere in the path, it is moved from where it is&lt;br /&gt;
    to the beginning.&lt;br /&gt;
&lt;br /&gt;
  PATH ADD+ &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
    Puts the &amp;lt;option&amp;gt; on the end of the existing path but before SYS. If the&lt;br /&gt;
    option already exists elsewhere in the path, it is moved from where it is to&lt;br /&gt;
    the end but before SYS.&lt;br /&gt;
&lt;br /&gt;
  PATH PUT &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
    If &amp;lt;option&amp;gt; already exists on the path, does nothing (except notify the&lt;br /&gt;
    user). If &amp;lt;option&amp;gt; is not on path, performs an ADD.&lt;br /&gt;
&lt;br /&gt;
  PATH REMove &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
  PATH -      &amp;lt;option 1:N&amp;gt;&lt;br /&gt;
    Removes &amp;lt;option&amp;gt; from the existing path.&lt;br /&gt;
&lt;br /&gt;
  PATH REDO&lt;br /&gt;
    Refreshes the current path using updated COMMANDS.CNF files.&lt;br /&gt;
&lt;br /&gt;
  PATH SHOW&lt;br /&gt;
    Prints your current configuration.&lt;br /&gt;
&lt;br /&gt;
  PATH&lt;br /&gt;
    Without any arguments, prints your current configuration.&lt;br /&gt;
&lt;br /&gt;
PATH is for purposes of interface compatibility; it is composed simply of a&lt;br /&gt;
series of CONFIGURE commands.  To see what can be done with the NeXtMidas method&lt;br /&gt;
of configuration control, see EXPLAIN CONFIGURE.&lt;br /&gt;
&lt;br /&gt;
The REDO function causes PATH to read the same series of COMMANDS.CNF files as&lt;br /&gt;
before.  This is useful if you happen to change one or more of your COMMANDS.CNF&lt;br /&gt;
files and you want to redo your same configuration (so that your in-memory&lt;br /&gt;
dictionary will reflect the change) without having to type all your same&lt;br /&gt;
arguments again.&lt;br /&gt;
&lt;br /&gt;
PATH keeps track of its configuration with an environment symbol called&lt;br /&gt;
ENV.PATH.  Any changes to your dictionary through individual CONFIGURE or UPDATE&lt;br /&gt;
commands will not be reflected in this symbol; PATH should be the only command&lt;br /&gt;
that changes it.&lt;br /&gt;
&lt;br /&gt;
To use a raw java jar (or directory of classes) with NeXtMidas, simply define&lt;br /&gt;
the jar as an option. For example,&lt;br /&gt;
  nM&amp;gt; option jython /path/to/jython.jar&lt;br /&gt;
  nM&amp;gt; path add jython&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  nM&amp;gt; PATH GET UCL uclpath&lt;br /&gt;
    Gets the path for UCL and places it in the result uclpath.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH SET site sys&lt;br /&gt;
    Allows site commands to have precedence over system commands.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH SET site user&lt;br /&gt;
    Allows SITE commands to have precedence over USER commands which have&lt;br /&gt;
    precedence over SYS commands.  Note that the final &amp;quot;SYS&amp;quot; is not necessary&lt;br /&gt;
    since it is always implied.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH SET user site proj sys&lt;br /&gt;
    Allows commands under the option PROJ to have precedence over system; SITE&lt;br /&gt;
    to have precedence over PROJ, and USER to have precedence over all of them.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH ADD ucl&lt;br /&gt;
    Puts the UCL option on the front of the existing path.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH ADD dsp ucl audio&lt;br /&gt;
    Puts the DSP option on the front of the existing path, then puts UCL on the&lt;br /&gt;
    front of that, then puts AUDIO on the front of that. The new path is now:&lt;br /&gt;
      AUDIO,UCL,DSP,&amp;lt;existing path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH ADD+ ucl&lt;br /&gt;
    Puts the UCL option on the end of the existing path but before SYS.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH PUT ucl&lt;br /&gt;
    Puts the UCL option on the front of the path UNLESS it already exists&lt;br /&gt;
    somewhere on the path, in which case it does nothing.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH REMOVE user&lt;br /&gt;
   or&lt;br /&gt;
  nM&amp;gt; PATH REM user&lt;br /&gt;
    Removes the USER option from the existing path.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH/REDO&lt;br /&gt;
    Refreshes the current path using updated COMMANDS.CNF files.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH/RERUN&lt;br /&gt;
    Prints the current path and runs any optstart.mm macros in the option trees.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; PATH&lt;br /&gt;
    Prints your current path configuration.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /REDO    - Refreshes the current path using updated COMMANDS.CNF files.&lt;br /&gt;
  /RERUN   - Reruns the optstart.mm macros in the option trees on the path.&lt;br /&gt;
  /SKIPRUN - Skip running optstart.mm macros in the option trees that are new&lt;br /&gt;
             on the path. (Since NeXtMidas 2.9.1) [DEF=FALSE]&lt;br /&gt;
&lt;br /&gt;
See also:  CONFIGURE, UPDATE, OPTION&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=BUILD&amp;diff=827</id>
		<title>BUILD</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=BUILD&amp;diff=827"/>
		<updated>2020-04-27T22:05:09Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Builds an NeXtMidas command or library&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Builds an NeXtMidas command or library&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;NAME&amp;gt;  Name of the command/library (or &amp;quot;ALL&amp;quot;, or a '|' separated list of files&lt;br /&gt;
        in the same area)&lt;br /&gt;
&amp;lt;AREA&amp;gt;  Area of the option tree containing file (or &amp;quot;ALL&amp;quot;)&lt;br /&gt;
&amp;lt;OPT&amp;gt;   Option tree containing file [DEFAULT=SYS]&lt;br /&gt;
&lt;br /&gt;
This command is used to compile a command or library under the NeXtMidas&lt;br /&gt;
framework. It looks for .java, .c, .clib, .cpplib, or .flib extensions and&lt;br /&gt;
compiles the routines found using the appropriate compiler.&lt;br /&gt;
&lt;br /&gt;
If AREA=&amp;quot;ALL&amp;quot; or &amp;quot;*&amp;quot; then all of the following areas will be included in the&lt;br /&gt;
build (since 3.1.2: this list is read from the build.codeareas.libs and&lt;br /&gt;
build.codeareas.other properties in the build.props file):&lt;br /&gt;
    inc,lib,libg,libm,net,  intr,prim,host,test,mcr&lt;br /&gt;
&lt;br /&gt;
For .java, .c, .clib .cpplib, and .flib files, the name &amp;quot;ALL&amp;quot; or &amp;quot;*&amp;quot; can be used&lt;br /&gt;
to compile all of the routines found in the specified &amp;lt;AREA&amp;gt;. Note that if using&lt;br /&gt;
XBC to compile host primitives &amp;quot;ALL&amp;quot; will not include those host primitives not&lt;br /&gt;
in the commands.cnf file (this is done for compatibility with X-Midas).&lt;br /&gt;
&lt;br /&gt;
If only &amp;lt;NAME&amp;gt; is specified then the command with the given name will be built.&lt;br /&gt;
This provided a quick way to rebuild a primitive that has been modified.&lt;br /&gt;
&lt;br /&gt;
The build.props File&lt;br /&gt;
--------------------&lt;br /&gt;
  Default definitions for compiler defaults used by BUILD can be found in&lt;br /&gt;
  $NMROOT/nxm/sys/cfg/build.props. This file is defined as a normal Java&lt;br /&gt;
  properties file and contains values for specific compiler options for each of&lt;br /&gt;
  the supported environments. Additional properties can be added either to this&lt;br /&gt;
  file (to change build behavior for SYS) or to &amp;lt;OPT&amp;gt;/cfg/build.props. Property&lt;br /&gt;
  values defined in an option_tree build.props will override the defaults in SYS&lt;br /&gt;
  (this is the preferred way of changing the flags used for a given option&lt;br /&gt;
  tree).&lt;br /&gt;
&lt;br /&gt;
  The .append operator can also be used to add any existing properties&lt;br /&gt;
  definitions (since NeXtMidas 2.9.2). A properties file in&lt;br /&gt;
  &amp;lt;OPT&amp;gt;/cfg/build.props containing:&lt;br /&gt;
&lt;br /&gt;
      cflags.UNIX.append      = -DFOO&lt;br /&gt;
&lt;br /&gt;
  will append the &amp;quot;-DFOO&amp;quot; compiler definition to the existing Unix CFLAGS&lt;br /&gt;
  (cflags.UNIX) compiler flags, but before the native.UNIX.cflags property.&lt;br /&gt;
&lt;br /&gt;
  The .append.&amp;lt;machine_arch&amp;gt;bit (e.g. .append.32bit or .append.64bit) operator&lt;br /&gt;
  allows additional flags to be added for 32-bit or 64-bit machines. E.g.&lt;br /&gt;
&lt;br /&gt;
      ifort.comp.append.32bit = -i-static&lt;br /&gt;
&lt;br /&gt;
  will append the &amp;quot;i-static&amp;quot; Intel compiler flag only on 32-bit machines for the&lt;br /&gt;
  &amp;quot;ifort.comp&amp;quot; property (i.e. the Intel Fortran compiler and flags).&lt;br /&gt;
&lt;br /&gt;
  The .prepend operator can also be used to prepend any existing properties&lt;br /&gt;
  definitions (since NeXtMidas 2.9.2). This is useful to override the default&lt;br /&gt;
  native libraries to link against (since the linkers link libraries in the&lt;br /&gt;
  order they are specified on the command line).&lt;br /&gt;
&lt;br /&gt;
  The fflags.host property in build.props can be used by an option tree's&lt;br /&gt;
  build.props to provide additional compile and link flags to for their Fortran&lt;br /&gt;
  HOST primitives (when using XBC).&lt;br /&gt;
&lt;br /&gt;
  Reminder: When you use -l&amp;lt;libname&amp;gt; the linker looks for lib&amp;lt;libname&amp;gt;.[a|so].&lt;br /&gt;
  The linker searches and processes libraries and object files in the order they&lt;br /&gt;
  are specified.&lt;br /&gt;
&lt;br /&gt;
Building Native Code&lt;br /&gt;
--------------------&lt;br /&gt;
  Classes with native components (e.g. NTerminal.java, NTerminal.c in SYS) are&lt;br /&gt;
  automatically compiled and linked into a shared object library by the name&lt;br /&gt;
  &amp;lt;NAME&amp;gt;_&amp;lt;ostag&amp;gt;&amp;lt;osarch&amp;gt;.&amp;lt;so|dll&amp;gt; to be loaded by the java class when&lt;br /&gt;
  instantiated. The &amp;lt;ostag&amp;gt; is &amp;quot;lin&amp;quot; for Linux, &amp;quot;win&amp;quot; for Windows, etc. (view&lt;br /&gt;
  the build.props file for a more complete list of these tags). The &amp;lt;osarch&amp;gt; is&lt;br /&gt;
  32 for 32-bit and 64 for 64-bit systems. The addition of the OS tag and&lt;br /&gt;
  &amp;lt;osarch&amp;gt; are intended to allow versions of the libraries for different&lt;br /&gt;
  platforms to coexist on a shared drive. Some examples: &amp;quot;Native_lin32.so,&lt;br /&gt;
  Native_lin64.so, Native_win64.dll, NTerminal_sol32.so&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  The linker stage also automatically looks for a&lt;br /&gt;
  lib&amp;lt;NAME&amp;gt;_&amp;lt;ostag&amp;gt;&amp;lt;osarch&amp;gt;.&amp;lt;so|a|dll&amp;gt; or a libAll_&amp;lt;ostag&amp;gt;&amp;lt;osarch&amp;gt;.&amp;lt;so|a|dll&amp;gt;&lt;br /&gt;
  and adds them to the linker stage if found.&lt;br /&gt;
  These libraries are typically created by an option tree specific buildopt.mm&lt;br /&gt;
  macro or through the use of a .clib, .cpplib, or .flib file (see below).&lt;br /&gt;
&lt;br /&gt;
Building Native Libraries Using .clib, .cpplib, and .flib (.[c|cpp|f]lib) Files&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
  This feature allows easy creation of shared object libraries without the need&lt;br /&gt;
  for a complicated build script or Makefile (since NeXtMidas 2.1.1).&lt;br /&gt;
  The .[c|cpp|f]lib file simply list the names of the native files to be&lt;br /&gt;
  included in the library. A typical file will look similar to this:&lt;br /&gt;
&lt;br /&gt;
    # Defines the files included in the libMyLib library,&lt;br /&gt;
    # files are listed one-per-line.&lt;br /&gt;
    file1.c&lt;br /&gt;
    file2.c&lt;br /&gt;
    preCompiled.a&lt;br /&gt;
&lt;br /&gt;
  Any blank lines or lines that start with a pound sign ('#') are treated as&lt;br /&gt;
  comments and ignored. All other lines are expected to list each of the&lt;br /&gt;
  component files one-pre-line. Files with a typical source code&lt;br /&gt;
  extension (e.g. &amp;quot;.c&amp;quot;, &amp;quot;.for&amp;quot;) are compiled automatically before linking them&lt;br /&gt;
  into the shared object. Any other files (e.g. &amp;quot;.a&amp;quot;) are assumed to be pre-&lt;br /&gt;
  compiled libraries that will be linked in. The resulting shared object will&lt;br /&gt;
  be named &amp;lt;fname&amp;gt;_&amp;lt;ostag&amp;gt;&amp;lt;osarch&amp;gt;.&amp;lt;so|dll&amp;gt; where &amp;lt;fname&amp;gt; matches the name of&lt;br /&gt;
  the .[c|cpp|f]lib file.&lt;br /&gt;
&lt;br /&gt;
  Wildcards (* and ?) are supported for the files in the .[c|cpp|f]lib file.&lt;br /&gt;
  The * (star) wildcard is use to match any character zero or more times.&lt;br /&gt;
  The ? (question mark) wildcard is use to match any character exactly one time.&lt;br /&gt;
  Files with sub-directories (e.g. mylib/xyzlib.c, mylib/*.for) and even files&lt;br /&gt;
  with relative references to sibling directories (e.g. ../lib/abc*.c)&lt;br /&gt;
&lt;br /&gt;
  Absolute paths to files are supported (e.g. /path/to/alib/mystaticlib.a) and&lt;br /&gt;
  BETA support for references to other .[c|cpp|f]lib files was also added&lt;br /&gt;
  (e.g. libxyz.flib) (since NeXtMidas 2.7.0).&lt;br /&gt;
&lt;br /&gt;
  The difference between .clib, .cpplib and .flib files is that the C compiler&lt;br /&gt;
  is used to link .clib files, the C++ compiler is used to link the .cpplib&lt;br /&gt;
  files, and the Fortran compiler is used to link .flib files.&lt;br /&gt;
  The .flib files are only intended for use with XBC.&lt;br /&gt;
&lt;br /&gt;
  Warning: For static libraries (*.a), only functions that are referenced in&lt;br /&gt;
  your listed files will be included into the shared object by the linker. One&lt;br /&gt;
  trick to get the necessary functions into your shared object is to have a&lt;br /&gt;
  dummy module (e.g. refs_to_funcs_in_staticlib.c) that calls all the functions&lt;br /&gt;
  from the static libraries and include that in your .[c|cpp|f]lib file.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;opt&amp;gt;/cfg/primitives.cfg File (BETA)&lt;br /&gt;
----------------------------------------&lt;br /&gt;
  Support for the primitives.cfg file in the cfg area of an option tree for host&lt;br /&gt;
  primitives (i.e. X-Midas style build configuration) (since NeXtMidas 2.7.0).&lt;br /&gt;
  The &amp;lt;opt&amp;gt;/cfg/libraries.cfg is also parsed (BUT NOT BUILT) to resolve all the&lt;br /&gt;
  library names for the specified option tree (via the libdepend directive). All&lt;br /&gt;
  valid primitives.cfg and libraries.cfg directives and conditionals are parsed.&lt;br /&gt;
&lt;br /&gt;
  Here are the valid directives and their description:&lt;br /&gt;
    cflags       - Compile flags for the compiler.&lt;br /&gt;
    comment line - Lines starting with a &amp;quot;!&amp;quot; character are ignored&lt;br /&gt;
    conditionals - Targets or directives intended to build conditionally based&lt;br /&gt;
                   on the current OSNAME or OSTYPE using the &amp;quot;-&amp;gt;&amp;quot; arrow syntax.&lt;br /&gt;
                   Can also use &amp;quot;NEXTMIDAS&amp;quot; as a conditional value.&lt;br /&gt;
                   Can also use existences of OS environment variables as a&lt;br /&gt;
                   conditional (since NeXtMidas 3.1.2).&lt;br /&gt;
    lflags       - Link flags for linker.&lt;br /&gt;
    libdepend    - Libraries from other option trees to link the target against.&lt;br /&gt;
    headers      - Associates header files with a particular target.&lt;br /&gt;
                   This does not effect build. For documentation only.&lt;br /&gt;
    optdepend    - (primitives.cfg only) Indicates what the PATH should be when&lt;br /&gt;
                   CONVERT MSGCFG2INC generates the configured messages&lt;br /&gt;
                   C/C++/Fortran include files.&lt;br /&gt;
                   This does not effect build. For documentation only.&lt;br /&gt;
    libname      - (libraries.cfg only) parsed but ignored&lt;br /&gt;
    modules      - Associates code files with a particular target.&lt;br /&gt;
                   (parsed BUT NOT supported yet)&lt;br /&gt;
    &amp;lt;targets&amp;gt;    - host primitive or library target&lt;br /&gt;
&lt;br /&gt;
  Directives that are not indented below a &amp;lt;target&amp;gt; are considered global to all&lt;br /&gt;
  targets that follow them.&lt;br /&gt;
&lt;br /&gt;
  See $NMROOT/nxm/sys/hlp/using_libraries.doc for a copy of X-Midas's docs for&lt;br /&gt;
  a detailed description, syntax, and examples usages of primitives.cfg and&lt;br /&gt;
  libraries.cfg (NOT SUPPORTED yet).&lt;br /&gt;
&lt;br /&gt;
  Note: OS environment variables (preceded with '$') are automatically&lt;br /&gt;
        expanded in the following directives: cflags, lflags and libdepend for&lt;br /&gt;
        third party libraries (since NeXtMidas 3.1.2).&lt;br /&gt;
&lt;br /&gt;
Things to Note&lt;br /&gt;
--------------&lt;br /&gt;
  - The /DEBUG flag will show numerous messages about the compile arguments used&lt;br /&gt;
    which might be helpful in debugging any potential problems.&lt;br /&gt;
&lt;br /&gt;
  - By default the nm shell will be restarted at the end of a compilation to&lt;br /&gt;
    ensure that the new classes are reloaded correctly. To prevent this&lt;br /&gt;
    (especially inside a macro) use the /NOEXIT flag.&lt;br /&gt;
&lt;br /&gt;
  - When building with XBC support (support for host primitives in Fortran/C++)&lt;br /&gt;
    the XBC option tree must be on the path. BUILD will automatically check for&lt;br /&gt;
    the XM_FORTRAN or NM_FORTRAN environment variable to specify the Fortran&lt;br /&gt;
    compiler to use. Please read the &amp;quot;XBC&amp;quot; section in the &amp;quot;NeXtMidas User's&lt;br /&gt;
    Guide&amp;quot; for more details.&lt;br /&gt;
&lt;br /&gt;
    The NM_CC and NM_CXX environment variables can be used to override the&lt;br /&gt;
    configured C or C++ compilers specified in build.props, respectively&lt;br /&gt;
    (since NeXtMidas 2.9.2). E.g. to use Intel's icc over gcc and g++ without&lt;br /&gt;
    having to update build.props, setenv NM_CC icc and setenv NM_CXX icc.&lt;br /&gt;
&lt;br /&gt;
    The NM_CC_OPTIONS and NM_CXX_OPTIONS environment variables can also be used&lt;br /&gt;
    to add additional C or C++ compiler flags/options to append to end of&lt;br /&gt;
    compile flags, respectively (since NeXtMidas 2.9.2).&lt;br /&gt;
&lt;br /&gt;
    WARNING: Native (C, C++, Fortran) libraries (*.so for dynamic or *.a static)&lt;br /&gt;
    built in X-Midas and/or other versions of NeXtMidas SHOULD NOT be mixed and&lt;br /&gt;
    matched and/or linked into your library or host primitive(s). Doing so will&lt;br /&gt;
    result in random segmentation faults or errors. The reason for this&lt;br /&gt;
    is that different version of X-Midas and NeXtMidas have different link level&lt;br /&gt;
    API binding that are not necessarily compatible. Your code may seem to work&lt;br /&gt;
    on occasions but don't count on it working in a production environment.&lt;br /&gt;
    Be careful NOT mix and match these libraries, e.g. adding&lt;br /&gt;
    -l&amp;lt;name_of_xm_built_lib&amp;gt; link flags or including anXmidasBuiltlib.[a|so]&lt;br /&gt;
    in your .[c|cpp|f]lib. Independent libraries without any X-Midas/NeXtMidas&lt;br /&gt;
    dependency are normally safe to link against via the -l&amp;lt;libnam&amp;gt; link flag&lt;br /&gt;
    or in a .[c|cpp|f]lib file.&lt;br /&gt;
&lt;br /&gt;
  - Users who are building files that are on a shared NFS mount will need to&lt;br /&gt;
    verify file permissions before and after the build. NeXtMidas will always&lt;br /&gt;
    use the file system's default file visibility flags for files it creates.&lt;br /&gt;
    Those flags may or may not match the ones required for other users to read&lt;br /&gt;
    (or write, in the case of developers) the files.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Build the class $NMROOT/nxm/sys/lib/DataOp.java:&lt;br /&gt;
        nM&amp;gt; build DataOp lib&lt;br /&gt;
&lt;br /&gt;
  2. Build the classes Layer1D and Layer2D in the LIBG area of SYS:&lt;br /&gt;
        nM&amp;gt; build Layer1D|Layer2D libg sys&lt;br /&gt;
&lt;br /&gt;
  3. Build all of the primitives in the ICE option tree:&lt;br /&gt;
        nM&amp;gt; build all prim ice&lt;br /&gt;
&lt;br /&gt;
  4. Build the class $NMROOT/nxm/sys/libg/MPlot.java:&lt;br /&gt;
        nM&amp;gt; build MPlot libg sys&lt;br /&gt;
&lt;br /&gt;
  5. Show all the compile time flags and other information to track the&lt;br /&gt;
      build process (useful for debugging build issues):&lt;br /&gt;
        nM&amp;gt; build/debug NTerminal lib&lt;br /&gt;
&lt;br /&gt;
  6. Build an area not in the default list of those automatically built:&lt;br /&gt;
        nM&amp;gt; build all myarea myoption&lt;br /&gt;
&lt;br /&gt;
  7. Build all of the files in the LIB area of MYOPT but include some extra&lt;br /&gt;
      compiler flags when building any C libraries and turning on XLint warning.&lt;br /&gt;
        nM&amp;gt; results FLAGS {CFLAGS_UNIX=&amp;quot;-DHEADLESS -DNOSPECIAL -Wall&amp;quot;,&amp;amp;&lt;br /&gt;
                           LFLAGS_UNIX=&amp;quot;-I/home/smith/clibs&amp;quot;,&amp;amp;&lt;br /&gt;
                           JAVA_FLAGS=&amp;quot;-Xlint -Xlint:-rawtypes&amp;quot;}&lt;br /&gt;
        nM&amp;gt; build/BLDFLAGS=^FLAGS/keep * lib myopt&lt;br /&gt;
&lt;br /&gt;
  8. Build all the files, in all areas of the DSP option tree:&lt;br /&gt;
        nM&amp;gt; build all all dsp&lt;br /&gt;
&lt;br /&gt;
  9. Build nxm.sys.test.junit.lib.FileUtilTest.java unit test:&lt;br /&gt;
        nM&amp;gt; build FileUtilTest test/junit/lib sys&lt;br /&gt;
     -OR-&lt;br /&gt;
        nM&amp;gt; build junit/lib/FileUtilTest.java test sys&lt;br /&gt;
&lt;br /&gt;
  10. Build just the native (C/C++) files for SYS:&lt;br /&gt;
        nM&amp;gt; build/bldtypes=native * * sys&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /BLDFLAGS=  - Extra build flags to use. This is a table of values matching&lt;br /&gt;
                the names in build.props (except the names in the table use '_'&lt;br /&gt;
                in place of '.' and are in upper case) where the values are&lt;br /&gt;
                extra compiler/linker options to prepend to the build.props&lt;br /&gt;
                value. (Since 2.1.0).&lt;br /&gt;
  /BLDTYPES=  - Types of files to build (Java,Native,Host). Takes precedence&lt;br /&gt;
                over /DOHOST and /DONATIVE. (Since 3.3.1) [DEF=ALL]&lt;br /&gt;
  /COUNT=&amp;lt;res&amp;gt; - INTERNAL USE ONLY: Store a count of the number of files&lt;br /&gt;
                explicitly built/compiled. A negative count generally means&lt;br /&gt;
                there is an error.                                 (Since 3.3.1)&lt;br /&gt;
  /DEBUG      - Turn on debugging.&lt;br /&gt;
  /DOGENERATE - Generate new system math libraries. [DEF=TRUE]&lt;br /&gt;
  /DOHOST     - Compiles the host (C++/Fortran) files [DEF=FALSE, TRUE when XBC&lt;br /&gt;
                is in PATH or when &amp;lt;AREA&amp;gt;=HOST].&lt;br /&gt;
                Note: /DOHOST and /DONATIVE should usually be used together.&lt;br /&gt;
  /DONATIVE   - Compiles the native (C/C++) files. [DEF=TRUE]&lt;br /&gt;
  /KEEP       - Keep intermediate files when building. Keeps the function&lt;br /&gt;
                prototypes nxm_&amp;lt;opt&amp;gt;_&amp;lt;area&amp;gt;.h, .o files&lt;br /&gt;
  /NOEXIT     - Prevent class reloading via shell restart. [DEF=TRUE in macro,&lt;br /&gt;
                FALSE at command prompt]&lt;br /&gt;
  /WARN=OFF   - Suppress warning messages (e.g. when there are no java/native&lt;br /&gt;
                source files to build). (Since 3.3.0). [DEF=TRUE]&lt;br /&gt;
&lt;br /&gt;
See Also: MAKE, BUILDOPT, BLD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=FOREACH&amp;diff=821</id>
		<title>FOREACH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=FOREACH&amp;diff=821"/>
		<updated>2020-04-27T22:05:08Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: implements a foreach iteration loop within a macro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;implements a foreach iteration loop within a macro&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ITEM&amp;gt;  Result label to hold item&lt;br /&gt;
&amp;lt;FUNC&amp;gt;  Function type [INDF,INFILE,INLIST,INSIZE,INTABLE,INTF]&lt;br /&gt;
&amp;lt;IN&amp;gt;    Variable containing input values&lt;br /&gt;
&lt;br /&gt;
A FOREACH-ENDFOR combination is used in a macro to loop through each&lt;br /&gt;
value in a set defined by either a List, Table, or File.&lt;br /&gt;
&lt;br /&gt;
Each pass through the loop, the result &amp;lt;ITEM&amp;gt; will contain the next&lt;br /&gt;
member of the set.&lt;br /&gt;
&lt;br /&gt;
Modifiers may be added to the end of the &amp;lt;FUNC&amp;gt; name to modify behavior.&lt;br /&gt;
For example, INTABLE/V for key values instead of key names.&lt;br /&gt;
&lt;br /&gt;
There are no restrictions nesting FOREACH loops.&lt;br /&gt;
&lt;br /&gt;
Since 2.5.0 the generic IN function has been added that can iterate over&lt;br /&gt;
a large number of Java objects, including:&lt;br /&gt;
  o java.util.Map          (includes Table, Hashtable, HashMap, ...)&lt;br /&gt;
  o java.util.Collection   (includes List, Vector, LinkedList, ...)&lt;br /&gt;
  o java.util.Iterator     (any implementation of the Iterator interface)&lt;br /&gt;
  o java.util.Enumeration  (any implementation of the Enumeration interface)&lt;br /&gt;
  o java.lang.Object[]     (any generic Java array)&lt;br /&gt;
  o nxm.sys.lib.Data       (the values in a Data object via Data.toVector())&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
  o Using IN for a Map iterates over the keys in the Map, using IN/V&lt;br /&gt;
    iterates over the values in the Map.&lt;br /&gt;
  o The IN function only supports /REV when using an Object[].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FUNCTIONS:&lt;br /&gt;
  INDF      - Each element in a Midas data file&lt;br /&gt;
  INFILE    - Alias for INDF&lt;br /&gt;
  INLIST    - Each element in a comma separated list&lt;br /&gt;
  INSIZE    - Iterate for IN=&amp;lt;size&amp;gt;&lt;br /&gt;
  INTABLE   - Each key in a table or KeyVector&lt;br /&gt;
  INTABLE/V - Each value in a table or KeyVector&lt;br /&gt;
  INTF      - Each line in a text file&lt;br /&gt;
  INKW      - Each keyword in a Midas file with scope&lt;br /&gt;
  IN        - Each item in a Java object (see above)&lt;br /&gt;
  IN/V      - Each value in a Java Map object (see above)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EXAMPLES:&lt;br /&gt;
  1. Erase all files whose names are in a given data file&lt;br /&gt;
        foreach name INDF mydatafile&lt;br /&gt;
          erase name&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  2. Iterate through each item in a LIST&lt;br /&gt;
        foreach area INLIST &amp;quot;MYOPT,SP,GEO,SYS&amp;quot;&lt;br /&gt;
          configure c ^area&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  3. Iterate through each element in a FILE (0 to SIZE-1)&lt;br /&gt;
        foreach offset INSIZE FILE(fftdemo).size&lt;br /&gt;
          say &amp;quot;Data at ^offset is ^{FILE(fftdemo).data(offset)}&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  4. Iterate through each KEY in a table&lt;br /&gt;
        foreach key INTABLE msg.data&lt;br /&gt;
          say &amp;quot;Key ^key = ^msg.data.^key&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  5. Iterate through each KEY in a KeyVector. Produces values for layName of&lt;br /&gt;
     GRID, WORLD and CITIES&lt;br /&gt;
        plot/bg world|cities&lt;br /&gt;
        foreach layName INTABLE reg.PLOT.layers&lt;br /&gt;
          say &amp;quot;Layer name = ^layName&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  6. Iterate through each VALUE (KEY=VALUE) in a table&lt;br /&gt;
        foreach val INTABLE/V msg.data&lt;br /&gt;
          say &amp;quot;Value = ^val&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  7. Iterate through each line in a TEXT file&lt;br /&gt;
        foreach line INTF mytextfile&lt;br /&gt;
          say &amp;quot;Next Line is: ^line&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  8. Iterate through each keyword in a Data file&lt;br /&gt;
        foreach kwi INKW env.hwfile /scope=tag=alias&lt;br /&gt;
          say &amp;quot;Next Key: ^kwi.name  Value: ^kwi.value&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
  9. Iterates over a Java Vector&lt;br /&gt;
        new java.util.Vector vect&lt;br /&gt;
        ...&lt;br /&gt;
        foreach val IN vect&lt;br /&gt;
          say &amp;quot;val = ^{val}&amp;quot;&lt;br /&gt;
        endfor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /REV   - process elements in reverse order (not implemented)&lt;br /&gt;
  /SCOPE - For INKW only.  Sets the SCOPE. See KEYWORD command.&lt;br /&gt;
  /SORT  - process elements in sorted order (applies only to Tables)&lt;br /&gt;
  /VAL   - Same as INTABLE/V or IN/V&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  ENDFOR, BREAK, KEYWORD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=BEEP&amp;diff=822</id>
		<title>BEEP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=BEEP&amp;diff=822"/>
		<updated>2020-04-27T22:05:08Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Emits an audio beep.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Emits an audio beep.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;func&amp;gt;  - ON|OFF|n, where n = number of beeps&lt;br /&gt;
&amp;lt;delay&amp;gt; - Delay between beeps [SECS] (&amp;lt;func&amp;gt; = n only)&lt;br /&gt;
&lt;br /&gt;
Causes the system to beep. The &amp;lt;func&amp;gt;=ON and &amp;lt;func&amp;gt;=OFF may be used to turn&lt;br /&gt;
ON/OFF verification beeps after a command is executed (these have the same&lt;br /&gt;
effect as using &amp;quot;VERIFY ON BEEP&amp;quot; and &amp;quot;VERIFY OFF BEEP&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; beep 2 2 ! Beep 2 times with 2 seconds between beeps.&lt;br /&gt;
&lt;br /&gt;
  nM&amp;gt; beep on  ! Beep after completion of each command.&lt;br /&gt;
  &lt;br /&gt;
SEE ALSO: VERIFY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=MESSAGE&amp;diff=823</id>
		<title>MESSAGE</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=MESSAGE&amp;diff=823"/>
		<updated>2020-04-27T22:05:08Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: send or get a message to/from a message queue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;send or get a message to/from a message queue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FUNC&amp;gt;      function to perform [QUERY]&lt;br /&gt;
&amp;lt;ID&amp;gt;        message queue ID&lt;br /&gt;
&amp;lt;MSG&amp;gt;       name of message object (to be) stored in results table&lt;br /&gt;
&amp;lt;NAME&amp;gt;      message name&lt;br /&gt;
&amp;lt;INFO&amp;gt;      message info field&lt;br /&gt;
&amp;lt;DATA&amp;gt;      message data object&lt;br /&gt;
&lt;br /&gt;
Keyword-Only Parameters:&lt;br /&gt;
[FROM]     sender object template&lt;br /&gt;
[QUALS]    Additional message qualifiers for SEND and REPLACE function.&lt;br /&gt;
                                                         (Since NeXtMidas 2.7.2)&lt;br /&gt;
&lt;br /&gt;
The MESSAGE intrinsic performs numerous message handling functions at the macro&lt;br /&gt;
level according to the value of &amp;lt;FUNC&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Not all parameters are required with every &amp;lt;FUNC&amp;gt;. Common command variations&lt;br /&gt;
include:&lt;br /&gt;
    0. MESSAGE SEND[x] &amp;lt;ID&amp;gt;  &amp;lt;MSG&amp;gt;&lt;br /&gt;
    1. MESSAGE SEND[x] REPLY &amp;lt;MSG&amp;gt;&lt;br /&gt;
    2. MESSAGE SEND[x] &amp;lt;ID&amp;gt;   , ,  &amp;lt;NAME&amp;gt; &amp;lt;INFO&amp;gt; &amp;lt;DATA&amp;gt;&lt;br /&gt;
    3. MESSAGE SEND[x] &amp;lt;ID&amp;gt;  NAME=&amp;lt;NAME&amp;gt; INFO=&amp;lt;INFO&amp;gt; DATA=&amp;lt;DATA&amp;gt;&lt;br /&gt;
    4. MESSAGE GET     , ,   &amp;lt;MSG&amp;gt;&lt;br /&gt;
    5. MESSAGE GET[x]  , ,   &amp;lt;MSG&amp;gt; &amp;lt;NAME&amp;gt;  FROM=  /WAIT=&lt;br /&gt;
    6. MESSAGE PASS    &amp;lt;ID&amp;gt;  &amp;lt;MSG&amp;gt;&lt;br /&gt;
    7. MESSAGE PRUNE   , ,   &amp;lt;MSG&amp;gt;&lt;br /&gt;
    8. MESSAGE SYNC    &amp;lt;ID&amp;gt;&lt;br /&gt;
    9. MESSAGE QUERY&lt;br /&gt;
&lt;br /&gt;
Of the above options, the two most common are #2 and #3 are the most commonly&lt;br /&gt;
used with #2 seen more in older code and #3 seen more in newer code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ID&amp;gt; is the id value given to a target primitive as specified by the /ID=&amp;lt;id&amp;gt;&lt;br /&gt;
switch on the primitive's command line. The id name can a string of any length&lt;br /&gt;
composed of letters, numbers, or the underscore (e.g. &amp;quot;MAP&amp;quot;, &amp;quot;WORLD_MAP&amp;quot;, etc.).&lt;br /&gt;
The use of numeric-only ids (e.g. &amp;quot;7&amp;quot;) is discouraged, except when running an&lt;br /&gt;
X-Midas host primitive via XBC (X-Midas required numeric ids). The id of &amp;quot;MAIN&amp;quot;&lt;br /&gt;
is reserved for the macro that created the local registry. The list of active&lt;br /&gt;
ids can be seen via the REGISTRY command. The id of &amp;quot;REPLY&amp;quot; is reserved for the&lt;br /&gt;
macro to respond back to the sender of the message.&lt;br /&gt;
&lt;br /&gt;
Messages can be sent to:&lt;br /&gt;
    &amp;quot;&amp;lt;id&amp;gt;&amp;quot;        - A command in the macro's registry with /ID=&amp;lt;id&amp;gt; or &amp;quot;MAIN&amp;quot;&lt;br /&gt;
                    for the macro itself.&lt;br /&gt;
    &amp;quot;GLOBAL.&amp;lt;id&amp;gt;&amp;quot; - A command in the global registry.    (Since NeXtMidas 3.3.0)&lt;br /&gt;
    &amp;quot;PARENT.&amp;lt;id&amp;gt;&amp;quot; - A command in the macro's parent's registry or &amp;quot;PARENT.MAIN&amp;quot;.&lt;br /&gt;
                    for the parent macro itself.         (Since NeXtMidas 3.3.0)&lt;br /&gt;
    &amp;quot;XM.&amp;lt;id&amp;gt;&amp;quot;     - The X-Midas global message queue slot number &amp;lt;id&amp;gt;. Note that&lt;br /&gt;
                    this only works when using NeXtOpt; XBC is not restricted to&lt;br /&gt;
                    use of slots in a global message queue and can send messages&lt;br /&gt;
                    directly to X-Midas host primitives.&lt;br /&gt;
    ----------------------------------------------------------------------------&lt;br /&gt;
    &amp;quot;REPLY&amp;quot;       - Sends a reply back to a sender, with optional alteration of&lt;br /&gt;
                    the &amp;lt;NAME&amp;gt;, &amp;lt;INFO&amp;gt;, and &amp;lt;DATA&amp;gt; fields. (&amp;lt;MSG&amp;gt; is required&lt;br /&gt;
                    when &amp;quot;REPLY&amp;quot; is used since MESSAGE it bypasses the normal&lt;br /&gt;
                    registry ID look-up and uses the &amp;lt;MSG&amp;gt;.FROM object as the&lt;br /&gt;
                    destination in this situation, unlike the above options&lt;br /&gt;
                    REPLY only works with the MESSAGE command.)&lt;br /&gt;
    THIS.MSGID    - The registered message handler for this macro as set by the&lt;br /&gt;
                    /MSGID= switch when the macro was called. This is used as a&lt;br /&gt;
                    generic way to send messages back to target message handler&lt;br /&gt;
                    for this macro.                      (Since NeXtMidas 3.3.1)&lt;br /&gt;
&lt;br /&gt;
A message object has the following fields:&lt;br /&gt;
    S: msg.name  the name of the message&lt;br /&gt;
    S: msg.tid   the ID of the message recipient (read-only convenience field)&lt;br /&gt;
    S: msg.fid   the ID of the message sender (read-only convenience field)&lt;br /&gt;
    L: msg.info  message-specific information encoded in an integer&lt;br /&gt;
    O: msg.data  the data object, often a table containing multiple values&lt;br /&gt;
    O: msg.to    the object/command of the message recipient&lt;br /&gt;
    O: msg.from  the object/command of the message sender&lt;br /&gt;
    O: msg.quals the message qualifiers object, often null or a table containing&lt;br /&gt;
                 multiple key/values (since NeXtMidas 2.7.2)&lt;br /&gt;
&lt;br /&gt;
Normally messages sent to a macro are written to a result named MSG and&lt;br /&gt;
processed by the processMessage procedure (see the &amp;quot;NeXtMidas Training&amp;quot; for&lt;br /&gt;
detailed discussion and examples of using processMessage). The MESSAGE command's&lt;br /&gt;
GET[x] function is for special handling and rarely used.&lt;br /&gt;
&lt;br /&gt;
There are several reserved &amp;lt;NAME&amp;gt; values that should not be used, as they can&lt;br /&gt;
cause unexpected behavior in your macro, including:&lt;br /&gt;
    ERROR&lt;br /&gt;
    EXEC&lt;br /&gt;
    EXIT&lt;br /&gt;
    MACRO&lt;br /&gt;
&lt;br /&gt;
Due to legacy behavior, a few messages have special behavior when sent to RMIF,&lt;br /&gt;
including:&lt;br /&gt;
    ADDR - Messages sent to RMIF with this &amp;lt;NAME&amp;gt; are treated as a SENDW&lt;br /&gt;
    OPEN - Messages sent to RMIF with this &amp;lt;NAME&amp;gt; are treated as a SENDW&lt;br /&gt;
&lt;br /&gt;
Special note for XBC users:&lt;br /&gt;
    When using XBC to send messages to/from host primitives the &amp;lt;DATA&amp;gt; will be a&lt;br /&gt;
    Table matching the structure of a configured message or a Table with the&lt;br /&gt;
    values for an unconfigured message. Unconfigured messages need to be sent&lt;br /&gt;
    with TYPE= and ARGS= specified. See the XBC section in the &amp;quot;NeXtMidas User's&lt;br /&gt;
    Guide&amp;quot; for more details. Be sure to set /MSGID=MAIN for the host primitive&lt;br /&gt;
    in order to see the messages in the macro.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
  SEND[xwr]   send a message to a message queue&lt;br /&gt;
                SYNTAX:&lt;br /&gt;
                    MESSAGE SEND &amp;lt;ID&amp;gt;  , ,    &amp;lt;NAME&amp;gt;   &amp;lt;INFO&amp;gt;   &amp;lt;DATA&amp;gt;  [QUALS=]&lt;br /&gt;
                    MESSAGE SEND , ,   &amp;lt;MSG&amp;gt; [&amp;lt;NAME&amp;gt;] [&amp;lt;INFO&amp;gt;] [&amp;lt;DATA&amp;gt;] [QUALS=]&lt;br /&gt;
                    MESSAGE SEND REPLY &amp;lt;MSG&amp;gt; [&amp;lt;NAME&amp;gt;] [&amp;lt;INFO&amp;gt;] [&amp;lt;DATA&amp;gt;] [QUALS=]&lt;br /&gt;
&lt;br /&gt;
                - Appending an 'X' causes the message handler to send the&lt;br /&gt;
                  message directly from the current thread, bypassing the&lt;br /&gt;
                  message queue. The handler may put it on its own queue so&lt;br /&gt;
                  this does not guarantee execution of the message.&lt;br /&gt;
&lt;br /&gt;
                - Appending a 'W' causes the command to wait for a maximum time&lt;br /&gt;
                  given in seconds by the value of the /WAIT switch for the&lt;br /&gt;
                  message to be executed. If no /WAIT switch is present, it&lt;br /&gt;
                  defaults to one second. This is the same as following a SEND&lt;br /&gt;
                  with a SYNC.&lt;br /&gt;
&lt;br /&gt;
                - Appending a 'R' causes the command to try to replace first&lt;br /&gt;
                  matching message (name and from) in queue with this message.&lt;br /&gt;
                  If not found, then message is sent normally.&lt;br /&gt;
                  Note, that option 'X' to send message directly to the handler&lt;br /&gt;
                  takes precedence over this and hence cannot be used with this&lt;br /&gt;
                  replace option. If the message was replaced, the replaced&lt;br /&gt;
                  message is put back into results named specified by &amp;lt;MSG&amp;gt;.&lt;br /&gt;
                                                         (Since NeXtMidas 3.3.0)&lt;br /&gt;
&lt;br /&gt;
  GET[wnf]    read a message from a message queue&lt;br /&gt;
                SYNTAX:&lt;br /&gt;
                    MESSAGE GET , , &amp;lt;MSG&amp;gt;&lt;br /&gt;
                    MESSAGE GET , , &amp;lt;MSG&amp;gt; &amp;lt;NAME&amp;gt;  FROM=  /WAIT=&lt;br /&gt;
&lt;br /&gt;
                - Appending a 'W' causes the command to wait for a maximum time&lt;br /&gt;
                  given in seconds by the value of the /WAIT switch before&lt;br /&gt;
                  timing out.&lt;br /&gt;
&lt;br /&gt;
                - Appending an 'N' forces the next message to be fetched to&lt;br /&gt;
                  match &amp;lt;NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                - Appending an 'F' forces the next message to be fetched to&lt;br /&gt;
                  match FROM=&lt;br /&gt;
&lt;br /&gt;
  PASS        Pass a message to a different message queue&lt;br /&gt;
                SYNTAX: MESSAGE PASS &amp;lt;ID&amp;gt; &amp;lt;MSG&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  PRUNE       Purge messages in the queue&lt;br /&gt;
                SYNTAX: MESSAGE PRUNE , , &amp;lt;MSG&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  QUERY       Report owner and availability of command's message queue&lt;br /&gt;
                SYNTAX: MESSAGE QUERY&lt;br /&gt;
&lt;br /&gt;
  REPLACE     Replaces matching message (name and from) in the queue with &amp;lt;MSG&amp;gt;&lt;br /&gt;
                SYNTAX:&lt;br /&gt;
                    MESSAGE REPLACE , , &amp;lt;MSG&amp;gt;&lt;br /&gt;
                    MESSAGE REPLACE &amp;lt;ID&amp;gt; , , &amp;lt;NAME&amp;gt; &amp;lt;INFO&amp;gt; &amp;lt;DATA&amp;gt; [QUALS=]&lt;br /&gt;
&lt;br /&gt;
              Replaced message is put back into results named &amp;lt;MSG&amp;gt;, null if no&lt;br /&gt;
              message was replaced.                      (Since NeXtMidas 3.3.0)&lt;br /&gt;
&lt;br /&gt;
  SYNC        Put a null message on a queue and wait for it to be processed&lt;br /&gt;
                SYNTAX: MESSAGE SYNC &amp;lt;ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  More than one suffix letter can be appended to a given SEND or GET command.&lt;br /&gt;
  For example, GETW waits for a message to arrive, and GETN means that the&lt;br /&gt;
  message must have a specific name.  Therefore GETWN means to wait until a&lt;br /&gt;
  message with a specific name arrives.&lt;br /&gt;
&lt;br /&gt;
  In most cases, the MESSAGE intrinsic quietly ignores stray characters&lt;br /&gt;
  following the &amp;lt;FUNC&amp;gt; values shown above; however, dependence on this fact is&lt;br /&gt;
  discouraged to minimize the chance of future macro breakage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Get the next message off the macro queue:&lt;br /&gt;
        nM&amp;gt; message GET ,, msg&lt;br /&gt;
&lt;br /&gt;
     The message fields are now accessible from the macro language using the&lt;br /&gt;
     standard syntax for keyable objects:&lt;br /&gt;
        nM&amp;gt; say &amp;quot;Got a ^msg.name message from ^msg.fid&amp;quot;&lt;br /&gt;
        nM&amp;gt; say &amp;quot; the info is ^msg.info and data is ^msg.data&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  2. Send a message to another primitive, use the /ID= of the receiving&lt;br /&gt;
     primitive:&lt;br /&gt;
        nM&amp;gt; plot/id=plot1 ...&lt;br /&gt;
        nM&amp;gt; message send &amp;quot;PLOT1&amp;quot; ,, &amp;quot;OPENFILE&amp;quot; 1 mapdata&lt;br /&gt;
&lt;br /&gt;
  3. To pass a zoom message from one plot to another:&lt;br /&gt;
        nM&amp;gt; message get ,, msg &amp;quot;ZOOM&amp;quot;&lt;br /&gt;
        nM&amp;gt; if msg.tid eqs &amp;quot;PLOT1&amp;quot; then&lt;br /&gt;
        nM&amp;gt;   set msg.name &amp;quot;ZOOMX&amp;quot;&lt;br /&gt;
        nM&amp;gt;   message pass &amp;quot;PLOT2&amp;quot; msg&lt;br /&gt;
        nM&amp;gt; endif&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /WAIT=&amp;lt;n&amp;gt;     Max number of seconds to wait in GETW (indefinitely if &amp;lt; 0).&lt;br /&gt;
                SENDW wait time &amp;lt; 0 means no wait. [GETW DEF=0; SENDW DEF=1.0]&lt;br /&gt;
  /XMTYPE=&amp;lt;s&amp;gt;   Specifies the message type to use if sending the message&lt;br /&gt;
                to X-Midas (this is ignored for normal NeXtMidas messaging).&lt;br /&gt;
                Options include:&lt;br /&gt;
                  NEXTMIDAS    - Normal NeXtMidas message.&lt;br /&gt;
                  CONFIGURED   - Configured X-Midas message.&lt;br /&gt;
                  UNCONFIGURED - Un-configured X-Midas message.&lt;br /&gt;
                  AUTO         - Automatic configured or un-configured X-Midas&lt;br /&gt;
                                 message. (default)&lt;br /&gt;
&lt;br /&gt;
See Also: SENDTO, REGISTRY, nxm.sys.lib.Message&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=OPTION&amp;diff=817</id>
		<title>OPTION</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=OPTION&amp;diff=817"/>
		<updated>2020-04-27T22:05:07Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: displays or defines an option tree path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;displays or defines an option tree path&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;NAME&amp;gt; - Name of the option tree (or * to define all under specified path)&lt;br /&gt;
&amp;lt;PATH&amp;gt; - Path to the named option tree (or physical path when /CREATE&lt;br /&gt;
         is used and OPT.name is a link)&lt;br /&gt;
&lt;br /&gt;
This command is used to define a NeXtMidas option tree path. Option trees in&lt;br /&gt;
NeXtMidas are implemented using Java packages. The root package name is &amp;quot;nxm&amp;quot;,&lt;br /&gt;
followed by the &amp;quot;option name&amp;quot;, and then functional subdirectories. Use the&lt;br /&gt;
/CREATE switch to create a new option tree (see below).&lt;br /&gt;
&lt;br /&gt;
When OPTION is used with no arguments, it lists all configured option trees.&lt;br /&gt;
When used with just &amp;lt;NAME&amp;gt; it shows the location of the named option tree&lt;br /&gt;
(see below for examples).&lt;br /&gt;
&lt;br /&gt;
NOTE: The association of an option name with a particular path lasts only&lt;br /&gt;
as long as your NeXtMidas session.  When you log in the next day, that mapping&lt;br /&gt;
will be gone.  Therefore, OPTION &amp;lt;optname&amp;gt; &amp;lt;path&amp;gt; definitions which are&lt;br /&gt;
intended to be permanent are usually put in the user's %nmstartup macro.&lt;br /&gt;
&lt;br /&gt;
Option trees are typically set up in the user's nmstartup.mm macro, for example:&lt;br /&gt;
    startmacro&lt;br /&gt;
      option ice &amp;quot;/user/xmopts/ice279/&amp;quot;&lt;br /&gt;
      option geo &amp;quot;/user/geo100/nxm/geo/&amp;quot;&lt;br /&gt;
      path set ice geo&lt;br /&gt;
    endmacro&lt;br /&gt;
&lt;br /&gt;
Option trees located under $NMROOT/nxm or with a link from $NMROOT/nxm/&amp;lt;opt&amp;gt;&lt;br /&gt;
(see below) are automatically added to the list of options and can be viewed&lt;br /&gt;
using OPTION with no arguments.&lt;br /&gt;
&lt;br /&gt;
REQUIRED DIRECTORY STRUCTURE&lt;br /&gt;
----------------------------&lt;br /&gt;
  The Java package facility requires the source file directories to mirror the&lt;br /&gt;
  package naming scheme. The option path must point to a directory that contains&lt;br /&gt;
  an &amp;quot;nxm&amp;quot; directory with a directory below this MATCHING the option name.&lt;br /&gt;
&lt;br /&gt;
  The recommended approach is to create a base directory to hold all application&lt;br /&gt;
  required option trees under an &amp;quot;nxm&amp;quot; directory structure outside $NMROOT.&lt;br /&gt;
  Creating your option trees in a separate directory will allow you to easily&lt;br /&gt;
  upgrade and/or switch NeXtMidas versions without having to modify anything&lt;br /&gt;
  under the NeXtMidas baseline. For example:&lt;br /&gt;
  /path/to/nmopts&lt;br /&gt;
    +- nxm&lt;br /&gt;
    |   +- myopt&lt;br /&gt;
    |   |  +- cfg&lt;br /&gt;
    |   |  +- mcr&lt;br /&gt;
    |   |  +- prim&lt;br /&gt;
    |   |  +- test&lt;br /&gt;
    |   +- coolapp&lt;br /&gt;
    |   |  +- cfg&lt;br /&gt;
    |   |  ...&lt;br /&gt;
    |   +- yetanotheropt --&amp;gt; ../yetanotheropt102&lt;br /&gt;
    |&lt;br /&gt;
    +- yetanotheropt102   (version 1.0.2 of user option tree)&lt;br /&gt;
    |   +- cfg&lt;br /&gt;
    |   ...&lt;br /&gt;
&lt;br /&gt;
    Then define the above option trees:&lt;br /&gt;
    nM&amp;gt; option myopt         /path/to/nmopts/nxm/myopt&lt;br /&gt;
    nM&amp;gt; option coolapp       /path/to/nmopts/nxm/coolapp&lt;br /&gt;
    nM&amp;gt; option yetanotheropt /path/to/nmopts/nxm/yetanotheropt&lt;br /&gt;
               ^^^^^^^^^^^^^                     ^^^^^^^^^^^^^&lt;br /&gt;
    ** Notice how the &amp;lt;optname&amp;gt; must match the directory basename **&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  Another approach on Unix is to have a symbolic link from $NMROOT/nxm/&amp;lt;optname&amp;gt;&lt;br /&gt;
  to the base directory of the option tree (this is the recommend approach on&lt;br /&gt;
  Unix since most IDEs will find these option trees automatically). For example:&lt;br /&gt;
       $NMROOT&lt;br /&gt;
         +- nxm&lt;br /&gt;
             +- myopt --&amp;gt; /home/smith/myopt123&lt;br /&gt;
             +- sys &amp;lt;existing&amp;gt;&lt;br /&gt;
             +- ucl &amp;lt;existing&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- cfg&lt;br /&gt;
                    +- prim&lt;br /&gt;
                    +- mcr&lt;br /&gt;
&lt;br /&gt;
  On Unix systems, this may be a also be done via a &amp;quot;backlink&amp;quot;, pointing back to&lt;br /&gt;
  the top of the tree branching off to the areas inc/lib/cfg/prim/etc (this&lt;br /&gt;
  approach is STRONGLY DISCOURAGED and WILL CAUSE ECLIPSE, JBUILDER, ETC. TO&lt;br /&gt;
  CRASH). For example:&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- nxm&lt;br /&gt;
                    |   +- myopt --&amp;gt; ../ &amp;lt;recursive link&amp;gt;&lt;br /&gt;
                    +- cfg&lt;br /&gt;
                    +- prim&lt;br /&gt;
                    +- mcr&lt;br /&gt;
&lt;br /&gt;
  On Windows (which does not have symbolic links prior to Windows Vista and the&lt;br /&gt;
  mklink and junction commands) the option tree must be physically located under&lt;br /&gt;
  a nxm directory and have the option tree name as its base. The version.txt&lt;br /&gt;
  file in the option tree's root directory is the only means of identifying the&lt;br /&gt;
  option tree's version number. This approach works on all systems&lt;br /&gt;
  (Windows/Unix/etc). For example:&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- nxm&lt;br /&gt;
                        +- myopt&lt;br /&gt;
                            +- cfg&lt;br /&gt;
                            +- prim&lt;br /&gt;
                            +- mcr&lt;br /&gt;
JAR FILES&lt;br /&gt;
---------&lt;br /&gt;
  To use a raw Java jar (or directory of classes) with NeXtMidas, simply define&lt;br /&gt;
  the full path name as the option then use the PATH command to add this option&lt;br /&gt;
  to the path. For example:&lt;br /&gt;
      nM&amp;gt; option JYTHON /path/to/jython.jar&lt;br /&gt;
      nM&amp;gt; path add JYTHON&lt;br /&gt;
&lt;br /&gt;
&amp;quot;OPTION&amp;quot; vs &amp;quot;RES OPT&amp;quot;&lt;br /&gt;
---------------------&lt;br /&gt;
  When you use this OPTION command it lists ALL option trees and shows the base&lt;br /&gt;
  directory of the option tree (this is the directory that &amp;quot;cfg&amp;quot; and &amp;quot;prim&amp;quot; are&lt;br /&gt;
  in). The OPTION command also shows any links used (Unix only).&lt;br /&gt;
&lt;br /&gt;
  When you use RES OPT you are shown only the option trees not located under&lt;br /&gt;
  $NMROOT (option trees using a link pointing from $NMROOT/nxm/&amp;lt;opt&amp;gt; to the&lt;br /&gt;
  location of the option tree are considered to be under $NMROOT). Also&lt;br /&gt;
  RES OPT will show the root directory of the option tree (this is the directory&lt;br /&gt;
  that &amp;quot;nxm&amp;quot; is in).&lt;br /&gt;
&lt;br /&gt;
  The reason for this difference is both practical and historical. The OPTION&lt;br /&gt;
  command shows the directory that users will be working in (when you use&lt;br /&gt;
  &amp;quot;nmd . &amp;lt;opt&amp;gt;&amp;quot; this is where you go). Using RES OPT shows the directory that&lt;br /&gt;
  Java needs to use on the classpath (RES OPT excludes option trees under&lt;br /&gt;
  $NMROOT since it is already part of the classpath).&lt;br /&gt;
&lt;br /&gt;
  In general users should only use OPTION to find out where an option tree is&lt;br /&gt;
  located. Macros that need to find the location of an option tree should NOT&lt;br /&gt;
  use RES.&amp;lt;opt&amp;gt; since it does not include all option trees and is not&lt;br /&gt;
  platform-independent (future releases of NeXtMidas may deprecate use of the&lt;br /&gt;
  OPT table). Macro users should use the following for getting directories in&lt;br /&gt;
  an option tree:&lt;br /&gt;
        nM&amp;gt; invoke path nxm.sys.lib.OptionTree.getOptPath(&amp;lt;opt&amp;gt;,&amp;lt;area&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
CREATING TREES AUTOMATICALLY&lt;br /&gt;
----------------------------&lt;br /&gt;
  The /CREATE switch may be used to create the option tree defined by the&lt;br /&gt;
  result parameter OPT.&amp;lt;optname&amp;gt; where tree is the name of the option tree.&lt;br /&gt;
  There are a number of options for creating your option tree ALL of which must&lt;br /&gt;
  obey the Java package naming rule.&lt;br /&gt;
&lt;br /&gt;
  1. Create a new option tree called myopt (this is the recommend approach on&lt;br /&gt;
     Windows and works well on Unix too). This approach also allows you to&lt;br /&gt;
     easily upgrade your NeXtMidas version without having to modify it:&lt;br /&gt;
       nM&amp;gt; option/create myopt /home/smith/myopt123/nxm/myopt&lt;br /&gt;
&lt;br /&gt;
     Creates the following:&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- nxm&lt;br /&gt;
                        +- myopt&lt;br /&gt;
                            +- cfg&lt;br /&gt;
                            |   +- commands.cnf&lt;br /&gt;
                            +- prim&lt;br /&gt;
                            +- mcr&lt;br /&gt;
&lt;br /&gt;
  2. (Unix Only) Create a &amp;quot;flat&amp;quot; option tree (similar to X-Midas) called myopt&lt;br /&gt;
     with a symbolic link to it from $NMROOT/nxm/&amp;lt;opt&amp;gt;. This  approach is no&lt;br /&gt;
     longer recommended since it requires you to create a symbolic link under&lt;br /&gt;
     the NeXtMidas baseline (under $NMROOT/nxm/ directory):&lt;br /&gt;
       nM&amp;gt; option/create/link=nxm myopt /home/smith/myopt123&lt;br /&gt;
&lt;br /&gt;
     Creates the following:&lt;br /&gt;
       $NMROOT&lt;br /&gt;
         +- nxm&lt;br /&gt;
             +- myopt --&amp;gt; /home/smith/myopt123&lt;br /&gt;
             +- sys &amp;lt;existing&amp;gt;&lt;br /&gt;
             +- ucl &amp;lt;existing&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- cfg&lt;br /&gt;
                    |   +- commands.cnf&lt;br /&gt;
                    +- prim&lt;br /&gt;
                    +- mcr&lt;br /&gt;
&lt;br /&gt;
  3. (Unix Only) Create a link outside of $NMROOT/nxm pointing to the physical&lt;br /&gt;
     option tree path (this works well for existing X-Midas option trees).&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; option/create/link=&amp;quot;/home/midas/nxm/&amp;quot; myopt /home/midas/myopt123&lt;br /&gt;
&lt;br /&gt;
  4. (Unix Only) Create a new option tree called myopt with a recursive link.&lt;br /&gt;
     This keeps the option tree &amp;quot;flat&amp;quot; (X-Midas style) but uses a &amp;quot;back-link&amp;quot;&lt;br /&gt;
     to maintain the Java package names.&lt;br /&gt;
           (** THIS WILL CAUSE ECLIPSE, JBUILDER, ETC. TO CRASH **)&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; option/create/link=recursive myopt /home/smith/myopt123&lt;br /&gt;
&lt;br /&gt;
     Creates the following:&lt;br /&gt;
       /home/smith/myopt123&lt;br /&gt;
                    +- nxm&lt;br /&gt;
                    |   +- myopt --&amp;gt; ../ &amp;lt;recursive link&amp;gt;&lt;br /&gt;
                    +- cfg&lt;br /&gt;
                    |   +- commands.cnf&lt;br /&gt;
                    +- prim&lt;br /&gt;
                    +- mcr&lt;br /&gt;
&lt;br /&gt;
  5. The entire option tree can be placed under $NMROOT/nxm/ (like the option&lt;br /&gt;
     trees that come with NeXtMidas). This will work on all platforms, but is&lt;br /&gt;
     strongly discouraged since your option tree may be lost when you upgrade&lt;br /&gt;
     to a new version of NeXtMidas; hence, there is no OPTION/CREATE that will&lt;br /&gt;
     do this for you.&lt;br /&gt;
&lt;br /&gt;
CONFIGURING EXISTING X-MIDAS OPTION TREES (Unix Only)&lt;br /&gt;
-----------------------------------------------------&lt;br /&gt;
  There are a number of ways to configure an existing X-Midas option tree&lt;br /&gt;
  for NeXtMidas use.&lt;br /&gt;
&lt;br /&gt;
  1. The recommended approach is to create a base directory to hold your option&lt;br /&gt;
     trees under an &amp;quot;nxm&amp;quot; directory structure outside $NMROOT (see &amp;quot;REQUIRED&lt;br /&gt;
     DIRECTORY STRUCTURE&amp;quot; section above).&lt;br /&gt;
&lt;br /&gt;
  2. Create a link under $NMROOT/nxm which points to the existing option tree&lt;br /&gt;
     (this is not recommend since it requires you to modify your NeXtMidas&lt;br /&gt;
     distribution directory).&lt;br /&gt;
&lt;br /&gt;
        nM&amp;gt; opt/create/link=NXM myopt &amp;quot;/home/midas/myxmopt123&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  3. Create a directory called 'nxm' which is at the same level as the existing&lt;br /&gt;
     option tree. Then place a link under 'nxm' pointing to the existing tree.&lt;br /&gt;
     (this approach is DISCOURAGED since it can cause Eclipse and JBuilder&lt;br /&gt;
     to crash if used to edit the NeXtMidas files in the option tree).&lt;br /&gt;
&lt;br /&gt;
        nM&amp;gt; opt/create/link=&amp;quot;/home/midas/xmopts/nxm/&amp;quot; myxmopt &amp;amp;&lt;br /&gt;
                            &amp;quot;/home/midas/xmopts/myxmopt123&amp;quot;&lt;br /&gt;
&lt;br /&gt;
USE STAR OPTION NAME (to define all option tree under specified path):&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
  All option trees under a specified path can be defined using the star &amp;quot;*&amp;quot;&lt;br /&gt;
  character as the name for the option tree. This will ignore sub-directories&lt;br /&gt;
  with dots (since that is not a valid option tree name). Since NeXtMidas 2.9.3.&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt; option * /path/to/nmopts/nxm/&lt;br /&gt;
&lt;br /&gt;
    The above will define the following option trees using example&lt;br /&gt;
    directory structure from the REQUIRED DIRECTORY STRUCTURE section above:&lt;br /&gt;
      myopt         = /path/to/nmopts/nxm/myopt&lt;br /&gt;
      coolapp       = /path/to/nmopts/nxm/coolapp&lt;br /&gt;
      yetanotheropt = /path/to/nmopts/nxm/yetanotheropt&lt;br /&gt;
&lt;br /&gt;
FIND and DEFINE OPTION TREE from CLASSPATH:              (Since NeXtMidas 3.3.0)&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
  Option trees in the CLASSPATH can be found via the /FIND switch or found and&lt;br /&gt;
  defined using reserved &amp;quot;CLASSPATH&amp;quot; (upper-case) word for the &amp;lt;path&amp;gt; argument.&lt;br /&gt;
&lt;br /&gt;
  1. Find and define option tree from CLASSPATH (errors if MYOPT is not found)&lt;br /&gt;
    nM&amp;gt; option MYOPT &amp;quot;CLASSPATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  2. Find option tree and save it's URL/path to results, and define it if found:&lt;br /&gt;
    option/find=myres MYOPT&lt;br /&gt;
    if myres NisNull then&lt;br /&gt;
      option MYOPT myres&lt;br /&gt;
      path add MYOPT&lt;br /&gt;
    else&lt;br /&gt;
      warning &amp;quot;Unable to find MYOPT option tree...&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
&lt;br /&gt;
EXAMPLES:&lt;br /&gt;
  (See above for examples of using OPTION/CREATE to create option trees.)&lt;br /&gt;
&lt;br /&gt;
  1. Show all configured option trees:&lt;br /&gt;
        nM&amp;gt; OPTION&lt;br /&gt;
        Available Option Trees (&amp;lt;n&amp;gt; = index on path):&lt;br /&gt;
               AUDIO  = /home/smith/nxm240/nxm/audio/&lt;br /&gt;
           &amp;lt;1&amp;gt; DSP    = /home/smith/nxm240/nxm/dsp/&lt;br /&gt;
           &amp;lt;2&amp;gt; HWC    = /home/smith/nxm240/nxm/hwc/&lt;br /&gt;
               MAP    = /home/smith/nxm240/nxm/map/ -&amp;gt; /home/smith/map120/&lt;br /&gt;
           &amp;lt;3&amp;gt; SYS    = /home/smith/nxm240/nxm/sys/&lt;br /&gt;
               UCL    = /home/smith/nxm240/nxm/ucl/&lt;br /&gt;
&lt;br /&gt;
  2. Show a single option tree:&lt;br /&gt;
        nM&amp;gt; OPTION UCL&lt;br /&gt;
        UCL = /home/smith/nxm240/nxm/ucl/&lt;br /&gt;
&lt;br /&gt;
  3. Define an option tree definition for MYOPT located under the&lt;br /&gt;
     /midas/nmopts/nxm/myopt directory:&lt;br /&gt;
        nM&amp;gt; option MYOPT /midas/nmopts/nxm/myopt/&lt;br /&gt;
&lt;br /&gt;
  4. Undefine (remove) the MAP option tree definition&lt;br /&gt;
        nM&amp;gt; option/delete map&lt;br /&gt;
&lt;br /&gt;
  5. Define all option trees under the /path/to/nmopts/nxm/ directory.&lt;br /&gt;
        nM&amp;gt; option * /path/to/nmopts/nxm/&lt;br /&gt;
&lt;br /&gt;
SWITCHES:&lt;br /&gt;
  /CREATE    - Creates the subdirectories and a stub commands.cnf for the&lt;br /&gt;
               option tree.&lt;br /&gt;
  /DELETE    - Logically remove the specified option tree definition. The&lt;br /&gt;
               directory is NOT removed; that must be done explicitly with the&lt;br /&gt;
               appropriate operating system commands. I.e. this will NOT delete&lt;br /&gt;
               option trees created with links in $NMROOT.         (Since 2.7.0)&lt;br /&gt;
  /FIND=&amp;lt;res&amp;gt;- Find &amp;lt;name&amp;gt; option tree in CLASSPATH and save path to specified&lt;br /&gt;
               results label if specified.                         (Since 3.3.0)&lt;br /&gt;
  /GET=&amp;lt;res&amp;gt; - Get a comma separated list of ALL defined option trees (not&lt;br /&gt;
               just those on the path)&lt;br /&gt;
  /INFO=&amp;lt;res&amp;gt;- Get option tree information parsed from version.txt/manifest.mf&lt;br /&gt;
               such as version and required option trees. If no results label is&lt;br /&gt;
               given then info is displayed to terminal.           (Since 3.3.0)&lt;br /&gt;
               See nxm.sys.lib.OptionTree.getInfo(..) for details of output.&lt;br /&gt;
  /LINK=     - Creates a link named by the given option tree when using /CREATE.&lt;br /&gt;
               [DEF=null]&lt;br /&gt;
               Options are:&lt;br /&gt;
                 NXM    - Creates a link in $NMROOT/nxm&lt;br /&gt;
                 BACK   - TBD - Creates an nxm directory with a back link to the&lt;br /&gt;
                          option tree directory&lt;br /&gt;
                 &amp;lt;path&amp;gt; - Creates a link in the given &amp;lt;path&amp;gt;. The path must be&lt;br /&gt;
                          quoted, i.e. inside double quotes and should generally&lt;br /&gt;
                          end with a &amp;quot;nxm&amp;quot; directory name.&lt;br /&gt;
  /NOEXIT    - Prevent class reloading via shell restart when option tree is&lt;br /&gt;
               defined that has ever been added to the PATH.       (Since 2.9.3)&lt;br /&gt;
               [DEF=FALSE in command-line;TRUE in macro]&lt;br /&gt;
&lt;br /&gt;
See Also: PATH, CONFIGURE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SINKRTP&amp;diff=818</id>
		<title>SINKRTP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SINKRTP&amp;diff=818"/>
		<updated>2020-04-27T22:05:07Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Streams data to a device supporting Real-Time Protocol for audio.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Streams data to a device supporting Real-Time Protocol for audio.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;HOST&amp;gt;  - Host name for connection [DEF=]&lt;br /&gt;
&amp;lt;PORT&amp;gt;  - Host port number [DEF=]&lt;br /&gt;
&amp;lt;IN&amp;gt;    - Input Type 1000 data file&lt;br /&gt;
&amp;lt;OUT&amp;gt;   - Output Type 1000 data file&lt;br /&gt;
&lt;br /&gt;
This command streams data to a device supporting Real-Time Protocol for audio.&lt;br /&gt;
&lt;br /&gt;
Currently, accepts linear 8-bit or mulaw formatted input and always outputs&lt;br /&gt;
linear 16-bit data to the audio driver.&lt;br /&gt;
&lt;br /&gt;
Examples: TBS&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /MODE   - LEFT, RIGHT, BOTH, NONE, RESYNC [DEF=BOTH]&lt;br /&gt;
  /PORT   - Port number [DEF=7101]&lt;br /&gt;
  /PRANGE - Datagram socket range[DEF=8]&lt;br /&gt;
  /REOPEN - Num tries to reopen if closed.  For legacy behavior, if it&lt;br /&gt;
            is given without an argument the value is 5. [DEF=-1]&lt;br /&gt;
  /TYPE   - Input audio data type (LIN8,MULAW) [DEF=NULAW]&lt;br /&gt;
  /TL     - Transfer length in BYTES [DEF=2048]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=LAYER&amp;diff=819</id>
		<title>LAYER</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=LAYER&amp;diff=819"/>
		<updated>2020-04-27T22:05:07Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: creates a new plot layer and adds it to a plotter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;creates a new plot layer and adds it to a plotter &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;	- The Layer type or fully qualified class name [required] &lt;br /&gt;
&amp;lt;label&amp;gt; - Results label to referencing the object [required]&lt;br /&gt;
&amp;lt;table&amp;gt; - Table of arguments to initialize the object via the setKey interface&lt;br /&gt;
&amp;lt;plot&amp;gt;  - The ID of plotter in which to add layer [DEF=&amp;quot;&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
This command creates a new Layer object for attaching to a plotter. If &amp;lt;name&amp;gt;&lt;br /&gt;
is not a fully qualified class name, a prefix of nxm.sys.libg.Layer is assumed&lt;br /&gt;
(i.e. Geo, T5, XY,...).  &lt;br /&gt;
&lt;br /&gt;
If &amp;lt;table&amp;gt; is specified, layer.setKey() will be called for each element in the&lt;br /&gt;
table.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;label&amp;gt; is specified, the layer is stored in the results table.&lt;br /&gt;
If &amp;lt;plot&amp;gt; is specified, the layer is attached to the named plotter.&lt;br /&gt;
&lt;br /&gt;
The Layer classes to support plotting various types of files are:&lt;br /&gt;
 Layer      - Parent/helper class of other Layers.&lt;br /&gt;
 Layer1D    - Supports plotting Midas type 1000 files.&lt;br /&gt;
 Layer2D    - Supports plotting Midas type 2000 files.&lt;br /&gt;
 LayerGeo   - Supports plotting of geo events with TDOA/DTDOA and FDOA/DFDOA.&lt;br /&gt;
              NOTE: If using LayerGeo directly from Java, users need to call &lt;br /&gt;
              setRef(Object ref) to set their Midas reference in order to &lt;br /&gt;
              use files in the RAM aux.&lt;br /&gt;
 LayerGrid  - The Grid which can be applied to nearly all other layers.&lt;br /&gt;
 LayerImage - Supports plotting of various image types: gif,tif,jpg,png,xpm,pdf.&lt;br /&gt;
 LayerMulti - Supports plotting Midas type 3000 files with multiple Y traces.&lt;br /&gt;
 LayerPoly  - Supports plotting Midas type 1999 files (such as world.prm).&lt;br /&gt;
 LayerShape - Supports plotting shape and companion files (*.shp, *.dbf). &lt;br /&gt;
 LayerT5    - Supports plotting various types of Midas 5000/5010 files:&lt;br /&gt;
                Position     - Fields: POS/VD,NAME/1A&lt;br /&gt;
                Ellipse      - Fields: POS/VD,ELPS/VD,NAME/1A&lt;br /&gt;
                EllipseFlags - Fields: POS/VD,ELPS/VD,NAME/1A,FLAG/8B&lt;br /&gt;
                Cone         - Fields: POS/VD,POSP/VD,CONE/VD,NAME/1A&lt;br /&gt;
                ConeFlags    - Fields: POS/VD,POSP/VD,CONE/VD,NAME/1A,FLAG/8B&lt;br /&gt;
              View the &amp;quot;NeXtMidas User's Guide&amp;quot; for more details.&lt;br /&gt;
 LayerXY    - Supports plotting Midas type 3000 files as scatter plots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Create a new layer.&lt;br /&gt;
       nM&amp;gt; plot/bg/id=GPLOT&lt;br /&gt;
       nM&amp;gt; new &amp;quot;nxm.sys.libg.LayerGeo&amp;quot; gl &lt;br /&gt;
               {NAME=GEO,TDOAMODE=CONTOUR,FDOAMODE=LINE}&lt;br /&gt;
       nM&amp;gt; set reg.gplot.addlayer gl&lt;br /&gt;
    or, more simply,&lt;br /&gt;
       nM&amp;gt; plot/bg/id=GPLOT&lt;br /&gt;
       nM&amp;gt; layer Geo gl {NAME=GEO,TDOAMODE=CONTOUR} GPLOT&lt;br /&gt;
&lt;br /&gt;
    NOTE: Although NAME= is used for the Layer name here, when plotting a file&lt;br /&gt;
          TAG= is used to change the layer name.  For example,&lt;br /&gt;
&lt;br /&gt;
            nM&amp;gt; plot world{TAG=mytag}&lt;br /&gt;
&lt;br /&gt;
          makes the layer name MYTAG instead of WORLD.  A &amp;quot;*&amp;quot; may be used to&lt;br /&gt;
          address all layers.&lt;br /&gt;
&lt;br /&gt;
  2. Modify properties of an existing layer.&lt;br /&gt;
&lt;br /&gt;
     The layers a plot currently has are contained in &amp;quot;reg.&amp;lt;PLOTID&amp;gt;.layers&amp;quot;&lt;br /&gt;
     where &amp;lt;PLOTID&amp;gt; is the registry ID of the plot given by the /ID switch or&lt;br /&gt;
     the instance number of the plot.&lt;br /&gt;
       nM&amp;gt; plot/bg world|cities&lt;br /&gt;
       nM&amp;gt; res reg.plot.layers&lt;br /&gt;
       K: REG.PLOT.LAYERS = KeyVector of 3 entries&lt;br /&gt;
       O:  GRID           = nxm.sys.libg.LayerGrid@1c0ec97&lt;br /&gt;
       O:  WORLD          = nxm.sys.libg.LayerPoly@ecb281&lt;br /&gt;
       O:  CITIES         = nxm.sys.libg.LayerT5@1bb60c3&lt;br /&gt;
&lt;br /&gt;
     Layer methods can be invoked directly, for instance&lt;br /&gt;
        nM&amp;gt; plot/bg fftdemo&lt;br /&gt;
        nM&amp;gt; set reg.plot.layers.fftdemo.color RED&lt;br /&gt;
     changes the plot trace from the default color to RED.&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
   None&lt;br /&gt;
&lt;br /&gt;
Methods:&lt;br /&gt;
   None&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
   None&lt;br /&gt;
&lt;br /&gt;
See Also: nxm.sys.libg.Layer&lt;br /&gt;
See Also: nxm.sys.libg.Layer1D,    nxm.sys.libg.Layer2D, &lt;br /&gt;
See Also: nxm.sys.libg.LayerGeo,   nxm.sys.libg.LayerGrid,&lt;br /&gt;
See Also: nxm.sys.libg.LayerImage, nxm.sys.libg.LayerMulti,&lt;br /&gt;
See Also: nxm.sys.libg.LayerPoly,  nxm.sys.libg.LayerShape,&lt;br /&gt;
See Also: nxm.sys.libg.LayerT5,    nxm.sys.libg.LayerXY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=FFT&amp;diff=820</id>
		<title>FFT</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=FFT&amp;diff=820"/>
		<updated>2020-04-27T22:05:07Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: performs FFTs with overlap, windowing, and optional power spectral density&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;performs FFTs with overlap, windowing, and optional power spectral density&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;in1&amp;gt;   Input 1 file name&lt;br /&gt;
&amp;lt;out1&amp;gt;  File to receive FFT|PSD of input 1&lt;br /&gt;
&amp;lt;nfft&amp;gt;  Desired transform size.  Any factor supported [DEF=1k]&lt;br /&gt;
&amp;lt;win&amp;gt;   Name of time window to be computed and applied to the data [DEF=HANN]&lt;br /&gt;
&amp;lt;over&amp;gt;  The fraction of &amp;lt;nfft&amp;gt; to overlap blocks [DEF=0]&lt;br /&gt;
&amp;lt;navg&amp;gt;  Num of transforms to average in computing each output FFT frame [DEF=1]&lt;br /&gt;
&amp;lt;in2&amp;gt;   Input 2 file name [OPTIONAL]&lt;br /&gt;
&amp;lt;out2&amp;gt;  File to receive FFT|PSD of &amp;lt;in2&amp;gt; [OPTIONAL]&lt;br /&gt;
&amp;lt;cross&amp;gt; File to receive FFT of &amp;lt;in1&amp;gt; * conjugate of FFT of &amp;lt;in2&amp;gt; [OPTIONAL]&lt;br /&gt;
&lt;br /&gt;
This command performs Fast Fourier Transforms on a stream of data.  It replaces&lt;br /&gt;
the X-Midas commands FFT, MFFT, SPECTRA, and UBIQUITOUS.&lt;br /&gt;
&lt;br /&gt;
The transform size, &amp;lt;nfft&amp;gt;, is exact, and must be even if the input files are&lt;br /&gt;
real.  Performance is best if factorable by 2, 3, 4, and/or 5.  There is no&lt;br /&gt;
upper limit on the transform size.&lt;br /&gt;
&lt;br /&gt;
To output magnitude squared of the FFT bins, use the /MAG switch.&lt;br /&gt;
To output power spectral density of the FFT bins, use the /PSD switch.&lt;br /&gt;
To output MAG or PSD in 20log format, use the /LOG switch.&lt;br /&gt;
The /MAG, /LOG, and /PSD switches do NOT affect the &amp;lt;cross&amp;gt; output.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;win&amp;gt; is one of the special codes listed in the WINDOW;DSP command, it is&lt;br /&gt;
computed internally, otherwise it is assumed to be the name of a file&lt;br /&gt;
containing a time domain window to be applied to the data.&lt;br /&gt;
&lt;br /&gt;
 THE FOLLOWING IS A TABLE OF ALLOWABLE WINDOWS AND THEIR PARAMETERS.&lt;br /&gt;
 Code     Sidelobe   Equivalent     Rolloff   Window Type&lt;br /&gt;
          Max (dB)   Bandwidth    (dB/Octave)&lt;br /&gt;
 NONE       -13        1.00           6       Rectangle or boxcar&lt;br /&gt;
 BARTlett   -27        1.33          12       Bartlett (triangle)&lt;br /&gt;
 HANNing    -32        1.50          18       Hanning (cosine bell)&lt;br /&gt;
 HAMMing    -43        1.36           6       Hamming (bell on pedestal)&lt;br /&gt;
 BLACkman   -58        1.73          18       Blackman&lt;br /&gt;
 BH61       -61        1.61           6       Blackman-Harris 3 weight&lt;br /&gt;
 BH67       -67        1.71           6       Blackman-Harris 3 weight optimal&lt;br /&gt;
 BH74       -74        1.79           6       Blackman-Harris 4 weight&lt;br /&gt;
 BH92       -92        2.00           6       Blackman-Harris 4 weight optimal&lt;br /&gt;
 (* see WINDOW;DSP for details)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;over&amp;gt; is the fraction of the transform size, &amp;lt;nfft&amp;gt;, to overlap blocks of&lt;br /&gt;
data from the input file.  This parameter is &amp;gt; 0 if overlap is desired, 0 if&lt;br /&gt;
blocks are  disjoint with no data skipped, and &amp;lt; 0 for disjoint blocks with&lt;br /&gt;
data skipped.  Legal range is (-1K,1).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;navg&amp;gt; specifies the number of FFTs to average in computing each output frame.&lt;br /&gt;
If -1, all available input data is used to create a single output frame.&lt;br /&gt;
&lt;br /&gt;
The /NEXP=n switch applies exponential averaging to the output frames.  The&lt;br /&gt;
weighting factor is 1/N for each new output frame.  This does not affect the&lt;br /&gt;
output frame rate as &amp;lt;navg&amp;gt; does.&lt;br /&gt;
&lt;br /&gt;
To remove the DC bias before computing FFTs, apply the /AC switch. This&lt;br /&gt;
eliminates the DC spectral sidelobes that can mask certain features of interest.&lt;br /&gt;
&lt;br /&gt;
The /1D switch causes processing to finish after one output frame has been&lt;br /&gt;
produced and sets the outputs to be type 1000 files.  This is the behavior of&lt;br /&gt;
the X-Midas FFT command if &amp;lt;navg&amp;gt;=1 and &amp;lt;win&amp;gt;=NONE, and the default behavior of&lt;br /&gt;
the X-Midas FFT command if &amp;lt;nfft&amp;gt;=-1.  Combining the /1D switch with the&lt;br /&gt;
/PSD switch gives the behavior of the X-Midas SPECTRA command and follows the&lt;br /&gt;
default behavior if &amp;lt;over&amp;gt;=.5 and &amp;lt;navg&amp;gt;=-1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The input files may be complex or real.  If supplied, the second input file must&lt;br /&gt;
be of the same type as the first input file.  The &amp;lt;cross&amp;gt; output file is only&lt;br /&gt;
allowed if a second input file is supplied.  Keywords are only propagated from&lt;br /&gt;
the first input file to the &amp;lt;cross&amp;gt; output file.&lt;br /&gt;
&lt;br /&gt;
The /PACK switch controls how the nyquist bin is handled for real data.  The&lt;br /&gt;
/PACK=UNPACK switch unpacks it into its own bin which may cause sub-optimal&lt;br /&gt;
transfer lengths.  The /PACK=DC switch packs the real part of the nyquist bin&lt;br /&gt;
into the always zero imaginary component of the DC bin.  The /PACK=ZERO simply&lt;br /&gt;
drops the nyquist bin.  The default is UNPACK for single frame output modes and&lt;br /&gt;
ZERO for multi-frame output modes.&lt;br /&gt;
&lt;br /&gt;
The /PARTIAL switch is used to enable or disable the output of an extra frame if&lt;br /&gt;
an input file or pipe ends before providing enough data to complete the current&lt;br /&gt;
averaged transform (by zero-padding the input).  The default behavior&lt;br /&gt;
(/PARTIAL=START) is to force at least one frame of output if the input stops&lt;br /&gt;
short before any frames have been output, but partial data received after the&lt;br /&gt;
first output frame will be ignored.  /PARTIAL=NONE will discard any partial&lt;br /&gt;
frames, and /PARTIAL=ALL will force an extra frame whenever partial input data&lt;br /&gt;
is received, whether or not an output frame has already been written.&lt;br /&gt;
&lt;br /&gt;
For example, if the input file is 700 samples and the transform size&lt;br /&gt;
is 1K, then default behavior is to output no results; the /PARTIAL switch forces&lt;br /&gt;
the input data to be zero-padded to 1K and a single frame to be output.&lt;br /&gt;
Similarly, if the input file size is 8,000 samples, the FFT size is 1K and navg&lt;br /&gt;
is 4, then the default is to output one frame whereas /PARTIAL will generate two&lt;br /&gt;
frames.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  1. To perform the SPECTRA command which produces a single output frame&lt;br /&gt;
    FFT/PSD/1D infile outfile 1k hann over=0.5 navg=-1&lt;br /&gt;
&lt;br /&gt;
  2. To perform the FFT command which produces a single output frame&lt;br /&gt;
    FFT/1D infile outfile 1k hann&lt;br /&gt;
&lt;br /&gt;
  3. To perform the UBIQUITOUS cross spectral function&lt;br /&gt;
    FFT in1=file1 in2=file2 cross=xfft nfft=4k&lt;br /&gt;
&lt;br /&gt;
  4. To perform the X-Midas FFT command with nfft=-1 (means all elements); use&lt;br /&gt;
     the win=NONE, navg=1 (default), and /1D switch.&lt;br /&gt;
    nM&amp;gt; FFT/1D infile outfile nfft=-1 win=none&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /1D         Output a type 1000 file. Stops processing input after producing&lt;br /&gt;
              one output frame.&lt;br /&gt;
  /ABSC       Align input files by abscissa, FALSE to align by index [DEF=TRUE]&lt;br /&gt;
  /AC         Take out DC bias before window and FFT&lt;br /&gt;
  /DBF        Compute dB Log output using fast exponent overlay method&lt;br /&gt;
              (good to +-.5 dB)&lt;br /&gt;
  /DP         Do double precision buffers and output if present&lt;br /&gt;
  /LOG        Output 20log of power spectral density (does not apply to &amp;lt;cross&amp;gt;)&lt;br /&gt;
  /MAG        Compute magnitude squared of FFT&lt;br /&gt;
  /NEXP=      Number of exponential averages [DEF=1]&lt;br /&gt;
  /PSD        Compute power spectral density of FFTs (scale by 1/dF)&lt;br /&gt;
  /PACK=x     Packing mode for real data (UNPACK,DC,ZERO). See /PACK switch&lt;br /&gt;
              docs above for more details.&lt;br /&gt;
  /PARTIAL=x  Padding option for incomplete input (NONE,START,ALL) [DEF=START]&lt;br /&gt;
  /ROTATE=F   Rotate bins of complex FFT to start at -NY/2 [DEF=TRUE]&lt;br /&gt;
  /SCALE=f    Specify a scaling factor&lt;br /&gt;
  /SMOOTH=n   Exponential smoothing of output N frames deep&lt;br /&gt;
  /TL=n       if transfer length is less than &amp;lt;nfft&amp;gt;, input will be zeropadded&lt;br /&gt;
              All consume/overlap will be based on the /TL length. [DEF=&amp;lt;nfft&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
See Also:  SPECTRA, nxm.sys.libm.Fft, WINDOW;DSP, nxm.sys.libm.Window&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=FIND&amp;diff=814</id>
		<title>FIND</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=FIND&amp;diff=814"/>
		<updated>2020-04-27T22:05:06Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: finds file and returns its full path name or URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;finds file and returns its full path name or URL&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FILE&amp;gt;     - Name of file to find&lt;br /&gt;
&amp;lt;FULLNAME&amp;gt; - Label for full filename, including path and file extension&lt;br /&gt;
&amp;lt;AUX&amp;gt;      - TBD - Label for auxiliary file was found on (not yet implemented)  &lt;br /&gt;
&lt;br /&gt;
FIND searches for &amp;lt;file&amp;gt; on the current read auxes.  The file name is&lt;br /&gt;
specified in the usual Midas way, i.e. no extension or path information&lt;br /&gt;
needed (although it can be supplied if desired).&lt;br /&gt;
&lt;br /&gt;
If the file is found, its full name is printed to the screen and is also&lt;br /&gt;
returned in &amp;lt;fullname&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the file is NOT found, &amp;lt;fullname&amp;gt; will be blank, &lt;br /&gt;
and a WARNING that the file was not found is given.&lt;br /&gt;
&lt;br /&gt;
NOTE:  If you only want to test to see if a file is there or not, use the&lt;br /&gt;
FEXISTS (NFEXISTS) operator of the IF command so you can branch off of the&lt;br /&gt;
existence of the file.&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
 /URL - State switch: Form a URL if TRUE, otherwise an OS dependent path name is&lt;br /&gt;
        returned [DEF=FALSE]&lt;br /&gt;
 /VERBOSE - Show text output&lt;br /&gt;
&lt;br /&gt;
See Also: IF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=UNITTEST&amp;diff=815</id>
		<title>UNITTEST</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=UNITTEST&amp;diff=815"/>
		<updated>2020-04-27T22:05:06Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Runs a set of unit tests.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Runs a set of unit tests.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;OPT&amp;gt;   The option to run the unit tests for or the name of the individual test&lt;br /&gt;
        class to run. [DEF=SYS]&lt;br /&gt;
&amp;lt;RES&amp;gt;   The table to write the results of running the tests to. [OPTIONAL]&lt;br /&gt;
&lt;br /&gt;
This will run a complete set of unit tests for an option tree. At the conclusion&lt;br /&gt;
of running the tests the results will be written to the table named &amp;lt;RES&amp;gt; or&lt;br /&gt;
will be printed to the terminal (if &amp;lt;RES&amp;gt;=&amp;quot;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The names of the individual tests will be read in from the unittest_config.tbl&lt;br /&gt;
file that should be in the test/junit directory of the indicated option tree.&lt;br /&gt;
The structure of the option tree should look like this:&lt;br /&gt;
   opt&lt;br /&gt;
    +- lib&lt;br /&gt;
    |   +- Foo  (The class to test, nxm.opt.lib.Foo)&lt;br /&gt;
    +- libg&lt;br /&gt;
    |   +- Bar  (Another class to test, nxm.opt.libg.Bar)&lt;br /&gt;
    +- test&lt;br /&gt;
        +- junit&lt;br /&gt;
            +- unittest_config.tbl (List of the available unit tests)&lt;br /&gt;
            +- lib&lt;br /&gt;
                +- FooTest (JUnit test class, nxm.opt.test.junit.lib.FooTest)&lt;br /&gt;
            +- libg&lt;br /&gt;
                +- BarTest (JUnit test class, nxm.opt.test.junit.libg.BarTest)&lt;br /&gt;
&lt;br /&gt;
To run the test cases for a single unit test file set &amp;lt;OPT&amp;gt; to the full name&lt;br /&gt;
of the unit test file (e.g. &amp;quot;nxm.sys.test.junit.lib.UtilTest&amp;quot;) or give the full&lt;br /&gt;
name of the NeXtMidas class being tested (e.g. &amp;quot;nxm.sys.lib.Cache&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Run the unit tests for the SYS option tree:&lt;br /&gt;
       nM&amp;gt; unittest SYS&lt;br /&gt;
&lt;br /&gt;
  2. Run the unit tests for the SYS option tree but with limited output:&lt;br /&gt;
       nM&amp;gt; unittest/verbose=0 SYS&lt;br /&gt;
&lt;br /&gt;
  3. Run the unit tests in the class file nxm.sys.test.junit.lib.UtilTest:&lt;br /&gt;
       nM&amp;gt; unittest nxm.sys.test.junit.lib.UtilTest&lt;br /&gt;
&lt;br /&gt;
  4. Run the unit tests for the class nxm.sys.lib.Cache:&lt;br /&gt;
       nM&amp;gt; unittest nxm.sys.lib.Cache&lt;br /&gt;
&lt;br /&gt;
  5. Build one of the unit tests in the SYS option tree&lt;br /&gt;
       nM&amp;gt; build FileUtilTest test/junit/lib sys&lt;br /&gt;
     -OR-&lt;br /&gt;
       nM&amp;gt; build junit/lib/FileUtilTest.java test sys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /VERBOSE Turns on/off the printing to the console of the results for testing&lt;br /&gt;
           each method.&lt;br /&gt;
&lt;br /&gt;
  /FAILURE Prints an informational message about each failure (this is turned&lt;br /&gt;
           on by default if VERBOSE is on and off if VERBOSE is off).&lt;br /&gt;
&lt;br /&gt;
  /ERROR   Prints an informational message about each error (this is turned&lt;br /&gt;
           on by default if VERBOSE is on and off if VERBOSE is off).&lt;br /&gt;
&lt;br /&gt;
  /ST      Print a stack trace to accompany any error or failure error messages&lt;br /&gt;
           (this has no affect if FAILURE and ERROR are both off).&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  CONFIDENCE, nxm.sys.test.junit.NMTestCase&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=MAXMIN&amp;diff=816</id>
		<title>MAXMIN</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=MAXMIN&amp;diff=816"/>
		<updated>2020-04-27T22:05:06Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: Find the maximum and minimum values in a data file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Find the maximum and minimum values in a data file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;IN&amp;gt;        Input file&lt;br /&gt;
&amp;lt;MAXOUT&amp;gt;    Results value for maximum value output (optional)&lt;br /&gt;
&amp;lt;MINOUT&amp;gt;    Results value for minimum value output (optional)&lt;br /&gt;
&lt;br /&gt;
This is a simplified version of the STATISTICS command that is used to find&lt;br /&gt;
the the maximum and minimum values in a file.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Get the min and max values from a file:&lt;br /&gt;
       nM&amp;gt; MAXMIN nxm.sys.dat.fftdemo.prm MAXOUT=max MINOUT=min&lt;br /&gt;
       nM&amp;gt; res max&lt;br /&gt;
        D: MAX   = 259.27180800015543&lt;br /&gt;
       nM&amp;gt; res min&lt;br /&gt;
        D: MIN   = 0.038583756802216325&lt;br /&gt;
&lt;br /&gt;
     This is the same as using:&lt;br /&gt;
       nM&amp;gt; STATISTICS nxm.sys.dat.fftdemo.prm MAX=max MIN=min&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /VERBOSE - If ANY output results label are given, output to the screen is &lt;br /&gt;
             suppressed unless this switch is given.&lt;br /&gt;
&lt;br /&gt;
See Also: STATISTICS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SHELLGUI&amp;diff=812</id>
		<title>SHELLGUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SHELLGUI&amp;diff=812"/>
		<updated>2020-04-27T22:05:05Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: starts a shell in a graphical window&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;starts a shell in a graphical window&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This command starts a shell in a NeXtMidas terminal window. See&lt;br /&gt;
nxm.sys.test.test_shellgui.mm for details on usage of the SHELLGUI command&lt;br /&gt;
&lt;br /&gt;
Messages:&lt;br /&gt;
  Note use MESSAGE FUNC=SENDX to directly send these message to this command.&lt;br /&gt;
    CLEAR   - Clear text in terminal window (Since NeXtMidas 2.9.0)&lt;br /&gt;
    EXIT    - Exit the shell GUI window&lt;br /&gt;
    RESIZE  - Resize the shell GUI window&lt;br /&gt;
&lt;br /&gt;
Methods:&lt;br /&gt;
  clear() - Clear text in terminal window (Since NeXtMidas 2.9.0)&lt;br /&gt;
&lt;br /&gt;
Keyboard:&lt;br /&gt;
  SHELLGUI terminal keyboard shortcuts (hotkeys).&lt;br /&gt;
    Backspace   = delete one character to left of cursor&lt;br /&gt;
    Delete      = delete one character to right of cursor&lt;br /&gt;
    Ctrl-A      = Move to beginning of line (since 3.0.0)&lt;br /&gt;
    Ctrl-C      = Copy Selected Text&lt;br /&gt;
    Ctrl-D      = Interrupt (i.e. break any running macro and exit)&lt;br /&gt;
    Ctrl-E      = Move to end of line&lt;br /&gt;
    Ctrl-H      = Move to beginning of line&lt;br /&gt;
    Ctrl-U      = Clear current input line&lt;br /&gt;
    Ctrl-V      = Paste text from system clipboard&lt;br /&gt;
    Down arrow  = Recall next command in history&lt;br /&gt;
    Left arrow  = Move one space to left&lt;br /&gt;
    Right arrow = Move one space to right&lt;br /&gt;
    Up arrow    = Recall previous command in history&lt;br /&gt;
    Home        = Move to beginning of line (since 3.0.0)&lt;br /&gt;
    End         = Move to end of line (since 3.0.0)&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  nM&amp;gt; SHELLGUI/theme=BoW&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /ADDPLUS- Add a '+' at the end of a line of text that is wrapped. [DEF=TRUE]&lt;br /&gt;
  /ATTACH - Attaches this terminal to the current shell [DEF=FALSE]&lt;br /&gt;
  /COLS   - Initial number of columns [DEF=100]&lt;br /&gt;
  /EXIT=  - Mask to allow exit by COMMAND|MENU|MESSAGE|WINDOW&lt;br /&gt;
  /FONTSZ - Font size                 [DEF=12]&lt;br /&gt;
  /LINES= - Number of lines allowed   [DEF=2000]&lt;br /&gt;
  /ROWS=  - Initial number of rows    [DEF=30]&lt;br /&gt;
  /THEME  - THEME defines the look and feel of the SHELLGUI created&lt;br /&gt;
            Recognized THEMEs are: DeskTop, Default, WoB, GoB, BoW, Browser,&lt;br /&gt;
            Gear1, Gear2, Gear3, Gear4, and Nak&lt;br /&gt;
  /VERBOSE- Display &amp;quot;Welcome to NeXtMidas &amp;lt;version&amp;gt; ...&amp;quot; message at top&lt;br /&gt;
            [DEF=FALSE in macro, TRUE in interactive shell]&lt;br /&gt;
&lt;br /&gt;
See also: nxm.sys.libg.MWText, nxm.sys.test.test_shellgui.mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=AUXILIARY&amp;diff=813</id>
		<title>AUXILIARY</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=AUXILIARY&amp;diff=813"/>
		<updated>2020-04-27T22:05:05Z</updated>

		<summary type="html">&lt;p&gt;ConvertBot: sets NextMidas auxiliary disk/path assignments for data files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sets NextMidas auxiliary disk/path assignments for data files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;write&amp;gt;   The aux for writing Midas files&lt;br /&gt;
&amp;lt;read&amp;gt;    The | separated aux list for locating/reading Midas files&lt;br /&gt;
&amp;lt;aux 0:N&amp;gt; Additional entries to add to or remove from the read AUX.&lt;br /&gt;
&lt;br /&gt;
This routine is used to set the auxiliary disk paths for writing and locating&lt;br /&gt;
Midas data files.  An auxiliary, or aux, is an entry in the AUX table&lt;br /&gt;
containing an OS specific disk path name. In general, NextMidas uses names for&lt;br /&gt;
auxes instead of numbers (as in X-Midas).&lt;br /&gt;
&lt;br /&gt;
If no arguments are given, the current aux settings and associated paths are&lt;br /&gt;
displayed.&lt;br /&gt;
&lt;br /&gt;
Some 'standard' auxes common for all NextMidas systems:&lt;br /&gt;
  CWD      - Points to the Current Working Directory.&lt;br /&gt;
  HOME     - The user's login area.&lt;br /&gt;
  HOMEPATH - The current NextMidas HOME area (usually just for user macros).&lt;br /&gt;
  DAT      - The NextMidas DAT area used to store oft-used system files.&lt;br /&gt;
  RAM      - The current shell's data pipe area.&lt;br /&gt;
  1        - Special aux where the user name is appended to the midas data path.&lt;br /&gt;
&lt;br /&gt;
At any time, a NeXtMidas user references a single WRITE AUX (ID of the default&lt;br /&gt;
output AUX) aux and one or more READ AUXs (list of IDs of the AUX entries to&lt;br /&gt;
search for a file).&lt;br /&gt;
&lt;br /&gt;
  +--------------------------------------------------------------------------+&lt;br /&gt;
  | SPECIAL NOTE WHEN RUN FROM X-MIDAS:                                      |&lt;br /&gt;
  |   When NeXtMidas is running as an X-Midas option tree the AUX path is    |&lt;br /&gt;
  |   shared with X-Midas. This limits users to only using numbered AUX      |&lt;br /&gt;
  |   names other than the following NeXtMidas-managed names:                |&lt;br /&gt;
  |                                                                          |&lt;br /&gt;
  |      XMPIPE   - The mapping of the X-Midas pipes (like AUX.RAM)          |&lt;br /&gt;
  |      CWD      - Alias for AUX.0                                          |&lt;br /&gt;
  |      HOME     - Alias for AUX.98                                         |&lt;br /&gt;
  |      RAM      - NeXtMidas RAM AUX (used for pipes/in-memory files)       |&lt;br /&gt;
  |      HOMEPATH - Same as the X-Midas HOMEPATH (Mc.home_path)              |&lt;br /&gt;
  |                                                                          |&lt;br /&gt;
  |   Also note that NeXtMidas will always pair CWD and HOME as &amp;quot;0|CWD&amp;quot; and  |&lt;br /&gt;
  |   &amp;quot;98|HOME&amp;quot; this is beacuse X-Midas will only be able to see the numbered|&lt;br /&gt;
  |   AUX's. Also &amp;quot;XMPIPE|RAM&amp;quot; will always be added to the front of the path.|&lt;br /&gt;
  |                                                                          |&lt;br /&gt;
  |   Any alteration of the AUX table or the READ and WRITE AUX settings are |&lt;br /&gt;
  |   mapped between X-Midas and NeXtMidas. Changes in one will affect the   |&lt;br /&gt;
  |   other.                                                                 |&lt;br /&gt;
  +--------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where New Files are Written:&lt;br /&gt;
  When writing files, Midas first searches the read aux path(s) for the&lt;br /&gt;
  specified file.  If it is found (the file already exists) it is overwritten&lt;br /&gt;
  in that path.  New files are created in the &amp;lt;write aux&amp;gt; disk path.&lt;br /&gt;
&lt;br /&gt;
  When any file is opened in Midas, whether for read or write, all disks in the&lt;br /&gt;
  READ AUX are searched (open for write prefers to write to an existing file in&lt;br /&gt;
  the read list).&lt;br /&gt;
&lt;br /&gt;
  What this means is that the longer your READ AUX list is, the longer it takes&lt;br /&gt;
  to open a file for output, particularly if your aux list includes networked&lt;br /&gt;
  disks. If your application requires the frequent re-opening of a file, you&lt;br /&gt;
  might try specifying its aux with a qualifier:&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt; myprim myfile.prm{AUX=MYFILES}&lt;br /&gt;
&lt;br /&gt;
  When an AUX=value is specified as a file qualifier, that AUX will be used&lt;br /&gt;
  and NeXtMidas will skip any checks for an existing file elsewhere on the&lt;br /&gt;
  READ AUX.&lt;br /&gt;
&lt;br /&gt;
  In X-Midas, the initial read aux search is disabled if the write aux&lt;br /&gt;
  value is negative.  A similar concept has been implemented in NextMidas.&lt;br /&gt;
  This behavior can be activated by putting a '-' before the aux value,&lt;br /&gt;
  even if it is named and not numbered. See the examples.&lt;br /&gt;
&lt;br /&gt;
Setting the READ AUX:&lt;br /&gt;
  The &amp;lt;read&amp;gt; parameters are used to define or alter the path list used&lt;br /&gt;
  to locate Midas data files.  The syntax of &amp;lt;read&amp;gt; is as follows:&lt;br /&gt;
&lt;br /&gt;
      n1|n2|n3... - An ordered search list of one or more aux names separated&lt;br /&gt;
                    by vertical bars or as separate arguments.&lt;br /&gt;
      ALL         - Defines the read aux list to include all paths in the AUX&lt;br /&gt;
                    table except READ,WRITE,CWD,DAT,HOME.&lt;br /&gt;
      -MYDIR      - Removes MYDIR from the current read aux list.&lt;br /&gt;
      +MYDIR      - Adds MYDIR to the end of the current read aux list.&lt;br /&gt;
      MYDIR+      - Adds MYDIR to the front of the current read aux list.&lt;br /&gt;
&lt;br /&gt;
  Also, it is possible to use the X-Midas syntax which is:&lt;br /&gt;
      AUX &amp;lt;write&amp;gt; &amp;lt;read&amp;gt; &amp;lt;r2&amp;gt; &amp;lt;r3&amp;gt; ... &amp;lt;rN&amp;gt;&lt;br /&gt;
  Where &amp;lt;r2&amp;gt;, &amp;lt;r3&amp;gt;, ... &amp;lt;rN&amp;gt; are additional AUXs to add/remove from the list.&lt;br /&gt;
&lt;br /&gt;
Defining an AUX entry:&lt;br /&gt;
  An AUX entry is added by setting an entry in the AUX table using SET or RES.&lt;br /&gt;
  For example:&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt; set aux.mydata &amp;quot;/home/smith/mydata/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Be careful to quote the entry when setting it, otherwise NeXtMidas will&lt;br /&gt;
  convert it to upper case. To see that an entry is set, just use GET or&lt;br /&gt;
  RES. For example:&lt;br /&gt;
&lt;br /&gt;
    nM&amp;gt; get aux.mydata&lt;br /&gt;
    19S: /home/smith/mydata/&lt;br /&gt;
&lt;br /&gt;
Supported AUX Entries:&lt;br /&gt;
  NeXtMidas supports a wide array of entries in the AUX table, not just local&lt;br /&gt;
  directories (though local directories are the most common). Some of the&lt;br /&gt;
  resource types supported include:&lt;br /&gt;
&lt;br /&gt;
    Resource Type       Description/Example                              R/W&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | File              | - Unix or Windows directory                    | Read |&lt;br /&gt;
  | (FileResource)    | - Unix: Use full path name                     | Write|&lt;br /&gt;
  |                   |    - &amp;quot;/home/smith/mydata/&amp;quot;                     |      |&lt;br /&gt;
  |                   | - Windows: Use full path with drive letter     |      |&lt;br /&gt;
  |                   |    - &amp;quot;C:\myData\&amp;quot;                              |      |&lt;br /&gt;
  |                   | - Windows: For network drive, use alias drive  |      |&lt;br /&gt;
  |                   |   letter or remote mount point                 |      |&lt;br /&gt;
  |                   |    - &amp;quot;Z:\data\&amp;quot;                                |      |&lt;br /&gt;
  |                   |    - &amp;quot;\\NewtorkComputer\mountdir\data\&amp;quot;        |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | HTTP              | - Reads files from a URL (web server)          | Read |&lt;br /&gt;
  | (HttpResource)    | - &amp;quot;http://my.server.com/mydir/&amp;quot;                | Only |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | JAR               | - Reads files from a Java Archive (JAR)        | Read |&lt;br /&gt;
  | (JarResource)     | - Syntax is &amp;quot;jar:&amp;lt;archive&amp;gt;!&amp;lt;path&amp;gt;&amp;quot; (path must  | Only |&lt;br /&gt;
  |                   |   start with a '/')                            |      |&lt;br /&gt;
  |                   | - &amp;quot;jar:/home/smith/myjarfile.jar!/dir/datadir/&amp;quot;|      |&lt;br /&gt;
  |                   | - To read files from a JAR on web server       |      |&lt;br /&gt;
  |                   | - &amp;quot;jar:http://server/dir/file.jar!/dir/in/jar/&amp;quot;|      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | MFTP              | - Midas File Transfer Protocol client (server  | Read |&lt;br /&gt;
  | (MftpResource)    |   is part of RMIF)                             | Only |&lt;br /&gt;
  |                   | - Syntax is &amp;quot;mftp://&amp;lt;lport&amp;gt;/&amp;lt;rhost&amp;gt;:&amp;lt;rport&amp;gt;/&amp;quot;  |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | Pipe              | - Handles pipes in the NeXtMidas pipe system,  | Read |&lt;br /&gt;
  | (PipeResource)    | - Always defined as RAM aux, do not change!    | Write|&lt;br /&gt;
  |                   | - Pipes are local to the macro                 |      |&lt;br /&gt;
  |                   |    - Shares RAM aux with RamResource           |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | RAM               | - Handles in-memory RAM files.                 | Read |&lt;br /&gt;
  | (RamResource)     | - Always defined as RAM aux, do not change!    | Write|&lt;br /&gt;
  |                   |    - Shares RAM aux with PipeResource          |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | RAM Disk          | - Part of the ICE option tree                  | Read |&lt;br /&gt;
  | (ICE Option Tree) | - See ICE documentation for details            | Write|&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | TAR File          | - Reads files from a Tape Archive (TAR) File   | Read |&lt;br /&gt;
  | (TarResource)     | - Syntax is &amp;quot;tar:&amp;lt;arch&amp;gt;!&amp;lt;path&amp;gt;&amp;quot; (path may      | Only |&lt;br /&gt;
  |                   |   start with a '/', but this is rare)          |      |&lt;br /&gt;
  |                   | - &amp;quot;tar:/home/smith/mytarfile.tar!data/&amp;quot;        |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | TCP               | - TBD                                          | TBD  |&lt;br /&gt;
  | (TcpResource)     |                                                |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | X-Midas Pipe      | - Handles X-Midas pipes when NeXtMidas is run  | Read |&lt;br /&gt;
  | (XmPipeResource)  |   as an X-Midas option tree                    | Write|&lt;br /&gt;
  |                   | - Always defined as XMPIPE aux, do not change! |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
&lt;br /&gt;
  Special resource types that can NOT be included on the AUX table:&lt;br /&gt;
&lt;br /&gt;
    Resource Type       Description/Example                              R/W&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | NFILE             | - Similar to FileResource but uses native code | Read |&lt;br /&gt;
  | (NFileResource)   |   to increase performance for some applications| Write|&lt;br /&gt;
  |                   | - Used by adding USENATIVE= qualifier          |      |&lt;br /&gt;
  |                   | - Can NOT add NFileResource to AUX table       |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | Socket            | - Reads/writes data from/to a socket           | Read |&lt;br /&gt;
  | (SocketResource)  | - Syntax is &amp;quot;stp:&amp;lt;rhost&amp;gt;:&amp;lt;rport&amp;gt;               | Write|&lt;br /&gt;
  |                   | - Full path must be used, can NOT add a socket |      |&lt;br /&gt;
  |                   |   resource to the AUX table                    |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
  | UDP               | - Reads/writes data from/to a UDP socket       | Read |&lt;br /&gt;
  | (UdpResource)     | - Syntax is &amp;quot;udp:&amp;lt;port&amp;gt;&amp;quot; for input and         | Write|&lt;br /&gt;
  |                   |   &amp;quot;udp:&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;&amp;quot; for output (&amp;lt;host&amp;gt; is    |      |&lt;br /&gt;
  |                   |   usually &amp;quot;localhost&amp;quot;)                         |      |&lt;br /&gt;
  |                   | - Full path must be used, can NOT add a UDP    |      |&lt;br /&gt;
  |                   |   resource to the AUX table                    |      |&lt;br /&gt;
  +-------------------+------------------------------------------------+------+&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  1. Display the current AUX settings and associated paths AS DEFINED (user&lt;br /&gt;
     name is NOT substituted in for '+').&lt;br /&gt;
        nM&amp;gt; AUX&lt;br /&gt;
        Write AUX     = 1&lt;br /&gt;
        Read AUX List = 1|CWD|DAT|99|RAM&lt;br /&gt;
&lt;br /&gt;
        CWD           = /home/smith/                             &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        HOME          = /home/smith/                             &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        HOMEPATH      = /home/smith/nxm230/nxm/sys/test/         &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        DAT           = /home/smith/nxm230/nxm/sys/dat/          &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        RAM           = ram:                                     &amp;lt;Type=Ram&amp;gt;&lt;br /&gt;
        1             = /midas/data1/+/                          &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        9             = ramd:/midas/icedisk/,RAM,372M,128M       &amp;lt;Type=RamDisk&amp;gt;&lt;br /&gt;
        11            = /data11/+/                               &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        12            = /data12/+/                               &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        99            = /midas/opt/xmxxx/xm/dat/                 &amp;lt;Type=File&amp;gt;&lt;br /&gt;
        WEB           = http://alice.techma.com/nm/nxm/sys/dat/  &amp;lt;Type=Http&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  2. Display the current AUX settings and associated paths AS USED (user&lt;br /&gt;
     name is substituted in for '+').&lt;br /&gt;
        nM&amp;gt; AUX/LIST&lt;br /&gt;
        Write AUX     = 1&lt;br /&gt;
        Read AUX List = 1|CWD|DAT|99|RAM&lt;br /&gt;
&lt;br /&gt;
        CWD           = /home/smith/                             &amp;lt;XmAlias=0&amp;gt;&lt;br /&gt;
        HOME          = /home/smith/                             &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        HOMEPATH      = /home/smith/nxm230/nxm/sys/test/         &amp;lt;XmAlias=98&amp;gt;&lt;br /&gt;
        DAT           = /home/smith/nxm230/nxm/sys/dat/          &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        RAM           = ram:                                     &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        1             = /midas/data1/smith/                      &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        9             = ramd:/midas/icedisk/                     &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        11            = /data11/smith/                           &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        12            = /data12/smith/                           &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        99            = /midas/opt/xmxxx/xm/dat/                 &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
        WEB           = http://alice.techma.com/nm/nxm/sys/dat/  &amp;lt;XmAlias=n/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     Since /LIST matches X-Midas, the X-Midas alias is included if applicable.&lt;br /&gt;
     The alias is used with XBC (allows running X-Midas host primitives from&lt;br /&gt;
     NeXtMidas) and NeXtOpt (NeXtMidas running as an X-Midas option tree).&lt;br /&gt;
&lt;br /&gt;
  3. Write new files to aux 1 and read from all available disks.&lt;br /&gt;
        nM&amp;gt; AUX 1 ALL&lt;br /&gt;
&lt;br /&gt;
  4. Write to aux 1 and read from aux DAT. (A minimal read list reduces search&lt;br /&gt;
     time.)&lt;br /&gt;
        nM&amp;gt; AUX 1 DAT&lt;br /&gt;
&lt;br /&gt;
  5. Set read to all auxes except the WEB.&lt;br /&gt;
        nM&amp;gt; AUX 1 ALL -WEB&lt;br /&gt;
&lt;br /&gt;
  6. Write to the current directory (read aux is unchanged).&lt;br /&gt;
        nM&amp;gt; AUX CWD&lt;br /&gt;
&lt;br /&gt;
  7. Always write to aux 1 regardless if the file exists in the read aux list&lt;br /&gt;
        nM&amp;gt; AUX -1&lt;br /&gt;
&lt;br /&gt;
  8. Always write to the current directory regardless if the file exists in the read aux list&lt;br /&gt;
        nM&amp;gt; AUX -CWD&lt;br /&gt;
&lt;br /&gt;
  9. Remove aux CWD from the current read list, write aux unchanged.&lt;br /&gt;
        nM&amp;gt; AUX ,, -CWD&lt;br /&gt;
&lt;br /&gt;
  10. Add aux DAT to the end of the current read list.&lt;br /&gt;
        nM&amp;gt; AUX ,, +DAT&lt;br /&gt;
&lt;br /&gt;
  11. Set write aux to CWD, remove auxes WEB and HOME from read list.&lt;br /&gt;
        nM&amp;gt; AUX CWD -WEB|-HOME&lt;br /&gt;
&lt;br /&gt;
  11. Remove aux WEB, append HOME, and prepend DAT from/to read list.&lt;br /&gt;
        nM&amp;gt; AUX ,, -WEB +HOME DAT+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switches:&lt;br /&gt;
  /LIST    - Display all valid auxes and their associated pathnames. Unlike&lt;br /&gt;
             normal listing (when no parameters given) this will &amp;quot;clean&amp;quot; the&lt;br /&gt;
             AUX paths (i.e. substitute user name for '+', remove ramdisk&lt;br /&gt;
             parameters, etc), and will include the X-Midas alias (used&lt;br /&gt;
             with XBC and NeXtOpt).&lt;br /&gt;
  /LOAD=res- Load READ and WRITE auxes from the specified result. (Since 2.9.3)&lt;br /&gt;
  /RESTORE - Restore current WRITE and READ auxes from OLDAUXREAD and&lt;br /&gt;
             OLDAUXWRITE, respectively.&lt;br /&gt;
  /SAVE=res- Save the current WRITE and READ auxes to the specified result.&lt;br /&gt;
             See also /LOAD (Since 2.9.3)&lt;br /&gt;
  /STORE   - Store current READ and WRITE auxes to OLDAUXREAD and OLDAUXWRITE,&lt;br /&gt;
             respectively.&lt;br /&gt;
  /WARN=NO - Disable warnings about invalid read/write AUX entries. [DEF=YES]&lt;br /&gt;
&lt;br /&gt;
SEE ALSO:  ENVIRONMENT, FNAME, HOMEPATH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:NXM_Explain]]&lt;/div&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
</feed>