home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / cmdpk164.zip / mlrxshl.inf (.txt) < prev    next >
OS/2 Help File  |  1997-12-22  |  141KB  |  3,814 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. CmdShl User's Guide ΓòÉΓòÉΓòÉ
  3.  
  4.      What's That? 
  5.      Installation 
  6.      Starting CmdShl 
  7.      Environment Variables 
  8.      Editing Keys 
  9.      Internal Commands 
  10.         -  ALIAS 
  11.         -  DEFine 
  12.         -  QUIT 
  13.         -  RULE 
  14.         -  RX 
  15.         -  CD 
  16.      Known Limitations 
  17.      Related Files 
  18.      National Language Support 
  19.      Profile Support 
  20.      Internal Functions 
  21.      Internal Variables 
  22.      Editing Variables 
  23.      History 
  24.  
  25.  
  26. ΓòÉΓòÉΓòÉ 1.1. What's That? ΓòÉΓòÉΓòÉ
  27.  
  28. CmdShl is a command interpreter front-end.  It mimics the CMD.EXE command line 
  29. behavior.  It adds the following features: 
  30.  
  31.    1. You can define the initial insertion/overwriting state. 
  32.    2. The TAB and Shift+TAB keys provide smart name completion. 
  33.    3. An alias support is included. 
  34.    4. You can easily redefine keys assignments via profile. 
  35.    5. The "CD" command accepts both "/" and "\". 
  36.    6. The "CD -" command switches between current and previous directories. 
  37.    7. You can edit lines longer than 255 chars. 
  38.    8. A new "RX" internal command. 
  39.    9. Using the "CD" command is optional if you want to change to another 
  40.       directory (aka "executable" directories). 
  41.   10. With the "DEFine" internal command, you can set a key's value (either a 
  42.       text or a command). 
  43.   11. The "CD" command can use the CDPATH environment variable. 
  44.   12. The "executable" directories feature is optional (enabled by default). 
  45.   13. Optional command name validation (if an unknown command name is entered, 
  46.       it is highlighted). 
  47.   14. You can copy/paste text from line to line. 
  48.   15. You can expand parameters (even environment variable and aliases, for 
  49.       easy editing). 
  50.   16. The "CD" command allows partial path substitution. 
  51.   17. and much, much more... 
  52.  
  53.  Note:  CmdShl can also be used as a front-end for 4OS2, or with any command 
  54.         interpreter which provides a REXX interface. 
  55.  
  56.  
  57. ΓòÉΓòÉΓòÉ 1.2. Installation ΓòÉΓòÉΓòÉ
  58.  
  59. Installing CmdShl is very simple:  just copy CMDSHL.CMD somewhere along your 
  60. PATH, REXXVIO.DLL somewhere along your LIBPATH and, if you want to use a 
  61. profile file, customize PROFILE.SHL and move it somewhere along your DPATH. 
  62.  
  63. If REXXVIO.DLL is currently in use, close ALL your OS/2 windowed or fullscreen 
  64. sessions, and open a bare OS/2 windowed session (that is, one not starting 
  65. CmdShl of Fl).  You can then replace REXXVIO.DLL from this session. 
  66.  
  67. If you were using a previous version of MLRXSHL, execute the following code 
  68. from an OS/2 command prompt, to allow the new functions defined in REXXVIO to 
  69. be registered: 
  70.  
  71.    rexxtry call VioDropFuncs
  72.  
  73. If you want to use CmdShl whenever you open an OS/2 session, you can add the 
  74. following statement in the "Parameter" field of your OS/2 Windowed (or 
  75. fullscreen) session object: 
  76.  
  77.    /k "cmdshl"
  78.  
  79.  
  80. ΓòÉΓòÉΓòÉ 1.3. Starting CmdShl ΓòÉΓòÉΓòÉ
  81.  
  82. Syntax 
  83.  
  84.    cmdshl [/?] [/I|/O] [/P profile] [/C command|/K command]
  85.  
  86. Parameters 
  87.  
  88.    /?         -  Display a short explanation for CmdShl;
  89.  
  90.    /I         -  Use Insert mode by default (default);
  91.    /O         -  Use Overstrike mode by default;
  92.  
  93.    /P profile -  Use profile instead of "PROFILE.SHL";
  94.  
  95.    /C cmd     -  Just like the CMD.EXE /C switch;
  96.    /K cmd     -  Just like the CMD.EXE /K switch.
  97.  
  98. Examples 
  99.  
  100.    CMDSHL
  101.    CMDSHL /C DIR
  102.    CMDSHL /K ALIAS @myalias
  103.  
  104.  
  105. ΓòÉΓòÉΓòÉ 1.4. Environment variables ΓòÉΓòÉΓòÉ
  106.  
  107. CmdShl recognizes the following environment variables: 
  108.  
  109.    CDPATH
  110.    CMDSHL.PROMPT
  111.    CMDSHL.PROMPT.environment
  112.    PROMPT
  113.  
  114.    HELP.COMMAND
  115.    HELP.SWITCHES
  116.  
  117. If one or more of those environment variables are not defined, the missing ones 
  118. are silently ignored. 
  119.  
  120. The last two environment variables are used to define an optional external help 
  121. subsystem. 
  122.  
  123.  
  124. ΓòÉΓòÉΓòÉ 1.4.1. CDPATH ΓòÉΓòÉΓòÉ
  125.  
  126. This environment variable specifies the path along which the CD command should 
  127. search for directories. 
  128.  
  129.    SET CDPATH=[path[;...]]
  130.  
  131. Example 
  132.  
  133.    SET CDPATH=E:\LOCAL;E:\;E:\OS2;E:\TCPIP;
  134.  
  135.  
  136. ΓòÉΓòÉΓòÉ 1.4.2. CMDSHL.PROMPT ΓòÉΓòÉΓòÉ
  137.  
  138. This environment variable specifies the prompt to be used if no specific prompt 
  139. is defined for the current environment.  It takes precedence over PROMPT. 
  140.  
  141. See the PROMPT section for details on the possible values of CMDSHL.PROMPT. 
  142.  
  143.  
  144. ΓòÉΓòÉΓòÉ 1.4.3. CMDSHL.PROMPT.environment ΓòÉΓòÉΓòÉ
  145.  
  146. This environment variable specifies the prompt to be used in the given 
  147. environment.  It takes precedence over  CMDSHL.PROMPT and PROMPT. 
  148.  
  149. For example, you can define two different prompts for two different (possible) 
  150. environments: 
  151.  
  152.    SET CMDSHL.PROMPT.CMD=$i[$p]$s
  153.    SET CMDSHL.PROMPT.EDIT=EDIT:[$p]$s
  154.  
  155. See the PROMPT section for details on the possible values of 
  156. CMDSHL.PROMPT.environment. 
  157.  
  158.  
  159. ΓòÉΓòÉΓòÉ 1.4.4. PROMPT ΓòÉΓòÉΓòÉ
  160.  
  161. This environment variable specifies the prompt to be used if no more specific 
  162. prompt is defined.  If PROMPT is undefined, '[$p]' is assumed. 
  163.  
  164.    SET PROMPT=text
  165.  
  166. The following symbols can be used to define a new prompt.  Each symbol must be 
  167. preceded by a dollar symbol ($): 
  168.  
  169.  $         $ symbol 
  170.  _         Carriage Return / Line Feed sequence 
  171.  A         & symbol 
  172.  B         | symbol (pipe) 
  173.  C         ( symbol 
  174.  D         Date 
  175.  E         ASCII Code 27 (escape) 
  176.  F         ) symbol 
  177.  G         > symbol 
  178.  H         Backspace 
  179.  I         Help bar 
  180.  L         < symbol 
  181.  N         Default disk unit (e.g. A:) 
  182.  P         Current directory (e.g. E:\OS2) 
  183.  Q         = symbol 
  184.  R         Return code 
  185.  S         Space 
  186.  T         Time 
  187.  V         Version number 
  188.  
  189.  All other symbols are emitted without changes. 
  190.  
  191.  Example 
  192.  
  193.      SET PROMPT=$i$e[33m{$r}$e[32;1m[$p]$e[0m$s
  194.  
  195.  
  196. ΓòÉΓòÉΓòÉ 1.4.5. HELP.COMMAND ΓòÉΓòÉΓòÉ
  197.  
  198. If this environment variable is defined, CmdShl will not use its build-in help 
  199. messages for internal commands.  Instead, it will call the script/application 
  200. defined by this variable. 
  201.  
  202. For example, if HELP.COMMAND is defined as: 
  203.  
  204.    SET HELP.COMMAND=ECHO Help for
  205.  
  206. Issuing 'ALIAS /?' will give: 
  207.  
  208.    Help for ALIAS /?
  209.  
  210. (In other words, the command is displayed back to the user.) 
  211.  
  212. The syntax of the call is the following: 
  213.  
  214.    call %HELP.COMMAND% <command> <args>
  215.  
  216. where <command> is the upper-cased full command name (namely, one of ALIAS, CD, 
  217. CMDSHL, DEFINE, QUIT or RULE) and <args> the argument(s) given to the command 
  218. by the user. 
  219.  
  220.  
  221. ΓòÉΓòÉΓòÉ 1.4.6. HELP.SWITCHES ΓòÉΓòÉΓòÉ
  222.  
  223. If this environment variable is defined, it is used as the default value for 
  224. the helpSwitches environment variable.  If HELP.SWITCHES is not defined, the 
  225. default value for helpSwitches is '/?'. 
  226.  
  227. See the helpSwitches definition in CmdShl internal variables for more details. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 1.5. Editing Keys ΓòÉΓòÉΓòÉ
  231.  
  232. By default, CmdShl uses CMD.EXE editing commands, as well as some EPM keys, 
  233. that is: 
  234.  
  235.  Alt+C 
  236.            Copies the marked text. 
  237.  Alt+D 
  238.            Deletes the current mark. 
  239.  Alt+M 
  240.            Moves the current mark. 
  241.  Alt+U 
  242.            Removes the current mark. 
  243.  Alt+W 
  244.            Marks the word at the current cursor position using a character 
  245.            mark. 
  246.  Alt+Z 
  247.            Character-marks the current character. 
  248.  Backspace 
  249.            Deletes the character to the left of the cursor. 
  250.  Ctrl+E 
  251.  Ctrl+End 
  252.            Erases from the current cursor position to the end of the line. 
  253.  Ctrl+Home 
  254.            Erases from the beginning of the line to the current cursor 
  255.            position. 
  256.  Ctrl+K 
  257.            Duplicates the element preceding the cursor.  (A space is added 
  258.            between the elements, and completion state is preserved.) 
  259.  Ctrl+Left arrow 
  260.            Moves the cursor to the beginning of the word. 
  261.  Ctrl+Right arrow 
  262.            Moves the cursor to the beginning of the next word. 
  263.  Ctrl+X 
  264.            Expands the element preceding the cursor. 
  265.  Del 
  266.            Deletes the character at the current cursor position. 
  267.  Down arrow 
  268.            Recalls the next entry in the command history list. 
  269.  End 
  270.            Moves the cursor to the end of the line. 
  271.  Esc 
  272.            Erases the command line. 
  273.  F1 
  274.            Finds the previous entry in the command history list matching the 
  275.            beginning of the line (from the beginning to the current cursor 
  276.            position). 
  277.  Home 
  278.            Moves the cursor to the beginning of the line. 
  279.  Ins 
  280.            Switches between insert and replace modes. 
  281.  Left arrow 
  282.            Moves the cursor one position to the left. 
  283.  Right arrow 
  284.            Moves the cursor one position to the right. 
  285.  Shift+Tab 
  286.            Replaces the element preceding the cursor with the previous matching 
  287.            item. 
  288.  Space 
  289.            Insert a space and check the validity of the element preceding the 
  290.            cursor if it is a command. 
  291.  Tab 
  292.            Replaces the element preceding the cursor with the next matching 
  293.            item. 
  294.  Up arrow 
  295.            Recalls the previous entry in the command history list. 
  296.  
  297.  But you can redefine almost all keys to suit your needs.  As an example, the 
  298.  default PROFILE.SHL file provides the following additional editing keys: 
  299.  
  300.      (                                -- insert () and move cursor inside
  301.      F3                               -- close the current session
  302.      F8                               -- insert current date
  303.      Shift+F7                         -- show all matching file names
  304.      F2, F5, F7                       -- save, load and rename
  305.                                       -- history list
  306.      Ctrl+R                           -- search command in history
  307.      Ctrl+F                           -- search next match in history
  308.      Ctrl+Down arrow                  -- save current screen
  309.      Ctrl+Up arrow                    -- restore last screen
  310.  
  311.  
  312. ΓòÉΓòÉΓòÉ 1.5.1. The expand Internal Action ΓòÉΓòÉΓòÉ
  313.  
  314. The expand internal action is used to expand the element preceding the cursor. 
  315. That is: 
  316.  
  317.      If the element is in a command position, it is replaced with its complete 
  318.       filename (with full path) if applicable -- if it's an alias or an 
  319.       internal command, it remains unchanged.  If it's an invalid command, it 
  320.       is highlighted; 
  321.      If the element follows an ALIAS internal command, and ends with an equal 
  322.       sign, the alias value is inserted (if available); 
  323.      If the element follows a RULE internal command, and ends with an equal 
  324.       sign, the rule value is inserted (if available); 
  325.      If the element ends with an equal sign, and if an environment variable of 
  326.       that name exists, its value is inserted; 
  327.      Otherwise, if the element contains environment variable names surrounded 
  328.       by percent sign, these parts are replaced with the environment variables 
  329.       values. 
  330.  
  331.  In the following examples, the cursor is supposed to be the underscore sign. 
  332.  
  333.      keyb_fr                 -->  c:\OS2\keyb.com_fr
  334.      keyb fr_                -->  keyb fr_
  335.      alias xrn=_             -->  alias xrn=e:\local\yarn ^& yarn.exe ^& cd -
  336.      rule RD=_               -->  rule RD=%d %d*^|/?
  337.      set etc=_               -->  set etc=d:\tcpip\etc
  338.      type %etc%\connect.log_ -->  type d:\tcpip\etc\connect.log_
  339.  
  340.  
  341. ΓòÉΓòÉΓòÉ 1.5.2. The tab and backtab Internal Actions ΓòÉΓòÉΓòÉ
  342.  
  343. The tab and backtab internal actions are used to complete the element preceding 
  344. the cursor.  That is: 
  345.  
  346.      If the element at this position is expected to be an environment 
  347.       variable, an environment variable name whose name begins with the element 
  348.       preceding the cursor is searched for; 
  349.      If the element at this position is expected to be a directory, a 
  350.       directory name whose name begins with the element preceding the cursor is 
  351.       searched for -- the element preceding the cursor can contain wildcards; 
  352.      If the element at this position is expected to be a keyword or a symbol, 
  353.       nothing occurs; 
  354.      Otherwise, a file or directory whose name begins with the element 
  355.       preceding the cursor is searched for -- the element preceding the cursor 
  356.       can contain wildcards. 
  357.  
  358.  When more than one matching item is found, the tab and backtab internal 
  359.  actions are used to enumerate the possibilities. 
  360.  
  361.  The type of the element at cursor position is determined by user-defined 
  362.  rules.  When no such rule exists, a file or directory whose name begins with 
  363.  the element preceding the cursor is searched for.  The following rules are 
  364.  predefined (they can be redefined at will): 
  365.  
  366.      CD           %d|%f %f|/?|
  367.      CHDIR        %d|/?|
  368.      DETACH       %x
  369.      FOR          %%%l IN (%*) DO %x
  370.      RD           %d %d*|/?
  371.      RMDIR        %d %d*|/?
  372.      SET          %e=%*|/?|
  373.      START        "%*" %o %x|"%*" %o|%o %x|%o
  374.  
  375.  See the RULE command for details on rules. 
  376.  
  377.  
  378. ΓòÉΓòÉΓòÉ 1.5.3. The space Internal Action ΓòÉΓòÉΓòÉ
  379.  
  380. The space internal action is used to insert (or overstrike) a space and to 
  381. check the validity of the command preceding it.  That is to say, the command 
  382. preceding the cursor is checked if it is in a command (findcontexttype() 
  383. returns 'c') or invalid (findcontexttype() returns '0') context, as defined by 
  384. rules. 
  385.  
  386. If it is a command context, nothing happens if the command found is valid. 
  387. Otherwise, invalidCmd is evaluated.  If it is an invalid context, invalidCmd is 
  388. evaluated too. 
  389.  
  390. invalidCmd by default flags the offending command in red, but it can be 
  391. redefined by the user.  See its definition in the Internal Variables section 
  392. for details. 
  393.  
  394.  
  395. ΓòÉΓòÉΓòÉ 1.6. Internal Commands ΓòÉΓòÉΓòÉ
  396.  
  397. CmdShl adds the following "internal" commands: 
  398.  
  399.    ALIAS [LIST|@file|alias=[cmd]]
  400.    DEFine key [value]
  401.    QUIT
  402.    RULE [LIST|@file|rule=[def]]
  403.    RX cmd
  404.  
  405. And it "enhances" the following underlying shell commands: 
  406.  
  407.    CD [directory|string1 string2]
  408.  
  409.  
  410. ΓòÉΓòÉΓòÉ 1.6.1. ALIAS ΓòÉΓòÉΓòÉ
  411.  
  412. The ALIAS command is used to view/define/remove aliases.  Alias names ARE 
  413. case-sensitive.  Recursive aliases are not allowed (but an alias can use 
  414. another alias).  And an alias can use all CmdShl's internal commands. 
  415.  
  416. ALIAS ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇLISTΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  417.                        Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇ@fileΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  418.                        ΓööΓöÇalias=Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  419.                                ΓööΓöÇvalueΓöÇΓöÿ
  420.  
  421.      To view all defined aliases, issue the "ALIAS LIST" command. 
  422.      To save all defined aliases in a file, redirect the previous command 
  423.       output into a file, as in "ALIAS LIST >mylist". 
  424.      To load an alias list, use "ALIAS @mylist" (where "mylist" is a file 
  425.       containing alias definitions). 
  426.      To remove an existing alias, use an empty definition, as in "ALIAS foo=". 
  427.      To define a new alias, use "ALIAS alias=def", where "alias" is the alias 
  428.       name, and "def" its definition (any valid command).  In addition, you can 
  429.       use the "%*" parameter as well as "%n" (where n is the argument number in 
  430.       range 0..9, 0 being the alias name), which denotes "runtime" parameters. 
  431.       (If "%n" is immediately followed by '*', it means "arg n and all 
  432.       remaining args".)  Here are some aliases definitions: 
  433.  
  434.                ALIAS dir=dir %* ^| less
  435.                ALIAS prj=cd \user\alpha\smith\MyProject\Current
  436.                ALIAS makeprj=prj ^& nmake
  437.                ALIAS calc=rx say %*; RC=0
  438.                ALIAS in=cd %1 ^& %2* ^& cd -
  439.  
  440.  Note:  An alias can redefine an existing command, as "dir" in the previous 
  441.         list.  The right-hand-side "dir" is the CMD.EXE internal command -- 
  442.         recursive aliases are not allowed, and hence this second "dir" cannot 
  443.         be an alias, so it must be something else (a CMD.EXE internal command 
  444.         in this very case). 
  445.  
  446.  When defining aliases from the command line, you may have to quote special 
  447.  symbols (such as '&'  and '|') with a '^' in order to prevent unexpected 
  448.  results.  For example, the first (dir), third (makeprj) and last (in) aliases 
  449.  require an '^' in front of their '&'s when entered from the command line. 
  450.  
  451.  When the execution of an alias is interrupted by the user (by the mean of 
  452.  Ctrl+C or Ctrl+Break), the execution of the alias is interrupted, as is the 
  453.  execution of the possibly following commands in the current command line. 
  454.  
  455.  
  456. ΓòÉΓòÉΓòÉ 1.6.2. DEFine ΓòÉΓòÉΓòÉ
  457.  
  458. The DEFine command is used to [re]define a key.  You can either assign to a key 
  459. an internal action, an immediate command or a static text.  You can also remove 
  460. a key definition (the key will then returns its default value). 
  461.  
  462. DEFine ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇkeyΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  463.                                      ΓööΓöÇΓöÇΓöÇvalueΓöÇΓöÇΓöÇΓöÿ
  464.  
  465. [In this section, if a command name is shown in mixed case, as "DEFine" above, 
  466. it means it can be abbreviated.  That is, you can use either "DEF", "DEFI", 
  467. "DEFIN" or "DEFINE" -- upper-cased letters are required, others are optional.] 
  468.  
  469. keys names 
  470.  
  471. By default, the following keys-name are defined: 
  472.  
  473.    A-C, A-D, A-M, A-U, A-W, A-Z, A-F10, BKSP, CURD, CURL, CURR, CURU,
  474.    C-CURL, C-CURR, C-E, C-END, C-HOME, C-PGDN, C-PGUP, C-X, DEL, END,
  475.    ENTER, ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
  476.    HOME, INS, PGDN, PGUP, SPACE, S-TAB, TAB
  477.  
  478. [Shifted keys have a "S-" prefix, control keys have a "C-" prefix and Alt keys 
  479. have a "A-" prefix.] 
  480.  
  481. Note:  If you want to define another key, you have to define a synonym, as in: 
  482.  
  483.                  RX S_F7='005A'x; C_A='01'x
  484.  
  485. The variable name is the key name, with an "_" instead of a "-", as you can't 
  486. use "-" in a REXX variable name, and the key name value is the hexadecimal 
  487. value returned by the getKey function.  You can use the following CmdShl 
  488. command to find this value for a key: 
  489.  
  490.    RX call getkey; say "'"substr(ckey,2)"'x"
  491.  
  492.  Keys values 
  493.  
  494.  The following internal actions are available: 
  495.  
  496.      backmatch, backsp, backtab, cdown, cleft, cright, ctrlend, ctrlhome,
  497.      ctrlleft, ctrlright, cup, del, dup, end, enter, esc, expand, home,
  498.      ins, mark (char|clear|copy|word|delete|move), match, space, tab
  499.  
  500.  If you assign an internal action to a key, this key will act just as if the 
  501.  internal action was used.  If you want to assign more than one internal action 
  502.  to a key, you can use the MC command. 
  503.  
  504.  For example, if you want the C_A key to act as the Home key (if you're used to 
  505.  EMACS), use: 
  506.  
  507.      DEFINE C-A home
  508.  
  509.  And, if you don't like the command validity check, use: 
  510.  
  511.      DEFINE SPACE
  512.  
  513.  [That is, restore default behavior -- you can use "DEFINE SPACE space" to undo 
  514.  your change.] 
  515.  
  516.  Miscellaneous 
  517.  
  518.  If you want to assign a static text to a key, use the TEXT command: 
  519.  
  520.      DEFINE A_F10 TEXT Hello World!
  521.  
  522.  If you want to assign an immediate command, use the OSNowait statement (or its 
  523.  SHELL synonym).  It can be followed by any CmdShl valid command(s): 
  524.  
  525.      DEFINE F3 OSNowait EXIT
  526.  
  527.  Now, if you hit F3, your session will be closed. 
  528.  
  529.  If you want to assign more than one command to a key, use the MC command: 
  530.  
  531.      DEFINE " MC /TEXT ""/cleft
  532.  
  533.  The first non-blank character following MC is the separator.  It does not have 
  534.  to be a "/". 
  535.  
  536.  [See PROFILE1.SHL for more complex keys definitions.] 
  537.  
  538.  
  539. ΓòÉΓòÉΓòÉ 1.6.3. QUIT ΓòÉΓòÉΓòÉ
  540.  
  541. The QUIT command is used to exit from CmdShl.  It does not close the underlying 
  542. CMD.EXE session. 
  543.  
  544. QUIT ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  545.  
  546.  
  547. ΓòÉΓòÉΓòÉ 1.6.4. RULE ΓòÉΓòÉΓòÉ
  548.  
  549. The RULE command is used to view/define/remove rules.  Rules names ARE 
  550. case-sensitive but a case-insensitive rule is assumed if rule name is in 
  551. UPPERCASE. 
  552.  
  553. Rules are used to help providing smart completion  and command checking. 
  554.  
  555. RULE ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇLISTΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  556.                         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇ@fileΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  557.                         ΓööΓöÇrule=Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  558.                                ΓööΓöÇΓöÇdefΓöÇΓöÇΓöÿ
  559.  
  560.      To view all defined rules, issue the "RULE LIST" command. 
  561.      To save all defined rules in a file, redirect the previous command output 
  562.       into a file, as in "RULE LIST >myrules". 
  563.      To load an rule list, use "RULE @myrules" (where "myrules" is a file 
  564.       containing rule definitions). 
  565.      To remove an existing rule, use an empty definition, as in "RULE foo=". 
  566.      To define a new rule, use "RULE rule=def", where "rule" is the rule name, 
  567.       and "def" its definition.  The definition can contain more than one 
  568.       clause (in which case the clauses are separated by '|').  When more than 
  569.       one definition is given, they are checked from left to right, the first 
  570.       matching clause being retained.  When specifying a definition, the 
  571.       following elements can be used to denote the argument type: %*, %c, %d, 
  572.       %e, %f, %l, %o and %x.  See below for details. 
  573.  
  574.                RULE WHENCE=%f %e
  575.                RULE CD=%d^|%f %f^|/?|
  576.  
  577.  Note:  When defining rules from the command line, you may have to quote 
  578.         special symbols (such as '&'  and '|') with a '^' in order to prevent 
  579.         unexpected results. 
  580.  
  581.  Rules 
  582.  
  583.  A rule contains one or more clauses, separated by '|'. Each clause describes a 
  584.  possible parameter list for the command. 
  585.  
  586.  In a clause, you can use any literal symbol, or one of the following values: 
  587.  
  588.   (space)  One (or more) space. 
  589.  %%        The symbol '%'. 
  590.  %(list)   A file name matching at least an element of the space- or 
  591.            comma-delimited list. 
  592.  %*        Anything. 
  593.  %c        A command name. 
  594.  %d        A directory name. 
  595.  %e        An environment variable name. 
  596.  %f        A file name. 
  597.  %l        A single letter. 
  598.  %o        A (possibly empty) list of options. 
  599.  %x        An expression 
  600.  
  601.  For example, the rule for the FOR command would be: 
  602.  
  603.      RULE FOR=%%%l IN (%*) DO %x
  604.  
  605.  It means that the FOR command requires a '%' sign immediately followed by a 
  606.  letter, then one (or more) space, an 'IN' keyword (case insensitive), one (or 
  607.  more) space again, an open parent, one or more symbols, a close parent, one 
  608.  (or more) space, a 'DO' keyword (case insensitive), one (or more) space and 
  609.  finally an expression. 
  610.  
  611.  Another example is the rule for the START command, which contains four 
  612.  clauses: 
  613.  
  614.      RULE START="%*" %o %x|"%*" %o|%o %x|%o
  615.  
  616.  An example using the '%(list)' specification follows: 
  617.  
  618.      RULE EDITINI=%(*.INI *.FOO)
  619.  
  620.  It means that the (hypothetical) EDITINI command requires a file whose 
  621.  extension is either '.INI' or '.FOO' (case insensitive). 
  622.  
  623.  If the last element of a clause is one of the special symbols listed above 
  624.  followed by a '*', it means this element can be repeated zero or more time. 
  625.  
  626.  For example, the RD (aka RMDIR) command is described with the following rule 
  627.  by default: 
  628.  
  629.      RULE RD=%d %d*|/?
  630.  
  631.  The first clause specifies thant RD can take one or more directory name on its 
  632.  command line. 
  633.  
  634.  Case sensitivity 
  635.  
  636.  The left hand side of a rule respects the following: 
  637.  
  638.      If you want to define a rule for a command, regardless of its case, use 
  639.       an all-upper-cased name; 
  640.      If you want to define a rule for a case-sensitive command (for example 
  641.       for an alias which overrides an internal command or such), use the 
  642.       case-sensitive name. 
  643.  
  644.  For example, assuming the following: 
  645.  
  646.      RULE FOO=BAR|BAZ
  647.      RULE foo=FOOBAR
  648.      RULE Foo=FOOBARBAZ
  649.  
  650.  If you enter "foo", rule 2 is applied.  If you enter "Foo", rule 3 is applied. 
  651.  If you enter anything else (such as "FOO" or "foO"), rule 1 applies. 
  652.  
  653.  Note  It means that, if you want to define a specific rule for an 
  654.        all-upper-cased command, you have to define the default rule for all 
  655.        other cases. 
  656.  
  657.  For example: 
  658.  
  659.      RULE IN=<a special rule>
  660.      RULE In=<the default rule>
  661.      RULE in=<the default rule>
  662.      RULE iN=<the default rule>
  663.  
  664.  The right hand side respects: 
  665.  
  666.      The special symbols (such as %c, %d, etc.) are case sensitive; 
  667.      All other symbols and letters are case insensitive. 
  668.  
  669.  For example, assuming the default rule for FOR, the following entries are all 
  670.  valid: 
  671.  
  672.      for %a in (a b) do echo %a
  673.      for %a In (a b) Do echo %a
  674.      for %a IN (a b) DO echo %a
  675.  
  676.  Predefined rules 
  677.  
  678.  The following rules are defined by default (they describe the various CMD.EXE 
  679.  internal commands): 
  680.  
  681.      CD           %d|%f %f|/?|
  682.      CHDIR        %d|/?|
  683.      DETACH       %x
  684.      FOR          %%%l IN (%*) DO %x
  685.      RD           %d %d*|/?
  686.      RMDIR        %d %d*|/?
  687.      SET          %e=%*|/?|
  688.      START        "%*" %o %x|"%*" %o|%o %x|%o
  689.  
  690.  You can redefine or remove them if needed, by using the RULE command (either 
  691.  in a PROFILE file or directly from the command line). 
  692.  
  693.  If no rules is defined for a command, '%*' is assumed. 
  694.  
  695.  
  696. ΓòÉΓòÉΓòÉ 1.6.5. RX ΓòÉΓòÉΓòÉ
  697.  
  698. RX is CmdShl's backdoor.  You can use any valid REXX statement as a parameter, 
  699. and you can check/set CmdShl internal variables, or call CmdShl internal 
  700. functions.  It's useful, but mostly for "power users" :-) 
  701.  
  702. RX ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇstatementΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  703.  
  704. [See PROFILE1.SHL for some RX usage samples.] 
  705.  
  706.  
  707. ΓòÉΓòÉΓòÉ 1.6.6. CD ΓòÉΓòÉΓòÉ
  708.  
  709. The CD command now accepts a new parameter, "-", and uses the CDPATH 
  710. environment variable.  Additionally, both "\" and "/" can be used in 
  711. directories specifications and the drive is changed.  Partial path substitution 
  712. is also allowed. 
  713.  
  714. CD ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  715.                            Γö£ΓöÇΓöÇdirectoryΓöÇΓöÇΓöñ
  716.                            Γö£ΓöÇstr1ΓöÇΓöÇΓöÇstr2ΓöÇΓöñ
  717.                            ΓööΓöÇΓöÇΓöÇΓöÇΓöÇ - ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  718.  
  719. The CDPATH environment variable contains a list of paths.  You don't have to 
  720. include the current (".") directory in it.  It is always looked up first. 
  721.  
  722. For example, if CDPATH is defined as: 
  723.  
  724.   SET CDPATH=C:\;C:\OS2;
  725.  
  726. Issuing the "CD APPS" command will bring you to "C:\OS2\APPS" (if there was no 
  727. APPS entry in the then-current directory). 
  728.  
  729. A trailing "/" or "\" is allowed in directories specification. 
  730.  
  731. You can perform path substitution.  For example, if you're currently in 
  732. C:\project\beta\source and want to switch to C:\project\gamma\source, you can 
  733. use "CD BETA GAMMA". 
  734.  
  735. Warning:  If you want to switch to a directory named "-", you'll have to 
  736.           enclose it with double quotes, follow it with "\" or precede it with 
  737.           ".\" as in: 
  738.  
  739.                        CD "-"
  740.                        CD -\
  741.                        CD .\-
  742.  
  743.  
  744. ΓòÉΓòÉΓòÉ 1.7. Known Limitations ΓòÉΓòÉΓòÉ
  745.  
  746.      When using CmdShl as a CMD.EXE front-end, interrupting the execution of a 
  747.       CMD.EXE internal command aborts CmdShl too.  Not much can be done 
  748.       regarding this problem except waiting for a new CMD.EXE with a better 
  749.       signal handling... 
  750.  
  751.      When using CmdShl as a CMD.EXE front-end with OS/2 2.x, your command-line 
  752.       window may not close upon shutdown.  THIS PROBLEM NO LONGER OCCURS WITH 
  753.       WARP. 
  754.  
  755.      Alias names ARE case-sensitive.  This is intentional but if you don't 
  756.       like it that way, please, let me know! 
  757.  
  758.      If you want to switch to a directory named "-", you'll have to enclose it 
  759.       with double quotes or precede it with ".\" or append "\" to it, as in: 
  760.  
  761.                CD "-"
  762.                CD .\-
  763.                CD -\
  764.  
  765.      When "implied" CD is enabled, a directory name takes the precedence over 
  766.       an executable name with no arguments.  That is, if "foo" is a 
  767.       subdirectory of the current directory and there also exists a "foo.exe" 
  768.       somewhere along the PATH, issuing the "foo" command will change the 
  769.       current directory.  If you want to call "foo.exe", either use some 
  770.       arguments, or specify the file's extension, as in: 
  771.  
  772.                foo bar
  773.                foo.exe
  774.  
  775.       [This behavior is the default, but you can choose to give precedence to 
  776.       an executable name with no arguments by setting impCD to 2.  See the 
  777.       impCD definition in CmdShl internal variables.] 
  778.  
  779.      CmdShl aliases and so-called "internal commands" (i.e., ALIAS, RX, QUIT 
  780.       and DEFine) can not be used in sub-expressions.  That is, in: 
  781.  
  782.                for %i in (foo bar) do alias do_%i=baz %i
  783.       or 
  784.  
  785.                (foo prj & bar prj) >foobar.log
  786.  
  787.       CmdShl's ALIAS command is not called in the first statement, and foo and 
  788.       bar cannot be aliases. 
  789.  
  790.      The &  ('and') operator cannot be used in an expression for the RX 
  791.       command.  CmdShl interprets it as a command separator.  For example: 
  792.  
  793.                RX say foo & bar
  794.  
  795.       can be interpreted either as "RX say foo" followed by a "bar" command, or 
  796.       as "RX say foo & bar", displaying 1 if foo and bar are both equal to 1 
  797.       and 0 otherwise.  As there's no way to choose between those two valid 
  798.       interpretations, the first one is retained. 
  799.  
  800.      Due to a limitation with the linein() builtin function, lines in a 
  801.       PROFILE file exceeding 250 characters may cause problem.  An easy fix is 
  802.       to break it in more than one piece: 
  803.  
  804.                'a very long line...'
  805.  
  806.       can be entered as: 
  807.  
  808.                'a very',
  809.                   'long line...'
  810.  
  811.       (Note the ending comma at the end of the first line.) 
  812.  
  813.  
  814. ΓòÉΓòÉΓòÉ 1.8. Related Files ΓòÉΓòÉΓòÉ
  815.  
  816. df.cmd [drive ...] 
  817.  
  818. This is a UNIX "df" clone.  It displays all available (or specified) drives, 
  819. with their total, used and free capacity. 
  820.  
  821. pushd.cmd [new dir] 
  822.  
  823. This command pushes the current directory in a "directory stack", and 
  824. (optionally) changes to the given disk/directory. 
  825.  
  826. popd.cmd 
  827.  
  828. This command pops the head of the directory stack, and go to this new 
  829. directory. 
  830.  
  831. whence.cmd file [path] 
  832.  
  833. This command tries to find a file along a path (PATH by default).  If the file 
  834. is found, its complete path is displayed. 
  835.  
  836.  
  837. ΓòÉΓòÉΓòÉ 1.9. National Language Support ΓòÉΓòÉΓòÉ
  838.  
  839. There's just six language-dependent messages which are not automatically 
  840. adjusted:  it's the alias command help string (aliasHelp), the CmdShl help 
  841. string (cmdHelp), the define command help string (defHelp), the quit command 
  842. help string (quitHelp), the rule command help string (ruleHelp) and the 
  843. additional CD help string (cdHelp).  It's at the beginning of the file, and you 
  844. can translate it.  Or, even better, you can define them in your PROFILE.SHL 
  845. (see below). 
  846.  
  847. All other language-dependent messages are automatically adjusted by CmdShl 
  848. (secondary prompt, top of screen help string, ...). 
  849.  
  850.  
  851. ΓòÉΓòÉΓòÉ 1.10. Profile Support ΓòÉΓòÉΓòÉ
  852.  
  853. CmdShl supports profile files.  By default, PROFILE.SHL is used, but you can 
  854. override it via the /P switch. 
  855.  
  856. If present, the profile file should be somewhere along the DPATH, or you can 
  857. alternatively specify its complete path. 
  858.  
  859. A profile file is a plain REXX file.  It's called after command line arguments, 
  860. but before any user interaction.  It's usually used to redefine keys 
  861. assignments, displaying or setting some session- dependant data, and so on... 
  862.  
  863. Please refer to PROFILE1.SHL for more explanations. 
  864.  
  865.  
  866. ΓòÉΓòÉΓòÉ 1.10.1. PROFILE1.SHL ΓòÉΓòÉΓòÉ
  867.  
  868. This is my current profile file, which you can use as a sample profile file for 
  869. CmdShl.  [Hint:  for better startup performances, you can remove all comments 
  870. -- that is, all except the first.] 
  871.  
  872. For a detailed explanation of the features added by this profile file, read the 
  873. end of this section. 
  874.  
  875. /* profile.shl - sample bindings                               971221 */
  876.  
  877.  
  878. /* This profile file demonstrates typical profile usage:              */
  879. /*                                                                    */
  880. /*       - Improving/tailoring existing commands, adding shortcuts    */
  881. /*         [The auto-close '(', the insert-date key (F8), and S-F7,   */
  882. /*         which displays all possible filenames.]                    */
  883. /*                                                                    */
  884. /*       - Adding new functions                                       */
  885. /*         [The persistent command history, F2 (save), F5 (load) and  */
  886. /*         F7 (name), tools to search items through command history   */
  887. /*         as well as screen management system with C-UP, C-DOWN and  */
  888. /*         C-PADPLUS.]                                                */
  889. /*                                                                    */
  890. /*       - National Language Support                                  */
  891. /*         [on-line messages in French.]                              */
  892. /*                                                                    */
  893. /*       - Useful global aliases and rules                            */
  894.  
  895.  
  896. /* In a profile file, you can use any REXX instruction, but, due to   */
  897. /* the current implementation, it must fit in one line.               */
  898. /*                                                                    */
  899. /* That is, you can use:                                              */
  900. /*                                                                    */
  901. /*     if foo = 'XYZZY' then say 'Nothing happens'; else  x = x + 1   */
  902. /*                                                                    */
  903. /* But you can't use:                                                 */
  904. /*                                                                    */
  905. /*     if foo = 'XYZZY' then                                          */
  906. /*        say 'Twice as much happens'                                 */
  907. /*     else                                                           */
  908. /*        x = x + 1                                                   */
  909. /*                                                                    */
  910. /* Alternatively, you can use the comma as a line continuation marker */
  911. /*                                                                    */
  912. /*     foo = 'Hello',                                                 */
  913. /*           'world'                                                  */
  914. /*                                                                    */
  915. /* Another important difference with standard REXX scripts is that    */
  916. /* you cannot call CmdShl commands in a REXX structure using the      */
  917. /* standard way.  You have to use the eval function.  That is,        */
  918. /*                                                                    */
  919. /*     if answer = 'YES' then                                         */
  920. /*        'DEFINE F12 OSNOWAIT shutdown'                              */
  921. /*     else                                                           */
  922. /*        'DEFINE F12 TEXT shutdown'                                  */
  923. /*                                                                    */
  924. /* does not work.  You have to use:                                   */
  925. /*                                                                    */
  926. /*     if answer = 'YES' then                                         */
  927. /*        call eval 'DEFINE F12 OSNOWAIT shutdown'                    */
  928. /*     else                                                           */
  929. /*        call eval 'DEFINE F12 TEXT shutdown'                        */
  930. /*                                                                    */
  931. /* [But it works just fine outside of a structure.]                   */
  932.  
  933.  
  934. /* Note: when a command name is in mixed case, like DEFine below, it  */
  935. /*       means that you can use DEF, DEFI, DEFIN or DEFINE.           */
  936.  
  937. /*                                                                    */
  938. /* There's currently only one "pseudo" command, DEFine, which is most */
  939. /* useful in profile file. Its syntax is as follows:                  */
  940. /*                                                                    */
  941. /*     DEFine key value                                               */
  942. /*                                                                    */
  943. /* Key is a user-defined key or a predefined one:                     */
  944. /*                                                                    */
  945. /*     A-F10, BKSP, CURD, CURL, CURR, CURU, C-CURL, C-CURR, C-END,    */
  946. /*     C-HOME, C-PGDN, C-PGUP, DEL, END, ENTER, ESC, F1, F2, F3, F4,  */
  947. /*     F5, F6, F7, F8, F9, F10, F11, F12, HOME, INS, PGDN, PGUP,      */
  948. /*     SPACE, S-TAB, TAB                                              */
  949. /*                                                                    */
  950. /*     [Shifted keys have a "S-" prefix, control keys have a "C-"     */
  951. /*      prefix and Alt keys have a "A-" prefix.]                      */
  952. /*                                                                    */
  953. /* and value is an internal action or MC nnn, OSNowait nnn or         */
  954. /* TEXT nnn:                                                          */
  955. /*                                                                    */
  956. /*     backmatch, backsp, cdown, cleft, cright, ctrlend, ctrlhome,    */
  957. /*     ctrlleft, ctrlright, cup, del, end, enter, esc, match, home,   */
  958. /*     ins, tab, space, expand                                        */
  959. /*                                                                    */
  960. /*     TEXT nnn simulates the keyboard entry of nnn                   */
  961. /*                                                                    */
  962. /*     OSNowait cmd executes cmd (via the CmdShl interpreter)         */
  963. /*                                                                    */
  964. /*     MC separator cmd1 separator cmd2... allows the usage of more   */
  965. /*     than one command for a key                                     */
  966. /*                                                                    */
  967. /* All other "pseudo" commands are executed via CmdShl's interpreter. */
  968.  
  969. /* [In fact, the DEFine command could have been implemented as an     */
  970. /*  alias:                                                            */
  971. /*                                                                    */
  972. /*     ALIAS DEFINE=RX _args="%*";                                    */
  973. /*                     parse value _args with key rest;               */
  974. /*                     if length(key) > 1 then                        */
  975. /*                        key = value(translate(key,"_","-"));        */
  976. /*                     if rest \= "" then                             */
  977. /*                        call value "key._"c2x(key), rest;           */
  978. /*                     else interpret "drop key._"c2x(key)            */
  979. /*                                                                    */
  980. /*  It is functionally equivalent.]                                   */
  981.  
  982. /* user-defined key name - note the usage of "_" in place of "-" in   */
  983. /*                         the key name (you can't use "-" in a REXX  */
  984. /*                         variable name).                            */
  985. /*                                                                    */
  986. /*                         The value of a key name is the hexadecimal */
  987. /*                         value returned by the getKey function when */
  988. /*                         pressing it (you can use the following     */
  989. /*                         CmdShl command to find it) :               */
  990. /*                                                                    */
  991. /*                         RX call getkey; say "'"substr(ckey,2)"'x"  */
  992.  
  993. /* Note: by default, variables are hidden when inside a getLine call. */
  994. /*       If you want to expose some of them, add them to the global   */
  995. /*       variable -- global = global "newname1 newname2"              */
  996. /*                                                                    */
  997. /*       So, each time you use one of your variable in the right hand */
  998. /*       side of a DEFine command, you have to expose it.             */
  999.  
  1000.  
  1001. S_F7 = '005A'x; C_CURU = '008D'x; C_CURD = '0091'x; C_PADPLUS = '0090'x
  1002.  
  1003. /* defining key value - a shifted key can use "-" or "_" in its name  */
  1004. 'DEFINE F3 OSNOWAIT EXIT'
  1005.  
  1006.  
  1007. /* you can even do complex things:                                    */
  1008. 'DEFINE (  MC /TEXT ()/cleft'
  1009.  
  1010. 'DEFINE F8 OSNOWAIT RX line = insert(date(),line,currOfs); currOfs = currOfs+length(date())'
  1011.  
  1012. 'DEFINE S-F7 osn rx if currTab = 0 then currTab = findcontextcompletion(); if currTab \= 0 then do; say; do i = 1 to tree.0; say tree.i; end; call charout, print(); oline=""; parse value SysCurPos() with origRow origCol .; key="tab"; end'
  1013.  
  1014.  
  1015. /* we can even add a new feature: loading/saving commands history     */
  1016.  
  1017. /* first, we define a file name (and make it public, F7 requires it): */
  1018. history = expand('%tmp%\history.shl'); global = global 'history'
  1019.  
  1020. /* then, an alias, LOADHIST, which loads the commands history         */
  1021. 'ALIAS LOADHIST=RX drop prevLine.; i = 0; do while lines(history); i = i+1; prevLine.i = linein(history); end; prevLine.0 = i; call stream history, "c", "close"'
  1022.  
  1023. /* now, we define three function keys, F2 (save), F5 (load/refresh)   */
  1024. /* and F7 (name)                                                      */
  1025. 'DEFINE F2 OSNOWAIT RX "@del /f" history; do i = 1 to prevLine.0; call lineout history, prevLine.i; end; call stream history, "c", "close"'
  1026. 'DEFINE F5 OSNOWAIT LOADHIST'
  1027. 'DEFINE F7 OSNOWAIT RX call charout ,"1b"x"[s"||"1b"x"[0;0H"||"1b"x"[1;37;42m"||"1b"x"[KNew history name: "; history=getLine(history); call charout ,"1b"x"[0;0H"||"1b"x"[0;34;47m"||"1b"x"[K"helpstring"1b"x"[0m"||"1b"x"[u"'
  1028.  
  1029. /* finally, we load the default history                               */
  1030. 'LOADHIST'
  1031.  
  1032.  
  1033. /* We can even define a screen management system.                     */
  1034. scr.0 = 0; global = global 'scr.'
  1035.  
  1036. 'ALIAS PUSHSCR=RX i = scr.0 + 1; scr.i._C = SysCurPos(); scr.i._P = currOfs origRow origCol; scr.i._L = line; scr.i._S = VioReadCellStr(0,0); scr.i._O = oldDir; scr.i._D = directory(); scr.0 = i'
  1037. 'ALIAS POPSCR=RX i = scr.0; if i > 0 then do; call VioWrtCellStr 0,0,scr.i._S; line = scr.i._L; call SysCurPos word(scr.i._c,1), word(scr.i._c,2); parse var scr.i._P currOfs origRow origCol; oldDir = scr.i._O; call directory scr.i._D; scr.0 = i-1; end'
  1038. 'ALIAS SWAPTMPSCR=RX i = scr.0 + 1; scr.i._C = scr._C; scr.i._P = scr._P; scr.i._L = scr._L; scr.i._S = scr._S; scr.i._O = scr._O; scr.i._D = scr._D; scr.0 = i'
  1039. 'ALIAS SWAPSCR=RX if scr.0 > 0 then do; scr._C = SysCurPos(); scr._P = currOfs origRow origCol; scr._L = line; scr._S = VioReadCellStr(0,0); scr._O = oldDir; scr._D = directory(); call eval "POPSCR & SWAPTMPSCR"; end'
  1040.  
  1041. 'DEFINE C-CURD OSNOWAIT PUSHSCR'
  1042. 'DEFINE C-CURU OSNOWAIT POPSCR'
  1043. 'DEFINE C-PADPLUS OSNOWAIT SWAPSCR'
  1044.  
  1045. /* We redefine C-K to a smarter duplication function.                 */
  1046. 'DEFINE C-K MC /dup/tab'
  1047.  
  1048. /* We define tools to search through command history.                 */
  1049. C_F = '06'x; C_R = '12'x; global = global 'item'; item = ''
  1050. 'DEFINE C-R OSN RX oldLine=currLine;call charout ,"1b"x"[s"||"1b"x"[0;0H"||"1b"x"[1;37;42m"||"1b"x"[KSearch for: "; item=getLine(item); call charout ,"1b"x"[0;0H"||"1b"x"[0;34;47m"||"1b"x"[K"helpstring"1b"x"[0m"||"1b"x"[u";',
  1051.            'if item \= "" then do;prevLine.0=prevLine.0-1;currLine=oldLine-1;if currLine=0 then currLine=prevLine.0;do prevLine.0 while pos(item,prevLine.currLine) = 0;currLine = currLine-1;',
  1052.            'if currLine=0 then currLine=prevLine.0;end;if pos(item,prevLine.currLine) \= 0 then line=prevLine.currLine;currOfs=length(line);xOfs=0;end'
  1053. 'DEFINE C-F OSN RX if item\="" then do; oldCur=currLine;currLine = currLine-1;if currLine = 0 then currLine=prevLine.0;',
  1054.            'do prevLine.0 while pos(item,prevLine.currLine) = 0;currLine = currLine-1;if currLine=0 then currLine=prevLine.0;end;if pos(item,prevLine.currLine) \= 0 then line=prevLine.currLine;currOfs=length(line);xOfs=0; end'
  1055.  
  1056. /* Here, we redefine help messages in French...                       */
  1057. defHelp = "Utilisez la command DEFINE pour (re)d╨Æfinir le r╨úle des touches"nl||,
  1058.           "du clavier."nl||nl||,
  1059.           "SYNTAXE:    DEF touche [valeur]"nl||,
  1060.           "         DEFINE touche [valeur]"nl||nl||,
  1061.           "          touche  Sp╨Æcifie le nom de la touche ╨ò d╨Æfinir."nl||,
  1062.           "          valeur  Valeur affect╨Æe ╨ò la touche. Ce peut ╨ÿtre une"nl||,
  1063.           "                  commande interne, MC xxx, OSNowait yyy ou TEXT zzz."nl||nl||,
  1064.           "Exemples:"nl||,
  1065.           "          DEF F12 TEXT dir /w"nl||,
  1066.           "       DEFINE F3  OSNOWAIT exit"nl||,
  1067.           "          DEF F12"
  1068. aliasHelp = "Utilisez la commande ALIAS pour afficher, d╨Æfinir ou"nl||,
  1069.             "supprimer un alias."nl||nl||,
  1070.             "SYNTAXE: ALIAS [LIST|alias=[cha╨£ne]|@fichier]"nl||nl||,
  1071.             "          LIST     Affiche la liste des alias en cours."nl||,
  1072.             "          alias    Sp╨Æcifie le nom de l'alias."nl||,
  1073.             "          cha╨£ne   Valeur alphanum╨Ærique affect╨Æe ╨ò l'alias."nl||,
  1074.             "          fichier  Nom d'un fichier contenant un ensemble de"nl||,
  1075.             "                   d╨Æfinitions d'alias."nl||nl||,
  1076.             "Dans la d╨Æfinition d'un alias, %* correspond aux param╨Ütres"nl||,
  1077.             "pass╨Æs sur la ligne de commande."
  1078. ruleHelp = "Utilisez la commande RULE pour afficher, d╨Æfinir ou"nl||,
  1079.            "supprimer une r╨Ügle."nl||nl||,
  1080.            "SYNTAXE: RULE [LIST|r╨Ügle=[cha╨£ne]|@fichier]"nl||nl||,
  1081.            "          LIST     Affiche la liste des r╨Ügles en cours."nl||,
  1082.            "          r╨Ügle    Sp╨Æcifie le nom de la r╨Ügle."nl||,
  1083.            "          cha╨£ne   Valeur alphanum╨Ærique affect╨Æe ╨ò la r╨Ügle."nl||,
  1084.            "          fichier  Nom d'un fichier contenant un ensemble de"nl||,
  1085.            "                   d╨Æfinitions de r╨Ügles."nl||nl||,
  1086.            "Dans la d╨Æfinition d'une r╨Ügle, %*, %c, %d, %e, %f, %l, %o et"nl||
  1087.            "%x d╨Ænotent le type des param╨Ütres."
  1088. cmdHelp = "Utilisez la commande CMDSHL pour augmenter les capacit╨Æs de"nl||,
  1089.           "votre interpr╨Æteur de commande."nl||nl||,
  1090.           "SYNTAXE: CMDSHL [/I|/O] [/P profile] [/C cmd|/K cmd]"nl||nl||,
  1091.           "          /I    S╨Ælecte le mode Insertion par d╨Æfaut."nl||,
  1092.           "          /O    S╨Ælecte le mode surfrappe par d╨Æfaut."nl||,
  1093.           "          /P    Utilise le fichier profile sp╨Æcifi╨Æ."nl||,
  1094.           "          /C    Ex╨Æcute la commande cmd et met fin ╨ò l'ex╨Æcution"nl||,
  1095.           "                de CMDSHL."nl||,
  1096.           "          /K    Ex╨Æcute la commande cmd sans mettre fin ╨ò l'ex╨Æcution"nl||,
  1097.           "                de CMDSHL."nl||nl||,
  1098.           "Par d╨Æfaut, le mode Insertion est actif et le fichier PROFILE.SHL"nl||,
  1099.           "est utilis╨Æ comme profile s'il existe sur le chemin sp╨Æcifi╨Æ par"nl||,
  1100.           "la variable d'environnement DPATH."
  1101. cdHelp = "Tapez CD -        Pour retourner au r╨Æpertoire pr╨Æc╨Ædent."nl||,
  1102.          "Tapez CD s1 s2    Pour remplacer s1 par s2 dans le r╨Æpertoire en cours."
  1103. quitHelp = "Utilisez la commande QUIT pour quitter CMDSHL."nl||nl||,
  1104.            "SYNTAXE: QUIT"
  1105.  
  1106.  
  1107. /* useful aliases... from my point of view :-) */
  1108. 'ALIAS rlogin=cls ^& ckermit ^& UTIL\telnet %1.unice.fr ^& cd -'
  1109. 'ALIAS xrn=e:\local\yarn ^& yarn.exe ^& cd -'
  1110. 'ALIAS open=rx xline = "%*"; if xline = "" then xline = directory(); else xline = findcommand(); call SysOpenObject xline,"DEFAULT",1; call SysOpenObject xline,"DEFAULT",1'
  1111. 'ALIAS tc=java TCTypeCheck %*'
  1112. 'ALIAS dir=sdir %*'
  1113. 'ALIAS build=nrc -nocompile %1 ^& javac -d . %1.java ^& del %1.java'
  1114. 'ALIAS netscape=rx url=stream("%1", "c", "query exists"); if url="" then call eval("start netscape.exe %1"); else call eval("start netscape.exe" url)'
  1115. 'ALIAS loop=rx do %*'
  1116. 'ALIAS qd=query date'
  1117. 'ALIAS qt=query time'
  1118. 'ALIAS recurse=rx orgdir=directory(); call SysFileTree "*","dirs.","DSO"; do i=1 to dirs.0; call directory dirs.i; call eval "%1*^&rx needCR=0"; end; call directory orgdir'
  1119. 'ALIAS revmap=rx call SysFileTree "*","dirs.","DSO"; do i=dirs.0 to 1 by -1; call eval "%1*" dirs.i "^&rx needCR=0"; end'
  1120. 'ALIAS map=rx call SysFileTree "*","dirs.","DSO"; do i=1 to dirs.0; call eval "%1*" dirs.i "^&rx needCR=0"; end'
  1121.  
  1122.  
  1123. /* useful rule... from my point of view :-) */
  1124. 'RULE WHENCE=%f %e'
  1125. 'RULE recurse=%x'
  1126.  
  1127. This profile file does the following: 
  1128.  
  1129.      It redefines the '(' key so that it adds the closing ')'; 
  1130.  
  1131.      It defines the F8 key so that it inserts the current date at the cursor 
  1132.       position; 
  1133.  
  1134.      It defines the Shift+F7 key so that it displays all possible completions 
  1135.       for the element preceding the cursor; 
  1136.  
  1137.      It defines a persistent history feature: 
  1138.  
  1139.       The command history is read from/stored in the file whose name is 
  1140.       contained in the 'history' variable (by default %tmp%\history.shl). 
  1141.  
  1142.       F2 is used to store the current command history list to this file. 
  1143.  
  1144.       F5 is used to replace the current history list by the one defined in the 
  1145.       file. 
  1146.  
  1147.       F7 is used to interactively give a new name for the file (to be used by 
  1148.       subsequent F2 or F5 actions). 
  1149.  
  1150.       The default history file is loaded at startup (the 'LOADHIST' 
  1151.       invoquation); 
  1152.  
  1153.      A screen management system is added: 
  1154.  
  1155.       You can save the current "screen" by pressing Ctrl+Down arrow. 
  1156.  
  1157.       You can restore a previously saved "screen" by pressing Ctrl+Up arrow. 
  1158.  
  1159.       You can toggle between the current "screen" and the last previously saved 
  1160.       one by pressing Ctrl+Numpad +.  It allows you to easily switch between 
  1161.       two different "screens". 
  1162.  
  1163.       When more than one "screen" are saved, they are stored in a stack (that 
  1164.       is, the last stored "screen" is the first restored one.) 
  1165.  
  1166.       The "screen" above means the current state (screen layout, currently 
  1167.       edited command, current directory and such).  This feature has been added 
  1168.       to circumvent the 16 OS/2 sessions limit and also because it's much 
  1169.       simpler to press Ctrl+Up/Down arrow than to start or switch to another 
  1170.       session.  On the down side, it does not work from other VIO applications; 
  1171.  
  1172.      It redefines the Ctrl+K key so that it steps to the next completion too, 
  1173.       after duplicating the element preceding the cursor; 
  1174.  
  1175.      It adds tools to search through command history: 
  1176.  
  1177.       Ctrl+R asks (on the top screen line) an item to search, and find (if any) 
  1178.       the first occurence of it in the command history (starting from current 
  1179.       line, and going backward). 
  1180.  
  1181.       Ctrl+F finds (if any) the next occurence (going backward, too). 
  1182.  
  1183.       Those two definitions show another way to add functionality without using 
  1184.       aliases.  It's a bit faster that way but it's also less user-friendly (no 
  1185.       way to easily edit such definitions, ...).  Reserve it for editing 
  1186.       features; 
  1187.  
  1188.      It redefines all CmdShl's messages in French.  You can freely scrap it if 
  1189.       you don't want them, or translate them in your own language (see 
  1190.       CmdShl.cmd for the English version of those messages); 
  1191.  
  1192.      It then defines some aliases: 
  1193.  
  1194.       rlogin is probably useless for you :-) 
  1195.  
  1196.       xrn is used to lauch my newsreader (Yarn/2).  You probably won't use it, 
  1197.       but it shows you how to launch an application which does not resides in 
  1198.       the PATH. 
  1199.  
  1200.       open is used to open the current directory (or the specified argumenty, 
  1201.       either a directory or file) in a window.  The default view is used (as 
  1202.       defined by your current Workplace Shell settings). 
  1203.  
  1204.       tc is again probably of no use :-) 
  1205.  
  1206.       dir overrides the default CMD.EXE's DIR command with the enhanced 
  1207.       SDIR.CMD one.  (SDir is part of MLRXSHL.) 
  1208.  
  1209.       build is, ... yes, you guess it, useless again. 
  1210.  
  1211.       netscape is used so that you can simply enter "netscape index.html" 
  1212.       instead of "netscape file:index.html" which is required by Netscape if 
  1213.       you don't want to receive an error message. If you specify an URL instead 
  1214.       of a file name, it still works, too. 
  1215.  
  1216.       loop allows you to do a command more than once.  Please note that it 
  1217.       requires a REXX syntax.  For example "loop 10; 'mp123 Lillith.mp3'; end" 
  1218.       will play the Lillith song ten times. 
  1219.  
  1220.       [Lillith is a track from Plaid's album "Not For Threes", featuring 
  1221.       Bj╨ñrk.] 
  1222.  
  1223.       qd and qt are simple synonyms for "query date" and "query time", 
  1224.       respectively.  Not that useful if you're not used to use those 
  1225.       two-letters commands to get current date/time; 
  1226.  
  1227.       recurse is used to repeat a command in each subdirectories beneath the 
  1228.       current directory.  The order in which the subdirectories are enumerated 
  1229.       is filesystem-dependant.  The only guarantee is that a child subdirectory 
  1230.       comes after its parent.  The given command is not run on the current 
  1231.       directory. 
  1232.  
  1233.       map and revmap are two commands used to map (i.e., apply) a command over 
  1234.       the list of subdirectories.  The order in which the subdirectories are 
  1235.       enumerated is filesystem-dependant.  The only guarantee is that a 
  1236.       subdirectory comes after its parent for map and before  its parent for 
  1237.       revmap.  The command passed in argument receives one additional 
  1238.       parameter, a full directory name.  That is, if we suppose the current 
  1239.       directory contains two subdirectories, one of which contains another 
  1240.       subdirectory, the following commands would be issued: 
  1241.  
  1242.                map aCommand              --> aCommand x:\curdir\subdir1
  1243.                                              aCommand x:\curdir\subdir2
  1244.                                              aCommand x:\curdir\subdir1\subsubdir1
  1245.                revmap aCommand arg1      --> aCommand arg1 x:\curdir\subdir2
  1246.                                              aCommand arg1 x:\curdir\subdir1\subsubdir1
  1247.                                              aCommand arg1 x:\curdir\subdir1
  1248.  
  1249.       So the following would define a simple "deltree" command: 
  1250.  
  1251.                ALIAS zap=del %1* /n ^& rd %1*
  1252.                ALIAS deltree=revmap zap
  1253.  
  1254.       And the following... 
  1255.  
  1256.                ALIAS tricky=pushd ^& alias _foo=cd ^%1 ^^^& %1* ^& map _foo ^& popd
  1257.  
  1258.       ...is another way to define the recurse alias given above. How it works 
  1259.       is left as an exercise to the reader :-) 
  1260.  
  1261.      It finally defines a rule for the WHENCE command and recurse alias. 
  1262.  
  1263.  
  1264. ΓòÉΓòÉΓòÉ 1.11. CmdShl Internal Functions ΓòÉΓòÉΓòÉ
  1265.  
  1266. This section describes useful CmdShl internal functions.  Please note that 
  1267. theses functions may evolve in future releases. 
  1268.  
  1269. addAlias("alias=[cmd]") 
  1270.  
  1271. The addAlias command adds (or removes) an alias to (from) the alias database. 
  1272.  
  1273. No return value. 
  1274.  
  1275. Examples 
  1276.  
  1277.    call addAlias "foo=cd e:2_X/unix/emacs19.29/info/beta"
  1278.    call addAlias "foo=cd d:/local"
  1279.    call addAlias "foo="
  1280.  
  1281. addRule("rule=[def]") 
  1282.  
  1283. The addRule command adds (or removes) a rule to (from) the rule database. 
  1284.  
  1285. No return value. 
  1286.  
  1287. Examples 
  1288.  
  1289.    call addRule "CD=%d|%f %f|/?|"
  1290.    call addRule "foo=%e %d*"
  1291.    call addRule "foo="
  1292.  
  1293. double(expr) 
  1294.  
  1295. The double function returns expr in which all occurrences of '%' are doubled. 
  1296.  
  1297. Examples 
  1298.  
  1299.    say double('foo bar')         --> 'foo bar'
  1300.    say double('echo %abc%')      --> 'echo %%abc%%'
  1301.    say double(double('5%'))      --> '5%%%%'
  1302.  
  1303. eval(line [,current]) 
  1304.  
  1305. The eval command evaluate its line argument.  The optional current parameter is 
  1306. here to prevent recursive execution of aliases (current is a space-delimited 
  1307. list of alias names). 
  1308.  
  1309. Returns 0 if it evaluates the QUIT command, 1 otherwise. 
  1310.  
  1311. Examples 
  1312.  
  1313.    call eval "FOO"                  If FOO is an alias or an
  1314.                                     external command, it's
  1315.                                     executed.
  1316.  
  1317.    call eval "FOO", "FOO"           If FOO is an external command,
  1318.                                     it's executed.  Error SYS1041
  1319.                                     occurs otherwise.
  1320.  
  1321.    call eval "FOO & BAR", "ZOO BAZ" FOO and BAR will be executed in
  1322.                                     sequence.  If they are alias,
  1323.                                     and if they call ZOO or BAZ
  1324.                                     (either directly or
  1325.                                     indirectly), it's the external
  1326.                                     command ZOO or BAZ which will
  1327.                                     be used.
  1328.  
  1329. expand(string) 
  1330.  
  1331. The expand function returns string where all occurrences of environment 
  1332. variables surrounded by '%' are substituted by their values. 
  1333.  
  1334. Examples 
  1335.  
  1336.    say expand('%tmp%\foo')        --> 'E:\IBMCPP\TMP\foo'
  1337.    say expand('%unknown%')        --> '%unknown%'
  1338.    say expand('%unknown%tmp%')    --> '%unknownE:\IBMCPP\TMP'
  1339.    say expand('100%')             --> '100%'
  1340.  
  1341. findcommand([arg]) 
  1342.  
  1343. The findcommand function returns the expanded command name defined by xline, if 
  1344. any, or '' if xline is not a valid command. 
  1345.  
  1346. If arg is specified, the real command name is returned.  If no arg is used (or 
  1347. if arg is empty) an approximation is returned (in this case, aliases and 
  1348. internal commands take precedence over directories, regardless of the "implied" 
  1349. CD status -- it's faster, because the possible disk access is delayed). 
  1350.  
  1351.      If implied CD is "1", and if xline is a valid directory name somewhere 
  1352.       along the CDPATH environment variable, the complete directory path is 
  1353.       returned; 
  1354.      If xline is a defined alias, it is returned as is; 
  1355.      If xline is an internal command, it is returned as is; 
  1356.      If xline is a fully qualified name, and if the corresponding file exists 
  1357.       (without additional extension, or with one in extList), the fully 
  1358.       qualified name (with its extension) is returned; 
  1359.      If xline is a valid name somewhere along the PATH environment variable 
  1360.       (without additional extension, or with one in extList), the fully 
  1361.       qualified name (with its extension) is returned; 
  1362.      If implied CD is "2", and if xline is a valid directory name somewhere 
  1363.       along the CDPATH environment variable, the complete directory path is 
  1364.       returned. 
  1365.  
  1366.  Examples 
  1367.  
  1368.      xline = "keyb"; say findcommand()   --> 'C:\OS2\keyb.COM'
  1369.      xline = "xyzzy"; say findcommand()  --> ''
  1370.  
  1371.  findcompletion([type]) 
  1372.  
  1373.  The findcompletion function returns 1 if it can find a file name completion 
  1374.  for the element preceding the cursor position, or 0 otherwise. 
  1375.  
  1376.  If successful, tree. contains the possible completions. 
  1377.  
  1378.  If type is specified, only names of the specified type are returned.  The 
  1379.  possible types are 'F' or 'D', for respectively file and directory. 
  1380.  
  1381.  Example 
  1382.  
  1383.      if findcompletion() then
  1384.         do i = 1 to tree.0
  1385.            say tree.i
  1386.         end
  1387.      else
  1388.         say "No match!"
  1389.  
  1390.  findcontextcompletion() 
  1391.  
  1392.  The findcontextcompletion function returns 1 if it can find a completion for 
  1393.  the element preceding the cursor position, or 0 otherwise.  It uses the 
  1394.  context (as defined by rules) to find a completion: 
  1395.  
  1396.      If the element is expected to be a directory name, tree. contains the 
  1397.       possible completions as a directory; 
  1398.      If the element is expected to be an environment variable name, tree. 
  1399.       contains the possible completions as an environment variable; 
  1400.      If the element is expected to a file, a command or a undefined item, 
  1401.       tree. contains the possible completions as either a directory name or 
  1402.       filename; 
  1403.      If something else is expected, 0 is returned and hence the content of 
  1404.       tree. is irrelevant. 
  1405.  
  1406.  Example 
  1407.  
  1408.      if findcontextcompletion() then
  1409.         do i = 1 to tree.0
  1410.            say tree.i
  1411.         end
  1412.      else
  1413.         say "No match!"
  1414.  
  1415.  findcontexttype([cmd]) 
  1416.  
  1417.  The findcontexttype function returns the type of the element preceding the 
  1418.  cursor position (or, if cmd is provided, the cursor is supposed to follow the 
  1419.  last character of cmd).  The returned value is one of:  'a', 'c', 'd', 'e', 
  1420.  'f', '(list)', '' or '0': 
  1421.  
  1422.      If it is 'a', an undefined item is expected.  That is, anything is 
  1423.       allowed at that position; 
  1424.      If it is 'c', a command name is expected; 
  1425.      If it is 'd', a directory name is expected; 
  1426.      If it is 'e', an environment variable name is expected; 
  1427.      If it is 'f', a file name is expected; 
  1428.      If it is '(list)', a file name whose name matches at least one 
  1429.       specification contained in the space- or comma-delimited list is 
  1430.       expected; 
  1431.      If it is '', nothing is expected at that position; 
  1432.      If it is '0', a rule has been defined for the context, but the context 
  1433.       does not match it.  It indicates either a syntax error in the command or 
  1434.       an incorrectly defined rule. 
  1435.  
  1436.  Examples 
  1437.  
  1438.      say findcontexttype('cd')           --> 'c'
  1439.      say findcontexttype('cd ')          --> 'd'
  1440.      say findcontexttype('cd e:')        --> 'd'
  1441.      say findcontexttype('cd e: ')       --> 'f'
  1442.      say findcontexttype('for %i is')    --> '0'
  1443.  
  1444.  If we assume the default rules for the CD and FOR commands, which are '%d|%f 
  1445.  %f|/?|' and '%%%l IN (%*) DO %x'. 
  1446.  
  1447.  findcurrentcommand(cmd) 
  1448.  
  1449.  The findcurrentcommand function returns the command ending cmd.  It does just 
  1450.  return the command, its (possible) arguments aren't.  If the line is empty, an 
  1451.  empty string is returned. 
  1452.  
  1453.  It does not always returns the 'finest' command (for example, in the third 
  1454.  example below, 'for' is returned, not 'del') but it nonetheless returns a 
  1455.  valid one, so that the context can be correctly determined. 
  1456.  
  1457.  This function modifies the xline global variable.  It contains the command 
  1458.  plus its arguments, if any.  (Warning:  the length of xline is correct, but 
  1459.  all opening and closing parents in it are remplaced by spaces.) 
  1460.  
  1461.  Examples 
  1462.  
  1463.      say findcurrentcommand('dir *foo')                          --> 'dir'
  1464.      say xline                                                   --> 'dir *foo'
  1465.      say findcurrentcommand('dir & cd bar')                      --> 'cd'
  1466.      say xline                                                   --> 'cd bar'
  1467.      say findcurrentcommand('for %i in (a b) do del %i')         --> 'for'
  1468.      say xline                                                   --> 'for %i in  a b  do del %i'
  1469.      say findcurrentcommand('for %i in (a b) do (echo %i & del') --> 'del'
  1470.      say xline                                                   --> 'del'
  1471.  
  1472.  findenvcompletion() 
  1473.  
  1474.  The findenvcompletion function returns 1 if it can find an environment 
  1475.  variable completion for the element preceding the cursor position, or 0 
  1476.  otherwise. 
  1477.  
  1478.  If successful, tree. contains the possible completions. 
  1479.  
  1480.  Example 
  1481.  
  1482.      if findenvcompletion() then
  1483.         do i = 1 to tree.0
  1484.            say tree.i
  1485.         end
  1486.      else
  1487.         say "No match!"
  1488.  
  1489.  findmulticompletion(list) 
  1490.  
  1491.  The findmulticompletion function returns 1 if it can find a file name 
  1492.  completion whose name matches at least an element of the space- or 
  1493.  comma-delimited list for the element preceding the cursor position, or 0 
  1494.  otherwise. 
  1495.  
  1496.  If successful, tree. contains the possible completions. 
  1497.  
  1498.  Example 
  1499.  
  1500.      if findmulticompletion('*.exe *.cmd') then
  1501.         do i = 1 to tree.0
  1502.            say tree.i
  1503.         end
  1504.      else
  1505.         say "No match!"
  1506.  
  1507.  getArg(cmd) 
  1508.  
  1509.  The getArg function returns the first argument contained in cmd. An argument 
  1510.  can contain spaces if they are enclosed in quotes. If the first argument of 
  1511.  cmd contains no spaces, getArg is equivalent to word(cmd, 1).  If the first 
  1512.  argument contains an open quote, cmd is returned. 
  1513.  
  1514.  Examples 
  1515.  
  1516.      say getArg('dir /w')                --> 'dir'
  1517.      say getArg('"Desktop archive"')     --> '"Desktop archive"'
  1518.      say getArg('A" "funny" command" !') --> 'A" "funny" command"'
  1519.      say getArg('"Oops ...')             --> '"Oops ...'
  1520.  
  1521.  getFileSpec(cmd) 
  1522.  
  1523.  The getFileSpec function returns the (possibly) partial file name ending cmd. 
  1524.  It also sets the fileOfs variable to point to the first symbol of the file 
  1525.  specification. 
  1526.  
  1527.  Examples 
  1528.  
  1529.      say getFileSpec('dir c:\os2\dll')     -->    c:\os2\dll
  1530.      say getFileSpec('dir "My Desktop"')   -->    "My Desktop"
  1531.  
  1532.  getKey() 
  1533.  
  1534.  This function reads a key from the keyboard, and returns its value, as defined 
  1535.  by the DEFine command.  If the key has not been DEFined, the key itself is 
  1536.  returned. 
  1537.  
  1538.  As a side effect, the ckey value is set to the internal representation of the 
  1539.  key (a "_" followed by 2 to 4 hexadecimal digits). 
  1540.  
  1541.  Examples 
  1542.  
  1543.      say getKey()      --> F3      --> OSNOWAIT EXIT  (ckey is _003D)
  1544.      say getKey()      --> a       --> a              (ckey is _61)
  1545.  
  1546.  getLine([line]) 
  1547.  
  1548.  This function reads an entry from the user, and returns it.  It can be a 
  1549.  multi-line entry.  All currently defined editing keys can be used.  If line is 
  1550.  specified, it's the default value. 
  1551.  
  1552.  Warning: getLine can be used recursively, but the command history is shared 
  1553.  among all calls. 
  1554.  
  1555.  halt() 
  1556.  
  1557.  This function is called when an alias execution is interrupted by the user (by 
  1558.  using either Ctrl+C or Ctrl+Break). 
  1559.  
  1560.  Its default action is to stop the execution of the command, switch to the 
  1561.  orgdir directory (if defined) and resume execution of the command interpreter. 
  1562.  
  1563.  mark() 
  1564.  
  1565.  This function handles mark management.  It is used to remove or copy mark, and 
  1566.  to mark word/elements.  It sets the following variables: markLen, markOfs and 
  1567.  markLine. 
  1568.  
  1569.  This function has no argument, but it uses the second word of the key variable 
  1570.  ("word", "char", "clear", "delete", "move" or "copy"). It can only be used 
  1571.  while in editing mode. 
  1572.  
  1573.  print() 
  1574.  
  1575.  This function returns the string corresponding to the current prompt (as 
  1576.  defined by the CMDSHL.PROMPT.environment (or CMDSHL.PROMPT or PROMPT) 
  1577.  environment variable, if any).  It can then be displayed by charout. 
  1578.  
  1579.  Example 
  1580.  
  1581.      call charout, print()
  1582.  
  1583.  profile() 
  1584.  
  1585.  This procedure read a profile file from disk, and interpret it. The real file 
  1586.  name is derived from the profileName variable (if it's not an absolute path, 
  1587.  it is searched via DPATH). 
  1588.  
  1589.  No return value. 
  1590.  
  1591.  [This procedure can be used to execute 'enhanced' command scripts, that is, 
  1592.  command script calling CmdShl-specific commands -- but keep in mind that 
  1593.  CmdShl profiles suffer some syntax restrictions.] 
  1594.  
  1595.  Examples 
  1596.  
  1597.      profileName = 'D:\tmp\foo.cmd'; call profile
  1598.      'ALIAS EXEC=RX profileName = SysSearchPath('PATH',"%*"); call profile'
  1599.  
  1600.  profilesyntax() 
  1601.  
  1602.  This procedure is called when a syntax error is detected in the profile file. 
  1603.  It displays the offending file and line number, as well as the error message. 
  1604.  Interpretation of the profile is aborted, but the execution of CmdShl 
  1605.  continues. 
  1606.  
  1607.  substitute(line, arg) 
  1608.  
  1609.  This function returns line, where all occurrences of %[n]* or %n (if any) have 
  1610.  been replaced with the nth word of arg (or the nth word of arg and all 
  1611.  following word if n is followed by *). 
  1612.  
  1613.  Examples 
  1614.  
  1615.      say substitute("bla bla", "xxx")           --> bla bla
  1616.      say substitute("it's %1 (%2)", "yyy zzz")  --> it's yyy (zzz)
  1617.      say substitute("%1 (%2*)", "x y z")        --> x (y z)
  1618.  
  1619.  
  1620. ΓòÉΓòÉΓòÉ 1.12. CmdShl Internal Variables ΓòÉΓòÉΓòÉ
  1621.  
  1622. This section describes useful CmdShl internal variables.  Please note that 
  1623. theses variables may evolve in future releases. 
  1624.  
  1625. aliasHelp [string] 
  1626.  
  1627. What to display when the 'ALIAS /?'  command is issued.  You can translate this 
  1628. message (the recommended place to do so is in your PROFILE.SHL). 
  1629.  
  1630. aliasNames [string] 
  1631.  
  1632. A space-delimited list of name (case is sensitive) which enumerates all defined 
  1633. aliases.  This list is maintained automatically by the ALIAS command, but you 
  1634. can use it to check the existence of an alias, or ... 
  1635.  
  1636. Example 
  1637.  
  1638.    'ALIAS EXISTS?=RX if wordpos('%*',aliasNames) > 0 then say YES;
  1639.                                                      else say NO'
  1640.  
  1641. aliasStem. [stem] 
  1642.  
  1643. The aliases definitions. 
  1644.  
  1645. cdHelp [string] 
  1646.  
  1647. What to display in addition to the default 'CD /?'  output (in fact, a 
  1648. description of the 'CD -' and 'CD path1 path2' commands).  You can translate 
  1649. this message (the recommended place to do so is in your PROFILE.SHL) 
  1650.  
  1651. cmdHelp [string] 
  1652.  
  1653. What to display when the 'CMDSHL /?'  command is issued.  You can translate 
  1654. this message (the recommended place to do so is in your PROFILE.SHL). 
  1655.  
  1656. cmdList [string] 
  1657.  
  1658. The list of all internal command interpreter commands, in uppercase (that is, 
  1659. CD, DIR, etc.).  Used when command validation is enabled. 
  1660.  
  1661. cmdQueue [0|1] 
  1662.  
  1663. The history-list behavior.  Can be 0 or 1 (the default).  If cmdQueue is 1, a 
  1664. recalled command is moved to the end of the history list; otherwise, it remains 
  1665. in place. 
  1666.  
  1667. [the default behavior mimics the CMD.EXE behavior.] 
  1668.  
  1669. defHelp [string] 
  1670.  
  1671. What to display when the 'DEFine /?'  command is issued.  You can translate 
  1672. this message (the recommended place to do so is in your PROFILE.SHL). 
  1673.  
  1674. extList [string] 
  1675.  
  1676. The extensions to be tried by the findcommand function.  Its value is 'exe cmd 
  1677. bat com' by default. 
  1678.  
  1679. fileOfs [number] 
  1680.  
  1681. The position of the first symbol of the last file name specification queried by 
  1682. getFileSpec. 
  1683.  
  1684. fileSeparator [string] 
  1685.  
  1686. When trying to find a file name, where to stop.  Used by filename completion. 
  1687. Its value is ' =;<>|()&' by default. 
  1688.  
  1689. helpColor1, helpColor2 [strings] 
  1690.  
  1691. helpColor1 contains the ANSI escape sequence to use at the beginning of the 
  1692. (optional) top line help string, and helpColor2 contains the ANSI escape 
  1693. sequence to use at the end of this string. Theses two strings should not move 
  1694. the cursor or ...  They should only change the color attribute.  Their default 
  1695. values is: 
  1696.  
  1697.    helpColor1='1b'x'[34;47m'    -- blue on white background
  1698.    helpColor2='1b'x'[0m'        -- default color
  1699.  
  1700. helpSwitches [string] 
  1701.  
  1702. helpSwitches contains the list of blank-separated switches used to obtain help 
  1703. from an internal command.  Its value is '/?' by default. 
  1704.  
  1705. For example, if you come from an UNIX background, you may be used to type '-h' 
  1706. to get help.  Changing helpSwitches to be '/? -h' will then suits your habits. 
  1707.  
  1708. See HELP.COMMAND and HELP.SWITCHES for more details on how to define an 
  1709. optional help subsystem.  (If you redefine helpSwitches in your PROFILE.SHL, 
  1710. this redefinition will take precedence over the HELP.SWITCHES environment 
  1711. variable.) 
  1712.  
  1713. impCD [0|1|2] 
  1714.  
  1715. The " implied CD" (aka "executable" directories) state (1 by default, can be 
  1716. overridden in your PROFILE.SHL). 
  1717.  
  1718. If impCD is 0, the "implied CD" feature is disabled.  When impCD is 1, a 
  1719. directory name takes precedence over a possible command with no arguments. 
  1720. When impCD is 2, a command with no arguments takes precedence over a directory 
  1721. name. 
  1722.  
  1723. To explain the difference between the 1 and 2 values, lets assume the following 
  1724. command was entered: 
  1725.  
  1726.    help
  1727.  
  1728. If impCD is 1, and if there exists a directory named HELP accessible via the 
  1729. CDPATH environment variable, the current directory will be changed to it. 
  1730. Otherwise, the "\OS2\HELP.CMD" command is executed. 
  1731.  
  1732. If impCD is 2, the "\OS2\HELP.CMD" command is executed, regardless of the 
  1733. presence of a possible HELP directory accessible via the CDPATH environment 
  1734. variable.  (You can naturally still reach it by issuing "help/" or "help\" or 
  1735. "cd help".) 
  1736.  
  1737. insertMode. [stem] 
  1738.  
  1739. How to display the cursor in insert/overwrite mode (by default, '-80 -90', i.e. 
  1740. a low bar, and '0 -90', i.e. a plain box). 
  1741.  
  1742.    insertMode.1 = '-80 -90'
  1743.    insertMode.0 = '0 -90'
  1744.  
  1745. Note:  The two numbers for each state are the horizontal scan lines that mark 
  1746.        the top and bottom of the cursor.  0 is the top scan line, and n-1 is 
  1747.        the bottom one (where n is the scan lines in the character cell -- it 
  1748.        cannot exceeds 32). 
  1749.  
  1750. To set start line and end line independent of the number of scan lines for each 
  1751. character cell, you may specify these parameters as percentages.  OS/2 then 
  1752. calculates the physical start and end scan lines, respectively, by multiplying 
  1753. the percentage specified for the parameter by the total number of scan lines in 
  1754. the character cell and rounding to the nearest scan line.  Percentages are 
  1755. specified as negative values (or 0) in the range 0 through -100.  Specifying 
  1756. start line = -90 and end line = -100 requests a cursor that occupies the bottom 
  1757. 10 percent of the character cell. 
  1758.  
  1759.  insertState [0|1] 
  1760.  
  1761.  The default insertion state (1 by default, can be overridden via CmdShl's /O 
  1762.  switch).  Each time you start to edit a new command, the insertion state is 
  1763.  reset to insertState value (when editing a command, you can change the 
  1764.  insertion state by using the Ins key -- by default, but theses changes are 
  1765.  local). 
  1766.  
  1767.  invalidCmd [string] 
  1768.  
  1769.  What to interpret when an invalid command is found on the command line.  In 
  1770.  addition to the usual editing variables, xlen contains the position of the 
  1771.  first symbol of the offending command and xline is the offending command. 
  1772.  invalidCmd default's value is 
  1773.  
  1774.      invalidCmd = "call VioWrtNAttr origRow + xlen % col, xlen // col, length(xline), 12;",
  1775.                   "xOfs = currOfs+1"
  1776.  
  1777.  [That is, it displays the offending command in red.] 
  1778.  
  1779.  _LEVEL_ [number] 
  1780.  
  1781.  The current recursion level of the eval command. 
  1782.  
  1783.  oldDir [string] 
  1784.  
  1785.  The previously visited directory.  This variable is maintained by CmdShl's CD 
  1786.  command. 
  1787.  
  1788.  prevLine. [stem] 
  1789.  
  1790.  The commands history list.  prevLine.0 contains the history size. 
  1791.  
  1792.  profileName [string] 
  1793.  
  1794.  The file name to be used by the profile() internal function. 
  1795.  
  1796.  quitHelp [string] 
  1797.  
  1798.  What to display when the ' QUIT /?'  command is issued.  You can translate 
  1799.  this message (the recommended place to do so is in your PROFILE.SHL). 
  1800.  
  1801.  rules. [stem] 
  1802.  
  1803.  The rules definitions. 
  1804.  
  1805.  rulesList [string] 
  1806.  
  1807.  A space-delimited list of name (case is sensitive) which enumerates all 
  1808.  defined rules.  This list is maintained automatically by the RULE command, but 
  1809.  you can use it to check the existence of a rule, or ... 
  1810.  
  1811.  Example 
  1812.  
  1813.      'ALIAS SHOWRULE=RX if wordpos('%*',rulesList) > 0 then say rules.%*;
  1814.                                                        else say "(undefined)"'
  1815.  
  1816.  shlList [string] 
  1817.  
  1818.  The list of enabled CmdShl internal commands (in uppercase).  Used when 
  1819.  command validation is enabled. 
  1820.  
  1821.  
  1822. ΓòÉΓòÉΓòÉ 1.13. CmdShl Editing Variables ΓòÉΓòÉΓòÉ
  1823.  
  1824. This section describes the variables which can be used while editing a command 
  1825. (that is, only usable when used in a key definition). 
  1826.  
  1827. col [number] 
  1828.  
  1829. The current screen width. 
  1830.  
  1831. currOfs [number] 
  1832.  
  1833. The current cursor position in the command (first char is at currOfs 1). 
  1834.  
  1835. currTab [number] 
  1836.  
  1837. If not null, we are in filename completion mode.  If null, we're not (or, no 
  1838. longer).  The "tab" and "backtab" internal actions enter completion mode.  ALL 
  1839. OTHER internal actions exit completion mode.  If you want to remain in 
  1840. completion mode after having used another action, add the following code after 
  1841. your action definition: 
  1842.  
  1843.    key = "tab"
  1844.  
  1845. key [string] 
  1846.  
  1847. The internal action name being executed (see currTab for an important note). 
  1848.  
  1849. line [string] 
  1850.  
  1851. The line being edited. 
  1852.  
  1853. markLine [number] 
  1854. markLen [number] 
  1855. markOfs [number] 
  1856.  
  1857. The position and length of the mark.  if markLen is null, there's no mark. 
  1858.  
  1859. oline [string] 
  1860.  
  1861. The edited line before its last modification. 
  1862.  
  1863. origCol [number] 
  1864. origRow [number] 
  1865.  
  1866. The initial cursor position (that is to say, where the cursor was just after 
  1867. displaying the prompt). 
  1868.  
  1869. row [number] 
  1870.  
  1871. The current screen height. 
  1872.  
  1873. tree. [stem] 
  1874.  
  1875. If tree.0 is not null, the stem contains the matching file names. 
  1876.  
  1877.  
  1878. ΓòÉΓòÉΓòÉ 1.14. History ΓòÉΓòÉΓòÉ
  1879.  
  1880.  WARNING:  This product does work well with Object REXX as included
  1881.            in DEVCON 10 or higher.  It does not work well with the one
  1882.            included in DEVCON 8/9.
  1883.  
  1884.  
  1885. 1.30.000    Dec 22 1997
  1886.  
  1887.  --- New feature:
  1888.      o %(list) implemented in rules.
  1889.  --- Misc. change:
  1890.      o Default rule provided for CHDIR.
  1891.  
  1892. 1.29.000    Dec 21 1997
  1893.  
  1894.  --- New features:
  1895.      o better error handling in profiles.
  1896.      o halt procedure added for use in aliases.
  1897.  
  1898. 1.28.000    Dec 09 1997
  1899.  
  1900.  --- New feature:
  1901.      o Optional external help subsystem added (use HELP.COMMAND and
  1902.        HELP.SWITCHES if defined).
  1903.  
  1904. 1.27.000    Nov 27 1997
  1905.  
  1906.  --- Bug fix:
  1907.      o CD sets RC when called (either directly or indirectly).
  1908.  
  1909. 1.26.000    Nov 25 1997
  1910.  
  1911.  --- Bug fix:
  1912.      o findcontexttype abend when called with an argument.
  1913.  --- Misc. changes:
  1914.      o Using CMDSHL.PROMPT instead of CMDSHLPROMPT.
  1915.      o Case sensitiveness added to rule names.
  1916.  --- New feature:
  1917.      o Added command-handler-dependant prompts (CMDSHL.PROMPT.*).
  1918.  
  1919. 1.25.000    Nov 19 1997
  1920.  
  1921.  [Those changes were made to unify CmdShl with Ulrich M╨ñller's CommandPak.]
  1922.  
  1923.  --- Misc. changes:
  1924.      o The priority of implicit CDs is now user-definable (that is,
  1925.        it can now preempt or not a command with no argument).
  1926.      o User-definable help switch (helpSwitches) so that internal
  1927.        commands can use -h or whatever the user expects for obtaining
  1928.        help.
  1929.      o quitHelp added to describe QUIT usage.
  1930.      o SHELL allowed as OSNowait synonym.
  1931.  --- New feature:
  1932.      o If a CMDSHLPROMPT environment variable is defined, it is used
  1933.        in place of PROMPT.
  1934.  
  1935. 1.24.000    Nov 15 1997
  1936.  
  1937.  --- Misc. change:
  1938.      o "expand" also uses rules.  So commands are expanded even when
  1939.        they are not in first position.
  1940.  
  1941. 1.23.000    Nov 07 1997
  1942.  
  1943.  --- Bug fix:
  1944.      o %c in findcontexttype was not initializing xline correctly
  1945.        (the current context was flaged as incorrect, not just the
  1946.        offending command).
  1947.  
  1948. 1.22.000    Nov 06 1997
  1949.  
  1950.  --- Bug fixes:
  1951.      o findcurrentcommand was returning incorrect result when command
  1952.        was either START or DETACH.
  1953.      o file was not cleared in findenvcompletion.
  1954.  --- Misc. changes:
  1955.      o %o implemented in rules.
  1956.      o "space" uses rules, too.
  1957.  
  1958. 1.21.000    Nov 03 1997
  1959.  
  1960.  --- Bug fix:
  1961.      o Environment variable in commands were incorrectly handled.
  1962.  --- Misc. change:
  1963.      o "expand" now also expands rules.
  1964.  
  1965. 1.20.000    Nov 02 1997
  1966.  
  1967.  --- Misc. changes:
  1968.      o '*' allowed in rules definition to denote repetition.
  1969.      o Default rules provided for RD and RMDIR.
  1970.  
  1971. 1.19.000    Oct 31 1997
  1972.  
  1973.  --- Bug fix:
  1974.      o RC is now a public variable.
  1975.  --- New features:
  1976.      o Enhanced rules definition.
  1977.      o Default rule provided for FOR.
  1978.  
  1979. 1.18.000    Oct 23 1997
  1980.  
  1981.  --- New features:
  1982.      o RULE command added.
  1983.      o Default rules provided for START, DETACH, CD and SET.
  1984.  
  1985. 1.17.000    Oct 22 1997
  1986.  
  1987.  --- New features:
  1988.      o Completion also completes environment variable name if the
  1989.        current command is 'SET'.
  1990.      o Rules (partialy) implemented to help providing smart
  1991.        completion and command checking.
  1992.  --- Misc. change:
  1993.      o Enhancing command detection algorithm.
  1994.  
  1995. 1.16.000    Jun 17 1997
  1996.  
  1997.  --- New feature:
  1998.      o A "dup" internal action added.
  1999.  
  2000. 1.15.000    Jun 10 1997
  2001.  
  2002.  --- Bug fix:
  2003.      o Quoted elements now supported in path substitution.
  2004.  
  2005. 1.14.000    Jun 03 1997
  2006.  
  2007.  --- Bug fixes:
  2008.      o Quoted command and directory names now correctly handled.
  2009.      o Multiple commands in "/c" and "/k" correctly handled when
  2010.        specified in quotes.
  2011.      o Incorrect display if cursor is on lower right corner and
  2012.        spacebar is pressed.
  2013.  
  2014. 1.13.000    Mar 13 1997
  2015.  
  2016.  --- Bug fix:
  2017.      o interactive was not initialised when using the "/k" switch.
  2018.  
  2019. 1.12.000    Oct 07 1996
  2020.  
  2021.  --- Bug fix:
  2022.      o OSNowait now accepts quoted '&'.
  2023.  
  2024. 1.11.000    Sep 28 1996
  2025.  
  2026.  --- Bug fix:
  2027.      o xOfs reseted by "esc", "match", "backmatch", "cup" and "cdown".
  2028.  --- Misc. changes:
  2029.      o Removed "STDOUT:" statements.
  2030.      o "space" now understands START and DETACH.
  2031.  
  2032. 1.10.000    Sep 16 1996
  2033.  
  2034.  --- Bug fixes:
  2035.      o '%' handled correctly in command name and arguments.
  2036.      o Filenames with '(' or ')' correctly handled during filename
  2037.        completion.
  2038.      o CD no longer overrides oldDir if not relevant.
  2039.  --- Misc. changes:
  2040.      o Enhancing CD with path substitution.
  2041.  
  2042. 1.09.000    Sep 13 1996
  2043.  
  2044.  --- Misc. changes:
  2045.      o Speeding up filename completion.
  2046.      o Speeding up command line display.
  2047.  
  2048. 1.08.000    Sep 12 1996
  2049.  
  2050.  --- Bug fixes:
  2051.      o "PROMPT" added in the CMD internal command list.
  2052.      o Fully qualidied directory path correctly recognized as
  2053.        a valid command when implicit CD is enabled.
  2054.      o Unit specification correctly recognized as a valid command.
  2055.  --- Misc. change:
  2056.      o '/' or '\' allowed at the end of directories names during CD
  2057.        (either implicit or explicit).
  2058.  
  2059. 1.07.000    May 23 1996
  2060.  
  2061.  --- Bug fixes:
  2062.      o '&' added to fileSeparator.
  2063.      o "space" handles stream redirections ('>&') correctly.
  2064.      o "expand" was duplicating command name when there was only spaces
  2065.        between cursor and command name.
  2066.      o '&&' correctly handled.
  2067.  --- Misc. change:
  2068.      o findcommand speed optimized when checking aliases and internal
  2069.        commands.
  2070.  
  2071. 1.06.000    Apr 29 1996
  2072.  
  2073.  --- Misc. changes:
  2074.      o Displaying helpString is a bit faster now.
  2075.      o Removing the unused assignment to line in loop:.
  2076.      o Executable filename extensions are stored in extList instead of
  2077.        beeing hardcoded.
  2078.  
  2079. 1.05.000    Apr 19 1996
  2080.  
  2081.  --- Bug fixes:
  2082.      o Fully qualified directory specifications recognized by findcommand
  2083.        (and hence by on the fly command checking).
  2084.      o The eval function is now safely recursive.
  2085.  --- New feature:
  2086.      o A new "backmatch" command.
  2087.  
  2088. 1.04.000    Mar 26 1996
  2089.  
  2090.  --- Bug fix:
  2091.      o Stream redirection (i.e., things like 2>&1) handled correctly.
  2092.  
  2093. 1.03.000    Mar 07 1996
  2094.  
  2095.  --- New features:
  2096.      o A new key-related function, MC.
  2097.      o "expand" now also expands aliases.
  2098.      o "mark move" and "mark delete" have been added (if the mark is
  2099.        not on current line, "mark move" do a copy, and "mark delete"
  2100.        do nothing).
  2101.  
  2102. 1.02.000    Mar 05 1996
  2103.  
  2104.  --- New feature:
  2105.      o The "expand" internal action also expands command name (with
  2106.        its path and extension, if applicable).
  2107.  --- Buf fixes:
  2108.      o getFileSpec failed if first char was '"' in arg(1) and there was
  2109.        an odd number of '"'.
  2110.      o A fully qualified path was incorrectly flagged as being an
  2111.        invalid command.
  2112.  --- Misc. changes:
  2113.      o RexxVIO is now required (was optional since 0.98.000).
  2114.      o "f1" internal action now called "match".
  2115.  
  2116. 1.01.000    Mar 04 1996
  2117.  
  2118.  --- New features:
  2119.      o A new "expand" internal action (bound to C_X by default).
  2120.      o Command line copy/paste added (mark char|clear|copy|word).
  2121.  
  2122. 1.00.000    Feb 22 1996
  2123.  
  2124.  --- New feature:
  2125.      o File name completion understands environment variables.
  2126.  
  2127. 0.99.000    Feb 19 1996
  2128.  
  2129.  --- Bug fixes:
  2130.      o Re-enabling environment variable substitution in 'CD' commands.
  2131.      o Command line checking now handles fully qualified commands.
  2132.  --- New feature:
  2133.      o User-definable file separator (fileSeparator, ' =;<>|()' by
  2134.        default).
  2135.  
  2136. 0.98.000    Feb 15 1996
  2137.  
  2138.  --- New feature:
  2139.      o If RexxVIO is present, cursor reflects insert state (insertMode,
  2140.        overwriteMode).
  2141.  
  2142. 0.97.000    Feb 02 1996
  2143.  
  2144.  --- Bug fixes:
  2145.      o Incorrect alias handling when no substitution was required.
  2146.      o Blank lines no longer emitted while processing profile file.
  2147.      o helpColor1 and helpColor2 are now public.
  2148.  --- New feature:
  2149.      o backtab added.
  2150.  
  2151. 0.96.000    Nov 15 1995
  2152.  
  2153.  --- Bug fixes:
  2154.      o Command line checking now handles correctly quoted "&" and "|".
  2155.      o Quoted "&" and "|" are now correctly handled when defining an
  2156.        alias from the command prompt.
  2157.  --- New features:
  2158.      o Command line checking now uses a user-defined function to warn
  2159.        the user (so, if you prefer an audible clue, you can define it)
  2160.        (invalidCmd).
  2161.      o The help line color is user-definable (helpColor1, helpColor2).
  2162.  
  2163. 0.95.000    Oct 18 1995
  2164.  
  2165.  --- New features:
  2166.      o CmdShl internal commands can be enabled/disabled.
  2167.      o Enhanced ALIAS substitution parameters (%[0-9]?[*]).
  2168.  
  2169. 0.94.000    Oct 12 1995
  2170.  
  2171.  --- Bug fix:
  2172.      o CMD.EXE quoting symbol (^) is now correctly handled.
  2173.  
  2174. 0.93.000    Oct 11 1995
  2175.  
  2176.  --- Bug fixes:
  2177.      o Command line checking handles '|', '(' and ')'  correctly.
  2178.      o DEFINE no longer crashes if its first parameter is invalid.
  2179.      o "CD -" now works with implicit CDs.
  2180.  --- New features:
  2181.      o Improved command line parsing (strings and subexpressions are
  2182.        now recognized).
  2183.      o Speed improvement when using CMD.EXE internal commands.
  2184.  
  2185. 0.92.000    Oct 06 1995
  2186.  
  2187.  --- New features:
  2188.      o Implicit "CD" feature is now optional (impCD).
  2189.      o Optional command line checking (if a command is nonexistent, its
  2190.        name is highlighted).
  2191.      o Faster screen updates.
  2192.  
  2193. 0.91.000    Aug 08 1995
  2194.  
  2195.  --- Bug fixes:
  2196.      o Default messages are now in English.
  2197.      o Newline no longer automatically emitted after a RX command.
  2198.  --- New commands:
  2199.      o A new DEFINE internal command.
  2200.      o And two new key-related functions, TEXT and OSNOWAIT.
  2201.  --- New features:
  2202.      o An improved profile interpreter (multi-lines, REXX expression
  2203.        allowed in external commands).
  2204.      o getLine can be called recursively.
  2205.      o Interesting internal functions have been documented.
  2206.      o Some key names have been defined (for use with the DEFINE
  2207.        command).
  2208.  
  2209. 0.90.000    Jul 27 1995
  2210.  
  2211.  --- First public release
  2212.  
  2213.  
  2214. ΓòÉΓòÉΓòÉ 2. Filelist User's Guide ΓòÉΓòÉΓòÉ
  2215.  
  2216.      What's That? 
  2217.      Installation 
  2218.      Starting Filelist 
  2219.      Screen Description 
  2220.      Available Commands 
  2221.      Profile Support 
  2222.      History 
  2223.  
  2224.  
  2225. ΓòÉΓòÉΓòÉ 2.1. What's That? ΓòÉΓòÉΓòÉ
  2226.  
  2227. Fl is yet another character-mode directory browser.  It's just a REXX script, 
  2228. but it's nonetheless very easy to use.  You just have to "annotate" the files 
  2229. you want to apply a command to with the desired command. 
  2230.  
  2231. Suppose you want to print the 8514.RC file.  Just move the cursor over the 
  2232. corresponding line, and enter "PRINT" (without quotes!).  The command will 
  2233. appear in the prefix command (the area filled with "="s). You will have to 
  2234. press the Enter key to execute it (in fact, the Enter key executes all pending 
  2235. commands -- that is, you can prepare more than one command, and execute them in 
  2236. one step.) 
  2237.  
  2238. If, in the previous example, you've wanted to print out the 8514.RC file while 
  2239. renaming ATTRIB.EXE to, say, SETATTR.EXE, you would have had to enter the 
  2240. "PRINT" command over the 8514.RC line and the "REN / SETATTR.EXE" one over the 
  2241. ATTRIB.EXE line.  And then, pressing the Enter key in the main screen area 
  2242. would have executed theses two commands sequentially (that is, from top to 
  2243. bottom). 
  2244.  
  2245. You can also use (and redefine) function keys to execute frequently used 
  2246. commands (such as browsing a file, or copying it to another disk...). 
  2247.  
  2248. All colors and keys are redefinable.  If you like the XEDIT look, you can use 
  2249. the provided PROFILE.FL: 
  2250.  
  2251. You can open more than one directory at a time, sort them, or use a restricted 
  2252. view (eg, *.EXE and *.CMD files only). 
  2253.  
  2254.  
  2255. ΓòÉΓòÉΓòÉ 2.2. Installation ΓòÉΓòÉΓòÉ
  2256.  
  2257. Installing Fl is very simple:  just copy FL.CMD somewhere along your PATH, 
  2258. REXXVIO.DLL somewhere along your LIBPATH and, if you want to use a profile 
  2259. file, customize PROFILE.FL and move it somewhere along your DPATH. 
  2260.  
  2261. If REXXVIO.DLL is currently in use, close ALL your OS/2 windowed or fullscreen 
  2262. sessions, and open a bare OS/2 windowed session (that is, one not starting 
  2263. CmdShl or Fl).  You can then replace REXXVIO.DLL from this session. 
  2264.  
  2265. If you were using a previous version of MLRXSHL, execute the following code 
  2266. from an OS/2 command prompt, to allow the new functions defined in REXXVIO to 
  2267. be registered: 
  2268.  
  2269.    rexxtry call VioDropFuncs
  2270.  
  2271.  
  2272. ΓòÉΓòÉΓòÉ 2.3. Starting Filelist ΓòÉΓòÉΓòÉ
  2273.  
  2274. Syntax 
  2275.  
  2276.    fl [filespec] [([tree|sort[d|a] name|ext|size|date [...]]]
  2277.  
  2278. Parameters 
  2279.  
  2280.    (Noprofile        -  Do not use a profile file;
  2281.    (Profile file     -  Use the specified profile file;
  2282.    (Sort[d|a] opt    -  Sort the entries by opt;
  2283.    (Wide             -  Display more than one file per line;
  2284.    (Tree             -  Recursively include subdirectories.
  2285.  
  2286. Examples 
  2287.  
  2288.    fl c:\os2 (sort name
  2289.    fl *.cmd
  2290.    fl
  2291.  
  2292.  
  2293. ΓòÉΓòÉΓòÉ 2.4. Screen Description ΓòÉΓòÉΓòÉ
  2294.  
  2295. The Fl screen is composed of four parts.  The first line is the info area.  It 
  2296. is followed by the main area.  The penultimate line is the command area, while 
  2297. the last line is the key/message area. 
  2298.  
  2299. The Info Area 
  2300.  
  2301. It contains the directory name, the available space in the corresponding disk, 
  2302. and the current file # and file count. 
  2303.  
  2304. The Main Area 
  2305.  
  2306. This area is composed of two sub-areas.  The first one is the prefix area. 
  2307. It's by default filled with "="s.  You can replace them with line number, by 
  2308. issuing the "SET NUM ON" command in the command area.  The second one contains 
  2309. the file's information; that is, file date, file time, file size and file name. 
  2310.  
  2311. The Command Area 
  2312.  
  2313. Use this area to enter non-file related commands (such as, say, PSTAT, SET NUM 
  2314. ...  or RESET PREFIX).  The number surrounded by square brackets is the current 
  2315. view number (1 for the first opened directory, 2 for the second, ...). 
  2316.  
  2317. The Key/Message Area 
  2318.  
  2319. This area usually displays function keys labels.  If an error occurs, it will 
  2320. temporarily display an error message. 
  2321.  
  2322.  
  2323. ΓòÉΓòÉΓòÉ 2.5. Available Commands ΓòÉΓòÉΓòÉ
  2324.  
  2325. When entering commands in the main area, you can use the following shortcuts: 
  2326.  
  2327.    /     =     The whole file name (drive+path+name+ext);
  2328.    /n    =     The file name;
  2329.    /e,/t =     The file extension (or "type");
  2330.    /p    =     The file path;
  2331.    /d,/m =     The file drive (or "mode");
  2332.    /o    =     Nothing;
  2333.    //    =     A "/" symbol;
  2334.    "     =     Repeat the previously defined command.
  2335.  
  2336. If you enter a main area command without at least one of the above shortcuts, 
  2337. the complete file name will be added at the end of the command (so, use the 
  2338. "/o" shortcut if you do not want to pass the file name to the command). 
  2339.  
  2340. For command area commands, these shortcuts refer to the current file. 
  2341. Additionally, the complete file name is NOT appended by default. 
  2342.  
  2343. The following commands are also available in addition to all standard internal 
  2344. or external commands: 
  2345.  
  2346.      BAckward [n|*] 
  2347.      BOTtom 
  2348.      CCancel 
  2349.      DEFine keyname [command [args]] 
  2350.      DOS [command] 
  2351.      DOSNowait command 
  2352.      Down [n|*] 
  2353.      Edit [dir or file name] 
  2354.      FList [dir or file name] 
  2355.      FOrward [n] 
  2356.      HELP 
  2357.      Next [n|*] 
  2358.      NEXTWindow 
  2359.      OS [command] 
  2360.      OSNowait command 
  2361.      QUIT 
  2362.      RESet ALL|PREfix 
  2363.      RUN [command] 
  2364.      SET CASE Mixed|Upper|Lower 
  2365.      SET COLO[U]R [modifier [...]] [foreground [background]] 
  2366.      SET CURLine M[+n|-n]|[+|-]n 
  2367.      SET IMPcmscp ON|OFF 
  2368.      SET IMPOS ON|OFF 
  2369.      SET MSGLine ON [M[+n|-n]|[+|-]n] 
  2370.      SET NUMber ON|OFF 
  2371.      SHOWkey 
  2372.      SOS DELBAck 
  2373.      SOS DELChar 
  2374.      SOS STARTENDChar 
  2375.      SOS UNDO 
  2376.      TEXT text 
  2377.      TOP 
  2378.      Up n|* 
  2379.      Xedit [dir or file name] 
  2380.  
  2381.  
  2382. ΓòÉΓòÉΓòÉ 2.5.1. BAckward ΓòÉΓòÉΓòÉ
  2383.  
  2384. scroll backwards [n] screens 
  2385.  
  2386. SYNTAX 
  2387.  
  2388.           BAckward [n|*]
  2389.  
  2390. DESCRIPTION 
  2391.  
  2392. The BACKWARD command scrolls the file contents backwards through the file [n|*] 
  2393. screens. 
  2394.  
  2395. If 0 is specified as the number of screens to scroll, the last line of the file 
  2396. becomes the current line.  If the BACKWARD command is issued while the current 
  2397. line is the "Top of File" line, the last line of the file becomes the current 
  2398. line. 
  2399.  
  2400. DEFAULT 
  2401.  
  2402.           1
  2403.  
  2404. SEE ALSO 
  2405.  
  2406.           FORWARD, TOP
  2407.  
  2408.  
  2409. ΓòÉΓòÉΓòÉ 2.5.2. BOTtom ΓòÉΓòÉΓòÉ
  2410.  
  2411. move to the bottom of the file 
  2412.  
  2413. SYNTAX 
  2414.  
  2415.           BOTtom
  2416.  
  2417. DESCRIPTION 
  2418.  
  2419. The BOTTOM command moves to the very end of the current file. The last line of 
  2420. the file is set to the current line. 
  2421.  
  2422. SEE ALSO 
  2423.  
  2424.           FORWARD, TOP
  2425.  
  2426.  
  2427. ΓòÉΓòÉΓòÉ 2.5.3. CCancel ΓòÉΓòÉΓòÉ
  2428.  
  2429. qquit from all files in the ring 
  2430.  
  2431. SYNTAX 
  2432.  
  2433.           CCancel
  2434.  
  2435. DESCRIPTION 
  2436.  
  2437. The CCANCEL command exits from FL quickly by executing the QQUIT command for 
  2438. every file in the ring.  Any changes made to any of the files will be lost. 
  2439.  
  2440.  
  2441. ΓòÉΓòÉΓòÉ 2.5.4. DEFine ΓòÉΓòÉΓòÉ
  2442.  
  2443. assign one or many commands to a key 
  2444.  
  2445. SYNTAX 
  2446.  
  2447.           DEFine key-name [command [args] [[#command [args]...]]]
  2448.  
  2449. DESCRIPTION 
  2450.  
  2451. The DEFINE command allows the user to assign one or many commands and optional 
  2452. parameter(s) to a key. 
  2453.  
  2454. Commands may be abbreviated. 
  2455.  
  2456. With no arguments, any existing definition for that key is removed and the key 
  2457. reverts back to its default assignation (if it had any). 
  2458.  
  2459. key-names correspond to the key name shown with the SHOW command. 
  2460.  
  2461. SEE ALSO 
  2462.  
  2463.           SHOWKEY
  2464.  
  2465.  
  2466. ΓòÉΓòÉΓòÉ 2.5.5. DOS ΓòÉΓòÉΓòÉ
  2467.  
  2468. execute an operating system command 
  2469.  
  2470. SYNTAX 
  2471.  
  2472.           DOS [command]
  2473.  
  2474. DESCRIPTION 
  2475.  
  2476. The DOS command executes the supplied operating system command or runs an 
  2477. interactive shell if no command is supplied. 
  2478.  
  2479. SEE ALSO 
  2480.  
  2481.           OS
  2482.  
  2483.  
  2484. ΓòÉΓòÉΓòÉ 2.5.6. DOSNowait ΓòÉΓòÉΓòÉ
  2485.  
  2486. execute an operating system command - no prompt 
  2487.  
  2488. SYNTAX 
  2489.  
  2490.           DOSNowait command
  2491.  
  2492. DESCRIPTION 
  2493.  
  2494. The DOSNOWAIT command executes the supplied operating system command not 
  2495. waiting for the user to be prompted once the command has completed. 
  2496.  
  2497. SEE ALSO 
  2498.  
  2499.           OSNOWAIT
  2500.  
  2501.  
  2502. ΓòÉΓòÉΓòÉ 2.5.7. Down ΓòÉΓòÉΓòÉ
  2503.  
  2504. move forward in the file a number of lines 
  2505.  
  2506. SYNTAX 
  2507.  
  2508.           Down [relative_target]
  2509.  
  2510. DESCRIPTION 
  2511.  
  2512. The DOWN command moves the current line forwards the number of lines specified 
  2513. by the relative_target.  This relative_target can only be a positive integer or 
  2514. the character "*". 
  2515.  
  2516. DEFAULT 
  2517.  
  2518.           1
  2519.  
  2520. SEE ALSO 
  2521.  
  2522.           NEXT, UP
  2523.  
  2524.  
  2525. ΓòÉΓòÉΓòÉ 2.5.8. Edit ΓòÉΓòÉΓòÉ
  2526.  
  2527. edit another file or switch to next file 
  2528.  
  2529. SYNTAX 
  2530.  
  2531.           Edit [filename or directory]
  2532.  
  2533. DESCRIPTION 
  2534.  
  2535. The EDIT command allows the user to edit another file or directory. The new 
  2536. file or directory is placed in the file ring.  The previous file being edited 
  2537. remains in memory and can be returned to by issuing an EDIT command without any 
  2538. parameters.  Several files can be edited at once, and all files are arranged in 
  2539. a ring, with subsequent EDIT commands moving through the ring, one file at a 
  2540. time. 
  2541.  
  2542. SEE ALSO 
  2543.  
  2544.           FLIST, XEDIT
  2545.  
  2546.  
  2547. ΓòÉΓòÉΓòÉ 2.5.9. FList ΓòÉΓòÉΓòÉ
  2548.  
  2549. edit another file or switch to next file 
  2550.  
  2551. SYNTAX 
  2552.  
  2553.           FList [filename or directory]
  2554.  
  2555. DESCRIPTION 
  2556.  
  2557. The FLIST command allows the user to edit another file or directory.  The new 
  2558. file or directory is placed in the file ring.  The previous file being edited 
  2559. remains in memory and can be returned to by issuing an FLIST command without 
  2560. any parameters.  Several files can be edited at once, and all files are 
  2561. arranged in a ring, with subsequent FLIST commands moving through the ring, one 
  2562. file at a time. 
  2563.  
  2564. SEE ALSO 
  2565.  
  2566.           EDIT, XEDIT
  2567.  
  2568.  
  2569. ΓòÉΓòÉΓòÉ 2.5.10. FOrward ΓòÉΓòÉΓòÉ
  2570.  
  2571. scroll forwards [n] screens 
  2572.  
  2573. SYNTAX 
  2574.  
  2575.           FOrward [n]
  2576.  
  2577. DESCRIPTION 
  2578.  
  2579. The FORWARD command scrolls the file contents forwards the number of screens 
  2580. specified. 
  2581.  
  2582. If 0 is specified as the number of screens to scroll, the "Top of File" line 
  2583. becomes the current line.  If the FORWARD command is issued while the current 
  2584. line is the "Bottom of File" line, the "Top of File" line becomes the current 
  2585. line. 
  2586.  
  2587. DEFAULT 
  2588.  
  2589.           1
  2590.  
  2591. SEE ALSO 
  2592.  
  2593.           BACKWARD, TOP
  2594.  
  2595.  
  2596. ΓòÉΓòÉΓòÉ 2.5.11. HELP ΓòÉΓòÉΓòÉ
  2597.  
  2598. edit help file for Fl 
  2599.  
  2600. SYNTAX 
  2601.  
  2602.           HELP
  2603.  
  2604. DESCRIPTION 
  2605.  
  2606. The HELP command displays help for the file manager.  Uses DPATH environment 
  2607. variable to point to the help file. 
  2608.  
  2609.  
  2610. ΓòÉΓòÉΓòÉ 2.5.12. Next ΓòÉΓòÉΓòÉ
  2611.  
  2612. move forward in the file a number of lines 
  2613.  
  2614. SYNTAX 
  2615.  
  2616.           Next [relative_target]
  2617.  
  2618. DESCRIPTION 
  2619.  
  2620. The NEXT command moves the current line forwards the number of lines specified 
  2621. by the relative_target.  This relative_target can only be a positive integer or 
  2622. the character "*". 
  2623.  
  2624. DEFAULT 
  2625.  
  2626.           1
  2627.  
  2628. SEE ALSO 
  2629.  
  2630.           DOWN, UP
  2631.  
  2632.  
  2633. ΓòÉΓòÉΓòÉ 2.5.13. NEXTWindow ΓòÉΓòÉΓòÉ
  2634.  
  2635. switch focus of editing session to other window 
  2636.  
  2637. SYNTAX 
  2638.  
  2639.           NEXTWindow
  2640.  
  2641. DESCRIPTION 
  2642.  
  2643. The NEXTWINDOW command moves the focus of the editing session to the other 
  2644. window (if more than one window is currently displayed) or to the next file in 
  2645. the ring. 
  2646.  
  2647. SEE ALSO 
  2648.  
  2649.           EDIT
  2650.  
  2651.  
  2652. ΓòÉΓòÉΓòÉ 2.5.14. OS ΓòÉΓòÉΓòÉ
  2653.  
  2654. execute an operating system command 
  2655.  
  2656. SYNTAX 
  2657.  
  2658.           OS [command]
  2659.  
  2660. DESCRIPTION 
  2661.  
  2662. The OS command executes the supplied operating system command or runs an 
  2663. interactive shell if no command is supplied. 
  2664.  
  2665. SEE ALSO 
  2666.  
  2667.           DOS
  2668.  
  2669.  
  2670. ΓòÉΓòÉΓòÉ 2.5.15. OSNowait ΓòÉΓòÉΓòÉ
  2671.  
  2672. execute an operating system command - no prompt 
  2673.  
  2674. SYNTAX 
  2675.  
  2676.           OSNowait command
  2677.  
  2678. DESCRIPTION 
  2679.  
  2680. The OSNOWAIT command executes the supplied operating system command not waiting 
  2681. for the user to be prompted once the command has completed. 
  2682.  
  2683. SEE ALSO 
  2684.  
  2685.           DOSNOWAIT
  2686.  
  2687.  
  2688. ΓòÉΓòÉΓòÉ 2.5.16. QUIT ΓòÉΓòÉΓòÉ
  2689.  
  2690. exit from the current file if no changes made 
  2691.  
  2692. SYNTAX 
  2693.  
  2694.           QUIT
  2695.  
  2696. DESCRIPTION 
  2697.  
  2698. The QUIT command exits the user from the current file, provided no changes have 
  2699. been made to the file.  An error message will be displayed if changes have been 
  2700. made.  The previous file in the ring then becomes the current file.  If the 
  2701. current file is the only file in the ring, the user is returned to the 
  2702. Operating System. 
  2703.  
  2704.  
  2705. ΓòÉΓòÉΓòÉ 2.5.17. RESet ΓòÉΓòÉΓòÉ
  2706.  
  2707. cancel the marked block or prefix commands or both 
  2708.  
  2709. SYNTAX 
  2710.  
  2711.           RESet ALL|Block|Prefix
  2712.  
  2713. DESCRIPTION 
  2714.  
  2715. The RESET command unmarks any marked block or outstanding prefix commands or 
  2716. both. 
  2717.  
  2718.  
  2719. ΓòÉΓòÉΓòÉ 2.5.18. RUN ΓòÉΓòÉΓòÉ
  2720.  
  2721. execute the specified command 
  2722.  
  2723. SYNTAX 
  2724.  
  2725.           RUN file [args]
  2726.  
  2727. DESCRIPTION 
  2728.  
  2729. The RUN command executes the specified file. 
  2730.  
  2731.  
  2732. ΓòÉΓòÉΓòÉ 2.5.19. SET CASE ΓòÉΓòÉΓòÉ
  2733.  
  2734. set case sensitivity parameters 
  2735.  
  2736. SYNTAX 
  2737.  
  2738.           [SET] CASE Mixed|Lower|Upper
  2739.  
  2740. DESCRIPTION 
  2741.  
  2742. The CASE command sets the editor's handling of the case of text. 
  2743.  
  2744. The option (which is mandatory) controls how text is entered by the user.  When 
  2745. LOWER or UPPER are in effect, the shift or caps lock keys have no effect on the 
  2746. text being entered.  When MIXED is in effect, text is entered in the case set 
  2747. by the use of the shift and caps lock keys. 
  2748.  
  2749. DEFAULT 
  2750.  
  2751.           MIXED
  2752.  
  2753.  
  2754. ΓòÉΓòÉΓòÉ 2.5.20. SET COLO[U]R ΓòÉΓòÉΓòÉ
  2755.  
  2756. set colours for display 
  2757.  
  2758. SYNTAX 
  2759.  
  2760.           [SET] COLOUR area [modifier[...]] [foreground background]
  2761.           [SET] COLOR  area [modifier[...]] [foreground background]
  2762.  
  2763. DESCRIPTION 
  2764.  
  2765. The COLOUR command changes the colours or display attributes of various display 
  2766. areas in FLIST. 
  2767.  
  2768. Valid values for 'area': 
  2769.  
  2770.             Arrow    - command line prompt
  2771.             Cmdline  - command line
  2772.             CUrline  - the current line
  2773.             Filearea - area containing file lines
  2774.             Idline   - line containing file specific info
  2775.             Msgline  - error messages
  2776.             Pending  - pending commands in prefix
  2777.             PRefix   - prefix area
  2778.             STatarea - line showing status of editing session
  2779.             TOfeof   - *** Top of File *** and *** Bottom of File *** lines
  2780.  
  2781. Valid values for 'foreground' and 'background': 
  2782.  
  2783.    black,blue,green,cyan,red,magenta,yellow,white
  2784.  
  2785. Valid values for 'modifier': 
  2786.  
  2787.    normal,blink,bold,bright,high,reverse,underline
  2788.  
  2789. It is an error to attempt to set a colour on a mono display. 
  2790.  
  2791.  
  2792. ΓòÉΓòÉΓòÉ 2.5.21. SET CURLine ΓòÉΓòÉΓòÉ
  2793.  
  2794. set position of current line on screen 
  2795.  
  2796. SYNTAX 
  2797.  
  2798.           [SET] CURLine M[+n|-n] | [+|-]n
  2799.  
  2800. DESCRIPTION 
  2801.  
  2802. The CURLINE command sets the position of the current line to the physical 
  2803. screen line specified by supplied arguments. 
  2804.  
  2805. The two forms of parameters are: 
  2806.  
  2807.           M[+n|-n] - this sets the current line to be relative to the
  2808.                      middle of the screen. A positive value adds to the
  2809.                      middle line number, a negative subtracts from it.
  2810.                      eg. M+3 on a 24 line screen will be line 15
  2811.                          M-5 on a 24 line screen will be line 7
  2812.  
  2813.           [+|-]n   - this sets the current line to be relative to the
  2814.                      top of the screen (if positive or no sign) or
  2815.                      relative to the bottom of the screen if negative.
  2816.                      eg. +3 or 3 will set current line to line 3
  2817.                          -3 on a 24 line screen will be line 21
  2818.  
  2819. If the resulting line is outside the bounds of the screen the position of the 
  2820. current line will become the middle line on the screen. 
  2821.  
  2822. DEFAULT 
  2823.  
  2824.           +6
  2825.  
  2826.  
  2827. ΓòÉΓòÉΓòÉ 2.5.22. SET IMPcmscp ΓòÉΓòÉΓòÉ
  2828.  
  2829. set implied operating system command processing 
  2830.  
  2831. SYNTAX 
  2832.  
  2833.           [SET] IMPcmscp ON|OFF
  2834.  
  2835. DESCRIPTION 
  2836.  
  2837. The IMPCMSCP command is used to toggle implied operating system command 
  2838. processing from the command line.  By turning this feature on you can then 
  2839. issue an operating system command without the need to prefix the operating 
  2840. system command with the OS command. 
  2841.  
  2842. DEFAULT 
  2843.  
  2844.           ON
  2845.  
  2846. SEE ALSO 
  2847.  
  2848.           SET IMPOS
  2849.  
  2850.  
  2851. ΓòÉΓòÉΓòÉ 2.5.23. SET IMPOS ΓòÉΓòÉΓòÉ
  2852.  
  2853. set implied operating system command processing 
  2854.  
  2855. SYNTAX 
  2856.  
  2857.           [SET] IMPOS ON|OFF
  2858.  
  2859. DESCRIPTION 
  2860.  
  2861. The IMPOS command is used to toggle implied operating system command processing 
  2862. from the command line.  By turning this feature on you can then issue an 
  2863. operating system command without the need to prefix the operating system 
  2864. command with the OS command. 
  2865.  
  2866. DEFAULT 
  2867.  
  2868.           ON
  2869.  
  2870. SEE ALSO 
  2871.  
  2872.           SET IMPCMSCP
  2873.  
  2874.  
  2875. ΓòÉΓòÉΓòÉ 2.5.24. SET MSGLine ΓòÉΓòÉΓòÉ
  2876.  
  2877. set position and size of message line 
  2878.  
  2879. SYNTAX 
  2880.  
  2881.           [SET] MSGLine ON [M[+n|-n]|[+|-]n] [lines]
  2882.  
  2883. DESCRIPTION 
  2884.  
  2885. The MSGLINE set command specifies the position of the message line and the size 
  2886. of the message line window. 
  2887.  
  2888. The two forms of the position parameters are: 
  2889.  
  2890.           M[+n|-n] - this sets the first line to be relative to the
  2891.                      middle of the screen. A positive value adds to the
  2892.                      middle line number, a negative subtracts from it.
  2893.                      eg. M+3 on a 24 line screen will be line 15
  2894.                          M-5 on a 24 line screen will be line 7
  2895.  
  2896.           [+|-]n   - this sets the first line to be relative to the
  2897.                      top of the screen (if positive or no sign) or
  2898.                      relative to the bottom of the screen if negative.
  2899.                      eg. +3 or 3 will set tab line to line 3
  2900.                          -3 on a 24 line screen will be line 21
  2901.  
  2902. If the resulting line is outside the bounds of the screen the position of the 
  2903. message line will become the middle line on the screen. 
  2904.  
  2905. DEFAULT 
  2906.  
  2907.           ON 2 1
  2908.  
  2909.  
  2910. ΓòÉΓòÉΓòÉ 2.5.25. SET NUMber ΓòÉΓòÉΓòÉ
  2911.  
  2912. turn prefix numbers on or off 
  2913.  
  2914. SYNTAX 
  2915.  
  2916.           [SET] NUMber ON|OFF
  2917.  
  2918. DESCRIPTION 
  2919.  
  2920. The NUMBER command allows the user to toggle the display of numbers in the 
  2921. prefix area. 
  2922.  
  2923. DEFAULT 
  2924.  
  2925.           ON
  2926.  
  2927.  
  2928. ΓòÉΓòÉΓòÉ 2.5.26. SHOWkey ΓòÉΓòÉΓòÉ
  2929.  
  2930. display current key value and command assignation 
  2931.  
  2932. SYNTAX 
  2933.  
  2934.           SHOWKey
  2935.  
  2936. DESCRIPTION 
  2937.  
  2938. The SHOWKEY command prompts the user to enter a key and responds with the key 
  2939. name and associated command (if applicable).  To exit from SHOWKEY, press the 
  2940. space bar. 
  2941.  
  2942.  
  2943. ΓòÉΓòÉΓòÉ 2.5.27. SOS DELBAck ΓòÉΓòÉΓòÉ
  2944.  
  2945. delete the character to the left of the cursor 
  2946.  
  2947. SYNTAX 
  2948.  
  2949.           SOS DELBAck
  2950.  
  2951. DESCRIPTION 
  2952.  
  2953. The SOS DELBACK command moves the cursor one character to the left and deletes 
  2954. the character now under the cursor. 
  2955.  
  2956. SEE ALSO 
  2957.  
  2958.           SOS DELCHAR
  2959.  
  2960.  
  2961. ΓòÉΓòÉΓòÉ 2.5.28. SOS DELChar ΓòÉΓòÉΓòÉ
  2962.  
  2963. delete character under cursor 
  2964.  
  2965. SYNTAX 
  2966.  
  2967.           SOS DELChar
  2968.  
  2969. DESCRIPTION 
  2970.  
  2971. The SOS DELCHAR command deletes the character under the cursor. Text to the 
  2972. right is shifted to the left. 
  2973.  
  2974. SEE ALSO 
  2975.  
  2976.           SOS DELBACK
  2977.  
  2978.  
  2979. ΓòÉΓòÉΓòÉ 2.5.29. SOS STARTENDChar ΓòÉΓòÉΓòÉ
  2980.  
  2981. move cursor to end/start of focus line 
  2982.  
  2983. SYNTAX 
  2984.  
  2985.           SOS STARTENDChar
  2986.  
  2987. DESCRIPTION 
  2988.  
  2989. The SOS STARTENDCHAR command moves the cursor to the first character displayed 
  2990. in the current window, if the cursor is after the last character displayed in 
  2991. the current window, or to the position after the last character displayed in 
  2992. the current window, if the cursor is anywhere else. 
  2993.  
  2994.  
  2995. ΓòÉΓòÉΓòÉ 2.5.30. SOS UNDO ΓòÉΓòÉΓòÉ
  2996.  
  2997. undo changes to the current line 
  2998.  
  2999. SYNTAX 
  3000.  
  3001.           SOS UNDO
  3002.  
  3003. DESCRIPTION 
  3004.  
  3005. The SOS UNDO command causes the contents of the focus line (or the command 
  3006. line) to be reset to the contents before the cursor was positioned there. 
  3007.  
  3008.  
  3009. ΓòÉΓòÉΓòÉ 2.5.31. TEXT ΓòÉΓòÉΓòÉ
  3010.  
  3011. simulate keyboard entry of characters 
  3012.  
  3013. SYNTAX 
  3014.  
  3015.           TEXT text
  3016.  
  3017. DESCRIPTION 
  3018.  
  3019. The TEXT command simulates the entry of characters from the keyboard.  This 
  3020. command is actually called when you enter text from the keyboard. 
  3021.  
  3022.  
  3023. ΓòÉΓòÉΓòÉ 2.5.32. TOP ΓòÉΓòÉΓòÉ
  3024.  
  3025. move to the top of the file 
  3026.  
  3027. SYNTAX 
  3028.  
  3029.           TOP
  3030.  
  3031. DESCRIPTION 
  3032.  
  3033. The TOP command moves to the very start of the current file.  The "Top-of-file" 
  3034. line is set to the current_line. 
  3035.  
  3036. "TOP" is equivalent to "BACKWARD *". 
  3037.  
  3038. SEE ALSO 
  3039.  
  3040.           BACKWARD, BOTTOM
  3041.  
  3042.  
  3043. ΓòÉΓòÉΓòÉ 2.5.33. Up ΓòÉΓòÉΓòÉ
  3044.  
  3045. move backward in the file a number of lines 
  3046.  
  3047. SYNTAX 
  3048.  
  3049.           Up [relative_target]
  3050.  
  3051. DESCRIPTION 
  3052.  
  3053. The UP command moves the current line backwards the number of lines specified 
  3054. by the relative_target.  This relative_target can only be a positive integer or 
  3055. the character "*". 
  3056.  
  3057. DEFAULT 
  3058.  
  3059.           1
  3060.  
  3061. SEE ALSO 
  3062.  
  3063.           NEXT, DOWN
  3064.  
  3065.  
  3066. ΓòÉΓòÉΓòÉ 2.5.34. Xedit ΓòÉΓòÉΓòÉ
  3067.  
  3068. edit another file or directory or switch to next file 
  3069.  
  3070. SYNTAX 
  3071.  
  3072.           Xedit [filename or directory]
  3073.  
  3074. DESCRIPTION 
  3075.  
  3076. The XEDIT command allows the user to edit another file.  The new file is placed 
  3077. in the file ring.  The previous file being edited remains in memory and can be 
  3078. returned to by issuing an XEDIT command without any parameters.  Several files 
  3079. can be edited at once, and all files are arranged in a ring, with subsequent 
  3080. XEDIT commands moving through the ring, one file at a time. 
  3081.  
  3082. SEE ALSO 
  3083.  
  3084.           EDIT, FLIST
  3085.  
  3086.  
  3087. ΓòÉΓòÉΓòÉ 2.6. Profile Support ΓòÉΓòÉΓòÉ
  3088.  
  3089. Fl supports profile files.  By default, PROFILE.FL is used, but you can 
  3090. override it via the (Profile switch.  If you don't want to use a profile, use 
  3091. the (Noprofile switch. 
  3092.  
  3093. If present, the profile file should be somewhere along the DPATH, or you can 
  3094. alternatively specify its complete path. 
  3095.  
  3096. A profile file is a plain REXX file.  It's called before any user interaction. 
  3097. It's usually used to redefine keys assignments or colo[u]rs, displaying or 
  3098. setting some session-dependant data, and so on... 
  3099.  
  3100.  
  3101. ΓòÉΓòÉΓòÉ 2.7. History ΓòÉΓòÉΓòÉ
  3102.  
  3103. 0.90.000    Nov 25 1997
  3104.  
  3105.  --- Creating Fl history file
  3106.  --- New features:
  3107.      o SHOWKey shows human-readable name for keys.
  3108.      o A-1 and A-X bounded to Xedit by default.
  3109.  
  3110.  
  3111. ΓòÉΓòÉΓòÉ 3. Less ΓòÉΓòÉΓòÉ
  3112.  
  3113.  If you're using Object REXX (the DEVCON 8/9 edition), the "=" command will be 
  3114.  disabled, as well as "external" commands.  The first point is due to a 
  3115.  definition change in the STREAM() built-in function, and will be fixed in a 
  3116.  future release of Less, but the second point is due to a bug in the 
  3117.  LINEIN('CON:') built-in function, and will not be fixed by Less. 
  3118.  
  3119.      What's That? 
  3120.      Installation 
  3121.      Starting Less 
  3122.      Commands 
  3123.      Known Limitations 
  3124.  
  3125.  
  3126. ΓòÉΓòÉΓòÉ 3.1. What's That? ΓòÉΓòÉΓòÉ
  3127.  
  3128. Less is a file browser.  When used as a MORE.EXE replacement, it provides much 
  3129. faster displays, the ability to run any program/command and some information 
  3130. (the elapsed number of lines, mainly). 
  3131.  
  3132. When used as a command, it provides horizontal and vertical scrolling, the 
  3133. ability to locate a text string, to jump to a specified line...  and it can 
  3134. cycles through more than one file. 
  3135.  
  3136. And less.cmd is small (less than 2Kb).  But if you're new to REXX, this command 
  3137. file is not necessarily the best place to start with, though :-) [It's nicely 
  3138. indented - to my taste - but there's not that much comments, and it includes 
  3139. some cryptic statements...] 
  3140.  
  3141.  
  3142. ΓòÉΓòÉΓòÉ 3.2. Installation ΓòÉΓòÉΓòÉ
  3143.  
  3144. Installing Less is very simple:  just copy LESS.CMD somewhere along your PATH. 
  3145.  
  3146.  
  3147. ΓòÉΓòÉΓòÉ 3.3. Starting Less ΓòÉΓòÉΓòÉ
  3148.  
  3149. Syntax 
  3150.  
  3151.    less filename [filename ...]
  3152.    ... | less
  3153.    less <...
  3154.  
  3155. Examples 
  3156.  
  3157.    less *.doc *.txt
  3158.    dir | less
  3159.    less <config.sys
  3160.  
  3161.  
  3162. ΓòÉΓòÉΓòÉ 3.4. Commands ΓòÉΓòÉΓòÉ
  3163.  
  3164. [A "*" following a command name denotes a command which can't be used when 
  3165. less.cmd is called as a filter.] 
  3166.  
  3167.  "<", Left (*) 
  3168.            Scroll right 20 columns. 
  3169.  
  3170.  ">", Right (*) 
  3171.            Scroll left 20 columns. 
  3172.  
  3173.  "N", F12 (*) 
  3174.            Next file in the ring (if available). 
  3175.  
  3176.  "P", F11 (*) 
  3177.            Previous file in the ring (if available). 
  3178.  
  3179.  "." (*) 
  3180.            Redraws the screen. 
  3181.  
  3182.  ESC, F3 
  3183.            Exits less. 
  3184.  
  3185.  ENTER 
  3186.            Scroll down one line. 
  3187.  
  3188.  SPACE, PageDown 
  3189.            Move down one screen. 
  3190.  
  3191.  BACKSPACE, PageUp (*) 
  3192.            Move up one screen. 
  3193.  
  3194.  +nnn (*) 
  3195.  -nnn (*) 
  3196.  nnn (*) 
  3197.            Use this command to move the current (top) line to another one. It 
  3198.            can be used in three ways: 
  3199.  
  3200.                          nnn      Move to line number nnn.
  3201.                          +nnn     Move forward (down) nnn number of lines.
  3202.                          -nnn     Move backward (up) nnn number of lines.
  3203.  
  3204.  "=" 
  3205.            Displays current file information:  file name, current top line 
  3206.            number, current left column, current position, file size and file 
  3207.            position in the file ring. 
  3208.  
  3209.            Example 
  3210.  
  3211.                          <D:\backup\config.new line=1 col=1 pos=1142/3905 file=1/4>
  3212.  
  3213.  /[searchstring] (*) 
  3214.            Locates the first occurrence of "searchstring" in the current file. 
  3215.            If "searchstring" is empty, locates the next occurrence of the 
  3216.            previously defined searchstring. 
  3217.  
  3218.            The search is case-insensitive. 
  3219.  
  3220.            Example 
  3221.  
  3222.                       /REM
  3223.  
  3224.            The top-line will be positioned on the first occurrence of 'REM' in 
  3225.            the current file.  If nothing is found, you will get a new less ":" 
  3226.            prompt, as in: 
  3227.  
  3228.                          :/azert
  3229.                          :_
  3230.  
  3231.                       /
  3232.  
  3233.            The top-line will be positioned on the next occurrence of the 
  3234.            previously defined searchstring (REM in our example). 
  3235.  
  3236.            If no next occurrence exists, you will get a new less ":" prompt, as 
  3237.            in: 
  3238.  
  3239.                          :/
  3240.                          :_
  3241.  
  3242.  anything else 
  3243.            Your REXX command is interpreted. 
  3244.  
  3245.            Warning:  When calling a REXX script, you have to precede its name 
  3246.            with "call ". 
  3247.  
  3248.            The following internal variables may be of interest: 
  3249.  
  3250.                          A        the command line arguments
  3251.                          file     the current file name
  3252.                          r        the screen height
  3253.                          c        the screen width
  3254.                          l        the current top-line number
  3255.                          d        the current horizontal delta
  3256.                          n        the current file position in the ring
  3257.                          m        the number of file in the ring
  3258.                          t.i      (where i is in 1..m) the ith file name
  3259.                          s        the current search string
  3260.  
  3261.            Examples 
  3262.  
  3263.            To display the current directory, enter 
  3264.  
  3265.                          dir
  3266.  
  3267.            [If you want to use jokers chars, you will have to use single or 
  3268.            double quotes, as in:  dir '*.cmd'.] 
  3269.  
  3270.            To display the current search string, enter 
  3271.  
  3272.                          say s
  3273.  
  3274.            To edit the currently displayed file with tedit, enter 
  3275.  
  3276.                          call exc close; tedit file
  3277.  
  3278.            and use the "." command to redraw the screen. 
  3279.  
  3280.            [Well, the "call exc close" is not very, er, intuitive, but it is 
  3281.            required in order to prevent a file-sharing violation -- that is, 
  3282.            less is currently reading the file, and so, nobody can change it. 
  3283.            Automatically closing the file may be implemented in a future 
  3284.            release, though...] 
  3285.  
  3286.  
  3287. ΓòÉΓòÉΓòÉ 3.5. Known Limitations ΓòÉΓòÉΓòÉ
  3288.  
  3289. Note:  All theses limitations can easily be fixed, but the 2Kb figure please me 
  3290.        very well, so, I'll try to include them without breaking it...  That 
  3291.        unfortunately takes a bit more time :-) 
  3292.  
  3293.      Tabulations are replaced by the symbol "┬╖".  This makes browsing files 
  3294.       containing mixed space- and tabulation-based indentations a bit strange. 
  3295.  
  3296.      If the browsed file contains ANSI escape-sequences, you may encounter 
  3297.       strange results. 
  3298.  
  3299.      The locate function is case-insensitive.  It's sometime annoying. 
  3300.  
  3301.      It would be nice to be able to use the horizontal scrolling functions 
  3302.       while browsing a piped output (that is, when less.cmd is used as a 
  3303.       filter).  It would be nice to be able to redraw the current screen, too. 
  3304.  
  3305.  
  3306. ΓòÉΓòÉΓòÉ 4. Query ΓòÉΓòÉΓòÉ
  3307.  
  3308.      What's That? 
  3309.      Installation 
  3310.      Starting Query 
  3311.      Environment variables 
  3312.  
  3313.  
  3314. ΓòÉΓòÉΓòÉ 4.1. What's That? ΓòÉΓòÉΓòÉ
  3315.  
  3316. Query (as well as its documentation :-) is in a very early beta stage.  Some 
  3317. features may be buggy (but non destructive) or incompletely implemented. 
  3318.  
  3319. QUERY is a command used to extract various data.  It is especially useful if 
  3320. you are using Ultimedia Mail/Lite as your mail reader or IBM Global Network as 
  3321. your Internet provider.  It was created to simply obtain data that were 
  3322. concealed or not otherwise directly available. 
  3323.  
  3324. If you use IBM Global Network as your Internet provider, you can check your 
  3325. connect time (it does take into account the minimum 35 seconds connect time) as 
  3326. well as review the various messages you may have received when you dial in. 
  3327. You may have to increase your Connect.Log size (see the Logging page of your 
  3328. Dialer's setting notebook) if you want to be able to query connection 
  3329. statistics for more than one month or two.  (50K looks like a reasonable figure 
  3330. as it can hold something like three months of data...) 
  3331.  
  3332.    QUERY CONNECT TIME
  3333.    QUERY THIS YEAR CONNECT TIME FOR USER1
  3334.    QUERY DETAILED NOVEMBER CONNECT TIME FOR USER1 USER2
  3335.    QUERY LAST CONNECT MESSAGE
  3336.  
  3337. If you use Ultimedia Mail/Lite as your mail reader, you can search your mail 
  3338. folders for messages. 
  3339.  
  3340.    QUERY MAIL FOR USER1 IN INBOX WHERE SUBJECT CONTAINS "PAGING"
  3341.  
  3342. You can also query numerous data, such as system date or time, loaded drivers, 
  3343. etc. 
  3344.  
  3345.    QUERY DATE
  3346.    QUERY DISK
  3347.    QUERY OS VERSION
  3348.    QUERY PICTURE DIMENSION FOR header.gif night.jpg
  3349.    ...
  3350.  
  3351. The complete supported command list follows. 
  3352.  
  3353.      QUERY Date 
  3354.      QUERY Time 
  3355.      QUERY [timeframe] [DETAILED] CONNECT TIME [FOR ...] 
  3356.      QUERY [timeframe] [LAST] CONNECT MESSAGE [FOR ...] 
  3357.      QUERY [timeframe] MAIL [FROM ... ] [IN foldername] [WHERE condition] 
  3358.      QUERY DISK [unit] 
  3359.      QUERY PICTure DIMension FOR ... 
  3360.      QUERY OS [Version] 
  3361.      QUERY [component] Version 
  3362.      QUERY SYStem (DEVices|DRIVERS|IRQs|MEMory) 
  3363.      QUERY PROCess ID 
  3364.      QUERY DIRector(y|ies) STACK 
  3365.  
  3366.  Where the optional elements values are defined as: 
  3367.  
  3368.  timeframe           [THIS | LAST] (YEAR | MONTH | monthname) ['S] 
  3369.  monthname           JANuary | FEBruary | MARch | APRil | MAY | JUNe | JULy | 
  3370.                      AUGust | SEPtember | OCTober | NOVember | DECember 
  3371.  foldername          name | "name" | * | foldername, foldername 
  3372.  condition           element operator value [(OR | AND) condition] 
  3373.  element             FROM | TO | SUBJECT | SENDER [['S] DOMAIN] 
  3374.  unit                * | letter[:] | unit unit 
  3375.  component           REXX | JAVA | OS 
  3376.  
  3377.  
  3378. ΓòÉΓòÉΓòÉ 4.2. Installation ΓòÉΓòÉΓòÉ
  3379.  
  3380. Installing Query is very simple:  just copy QUERY.CMD somewhere along your PATH 
  3381. and REXXVIO.DLL somewhere along your LIBPATH. 
  3382.  
  3383. If REXXVIO.DLL is currently in use, close ALL your OS/2 windowed or fullscreen 
  3384. sessions, and open a bare OS/2 windowed session (that is, one not starting 
  3385. CmdShl or Fl).  You can then replace REXXVIO.DLL from this session. 
  3386.  
  3387. If you were using a previous version of MLRXSHL, execute the following code 
  3388. from an OS/2 command prompt, to allow the new functions defined in REXXVIO to 
  3389. be registered: 
  3390.  
  3391.    rexxtry call VioDropFuncs
  3392.  
  3393.  
  3394. ΓòÉΓòÉΓòÉ 4.3. Starting Query ΓòÉΓòÉΓòÉ
  3395.  
  3396.                         ΓöîΓöÇΓöÇDateΓöÇΓöÇΓöÉ
  3397.         ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇTimeΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3398.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇDISKΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3399.         Γöé                       ΓööΓöÇunit ...ΓöÇΓöÿ                    Γöé
  3400.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇPICTureΓöÇDIMensionΓöÇFORΓöÇfile ...ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3401.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇSYStemΓöÇΓöÇΓöÇΓö¼ΓöÇDEVicesΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3402.         Γöé                           Γö£ΓöÇDRIVERSΓöÇΓöñ                 Γöé
  3403.         Γöé                           Γö£ΓöÇΓöÇIRQsΓöÇΓöÇΓöÇΓöñ                 Γöé
  3404.         Γöé                           ΓööΓöÇMEMoryΓöÇΓöÇΓöÿ                 Γöé
  3405.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇPROCessΓöÇIDΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3406. QUERY ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇDIRectoryΓöÇSTACKΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöñ
  3407.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇOSΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3408.         Γöé                      ΓööΓöÇVersionΓöÇΓöÿ                      Γöé
  3409.         Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇJAVAΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇVersionΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3410.         Γöé            Γö£ΓöÇΓöÇOSΓöÇΓöÇΓöñ                                   Γöé
  3411.         Γöé            ΓööΓöÇREXXΓöÇΓöÿ                                   Γöé
  3412.         ΓööΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼CONNECTΓöÇΓö¼MESSAGEΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöñ
  3413.          Γö£ΓöÇTHISΓöÇΓöñΓö£ΓöÇΓöÇΓöÇMONTHΓöÇΓöÇΓöÇΓöñΓöé        ΓööΓöÇTIMEΓöÇΓöÇΓöÿΓööΓöÇFOR user ...ΓöÇΓöÿΓöé
  3414.          ΓööΓöÇLASTΓöÇΓöÿΓö£ΓöÇΓöÇΓöÇYEARΓöÇΓöÇΓöÇΓöÇΓöñΓöé                                 Γöé
  3415.                  Γö£ΓöÇΓöÇJANuaryΓöÇΓöÇΓöñΓööMAILΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼Γöÿ
  3416.                  :           :     ΓööFROM ...ΓöÿΓööIN ...ΓöÿΓööWHERE ...Γöÿ
  3417.  
  3418. Notes  You just have to specify the upper-cased part of an argument to design 
  3419.        it.  For example 'QUERY DATE' and 'QUERY D' are equivalent. 
  3420.  
  3421. The 'QUERY SYSTEM MEMORY' command requires RXU.DLL, which is not included in 
  3422. this package.  You can find it from your favorite FTP site.  If RXU is missing, 
  3423. you can't use this command, but all others are still available. 
  3424.  
  3425.  
  3426. ΓòÉΓòÉΓòÉ 4.4. Environment variables ΓòÉΓòÉΓòÉ
  3427.  
  3428. Query recognizes the following environment variables: 
  3429.  
  3430.    HELP.COMMAND
  3431.    HELP.SWITCHES
  3432.  
  3433. If one or more of those environment variables are not defined, they are 
  3434. silently ignored.  (They are used to define an optional external help 
  3435. subsystem.) 
  3436.  
  3437.  
  3438. ΓòÉΓòÉΓòÉ 4.4.1. HELP.COMMAND ΓòÉΓòÉΓòÉ
  3439.  
  3440. If this environment variable is defined, Query will not use its build-in help 
  3441. messages.  Instead, it will call the script/application defined by this 
  3442. variable. 
  3443.  
  3444. For example, if HELP.COMMAND is defined as: 
  3445.  
  3446.    SET HELP.COMMAND=ECHO Help for
  3447.  
  3448. Issuing 'QUERY /?' will give: 
  3449.  
  3450.    Help for QUERY /?
  3451.  
  3452. (In other words, the command is displayed back to the user.) 
  3453.  
  3454. The syntax of the call is the following: 
  3455.  
  3456.    call %HELP.COMMAND% QUERY <args>
  3457.  
  3458. where <args> being the argument(s) given to the command by the user. 
  3459.  
  3460.  
  3461. ΓòÉΓòÉΓòÉ 4.4.2. HELP.SWITCHES ΓòÉΓòÉΓòÉ
  3462.  
  3463. If this environment variable is defined, it contains a space-delimited list of 
  3464. switches used to obtain help from the command. 
  3465.  
  3466. For example: 
  3467.  
  3468.    SET HELP.SWITCHES=/? -h
  3469.  
  3470. If this environment variable is not defined, Query assumes '/?' as its value. 
  3471.  
  3472.  
  3473. ΓòÉΓòÉΓòÉ 5. SDir ΓòÉΓòÉΓòÉ
  3474.  
  3475.      What's That? 
  3476.      Installation 
  3477.      Starting SDir 
  3478.      Environment variables 
  3479.         -  DIRCLR.ATTRIB 
  3480.         -  DIRCLR.DATE 
  3481.         -  DIRCLR.EASIZE 
  3482.         -  DIRCLR.EXT 
  3483.         -  DIRCLR.NAME 
  3484.         -  DIRCLR.SIZE 
  3485.         -  DIRCLR.USEREXIT 
  3486.         -  DIRCMD 
  3487.         -  HELP.COMMAND 
  3488.         -  HELP.SWITCHES 
  3489.      Known Limitations 
  3490.      History 
  3491.  
  3492.  
  3493. ΓòÉΓòÉΓòÉ 5.1. What's That? ΓòÉΓòÉΓòÉ
  3494.  
  3495. Sdir is a CMD.EXE's DIR command replacement.  It is (supposed to be) 100% 
  3496. compatible with it.  It adds custom coloration to outputs.  It also fixes a 
  3497. minor but annoying misalignment when the /W option is used 
  3498.  
  3499. In this typical sample, you can see that the alignment bug is fixed 
  3500. (REXXvio.zip is just under REXXvio.INF).  Some coloration has been made, too. 
  3501. The outputs are otherwise identical. 
  3502.  
  3503. (Files that have been modified in the last 30 days are highlighted. Directories 
  3504. are colored in green, .CMD files in cyan and .ZIP archives in yellow.  If more 
  3505. than one coloration apply, and if they can be mixed, it is done so -- for 
  3506. example, REXXvio.test is a directory, and has been created less than 30 days 
  3507. ago, so it's both green and highlighted.) 
  3508.  
  3509. The coloration is completely directed by environment variables. 
  3510.  
  3511.  
  3512. ΓòÉΓòÉΓòÉ 5.2. Installation ΓòÉΓòÉΓòÉ
  3513.  
  3514. Installing SDir is very simple:  just copy SDIR.CMD somewhere along your PATH 
  3515. and REXXVIO.DLL somewhere along your LIBPATH. 
  3516.  
  3517. If REXXVIO.DLL is currently in use, close ALL your OS/2 windowed or fullscreen 
  3518. sessions, and open a bare OS/2 windowed session (that is, one not starting 
  3519. CmdShl or Fl).  You can then replace REXXVIO.DLL from this session. 
  3520.  
  3521. If you were using a previous version of MLRXSHL, execute the following code 
  3522. from an OS/2 command prompt, to allow the new functions defined in REXXVIO to 
  3523. be registered: 
  3524.  
  3525.    rexxtry call VioDropFuncs
  3526.  
  3527. If you want to automatically use SDIR instead of DIR, you can add an alias, if 
  3528. your command shell processor recognizes them.  For example, with CmdShl, use: 
  3529.  
  3530.    ALIAS dir=SDIR %*
  3531.  
  3532. You can also add your preferred coloration settings in your CONFIG.SYS.  For 
  3533. example, mine contains: 
  3534.  
  3535.    REM Sdir Settings
  3536.    SET DIRCLR.ATTRIB=D:GREEN;H,S:ON RED;R:BLINK
  3537.    SET DIRCLR.DATE=-30:BRIGHT
  3538.    SET DIRCLR.EXT=BAT,EXE,COM,CMD:CYAN;ZIP:YELLOW;INI:MAGENTA
  3539.    SET DIRCLR.NAME=PROFILE:MAGENTA
  3540.  
  3541.  
  3542. ΓòÉΓòÉΓòÉ 5.3. Starting SDir ΓòÉΓòÉΓòÉ
  3543.  
  3544. See the DIR command in the online reference manual. 
  3545.  
  3546.  
  3547. ΓòÉΓòÉΓòÉ 5.4. Environment variables ΓòÉΓòÉΓòÉ
  3548.  
  3549. Sdir recognizes the following environment variables: 
  3550.  
  3551.    DIRCLR.ATTRIB
  3552.    DIRCLR.DATE
  3553.    DIRCLR.EASIZE
  3554.    DIRCLR.EXT
  3555.    DIRCLR.NAME
  3556.    DIRCLR.SIZE
  3557.    DIRCLR.USEREXIT
  3558.  
  3559.    DIRCMD
  3560.  
  3561.    HELP.COMMAND
  3562.    HELP.SWITCHES
  3563.  
  3564. If one or more of those environment variables are not defined, the missing ones 
  3565. are silently ignored. 
  3566.  
  3567. The last two environment variables are used to define an optional external help 
  3568. subsystem. 
  3569.  
  3570. The order in which coloration is applied is the following: 
  3571.  
  3572.    1. User exit; 
  3573.    2. Directory attribute; 
  3574.    3. Other attributes : Archive, Read only, System, Hidden; 
  3575.    4. File extension (if any); 
  3576.    5. File name; 
  3577.    6. File date; 
  3578.    7. File size; 
  3579.    8. Extended attributes size. 
  3580.  
  3581.  An element of higher priority takes precedence over an element of lower 
  3582.  priority.  For example, if you specify a green background for directories and 
  3583.  red background for recent entries, a directory will always have a green 
  3584.  background, regardless of its last modification date. 
  3585.  
  3586.  The color specification is of the form: 
  3587.  
  3588.       [BRIGHT] [BLINK] [color] [ON color]
  3589.  
  3590.  color being one of: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN or WHITE. 
  3591.  
  3592.  The case is not significant.  Depending on your display type, specifying BLINK 
  3593.  may result in either a blinking character or a high intensity background 
  3594.  color. 
  3595.  
  3596.  
  3597. ΓòÉΓòÉΓòÉ 5.4.1. DIRCLR.ATTRIB ΓòÉΓòÉΓòÉ
  3598.  
  3599. This environment variable specifies the coloration to be used if an entry 
  3600. attribute has been set. 
  3601.  
  3602.    SET DIRCLR.ATTRIB=attrib[,...]:color[;...]
  3603.  
  3604. attrib can be one of D, A, R, S or H.  (Case is not significant.) 
  3605.  
  3606. If an attribute is defined more than once, the last definition is used. 
  3607.  
  3608. Example 
  3609.  
  3610.    SET DIRCLR.ATTRIB=D:green;H,S:ON RED;R:BLINK
  3611.  
  3612. Directories will be displayed in green, Hidden or System entries will be 
  3613. displayed on a red background, and read-only ones will be blinking (or, in a 
  3614. VIO Window, the background will be intensified). 
  3615.  
  3616.  
  3617. ΓòÉΓòÉΓòÉ 5.4.2. DIRCLR.DATE ΓòÉΓòÉΓòÉ
  3618.  
  3619. This environment variable specifies the coloration to be used depending of the 
  3620. entry's last modification date. 
  3621.  
  3622.    SET DIRCLR.DATE=[-+=]date:color[;...]
  3623.  
  3624. If date is a number, it specifies a number of day. Otherwise, it's a date in 
  3625. ISO format (yyyy/mm/dd). 
  3626.  
  3627. If you have specified a number of day, a leading '-' selects files modified in 
  3628. the last date days.  A leading '+' selects files that have not been modified in 
  3629. the last date days.  A leading '=' only selects files modified exactly date 
  3630. days ago (it's not that useful :-) ). 
  3631.  
  3632. If you have specified a date, a leading '-' selects files that have not been 
  3633. modified since date.  A leading '+' selects files that have been modified since 
  3634. date.  A leading '=' only selects files modified on date. 
  3635.  
  3636. The first matching value is used.  The evaluation order is from left to right. 
  3637.  
  3638. Example 
  3639.  
  3640.    SET DIRCLR.DATE=-30:bright
  3641.  
  3642. A bright color will be used for files modified in the last 30 days. 
  3643.  
  3644.  
  3645. ΓòÉΓòÉΓòÉ 5.4.3. DIRCLR.EASIZE ΓòÉΓòÉΓòÉ
  3646.  
  3647. Not implemented yet. 
  3648.  
  3649.  
  3650. ΓòÉΓòÉΓòÉ 5.4.4. DIRCLR.EXT ΓòÉΓòÉΓòÉ
  3651.  
  3652. This environment variable specifies the color to be used depending on the entry 
  3653. extension. 
  3654.  
  3655.    SET DIRCLR.EXT=ext[,...]:color[;...]
  3656.  
  3657. ext is the extension (without the leading dot) to be colored.  It is case 
  3658. insensitive.  Jocker symbols ('*' and '?') are not allowed. 
  3659.  
  3660. If an extension is specified more than once, the last specification is used. 
  3661.  
  3662. Example 
  3663.  
  3664.    SET DIRCLR.EXT=BAT,EXE,COM,CMD:CYAN;ZIP:YELLOW
  3665.  
  3666. Files ending with either .BAT, .EXE, .COM or .CMD will be displayed in cyan 
  3667. while archive files ending with .ZIP will be in yellow. 
  3668.  
  3669.  
  3670. ΓòÉΓòÉΓòÉ 5.4.5. DIRCLR.NAME ΓòÉΓòÉΓòÉ
  3671.  
  3672. This environment variable specifies the color to be used depending on the entry 
  3673. name. 
  3674.  
  3675.    SET DIRCLR.NAME=name[,...]:color[;...]
  3676.  
  3677. name is the name to be colored.  It is case insensitive.  Jocker symbols ('*' 
  3678. and '?') are not allowed.  Neither are null ('') names. 
  3679.  
  3680. If a name is specified more than once, the last specification is used. 
  3681.  
  3682. The name of an entry is the part preceding the extension.  For example: 
  3683.  
  3684.   foo              --> foo
  3685.   bar.baz          --> bar
  3686.   foo.bar.baz      --> foo.bar
  3687.  
  3688. Example 
  3689.  
  3690.    SET DIRCLR.NAME=PROFILE:magenta
  3691.  
  3692. Files whose name is PROFILE will be in magenta. 
  3693.  
  3694.  
  3695. ΓòÉΓòÉΓòÉ 5.4.6. DIRCLR.SIZE ΓòÉΓòÉΓòÉ
  3696.  
  3697. Not implemented yet. 
  3698.  
  3699.  
  3700. ΓòÉΓòÉΓòÉ 5.4.7. DIRCLR.USEREXIT ΓòÉΓòÉΓòÉ
  3701.  
  3702. Not implemented yet. 
  3703.  
  3704.  
  3705. ΓòÉΓòÉΓòÉ 5.4.8. DIRCMD ΓòÉΓòÉΓòÉ
  3706.  
  3707. See the (inexistant :-) description of it in the online reference manual. 
  3708.  
  3709.  
  3710. ΓòÉΓòÉΓòÉ 5.4.9. HELP.COMMAND ΓòÉΓòÉΓòÉ
  3711.  
  3712. If this environment variable is defined, SDir will not use its build-in help 
  3713. messages.  Instead, it will call the script/application defined by this 
  3714. variable. 
  3715.  
  3716. For example, if HELP.COMMAND is defined as: 
  3717.  
  3718.    SET HELP.COMMAND=ECHO Help for
  3719.  
  3720. Issuing 'SDIR /?' will give: 
  3721.  
  3722.    Help for SDIR /?
  3723.  
  3724. (In other words, the command is displayed back to the user.) 
  3725.  
  3726. The syntax of the call is the following: 
  3727.  
  3728.    call %HELP.COMMAND% SDIR <args>
  3729.  
  3730. where <args> being the argument(s) given to the command by the user. 
  3731.  
  3732.  
  3733. ΓòÉΓòÉΓòÉ 5.4.10. HELP.SWITCHES ΓòÉΓòÉΓòÉ
  3734.  
  3735. If this environment variable is defined, it contains a space-delimited list of 
  3736. switches used to obtain help from the command. 
  3737.  
  3738. For example: 
  3739.  
  3740.    SET HELP.SWITCHES=/? -h
  3741.  
  3742. If this environment variable is not defined, SDir assumes '/?' as its value. 
  3743.  
  3744.  
  3745. ΓòÉΓòÉΓòÉ 5.5. Known Limitations ΓòÉΓòÉΓòÉ
  3746.  
  3747.      The EA size is incorrectly reported if it exceeds 32767 bytes. (In fact, 
  3748.       4OS2 as well as the Workplace Shell also exhibit this behavior.) 
  3749.  
  3750.      The sort is currently handled by a REXX procedure, so it's quite slow if 
  3751.       you don't have a fast computer.  (If you don't use the /o option, speed 
  3752.       will be OK.) 
  3753.  
  3754.      Some environment variables are not yet recognized: DIRCLR.SIZE, 
  3755.       DIRCLR.EASIZE and DIRCLR.USEREXIT. 
  3756.  
  3757.      In DIRCLR.DATE, each month contains 31 days (and hence a year contains 
  3758.       372 days). 
  3759.  
  3760.  
  3761. ΓòÉΓòÉΓòÉ 5.6. History ΓòÉΓòÉΓòÉ
  3762.  
  3763. 0.98.000    Dec 15 1997
  3764.  
  3765.  --- Bug fix:
  3766.      o lineCount, pause and height were not always exposed when
  3767.        needed.
  3768.  
  3769. 0.97.000    Dec 09 1997
  3770.  
  3771.  --- New feature:
  3772.      o Optional external help subsystem added (use HELP.COMMAND and
  3773.        HELP.SWITCHES if defined).
  3774.  
  3775. 0.96.000    Nov 26 1997
  3776.  
  3777.  --- Bug fix:
  3778.      o /o works like CMD.EXE's DIR when used in conjunction with /s.
  3779.  
  3780. 0.95.000    Nov 23 1997
  3781.  
  3782.  --- New feature:
  3783.      o /p option added.
  3784.  
  3785. 0.94.000    Nov 21 1997
  3786.  
  3787.  --- Bug fixes:
  3788.      o total size no longer displayed if /s is not specified.
  3789.      o partial size correctly displayed when using more than one
  3790.        specification in a given directory.
  3791.      o abend when /w was used with multiple specifications in
  3792.        different directories.
  3793.  --- New feature:
  3794.      o DIRCMD environment variable used if defined.
  3795.  
  3796. 0.93.000    Jun 17 1997
  3797.  
  3798.  --- Bug fix:
  3799.      o /s now completely implemented.
  3800.  
  3801. 0.92.000    May 31 1997
  3802.  
  3803.  --- New feature:
  3804.      o /v option added.
  3805.  
  3806. 0.91.000    Mar 14 1997
  3807.  
  3808.  --- Bug fix:
  3809.      o full path is displayed when /b is used in conjunction with /s.
  3810.  
  3811. 0.90.000    Sep 24 1996
  3812.  
  3813.  --- First public release
  3814.