home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / dosutils / env18a.arj / ENV.DOC < prev    next >
Text File  |  1992-04-26  |  28KB  |  703 lines

  1.              ENV - The Master Environment Utility
  2.                          Version 1.8a
  3.  
  4.                               by
  5.  
  6.                          Kjell Eikland
  7.                       674 St. John's Drive
  8.                       Camp Hill, PA 17011
  9.  
  10. -----------------------------------------------------------------
  11.  
  12. ENV is a DOS environment utility which does everything the
  13. internal SET command does, and much more.  If these are new
  14. concepts to you, then you may read quickly through the Appendix
  15. that contains a description of what the environment is and what
  16. the SET command does.  ENV provides:
  17.  
  18. ...  a powerful calculator with a large complement of scientific
  19.      functions, date and time functions (with time zone
  20.      adjustments), and also logical operators.
  21.  
  22. ...  complete text manipulation functions, freely intermixable
  23.      with the mathematical calculation services.
  24.  
  25. ...  interactive editing of existing or new environment
  26.      variables, for example the content of the PATH.
  27.  
  28. ...  automatic prompting for input from the user.
  29.  
  30. ...  read data from text, database (dBase) and spreadsheet files
  31.      (Lotus 123 and Symphony, Borland Quattro and Quattro Pro), as
  32.      well as complex comma-delimited environment variable values.
  33.  
  34. ...  testing of environment variables with the result reported in
  35.      DOS's ERRORLEVEL variable and in an environment variable.
  36.  
  37. ...  batch commands to speed the execution time and to quickly
  38.      insert new environment variables that may be stored in a
  39.      "library".
  40.  
  41. ...  selective listing, erasure and calculation of the
  42.      environment's content based on an extended use of the
  43.      * and ? wild-cards.
  44.  
  45. ...  a simple report generator to facilitate the development of
  46.      useful routines, such as a DOS command line calculator.
  47.  
  48. ...  report generation to any DOS output file, device or pipe.
  49.  
  50. ...  full support for DOS input pipes, such that the DOS
  51.      commands SORT and FIND may be used to dramatically increase
  52.      the possible uses of ENV.
  53.  
  54. ...  free use of any environment present in your computer in
  55.      addition to the standard use of the master DOS environment.
  56.  
  57. ...  status information on the present environment, including the
  58.      environment owner's name.
  59.  
  60. Licencing information
  61. ---------------------
  62.  
  63. ENV is a Shareware program.  That means you may try it out on
  64. your computer for a limited period of time.  If you find that you
  65. would like to keep ENV on your computer, please send a check for
  66. US$15.00 to the address given on the first page, as indicated in
  67. enclosed order form.
  68.  
  69.  
  70.      ENV is written and copyrighted by Kjell Eikland 1991-92.
  71.  
  72.  
  73.  
  74.                       ----------------
  75.  
  76.  
  77.  
  78.       Feedback welcome through Compuserve (CIS) 72461,556
  79.  
  80.  
  81. Using ENV
  82.  
  83.  
  84. General syntax
  85. --------------
  86.  
  87. ENV uses the following command structure:
  88.  
  89.      ENV [general command] [specific action]
  90.  
  91.  
  92. The general commands are:
  93.  
  94.      HELP           Provide help for ENV
  95.      STATUS         Show environment usage
  96.      LIST           Display the content of the environment
  97.      EDIT           Do interactive editing of a variable
  98.      ERASE          Erase one or more variables
  99.      EXIST          Test for the existence of a variable
  100.      CALC           Compute the value of a text or mathematical
  101.                     expression
  102.      ASK            Interactively ask to define an environment
  103.                     variable
  104.      SET            Define the content of a variable
  105.      SET%           As SET but add a leading and trailing %
  106.                     to create an environment variable reference
  107.      TEST           Test for equality
  108.  
  109.  
  110. In its simplest form a mathematical calculation could be
  111. performed by writing:
  112.  
  113.      ENV SET TEST=(1+2)/3
  114.      ENV CALC TEST              ( or ENV CALC TEST=(1+2)/3 )
  115.      ENV LIST TEST
  116.      ENV ERASE TEST
  117.  
  118.  
  119. (Of course, this is better implemented in an ENV batch file so
  120. that DOS does not have to reload ENV every time)  Similarly, a
  121. simple text expression could be written:
  122.  
  123.      ENV SET TEST=a+b+c+d+MID(efgh~2~2)
  124.      etc.
  125.  
  126.  
  127. or with variable substitution:
  128.  
  129.      ENV SET TEST=MID(%COMSPEC%~3~LENGTH(%COMSPEC%)-2)
  130.      etc.
  131.  
  132. For convenience you may also write ENV CALC TEST=MID(...) to
  133. directly define and evaluate the expression.
  134.  
  135.  
  136. Reading data from files
  137. -----------------------
  138.  
  139. ENV can read data from text (ASCII), dBase and spreadsheet
  140. files. This can either be done through I/O redirection and
  141. piping (see next section) or by using three special
  142. functions in ENV.  These functions are READLN to read a line
  143. from a text file, READDB to read a field in a dBase file, and
  144. READSS to read the value of a cell in a spreadsheet file. A
  145. line in a text file may then be retrieved and analyzed by
  146. writing:
  147.  
  148.      ENV CALC TEST=MID(READLN(CONFIG.SYS~3)~5~8)
  149.  
  150. This would define the environment variable TEST as eight
  151. characters from the fifth position in the third line of the
  152. CONFIG.SYS file.  Similarly, a spreadsheed cell value could
  153. be referenced by writing:
  154.  
  155.      ENV CALC TEST=READSS(TESTDATA.WK1~AB45)
  156.  
  157. This would define the variable TEST as the value of cell AB45
  158. in the spreadsheet file TESTDATA.WK1.  Lotus 123 and Symphony,
  159. as well as Borland's Quattro and Quattro Pro file formats are
  160. supported.  Microsoft Excel files are not supported directly,
  161. but must be saved as a Lotus file.
  162.  
  163. The value of a field in a dBase file could be retrieved by
  164. defining:
  165.  
  166.      ENV CALC TEST=READDB(DATABASE~54~LASTNAME), or
  167.      ENV CALC TEST=READDB(DATABASE~54~FIELD4), or
  168.  
  169. Here the value of the field LASTNAME in the 54th record in the
  170. DATABASE.DBF file is put in the environment variable TEST.
  171. If the name of the field is not known, but the column is then
  172. you may write FIELDx, where x is the column (field) number in
  173. the file. Note that - contrary to READLN and READSS - a file
  174. extension is not needed. An extension of DBF is always assumed.
  175.  
  176.  
  177. Using redirection and piping
  178. ----------------------------
  179.  
  180. ENV supports redirection and piping for all of the relevant
  181. commands.  For example, the current directory may be retrieved by
  182. writing:
  183.  
  184.      CD|ENV SET CURDIR
  185.  
  186.  
  187. The environment may be sorted, saved and restored with the
  188. commands:
  189.  
  190.      ENV LIST * SET {GET*NAME}={GET*VALUE}|SORT >ENVSAVE.TMP
  191.      ENV ERASE *
  192.      ENV BATCH <ENVSAVE.TMP
  193.  
  194.  
  195. Similarly, a sorted listing of the environment may be printed by
  196. writing:
  197.  
  198.      ENV LIST *|SORT >PRN
  199.  
  200.  
  201. If you wish to store the version of the operating system in an
  202. environment variable you would type:
  203.  
  204.      VER|FIND "Version"|ENV SET DOSVERSION
  205.  
  206.  
  207. These are only some of the possible uses of redirection and
  208. piping.  Particularly together with DOS's FIND and type
  209. utilities, as well as the enhanced ability of DOS 5.0 of scan
  210. subdirectories, there is effectively no limit to the possible
  211. uses of redirection and piping in ENV.
  212.  
  213.  
  214. Playing music
  215. -------------
  216.  
  217. The most useless feature of ENV is probably its ability to use
  218. the computer's otherwise "dumb" built-in speaker to give
  219. something that resembles music. This PLAY feature is used as
  220. the BATCH command and requires music data piped or redirected
  221. from DOS. To play the enclosed TWILIGHT.MUS Twilight Zone
  222. piece you would issue the commands:
  223.  
  224.          ENV SET ENVTEMPO=50             (beats per second)
  225.          ENV PLAY <TWILIGHT.MUS
  226.  
  227. The Music file is a regular ASCII comma-delimited file with a
  228. series of lines with the following structure:
  229.  
  230.          <Octave level>,<Tone>,<Duration>,<Rest>
  231.  
  232.          f.ex.: 3,C,4,0
  233.                 2,B,8,2
  234.                 3,C+,8,0
  235.  
  236. The octave level is normally in the range 2-4. The Tone is
  237. an entry in the 12-tone scale C,C+,D,D+,E,F,F+,G,G+,A,A+,B.
  238. The Duration and Rest entries are normally 0,2,4,8,16,32.
  239.  
  240.  
  241. The use of wild-cards
  242. ---------------------
  243.  
  244. In certain situations, it is convenient or necessary to specify
  245. more than one environment variable in one statement.  In DOS, a
  246. similar situation arises when you wish to have a directory
  247. listing of more than one file - say of all files whose names
  248. begin with the letter A.  You would then type "DIR A*.*".  If the
  249. files of interest have names with three letters you would type
  250. "DIR ???.*".  DOS uses the character "*" to signify any character
  251. or many characters.  "?" signifies a character.  Collectively,
  252. "*" and "?" are called wild-cards.
  253.  
  254. The big problem with DOS's use of wild-cards wildcards is that
  255. "*" may not be followed by a letter.  That means that it is
  256. impossible to have DOS list all files that end with an "E"; i.e.
  257. the command "DIR *E.*" is incomprehensible to DOS.
  258.  
  259. With this introduction it is fairly obvious that ENV handles full
  260. wild-card usage.  Thus, if you wish to list all variables ending
  261. with an "E" followed by two other letters you would write
  262. "ENV LIST *E??".  The ENV LIST, ERASE and CALC commands all use
  263. this syntax. You may therefore calculate all variables that
  264. begin with a T by writing:
  265.  
  266.      ENV CALC T*
  267.  
  268. In order to protect the PATH, PROMPT and other variables from
  269. accidental erasure you may define the ENVPROTECT variable to
  270. include these variables, separated by commas. Wild-cards are
  271. of course supported. The COMSPEC variable is always protected.
  272.  
  273. Additionally, in the case of piped input (consult the section on
  274. "Using DOS pipes and files with ENV" if this concept is new to
  275. you) to the ENV SET command an entire file or listing may be
  276. loaded into the environment with numbered lines.  Two examples of
  277. this usage:
  278.  
  279.      DIR|SORT|ENV SET FILE*        This would load the
  280.                                    environment with the names of
  281.                                    all files in the current
  282.                                    directory sorted
  283.                                    alphabetically, and given the
  284.                                    names FILE001, FILE002, etc.
  285.  
  286.      TYPE CONFIG.SYS|ENV SET CFG*  This would load the
  287.                                    environment with all lines in
  288.                                    the CONFIG.SYS file, numbered
  289.                                    consecutively.
  290.  
  291.  
  292. Calculator operators and functions
  293. ----------------------------------
  294.  
  295. Math:
  296.  
  297.      Operators           Functions              1-0 Logic
  298.  
  299.   +  Addition            ABS(■Number■)       >  Greater than {GT}
  300.   -  Subtraction         INT(■Number■)       <  Less than    {LT}
  301.   *  Multiplication      ROUND(■Number■)     ≡  Equal to     {EQ}
  302.   /  Division            LN(■Number■)        ≥  GT or EQ to  {GE}
  303.   ^  Exponentiation      EXP(■Number■)       ≤  LT or EQ to  {LE}
  304.   √  n'th root           SIN(■Number■)
  305.      {ROOT}              ASIN(■Number■)
  306.   @  Modulo/remainder    LRAND(■Number■)
  307.      {MOD}               NRAND(■Number■)
  308.   ÷  Integer division    !(■Number■)
  309.      {DIV}               GAMMA(■Number■)
  310.                          CUMNORM(■Number■)
  311.                          PI()
  312.  
  313. The BAND function forces a number to be between an upper and a lower
  314. value, as presented below:
  315.  
  316.      BAND(■LowLimit■~■TestNumber■~■HighLimit■)
  317.  
  318. The functions DegC and DegF convert temperatures between Centigrade/
  319. Celsius and Fahrenheit, and for the oilman the function DegAPI
  320. converts the specific gravity of oil to the American Petroleum
  321. Institute index for oil weight.
  322.  
  323. To complement the INT function that returns the integer part of a
  324. number, the FRAC function returns the fractional part and the FLOOR
  325. function returns the same as INT when the number is positive and
  326. the next lower integer when the number is negative.
  327.  
  328. In addition to the SIN/ASIN functions, COS/ACOS and TAN/ATAN are
  329. also defined.  All trigonometric functions use radians.  In
  330. order to avoid the dependence on high ASCII characters above 128
  331. synonyms are provided for these operators.  For example, the ≡
  332. equality test can be substituted by writing {EQ} as follows:
  333.  
  334.      ENV CALC TEST=123{EQ}%OTHERNUM%
  335.  
  336. This would yield either 1 or 0 as a value for TEST, depending on
  337. the value of %OTHERNUM%.
  338.  
  339.  
  340. Date:
  341. -----
  342.  
  343.   TIMENOW(■Time Zone Offset■)      Current time in HH.MMSS format
  344.   DATENOW(■Time Zone Offset■)      Current date in YYYY.MMDD
  345.                                    format
  346.   DECTIME(■HMS time number■)       Convert time to decimal format
  347.   HMSTIME(■DEC time number■)       Convert time to HMS format
  348.   DAYS(■YYYY.MMDD day number■)     Days since 15 Oct.1582 serial
  349.                                    number
  350.   YMD(■Date serial number■)        Convert serial date to
  351.                                    YYYY.MMDD format
  352.   ROMAN(■Arabic integer number■)   Convert to a roman number
  353.   ARABIC(■Roman number■)           Convert back to an arabic number
  354.  
  355.  
  356. As an example, the expression DAYS(DATENOW())-DAYS(1918.1111)
  357. would give the number of days since 11 november 1918.  The
  358. expression DATENOW(-3) would give the date in current time zone
  359. less 3 hours.
  360.  
  361.  
  362. Text:
  363. -----
  364.  
  365.   LENGTH(■String■)                           Length of a string
  366.   POS(■Target■~■String■)                     Position of a
  367.                                              substring
  368.   MID(■String■~■StartPos■~■Chars■)           Extract a substring
  369.   LEFT(■String■~■Chars■)                     Extract the leftmost
  370.                                              characters in a string
  371.   RIGHT(■String■~■Chars■)                    Extract the rightmost
  372.                                              characters in a string
  373.   INSERT(■AddString■~■String■~■StartPos■)    Insert a string into
  374.                                              a string
  375.   DELETE(■String■~■StartPos■~■Count■)        Delete characters in
  376.                                              a string
  377.   TRIM(■String■)                             Remove leading and
  378.                                              trailing spaces
  379.   UCASE(■String■)                            Convert string to
  380.                                              upper case
  381.   LCASE(■String■)                            Convert string to
  382.                                              lower case
  383.   ASC(■Character■)                           ASCII value of a
  384.                                              character
  385.   CHR(■AsciiValue■)                          Character of an
  386.                                              ASCII code
  387.   TEXT(■Number/Expression■)                  Convert number to text
  388.   COPY(■Character■~■Count■)                  Replicate a
  389.                                              character
  390.   STATIC(■String■)                           Literal text; do not
  391.                                              evaluate in CALC
  392.  
  393. NB! Note that from ENV version 1.7x the former TEXT function
  394.     has been given the new name STATIC. TEXT now internally
  395.     converts a number to a string or text format.
  396.  
  397. The expression MID(%COMSPEC%~1~2) would give the disk drive where
  398. command processor COMMAND.COM is located.  The expression 
  399. COPY(CHR(205)~LENGTH(%PATH%)) would create a string of ═'s with a
  400. lenght equal to the current length of the PATH variable.
  401.  
  402.  
  403. File:
  404. -----
  405.  
  406.   READLN(■FileName■~■LineNumber■)        Get a line in a text file
  407.   READSS(■FileName■~■SpreadSheetCell■)   Get the value of a cell
  408.                                          (i.e. A1) in a spread-
  409.                                          sheet file
  410.   READDB(■RootName■~■RecordNo■~■Field■)  Get the value of a field
  411.                                          in a dBase file
  412.  
  413. These functions are fully comparable with all of the other
  414. functions in ENV.  This means that they may be nested with any
  415. other relevant function, including themselves.
  416.  
  417. In addition to these functions, environment variables may be
  418. defined as a series of comma-delimited values. The individual
  419. entries may be accessed by writing the name of the environment
  420. variable followed by a number enclosed between parentheses in
  421. the same manner as for a regular mathematical or string function.
  422. In the environment variable DATA defined as:
  423.  
  424.   ENV SET DATA=1,2/3,STATIC(3.14+2),(This is a test),432+EXP(4)
  425.  
  426. subelements may therefore be accessed by writing:
  427.  
  428.   ENV CALC TEST=DATA(2)             Giving TEST=0.6666
  429.   ENV CALC TEST=DATA(3)             Giving TEST=3.14+2
  430.   ENV CALC TEST=DATA(4)             Giving TEST=This is a test
  431.  
  432. Sometimes it is inconvenient or undersired to have ENV
  433. automatically evaluate the expressions in a comma-delimited
  434. line. In the example above, the second item was forced
  435. static by use of the STATIC function but even this may be
  436. inconvenient. Instead, such automatic evaluation can be
  437. avoided by writing the reference to the field number between
  438. DOUBLE parentheses. In the second DATA field above, the
  439. result would therefore have been:
  440.  
  441.   ENV CALC TEST=DATA((2))           Giving TEST=2/3
  442.  
  443. If an other separator character is desired then the ENVARRAY
  444. environment variable may be defined in the master environment,
  445. containing such a new character. For example, if you wish to
  446. access the third element within the PATH environment variable
  447. then write:
  448.  
  449.   ENV SET ENVARRAY=;
  450.   ENV CALC TEST=PATH(3)
  451.  
  452. As always, full use of functions and expressions is allowed
  453. in a nested and recursive fashion.
  454.  
  455.  
  456. Internal:
  457. ---------
  458.  
  459.   {ENV*OWNER}       Get the owner of the current environment
  460.   {ENV*SIZE}        Retrieve the total size of the environment
  461.   {ENV*USED}        Compute bytes currently used in the
  462.                     environment
  463.   {ENV*COUNT}       Total the current number of variables defined
  464.   {GET*DISK}        Obtain the default/current disk drive
  465.   {GET*DIR}         Obtain the default/current directory
  466.   {GET*NAME}        Return the name of the currently active
  467.                     variable
  468.   {GET*VALUE}       Return the value of the currently active
  469.                     variable
  470.   {GET*DOSLIST}     Get DOS's list separator/parser character
  471.   {GET*COUNTRY}     Obtain a record of DOS's country-specific
  472.                     settings; including time, date and punctuation.
  473.                     These values are separated by the list
  474.                     separator obtained from {GET*DOSLIST}.
  475.  
  476.  
  477. How ENV calculates numbers and strings
  478. --------------------------------------
  479.  
  480. ENV uses standard algebraic rules for evaluating expressions.
  481. That means that unless overridden by parentheses, the following
  482. order is used for the various operators:
  483.  
  484.         +-       evaluated last
  485.         */@÷
  486.         ^√
  487.         ≡≤≥      evaluated first
  488.  
  489. Functions are obviously only computed when their parameters have
  490. been fully evaluated.
  491.  
  492. In general, all ENV function names are reserved, and environment
  493. variables with these names should not be defined. However, ENV
  494. allows this in a few cases, in which case the user-defined
  495. "function" or comma-delimited environment variable overrides the
  496. standard ENV function. Such override is possible for ENV's Date/
  497. Time and Mathematical functions.
  498.  
  499. ENV attempts to evaluate all expressions as both text and number,
  500. and - depending on the context - then determines from the context
  501. or tries to make an intelligent guess about what is meant.
  502. Unless changed by the calculations in ENV the default values for
  503. any suboperation for a string is an empty string and for a
  504. number a 0 (zero).
  505.  
  506. This means that sometimes ENV will be wrong, and needs to be
  507. explicitly told what the user means. A typical example of such
  508. a problem is when replacing text in a string using the REPLACE
  509. function, such as in the commented examples below where the
  510. functions STATIC or TEXT are used to solve the problem.
  511.  
  512.   REPLACE(12345~4~6)
  513.   Returns a zero since all parameters are numbers when strings
  514.   are assumed.
  515.  
  516.   REPLACE(STATIC(12345)~4~6)
  517.   Returns 12345 since no string is specified for replacement.
  518.  
  519.   REPLACE(STATIC(12345)~STATIC(4)~6)
  520.   Returns 1235, simply eliminating the 4 since the 6 never
  521.   enters the picture as a string; instead the default empty
  522.   string is assumed.
  523.  
  524.   REPLACE(STATIC(12345)~STATIC(4)~STATIC(6))
  525.   This finally produces the correct result 12365.
  526.  
  527. The difference between STATIC and TEXT is that TEXT may contain
  528. calculations within the parenteses, whereas STATIC assumes
  529. what the name implies, that no modifications are to be done.
  530. STATIC always assumes that the result is a character string.
  531.  
  532.  
  533. Accessing other than the master environment
  534. -------------------------------------------
  535.  
  536. Any environment may be accessed by defining ENVLEVEL=■n■ in the
  537. master environment, where ■n■ is an integer specifying the loaded
  538. order of the desired program.  The master environment may always
  539. be accessed by ENV MASTER ■EnvCommand■.
  540.  
  541.     ENV MASTER SET ENVLEVEL=3     (use the third environment)
  542.     ENV MASTER ERASE ENVLEVEL     (go back to the master env.)
  543.  
  544. By issuing the ENV STATUS command the name of owner of the
  545. current environment will be displayed.
  546.  
  547.  
  548. Changing default modes of operation
  549. -----------------------------------
  550. As already discussed in the section above, ENV uses special
  551. environment variables for its own purposes in addition to the
  552. ENVLEVEL variable. "ME" indicates that the variable must be
  553. defined in the master environment to take effect.
  554.  
  555.       ENVPROTECT   If defined, contains a list of environment
  556.                    variables protected from erasure with
  557.                    each variable name separated by a comma.
  558.                    In no instance is it allowed to erase the
  559.                    COMSPEC variable. Wild-cards allowed. (ME)
  560.       ENVDECIMALS  Sets the maximum number of decimals for
  561.                    numerical results; the default is 5. (ME)
  562.       ENVTRIM      If set to False or 0 this will suppress the
  563.                    automatic removal of leading and trailing
  564.                    spaces in command lines. (ME)
  565.       ENVQUIET     If set to True or 1 this will suppress the
  566.                    display of error messages. (ME)
  567.       ENVPARSE     This may be defined to change the default
  568.                    parsing/separator character in ENV (~)
  569.                    functions to any other character
  570.                    desired. (ME)
  571.       ENVARRAY     Define this to change the default list
  572.                    element separator from a comma to any other
  573.                    character when accessing items within an
  574.                    environment variable. (ME)
  575.  
  576.       ENVERROR     If defined in the active environment then
  577.                    ENV will report all errors and test results
  578.                    in the ENVERROR variable in addition to
  579.                    setting the DOS ERRORLEVEL when applicable
  580.  
  581. It is important to remember that it is only the value of these
  582. variables in the MASTER environment that count, and that the
  583. value of these are retrieved at the beginning of ENV.  This
  584. means that the mode of operation cannot be changed in the
  585. middle of an ENV batch file. The only exeption to this rule
  586. is the ENVERROR variable, which is always read and set in the
  587. currently active environment (as set by ENVLEVEL).
  588.  
  589.                            Appendix
  590.               The INs and OUTs of the SET command
  591.  
  592. SET is an internal DOS command which adds, changes or deletes
  593. elements in the command processor's environment.  Being an
  594. internal command, you will not see a SET.COM or SET.EXE file in
  595. any directory listing.  The command processor is the program that
  596. gives you the DOS prompt (i.e. A> or C>) where you can issue DOS
  597. commands and start programs.  Normally the command processor is a
  598. file with the name COMMAND.COM.
  599.  
  600. The command processor (and all programs) have reserved a portion
  601. of memory to store parameters that are necessary for the
  602. execution of the program, or simply useful.  This area of memory
  603. is called the "environment".  The command processor's environment
  604. is called the "master environment" because it is the first
  605. created and one that is always there as long as your computer is
  606. turned on. 
  607.  
  608. The master environment always contains two elements, namely
  609. COMSPEC and PATH.  In the simplest setup possible for your
  610. computer these two elements have the values:
  611.  
  612.      PATH=
  613.      COMSPEC=A:\COMMAND.COM
  614.  
  615. You may see the content of your master environment by typing SET
  616. from the DOS prompt.
  617.  
  618. COMSPEC identifies where a program may find the command processor
  619. and what it is called.  In some installations the command
  620. processor may have the name 4DOS.COM.  PATH identifies where DOS
  621. should look for programs when the program is not located in the
  622. present directory.  The peculiar thing about PATH is that it may
  623. contain nothing (nothing to the right of the =-sign).  Any other
  624. relationship is removed if it doesn't contain anything.
  625.  
  626. Another standard element in the master environment is PROMPT.  By
  627. adding PROMPT to your environment you can change the way the
  628. command processor prompts you for a command.  If you type:
  629.  
  630.      SET PROMPT=$P$G 
  631.  
  632. the prompt would, for example, look like "A:\DATA>".  Other
  633. values for PROMPT are described in your DOS manual.  By typing
  634. SET, your environment would now contain:
  635.  
  636.      PATH= 
  637.      COMSPEC=A:\COMMAND.COM 
  638.      PROMPT=$P$G 
  639.  
  640. Please note the capitalization rules here.  The identifier or
  641. name of the variable (e.g. PATH or COMSPEC) are always
  642. capitalized regardless how you typed them.  The value on the
  643. right hand side, however, will be copied as you type it.  The
  644. general format for using the SET command is then: 
  645.  
  646.      SET                      List all entries in the
  647.                               environment.
  648.  
  649.      SET <Name>=<Value>       Define a new or replace an
  650.                               existing relationship.
  651.  
  652.      SET <Name>=              Remove an entry in the
  653.                               environment.
  654.  
  655.  
  656. Generally, these possible usage options are summarized by:
  657.  
  658.      SET [<Name>=[<Value>]]
  659.  
  660.  
  661. where the square brackets indicate a user option.  <Value> may be
  662. any combination of valid letters and characters, but can also
  663. contain environment variables!  Now, how can you as a user make
  664. use of environment variables?  Some programs require that you
  665. define certain environment variables, but because of DOS's rather
  666. rudimentary batch command language and the limited capabilities
  667. of the SET command the usefulness is relatively limited.
  668.  
  669. By enclosing the variable name between %-signs in a batch file
  670. the value of that variable will be substituted.  Many variables
  671. may be substituted on the same line.  For example, consider the
  672. following segment of a batch file: 
  673.  
  674.      SET OLDPATH=%PATH%
  675.      SET PATH=C:\
  676.      ECHO Starting a secondary command processor
  677.      ECHO I'm using %COMSPEC% with the path %PATH%
  678.      %COMSPEC% /E:512
  679.      SET PATH=%OLDPATH%
  680.      SET OLDPATH=
  681.  
  682.  
  683. The default size of the environment is between 128 and 180 bytes,
  684. depending on the DOS version.  You may specify a larger
  685. environment using the SHELL command in the CONFIG.SYS setup file
  686. (see your DOS manual).  The maximum size of the environment is
  687. 32 kilobytes in DOS 3.2 and higher; enough for most purposes.
  688.  
  689. But every time you start a program, DOS will create a new (child)
  690. environment for that program, leaving the command processor's
  691. environment in the dust.  All unused space will be eliminated in
  692. the child environment.  That means that the program essentially
  693. receives a "dead-end" environment.  In a multi-tasking world,
  694. such as under Microsoft Windows or QuarterDeck's DesqView,
  695. programs cannot communicate through their respective environments.
  696. Microsoft Windows even uses two environments at the same time,
  697. neither of any use for the normal user since they have been
  698. truncated and are not easily accessible by other programs or the
  699. SET command!
  700.  
  701. ... until the appearance of ENV!
  702.  
  703.