home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / SDE_300.ZIP / SDE.HLP < prev    next >
Text File  |  1993-01-22  |  68KB  |  1,777 lines

  1.  
  2.             The SANSoft Development Environment for OS/2 2.0
  3.                          by A. Donnie Hale, Jr.
  4.               Copyright (C) 1992, 1993 SANSoft Development
  5.  
  6.                            SANSoft Development
  7.                             4971 Pegasus Ct.
  8.                            Hilliard, OH  43026
  9.                        Voice-mail: (614) 898-2675
  10.  
  11.                      Original Development done by:
  12.                            Daniel A. S. Baker
  13.  
  14.  SDE documentation. The complete text of this document is available
  15.  on-line via SDE's help facility.
  16.  
  17. +General
  18.  
  19. -Overview
  20.  
  21.  SDE is a file and directory management system and application
  22.  launcher for OS/2.  It has been specially designed to meet the needs
  23.  of OS/2 developers and power users.
  24.  
  25.  SDE's menu-driven interface, pop-up help facility, and powerful macro
  26.  language make formerly tedious tasks a breeze.  SDE macros can be
  27.  used to create a menu-driven front-end for any command-line utility,
  28.  and can execute any OS/2 or DOS program in the foreground or background.
  29.  
  30.  Please browse through the help facility to familiarize yourself with
  31.  the multitude of functions provided by this new release of SDE.
  32.  
  33. -Release notes
  34.  
  35.  Special thanks to: 
  36.    Daniel Baker, for permission to take this product forward
  37.    Mike Davis, for testing and excellent enhancement suggestions (EESs?)
  38.    My wife and children, for putting up with the development efforts
  39.  
  40.  Version 3.0.0 enhancements:
  41.  
  42.   SDE has been converted to a 32-bit application (save the interface).
  43.   A 'Task List' menu has been added, which mimics the PM Task List;
  44.    great for going straight to another full-screen session or restoring
  45.    and going to a minimized application.
  46.   The 'Select-Directory' menu now allows for speed-searching; the next
  47.    item down the list whose partial-directory name begins with the
  48.    pressed alpha-numeric character will be hilited (but not selected).
  49.   A 'Locate file' option exists which is useful in directories with a
  50.    large number of files. The next file which matches the partial file-
  51.    name is hilited; the search occures in the current directory listing's
  52.    order.
  53.   A 'Copy Tagged to Vol' menu option allows for copying tagged files
  54.    to another volume via a Volume followed by Directory pick list.
  55.   When in 'File details' mode, there are two columns of files (rather
  56.    than one); A '' indicates the Hidden, System, and/or Read-Only
  57.    attribute is set.
  58.   Screen-handling is somewhat improved, and the entry-screen is
  59.    restored at exiting.
  60.   When exiting SDE, confirmation is asked for.
  61.  
  62.  Version 2.2.1 enhancements:
  63.  
  64.   The 'File details' option now allows you to configure the file
  65.    display area.
  66.   The 'Ignore case' option now allows you to select whether file
  67.    searches performed by the 'Tag/Untag all containing' options will be
  68.    case-sensitive.
  69.   Volume names, as well as drive identifiers, are now displayed in the
  70.    volume menu unless the /v start-up parameter is supplied.
  71.   A new 'Keyboard speed' option allows you to set the typamatic rate
  72.    of the keyboard, if the hardware configuration supports it.
  73.   Clicking the mouse in the extreme lower left corner of the screen
  74.    (over the drive identifier) will cause the 'Volume' menu to be
  75.    displayed. As always, clicking the mouse over the path will bring up
  76.    the 'Directory' menu.
  77.   A carriage return-line feed combination is no longer automatically
  78.    appended after each @Write function call. Use the @; operator to
  79.    force a cr-lf to be written to the output file.
  80.  
  81. -Installation
  82.  
  83.  Pick or create a directory on your hard drive for SDE, and copy the
  84.  SDE zip file to that directory. Unzip the file to create the SDE
  85.  system files.
  86.  
  87.  Edit your CONFIG.SYS file, and add the statement 'SET SDE=D:\PATH',
  88.  where 'D:' represents the drive and '\PATH' the directory to which you
  89.  copied the SDE system.  Add this drive and directory to your PATH
  90.  statement as well.
  91.  
  92.  If you will be starting SDE from the WorkStation Shell, you may specify
  93.  that SDE be started in either a full-screen session or Presentation
  94.  Manager text window when you add the SDE program folder.
  95.  
  96.  Reboot, to make your new CONFIG.SYS take effect.
  97.  
  98. -Parameters
  99.  
  100.  SDE has a built-in screen blanker which blacks out the screen after
  101.  five minutes of keyboard and mouse inactivity.  Moving the mouse,
  102.  clicking the mouse, or pressing a key will restore the video to its
  103.  previous state.  To activate this feature, start the program with a
  104.  command-line option of /b or /B.  Note that this feature is only
  105.  useful in full-screen mode, since under PM, only the SDE application
  106.  window is blanked.
  107.  
  108.  Supplying a command-line option of /r or /R will cause SDE to
  109.  remember the help topic last viewed, and display that topic when the
  110.  F1 key is next pressed.
  111.  
  112.  The display of volume names in the 'Volume' menu may be supressed by
  113.  supplying a start-up parameter of /v or /V. Use this option if you are
  114.  a network user attached to a large number of volumes and the 'Volume'
  115.  menu consequently comes up slowly.
  116.  
  117. -Pulldown menus
  118.  
  119.  Open a pulldown menu by pressing Alt plus the hilited character in the
  120.  menu title, by pressing F10 and then the left or right arrow until the
  121.  desired menu is reached, or by clicking the mouse pointer in the menu
  122.  title.
  123.  
  124.  A menu option can be selected by pressing the hilited character of the
  125.  option, by moving the hilited bar to the option with the up or down
  126.  arrow keys and then pressing Enter, or by clicking the mouse pointer
  127.  on the option.
  128.  
  129.  To close an open pulldown menu, press F10, Esc, or click the mouse
  130.  outside the menu's window.
  131.  
  132. -Navigating
  133.  
  134.  Use the arrow keys to move the hilite bar around the file list. The
  135.  file list 'snakes' from the top left corner of the first page to the
  136.  bottom right corner of the first page, then to the top left corner of
  137.  the second page, and so on.  By continually pressing the down arrow
  138.  key you will eventually reach the last file in the list, and
  139.  vice-versa for the up arrow key.
  140.  
  141.  Press the Home key to jump to the top of the current column, again to
  142.  jump to the upper left corner of the current page, and again to jump
  143.  to the first file in the list.  Press the End key to jump to the
  144.  bottom of the current column, again to jump to the bottom right corner
  145.  of the current page, and again to jump to the last file in the list.
  146.  
  147.  If there are more files than will fit on one screen, a scroll bar will
  148.  be displayed on the right-hand side of the screen. Click the mouse
  149.  below the 'thumb' of the scroll bar (or press PgDn) to view the next
  150.  screen. Click the mouse above the thumb (or press PgUp) to view the
  151.  previous screen.
  152.  
  153. -Mouse support
  154.  
  155.  SDE supports the mouse for all operations save changing colors.  The
  156.  mouse may be used to select pulldown menus and options within them, to
  157.  select choices from pop-up menus, and to tag and untag files.
  158.  
  159.  When selecting options from the pulldown and pop-up-style menus, both
  160.  mouse buttons work the same.  Clicking either button of with the
  161.  pointer on top of a menu option will select that option; clicking
  162.  outside a menu's boundary will cancel the menu.  Pressing a button
  163.  with the mouse pointer at the top or bottom border of a menu will move
  164.  the hilite bar towards the top or bottom, respectively, scrolling the
  165.  menu if appropriate.
  166.  
  167.  In the file name area, the left mouse button moves the hilite bar and
  168.  tags or untags the file beneath the mouse pointer.
  169.  
  170.  In the file name area, the right mouse button moves the hilite bar to
  171.  the filename beneath the mouse pointer.  When the button is released,
  172.  and if there is an external macro file named BUTTON.XM in the SDE
  173.  program directory, the BUTTON.XM macro is loaded and executed.  This
  174.  macro may do anything that can be written in a SDE macro.
  175.  
  176.  The mouse movement speed may be set via the 'Mouse speed' option. This
  177.  changes the mouse speed not only for SDE, but for any full-screen
  178.  program executed from SDE in the SDE screen group that utilizes the
  179.  mouse.  Note that changing the mouse speed with SDE running in a PM
  180.  text window has no effect on the mouse speed, since this is controlled
  181.  by Presentation Manager.
  182.  
  183. -Editing keys
  184.  
  185.  When entering text into any SDE input field, you may use the
  186.  following editing keys:
  187.  
  188.  Insert       Toggles insert/overtype mode
  189.  Backspace    Deletes the character to left of the cursor
  190.  Delete       Deletes the character beneath the cursor
  191.  Home         Moves the cursor to the first character in the field
  192.  End          Moves the cursor to the last character in the field
  193.  Ctrl-Backsp  Deletes from the cursor to the end of the field
  194.  Left         Moves the cursor one character to the left
  195.  Right        Moves the cursor one character to the right
  196.  Ctrl-Left    Moves the cursor 5 characters to the left
  197.  Ctrl-Right   Moves the cursor 5 characters to the right
  198.  Esc          Cancels any changes made to the field
  199.  Enter        Accepts any changes made to the field
  200.  F1           Displays help
  201.  
  202. -Key/mouse shortcuts
  203.  
  204.  Press:       To:
  205.  
  206.  Tab          Display file information dialog (same as ^I)
  207.  Shift-Tab    Display file info dialog without tree info
  208.  Enter        Change file mask (same as ^M)
  209.  Esc          Display directory tree (same as ^D)
  210.  Insert       Duplicate hilited file (same as ^P)
  211.  Delete       Delete tagged files (same as @D)
  212.  Backspace    Rescan current directory
  213.  Keypad -     Jump to previous directory in tree
  214.  Keypad +     Jump to next directory in tree
  215.  
  216.  Click:       To:
  217.  
  218.  Scroll bar   Display previous/next page (same as PgUp/Dn)
  219.  Volume       Display volume menu (same as ^V)
  220.  Directory    Display directory tree (same as ^D)
  221.  File info    Display file/directory info (same as ^I)
  222.  Time         Display system info (same as @N)
  223.  
  224. +Menu Options
  225.  
  226. -File Menu
  227.  
  228.  About SDE...........: Displays the SDE logo; any key exits
  229.                                  
  230.  Information.........: Displays volume, directory, tree and file info
  231.                                  
  232.  Attributes..........: Allows changing of the hilited file's attributes
  233.                                  
  234.  Locate..............: Searches for files matching input file mask
  235.                                  
  236.  Duplicate hilited...: Duplicates hilited file to specified file name
  237.                                  
  238.  Rename hilited......: Renames hilited file to specified file name
  239.                                  
  240.  Execute hilited.....: Attempts to execute the hilited file
  241.                                  
  242.  Move tagged.........: Moves tagged files to directory selected from tree
  243.                                  
  244.  Copy tagged.........: Copies tagged files to specified location
  245.                                  
  246.  Copy tagged to Vol..: Copies tagged files to selected volume, directory
  247.                                  
  248.  Delete tagged.......: Upon verification, deletes tagged files
  249.                                  
  250.  Quit SDE............: Immediately quits SDE
  251.  
  252. -Select Menu
  253.  
  254.  Volume..............: Displays a menu of available volumes for selection
  255.                                  
  256.  Directory...........: Displays a menu of the available directories
  257.                                  
  258.  Mask................: Allows changing of the file mask for file display
  259.                                  
  260.  Tag all.............: Tags all displayed files in current directory
  261.                                  
  262.  Tag by wildcard.....: Tags all files matching specified file mask
  263.                                  
  264.  Tag all containing..: Tags all files containing specified string
  265.                                  
  266.  Untag all...........: Untags all displayed files in current directory
  267.                                  
  268.  Untag by wildcard...: Untags all files matching specified file mask
  269.                                  
  270.  Untag all containing: Untags all files containing specified string
  271.                                  
  272.  Sort method.........: Displays menu for sorting displayed files
  273.                                  
  274.  Screen colors.......: Displays sample screen for selecting colors
  275.                                  
  276.  Screen mode.........: Displays menu of available screen modes
  277.                                  
  278.  Mouse speed.........: Displays menu for selecting mouse sensitivity
  279.                                  
  280.  Keyboard speed......: Displays menu for selecting keyboard repeat rate
  281.  
  282. -Directory Menu
  283.  
  284.  Create subdir.......: Creates specified subdirectory below current one
  285.                                  
  286.  Remove current......: Attempts to delete the current subdirectory
  287.                                  
  288.  Rename current......: Renames the current directory as specified
  289.  
  290. -Macro Menu
  291.  
  292.  Edit macro set......: Displays a menu of macro keys for editing
  293.                                  
  294.  Debug mode..........: Toggles macro debug mode on / off
  295.                                  
  296.  Import from file....: Imports macros from an ASCII text file
  297.                                  
  298.  Export to file......: Exports macros to an ASCII text file
  299.  
  300. -Misc Menu
  301.  
  302.  Help on SDE.........: Displays the help menu
  303.                                  
  304.  Rescan volume.......: Rebuilds the directory tree for the current volume
  305.                                  
  306.  System Info.........: Displays basic information about the system
  307.                                  
  308.  Verify copy.........: Toggles copy verify mode on / off
  309.                                  
  310.  Capitals............: Toggles capitals mode on / off
  311.                                  
  312.  Ignore case.........: Toggles case sensitivity on / off
  313.                                  
  314.  File details........: Toggles file details mode on / off
  315.                                  
  316.  Command input.......: Executes the entered command line
  317.                                  
  318.  Previous commands...: Displays a menu of previously executed commands
  319.                                  
  320.  Command shell.......: Executes a command shell; exit returns to SDE
  321.                                  
  322.  Shell program.......: Enter the desired shell program name
  323.                                  
  324.  Task List...........: Displays a menu of switchable tasks
  325.  
  326. -Execute Menu
  327.  
  328.  See the Execute Menu help item under <About macros>
  329.  
  330. +Files
  331.  
  332. -Copying
  333.  
  334.  Tagged files may be copied to a directory on another volume, or to a
  335.  directory on the current volume via the 'Copy tagged' option.
  336.  
  337.  When this option is selected, you will be presented with an input
  338.  field where you may type the volume and path name of the target
  339.  directory. Enter the target path or simply press the Enter key to
  340.  display the directory tree of the current volume.
  341.  
  342.  If the target volume should become full during a copy operation, you
  343.  will be given an opportunity to insert a new volume and continue the
  344.  copy procedure.  The file that caused the overflow will be written, in
  345.  its entirety, to the new volume (files are never fragmented across
  346.  volumes).
  347.  
  348.  If the Verify option is on, all data written to disk during a copy
  349.  operation will be tested for integrity.  If verify is off, no such
  350.  check is performed.
  351.  
  352. -Moving
  353.  
  354.  Tagged files may be moved to a directory on the current volume only.
  355.  When the 'Move tagged' is selected, the directory tree of the current
  356.  volume is displayed. When a directory is chosen, the tagged files are
  357.  moved from the current directory to the selected directory.
  358.  
  359. -Deleting
  360.  
  361.  When the 'Delete tagged' option is selected, any tagged files in the
  362.  current directory are permanently deleted. You will be given an
  363.  opportunity to verify whether the group of tagged files should indeed
  364.  be deleted.
  365.  
  366. -Renaming
  367.  
  368.  The hilited file may be renamed with the 'Rename hilited' option. When
  369.  chosen, an input field will be displayed so that the new file name can
  370.  be entered.
  371.  
  372. -Locating
  373.  
  374.  Select the 'Locate' option to find all files on the current volume
  375.  which match a given wildcard file specification or filename. SDE will
  376.  search each directory, starting with the current, for matches.
  377.  
  378.  When a match is found, you will be given the opportunity to: (1)
  379.  continue the search, (2) stay in the directory where matches were
  380.  found, or, (3) abort the search.
  381.  
  382. -Duplicating
  383.  
  384.  The 'Duplicate hilited' option creates a file identical to that of the
  385.  hilited file. An edit field appears so that the new file can be named.
  386.  
  387. -Attributes
  388.  
  389.  The hidden, system read-only, and archive attributes of the hilited
  390.  file may be changed with the 'Attributes' option.
  391.  
  392.  From the menu displayed, you may set the file's hidden, system,
  393.  read-only, and archive bits as desired by pressing the space bar.
  394.  Press Enter to make the changes permanent, or Esc to abort the menu.
  395.  
  396. -Sorting
  397.  
  398.  The 'Sort method' option allows you to choose whether the file list
  399.  will be displayed in ascending or descending name, extension,
  400.  date/time, or file size order.
  401.  
  402. -Tagging/Untagging
  403.  
  404.  Use the space bar to tag or untag the hilited file. The hilite bar
  405.  will advance to the next file in the list, making it easy to tag
  406.  blocks of files.
  407.  
  408.  You may also use the mouse to tag/untag files. Press the left mouse
  409.  button to hilite and tag/untag the file beneath the mouse pointer.
  410.  
  411.  Tagged files are marked by a pair of arrows on either side, and may,
  412.  depending on your color selections, appear in a special color.
  413.  
  414.  The 'Tag/Untag by wildcard' options allow you to tag/untag any files
  415.  which match a given wildcard file specification. Any number of
  416.  wildcards, separated by spaces, may be entered into the input field
  417.  displayed by these options.
  418.  
  419.  The 'Tag/Untag all containing' options allow you to tag or untag all
  420.  files which contain a given search string.  When one of these options
  421.  is selected, you will be asked to enter a search string, which may be
  422.  up to 255 characters long. The setting of the 'Ignore case' option
  423.  determines whether the search is case-sensitive.
  424.  
  425.  Tagged files may be copied, deleted, and moved en masse, as well as
  426.  fed to SDE macros which make use of the @Tagged macro function.
  427.  
  428. -Masking
  429.  
  430.  The 'Mask' option allows you to enter a wildcard file specification
  431.  which will be used to selectively display only those files in the
  432.  current directory which match the specification.  The standard * and ?
  433.  wildcard characters are supported.
  434.  
  435. +Directories
  436.  
  437. -Switching
  438.  
  439.  The 'Directory' option allows you to change the current working
  440.  directory. When the option is selected, the directory tree of the
  441.  current volume is displayed.
  442.  
  443.  Note that changing the SDE directory may also be accomplished via the
  444.  @ChDir macro function.
  445.  
  446. -Creating
  447.  
  448.  The 'Create subdir' option allows you to create a new sub-directory of
  449.  the current directory.  An input field will be displayed so that the
  450.  new directory can be named.
  451.  
  452. -Removing
  453.  
  454.  The 'Remove current' option, valid for empty directories only, removes
  455.  the current directory from the volume.  Note that a directory in use
  456.  by another OS/2 process cannot be removed.
  457.  
  458. -Renaming
  459.  
  460.  The 'Rename current' option renames the current directory.  Note that
  461.  a directory in use by another OS/2 process cannot be renamed.
  462.  
  463. -Rescanning
  464.  
  465.  The current directory may be rescanned (necessary if files have been
  466.  added to or removed from the directory by programs other than SDE
  467.  since it was entered) by selecting the current directory (denoted by
  468.  an arrow) from the directory tree.  Pressing the Backspace key has the
  469.  same effect.
  470.  
  471. +Volumes
  472.  
  473. -Switching
  474.  
  475.  The 'Volume' option allows you to work on a different volume. When
  476.  this option is chosen, a list of all the currently attached volumes
  477.  (the A: and B: volumes are always considered attached) is displayed in
  478.  a pop-up menu. Note that volume names are not retrieved for volumes A:
  479.  and B:, they will appear as "DISKETTE" in this menu.
  480.  
  481.  Selecting a volume from this list takes you to the default directory
  482.  of the selected volume.
  483.  
  484.  If a map for the chosen volume exists in the SDE directory, it will be
  485.  read to speed access to the device.  Otherwise, the volume's directory
  486.  structure will be examined and a map file for that volume will be
  487.  created automatically.
  488.  
  489.  Note that changing the current SDE volume may also be accomplished via
  490.  the @ChDir macro function.
  491.  
  492. -Rescanning
  493.  
  494.  If directories are added or removed from a volume by programs other
  495.  than SDE, a rescan of the volume is required to bring the volume's
  496.  map file (which contains the volume's directory structure) up to date.
  497.  
  498.  To rebuild the map file, select the 'Rescan volume' option. Note that
  499.  map files are not built for the A: and B: diskette volumes.
  500.  
  501. +About macros
  502.  
  503. -Introduction
  504.  
  505.  Macros are an extremely powerful SDE feature; they allow you to
  506.  launch any program from SDE, and build customized interfaces for
  507.  programs that accept command-line arguments.
  508.  
  509.  OS/2's standard command-line interface works well enough, but results
  510.  in a good deal of typing on your part.  Macros are a short-hand way of
  511.  entering a commands into the operating system, as you will see in the
  512.  following example:
  513.  
  514.  Assume you have a program called VIEW, which lets you look at the
  515.  contents of text files.  Also assume that VIEW, like other programs of
  516.  its kind, allows you to specify multiple filenames on the command
  517.  line. A single VIEW command might look like this:
  518.  
  519.  VIEW FILE1.EXT FILE2.EXT FILE3.EXT FILE4.EXT
  520.  
  521.  With the following SDE macro assigned to the 'V' key, simply point to
  522.  and tag the files FILE1.EXT, FILE2.EXT, FILE3.EXT, and FILE4.EXT, and
  523.  press 'V'.
  524.  
  525.  VIEW @Tagged()
  526.  
  527.  The traditional OS/2 command above, over 40 characters long, has been
  528.  reduced by SDE to four mouse clicks and one keystroke!
  529.  
  530.  You may have 62 macros (assigned to the keys a-z, A-Z, and 0-9) active
  531.  at one time.  With multiple macro sets (see the Import and Export
  532.  features), you have a virtually unlimited number of macros at your
  533.  disposal.
  534.  
  535.  To create a macro, select the 'Edit macro set' option. A menu of all
  536.  the macros in your current macro set will be displayed, each preceded
  537.  by the key to which the macro is assigned.  Select a macro to edit,
  538.  then type your macro in the edit field.  Press F1 if you need help
  539.  while editing your macro.  Press Enter to save your macro.  Hereafter,
  540.  your macro may be executed by simply pressing the key to which the
  541.  macro is assigned.
  542.  
  543. -Evaluation
  544.  
  545.  When a SDE macro is executed, the SDE macro processor searches your
  546.  macro for macro functions.  Once found, SDE will then take various
  547.  actions depending on the function name given.  If the macro processor
  548.  encounters text which lies outside a macro function, the text is
  549.  copied directly into the expanded macro (which, once processing is
  550.  complete, is the command that will be given to the operating system
  551.  for execution).
  552.  
  553.  Many SDE macro functions return a result to the point from which they
  554.  are called.  The return value from one of these functions is a string
  555.  of zero or more characters.  This value may be used as input to
  556.  another SDE macro function that accepts parameters (referred to as
  557.  nesting), or, if not nested, the function result is inserted into the
  558.  expanded macro at the point of the function call, replacing the
  559.  function name and function parameters.
  560.  
  561.  Functions are processed in the order they appear (left to right)
  562.  except in the case where functions are nested.  Nested functions are
  563.  recursively evaluated from the innermost nested to the outermost.
  564.  Such nesting may occur to any depth.
  565.  
  566.  When all SDE macro functions have been removed from the macro via the
  567.  evaluation process, the expanded macro, if not empty, is fed to the
  568.  operating system for execution. Use the @Options function to set
  569.  execution options that will be applied to the command at run-time.
  570.  
  571.  Note that a macro need not call a program to be useful; through clever
  572.  use of macro functions, quite useful side-effect-only macros can be
  573.  created. Usually, such macros are written using functions, such as
  574.  @Key, @Write, and @ChDir, that return no value.
  575.  
  576.  The maximum length of an expanded macro is 8192 bytes. Unpredictable
  577.  (although not dangerous) results may occur if you attempt to pass more
  578.  than 8K of data to an application.
  579.  
  580. -Debug mode
  581.  
  582.  When the 'Debug mode' option is turned on, SDE will treat each macro
  583.  as if the DUMP execution option (see the description of the @Options
  584.  macro function) is specified in the macro.  This causes the contents
  585.  of the expanded macro to be dumped to the screen rather than fed to
  586.  the operating system for execution.  To resume normal macro execution,
  587.  turn the mode off by selecting the 'Debug mode' option again.
  588.  
  589. -Function names
  590.  
  591.  SDE macro function names always begin with a '@' character. If you
  592.  must use the '@' character in a macro in a way that does not entail
  593.  the start of a macro function name, you must use the syntax '@@' (see
  594.  the 'Special @ uses' topic).
  595.  
  596.  The macro processor is not case-sensitive as far as function names are
  597.  concerned. For instance, the @Tagged function name may be written as
  598.  either '@tagged', '@Tagged', '@TAGGED', or any other case-wise
  599.  variation of this name.
  600.  
  601.  Only the minimum number of characters required to insure uniqueness
  602.  are required. The function name @Hilited may be written as just '@H',
  603.  since no other macro function names begin with the letter 'H'.  The
  604.  @External function, however, may be abbreviated to nothing shorter
  605.  than '@Ext', since there is a distinct @Exists function.
  606.  
  607.  If a function name is abbreviated, the first macro function name (in
  608.  alphabetical order) that matches the abbreviation will be selected, so
  609.  please abbreviate with care.
  610.  
  611.  Note that in some instances (see the 'Execute menu' topic and the
  612.  @Write macro function description, in particular) a function name may
  613.  not be abbreviated.
  614.  
  615. -Parameters
  616.  
  617.  All macro functions require a parameter, enclosed in delimiters, which
  618.  must follow the function name.  The delimiters must be supplied even
  619.  if the parameter is empty. A typical SDE function call will look like
  620.  this:
  621.  
  622.  @Function(Param)
  623.  
  624.  For functions that require multiple parameters (such as @Menu and
  625.  @Select), each parameter must be encased in delimiters, as well as the
  626.  entire parameter list, like so:
  627.  
  628.  @Function((Param1)(Param2)(Param3))
  629.  
  630.  Delimiters may be any of the open/close symbol pairs: parentheses, (),
  631.  curly brackets, {}, and square brackets, [].  Choose your delimiters
  632.  for a function such that the text between the delimiters does not
  633.  itself contain either of these open/close symbols, unless they encase
  634.  macro parameters (as in the @Menu and @Select functions), or are
  635.  associated with a nested SDE macro function.  The following macro
  636.  fragment is NOT acceptable, because of the left parenthesis embedded
  637.  in the last @Menu parameter:
  638.                                               
  639.  @Prompt(Translation?) @Menu((Binary)()(Text)((CRLF ASCII))
  640.  
  641.  The proper form of the macro fragment above would use curly brackets
  642.  or square brackets as @Menu function delimiters, as in:
  643.  
  644.  @Prompt(Translation?) @Menu{{Binary}{}{Text}{(CRLF ASCII}}
  645.  
  646. -Variables
  647.  
  648.  Macro variables operate much the same as variables in many programming
  649.  languages; you may set and query the contents of a variable, and use
  650.  the variable in place of hard-coded text. Each variable is associated
  651.  with (or, in other words, has a value of) a text string of zero or
  652.  more characters.
  653.  
  654.  Variable names and their associated strings may consist of any run of
  655.  ASCII characters, with no restrictions as to length save that the
  656.  length of all variable names plus the length of all variable strings
  657.  remains less than 32K, the size of the heap reserved by SDE for
  658.  variable use.  The setting of any variable which would cause this
  659.  limit to be exceeded is ignored.
  660.  
  661.  SDE is not case-sensitive with regards to variable names. Therefore,
  662.  the variable names 'User' and 'user' refer to the same variable.
  663.  
  664.  To set the contents of a variable, use the @Set macro function. To
  665.  recall the value of a variable, use the @Val function.  Examine the
  666.  following macro fragment:
  667.  
  668.  @Set((name)(@Prompt(Your name?)@Input())) @Abort(Hello, @Val(name)!)
  669.  
  670.  This macro assigns whatever is typed into the input field displayed by
  671.  the @Input function to the variable 'name'. The macro is then aborted
  672.  with a friendly message.
  673.  
  674. -External macros
  675.  
  676.  While relatively short macros (those less than 256 characters in
  677.  length) may be entered into SDE directly via the 'Edit macro set'
  678.  option, longer and more complex macros can be written and executed via
  679.  SDE's external macro facility.
  680.  
  681.  Use any ASCII text editor to create and edit an external macro. The
  682.  extension of '.XM' is recommended, but SDE will properly load an
  683.  external macro with any extension.  In this file, enter a macro
  684.  exactly as you would in SDE, but the macro may be up to 8192 bytes
  685.  long and may be formatted - spread across any number of lines and
  686.  indented - to your liking.
  687.  
  688.  Important! All leading spaces, trailing spaces, carriage returns and
  689.  line feeds are stripped from each line of the external macro file.  To
  690.  keep significant spaces at the end of a line, use underscore, '_',
  691.  characters in place of the significant spaces.
  692.  
  693.  To execute an external macro, create an internal macro that uses the
  694.  @External function to load and execute the external macro file.  If a
  695.  path is specified in the external macro filename, then the file is
  696.  loaded from that directory. Otherwise, SDE looks in the current
  697.  directory for the file. If not found in the current directory, the
  698.  search defaults to the SDE program directory.
  699.  
  700.  Please see the '.XM' files shipped with SDE for examples of external
  701.  macros.  You are, of course, free to modify or build on these macros
  702.  to suit your needs.
  703.  
  704.  On start-up, the external macro AUTOEXEC.XM is automatically loaded
  705.  from the SDE program directory, if the file exists. This macro may do
  706.  anything that can be written in a SDE macro.
  707.  
  708.  See the 'Mouse support' section for information about the BUTTON.XM
  709.  external macro which is called when the right mouse button is pressed.
  710.  
  711. -Execute menu
  712.  
  713.  The Execute pulldown menu allows you to view the names of selected
  714.  internal macros, and to execute a macro from the menu.
  715.  
  716.  To add a macro to the Execute menu, edit the macro and place a prompt
  717.  (using the @Prompt macro function) at the very front of the desired
  718.  macro. The text appearing between the delimiters of the @Prompt
  719.  function will become the macro's title.
  720.  
  721.  Note! This is one case in which a function name must not be
  722.  abbreviated; for it to be recognized as a macro title, the full
  723.  function name @Prompt must be specified.
  724.  
  725.  The first twenty or so characters of a macro's title will be added to
  726.  the Execute menu as a selectable option.  The accelerator key for the
  727.  option will be the key to which the macro is assigned.
  728.  
  729.  Avoid using macro functions inside macro titles, since functions are
  730.  only expanded at run-time.  Also avoid using the tilde '~' character
  731.  in macro titles.  Macro titles must not begin with a hyphen '-'.
  732.  
  733. -Import from file
  734.  
  735.  The 'Import from file' option allows you to read a set of macros from
  736.  a text file.  Each macro in this file must reside on its own line, be
  737.  less than 256 bytes long, and have the form:
  738.  
  739.  KEY - MACRO TEXT
  740.  
  741.  When you select the 'Import from file' option, you will be prompted
  742.  for a macro file name.  Enter only the primary name of the import
  743.  file; the extension '.MAC' will be appended automatically.  The file
  744.  will be read from the SDE program directory.
  745.  
  746.  If your current macro set has changed since your last export
  747.  operation, you will be asked if you want to save the changes to your
  748.  current set.
  749.  
  750.  Once a macro set has been imported, your Execute menu will be updated
  751.  to reflect the titles of your new macro set.
  752.  
  753. -Export to file
  754.  
  755.  The 'Export to file' option allows you to write your current macro set
  756.  to a text file.  This file can be edited with an ASCII text editor, if
  757.  necessary, and read back into SDE with the Import feature.
  758.  
  759.  As with the Import option, enter only the primary name of the macro
  760.  file when prompted for the export file name; the extension '.MAC' will
  761.  be appended automatically.  The file will be saved in the SDE program
  762.  directory.
  763.  
  764.  The Import and Export features allow you to create custom macro sets
  765.  for working in two or more environments, and give you the flexibility
  766.  to re-configure your entire keyboard in seconds.
  767.  
  768. -Samples
  769.  
  770.  The SAMPLE.MAC file shipped with SDE contains several examples of
  771.  both simple and complex macros. To load the macros in this file into
  772.  the SDE environment, first save your current macro set (if you have
  773.  already created one or more macros) by selecting the 'Export to file'
  774.  option. Then, select the 'Import from file' option and enter the macro
  775.  set name 'SAMPLE' in the input field.
  776.  
  777.  See the SAMPLE.DOC file for complete descriptions of the macros
  778.  contained in the SAMPLE.MAC file.
  779.  
  780. +Macro functions
  781.  
  782. -Abort
  783.  
  784.  Syntax: @Abort(Message)
  785.  Abbrev: @A (Minimum)
  786.  
  787.  The macro is aborted with an error message, supplied as the sole
  788.  argument, when this function is encountered. The message may be empty,
  789.  if desired, in which case no message is displayed to the user.
  790.  
  791.  This function has no return value.
  792.  
  793. -ChDir
  794.  
  795.  Syntax: @ChDir(Path)
  796.  Abbrev: @C (Minimum)
  797.  
  798.  Changes the current SDE directory to the path specified in the sole
  799.  argument. The path given may contain a volume identifier, in which
  800.  case the current volume is changed as well.
  801.  
  802.  This function has no return value.
  803.  
  804. -Comment
  805.  
  806.  Syntax: @Comment(Text)
  807.  Abbrev: @CO (Minimum)
  808.  
  809.  Denotes a comment.  Whatever appears between the parameter delimiters
  810.  of this function is ignored.
  811.  
  812.  This function has no return value.
  813.  
  814. -Edit
  815.  
  816.  Syntax: @Edit(Variable)
  817.  Abbrev: @E (Minimum)
  818.  
  819.  Displays an input field for a the purpose of editing the contents of a
  820.  macro variable whose name is given as an argument to this function.
  821.  The @Edit function is a short-hand way of coding the following macro
  822.  sequence:
  823.  
  824.  @Set((var)(@Input(@Val(var)))) @Val(var)
  825.  
  826.  The title of an input field will be the prompt established by the
  827.  @Prompt function, or 'Input:' if none.
  828.  
  829.  The post-edit contents of the variable are returned by this function.
  830.  If the field is canceled with the Esc key, the macro is aborted.
  831.  
  832. -Exists
  833.  
  834.  Syntax: @Exists(File)
  835.  Abbrev: @EX (Minimum)
  836.  
  837.  This function indicates whether the specified file exists by returning
  838.  the file name if the file exists, or empty if the file does not exist.
  839.  
  840.                                  
  841.  
  842.  The following macro fragment will abort the current macro if the file
  843.  entered into the variable edit field does not exist.
  844.  
  845.  @Edit(file) @QuitIf((@Exists(@Val(file)))(@Val(file) does not exist!))
  846.  
  847. -External
  848.  
  849.  Syntax: @External(File)
  850.  Abbrev: @EXT (Minimum)
  851.  
  852.  This function loads and executes an external macro. External macros
  853.  are much like the standard internal macros, but they reside in disk
  854.  files, one macro per file.  They are most frequently used when the
  855.  length of a macro exceeds the 256 character limit of internal macros.
  856.  
  857.  If a path is specified in the external macro filename, then the file
  858.  is loaded from that directory. Otherwise, SDE looks in the current
  859.  directory for the file. If not found in the current directory, the
  860.  search defaults to the SDE program directory.
  861.  
  862.  See the 'External macros' help topic for additional information on
  863.  external macro use and restrictions.
  864.  
  865.  The return value of this function is the return value of the external
  866.  macro.
  867.  
  868. -FDate
  869.  
  870.  Syntax: @FDate(File)
  871.  Abbrev: @F (Minimum)
  872.  
  873.  This function returns the date/time stamp of the file given in the
  874.  argument. This information reflects the date and time the file was
  875.  last modified, and has the format:
  876.  
  877.  YR-MO-DY HR:MN:SC
  878.  
  879.  This string, since its components are ordered from the most to least
  880.  significant, may be used in less than, greater than, and equal to
  881.  comparisons.
  882.  
  883.  Note that the date/time stamp of hilited/tagged files is available
  884.  through the @Hilited and @Tagged functions.
  885.  
  886.  The return value is the date/time string of the specified file, or the
  887.  empty string if the file does not exist.
  888.  
  889. -FSize
  890.  
  891.  Syntax: @FSize(File)
  892.  Abbrev: @FS (Minimum)
  893.  
  894.  This function returns the size in bytes of the file given in the
  895.  argument.
  896.  
  897.  This string may be used in less than, greater than, and equal to
  898.  comparisons.
  899.  
  900.  Note that the size of hilited/tagged files is available through the
  901.  @Hilited and @Tagged functions.
  902.  
  903.  The return value is a string containing the size of the specified
  904.  file, or the empty string if the file does not exist.
  905.  
  906. -Hilited
  907.  
  908.  Syntax: @Hilited(Portion)
  909.  Abbrev: @H (Minimum)
  910.  
  911.  Returns the specified portion of the hilited filename. The argument
  912.  must evaluate to one of the following:
  913.  
  914.  Name      - Returns the primary filename (sans period and extension)
  915.              of the currently hilited file.
  916.  Extension - Returns the extension (sans period) of the currently
  917.              hilited file.
  918.  Full      - Returns the full file specification (volume, path, and
  919.              filename) of the currently hilited file.
  920.  Date      - Returns the date/time stamp, in YR-MO-DY HR:MN:SC format,
  921.              of the currently hilited file.
  922.  Size      - Returns the size, in bytes, of the currently hilited file.
  923.  
  924.  The identifiers above may be abbreviated as desired; only the first
  925.  character of the supplied identifier is actually significant.
  926.  
  927.  If the argument is empty, then the currently hilited filename, both
  928.  primary name and extension, are returned.
  929.  
  930.                                  
  931.  
  932.  For example, if the current directory is 'C:\DOCUMENT', and the
  933.  currently hilited file is 'LETTER.DOC':
  934.  
  935.  @Hilited()  returns LETTER.DOC
  936.  @Hilited(N) returns LETTER
  937.  @Hilited(E) returns DOC
  938.  @Hilited(F) returns C:\DOCUMENT\LETTER.DOC
  939.  @Hilited(D) returns 89-10-08 13:45:26
  940.  @Hilited(S) returns 4096
  941.  
  942. -If<=>
  943.  
  944.  Syntax: @If<((Value)(Case1)(Expression1)...(Case2)(Expression2)(Else))
  945.  Abbrev: @IF< (Minimum)
  946.  Syntax: @If>((Value)(Case1)(Expression1)...(Case2)(Expression2)(Else))
  947.  Abbrev: @IF> (Minimum)
  948.  Syntax: @If=((Value)(Case1)(Expression1)...(Case2)(Expression2)(Else))
  949.  Abbrev: @IF= (Minimum)
  950.  
  951.  These functions allow conditional macro execution based on the value
  952.  of an expression.
  953.  
  954.  The expression given in the first argument, (Value), is evaluated, as
  955.  is the next expression, (Case1).  If (Value) is:
  956.  
  957.      less than (Case1) for @If<,
  958.      equal to (Case1) for @If=,
  959.      greater than (Case1) for @If>,
  960.  
  961.  then next expression, (Expression1), is executed and the function is
  962.  exited.  Otherwise, if another case/expression pair is given, the
  963.  original expression, (Value), is compared with the next expression in
  964.  the list, (Case2).  If (Value) is:
  965.  
  966.      less than (Case2) for @If<,
  967.      equal to (Case2) for @If=,
  968.      greater than (Case2) for @If>,
  969.  
  970.  execution branches to the following expression, (Expression2) and the
  971.  condition is exited.  This process continues for as many
  972.  case/expression pairs as are contained in the parameter list.
  973.  
  974.  If a single trailing argument is supplied, in this case (Else), it is
  975.  executed if all of the preceding comparisons have failed.  This last
  976.  argument is optional.
  977.  
  978.  Note that the comparison mechanism is not case-sensitive.
  979.  
  980.                                  
  981.  
  982.  For example, the following macro sends the hilited file, if it has an
  983.  extension equal to 'DOC', to the 'VIEWDOC' program, if equal to 'PAG'
  984.  to the 'VIEWPAG' program, or to another program, 'VIEWFILE', if
  985.  neither 'DOC' nor 'PAG'.
  986.  
  987.  @If=((@Hilited(E))(DOC)(VIEWDOC)(PAG)(VIEWPAGE)(VIEWFILE)) @Hilited()
  988.  
  989.                                  
  990.  
  991.  The return value of this function is the return value of the first
  992.  expression whose case satisfies the comparison, or the result of the
  993.  else condition if none of the comparisons are satisfied.
  994.  
  995. -Input
  996.  
  997.  Syntax: @Input(Text)
  998.  Abbrev: @IN (Minimum)
  999.  
  1000.  Displays an input field for a user-supplied string, and returns the
  1001.  text entered into the field.  The text supplied in the parameter is
  1002.  placed in the input field as a default.
  1003.  
  1004.  The title of an input field will be the prompt established by the
  1005.  @Prompt function, or 'Input:' if none.
  1006.  
  1007.  The text entered into the input field is returned. If the input is
  1008.  canceled with the Esc key, the macro is aborted.
  1009.  
  1010. -Internal
  1011.  
  1012.  Syntax: @Internal(Macros)
  1013.  Abbrev: @INT (Minimum)
  1014.  
  1015.  This function executes the internal macros (those created within SDE)
  1016.  named in the argument.
  1017.  
  1018.  This function allows you to extend the 256 character limit of a single
  1019.  macro, but for extremely large and complicated macros, consider using
  1020.  an external macro.
  1021.  
  1022.                                  
  1023.  
  1024.  For example, the following macro fragment calls the macros assigned to
  1025.  the 'C' and 'S' keys:
  1026.  
  1027.  @Internal(CS) TYPE @Hilited()
  1028.  
  1029.  If the macros for the 'C' and 'S' keys read:
  1030.  
  1031.  @Options(CMD MSG)
  1032.  @Options(FORE:RED BACK:BLACK)
  1033.  
  1034.  respectively, then the macro above is identical to one reading:
  1035.  
  1036.  @Options(CMD MSG) @Options(FORE:RED BACK:BLACK) TYPE @Hilited()
  1037.  
  1038.                                  
  1039.  
  1040.  The return value of this function is the return value of the macro(s)
  1041.  called.
  1042.  
  1043. -Key
  1044.  
  1045.  Syntax: @Key(key key ... key)
  1046.  Abbrev: @K (Minimum)
  1047.  
  1048.  This, the AutoKey function, adds the key names contained in the
  1049.  argument to the SDE keystroke buffer (not the OS/2 keyboard buffer)
  1050.  in the order they appear.  When keystrokes are fed to the keystroke
  1051.  buffer in this manner, SDE will act as if they had been typed at the
  1052.  keyboard manually. Note that the actual processing of the keys in the
  1053.  keystroke buffer is performed after macro termination.
  1054.  
  1055.  Valid key names are as follows (case is not significant):
  1056.  
  1057.  F1 thru F12, TAB, SHIFT-TAB, ESCAPE, INSERT, DELETE, HOME, END, PGUP,
  1058.  PGDN, UP, DOWN, LEFT, RIGHT, ENTER, BACKSPACE, SPACE, CTRL-A thru
  1059.  CTRL-Z, CTRL-F1 thru CTRL-F12, CTRL-BACKSPACE, ALT-A thru ALT-Z, ALT-0
  1060.  thru ALT-9, ALT-BACKSPACE, and, of course, single character keys such
  1061.  as A thru Z, 0 thru 9, +, -, *, etc.
  1062.  
  1063.  Each key name (except single character key names) must be separated by
  1064.  a space.  Spaces in this string are not significant; to cause a space
  1065.  character to be inserted into the keyboard buffer, use the key name
  1066.  SPACE.
  1067.  
  1068.  If an AutoKey sequence causes an external application to be executed,
  1069.  any pending keystrokes in the keystroke buffer will be saved until
  1070.  that application terminates (unless the WAIT or MSG execution option
  1071.  is supplied, since either clears the SDE keyboard buffer).
  1072.  
  1073.  Note! The ESC, DELETE, and INSERT keys in the SDE interface are
  1074.  aliases for the ^V, @D, and ^P keystrokes. These aliases should never
  1075.  be used in the @Key function to perform actions associated with the
  1076.  ^V, @D and ^P keys; instead, use CTRL-V, ALT-D, or CTRL-P.
  1077.  
  1078.                                  
  1079.  
  1080.  For example, the following AutoKey sequence changes the current file
  1081.  mask to display only those files having the same extension as the
  1082.  currently hilited file:
  1083.  
  1084.  @Key(enter *.@Hilited(E) enter)
  1085.  
  1086.  The next AutoKey sequence copies all currently tagged files to the
  1087.  directory 'BACKUP' on the A: drive:
  1088.  
  1089.  @Key(alt-c a:\backup enter)
  1090.  
  1091.                                  
  1092.  
  1093.  This function has no return value.
  1094.  
  1095. -Lower
  1096.  
  1097.  Syntax: @Lower(String)
  1098.  Abbrev: @L (Minimum)
  1099.  
  1100.  Returns the lower-case equivalent of the specified string. This
  1101.  function is provided for cosmetic purposes only; all SDE comparison
  1102.  functions are case-independent.
  1103.  
  1104. -Menu
  1105.  
  1106.  Syntax: @Menu((Option)(Expression)...(Option)(Expression))
  1107.  Abbrev: @M (Minimum)
  1108.  
  1109.  This function builds and displays a MacroMenu, which is a pop-up menu
  1110.  whose options, and associated actions, are specified by the macro
  1111.  author.
  1112.  
  1113.  Each option, enclosed in open/close delimiters, represents a single
  1114.  line in the pop-up menu. Each must be followed by an expression, also
  1115.  enclosed in delimiters, which will be evaluated if the associated
  1116.  option is selected.  Up to 16 option/expression pairs may be specified
  1117.  in a single MacroMenu.
  1118.  
  1119.  MacroMenus may be nested; that is, a MacroMenu may appear inside an
  1120.  expression of a higher-level MacroMenu. Such nesting may occur to any
  1121.  depth.
  1122.  
  1123.  The title of a MacroMenu will be the prompt established by the @Prompt
  1124.  function, or 'Options:' if none.
  1125.  
  1126.  To select a MacroMenu option, you may press the first letter of the
  1127.  option's name, or hilite the option and press the Enter key.
  1128.  
  1129.  The return value of this function is the result of the expansion of
  1130.  the expression for the selected option.  If the MacroMenu is canceled,
  1131.  the current macro is aborted.
  1132.  
  1133. -Message
  1134.  
  1135.  Syntax: @Message(Message)
  1136.  Abbrev: @MES (Minimum)
  1137.  
  1138.  This function displays the given text in a one-line window and pauses
  1139.  until the user presses a key or clicks a mouse button.
  1140.  
  1141.  This function has no return value.
  1142.  
  1143. -Options
  1144.  
  1145.  Syntax: @Options(option option ... option)
  1146.  Abbrev: @O (Minimum)
  1147.  
  1148.  Sets the execution options that will be used when the macro's program
  1149.  is run. Multiple options, separated by blanks, may be specified.  The
  1150.  valid options are (order and case are not significant):
  1151.  
  1152.  BACK:COLOR
  1153.  
  1154.     Sets the teletype-mode background color to the color name specified
  1155.     immediately after the colon. This color will be used by any
  1156.     teletype-mode program executed from SDE in the SDE screen group.
  1157.     After the program terminates, the default colors (those of the SDE
  1158.     file list) are restored. Valid background color names are (case is
  1159.     not significant):
  1160.  
  1161.     BLACK, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE
  1162.  
  1163.  BEEP
  1164.  
  1165.     Beeps the PC's speaker after the program called by the macro
  1166.     terminates.
  1167.  
  1168.  CMD
  1169.  
  1170.     Uses the OS/2 command processor, CMD.EXE, to execute the program or
  1171.     batch file in the SDE session as opposed to direct SDE execution.
  1172.     Use this option when running:
  1173.  
  1174.      Presentation Manager programs,
  1175.      OS/2 batch (.CMD) files,
  1176.      Programs that may require Control-Break or Control-C,
  1177.      Programs whose output is being redirected or piped,
  1178.      Internal OS/2 commands (like TYPE, DIR, DEL, etc.).
  1179.  
  1180.     This option is ignored if the LAUNCH option is also specified in
  1181.     the options list.
  1182.  
  1183.  DIR
  1184.  
  1185.     Rescans the current directory after macro execution (the directory
  1186.     is not rescanned by default).  Use this option when the execution
  1187.     of a macro will result in the creation or deletion of files.
  1188.  
  1189.  DUMP
  1190.  
  1191.     Dumps the expanded macro to the screen for debugging instead of
  1192.     executing the macro. This option may be turned on globally (for all
  1193.     macros) via the 'Debug mode' option. This is generally not useful
  1194.     for debugging side-effect only macros (those that call no
  1195.     executable program or batch file).
  1196.  
  1197.  FORE:COLOR
  1198.  
  1199.     Sets the teletype-mode foreground color to the color name specified
  1200.     immediately after the colon. This color will be used by any
  1201.     teletype-mode program executed from SDE in the SDE screen group.
  1202.     After the program terminates, the default colors (those of the SDE
  1203.     file list) are restored. Valid foreground color names are (case is
  1204.     not significant):
  1205.  
  1206.     BLACK, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE
  1207.  
  1208.     The foreground color name may be appended with a '+' character to
  1209.     indicate a bright color; the color name alone indicates a dim
  1210.     color.
  1211.  
  1212.  LAUNCH
  1213.  
  1214.     Launches the macro's program in a separate screen group. If this
  1215.     option is specified, then the following launch options may also
  1216.     appear in the @Options parameter list (order and case are not
  1217.     significant):
  1218.  
  1219.     OPEN, CLOSE, DIRECT
  1220.  
  1221.        The OPEN open specifies that the command processor be used to
  1222.        launch the specified non-PM program or batch file.  The new
  1223.        session will remain open after the program terminates.
  1224.  
  1225.        The CLOSE option directs SDE to use the command processor to
  1226.        launch the specified non-PM program or batch file.  The new
  1227.        session will be closed after the program terminates.
  1228.  
  1229.        If the DIRECT option is given, the macro's program is launched
  1230.        directly, and not by the command processor. This method is
  1231.        slightly faster and somewhat more memory conservative than
  1232.        launching via the command processor, but cannot be used to
  1233.        execute batch files.
  1234.  
  1235.        The OPEN, CLOSE, and DIRECT options are mutually exclusive.
  1236.  
  1237.     FS, WIN, PM
  1238.  
  1239.        Valid for non-PM programs and batch files only, the FS option
  1240.        directs SDE to start the program in a new full-screen session.
  1241.        Use this option to force applications that default to PM text
  1242.        window operation to run in full-screen mode.
  1243.  
  1244.        Valid for non-PM programs and batch files only, the WIN option
  1245.        directs SDE to start the program in a Presentation Manager text
  1246.        window, if the program allows.
  1247.  
  1248.        The PM option is used to specify that the program to be run is a
  1249.        Presentation Manager application. This option is usually omitted
  1250.        for standard PM programs since the program will be recognized as
  1251.        such at load time.
  1252.  
  1253.        The FS, WIN, and PM options are mutually exclusive.
  1254.  
  1255.     FORE
  1256.  
  1257.        If this option is specified, the new session is brought to the
  1258.        foreground when executed. Specifying the FS, WIN, or PM option
  1259.        in the macro will also cause the new session to be brought to
  1260.        the foreground when executed.
  1261.  
  1262.     INHERIT
  1263.  
  1264.        This option forces the environment for the program to be
  1265.        inherited from the environment variables set in CONFIG.SYS as
  1266.        opposed to those set in the SDE session's environment.
  1267.  
  1268.     The launch options above are ignored if the LAUNCH option is not
  1269.     given.  Please note that merely specifying the LAUNCH option by
  1270.     itself is sufficient to execute any program or batch file; the
  1271.     additional options are provided to accommodate special
  1272.     requirements.
  1273.  
  1274.     See the @Prompt function description for information on giving a
  1275.     custom title to sessions created with LAUNCH.
  1276.  
  1277.  MSG
  1278.  
  1279.     SDE displays a 'Click mouse or press a key to continue...' message
  1280.     and waits for a key or mouse click after the program terminates.
  1281.  
  1282.  REPEAT
  1283.  
  1284.     Repeats the macro in which this option appears in every directory
  1285.     on the current volume. The macro is re-processed on entry to each
  1286.     directory.
  1287.  
  1288.  VOLUME
  1289.  
  1290.     Rescans the current volume after macro execution. Use this option
  1291.     if the program being called will create or delete directories.
  1292.  
  1293.  WAIT
  1294.  
  1295.     Causes SDE to wait for a key or mouse click after the program
  1296.     terminates. No message is displayed.
  1297.  
  1298.  WIPE
  1299.  
  1300.     A nifty, if otherwise useless, way to clear the screen prior to
  1301.     program execution.
  1302.  
  1303.  25, 43, 50
  1304.  
  1305.     Puts the display in 25, 43, or 50 line mode, respectively, prior to
  1306.     program execution.  The current video state is saved and then
  1307.     restored after the program terminates.
  1308.  
  1309.                                  
  1310.  
  1311.  Important! If the @Options function is not supplied in a macro, or if
  1312.  supplied without the CMD option or LAUNCH option, then SDE, by
  1313.  default, loads and directly executes the macro's program in the SDE
  1314.  screen group.  Presentation Manager programs and batch files CANNOT be
  1315.  run in this manner; the @Options function and either the CMD or LAUNCH
  1316.  option must appear in the macro.
  1317.  
  1318.                                  
  1319.  
  1320.  There is no return value for the @Options function.
  1321.  
  1322. -Pad
  1323.  
  1324.  Syntax: @Pad(column)
  1325.  Abbrev: @P (Minimum)
  1326.  
  1327.  All output since the last carriage return/line feed, or the beginning
  1328.  of the expanded macro if no cr/lf's have yet been encountered, is
  1329.  padded with blanks to the specified column (with column 0 being the
  1330.  leftmost column).
  1331.  
  1332.                                  
  1333.  
  1334.  This function is most effective when used in the output string of the
  1335.  @Write function to columnize data, as in the following example:
  1336.  
  1337.  @Write((test.fil)(w)(Line 1, column 0@;@Pad(5)Line 2, column 5))
  1338.  
  1339.  The macro fragment above results in output to the file 'test.fil'
  1340.  which reads:
  1341.  
  1342.  Line 1, column 0
  1343.       Line 2, column 5
  1344.  
  1345. -Parse
  1346.  
  1347.  Syntax: @Parse((Filename)(Portion))
  1348.  Abbrev: @PAR (Minimum)
  1349.  
  1350.  Breaks a filename into its component parts. The filename is supplied
  1351.  in the first argument, and an identifier specifying which portion of
  1352.  the filename to extract is specified in the second.
  1353.  
  1354.  The second argument must evaluate to one of the following:
  1355.  
  1356.  Volume    - Directs @Parse to return the volume letter (sans colon).
  1357.  Path      - Directs @Parse to return the path name.
  1358.  Name      - Directs @Parse to return the file name (sans extension).
  1359.  Extension - Directs @Parse to return the file extension (no period).
  1360.  
  1361.  The identifiers above may be abbreviated as desired; only the first
  1362.  character of the supplied identifier is actually significant.
  1363.  
  1364.  The path portion will be the empty string for the root directory -
  1365.  that is, it will never terminate in a backslash.
  1366.  
  1367.                                  
  1368.  
  1369.  Assuming that the variable 'file' has been set to the file name
  1370.  'C:\FILES\PROGRAM.EXE':
  1371.  
  1372.  @Parse((@Val(file))(V)) returns C
  1373.  @Parse((@Val(file))(P)) returns \FILES
  1374.  @Parse((@Val(file))(N)) returns PROGRAM
  1375.  @Parse((@Val(file))(E)) returns EXE
  1376.  
  1377.                                  
  1378.  
  1379.  If the filename does not contain the specified component, the return
  1380.  value is the empty string. Otherwise, the return value is either the
  1381.  volume, path, name, or extension portion of the given filename.
  1382.  
  1383. -Path
  1384.  
  1385.  Syntax: @Path()
  1386.  Abbrev: @PAT (Minimum)
  1387.  
  1388.  Returns the current path name, without a volume specifier or colon.
  1389.  The name will be the empty string for the root directory; that is, it
  1390.  will never terminate in a backslash.
  1391.  
  1392. -Prompt
  1393.  
  1394.  Syntax: @Prompt(String)
  1395.  Abbrev: @PR (Minimum)
  1396.  
  1397.  The string specified in the parameter becomes the next input field
  1398.  prompt, MacroMenu title, or new session title. This prompt/title is
  1399.  used by the @Edit, @Input, and @Menu macro functions, as well as by
  1400.  the program launcher.
  1401.  
  1402.  If the LAUNCH execution option is specified in the macro, then the
  1403.  text of the last @Prompt encountered in the macro will become the
  1404.  title of the new session.
  1405.  
  1406.  If the @Prompt function appears in the first column of an internal
  1407.  macro, the string is added the Execute menu as a selectable option.
  1408.  Note that this occurs only if the @Prompt function name is not
  1409.  abbreviated.
  1410.  
  1411.  This function has no return value.
  1412.  
  1413. -QuitIf
  1414.  
  1415.  Syntax: @QuitIf((Expression)(Message))
  1416.  Abbrev: @Q (Minimum)
  1417.  
  1418.  Quits the macro with an error message if the specified expression
  1419.  evaluates to empty.  The message may be empty, if desired, in which
  1420.  case no message is displayed to the user.
  1421.  
  1422.  Note that the given expression is merely tested; it is not returned by
  1423.  this function.
  1424.  
  1425.                                  
  1426.  
  1427.  The @QuitIf function is useful, for example, for exiting a macro that
  1428.  requires tagged files if none are tagged, as in:
  1429.  
  1430.  @QuitIf((@Tagged())(No tagged files))
  1431.  
  1432.                                  
  1433.  
  1434.  This function has no return value.
  1435.  
  1436. -Schedule
  1437.  
  1438.  Syntax: @Schedule(Macros)
  1439.  Abbrev: @S (Minimum)
  1440.  
  1441.  Schedules the macro (or macros) specified in the argument for
  1442.  execution in order of appearance. Each individual macro (including the
  1443.  current) will be allowed to complete before the next is processed.
  1444.  
  1445.                                  
  1446.  
  1447.  For example, the macro fragment below schedules the macros assigned to
  1448.  the keys V, T, u, k, and L for execution:
  1449.  
  1450.  @Schedule(VTukL)
  1451.  
  1452.  The execution mechanism will pause for user input if required by the
  1453.  particular macro being executed; an AutoKey macro which contained the
  1454.  following keystrokes would not:
  1455.  
  1456.  @Key(VTukL)
  1457.  
  1458.                                  
  1459.  
  1460.  Up to 255 macros can be scheduled in this manner. A macro should not
  1461.  schedule itself for execution.
  1462.  
  1463.  This function has no return value.
  1464.  
  1465. -Select
  1466.  
  1467.  Syntax: @Select((Expression)(Expression)...(Expression))
  1468.  Abbrev: @SE (Minimum)
  1469.  
  1470.  This function allows conditional macro execution by returning the
  1471.  first non-empty expression in the list.  Any number of expressions may
  1472.  be supplied.  Once a non-empty expression is found, the result is
  1473.  returned and the condition is exited; any remaining expressions are
  1474.  ignored.
  1475.  
  1476.                                  
  1477.  
  1478.  Take, for example, the following macro fragment:
  1479.  
  1480.  @Select((@Tagged())(@Hilited())(@Abort(No files)))
  1481.  
  1482.  If there are files tagged, their names are returned and the @Select
  1483.  function is exited. Otherwise, if a file is hilited, its name is
  1484.  returned and the function is exited. Otherwise, the macro is aborted
  1485.  with an error message.
  1486.  
  1487.                                  
  1488.  
  1489.  The return value of the @Select function is the first non-empty
  1490.  expression in the supplied list.
  1491.  
  1492. -Set
  1493.  
  1494.  Syntax: @Set((Variable)(Text))
  1495.  Abbrev: @SET (Minimum)
  1496.  
  1497.  Sets the contents of the variable named in the first argument to the
  1498.  text specified in the second.  Setting a variable to the empty string
  1499.  removes the variable from the variable heap.
  1500.  
  1501.                                  
  1502.  
  1503.  Note that variable names which begin with a dollar sign, '$', are
  1504.  treated specially. The application of the @Set function to variable
  1505.  which begins with this character implies that the text supplied in the
  1506.  second argument should not be recursively processed to remove nested
  1507.  SDE macro flags, but rather that this processing should be delayed
  1508.  until the @Val function is used to retrieve the contents of the
  1509.  variable.  This can be beneficial in rare instances where it is
  1510.  required that macro code, rather than plain text, be stored 'inside' a
  1511.  variable.
  1512.  
  1513.                                  
  1514.  
  1515.  This function has no return value.
  1516.  
  1517. -Tag
  1518.  
  1519.  Syntax: @Tag(Wildcard)
  1520.  Abbrev: @T (Minimum)
  1521.  
  1522.  Tags all files matching the wildcard given in the argument. The
  1523.  standard * and ? wildcard characters are supported.  This function may
  1524.  be used more than once in the same macro.
  1525.  
  1526.  This function has no return value.
  1527.  
  1528. -TagCount
  1529.  
  1530.  Syntax: @TagCount()
  1531.  Abbrev: @TAGC (Minimum)
  1532.  
  1533.  This function returns the number of tagged files, useful for verifying
  1534.  that the proper number of files are tagged for a specific application.
  1535.  
  1536.                                  
  1537.  
  1538.  This number may be effectively used in the @If<, @If=, and @If>
  1539.  comparison functions, as in the following example:
  1540.  
  1541.  @If=((@TagCount())(2)(fc @Tagged())(@Abort(Tag two files, please.)))
  1542.  
  1543. -Tagged
  1544.  
  1545.  Syntax: @Tagged(Portion)
  1546.  Abbrev: @TAGG (Minimum)
  1547.  
  1548.  Returns the specified portion of every tagged filename. The argument
  1549.  must evaluate to one of the following:
  1550.  
  1551.  Name      - Returns the primary filename (sans period and extension)
  1552.              of every tagged file, each separated by a space.
  1553.  Extension - Returns the extension (sans period) of every tagged file,
  1554.              each separated by a space.
  1555.  Full      - Returns the full file specification (volume, path, and
  1556.              filename) of every tagged file, each separated by a space.
  1557.  Date      - Returns the date/time stamp, in YR-MO-DY HR:MN:SC format,
  1558.              of every tagged file, each separated by a space.
  1559.  Size      - Returns the size, in bytes, of every tagged file, each
  1560.              separated by a space.
  1561.  
  1562.  The identifiers above may be abbreviated as desired; only the first
  1563.  character of the supplied identifier is actually significant.
  1564.  
  1565.  If the argument is empty, then every tagged filename, both primary
  1566.  name and extension, are returned, each separated by a space.
  1567.  
  1568.                                  
  1569.  
  1570.  For example, if the current directory is 'C:\DOCUMENT', and the
  1571.  currently tagged files are 'LETTER.DOC' and 'RESUME.FIL':
  1572.  
  1573.  @Tagged()  returns LETTER.DOC RESUME.FIL
  1574.  @Tagged(N) returns LETTER RESUME
  1575.  @Tagged(E) returns DOC FIL
  1576.  @Tagged(F) returns C:\DOCUMENT\LETTER.DOC C:\DOCUMENT\RESUME.FIL
  1577.  @Tagged(D) returns 89-10-23 09:56:01 90-04-16 01:20:45
  1578.  @Tagged(S) returns 127 9908
  1579.  
  1580.                                  
  1581.  
  1582.  Note that the @Tagged function generally should not be abbreviated
  1583.  when nested inside the @Write function, since the @Write function
  1584.  performs special handling on @Tagged.  See the @Write function
  1585.  description for more details.
  1586.  
  1587. -Untag
  1588.  
  1589.  Syntax: @Untag(Wildcard)
  1590.  Abbrev: @U (Minimum)
  1591.  
  1592.  
  1593.  Untags all files matching the wildcard given in the argument. The
  1594.  standard * and ? wildcard characters are supported.  This function may
  1595.  be used more than once in the same macro.
  1596.  
  1597.  This function has no return value.
  1598.  
  1599. -Upper
  1600.  
  1601.  Syntax: @Upper(String)
  1602.  Abbrev: @UP (Minimum)
  1603.  
  1604.  Returns the upper-case equivalent of the specified string. This
  1605.  function is provided for cosmetic purposes only; all SDE comparison
  1606.  functions are case-independent.
  1607.  
  1608. -Val
  1609.  
  1610.  Syntax: @Val(Variable)
  1611.  Abbrev: @V (Minimum)
  1612.  
  1613.  Returns the value of the variable named in the argument. If the
  1614.  variable has not been yet been assigned, or was once assigned and
  1615.  subsequently removed from the variable heap, the return value is the
  1616.  empty string.
  1617.  
  1618.                                  
  1619.  
  1620.  Note that variable names which begin with a dollar sign, '$', are
  1621.  treated specially. Normally, the text assigned to a variable is
  1622.  processed (for removal of nested SDE macro flags) at the time the
  1623.  variable is assigned via the @Set function. For a variable that begins
  1624.  with a dollar sign, however, this operation is not performed until the
  1625.  contents of the variable are retrieved with the @Val function.  This
  1626.  can be beneficial in rare instances where it is required that macro
  1627.  code, rather than plain text, be stored 'inside' a variable.
  1628.  
  1629. -Volume
  1630.  
  1631.  Syntax: @Volume()
  1632.  Abbrev: @VO (Minimum)
  1633.  
  1634.  Returns the volume letter (without colon) of the current volume.  This
  1635.  return value will always be a single letter in the range 'A' to 'Z'
  1636.  inclusive.
  1637.  
  1638. -Write
  1639.  
  1640.  Syntax: @Write((File)(Mode)(String))
  1641.  Abbrev: @W (Minimum)
  1642.  
  1643.  Writes a string to a file. The output file, named in the first
  1644.  argument, is opened using the mode given in argument two.  The
  1645.  expanded contents of the third argument will be written to the file.
  1646.  
  1647.  The mode argument must evaluate to one of the following:
  1648.  
  1649.  Write  - Open file in 'write' mode (overwrite any existing data).
  1650.  Append - Open file in 'append' mode (append to any existing data).
  1651.  
  1652.  The identifiers above may be abbreviated as desired; only the first
  1653.  character of the supplied identifier is actually significant.
  1654.  
  1655.  The @; character sequence may be used inside the output string to
  1656.  force a carriage return-line feed combination to be written to the
  1657.  file.
  1658.  
  1659.  Important! Never should the @Write function be nested inside another
  1660.  @Write function call.
  1661.  
  1662.                                  
  1663.  
  1664.  Note that this function handles the @Tagged function specially.  For
  1665.  example, the following macro fragment:
  1666.  
  1667.  @Write((file)(w)(VIEW @Tagged()@;))
  1668.  
  1669.  yields the following output to the specified file:
  1670.  
  1671.  VIEW FILE1.EXT
  1672.  VIEW FILE2.EXT
  1673.  VIEW FILE3.EXT
  1674.  VIEW FILE4.EXT
  1675.  
  1676.  That is, if the @Tagged function appears in the output string, then
  1677.  the entire @Write operation is repeated multiple times; once for each
  1678.  tagged file name.  Note the use of the @; character sequence (see the
  1679.  topic 'Special @ uses' below) to force a carriage return-line feed
  1680.  combination into the output file between each instance of the output
  1681.  string.
  1682.  
  1683.  This special handling is only performed if the full function name
  1684.  @Tagged function appears in the output string; it is not if the
  1685.  function name is abbreviated.
  1686.  
  1687.  If this special treatment of the @Tagged function is not desirable,
  1688.  you may:  (1) abbreviate the @Tagged function name, or, (2) assign the
  1689.  @Tagged function return to a variable and reference the contents of
  1690.  the variable inside the output string, like this:
  1691.  
  1692.  @Set((tagvar)(@Tagged())) @Write((file.ext)(w)(VIEW @Val(tagvar)))
  1693.  
  1694.                                  
  1695.  
  1696.  This function has no return value.
  1697.  
  1698. -Special @ uses
  1699.  
  1700.  The '@@' character sequence causes a single '@' character to be
  1701.  inserted into the expanded macro. This is used if a program being
  1702.  called by a macro requires a '@' in its argument list, or if a file
  1703.  name that contains an embedded '@' is hard-coded into a macro, as in:
  1704.  
  1705.  EDIT @@file.doc
  1706.  
  1707.                                  
  1708.  
  1709.  The '@;' character sequence causes a carriage return/line feed
  1710.  combination to be inserted into the expanded macro. This is most
  1711.  commonly used in the output string of the @Write function to write two
  1712.  or more lines to the specified output file per instance of the
  1713.  function, as in:
  1714.  
  1715.  @Write((test.fil)(w)(This is line one@;This is line two@;))
  1716.  
  1717. +Notes
  1718.  
  1719. -Having problems?
  1720.  
  1721.  For network users: If the /v startup parameter is not supplied, SDE
  1722.  may appear to lock up when the 'Volume' option is selected if a
  1723.  network server you are attached to has gone off-line since log-in.  If
  1724.  this should happen, allow SDE to time-out, then quit and re-start SDE
  1725.  with the /v option.
  1726.  
  1727.  The video modes supported by SDE are those supported by the IBM PS/2
  1728.  VGA adapter under Version 1.2 of OS/2. Other adapter/version
  1729.  combinations may not support all modes.
  1730.  
  1731.  KEDIT Version 4.00P1 has a bug which prevents it from properly
  1732.  accepting a filename parameter if executed directly from SDE (i.e. if
  1733.  the CMD or LAUNCH execution option is not specified in the macro).
  1734.  
  1735.  SDE will abort if used in a directory that contains more than 1300 or
  1736.  so files. The exact number will vary depending on the system
  1737.  configuration.
  1738.  
  1739. -Registration
  1740.  
  1741.  To receive a personalized copy of SDE, please send $50.00 and a blank
  1742.  disk to the address at the top of the SDE.HLP file. Include a one-line
  1743.  personal and/or company name (up to 60 characters) to be embedded in
  1744.  your copy of SDE. SANSoft will return the most recent version of SDE,
  1745.  personalized as requested.
  1746.  
  1747.  Contact SANSoft Development for site licenses or volume purchases of
  1748.  SDE.
  1749.  
  1750. -Distribution
  1751.  
  1752.  SANSoft Development retains the sole right to sell the SDE package. The
  1753.  SDE package may, however, be distributed, as long as:
  1754.  
  1755.   All program files are distributed unmodified, and en masse.  Please
  1756.    distribute the archived form of the SDE package if at all possible.
  1757.   The original version is distributed, NOT personalized copies of SDE.
  1758.   No attempt is made to profit from the distribution of the SDE
  1759.    Environment, or any modification of it, although a duplication fee
  1760.    not to exceed $10 may be charged by recognized user's groups.
  1761.  
  1762. -Warranty & Disclaimer
  1763.  
  1764.  SANSoft Development hereby disclaims all warranties relating to this
  1765.  software, whether express or implied, including without limitation any
  1766.  implied warranties of merchantability or fitness for a particular
  1767.  purpose. SANSoft Development will not be liable for any special,
  1768.  incidental, consequential, indirect or similar damages due to loss of
  1769.  data or any other reason, even if SANSoft or an agent of SANSoft has
  1770.  been advised of the possibility of such damages. In no event shall
  1771.  SANsoft Development's liability for any damages ever exceed the price
  1772.  for the license to use the software, regardless of the form of the
  1773.  claim. The person using the software bears all risk as to the quality
  1774.  and performance of the software. Use of this package constitutes
  1775.  agreement on the part of the user to this disclaimer.
  1776.  
  1777.