<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=SEDIT</id>
	<title>SEDIT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=SEDIT"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SEDIT&amp;action=history"/>
	<updated>2026-04-09T17:47:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=SEDIT&amp;diff=790&amp;oldid=prev</id>
		<title>ConvertBot: Edits a string and writes it to a results parameter</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=SEDIT&amp;diff=790&amp;oldid=prev"/>
		<updated>2020-04-27T22:04:57Z</updated>

		<summary type="html">&lt;p&gt;Edits a string and writes it to a results parameter&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Edits a string and writes it to a results parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ISTR&amp;gt;  Input string to be edited (String results label or literal string)&lt;br /&gt;
&amp;lt;OSTR&amp;gt;  Output results label&lt;br /&gt;
&amp;lt;FUNC&amp;gt;  Edit operation to perform (see below for LIST)&lt;br /&gt;
&amp;lt;P1&amp;gt;    Edit parameter as defined for each operation&lt;br /&gt;
&amp;lt;P2&amp;gt;    Edit parameter as defined for each operation&lt;br /&gt;
&lt;br /&gt;
NOTE: SEDIT can now handle MULTIPLE operations per line (entering just ONE&lt;br /&gt;
      output result name):&lt;br /&gt;
  nM&amp;gt; SEDIT &amp;lt;input&amp;gt; &amp;lt;output result&amp;gt; FUNC1 [P1] [P2] ... FUNCn [P1n] [P2n]&lt;br /&gt;
&lt;br /&gt;
This command performs a few basic string editing functions that may be required&lt;br /&gt;
by some macros with a sophisticated user interface or command line alteration&lt;br /&gt;
functions.&lt;br /&gt;
&lt;br /&gt;
The supported operations (CAPS indicate minimum required name) are:&lt;br /&gt;
  APPEND, BETWeen, BSEArch, CLEAN, ELEMent, EXT, GSUBstitute, HEAD, JOIN,&lt;br /&gt;
  KEY, LENgth, LOCAse, NELem, NFORM, PADL, PADR, PADB, PARSE, PARSEALl,&lt;br /&gt;
  PARSEARgs, PARSEDInd, PATH, PREPEND, RANGE, ROOT, SEARch, SELect,&lt;br /&gt;
  SPLIT, STRIM, SUBstitute, TAIL, TRIM, UPCAse, WORD&lt;br /&gt;
&lt;br /&gt;
NOTE: As of NeXtMidas 3.1.2, the behaviour of The BETWeen, RANGE, and SELect&lt;br /&gt;
      operations is deprecated and will change in a future release. These&lt;br /&gt;
      changes are to bring SEDIT in line with X-Midas SEDIT behaviour. These&lt;br /&gt;
      changes are:&lt;br /&gt;
         BETWeen: Negative numbers will be treated as offsets from the last&lt;br /&gt;
                  character in the input string.&lt;br /&gt;
         LENgth:  The index passed to the LENgth will be one-based, since it&lt;br /&gt;
                  is counting elements.&lt;br /&gt;
         RANGE:   Like BETWeen, negative numbers will be treated as offsets&lt;br /&gt;
                  from the last character in the input string. The net effect&lt;br /&gt;
                  this is that (in zero index mode) a range of -5 str.length-1&lt;br /&gt;
                  will return the last 5 characters of the string, where&lt;br /&gt;
                  previously it would return the last 6 characters. Also,&lt;br /&gt;
                  leaving off the second index will equate to a value of 0, NOT&lt;br /&gt;
                  the end of the input string.&lt;br /&gt;
         SELect:  This operation will be 1-index based only, since it is&lt;br /&gt;
                  returning an element number, not an index.&lt;br /&gt;
&lt;br /&gt;
      These changes can be utilized as of NeXtMidas 3.1.2 using the&lt;br /&gt;
      /LEGACY=FALSE switch. In a future release, this will be the default&lt;br /&gt;
      setting. Until that time, users of the above operations not using&lt;br /&gt;
      /LEGACY=FALSE will get deprecation warnings. There is also an&lt;br /&gt;
      equivalent switch /seditLegacy added as a convenience so that users&lt;br /&gt;
      can use the switch at the top of a macro without interfering with&lt;br /&gt;
      other primitives that use /legacy (i.e. LIST2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By default SEDIT is &amp;quot;offset&amp;quot; or &amp;quot;zero-based&amp;quot;.  The /OB or /ONEBASE switch may&lt;br /&gt;
be used to FORCE one-based processing.&lt;br /&gt;
&lt;br /&gt;
When using index return value functions (SEARCH, BSEARCH and  PARSEDINDEX,..)&lt;br /&gt;
one should check for &amp;lt; 0 for invalid or not found.  A return value of zero (0)&lt;br /&gt;
is NO LONGER SUPPORTED! Zero is a valid index in JAVA and should not be used&lt;br /&gt;
as an error indicator.&lt;br /&gt;
&lt;br /&gt;
NOTE 1: In NeXtMidas a string result has access to all of the methods of the&lt;br /&gt;
string class.  Use the QUERY command to show the available methods. For&lt;br /&gt;
instance, we can use raw JAVA toUpperCase method as follows:&lt;br /&gt;
        nM&amp;gt; res str &amp;quot;This is a string&amp;quot;&lt;br /&gt;
        nM&amp;gt; res str2 str.touppercase()&lt;br /&gt;
        nm&amp;gt; res str2&lt;br /&gt;
        16S: STR2            = THIS IS A STRING&lt;br /&gt;
&lt;br /&gt;
NOTE 2: In NeXtMidas null strings, &amp;quot;&amp;quot; are differentiated from blank spaces,&lt;br /&gt;
       &amp;quot; &amp;quot;. Thus, there is no &amp;quot;special string&amp;quot; &amp;quot;&amp;lt;SPACE&amp;gt;&amp;quot; as in the X-Midas&lt;br /&gt;
       version of SEDIT. For example,&lt;br /&gt;
&lt;br /&gt;
       nM&amp;gt; res orig &amp;quot;Underscores_to_spaces&amp;quot;&lt;br /&gt;
       nM&amp;gt; sedit orig str gsubs &amp;quot;_&amp;quot; &amp;quot; &amp;quot;&lt;br /&gt;
       21S: STR =   &amp;quot;Underscores to spaces&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FUNCTIONS:&lt;br /&gt;
&lt;br /&gt;
 APPend  - Append &amp;lt;P1&amp;gt; to &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 BETWeen - ZERO-BASED: extracts any possible substring from &amp;lt;string&amp;gt; between&lt;br /&gt;
           &amp;lt;P1&amp;gt; and &amp;lt;P2&amp;gt;.  It doesn't matter whether &amp;lt;P1&amp;gt; is &amp;quot;less than&amp;quot; &amp;lt;P2&amp;gt;&lt;br /&gt;
           or not; BETWEEN returns what is *between* the two indices,&lt;br /&gt;
           inclusive.&lt;br /&gt;
&lt;br /&gt;
           A negative number means that many characters from the other index.&lt;br /&gt;
&lt;br /&gt;
           In general, BETWEEN will give as much of the string as possible if&lt;br /&gt;
           at least one index is within the string. If both indices are out of&lt;br /&gt;
           range, a blank string will be returned.&lt;br /&gt;
&lt;br /&gt;
           ONE-BASED (/OB) ONLY: A zero means the end of the string.&lt;br /&gt;
           The zero is a special case; if the other index is within range,&lt;br /&gt;
           it returns the indicated substring; if not, it returns blank.&lt;br /&gt;
&lt;br /&gt;
           NOTE: As of NeXtMidas 3.1.2, the BETWeen function will have the&lt;br /&gt;
                 following change to behaviour when using /LEGACY=FALSE. This&lt;br /&gt;
                 will be the default behaviour in a later release.&lt;br /&gt;
&lt;br /&gt;
                 Negative numbers will represent an index from the end of&lt;br /&gt;
                 the string. So, in zero-based, &amp;quot;-1&amp;quot; is the last character&lt;br /&gt;
                 in the string, and in one-based, &amp;quot;0&amp;quot; is the last character.&lt;br /&gt;
&lt;br /&gt;
                 Like RANGE, BETWeen will support leaving off the last index&lt;br /&gt;
                 to mean the end of String. See the examples below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Examples (Zero-Based):&lt;br /&gt;
         * Get the first 7 characters of a string:&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 0 6&lt;br /&gt;
            str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 6 0&lt;br /&gt;
            str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get the last 6 characters of a string&lt;br /&gt;
            nM&amp;gt; res instr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
            nM&amp;gt; SEDIT instr str &amp;quot;BETWEEN&amp;quot; ^instr.length -5&lt;br /&gt;
            str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            nM&amp;gt; SEDIT/LEGACY=FALSE instr str &amp;quot;BETWEEN&amp;quot; -1 -6&lt;br /&gt;
            str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get the characters OUT-OF-RANGE of a string&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 100 200&lt;br /&gt;
            str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get the entire string&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 0 200&lt;br /&gt;
            str = &amp;quot;This is a string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get five (5) characters from character 4 to the beginning&lt;br /&gt;
           of the string&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 4 -100&lt;br /&gt;
            str = &amp;quot;This &amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * The INCORRECT way to get the last character of the string&lt;br /&gt;
            nM&amp;gt; res instr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
            nM&amp;gt; SEDIT instr str &amp;quot;BETWEEN&amp;quot; ^instr.length ^instr.length&lt;br /&gt;
            str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * The CORRECT way to get the last character of the string&lt;br /&gt;
            nM&amp;gt; res instr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
            nM&amp;gt; SEDIT instr str &amp;quot;BETWEEN&amp;quot; ^instr.length-1 ^instr.length-1&lt;br /&gt;
            str = &amp;quot;g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            nM&amp;gt; SEDIT/LEGACY=FALSE instr str &amp;quot;BETWEEN&amp;quot; -1 -1&lt;br /&gt;
            str = &amp;quot;g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get the first character of the string&lt;br /&gt;
            nM&amp;gt; SEDIT instr str &amp;quot;BETWEEN&amp;quot; 0 0&lt;br /&gt;
            str = &amp;quot;T&amp;quot;&lt;br /&gt;
&lt;br /&gt;
         * Get the last five characters in a string&lt;br /&gt;
           nM&amp;gt; SEDIT/LEGACY=FALSE instr str &amp;quot;BETWEEN&amp;quot; -6&lt;br /&gt;
           str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Examples (one-based):&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 1 7&lt;br /&gt;
          str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 7 1&lt;br /&gt;
          str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          res instr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
          SEDIT/OB instr str &amp;quot;BETWEEN&amp;quot; ^instr.length -5&lt;br /&gt;
          str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 100 200&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;BETWEEN&amp;quot; 4 -100&lt;br /&gt;
          str = &amp;quot;This&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          res instr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
          SEDIT/OB instr str &amp;quot;BETWEEN&amp;quot; ^instr.length ^instr.length&lt;br /&gt;
          str = &amp;quot;g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          SEDIT/OB instr str &amp;quot;BETWEEN&amp;quot; 0 0&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 BSEArch - search for the substring &amp;lt;P1&amp;gt; in &amp;lt;string&amp;gt; starting from&lt;br /&gt;
            the back and return index of the start of the string in&lt;br /&gt;
            &amp;lt;label&amp;gt;. Returns -1 if not found.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; idx &amp;quot;BSEARCH&amp;quot; &amp;quot;string&amp;quot;&lt;br /&gt;
          idx = 11&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; idx &amp;quot;BSEARCH&amp;quot; &amp;quot;STRING&amp;quot;&lt;br /&gt;
          idx = -1&lt;br /&gt;
&lt;br /&gt;
 CLEAN - returns the CLEANed version of &amp;lt;string&amp;gt; in &amp;lt;label&amp;gt;&lt;br /&gt;
         (see nxm.sys.lib.Parser)&lt;br /&gt;
&lt;br /&gt;
        Example:&lt;br /&gt;
          SEDIT  &amp;quot;This is a string&amp;quot; str CLEAN&lt;br /&gt;
          str = THIS,IS,A,STRING&lt;br /&gt;
&lt;br /&gt;
 ELEMent - extracts the nth delimited word where n = &amp;lt;P1&amp;gt; and the delimiter =&lt;br /&gt;
          &amp;lt;P2&amp;gt;.  The string is not CLEANED as in PARSE. &amp;lt;P2&amp;gt; can be more than&lt;br /&gt;
          1 character in length.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;This/is/a//string&amp;quot; str &amp;quot;ELEM&amp;quot; 2 &amp;quot;/&amp;quot;&lt;br /&gt;
          str  = is&lt;br /&gt;
          &lt;br /&gt;
          SEDIT &amp;quot;Bill and Bob and Jebediah&amp;quot; str &amp;quot;ELEM&amp;quot; 3 &amp;quot; and &amp;quot;&lt;br /&gt;
          str  = Jebediah&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt;SEDIT &amp;quot;This is a string&amp;quot; x &amp;quot;ENDS&amp;quot; &amp;quot;string&amp;quot;&lt;br /&gt;
            z: X               = true&lt;br /&gt;
          &lt;br /&gt;
          nM&amp;gt;SEDIT &amp;quot;This is a string&amp;quot; x &amp;quot;ENDS&amp;quot; &amp;quot;This&amp;quot;&lt;br /&gt;
            z: X               = false&lt;br /&gt;
&lt;br /&gt;
 EXT - returns the filename extension  (see ROOT, TAIL, PATH)&lt;br /&gt;
&lt;br /&gt;
 GSUBstitute - substitutes string &amp;lt;P2&amp;gt; for every instance of &amp;lt;P1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;GSUBS&amp;quot; &amp;quot;is&amp;quot; &amp;quot;at&amp;quot;&lt;br /&gt;
          str  = That at a string&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;GSUBS&amp;quot; &amp;quot; &amp;quot; &amp;quot;xx&amp;quot;&lt;br /&gt;
          str  = Thisxxisxxaxxstring&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;GSUBS&amp;quot; &amp;quot;is&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
          12S: str  = Th  a string&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;GSUBS&amp;quot; &amp;quot;is&amp;quot; &amp;quot; &amp;quot;&lt;br /&gt;
          14S: str  = Th    a string&lt;br /&gt;
&lt;br /&gt;
 HEAD - alias for PATH (see ROOT, TAIL, EXT)&lt;br /&gt;
&lt;br /&gt;
 JOIN - Join a string array into a String.&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;A string array to join&amp;quot; word SPLIT &amp;quot; &amp;quot;&lt;br /&gt;
          nM&amp;gt; SEDIT word str JOIN &amp;quot; &amp;quot;&lt;br /&gt;
          17S: STR = A string array to join&lt;br /&gt;
&lt;br /&gt;
 KEY - Gets the value from a string containing TAG/VALUE pairs, where &amp;lt;P1&amp;gt;&lt;br /&gt;
       is the tag name and &amp;lt;P2&amp;gt; is the delimiter (= is DEFAULT).&lt;br /&gt;
        Examples:&lt;br /&gt;
            nM&amp;gt; SEDIT &amp;quot;NAME=homer CITY=SPRINGFIELD&amp;quot; myname KEY &amp;quot;NAME&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LENgth  - calculates the length of string through the Nth naturally delimited&lt;br /&gt;
           entry where &amp;lt;P1&amp;gt; = N.  Use N=-1 (default) to calculate length of the&lt;br /&gt;
           entire string.&lt;br /&gt;
&lt;br /&gt;
        Note: The default behaviour or LENgth will change from zero-based to&lt;br /&gt;
              one-based in a future release, since length is counting elements.&lt;br /&gt;
&lt;br /&gt;
        Examples (zero-based):&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; lstr &amp;quot;LEN&amp;quot; 0&lt;br /&gt;
          lstr = 4&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; lstr &amp;quot;LEN&amp;quot; 2&lt;br /&gt;
          lstr = 9&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; lstr &amp;quot;LEN&amp;quot;&lt;br /&gt;
          lstr = 16&lt;br /&gt;
&lt;br /&gt;
        Examples (one-based):&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; lstr &amp;quot;LEN&amp;quot; 0&lt;br /&gt;
          lstr = 16&lt;br /&gt;
          SEDIT/OB &amp;quot;This is a string&amp;quot; lstr &amp;quot;LEN&amp;quot; 3&lt;br /&gt;
          lstr = 9&lt;br /&gt;
&lt;br /&gt;
        Note that you can; for example, extract the first three&lt;br /&gt;
        words of some string with the string length followed by RANGE:&lt;br /&gt;
          RESULT string &amp;quot;This is one powerful utility!&amp;quot;&lt;br /&gt;
          SEDIT/OB  string lstr length 3&lt;br /&gt;
          SEDIT/OB  string substr RANGE 1 lstr&lt;br /&gt;
          substr = This is one&lt;br /&gt;
&lt;br /&gt;
 LOCAse - converts alphabetic characters to lower case&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;LOCA&amp;quot;&lt;br /&gt;
          str = this is a string&lt;br /&gt;
&lt;br /&gt;
 MASK   - Calls Parser.mask to build an integer bit mask of enabled items from a list.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;AA,BB,CC,DD&amp;quot; mask &amp;quot;MASK&amp;quot; &amp;quot;A|DD&amp;quot;&lt;br /&gt;
          L: mask             = 0x9&lt;br /&gt;
&lt;br /&gt;
 NELem  - Count the number of elements in string delimited by &amp;lt;P1&amp;gt;.  The default&lt;br /&gt;
          delimiter is a comma (,).  Only an empty string or the the RESERVED&lt;br /&gt;
          word &amp;quot;NULL&amp;quot; has  zero (0) elements.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT &amp;quot;&amp;quot; nels &amp;quot;NELEM&amp;quot;&lt;br /&gt;
          L: NELS             = 0&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;NULL&amp;quot; nels &amp;quot;NELEM&amp;quot;&lt;br /&gt;
          L: NELS             = 0&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot; &amp;quot; nels &amp;quot;NELEM&amp;quot;&lt;br /&gt;
          L: NELS             =  1&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;,&amp;quot; nels &amp;quot;NELEM&amp;quot;&lt;br /&gt;
          L: NELS             =  2&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;x,y&amp;quot; nels &amp;quot;NELEM&amp;quot;&lt;br /&gt;
          L: NELS             =  2&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;blank separated string&amp;quot; nels &amp;quot;NELEM&amp;quot; &amp;quot; &amp;quot;&lt;br /&gt;
          L: NELS             =  3&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;blanks and commas,separated string&amp;quot; nels &amp;quot;NELEM&amp;quot; &amp;quot; &amp;quot;&lt;br /&gt;
          L: NELS             =  4&lt;br /&gt;
&lt;br /&gt;
          SEDIT &amp;quot;    &amp;quot; nels &amp;quot;NELEM&amp;quot; &amp;quot; &amp;quot; ! Four blanks with blank as delimiter&lt;br /&gt;
          L: NELS             =  5&lt;br /&gt;
          &lt;br /&gt;
          SEDIT &amp;quot;Bill and Bob and Jebediah&amp;quot; nels &amp;quot;NELEM&amp;quot; &amp;quot; and &amp;quot; ! String delimiter&lt;br /&gt;
          L: NELS             =  3&lt;br /&gt;
&lt;br /&gt;
 NFORM  - Format numbers according to given mask.  Besides all of the standard Java&lt;br /&gt;
        format strings, Fortran format strings can be applied by surrounding the&lt;br /&gt;
        Fortran format string with parentheses like (F12.2). The following&lt;br /&gt;
        format keywords are also supported:&lt;br /&gt;
          GEN    - X-Midas GENeral format (no exponent if between 1E-3, 1E15).&lt;br /&gt;
          VIS    - X-Midas VISual  format (no exponent if between 1E-3, 1E7).&lt;br /&gt;
          SCI    - SCIentific notation.&lt;br /&gt;
          ENG    - ENGineering notation   (exponent is a multiple of 3).&lt;br /&gt;
          MAN    - MANtissa notation      (no exponents).&lt;br /&gt;
          DMS    - Deg-Min-Sec angular format.            ddd'mm'ss&lt;br /&gt;
          LAT    - Deg-Min-Sec format for latitude.       ddd'mm'ssN&lt;br /&gt;
          LON    - Deg-Min-Sec format for longitude.      ddd'mm'ssE&lt;br /&gt;
          STD    - STanDard time code format.             [yy]yy:mm:dd::hh:mm:ss&lt;br /&gt;
          ACQ    - ACQuisition time code format.          [yy.ddd]:[hh:mm:ss]&lt;br /&gt;
          EPOCH  - EPOCH quadwords for time code.         [yy]yy:sec_in_year&lt;br /&gt;
          NORAD  - NORAD timecode format.                 yyddd.frac_of_day&lt;br /&gt;
          TCR    - TimeCode Reader format.                ddd:hh:mm:ss&lt;br /&gt;
          VAX    - VAX time format.                       dd-MMM-yy[yy]:hh:mm:ss&lt;br /&gt;
          HMS    - Hour-Min-Sec time format.              hh:mm:ss.ffff&lt;br /&gt;
          YMD    - Year-Month-Day format.                 yyyy:mm:dd&lt;br /&gt;
          NET    - 32-bit integer formatted as URL.       127.0.0.1&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          SEDIT 1 str &amp;quot;NFORM&amp;quot; &amp;quot;#&amp;quot;&lt;br /&gt;
          str = 1&lt;br /&gt;
&lt;br /&gt;
          SEDIT 1.12345678 str &amp;quot;NFORM&amp;quot; &amp;quot;#.###&amp;quot;&lt;br /&gt;
          str = 1.123&lt;br /&gt;
&lt;br /&gt;
          SEDIT 1.12345678 str &amp;quot;NFORM&amp;quot; &amp;quot;00.000&amp;quot;&lt;br /&gt;
          str = 01.123&lt;br /&gt;
&lt;br /&gt;
          SEDIT 1 str NFORM &amp;quot;0.00&amp;quot;&lt;br /&gt;
          str = 1.00&lt;br /&gt;
&lt;br /&gt;
          SEDIT 1 str NFORM &amp;quot;(F3.2)&amp;quot;&lt;br /&gt;
          str = 1.00&lt;br /&gt;
&lt;br /&gt;
          SEDIT 123.456 str NFORM &amp;quot;DMS&amp;quot;&lt;br /&gt;
          STR = 123'27'22&lt;br /&gt;
&lt;br /&gt;
          the start of &amp;lt;P2&amp;gt; occurrence of &amp;lt;P1&amp;gt;. If &amp;lt;P1&amp;gt; not found or if&lt;br /&gt;
          specified occurence of &amp;lt;P1&amp;gt; not found, returns -1. (Since 3.5.0)&lt;br /&gt;
          &lt;br /&gt;
         Examples:&lt;br /&gt;
         nM&amp;gt; sedit &amp;quot;1 and 2 and 3 and&amp;quot; index NSEA &amp;quot;and&amp;quot; 3&lt;br /&gt;
           L: INDEX         = 14&lt;br /&gt;
           &lt;br /&gt;
         nM&amp;gt; sedit &amp;quot;1 and 2 and 3 and&amp;quot; index NSEA &amp;quot;and&amp;quot; 10&lt;br /&gt;
           L: INDEX         = -1&lt;br /&gt;
           &lt;br /&gt;
         nM&amp;gt; sedit &amp;quot;1 and 2 and 3 and&amp;quot; index NSEA &amp;quot;missing&amp;quot; 3&lt;br /&gt;
           L: INDEX         = -1&lt;br /&gt;
&lt;br /&gt;
 PADx  - PADRight, PADLeft and PADBoth.  Default pad character is a space. You&lt;br /&gt;
         can specify a length or a relative length by prepending a + before the&lt;br /&gt;
         number.  When necessary when padding BOTH, the extra character goes on&lt;br /&gt;
         the right.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; sedit &amp;quot;a string&amp;quot; str PADL 20&lt;br /&gt;
          20S: STR             = &amp;quot;            a string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; sedit &amp;quot;a string&amp;quot; str PADR 20 &amp;quot;.&amp;quot;&lt;br /&gt;
          20S: STR             = &amp;quot;a string............&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; sedit &amp;quot;a string&amp;quot; str PADB 20&lt;br /&gt;
          20S: STR             = &amp;quot;      a string      &amp;quot;&lt;br /&gt;
&lt;br /&gt;
 PARSE - extracts the nth naturally delimited word where n = &amp;lt;P1&amp;gt;.&lt;br /&gt;
         &amp;lt;P2&amp;gt; is an optional delimiter, if not set commas or spaces are used.&lt;br /&gt;
         &amp;lt;label&amp;gt; will be in all uppercase letters unless /CLEAN=FALSE.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;PARSE&amp;quot; 2&lt;br /&gt;
          str  = IS&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This/is/a/string&amp;quot; str &amp;quot;^func&amp;quot; 4 &amp;quot;/&amp;quot; /clean=f&lt;br /&gt;
          nM&amp;gt; res str&lt;br /&gt;
           6S: STR             = string&lt;br /&gt;
&lt;br /&gt;
 PARSEALl - parses &amp;lt;string&amp;gt; into naturally delimited words and puts the parsed&lt;br /&gt;
            words into a results array named &amp;lt;label&amp;gt;.  &amp;lt;P1&amp;gt; specifies the number&lt;br /&gt;
            of elements in the array.  If &amp;lt;P1&amp;gt; is not specified or made 0, the&lt;br /&gt;
            number of elements within the array will be defaulted to the number&lt;br /&gt;
            of words in the string.  If &amp;lt;P1&amp;gt; is less than the number of words,&lt;br /&gt;
            only the first &amp;lt;P1&amp;gt; words will be placed into the array.  If &amp;lt;P1&amp;gt; is&lt;br /&gt;
            greater than the number of words, the remaining elements of the&lt;br /&gt;
            array are null.  &amp;lt;P2&amp;gt; is an optional delimiter, if not set commas or&lt;br /&gt;
            spaces are used. All results will be in all uppercase letters unless&lt;br /&gt;
            /CLEAN=FALSE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          * nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; word &amp;quot;PARSEALL&amp;quot; 4&lt;br /&gt;
            nM&amp;gt; res word(0)&lt;br /&gt;
             4S: WORD(0)       = THIS&lt;br /&gt;
            nM&amp;gt; res word(2)&lt;br /&gt;
             1S: WORD(2)       = A&lt;br /&gt;
&lt;br /&gt;
            nM&amp;gt; res word(4)&lt;br /&gt;
            ERROR: java.lang.IllegalArgumentException: KeyObject.getIndexed():&lt;br /&gt;
            Error in accessing element 4 from [Ljava.lang.String;@33b121:&lt;br /&gt;
            java.lang.ArrayIndexOutOfBoundsException&lt;br /&gt;
&lt;br /&gt;
          * nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; word &amp;quot;PARSEALL&amp;quot; 4 /clean=f&lt;br /&gt;
            nM&amp;gt; res word(0)&lt;br /&gt;
            4S: WORD(0)       = This&lt;br /&gt;
&lt;br /&gt;
 PARSEARgs - parses the arguments of a command.  The returned object is of type&lt;br /&gt;
             nxm.sys.lib.Args, and as such has access to the Args class methods.&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; sedit &amp;quot;PATH,FUNC=SET,SYS&amp;quot; args PARSEARGS&lt;br /&gt;
          nM&amp;gt; res L:size args.size&lt;br /&gt;
          nM&amp;gt; res size&lt;br /&gt;
           L: SIZE            = 2&lt;br /&gt;
&lt;br /&gt;
 PARSEDIndex - parses &amp;lt;string&amp;gt; into naturally delimited words and returns the&lt;br /&gt;
               index of &amp;lt;P1&amp;gt;.  Returns -1 if not found.&lt;br /&gt;
&lt;br /&gt;
        Examples (ZERO-BASED):&lt;br /&gt;
          nM&amp;gt; SEDIT  &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; is&lt;br /&gt;
          idx  = 1&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT  &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; &amp;quot;not&amp;quot;&lt;br /&gt;
          idx  = -1&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT  &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; &amp;quot;not&amp;quot;&lt;br /&gt;
          idx  = -1&lt;br /&gt;
&lt;br /&gt;
        Examples (ONE-BASED):&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; is&lt;br /&gt;
          idx  = 2&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; &amp;quot;not&amp;quot;&lt;br /&gt;
          idx  = -1&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; idx &amp;quot;PARSEDI&amp;quot; &amp;quot;not&amp;quot;&lt;br /&gt;
          idx  = 0&lt;br /&gt;
&lt;br /&gt;
 PATH  - returns the path of a filename (see ROOT, TAIL, EXT)&lt;br /&gt;
&lt;br /&gt;
 PREPend  - Prepend &amp;lt;P1&amp;gt; to &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 RANGE - extracts the substring from &amp;lt;string&amp;gt; between &amp;lt;P1&amp;gt; and &amp;lt;P2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
         For either &amp;lt;P1&amp;gt; or &amp;lt;P2&amp;gt;, a negative number means that many characters&lt;br /&gt;
         from the end.  The indices &amp;lt;P1&amp;gt; and &amp;lt;P2&amp;gt; are order-DEPENDENT; that is,&lt;br /&gt;
         &amp;lt;P1&amp;gt; must refer to a position in the string that is equal to or to the&lt;br /&gt;
         left of the position specified by &amp;lt;P2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
         If either index is out of range, a blank string is returned. RANGE is&lt;br /&gt;
         therefore useful for catching errors:  if it cannot give the entire&lt;br /&gt;
         range of characters, it won't give any. The BETWEEN operator is&lt;br /&gt;
         error-tolerant.&lt;br /&gt;
&lt;br /&gt;
         Note: As of NeXtMidas 3.1.2, the RANGE function will have the&lt;br /&gt;
               following change to behaviour when using /LEGACY=FALSE. This&lt;br /&gt;
               will be the default behaviour in a later release.&lt;br /&gt;
&lt;br /&gt;
               Negative numbers will count as an index from the end of the&lt;br /&gt;
               string. See negative number examples below.&lt;br /&gt;
&lt;br /&gt;
               Leaving off the second index value will equate to a value of&lt;br /&gt;
               zero, NOT the end of the string.&lt;br /&gt;
&lt;br /&gt;
        Examples(Zero-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 0 6&lt;br /&gt;
          str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 6 0&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str RANGE -5 ^inStr.length-1&lt;br /&gt;
          str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/LEGACY=FALSE &amp;quot;This is a string&amp;quot; str RANGE -6 -1&lt;br /&gt;
          str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 100 200&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 4 -100&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; -1 -2&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; -2 -1&lt;br /&gt;
          str = &amp;quot;in&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/LEGACY=FALSE &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; -2 -1&lt;br /&gt;
          str = &amp;quot;ng&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; res inStr &amp;quot;This is a string&lt;br /&gt;
          nM&amp;gt; SEDIT inStr str RANGE  ^inStr.length ^inStr.length&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT inStr str RANGE  -1 -1&lt;br /&gt;
          str = &amp;quot;n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/LEGACY=FALSE inStr str RANGE  -1 -1&lt;br /&gt;
          str = &amp;quot;g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        Examples(One-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 1 7&lt;br /&gt;
          str = &amp;quot;This is&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 7 1&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; res inStr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
          nM&amp;gt; SEDIT/OB inStr str RANGE -5 ^inStr.length&lt;br /&gt;
          str = &amp;quot;string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 100 200&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; 4 -100&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; -1 -2&lt;br /&gt;
          str = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; str &amp;quot;RANGE&amp;quot; -2 -1&lt;br /&gt;
          str = &amp;quot;in&amp;quot;&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; res inStr &amp;quot;This is a string&amp;quot;&lt;br /&gt;
          nM&amp;gt; SEDIT/OB inStr str RANGE  ^inStr.length ^inStr.length&lt;br /&gt;
          str = &amp;quot;g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ROOT    - returns the filename without extension (see TAIL, PATH, EXT)&lt;br /&gt;
&lt;br /&gt;
 SEARch  - Case sensitive search for the substring &amp;lt;P1&amp;gt; in&lt;br /&gt;
                &amp;lt;string&amp;gt; and return index in &amp;lt;label&amp;gt;.&lt;br /&gt;
                Returns -1 if not found .&lt;br /&gt;
&lt;br /&gt;
        Examples (Zero-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; idx SEARCH &amp;quot;string&amp;quot;&lt;br /&gt;
          idx = 10&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; idx SEARCH &amp;quot;STRING&amp;quot;&lt;br /&gt;
          idx = -1&lt;br /&gt;
&lt;br /&gt;
        Examples (One-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; idx SEARCH &amp;quot;string&amp;quot;&lt;br /&gt;
          idx = 11&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This is a string&amp;quot; idx SEARCH &amp;quot;STRING&amp;quot;&lt;br /&gt;
          idx = -1&lt;br /&gt;
&lt;br /&gt;
 SELect - Find the index of the first token that starts with &amp;lt;P1&amp;gt;.&lt;br /&gt;
          See nxm.sys.lib.Parser for documentation on find method.&lt;br /&gt;
&lt;br /&gt;
          Note: As of NeXtMidas 3.1.2, the SELect function will have the&lt;br /&gt;
                following change to behaviour when using /LEGACY=FALSE. This&lt;br /&gt;
                will be the default behaviour in a later release.&lt;br /&gt;
&lt;br /&gt;
                The index returned will always be one-based, and using the /OB&lt;br /&gt;
                switch will have no effect&lt;br /&gt;
&lt;br /&gt;
        Example (/LEGACY=FALSE):&lt;br /&gt;
          nM&amp;gt; SEDIT/LEGACY=FALSE &amp;quot;This,is,a,string&amp;quot; idx SELECT &amp;quot;str&amp;quot;&lt;br /&gt;
          idx = 4&lt;br /&gt;
&lt;br /&gt;
        Example (Zero-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This,is,a,string&amp;quot; idx SELECT &amp;quot;str&amp;quot;&lt;br /&gt;
          idx = 3&lt;br /&gt;
&lt;br /&gt;
        Example (One-Based):&lt;br /&gt;
          nM&amp;gt; SEDIT/OB &amp;quot;This,is,a,string&amp;quot; idx SELECT &amp;quot;str&amp;quot;&lt;br /&gt;
          idx = 4&lt;br /&gt;
&lt;br /&gt;
 SPLIT - Split a string into an array (0 to N-1) of N tokens.  Unlike&lt;br /&gt;
                PARSEALL, the delimiter is specified.&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;A string to split&amp;quot; word SPLIT &amp;quot; &amp;quot;&lt;br /&gt;
          word(0) = A&lt;br /&gt;
          word(1) = string&lt;br /&gt;
          word(2) = to&lt;br /&gt;
          word(3) = split&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;A,string,to,split&amp;quot; word SPLIT &amp;quot;,&amp;quot;&lt;br /&gt;
          word(0) = A&lt;br /&gt;
          word(1) = string&lt;br /&gt;
          word(2) = to&lt;br /&gt;
          word(3) = split&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt;SEDIT &amp;quot;This is a string&amp;quot; x &amp;quot;STARTS&amp;quot; &amp;quot;This&amp;quot;&lt;br /&gt;
            z: X               = true&lt;br /&gt;
          &lt;br /&gt;
          nM&amp;gt;SEDIT &amp;quot;This is a string&amp;quot; x &amp;quot;STARTS&amp;quot; &amp;quot;string&amp;quot;&lt;br /&gt;
            z: X               = false&lt;br /&gt;
&lt;br /&gt;
 STRIM - trims all leading and trailing spaces off of &amp;lt;string&amp;gt;.&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;    stranded   &amp;quot; str STRIM&lt;br /&gt;
          str  = stranded&lt;br /&gt;
&lt;br /&gt;
 SUBstitute - substitutes string &amp;lt;P2&amp;gt; for the first instance of &amp;lt;P1&amp;gt; only&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str SUBS &amp;quot;is&amp;quot; &amp;quot;at&amp;quot;&lt;br /&gt;
          str  = That is a string&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str SUBS &amp;quot;is&amp;quot; &amp;quot; &amp;quot;&lt;br /&gt;
          15S: STR = Th  is a string ! Note length&lt;br /&gt;
&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str SUBS &amp;quot;is&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
          14S: STR = Th is a string ! Note length&lt;br /&gt;
&lt;br /&gt;
 TAIL - returns the filename and extension  (see ROOT, PATH, EXT)&lt;br /&gt;
&lt;br /&gt;
 TRIM - trims off string before &amp;lt;P1&amp;gt; and after &amp;lt;P2&amp;gt;. &amp;lt;label&amp;gt; will not contain&lt;br /&gt;
        &amp;lt;P1&amp;gt; or &amp;lt;P2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;ARRAY(FRAME;INDEX)+5&amp;quot; str TRIM &amp;quot;(&amp;quot; &amp;quot;)&amp;quot;&lt;br /&gt;
          str  = FRAME;INDEX&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;FILENAME.EXT&amp;quot; str trim &amp;quot;.&amp;quot;&lt;br /&gt;
          str  = EXT&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;FILENAME.EXT&amp;quot; str trim ,, &amp;quot;.&amp;quot;&lt;br /&gt;
          str = FILENAME&lt;br /&gt;
&lt;br /&gt;
 UPCAse - converts alphabetic characters to upper case.  One may also use&lt;br /&gt;
          the Java method directly, for example;&lt;br /&gt;
          nM&amp;gt; res str &amp;quot;my string&amp;quot;&lt;br /&gt;
          nM&amp;gt; res str2 str.toUpperCase()&lt;br /&gt;
          9S: STR2            = MY STRING&lt;br /&gt;
&lt;br /&gt;
 WORD  - extracts the naturally delimited word containing &amp;lt;P1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        Examples:&lt;br /&gt;
          nM&amp;gt; SEDIT &amp;quot;This is a string&amp;quot; str WORD &amp;quot;ri&amp;quot;&lt;br /&gt;
          str  = string&lt;br /&gt;
&lt;br /&gt;
Performing Multiple Functions:&lt;br /&gt;
=============================&lt;br /&gt;
  To perform multiple operations per line simply chain the operations&lt;br /&gt;
  together (entering just ONE output result name):&lt;br /&gt;
    nM&amp;gt; sedit &amp;quot;this is a string&amp;quot; out GSUBS &amp;quot;is&amp;quot; &amp;quot;at&amp;quot; GSUBS &amp;quot;at&amp;quot; &amp;quot;is&amp;quot;&lt;br /&gt;
    nM&amp;gt; res out&lt;br /&gt;
    16S: OUT             = this is a string&lt;br /&gt;
&lt;br /&gt;
  When performing multiple operations per line the operations&lt;br /&gt;
  must &amp;quot;make sense&amp;quot;.  For example, the following will generate an exception:&lt;br /&gt;
    nM&amp;gt; sedit &amp;quot;this is a string&amp;quot; out LEN GSUBS &amp;quot;is&amp;quot; &amp;quot;at&amp;quot;&lt;br /&gt;
    ERROR: Unable to convert GSUBS to type L&lt;br /&gt;
  because SEDIT expects the parameter after LEN to be an integer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SWITCHES:&lt;br /&gt;
  /CLEAN   - [DEFAULT=TRUE] Cleans the string before performing the functions:&lt;br /&gt;
               PARSE, PARSEALL, PARSEDINDEX&lt;br /&gt;
  /DEBUG   - Turn on debug output&lt;br /&gt;
  /FORCE   - Sets &amp;lt;OSTR&amp;gt; in a readonly table. (Since 2.9.3)&lt;br /&gt;
  /LEGACY  - Use legacy behaviour of BETWEEN, LENGTH, RANGE and SELECT&lt;br /&gt;
             functions. [DEF=TRUE], but will change to [DEF=FALSE] in a&lt;br /&gt;
             future version. (Since 3.1.2)&lt;br /&gt;
  /OB      - Same as /ONEBASE.&lt;br /&gt;
  /ONEBASE - Force 1-based indexing. Affects the BETWEEN, BSEARCH,&lt;br /&gt;
              PARSEDINDEX, LENGTH, RANGE, SEARCH and SELECT functions.&lt;br /&gt;
  /SEDITLEGACY - Same as /LEGACY. (Since 3.1.2)&lt;br /&gt;
  /STRIP    - Remove the quotes from the string&lt;br /&gt;
  /ZEROBASE - DEPRECATED -- This is now the default.  Use /OB to override.&lt;br /&gt;
&lt;br /&gt;
SEE ALSO: Query, nxm.sys.test.test_sedit.mm, nxm.sys.lib.Format,&lt;br /&gt;
SEE ALSO: nxm.sys.lib.Parser&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>