home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR2 / DOSMNU50.ZIP / DOSMENU.DOC < prev    next >
Text File  |  1993-12-20  |  65KB  |  1,693 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.                                    DOSmenu
  19.  
  20.                "Simple yet powerful management through menus"
  21.  
  22.  
  23.  
  24.  
  25.                             (C)Copyright 1993-1994
  26.  
  27.                                       by
  28.  
  29.                                  Skip Bremer
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.                                  Version 5.0
  38.  
  39.                                     1/1/94
  40.  
  41.                               TABLE OF CONTENTS
  42. ==============================================================================
  43.  
  44.      Topic                                                          Section
  45.      -----                                                          -------
  46.  
  47.      Introduction ......................................................  1
  48.  
  49.      Miscellaneous .....................................................  2
  50.           Requirements
  51.           Recommendations
  52.           Limits
  53.           Start-Up Options
  54.           Required Files
  55.           Optional Files
  56.  
  57.      Quick Start .......................................................  3
  58.  
  59.      Start-Up Batch File ...............................................  4
  60.  
  61.      Commands ..........................................................  5
  62.  
  63.      DMutil Utility Program ............................................  6
  64.           Command Parameters
  65.           The Menu File Editor
  66.  
  67.      DMQuery Batch Input Utility .......................................  7
  68.  
  69.      Setup .............................................................  8
  70.           Initial Menu Creation
  71.           Menu Configuration
  72.  
  73.      Noticing ..........................................................  9
  74.  
  75.      Menu Definition ................................................... 10
  76.           Server-Based Convention
  77.           Rules-Based Convention
  78.           Notes
  79.           Testing Your Menu
  80.  
  81.      Menu Rules ........................................................ 11
  82.           Rules
  83.           Notes
  84.           Loading Additional Menus
  85.  
  86.      Sub-Menus ......................................................... 12
  87.  
  88.      Compiling Menu Files .............................................. 13
  89.  
  90.      Translating Menu Files ............................................ 14
  91.  
  92.      Temporary Batch Files ............................................. 15
  93.  
  94.      DOS Environment Variables ......................................... 16
  95.  
  96.      Examples .......................................................... 17
  97.           Init File
  98.           Menu File
  99.  
  100.      Credits ........................................................... 18
  101.  
  102.      Shareware ......................................................... 19
  103.           Evaluation Copy
  104.           Distribution
  105.           Registration
  106.           Disclaimer
  107.  
  108.                                INTRODUCTION (1)
  109. ==============================================================================
  110.  
  111. DOSmenu was designed as a simple yet powerful menu system for both network and
  112. DOS stand-alone environments.  We work in an environment that demands on
  113. easily changeable, concise menu system to help us provide proper support for a
  114. large Netware wide area network domain spanning Texas.  The menu system we
  115. needed had to be both easy to use and very flexible and yet it had to stay out
  116. of the way as much as possible for our user operations.  Quite simply, we
  117. couldn't find one, so we wrote our own.  We hope it helps you as much as it
  118. has helped us in controlling our environment.  Please use DOSmenu as you see
  119. fit, but if you continue to use it, please abide with the Shareware section of
  120. this documentation.
  121.  
  122. Here is a quick overview of DOSmenu:
  123.  
  124. o    Small executable size.
  125.  
  126. o    Unlimited number of menus.
  127.  
  128. o    No memory taken by the menu system when running commands.
  129.  
  130. o    Run anything from the menu system including Terminate and Stay Resident
  131.      programs (TSRs).
  132.  
  133. o    Many options to determine whether menu item is usable by a user such as
  134.      user name(s), server name(s), node address(s), member of group(s),
  135.      directory(s) available, file(s) available, password, and combinations of
  136.      all of them.
  137.  
  138. o    Automatically knows Netware users, groups, servers and connection
  139.      numbers.  Substitutes are easily defined on other networks and
  140.      stand-alone environments when necessary.
  141.  
  142. o    All switches/options and menus and their associated commands may be
  143.      changed on-the-fly while users are using the menu system.  They will all
  144.      take effect after the next command run by each user.
  145.  
  146. o    Optional compilation of menu files provides ultimate menu security.
  147.  
  148. o    One utility (DMutil) handles all of your menu setup tasks.
  149.  
  150. o    Can translate netware menu files.
  151.  
  152. o    Complete user logging capability.
  153.  
  154. o    Full mouse support with registered version.
  155.  
  156.  
  157. DOSmenu was written in Turbo Pascal 7.0 (real mode) with assembly extensions.
  158.  
  159.                               MISCELLANEOUS (2)
  160. ==============================================================================
  161.  
  162. Requirements
  163. ------------
  164. DOSmenu's only known requirement is that it must run under DOS 3.1 or higher.
  165. It runs fine from a Windows DOS session and from DOS shells.
  166.  
  167. Recommendations
  168. ---------------
  169. Consider placing the command
  170.  
  171.   SHELL=C:\COMMAND.COM /E:512 /P {or more}
  172.  
  173. in all CONFIG.SYS files using this menu system.  Although not required, if
  174. DOSmenu cannot find enough DOS environment variable space to write a menu
  175. command to a DOS variable, then it will not be able to run the command.
  176. Typically this involves only a few bytes, but it could take up to 80 bytes of
  177. environment space for the local machine running the system, depending on the
  178. associated command(s) for menu items.  See the DOS Environment Variables
  179. section for a discussion on the use of DOS variables.
  180.  
  181. Limits
  182. ------
  183. Maximum menu files: unlimited
  184. Maximum menus per menu file: 20 (or less, depending on memory available)
  185. Maximum entries per menu: 20
  186. Maximum DOS commands per menu item: 10
  187. Maximum rights per menu item: 10
  188. Maximum items per right: 10
  189. Maximum length of menu items : 50
  190. Maximum length of menu rights : 80
  191. Maximum length of menu commands: 80
  192. Maximum length of help lines: 61
  193. Maximum question length: 50
  194. Maximum active notices per user: 15
  195. Maximum number of lines per notice: 10
  196. Maximum length of notice lines: 70
  197.  
  198. Start-Up Options
  199. ----------------
  200. DOSmenu is started with the command DOSMENU in a batch file.  However, within
  201. this batch file, you may specify a user ID, a server name and/or a node
  202. address on the DOSmenu command line (after /BATCH).  Normally this is not
  203. necessary because DOSmenu picks the user ID and server name up automatically
  204. on Netware networks and you may define DOS variables to be used within the
  205. DOSmenu init file which will then be used to determine the active user and
  206. active server on stand-alone environments.  See the Setup section for complete
  207. information on this subject.
  208.  
  209. Required Files
  210. --------------
  211. The following files are necessary to run DOSmenu:
  212.  
  213. DOSMENU.EXE    The DOSmenu program.
  214.  
  215. DMUTIL.EXE     The DOSmenu utility program.  Used to generate, edit, compile
  216.                and decompile menu files.
  217.  
  218. DOSMENU.INI    The default DOSmenu init file initially generated and edited
  219.                with DMutil.  This file is used to configure your menu system
  220.                environment.
  221.  
  222. DOSMENU.MNU    The default DOSmenu menu file initially generated and edited
  223.                with DMutil.  This file is your menu.
  224.  
  225. MENU.BAT       The start-up batch file initially generated and edited with
  226.                DMutil.  This file may be called any name you wish.
  227.  
  228. Optional Files
  229. --------------
  230. DOSMENU.NTE    The default DOSmenu note file initially generated and edited
  231.                with DMutil.  This file holds user notices.  You can edit this
  232.                file any time you wish because it is dynamic from the users'
  233.                standpoint.
  234.  
  235. DOSMENU.LOG    If logging is enabled, this file is written to every time a
  236.                user performs a menu action.  Included statistics are:  user
  237.                name, node address, server name, complelte memory statisitics,
  238.                date, time, menu action, and active menu name.
  239.  
  240. DMQUERY.EXE    An external utility that gets and uses batch file input.  See
  241.                the DMQuery section for more.
  242.  
  243. NOBRK.*        This very useful utility can help to guarantee security within
  244.                your menu system with an approach that is different than the
  245.                inherent DOSmenu {r=nobreak} rights option.  See Menu
  246.                Definition for more on this right and NOBRK.ZIP for more on the
  247.                NOBRK utility.
  248.  
  249. Many additional utility programs and full mouse support are shipped with the
  250. registered version.
  251.  
  252.                                QUICK START (3)
  253. ==============================================================================
  254.  
  255. To quickly get the menu system up and running, do the following (check the
  256. documentation later for specifics):
  257.  
  258. o    Copy all DOSmenu files to a permanent home directory
  259.  
  260. o    Change to that home directory
  261.  
  262. o    Run 'DMUTIL /G' to generate the default menu files
  263.  
  264. o    Run 'DMUTIL /I' to setup the menu environment
  265.  
  266. o    Run 'DMUTIL /M' to setup specific menu items
  267.  
  268. o    Run 'DMUTIL /N' to setup specific user notices -optional
  269.  
  270. o    Run 'DMUTIL /C DOSMENU.INI' to compile the init file -optional
  271.  
  272. o    Run 'DMUTIL /C DOSMENU.MNU' to compile the menu file -optional
  273.  
  274. o    Move MENU.BAT to a directory in your users' path
  275.  
  276. o    Run 'MENU' to start the menu system
  277.  
  278.                            START-UP BATCH FILE (4)
  279. ==============================================================================
  280.  
  281. As part of the initial file generation performed by DMutil, the file MENU.BAT
  282. will be made in DOSmenu's home directory.  MENU.BAT must be in your users'
  283. path, but DOSMENU.EXE should remain in its home directory, where this batch
  284. file will look for it.  All users must be able to 'read' this directory.
  285. DOSMENU.INI, DOSMENU.MNU and DOSMENU.NTE must always be in the same directory
  286. as DOSMENU.EXE.
  287.  
  288. Here is a commented MENU.BAT:
  289.  
  290. @echo off                           ;Cosmetics only
  291. ::this batch file must be in users' path
  292. f:\login\dosmenu /batch %1 %2 %3 %4 ;Point to and run DOSmenu {with parameters
  293.                                     ;  if desired (not required on Netware)
  294.                                     ;  and optionally enter a menu file name
  295. ::quitting the menu system?         ;255 is passed when quitting is ok
  296. if errorlevel 255 goto END          ;If so, then leave loop and batch file
  297. ::call variable set by dosmenu      ;Otherwise, run the selected command or
  298. %_dosmenu%                          ;  batch file passed by DOSmenu
  299. ::do it again                       ;Keep running the batch file (and the menu
  300. menu %1 %2 %3 %4 /rerun             ;  system) and until the system is stopped
  301. :END                                ;Place to go to when quitting
  302.  
  303. Do not change the %_dosmenu% line!  It is discussed under the Menu Rules
  304. section.
  305.  
  306. Parameters are normally only needed if you are not running on Netware and have
  307. not set the names of the user ID variable and server name variable to be used
  308. by DOSmenu in the menu file and you are not running in a stand-alone
  309. environment.
  310.  
  311. The DOS variable _dosmenu is loaded with either the actual menu command (if
  312. there was only one) or the temporary batch file path and name made by DOSmenu
  313. when it combined the commands for the selected menu item.
  314.  
  315. Quitting will move to the end of the batch file, thereby stopping the system.
  316. You can place a quit command on your user's menu to do the same thing by
  317. defining the actual DOS command for that menu item to be 'goto END'.
  318.  
  319.                                  COMMANDS (5)
  320. ==============================================================================
  321.  
  322. DOSmenu has very few commands.  All users are required to do is point and
  323. shoot.  There are a couple of commands, however, that at times may be
  324. worthwhile.
  325.  
  326. F1   HELP      DOSmenu contains context sensitive help.  Press it anytime.
  327.  
  328. F2   DOS       This key will allow a user to perform any DOS command from
  329.                within the confines of the menu system.  You may password
  330.                protext this command from within the init file.  See the Setup
  331.                section for complete information on this subject.
  332.  
  333. F3   VIEW      This key will always view the current DOS screen.  This is
  334.                useful after running a command that puts information that you
  335.                need to see on the DOS screen.
  336.  
  337. F4   EDITFILE  Edit a batch or text file with DMUTIL.EXE.  The file must be
  338.                less than 64K in length.  DMUTIL.EXE must be in the users's
  339.                path.
  340.  
  341. F5   EDITMENU  This key allows you to edit the current menu file in place,
  342.                interactively, while running the menu system.  DMUTIL.EXE must
  343.                be in the user's path.
  344.  
  345. F7   PREVIEW   This key allows you to see the DOS commands for the highlighted
  346.                menu item.
  347.  
  348. F8   MEMORY    This key shows the amount of memory available for DOS commands
  349.                on the active workstation.
  350.  
  351. F9   NOTICES   This allows the users to review any notices that were directed
  352.                at them, and any new notice that may have been added since
  353.                the last time they accessed the note file.
  354.  
  355. F10  QUIT      This key will quit DOSmenu (and quit the start-up batch file by
  356.                passing a 255 errorlevel).  You may password protext this
  357.                command from within the init file.  See the Setup section for
  358.                complete information on this subject.
  359.  
  360. ESC  PREVIOUS  Anytime a user is in a sub-menu, pressing Esc will back them
  361.                up to the previous menu.  This key forces the screen saver at
  362.                the main menu.  Esc also backs users out of prompts such as the
  363.                command parameter prompt, if necessary.
  364.  
  365. MOUSE          (registered version only)  Normally, the left mouse button
  366.                simulates the Enter key and the right mouse button simulates
  367.                the Esc key.  However, you may also use the mouse to manipulate
  368.                the scroll bars, point directly to menu items and then click on
  369.                them to run them.
  370.  
  371.                           DMUTIL UTILITY PROGRAM (6)
  372. ==============================================================================
  373.  
  374. COMMAND PARAMETERS
  375. ==================
  376.  
  377. The DMutil program is designed to keep all of your menu maintenance
  378. requirements in one utility.  Anything that you need to do to your menu system
  379. can be done with DMutil.
  380.  
  381.  
  382. Here is the command syntax:
  383.  
  384.      DMUTIL [[PATH]FILENAME [PATH][FILENAME] ..]
  385.  
  386.      -or-
  387.  
  388.      DMUTIL /G|T|M|I|N|B|C|D [[PATH]FILENAME]
  389.  
  390. where:
  391.  
  392.      /G = Generate the default DOSmenu batch, menu, init, and note files
  393.           (discussed throughout the documentation)
  394.  
  395.      /T = Translate netware menu files
  396.           (discussed under Translating Menu Files section)
  397.  
  398.  /I|M|N = Edit the DOSmenu Init|Menu|Note file (DOSMENU.INI|MNU|NTE)
  399.           (provides specific help for editing the specific file type)
  400.  
  401.      /B = Edit the DOSmenu start-up Batch file (MENU.BAT)
  402.           (provides specific help for editing the start-up batch file)
  403.  
  404.    /C|D = Compile|Decompile the DOSmenu init, menu, or note file
  405.           (discussed in Compiling Menu Files section)
  406.  
  407.         = Edit any text file less than 64K in size
  408.           (for convenience only)
  409.  
  410. /B always defaults to MENU.BAT while /M|C|D always default to DOSMENU.MNU.
  411. /T requires a filename while a filename is optional for /B|I|M|N|C|D.
  412.  
  413. After you have compiled a menu, init, or note file, then when editing one of
  414. those files with DMUTIL /M|I|N, DMutil will automatically decompile - edit -
  415. recompile the file for you.
  416.  
  417.  
  418. THE MENU FILE EDITOR
  419. ====================
  420.  
  421. The editor is a simple ascii text editor that has specific help screens to
  422. give you some on-line help on all menu file types.  In actuality, any ascii
  423. editor can be used to edit the start-up batch, init, menu and note files.
  424.  
  425. It's operation is self-explanatory.
  426.  
  427. A few items are worth mentioning:
  428.  
  429. o    The editor edits files with any attribute set and then resets those
  430.      attributes afterwards.
  431.  
  432. o    When entering the editor with /M, /I or /N, the editor automatically
  433.      decompiles the file (if it was already compiled) and then recompiles the
  434.      file (if originally compiled) before exiting, making this editor VERY
  435.      handy when editing compiled menu or init files.
  436.  
  437.                          DMQUERY BATCH INPUT PROGRAM (7)
  438. ==============================================================================
  439.  
  440. DMQuery is a utility that can be used to provide input for batch files made
  441. with DOSmenu.
  442.  
  443. Here are the command line parameters:
  444.  
  445.      DMQUERY N [/R|U|E|Danswer]
  446.  
  447. where
  448.  
  449.        N = A number from 1..9
  450.  
  451.       /R = Input is required (an answer must be given)
  452.  
  453.       /U = Input will be forced to upper case
  454.  
  455.       /E = Input will be echoed to the screen afterwards
  456.  
  457. /Danswer = Input default answer will be ''answer'' (must be one word only)
  458.  
  459.  
  460. The DOS variable '@N' is temporarily used.  DMQuery may be run from DOS or a
  461. DOS shell; however, it must be queried for and acted upon within the _same_
  462. batch file, like this:
  463.  
  464.      @echo off');
  465.      echo What is your name?  {your question};
  466.      dmquery 1 /r/e /dJoe     {answer required, put in var @1, def=Joe};
  467.      if errorlevel 255 goto.. {not enough env space? -optional}
  468.      echo %@1%                {use answer variable @1 as you wish!}
  469.  
  470. Here is an example DOSmenu menu item:
  471.  
  472. ;-----
  473. Directory
  474. echo Directory of what?
  475. dmquery 1
  476. echo Switches (/w, /p, etc)?
  477. dmquery 2
  478. dir %@1% %@2%
  479. pause
  480. ;-----
  481.  
  482.                                   SETUP (8)
  483. ==============================================================================
  484.  
  485. DOSmenu has two setup phases, the initial default file creation and the
  486. editing of those files.
  487.  
  488.  
  489. INITIAL MENU CREATION
  490. =====================
  491.  
  492. After moving all DOSmenu files to a permanent home directory, and then moving
  493. to that directory, you must run DMUTIL /G to generate the initial menu file
  494. set consisting of DOSMENU.INI (the init file), DOSMENU.MNU (the menu file
  495. shell), DOSMENU.NTE (the note file) and MENU.BAT (the start-up batch).
  496. DOSmenu must run from a batch file for the reasons discussed below.  We will
  497. use the name MENU.BAT throughout this documentation, however it may be named
  498. anything you like as long as it ends in .BAT.
  499.  
  500.  
  501. MENU CONFIGURATION
  502. ==================
  503.  
  504. After DOSMENU.INI is created, you need to edit it in order to set the
  505. environment to your specific system.  You should edit this file with DMUTIL
  506. /I.  (Then you will need to edit DOSMENU.MNU to make the actual menu(s)).  The
  507. init file contains various options and switches that control how DOSmenu will
  508. work for you or your users. These are discussed here.
  509.  
  510. Use Mouse=
  511. ----------
  512. Default=yes.  With the registered version, you may optionally use your mouse
  513. to manipulate your menu.  A mouse driver (like MOUSE.COM) must be loaded on
  514. the work station to enable mouse support.
  515.  
  516. Using Netware=
  517. --------------
  518. Default=yes.  This switch tells DOSmenu whether it should make Netware API
  519. calls to determine the actual user and server in force when it is running.
  520. These two pieces of information can be overridden by you whenever you wish by
  521. one of the following methods:
  522.  
  523.      Set DOS variables equal to the current network user and file server.
  524.      This option is desired when running on non-Netware networks.  For
  525.      instance, if you set the DOS variable USER to the actual user ID in the
  526.      network start-up script, then it will be found and used by DOSmenu if you
  527.      enter USER as the user DOS variable with the option below.
  528.  
  529.           Non-Netware DOS User Var=uname
  530.           Non-Netware DOS Server Var=sname
  531.  
  532.      Or you may place them directly in the batch file, like
  533.  
  534.           [path]dosmenu /batch /u:%uname% /s:%sname%
  535.  
  536.      or type them when running the batch file, like
  537.  
  538.           menu /u:uname /s:sname
  539.  
  540. The priority DOSmenu uses to obtain this information is as follows:
  541.  
  542.      1.  Actual Netware information if Netware=yes and on a Novell network.
  543.      2.  Already set DOS variables (this will override 1.).
  544.      3.  Command line parameters (this will override both 1. and 2.).
  545.  
  546. Non-Netware DOS User Var=
  547. -------------------------
  548. Default={nothing}.  As discussed above, this option allows DOSmenu to find the
  549. user ID for the person running the menu system when not on a Netware network
  550. (or when you decide to override the API method).
  551.  
  552. Non-Netware DOS Server Var=
  553. ---------------------------
  554. Default={nothing}.  As discussed above, this option allows DOSmenu to find the
  555. server name for the person running the menu system when not on a Netware
  556. network (or when you decide to override the API method).
  557.  
  558. Any-Network DOS Node Var=
  559. -------------------------
  560. Default={nothing}.  This option allows DOSmenu to use the work station network
  561. node address as a determinant as to whether a menu item will be available or
  562. not (See Menu Definition section to learn how this is done).  You may format
  563. the node address anyway you wish, as long as your network start-up script for
  564. each user uses the same format.
  565.  
  566. Private Directory=
  567. ------------------
  568. Default=c:\.  DOSmenu will write an on-the-fly batch file for running menu
  569. commands embedded within the menu file ONLY when there is more than one
  570. command for the chosen menu item.  When this happens, it is important that
  571. this batch file be written to an area within the user's network environment
  572. where that user has actual 'write' rights, else the batch file cannot be
  573. written.
  574.  
  575. Typically, on most networks, a 'private' area is mapped for each user on
  576. start-up that is their personal mapped drive (actually just a network
  577. directory based on the user's ID) on the server.  In such a case, you should
  578. place that location here.  An example might be H:\ if you had mapped
  579. F:\USERS\%LOGIN_NAME to H:\ (on a Novell network).  If no such directory is
  580. mapped or used on your network, then we suggest using C:\, which should always
  581. be private to the user for every session.
  582.  
  583. If you would rather have all users write their on-the-fly batch files (when
  584. necessary) to the same location, that is ok as long as you are on a Novell
  585. network because DOSmenu also knows and uses the actual user connection number
  586. as part of the batch file name, e.g., @DMBAT4.BAT, where this user is using
  587. connection number 4.  In this case, simply define the Private Directory as any
  588. place on the network where all users have 'write' rights.
  589.  
  590. Remember, this batch file is only written if more than one DOS command is
  591. defined as part of a chosen menu item.  If all of your menu items call
  592. already-created batch files or actual DOS EXE, COM, or BAT programs, then the
  593. Private Directory option will never be used by DOSmenu.
  594.  
  595. You may actually specify two private locations for this option, like 
  596.  
  597.      Private Directory=h:\,c:\
  598.  
  599. to help take care of special cases like when a user does not have the proper
  600. network mappings.
  601.  
  602. On a stand-alone environment, you do not need to define a Private Directory.
  603. And in that case, any temporary batch files will be written to DOSMENU.EXE's
  604. home directory.
  605.  
  606. Support Comment=
  607. ----------------
  608. Default=For HELP Please Call Computer Support.  This phrase will be shown at
  609. the bottom of the main help window in blinking fashion so that your users will
  610. easily know what to do in case they need help.  We recommend placing the
  611. support telephone number with this phrase.
  612.  
  613. Desktop Color=
  614. --------------
  615. Default=71(for color machines) or 70(for monochrome machines).  This number
  616. determines the color of the menu system's desktop background.  The first
  617. number represents the standard MS-DOS foreground color code, and the second
  618. number represents the standard MS-DOS background color code.  If you enter
  619. only one color, then it will represent the background color and the
  620. foreground color will be 0.  Entering nothing or 0 or 00 will disable the
  621. desktop background.  For example:
  622.  
  623.      71 = white fore on blue back
  624.      70 = white fore ob black back
  625.      7  = black fore on white back
  626.      0  = no desktop background
  627.  
  628. The standard MS-DOS colors are:
  629.  
  630.      0=black
  631.      1=blue
  632.      2=green
  633.      3=cyan
  634.      4=red
  635.      5=magenta
  636.      6=brown
  637.      7=white
  638.  
  639. Both the foreground and background numbers are limited to a range between 0
  640. and 7.
  641.  
  642. Screen Saver Time=
  643. ------------------
  644. Default=5.  The default means that after 5 minutes of keyboard inactivity, the
  645. screen saver will become active.  This is only true if the quit time
  646. (discussed below) does not approach first.  The screen saver simply slides a
  647. soft information line around a blank screen showing the date and time, the
  648. user ID, and the time remaining before an automatic menu quit (if defined).
  649. Enter nothing or 0 to disable the screen saver, else enter the number of
  650. minutes before screen saver activity commences.
  651.  
  652. F2 Run DOS Password=
  653. --------------------
  654. Default={nothing}.  If filled in, then DOSmenu will require this password
  655. before allowing users will have the option of composing and running their own
  656. DOS command, just as they would at the DOS prompt.  This may be considered a
  657. security/safety issue within your environment.  If so, place a password here
  658. and later compile the DOSMENU.INI file with DMUTIL /C DOSMENU.INI.
  659.  
  660. When F2 is pressed, an answer box will pop up asking the user for the DOS
  661. command to be run.  If nothing is entered then the command is ignored.  Also
  662. for safety reasons, if a user enters a command that has the word 'command'
  663. anywhere within it, then it will also be ignored.  This is to prevent a user
  664. from actual going to DOS by loading another copy of COMMAND.COM.
  665.  
  666. F10 Quit Menu Password=
  667. -----------------------
  668. Default={nothing}.  If filled in, then DOSmenu will require this password
  669. before allowing users to quit the menu system.  This may be considered a
  670. security/safety issue within your environment.  If so, place a password here
  671. and later compile the DOSMENU.INI file with DMUTIL /C DOSMENU.INI.
  672.  
  673. If no password is defined, then the user will be prompted to be sure they wish
  674. to quit the menu system.
  675.  
  676. Timed Quit Menu Time=
  677. ---------------------
  678. Default=0.  This option, if enabled, allows you to control your user's allowed
  679. time of inactivity before forcing them off of the network (or simply out of
  680. the menu system).  On our, network, connections are at a premium, and
  681. therefore we use this option to remove users from the network after 30 minutes
  682. of no activity on their part.  We do this by entering the command 'logout' for
  683. the Quit Menu Command (discussed below).  Entering 0 or nothing disables this
  684. function, else enter the number of minutes before automatic menu quit.
  685.  
  686. Timed Quit Menu Command=
  687. ------------------------
  688. Default=logout.  If automatic quitting is enabled via the option above, then
  689. what ever is placed in this option will be run when the automatic quit is
  690. invoked.  Obviously entering 'logout' will log the user out of the network.
  691. If you simply wanted to remove a user from the menu system at automatic quit,
  692. then enter 'goto end' here.  This in affect will take the user out of the
  693. MENU.BAT internal loop that normally keeps DOSmenu going.  Entering nothing
  694. here essentially disables your automatic quit system as well because DOSmenu
  695. will issue no command and, instead, the menu will run again via the loop in
  696. the MENU.BAT file.
  697.  
  698. Admin (F4/F5) Password=
  699. -----------------------
  700. Default={nothing}.  If filled in, then DOSmenu will require this password
  701. before allowing anyone to edit batch/text files (F4) or edit the current menu
  702. file (F5).  This may be considered a security/safety issue within your
  703. environment.  If so, place a password here and later compile the DOSMENU.INI
  704. file with DMUTIL /C DOSMENU.INI.  This feature, and the F4 and F5 features,
  705. are new with release 5.0.
  706.  
  707. Use Logging=
  708. ------------
  709. Default=yes.  When enabled, this file is written to every time a user performs
  710. a menu action.  Included statistics are:  user name, node address, server
  711. name, complelte memory statisitics, date, time, menu action, and active menu
  712. name.  The file is written to the user's defined private directory.  This
  713. feature is new with release 5.0.
  714.  
  715.  
  716. After defining the above switches/options, you are ready to set up
  717. DOSMENU.MNU which contains the actual menus that will be used by the menu
  718. system.  Please see the Menu Definition section for specifics on that task.
  719.  
  720.                                 NOTICING (9)
  721. ==============================================================================
  722.  
  723. The file DOSMENU.NTE is used to leave notices to any and all users
  724. -dynamically.  Here you may place notices based on the rights defined for each
  725. notice (See Menu Definition section below for rights specifics).  Each notice
  726. consists of at least two lines; line 1 contains the rights and the following
  727. lines (up to 10) contain the actual notice, like:
  728.  
  729. ;-----
  730. {g=paradox} {s=server1}
  731. Paradox will be down on SERVER1 all day today.
  732. Hopefully it will be up tomorrow...
  733. ;-----
  734. Here, only users in group PARADOX on server SERVER1 will get this notice when
  735. they next start up the menu system.
  736.  
  737. Each user may have up to 15 active notices in the file at one time.  Each
  738. notice may have up to 10 lines, and each line may be up to 70 characters long.
  739.  
  740. You can add and subtract from this section anytime throughout the day.  When
  741. a user starts the menu system, the notices are checked and shown, if
  742. appropriate.  Additionally, each time a user runs a menu command, the
  743. DOSMENU.NTE file time is checked, and if it is later than the last time the
  744. user saw the notices, they will se them again.  This gives the noticing
  745. system a dynamic quality that can be very useful to you as an administrator!
  746.  
  747. (The time of the file when the user reads notices is kept in a DOS variable
  748. called _DMNTE.  This variable is checked each time a user reloads the menu
  749. system after running a command.  If you have made a change to the DOSMENU.NTE
  750. file during that time, then the user will see the notices again, and the
  751. variable will be updated.)
  752.  
  753.                              MENU DEFINITION (10)
  754. ==============================================================================
  755.  
  756. There are two conventions used to control the menu or menus a user gets when
  757. running the menu system, server-based and rules-based.  These conventions are
  758. much more difficult to explain than to actually use, so we will briefly both
  759. describe and show example code, offset with ';-----', throughout.
  760. Comprehensive examples will be shown at the end of the section.  Note that a
  761. small example is also made for you when your first run DMUTIL /G to create the
  762. default menu files.
  763.  
  764.  
  765. SERVER-BASED CONVENTION
  766. =======================
  767.  
  768. Approaching the DOSMENU.MNU menu file from the top down, the system can be
  769. thought of as a server-based system.  This can become quite robust, as in our
  770. eight-server domain or quite simple, as in the case of a single server or a
  771. stand-alone environment.  Basically, the file is divided vertically into
  772. server sections that are defined by the actual server name.  An all
  773. encompassing name is also allowed and it is called ALL.  Each server name, and
  774. the ALL choice, must start at the beginning of a line with a colon, e.g.,
  775. :OUR_SERVER or :ALL.  Although not very practical, you can have more than one
  776. section defined with the same server name.  Actually, defining an :ALL section
  777. at the beginning and at the end can be a good idea because it allows you to
  778. show certain all-encompassing menu items at the top and also at the bottom of
  779. each user's menu.  Here is a segment of a menu definition showing the vertical
  780. server-based method:
  781.  
  782. ;-----
  783. %Main Menu
  784.  
  785. :ALL
  786. Word Perfect
  787.   wp
  788.  
  789. :MAIN_SERVER
  790. Paradox
  791.   paradox
  792. Lotus 1-2-3
  793.   123
  794.  
  795. :SECOND_SERVER
  796. Proprietary application
  797.   ourapp
  798.  
  799. :ALL
  800. Logout of the network
  801.   logout
  802. ;-----
  803.  
  804. In the above example, you can see that a person who is running on the main
  805. server would get the following main menu:
  806.  
  807. ─────
  808. Word Perfect
  809. Paradox
  810. Lotus 1-2-3
  811. Logout of the network
  812. ─────
  813.  
  814. while a person running on the second server would get:
  815.  
  816. ─────
  817. Word Perfect
  818. Proprietary application
  819. Logout of the network
  820. ─────
  821.  
  822. Note that any menu items (and sub-menus and their items) may be accessible
  823. depending upon which section they are placed, subject to the next convention
  824. of discrimination, rules-based, which is discussed below.
  825.  
  826.  
  827. RULES-BASED CONVENTION
  828. ======================
  829.  
  830. A secondary, and much more powerful means of segregating the menu file between
  831. users, is the rules-based method.  Whereas the server-based convention may be
  832. viewed as vertical, we like to think of the rules-based convention as
  833. horizontal.  In other words, after deciding which server a user is using, we
  834. then must decide what the rights of that user are, and this convention does
  835. just that.
  836.  
  837. There are several methods to determine and define menu rights for a user.
  838. All but one of them are enacted by placing one or more phrases to the right of
  839. the menu item, each enclosed in braces {}.  Another is enacted by placing
  840. nothing to the right of the menu item.  Let's discuss each method in detail.
  841.  
  842. All rights assumed
  843. ------------------
  844. Rule = enter nothing to the right of the menu item.  This method is the
  845. quickest and least secure way of checking users rights because it checks
  846. nothing.  In other words, a menu item will show up on a user's menu if it is
  847. under the correct server name (or ALL), period.  Here, you will be relying on
  848. your defined network rights to determine whether a user will be able to run an
  849. item or not.  As an example, if the user has no rights to the Paradox
  850. directory, then the user will not be able to run that item (although it will
  851. still be shown on the menu).  This method is, of course, exactly what you
  852. would use if you were on a stand-alone environment.
  853.  
  854. ;-----
  855. Paradox
  856.   paradox
  857. ;-----
  858.  
  859. User gets item if it is available, period.
  860.  
  861. Directory rights
  862. ----------------
  863. Rule = {d=directory name or d=directory name1,directory name2 ..}.  Here,
  864. instead of relying on the network to determine after the fact whether a
  865. program can be run, you check it before hand.  DOSmenu will look to see if
  866. any of the listed directories exist for the user when it reads the menu file,
  867. and if all of them do not, it will not place the item on the user's menu.
  868. Obviously this is a better scenario for the user as he/she should normally be
  869. able to run all items that are displayed.
  870.  
  871. ;-----
  872. Paradox 
  873.   {f:\apps\paradox}
  874.   paradox
  875. ;-----
  876.  
  877. User gets item only if F:\APPS\PARADOX is 'visible' in the user's environment.
  878.  
  879. File rights
  880. ----------------
  881. Rule = {d=file name or d=file name1,file name2 ..}.  Here, instead of relying
  882. on the network to determine after the fact whether a program can be run, you
  883. check it before hand.  DOSmenu will look to see if any of the listed files
  884. exist for the user when it reads the menu file, and if all of them do not, it
  885. will not place the item on the user's menu.  Obviously this is a better
  886. scenario for the user as he/she should normally be able to run all items that
  887. are displayed.
  888.  
  889. ;-----
  890. Paradox
  891.   {f:\apps\paradox\paradox.exe}
  892.   paradox
  893. ;-----
  894.  
  895. User gets item only if F:\APPS\PARADOX\PARADOX.EXE is 'visible' in the user's
  896. environment.
  897.  
  898. Server rights (Netware only unless DOS variable/command line parameters used)
  899. -------------
  900. Rule = {s=server_name1 or s=server_name1,server_name2 ..}.  Do not confuse
  901. this method with the server-based convention.  They are not attached in any
  902. data way.  Here, by placing one or more server names beside a menu item, you
  903. are saying only show this item when the user is logged into one of those
  904. servers.  The main use for this option is under the :ALL section(s).  You may
  905. have defined 'Logout..' as a menu item under :ALL, but you may wish for users
  906. only on particular servers to actually have that item on their menu.  This
  907. would be a shortcut to otherwise having to place the command in each server
  908. section on which you wish to allow the command.
  909.  
  910. ;-----
  911. Paradox
  912.   {s=main_server}
  913.   paradox
  914. ;-----
  915.  
  916. User gets item only if the user is logged into MAIN_SERVER.
  917.  
  918. Group rights (Netware only unless DOS variable/command line parameters used)
  919. ------------
  920. Rule = {g=group_name1 or g=group_name1,group_name2 ..}.  This is a more
  921. specific method for deciding whether a user sees a menu item or not.  Normally
  922. you define groups to group certain users that you can later assign trustee
  923. rights to, thereby giving them access to certain programs.  This method allows
  924. you to use that work when discriminating your menu system.  There is an
  925. advantage here, however, in that even if you do not bother with trustee rights
  926. and your network is fairly open, DOSmenu will act like it is all set up just
  927. right.  In other words, DOSmenu doesn't care about the actual rights; it only
  928. cares about whether the user is in the group name or group names that you tell
  929. it.  If not, then the user does not get the menu item displayed (and therefore
  930. cannot run it).  Note that the group method is ignored on a stand-alone
  931. system.
  932.  
  933. ;-----
  934. Paradox
  935.   {g=paradox}
  936.   paradox
  937. ;-----
  938.  
  939. User gets item only if a member of group PARADOX.
  940.  
  941. User rights (Netware only unless DOS variable/command line parameters used)
  942. -----------
  943. Rule = {u=user_id or u=user_id1,user_id2 ..}.  This method takes the
  944. discrimination down to the actual user id running the system.  If the user
  945. name is in the list, then the user gets the item on their menu (if any other
  946. specified rights are also approved and the server-based convention allows it).
  947.  
  948. ;-----
  949. Paradox
  950.   {u=joeb}
  951.   paradox
  952. ;-----
  953.  
  954. User gets item only if his user logon ID is JOEB.
  955.  
  956. Node rights (DOS variable/command line parameter is required for this right)
  957. -----------
  958. Rule = {n=node_address or n=node_address1, node_address2 ..}.  This method
  959. takes the discrimination down to the actual user's work station.  If the node
  960. address is the same as that of the work station, then the user gets the item on their menu (if any other
  961. specified rights are also approved and the server-based convention allows it).
  962.  
  963. ;-----
  964. Paradox
  965.   {n=fa164505}
  966.   paradox
  967. ;-----
  968.  
  969. User gets item only if his work station's address is FA164505.
  970.  
  971. You must pull the work station's node address to DOS by setting it to a DOS
  972. variable from within the network's initial start-up script.  Only then can you
  973. check for it from the menu system.
  974.  
  975. Password rights
  976. ---------------
  977. Rule = {p=password where password is any alphanumeric, non-case sensitive,
  978. from 1 to 10 characters long}.  Placing a password on a menu item means that
  979. when the user selects this item (no matter what type it is - command or
  980. sub-menu), he or she will be prompted for the correct password.  If the user
  981. does not know the password, then the user cannot access the item.  This right
  982. does not actually remove a menu item from the user's menu (as all of the
  983. other rights do); rather it simply restricts access.
  984.  
  985. ;-----
  986. Paradox
  987.  {p=restrict}
  988. ;-----
  989.  
  990. User gets item only if he or she can answer the password prompt with RESTRICT.
  991.  
  992. Question rights (not really a 'right')
  993. ---------------
  994. Rule = {q=your question that demands a yes/no answer?}  This method does not
  995. disable the menu item from the user's menu system.  Instead, it simply pops up
  996. yoour question and asks for a Yes or No answer.  If the answer is no, then the
  997. item will not be run.
  998.  
  999. ;-----
  1000. Paradox
  1001.  {q=Are you sure?}
  1002. ;-----
  1003.  
  1004. Run rights (not really a right)
  1005. ----------
  1006. Rule = {r=nobreak}.  This is where you determine whether batch files will be
  1007. run with a second copy of the DOS command processor (NOBREAK) or not.  This
  1008. right is only appropriate when running multi-line commands (which DOSmenu
  1009. turns into batch files) or by running batch files; it should not be used
  1010. unless batch files are being run (and then it is your choice).  One
  1011. disadvantage of running NOBREAK is that netware search mapping commands within
  1012. batch file will not work.
  1013.  
  1014. ;-----
  1015. M My batch file
  1016.   {r=nobreak}
  1017.   dir \
  1018.   pause
  1019. ;-----
  1020.  
  1021. ;-----
  1022. WordPerfect
  1023.   {r=nobreak}
  1024.   wp.bat
  1025. ;-----
  1026.  
  1027. Location rights (not really a right -for notices only)
  1028. ---------------
  1029. Rule = {r=one_to_three_letters}.  You may optionally place this right on a
  1030. notice to set the location of it on the screen, like
  1031.  
  1032. ;-----
  1033. {l=tl}
  1034. A note
  1035. ;-----
  1036.  
  1037. where T=top, L=left, B=bottom, and R=right (side of screen), N=noise and
  1038. f=Flash title.
  1039.  
  1040.  
  1041. NOTES
  1042. =====
  1043.  
  1044. More than one of the above methods may be used at one time, either within the
  1045. same right grouping or by having two or more groupings separated with a ';'.
  1046. For example, you can place both a server (s=) method and a group (g=) method
  1047. on the same menu item, like:
  1048.  
  1049. ;-----
  1050. Paradox
  1051.   {g=paradox} {s=server1}
  1052.   paradox
  1053. ;-----
  1054. Here, it is read as member of paradox group _AND_ on server1.
  1055.  
  1056. ;-----
  1057. Paradox
  1058.   {g=paradox;s=server1}
  1059.   paradox
  1060. ;-----
  1061. Here, it is read as member of paradox _OR_ on server1.
  1062.  
  1063. Note that when using more than one grouping, each of the groupings must be
  1064. true for the item to be shown (they are ANDed).  When using one or more
  1065. methods within the same group, they are ORed.
  1066.  
  1067. Placing a '!' before a name means 'not'.  Where {g=paradox} means if the
  1068. current user is a member of group paradox, then display the menu item;
  1069. {g=!paradox} means display the item only if the current user is NOT a member
  1070. of group paradox (they are ORed only within each set of braces {}).
  1071.  
  1072. You may use spaces instead of commas.  The syntax {g=group1,group2} is the
  1073. same as {g=group1 group2}.
  1074.  
  1075. The biggest rule that you must remember about the rights methods are that
  1076. withing each set of braces {}, the answer must be true.  So if you use more
  1077. than one set of braces for a menu item, they all must be true.  For example:
  1078.  
  1079. ;-----
  1080. P Paradox
  1081.   {g=paradox} {u=joe,jim;n=fa164505} {s=!server2}
  1082. ;-----
  1083.  
  1084. will only show on the menu if the user is a member of the PARADOX group _AND_
  1085. the user is JOE _OR_ JIM _OR_ the node address is FA164505 _AND_ the user is
  1086. not on SERVER2.
  1087.  
  1088.  
  1089. TESTING YOUR MENU
  1090. =================
  1091.  
  1092. After you have placed a lot of restrictions on your menu items, you may find
  1093. it frustrating to see what the final outcome of an item looks like.  There is
  1094. a way around this.
  1095.  
  1096. Enter a bogus user id and server name from the command line.  For instance, if
  1097. you reside on SERVER1 but wish to check the appearance of SERVER2's menu, then
  1098. enter the start-up batch file with the command
  1099.  
  1100.      MENU /U:USER_ID /S:SERVER2
  1101.  
  1102. where user_id is the name you wish to check for SERVER2.  You can do this for
  1103. all of your servers and any user.
  1104.  
  1105.                                 MENU RULES (11)
  1106. ==============================================================================
  1107.  
  1108. The syntax for the menu file requires certain conventions.  In most cases,
  1109. DOSmenu will issue an error message if it has trouble interpreting the file
  1110. because of a syntax violation of one of the below described rules.  If you get
  1111. stuck in an error loop within the batch file, press Alt-F10 at the read error
  1112. message window to quit.
  1113.  
  1114.  
  1115. RULES
  1116. =====
  1117.  
  1118. Main menu name
  1119. --------------
  1120. The first line of the file must be the main menu's name, starting with a
  1121. percent symbol '%'.  You can optionally place the starting x and y coordinates
  1122. of the menu window after the menu name, like:  %Main Menu, 5, 10.  This means
  1123. the upper left corner of the menu will be 5 columns from the left edge and 10
  1124. rows from the top (after the banner line).
  1125.  
  1126. Server sections
  1127. ---------------
  1128. There must be at least one server name before any menu items, unless
  1129. operating in a standalone environment.  In a network environment, use :ALL, as
  1130. a minimum, just after the main menu title and the one REQUIRED blank line.
  1131.  
  1132. Comments
  1133. --------
  1134. Any line starting with a semi-colon ';' is a comment for you only.  Keep them
  1135. to a reasonable number to help keep your menu file small unless you plan on
  1136. compiling your menu files.
  1137.  
  1138. Blank lines
  1139. -----------
  1140. Blank lines are only allowed before a server section and before a menu title.
  1141. Remember, blank lines are always REQUIRED before all server sections, e.g.,
  1142. before any line starting with a colon ':', which are lines designating server
  1143. sections and names like :SERVER1 or :ALL and they are REQUIRED before sub-menu
  1144. title lines, e.g., before any line starting with a '%', which are sub-menu
  1145. item titles.  See the Menu File Example section for a properly formatted file.
  1146.  
  1147. Menu action character
  1148. ---------------------
  1149. The first letter of a menu item will always be highlighted and will be
  1150. searched when the used presses a key to move to a particular menu item.  It
  1151. may or may not be part of the first word of the menu item.  For example,
  1152.  
  1153. Lotus 1-2-3  and
  1154. L Lotus 1-2-3
  1155.  
  1156. offer the same result.  It is a cosmetic choice that you must make.  Of
  1157. course, you could also use
  1158.  
  1159. 1 Lotus 1-2-3.
  1160.  
  1161. Indenting
  1162. ---------
  1163. All server name lines and menu item lines must NOT be indented.  All help
  1164. lines, rights lines and DOS commands MUST be indented at least one space.  A
  1165. tab character is allowed for the indentation.
  1166.  
  1167. Parameters
  1168. ----------
  1169. Single-command menu items may be setup to ask the user for a parameter prior
  1170. to actually running the command associated with the menu item.  This is not
  1171. allowed for multi-command menu items.  Place a question mark '@' at the exact
  1172. location you wish to add input to the command.  Here are some examples:
  1173.  
  1174. dir @ /p
  1175. chkdsk @:
  1176. format @: /u
  1177.  
  1178. For multi-command items, use the DMQuery syntax (see DMQuery Input Utility
  1179. section).
  1180.  
  1181. Sub-menu names
  1182. --------------
  1183. All sub-menu names, both when called as a command and when entered as a
  1184. sub-menu title, must start with the percent symbol '%'.  There MUST be a
  1185. blank line before the sub-menu name.  Sub-menus must come somewhere _after_
  1186. the menu item that calls them.
  1187.  
  1188. Help lines
  1189. ----------
  1190. Help lines for each menu item, if used, must be indented and start with a
  1191. number symbol '#'.  There can be a maximum of one help line per menu item.
  1192.  
  1193.  
  1194. NOTES
  1195. =====
  1196.  
  1197. You may rename DOSMENU.MNU to another name or copy it to another menu file
  1198. because DOSmenu will run any menu file that you have as long as you
  1199. specify that file name on the command line.
  1200.  
  1201.      MENU [/U:USER1] [/S:SERVER1] MYMENU.MNU
  1202.  
  1203.      and
  1204.  
  1205.      MENU MYMENU.MNU
  1206.  
  1207. will both attempt to load MYMENU.MNU from DOSmenu's home directory (where all
  1208. menu files MUST be located) instead of the default DOSMENU.MNU.
  1209.  
  1210.  
  1211. LOADING ADDITION MENUS
  1212. ======================
  1213.  
  1214. You may switch menu files from within the menu system by LOADing them.  This
  1215. is accomplished by placing the /LOAD MENU_FILE (specify NO path) as the first
  1216. and only command line for a menu item, like:
  1217.  
  1218. ;-----
  1219. Support Menu
  1220.   /load support.mnu
  1221. Word Perfect
  1222.   wp
  1223. ;-----
  1224.  
  1225. Here, if Support Menu is chosen, then the system will load the SUPPORT.MNU
  1226. menu file from DOSmenu's _home_ directory to replace the active menu file.
  1227. You may do this an unlimited number of times.
  1228.  
  1229.                                 SUB-MENUS (12)
  1230. ==============================================================================
  1231.  
  1232. Sub-menus are just like the main menu except that their title is the first
  1233. line of their definition.  The main menu's title is the first line of the
  1234. menu file.  Their title must start with a percent '%' character, and when
  1235. called from another menu, this percent character must be included.  Here is an
  1236. example:
  1237.  
  1238. ;-----
  1239. %Main Menu
  1240.  
  1241. Word Perfect
  1242.   wp
  1243. Utilities
  1244.   %Utility Menu
  1245. Paradox
  1246.   paradox
  1247.  
  1248. ;The , 5, 10 is optional and determines x and y menu window coordinates
  1249. %Utility Menu, 5, 10
  1250. Directory of...
  1251.   dir @ /p
  1252. Check disk
  1253.   chkdsk @:
  1254. ;-----
  1255.  
  1256. Here, the sub-menu '%Utility Menu' is called from one of the main menu items.
  1257.  
  1258. Sub-menus follow the server-based convention along the vertical development of
  1259. the menu file.  In other words, if a sub-menu is found under the :SERVER2
  1260. server name line, then it will not be accessible from a menu calling it which
  1261. is situated under :SERVER1.  Sub-menus are typically placed at the end of the
  1262. menu file under an :ALL alias server name section.
  1263.  
  1264. Sub-menus can only be shown on the screen once, yet they can be called from
  1265. more than one menu.  For example, if the main menu calls sub-menu2 with one of
  1266. its items, it is ok for sub-menu1 to do the same thing.  However, if sub-menu2
  1267. calls sub-menu1 also, and you select sub-menu1 from the main menu, then select
  1268. sub-menu2, and then try to select sub-menu1 again, DOSmenu will issue a
  1269. non-destructive error explaining that sub-menu1 is already on the work space.
  1270. No harm will be done, but you will have to back up to use sub-menu1 again.
  1271.  
  1272. There is, of course, no way to call the main menu from a sub-menu because of
  1273. the above restriction.
  1274.  
  1275. When viewing a sub-menu on the menu screen, a right arrow will be added to the
  1276. sub-menus menu item text to denote the fact that it is a sub-menu.
  1277.  
  1278.                           COMPILING MENU FILES (13)
  1279. ==============================================================================
  1280.  
  1281. The DMutil program will compile and decompile init and menu files, if desired.
  1282. The syntax is:
  1283.  
  1284.      DMUTIL /C [FILENAME]  (filename only needed if not DOSMENU.MNU)
  1285.  
  1286. The output compiled file will be the same name.  You can then later decompile
  1287. the file with the command:
  1288.  
  1289.      DMUTIL /D [FILENAME]  (filename only needed if not DOSMENU.MNU)
  1290.  
  1291. Compiling init and menu files is not, repeat not, required.  Your users can
  1292. run DOSmenu all day long without ever comiling one file.  However, there are a
  1293. couple reasons why you may wish to consider compiling them after they have
  1294. been tested.
  1295.  
  1296. Reasons to compile:
  1297.  
  1298. o    DOSmenu loads them a little faster.
  1299.  
  1300. o    Your menus are much more secure when compiled.  Even smart users will not
  1301.      know what rights you have put where, what the passwords are, etc.
  1302.  
  1303. The choice is yours.  DOSmenu is smart enough to know what type of file is
  1304. being loaded.
  1305.  
  1306.                          TRANSLATING MENU FILES (14)
  1307. ==============================================================================
  1308.  
  1309. You can easily translate netware batch files to DOSmenu batch files with the
  1310. DMutil utility with the following command:
  1311.  
  1312.      DMITIL /T NETWARE_MENU_NAME
  1313.  
  1314. The generic default server name flag :ALL will be placed two lines after the
  1315. main menu title, giving access to all servers initially.
  1316.  
  1317. If your netware menu used any @variable"fill-in lines", then you must change
  1318. them within the new menu file to DOSmenu's format as it uses the external
  1319. DMQuery utility for this purpose with additional options.  See DMQuery Input
  1320. Utility section for more.
  1321.  
  1322.                           TEMPORARY BATCH FILES (15)
  1323. ==============================================================================
  1324.  
  1325. When a selected menu item has more than one DOS command listed below it, it is
  1326. called a multi-command menu item.  Normally DOSmenu simply takes the DOS
  1327. command and stuffs it in the DOS variable _dosmenu so that the start-up
  1328. batch file, MENU.BAT, can then run it after DOSmenu quits.  However if their
  1329. is more than one DOS command, this approach would not work.
  1330.  
  1331. Therefore DOSmenu instead will make a temporary batch file and stuff the name
  1332. of that batch file to the variable instead.
  1333.  
  1334. The location and name of the temporary batch file is as follows:
  1335.  
  1336. Name
  1337. ----
  1338. On a Novell network, the name will be @DMBATXX.BAT where XX is the actual
  1339. network connection number taken by the user's work station.  This way, a user
  1340. could actually run the menu system from two different work stations under the
  1341. same login ID without problems.
  1342.  
  1343. If not on a Novell network, then the batch file is named @DMBAT.BAT.
  1344.  
  1345. Location
  1346. --------
  1347. If the Private Directory option in the menu file was filled out with a
  1348. directory, then the batch file will be written and run from that directory.
  1349.  
  1350. If not, then it will be written and run from DOSMENU.EXE's home directory,
  1351. which is fine for stand-alone environments.
  1352.  
  1353. Notes
  1354. -----
  1355. Each time a temporary batch file is made, a '@echo off' is automatically
  1356. placed at the top of the file, relieving you from having to add that cosmetic
  1357. line to every multi-command menu item.
  1358.  
  1359. Example
  1360. -------
  1361. If a menu item looked like this:
  1362.  
  1363. ;-----
  1364. Word Perfect
  1365.   f:
  1366.   cd\apps\wp51
  1367.   wp
  1368.   h:
  1369.   cd\
  1370. ;-----
  1371.  
  1372. then the corresponding batch file would look like this:
  1373.  
  1374. @echo off
  1375. f:
  1376. cd\apps\wp51
  1377. wp
  1378. h:
  1379. cd\
  1380.  
  1381.                         DOS ENVIRONMENT VARIABLES (16)
  1382. ==============================================================================
  1383.  
  1384. DOSmenu uses up to five DOS variables to make the system work without _any_
  1385. overhead; a variable for the user ID, a variable for the server name, a
  1386. variable for the work station node address, a variable to hold the command
  1387. for a selected menu item, and an optional variable to hold the last time the
  1388. DOSMENU.NTE file was changed (for noticing).
  1389.  
  1390. The node address variable is always needed if you intend to rstrict any menu
  1391. items by comparing a work station's node address.  IN a Novell network, you
  1392. could define this variable like:
  1393.  
  1394.      DOS SET _NODE="%P_STATION"<<4
  1395.  
  1396. where the <<4 takes the first 4 number away from the actual twelve digit
  1397. address.
  1398.  
  1399. The user ID and server name variables are only needed if you are not running
  1400. on Netware and are not on a stand-alone environment.  In this case, you define
  1401. and load two DOS variables once during the user login start-up script with the
  1402. correct information.  In the case of Novell (where this procedure is not
  1403. necessary) you would add these lines to the login script:
  1404.  
  1405.      DOS SET _USER="%LOGIN_NAME"
  1406.      DOS SET _SERVER="%FILE_SERVER"
  1407.  
  1408. where _user and _server and be called anything you wish.  You would then add
  1409. these two names two the menu file options/switches section so DOSmenu will
  1410. know what they are called.  It takes care of the rest.
  1411.  
  1412. The variable for the menu item command is called _dosmenu and is always used.
  1413. When a menu item is selected that has an associated command that is not
  1414. another menu (sub-menu command), then DOSmenu either places that command in
  1415. this DOS variable if it was a singular command or else DOSmenu makes a batch
  1416. file out of the multiple DOS commands for that menu item and then passes the
  1417. name of the batch file to this variable.  Either way, the MENU.BAT file then
  1418. runs that command kept in the variable _dosmenu.
  1419.  
  1420. The last variable, _DMNTE, is used when you wish to leave dynamic notices to
  1421. any and all users.  See the Noticing section for specifics.
  1422.  
  1423. DMQuery also uses environment variables.  It will use up to 9 variables named
  1424. @1, @2, .., @9.
  1425.  
  1426.                                 EXAMPLES (17)
  1427. ==============================================================================
  1428.  
  1429. INIT FILE (network -commented)
  1430. =========
  1431.  
  1432. ;These are options/switches that control the menu system.  They are defined in
  1433. ;the Setup section.
  1434.  
  1435. ;Novell netware in use?
  1436. Using Netware=yes
  1437.  
  1438. ;If yes, then ignore these two.  Otherwise, name of DOS variable to be used.
  1439. Non-Netware DOS User Var=
  1440. Non-Netware DOS Server Var=
  1441.  
  1442. ;The node address of the work station (optional)
  1443. Any-Network DOS Node Var=
  1444.  
  1445. ;A directory users can write to.
  1446. Private Directory=h:\
  1447.  
  1448. ;Help screen support notice.
  1449. Comment Line=For HELP Please Call Support At 512-590-4444
  1450.  
  1451. ;What color should the screen background be?
  1452. Desktop Color=71
  1453.  
  1454. ;Enter 0 to disable.  Number represents minutes.
  1455. Screen Saver Time=3
  1456.  
  1457. ;Password to allow users to run DOS commands with the F2 function key
  1458. F2 Run DOS Password=dos
  1459.  
  1460. ;Password to allow users to quit the menu system.
  1461. F10 Quit Menu Password=secret
  1462.  
  1463. ;Enter 0 to disable.  Number represents minutes.
  1464. Timed Quit Menu Time=30
  1465.  
  1466. ;If timed out, what command should we run?
  1467. ;This could also be 'goto end'.
  1468. Timed Quit Menu Command=logout
  1469.  
  1470. ;Password to allow users to run the F4 and F5 features (new with release 5.0)
  1471. Admin (F4/F5) Password=admin
  1472.  
  1473. ;Should all user activity be logged? (new with release 5.0)
  1474. Use Logging=yes
  1475.  
  1476.  
  1477. MENU FILE (network -commented)
  1478. =========
  1479.  
  1480. The below network menu file example is listed with a generous helping of legal
  1481. and illegal comments.  Note that comments must commence only at the start of a
  1482. line and NOT at the middle to end of a line even though we use it here to
  1483. better comment the code for you.
  1484.  
  1485. ;The menu name for this overall main menu below.
  1486. %Our Network Menu, 10, 5      ;numbers optional: 10 = x, 5 = y on screen
  1487.                               ;  placement of upper left corner of menu window
  1488. ;This server section means any server and/or a stand-alone environment.
  1489. ;These commands will be at the top of every user's menu.
  1490. ;Remember to place a blank line before all :SERVER_NAME lines
  1491.  
  1492. :ALL
  1493. M Mail
  1494. ;All members of EMAIL_USERS will get the Mail menu item.
  1495.   {g=email_users}
  1496. ;The help line for this item (shown at the botom of the screen)
  1497.   #Send and receive mail to and from other users
  1498. ;If selected, the command/permanent batch file EMAIL will be run.
  1499.  email
  1500.  
  1501. ;This section is for CENTRAL server users only.
  1502. :CENTRAL
  1503. P Paradox
  1504.  {g=support,paradox} {p=restrict}          ;
  1505.   #Database program                        ;This is a multi-command item that
  1506.   f:                                       ;  generates a temp batch file.
  1507.   cd\apps\paradox
  1508.   paradox
  1509. W WordPerfect
  1510.   {g=wp_central}
  1511.   #Word processor
  1512.   f:\apps\wp51\wp
  1513. 1 Lotus 1-2-3
  1514.   {g=lotus_users,finance}
  1515.   #Spreadsheet program
  1516.   lt123
  1517. ;The next item ask a yes/no question first.
  1518. C Check printing
  1519.   {u=check_printer} {q=Are you sure you want to print checks?}
  1520.   #Print all due checks to the upstairs printer
  1521.   checkprt
  1522. I INSAPP
  1523.   {g=insapp_users,support;u=adm} {s=server1}
  1524.   #Our main database application
  1525.   ins
  1526. C Checks printed by and for you so far this week
  1527.   {g=insapp_users}
  1528.   checks
  1529. V Vendor list
  1530.   vendors
  1531. S Support Menu                ;Another complete menu file which is called
  1532.   /load support.mnu           ;  with this line.
  1533.  
  1534. ;This section is for BRANCH_ONE server users only.
  1535. :BRANCH_ONE
  1536. A Central connection
  1537.   {g=awlan}
  1538.   #Connect with the home office by modem
  1539.   connect
  1540. W WordPerfect
  1541.   {g=wp_branch}
  1542.   #Word processor
  1543.   wp
  1544. H Home office support (setup modem)
  1545.   {r=nobreak} {f:\utils\awlan}
  1546.   f:
  1547.   cd\utils\awlan
  1548.   awlan -u=%user%
  1549.   h:
  1550.   cd\
  1551.  
  1552. ;This server section means any server and/or a stand-alone environment.
  1553. ;These commands will be at the bottom of every user's menu.
  1554. :ALL
  1555. U Utility Menu
  1556.   #Various utilities
  1557.   %Utility Menu
  1558. B Backup Server Menu
  1559.   #Backup options
  1560.   %Backup Server Menu
  1561. L Logout of network
  1562.   {q=Are you sure?}
  1563.   #Log out of the network
  1564.   logout                      ;You could also enter 'goto end' to simply quit
  1565.                               ;  the menu system, if desired.
  1566. ;Remember to place a blank line before all %SUB-MENU NAME lines
  1567. %Utility Menu, 5, 10          ;Display at xy coords 5 and 10 on screen
  1568. P Change your network printer
  1569.   capture@                    ;This command asks a question first.
  1570. C Calculator
  1571.   #An electronic calculator
  1572.   calc
  1573. D Directory of...
  1574.   #Obtain a directory listing: press F3 after to view the list again
  1575.   dir @ /p                    ;This command asks a question first.
  1576. D Directory of (another way)...
  1577.   echo Directory of what?
  1578.   dmquery 1                     ;DMQuery external batch utility
  1579.   echo Switches (/w /p, etc)?
  1580.   dmquery 2
  1581.   dir %@1% %@2%
  1582.   pause
  1583.  
  1584. %Backup Server Menu
  1585. D Daily backup procedure
  1586.   bud
  1587. W Weekly backup procedure
  1588.   buw
  1589. M Monthly backup procedure
  1590.   bum
  1591.  
  1592.                                  CREDITS (18)
  1593. ==============================================================================
  1594.  
  1595. Turbo Pascal is a trademark of Borland International.
  1596.  
  1597. MS-DOS is a trademark of Microsoft Corporation.
  1598.  
  1599. Netware and Novell are registered trademarks of Novell, Inc.
  1600.  
  1601. Windows is a registered trademark of Microsoft Corporation.
  1602.  
  1603. PKZIP is registered trademark of PKWARE, Inc.
  1604.  
  1605. Trademarks of other companies or products mentioned in this file are the
  1606. property of their respective companies.
  1607.  
  1608.                                   SHAREWARE (19)
  1609. ==============================================================================
  1610.  
  1611. Evaluation Copy
  1612. ---------------
  1613. THIS IS NOT FREE SOFTWARE!  You may evaluate and use this product, but if you
  1614. decide to make use of it on a regular basis, you must register your copy.
  1615.  
  1616. Note:  Businesses, government agencies and institutions are required to
  1617. register this software package before extended use.
  1618.  
  1619. We offer several inducements to you for registering.  First of all, you will
  1620. receive the most up-to-date copy of the program -- and we update the program
  1621. on a regular basis.  Second, full mouse support is available in the registered
  1622. version.  Third, we have additional mini-utilities that work nicely with
  1623. DOSmenu not included in this package that we will ship to you upon
  1624. registration.  Fourth, you will never see the shareware message again.  Make
  1625. no mistake, however -- this is a fully functional version of DOSmenu that is
  1626. not "crippled" in any way.
  1627.  
  1628. Distribution
  1629. ------------
  1630. This is "user-supported" software.  You are hereby granted permission to
  1631. distribute this evaluation copy of DOSmenu and its documentation, subject to
  1632. the following conditions:
  1633.  
  1634. 1.  Shareware DOSmenu may be distributed freely without charge in evaluation
  1635.     form only.  The original PKZIP self-extracting file, DOSMNU.EXE, is the
  1636.     preferred method (PKZIP license is held by DOSmenu copyright holder).
  1637.  
  1638. 2.  DOSmenu in its shareware form may not be sold, licensed, or a fee charged
  1639.     for its use.  If a fee is charged in connection with DOSmenu, it must
  1640.     cover the cost of copying or dissemination only.  Such charges must be
  1641.     clearly identified as such by the originating party.  Under no
  1642.     circumstances may the purchaser be given the impression that he is buying
  1643.     a registered version of DOSmenu.
  1644.  
  1645. 3.  Shareware DOSmenu must be presented as a complete unit with documentation.
  1646.     Neither DOSmenu nor its documentation may be amended or altered in any way
  1647.     without permission of the copyright holder.
  1648.  
  1649. 4.  By granting you the right to distribute the evaluation form of DOSmenu,
  1650.     you do not become the owner of DOSmenu in any form.
  1651.  
  1652. Any other use, distribution or representation of DOSmenu is expressly
  1653. forbidden without written consent from the author.
  1654.  
  1655. Registration
  1656. ------------
  1657. The non-commercial single-user registration fee for DOSmenu is $40.00 US.  
  1658. ($5 shipping is included.)
  1659.  
  1660. The commercial/government and multi-system site fee for DOSmenu is:
  1661.  
  1662.      Non-network environment:
  1663.           Per machine        - $110.00 US.
  1664.      Network environment:
  1665.           Per server         - $160.00 US.
  1666. ($10 shipping is included.)
  1667.  
  1668. Send a check, money order or company P.O. for the appropriate amount to:
  1669.  
  1670.           Skip Bremer - DOSmenu
  1671.           3401 Cactus Wren Way
  1672.           Austin, Texas 78746
  1673.  
  1674. No credit cards.  Thank you.
  1675.  
  1676. Telephone: 512-328-2465
  1677. Compuserve ID: 71614,2556
  1678.  
  1679. Disclaimer
  1680. ----------
  1681. The author does not warrant that the functions contained in this program will
  1682. meet your requirements or that the program operation will be uninterrupted or
  1683. error free.
  1684.  
  1685. The author specifically disclaims all other warranties, expressed or implied,
  1686. including but not limited to implied warranties of fitness for any particular
  1687. purpose and of merchantability.
  1688.  
  1689. In no event will the author be liable to you for any damages, including but
  1690. not limited to any lost profits, lost savings, commercial damage or other
  1691. incidental or consequential damages arising out of the use or inability to use
  1692. this program, or for any claim by any other party.
  1693.