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

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