home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / database / indent.zip / INDENT.DOC < prev    next >
Text File  |  1993-05-11  |  54KB  |  1,508 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.                                        Indent!
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                                      Source Code
  26.                                      Indentation
  27.                                       for xBase
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.                                     User's Guide
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.                                                           Copyright 1993
  50.                                                              MH Software
  51.                                                           (303) 438-9585
  52.                                                   1006 W 104th Ave. #200
  53.                                                     Northglenn, CO 80234
  54.  
  55.  
  56.  
  57.  
  58.  
  59.                                   Table Of Contents
  60.  
  61.             License Agreement ........................................3
  62.             Overview .................................................5
  63.             DOS Indent! Installation .................................5
  64.             Windows wIndent! Installation ............................6
  65.             How To Use Indent! (Quick Start) .........................6
  66.             How To Use Indent! (Detailed Instruction) ................6
  67.                  /A, /B  Spaces before and after key tokens. .........8
  68.                  /C Additional Indentation for Do Case/Case
  69.                  structures ..........................................8
  70.                  /D Delete Extraneous Spaces And Tabs From the
  71.                  Source File .........................................9
  72.                  /F Additional Indentation for Functions and
  73.                  Procedures ..........................................9
  74.                  /G Add Action Diagram Symbols........................9
  75.                  /I[T]n Continuation Line Indentation Control ........10
  76.                  /K[L |  U | P]  Keyword Case Change .................11
  77.                  /M[n1:n2:n3:n4] Align Comments ......................12
  78.                  /O  Output Messages to File .........................13
  79.                  /R  Remove Snap!/FoxDoc comment headers. ............13
  80.                  /Sn   Specify Indentation Characters ................13
  81.                  /U  Keyword Compression .............................14
  82.                  /V[ L | U]  Token Case Changes ......................15
  83.                  /X  Keyword Expansion ...............................15
  84.                  @File List Processing ...............................15
  85.                  #[R | I | ? ] Remove/Ignore/Set Directive Comment
  86.                  Character ...........................................16
  87.                  *#Directives ........................................16
  88.                       *#LIST FILE <FileName> .........................16
  89.                       *#LIST STRUCTURE <database name> ...............17
  90.             Parameter Passing ........................................17
  91.             Indent and SQL ...........................................19
  92.                  Unions ..............................................19
  93.                  Sub-Queries .........................................19
  94.             Indent and FoxPro ........................................20
  95.                  Project, Screen, Menu, and Program Indentation ......20
  96.                  Beautify Replacement ................................20
  97.                  Running wIndent! From FoxProW .......................21
  98.             Common Questions and Answers .............................22
  99.             Technical Support ........................................22
  100.             Enhancement Requests .....................................23
  101.             Warnings and Messages: ...................................24
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.                                                                        2
  115.  
  116.  
  117.  
  118.  
  119.  
  120.             License Agreement
  121.  
  122.             Grant of License
  123.  
  124.                  This license permits you to use the software (Indent!).
  125.             Ownership remains with MH Software.
  126.  
  127.                  You may install Indent! on one computer if you bought
  128.             the single-user version, or one file server if you purchased
  129.             the network license.  The network license software may be
  130.             installed only on one server.  The single user software must
  131.             fall under the same constraints as a book.  You may not use
  132.             it in two locations at the same time.  The only exception to
  133.             this shall be home use.  License is hereby granted for
  134.             licensed users to install this software on a computer in
  135.             their normal work-place and one at their home.  Home use is
  136.             construed as use for personal pleasure, or pursuing
  137.             regular, work-related tasks.  If you wish to use this
  138.             software for independent software development at your home,
  139.             then you must purchase a separate license.  This home-use
  140.             license will be automatically revoked upon your separation
  141.             from the purchasing company.
  142.  
  143.                  You may not reverse engineer, decompile, or disassemble
  144.             the software.  You may not copy (except for backup
  145.             purposes), sell or otherwise distribute this software.
  146.  
  147.             Copyright
  148.  
  149.                  The software is owned by MH Software and is protected
  150.             by United States copyright laws and international treaty
  151.             provisions.
  152.  
  153.  
  154.  
  155.             Shareware
  156.  
  157.                  Indent! is shareware.  This means that you may test
  158.             this software to determine if it fits your needs.  If you
  159.             find it is useful to you, you must register this software by
  160.             filling out the enclosed registration form and returning it
  161.             with your payment.  If you find this software is not useful
  162.             to you, you must remove this software from all computers you
  163.             installed it on.  If you find this software is marginally
  164.             useful, but not worth the requested registration fee, please
  165.             contact technical support and let us try to make the product
  166.             work for you.
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.                                                                        3
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.             Limits of Liability
  183.  
  184.                  The Author and Publisher of this program have used
  185.             their best efforts in preparing this software, and the
  186.             accompanying documentation.  The Author and Publisher make
  187.             no warranty of any kind, expressed or implied, with regard
  188.             to the programs or documentation contained in this product.
  189.             The Author and Publisher shall not be liable in any event
  190.             for incidental or consequential damages (including loss of
  191.             business profits, business interruption, loss of business
  192.             information, or any other loss) in connection with, or
  193.             arising out of the use of this program.  Should a dispute
  194.             arise, this agreement shall be governed by the laws and
  195.             statutes of the state of Colorado, USA.
  196.  
  197.  
  198.             Defective Media
  199.  
  200.                  If within ninety (90) days of receipt of this software,
  201.             the distribution media is found to be defective, you may
  202.             receive replacement media for no charge.  After 90 days
  203.             there will be a nominal shipping and handling  fee.
  204.  
  205.             Customer Remedies
  206.  
  207.                  MH Software's entire liability and your exclusive
  208.             remedy shall be, at MH Software's option, either (a) return
  209.             of the price paid for the software, or (b) repair or
  210.             replacement of defective media.
  211.  
  212.             Trademarks
  213.  
  214.             FoxPro, MSDOS, and Windows are registered trademarks of
  215.             Microsoft Corporation.  dBase, dBase III and dBase IV are
  216.             registered trademarks of Borland International Inc.  Clipper
  217.             and CA-Clipper are registered trademarks of Computer
  218.             Associates International, Inc.
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.                                                                        4
  237.  
  238.  
  239.  
  240.  
  241.  
  242.                                  Indent User's Guide
  243.  
  244.  
  245.             Overview
  246.  
  247.             Indent! is an easy to use, yet powerful source code
  248.             indentation program for FoxPro, dBase, and Clipper.  It
  249.             takes a standard xBase source code file, and formats it to
  250.             meet your requirements.  Indent! has many advanced
  251.             formatting features that allow you to use it to format
  252.             source code to match your individual style.  Indent! is
  253.             perfect for using on inherited code, or when modifying
  254.             source code.  It can also be used to end style and
  255.             formatting arguments in multi-programmer shops.  The
  256.             following pages give an explanation of Indent!, and its
  257.             options.  It is our hope that you enjoy using this program,
  258.             and if you have any suggestions for improving it, that you
  259.             pass these suggestions along to us.
  260.  
  261.  
  262.  
  263.             When you run Indent!, it takes the source code file you have
  264.             specified, and does the following things:
  265.  
  266.                  1.  If there is a file with the same name, but an
  267.             extension of .BAK, that file is deleted.
  268.  
  269.                  2.  The original file is renamed to <ProgramName>.BAK.
  270.  
  271.                  3.  The new .BAK file is now opened, and the program is
  272.                  read in,  formatted, and written out to <ProgramName>.
  273.  
  274.                  4.  Once the formatting is complete, the date-time
  275.                  stamp from the original file is set on the newly
  276.                  formatted file.  In this way, you can re-format your
  277.                  source code, without having to do a complete make or
  278.                  re-compile.
  279.  
  280.                  5.  Finally, Indent! will display a message telling you
  281.                  how many lines of source code were indented.
  282.  
  283.  
  284.             DOS Indent! Installation
  285.  
  286.             To install Indent!, please use the following checklist:
  287.  
  288.             1.  Copy Indent! and it's associated files into the desired
  289.             directory.  Indent! may be installed in any directory you
  290.             wish.   If you will always be running this program from an
  291.             Integrated Development Environment (IDE) such as FoxPro or
  292.             dBase, you can copy the Indent! files into your IDE
  293.             directory.  Then, when you are in the IDE, you can use the
  294.             RUN or SHELL command to execute Indent.
  295.  
  296.  
  297.                                                                        5
  298.  
  299.  
  300.  
  301.  
  302.  
  303.             2.  If you have a registered version of Indent!, run the
  304.             REGISTER program.  Enter the file name to register (Indent),
  305.             your serial number, and activation key.  Once this
  306.             information is entered, you will be prompted to enter the
  307.             name of the owner of the software.
  308.  
  309.             3.  Add the directory to your DOS path if necessary.  To use
  310.             Indent!, this directory must be in your DOS path.  Refer to
  311.             the documentation accompanying your version of MS/DOS for
  312.             specific information on DOS paths.
  313.  
  314.  
  315.             Windows wIndent! Installation
  316.  
  317.              Indent! comes with a Windows .EXE program called WIndent.
  318.             The Windows version of wIndent is called by INDFILE.APP, and
  319.             FoxProW to indent files from FoxPro for Windows.  To install
  320.             wIndent, please use the following checklist.
  321.  
  322.             1.  To install wIndent!, copy the wIndent.EXE, wIndent.ICO
  323.             and wIndent.WRD files into your desired directory (FoxProW
  324.             directory is recommended).
  325.  
  326.             2.  From Program Manager choose File, New, Program Item and
  327.             select OK.  Enter a description of wIndent.  Next select
  328.             BROWSE to locate the wIndent! executable file.  Next choose
  329.             the button labeled Change Icon.  Select the BROWSE button
  330.             and use the Get File dialog to locate wIndent.ICO.  Now
  331.             select OK, OK, and OK.
  332.  
  333.             3.  If you have a registered version of wIndent, run the
  334.             REGISTER program.  Enter the file name to register
  335.             (wIndent), your serial number, and activation key.  Once
  336.             this information is entered, you will be prompted to enter
  337.             the name of the owner of the software.
  338.  
  339.             How To Use Indent! (Quick Start)
  340.  
  341.             To use Indent!,  from the DOS prompt type INDENT
  342.             <ProgramName>.  ProgramName can be any DOS file name, and
  343.             can include the wild card characters * and ?.  If the file
  344.             extension is not specified, .PRG is assumed.
  345.  
  346.             To see the options that Indent! has, type INDENT, and press
  347.             enter.  An abbreviated command list will be displayed.  If
  348.             you pass invalid parameters to Indent!, the abbreviated
  349.             command list will be displayed.
  350.  
  351.  
  352.             How To Use Indent! (Detailed Instruction)
  353.  
  354.             Indent! has a wealth of options that allow you to format
  355.             source code in almost any way that you desire.  This section
  356.             gives a detailed explanation of the various formatting
  357.  
  358.                                                                        6
  359.  
  360.  
  361.  
  362.  
  363.  
  364.             options Indent! has.  The general syntax is:
  365.  
  366.             INDENT <FileSpec>[.<EXT>] | @<FileList> /<Option1><Option...>
  367.  
  368.             FileSpec is any valid DOS file specification.  If EXT is
  369.             omitted,  a default extension of .PRG is assumed.  EXT may
  370.             be any valid extension EXCEPT .BAK, and may not contain
  371.             wild-card characters.  <FileList> is an optional list of
  372.             files to be processed by Indent!  The list must be a plain
  373.             ASCII text file.  The following examples demonstrate
  374.             different methods of specifying files:
  375.  
  376.             Examples:
  377.  
  378.                  Indent all program files:
  379.  
  380.                       INDENT *
  381.  
  382.                  Indent all .SPR files:
  383.  
  384.                       INDENT *.SPR
  385.  
  386.                  Indent all programs starting with the letter A:
  387.  
  388.  
  389.                       INDENT A*
  390.  
  391.             For more information on MS/DOS wild-cards, and file
  392.             specifications, please refer to the documentation
  393.             accompanying your particular DOS version.
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.                                                                        7
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.             /A, /B  Spaces before and after key tokens.
  427.  
  428.             These two options allow you to specify character tokens that
  429.             must be followed by a space (/A), or preceded by a space
  430.             (/B).  Some people prefer that all mathematical, and logical
  431.             operators be preceded by a space, and followed by a space
  432.             for ease of reading (i.e. C = A + B rather than C=A+B).
  433.             Using these options, you could specify what tokens should
  434.             have this kind of formatting.  Tokens may NOT be alpha or
  435.             numeric characters.  Characters to receive extra spaces
  436.             should be contained within ' marks (refer to example).
  437.  
  438.  
  439.                  Example:   Indent MyPrg /A'(+-~{}!*'B')+-~{}*!'
  440.  
  441.                  NOTE: Because of the constraints of the DOS operating system, a ~ must
  442.                  be used for an = sign, { for <, and } for > when passing parameters for this
  443.                  section.  If you were to try using a > or <, DOS would think you were
  444.                  trying to redirect input or output from the program.  The restriction
  445.                  on = signs applies when you use DOS environment variables to
  446.                  pass options to Indent.
  447.  
  448.                  Warning:  Because some symbols are used in more than
  449.                  one context, this option may cause problems if
  450.                  improperly used.  An example of this would be the
  451.                  asterisk (*).  It can be used in the context of a DOS
  452.                  file command, a Private command (i.e. Private all Like
  453.                  L*) or as a multiplication operator.  Because of this
  454.                  kind of problem you should use care when selecting
  455.                  tokens for /A and /B
  456.  
  457.             /C   Additional Indentation for Do Case/Case structures
  458.  
  459.             This option provides extra indentation for DO CASE/CASE
  460.             structures.  The default indentation for a DO CASE/CASE
  461.             structure would be:
  462.  
  463.                  DO CASE
  464.                  CASE A
  465.                  CASE B
  466.                  CASE C
  467.                  OTHERWISE
  468.                  ENDCASE
  469.  
  470.             specifying a /C parameter would cause the above code to be
  471.             indented as:
  472.  
  473.  
  474.                                                                        8
  475.  
  476.  
  477.  
  478.  
  479.  
  480.                  DO CASE
  481.                      CASE A
  482.                      CASE B
  483.                      CASE C
  484.                      OTHERWISE
  485.                  ENDCASE
  486.  
  487.  
  488.             /D   Delete Extraneous Spaces And Tabs From the Source File
  489.  
  490.             Specifying /D causes Indent! to remove extra spaces and tabs
  491.             from your source file.  For example, the line
  492.  
  493.                  A = B + C
  494.  
  495.             would  become:
  496.  
  497.                  A=B+C
  498.  
  499.             This is NOT an inverse of /A or /B in that this option will
  500.             remove ALL (except those embedded in comments) extra spaces
  501.             or TABS from the program file.  Any tabs embedded in the
  502.             file are converted to 1 space.
  503.  
  504.  
  505.  
  506.             /F   Additional Indentation for Functions and Procedures
  507.  
  508.             Specifying /F causes procedures and functions to have
  509.             additional indentation.  For example:
  510.  
  511.             Function FOO
  512.             Parameters A, B, C
  513.             ?a,b,c
  514.             Return A*B*C
  515.  
  516.             would be indented as:
  517.  
  518.             Function Foo
  519.                 Parameters A, B, C
  520.                 ?a,b,c
  521.             Return A*B*C
  522.  
  523.                  Note:     This extra level of indentation will apply
  524.                  until the first non-nested return statement is found.
  525.                  For example, if you have a procedure, with no return
  526.                  statement, all lines up until the next function, or
  527.                  procedure will have additional indentation.  This
  528.                  includes comments.  It is therefore recommended, that
  529.                  each procedure end with an explicit return.
  530.  
  531.             /G   Add Action Diagram Symbols
  532.  
  533.             Specifying /G has Indent! format your source code using
  534.  
  535.                                                                        9
  536.  
  537.  
  538.  
  539.  
  540.  
  541.             action diagram symbols.  This kind of graphical outlining of
  542.             source code can be extremely handy in modifying programs, or
  543.             in examining programs for logic flaws.  Calling Indent!
  544.             without the /G command will automatically remove the
  545.             structure graphics.  SQL SELECT commands will not have
  546.             structural graphic characters.  They will be treated as any
  547.             other multi-line command.
  548.  
  549.  
  550.             /I[T]n Continuation Line Indentation Control
  551.  
  552.             This option allows you to control the amount of extra
  553.             indentation that is applied to continuation lines.
  554.             Continuation lines are those lines where the preceding line
  555.             ended in a semicolon.  By default, continuation lines will
  556.             receive an extra three spaces of indentation.  For example,
  557.             the following command:
  558.  
  559.                  select userdata
  560.                  browse fields a,b,c;
  561.                  for a>10;
  562.                  window MyWin;
  563.                  title "User Data";
  564.                  NoModify
  565.                  close databases
  566.  
  567.             will automatically be indented as:
  568.  
  569.                  select userdata
  570.                  browse fields a,b,c,;
  571.                     for a>10;
  572.                     window MyWin;
  573.                     title "User Data";
  574.                     NoModify
  575.                  close databases
  576.  
  577.             To specify using 2 spaces, you would issue the command:
  578.  
  579.                  INDENT MyProg /I2
  580.  
  581.             To specify indentation using a tab character, issue the
  582.             command:
  583.  
  584.  
  585.                  INDENT MyProg /IT1
  586.  
  587.             If you desire to have no additional indentation for
  588.             continuation lines, use:
  589.  
  590.                  INDENT MyProg /I0
  591.  
  592.                  Hint:  If you have a case where you want several
  593.                  function parameters to be aligned, or logical operators
  594.                  aligned, you can format your code like this:
  595.  
  596.                                                                       10
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.                  =MsgWin(;
  604.                       "Text Line 1"+;
  605.                       "Text Line 2"+;
  606.                       "Text Line 3")
  607.  
  608.                  Or,
  609.  
  610.                       IF ;
  611.                            A>B .and. ;
  612.                            B>C .and. ;
  613.                            C<D
  614.  
  615.  
  616.             /K[L |  U | P]  Keyword Case Change
  617.  
  618.             When you specify this option, the list of key words
  619.             contained in the file INDENT.WRD is read into memory.  As
  620.             each line of your program file is processed, a matching
  621.             process is performed.  Any words from the program file that
  622.             are found in the keyword file can be set to UPPER case,
  623.             LOWER case, or PROPER case.  Proper case means that the key
  624.             word will have its case adjusted to be the same as the
  625.             example in the file INDENT.WRD.  The file INDENT.WRD must be
  626.             located in the same directory as INDENT.EXE.  For
  627.             instructions on how to modify the INDENT.WRD to match your
  628.             specific xBase compiler, refer to the instructions contained
  629.             in the INDENT.WRD file.
  630.  
  631.             Examples:
  632.  
  633.             To set all keywords in a file to lower case:
  634.  
  635.                  INDENT MyProg /KL
  636.  
  637.             To set all keywords in a file to upper case:
  638.  
  639.                  INDENT MyProg /KU
  640.  
  641.             To set all keywords in a file to the same case as the words
  642.             contained in the file INDENT.WRD:
  643.  
  644.                  INDENT MyProg /KP
  645.  
  646.                  Note:     If this option is selected, the program will
  647.                  display a warning message for every instance where a
  648.                  key word from the file is used as an LValue in the
  649.                  program.  An LValue is a variable or identifier that is
  650.                  on the left side of an assignment operator (= sign).
  651.                  For example, if you use the word BROWSE as a variable,
  652.                  then you will be warned that the keyword BROWSE is used
  653.                  as a variable, and the line number will be displayed.
  654.  
  655.  
  656.  
  657.                                                                       11
  658.  
  659.  
  660.  
  661.  
  662.  
  663.             /M[n1:n2:n3:n4] Align Comments
  664.  
  665.             This option allows you to specify that comments be aligned.
  666.             This only affects comments that are introduced with &&
  667.             characters.  Comments beginning with * are not affected by
  668.             this option.  For example, the program:
  669.  
  670.                  a=b*c && assign a the product of b and c
  671.                  && for use by another section
  672.                  c=a+b
  673.  
  674.             when indented with /M specified would look like this:
  675.  
  676.                  a=b*c     && assign a the product of b and c
  677.                            && for use by another section
  678.                  c=a+b
  679.  
  680.             There are four parameters that may be used with this option.
  681.             The first, n1, tells the Indent! Program how many characters
  682.             a TAB is displayed with by your editor.  This allows Indent!
  683.             to have correct alignment even on lines that have embedded
  684.             tabs.  The default value if this parameter is not specified
  685.             is 1 tab = 4 spaces.
  686.  
  687.             The second parameter is the starting column to have comments
  688.             align on.  The default starting column for alignment is 33,
  689.             but you may specify any column you desire.
  690.  
  691.             If the comment cannot be aligned at the default starting
  692.             position, it is aligned to default+n3, default+2*n3, etc.
  693.             The default value for n3 is 8.  For example, if you specify
  694.             a starting column of 35, but the code extends past that
  695.             point, then the comment will be aligned on column 43 if
  696.             possible.
  697.  
  698.             If there is a gap of more than n4 (default 16) between the
  699.             natural placement of a comment, and the previous comment,
  700.             then the alignment column will reset to n2.
  701.  
  702.             Examples
  703.  
  704.                  Align comments, with a text editor that shows 3 spaces
  705.             per tab
  706.  
  707.                       Indent MyProg /M3
  708.  
  709.                  Align comments with a text editor that shows 4 spaces
  710.             per tab, starting on column 40, spacing increment value of
  711.             6, and a reset gap width of 20.
  712.  
  713.                       Indent MyProg /M4:40:6:20
  714.  
  715.                  Subsequent comments will align underneath each other,
  716.             until the difference in the default alignment is greater
  717.  
  718.                                                                       12
  719.  
  720.  
  721.  
  722.  
  723.  
  724.             than n4, or a new procedure or function is encountered.
  725.  
  726.                  Hint:     You may wish to use asterisks to introduce
  727.                  comments that will be left justified, while reserving
  728.                  && to introduce comments that are either on the same
  729.                  line as a piece of code, or are a continuation of a
  730.                  comment for such a line.
  731.  
  732.  
  733.             /O  Output Messages to File
  734.  
  735.             /O forces output messages to be sent to the specified file.
  736.             This can be useful if you wish to capture all warnings for
  737.             later examination.  The output file can also be the DOS NUL
  738.             device, or a printer port (i.e. LPT1, PRN, etc.).
  739.  
  740.             Examples:
  741.  
  742.                  INDENT /O=INDENT.OUT  *.PRG /RFC
  743.  
  744.                  INDENT /O=LPT1 *.PRG /RFC
  745.  
  746.                  Notes:  If you wish to capture any diagnostic messages
  747.                  concerning parameters, /O must be the first parameter
  748.                  listed.  The file specified in the parameter is
  749.                  overwritten each time.  If you wish to capture several
  750.                  sessions, you should save each file, or use the @File
  751.                  List option to process all files in one session.
  752.  
  753.  
  754.             /R  Remove Snap!/FoxDoc comment headers.
  755.  
  756.             The documentation programs Snap! and FoxDoc automatically
  757.             put procedure and function headers in source code files.
  758.             This option removes those automatically generated headers.
  759.             All comment lines that start with *! or *: will be removed
  760.             from the program.  Standard comment lines are retained.
  761.  
  762.                  Example:
  763.  
  764.                       INDENT MyProg /R
  765.  
  766.                  Note:  If you specify /R, and Snap!/FoxDoc comments are
  767.                  removed, then the time stamp on the file will be set to
  768.                  the current date/time.  This is done so that the file
  769.                  will be re-compiled on the next build.  If this were
  770.                  not done, source-level debuggers would not work
  771.                  properly.
  772.  
  773.  
  774.             /Sn   Specify Indentation Characters
  775.  
  776.             By default, Indent! uses a TAB as the indentation character.
  777.             You can tell Indent! to uses spaces, and specify the number
  778.  
  779.                                                                       13
  780.  
  781.  
  782.  
  783.  
  784.  
  785.             of spaces to use for indentation.
  786.  
  787.                  Examples:
  788.  
  789.                  This example sets the indentation string to 3 spaces.
  790.  
  791.                       INDENT MyProg /S3
  792.  
  793.                  The following example demonstrates using 0 spaces, or
  794.             de-indenting a program:
  795.  
  796.                       INDENT MyProg /S0
  797.  
  798.  
  799.             /U  Keyword Compression
  800.  
  801.             Indent! allows you to specify that all keywords be
  802.             compressed.  For example, PROCEDURE would become PROC,
  803.             FUNCTION would become FUNC, etc.  When abbreviating
  804.             keywords, Indent! tries to determine how many letters it may
  805.             reduce a word by and yet maintain a unique word as contained
  806.             in the key file.  For example, when abbreviating NOCLOSE,
  807.             Indent! will start with 4 letters, but increase the number
  808.             to 5 to avoid conflict with NOCLEAR.
  809.  
  810.                  Warning:  This is a powerful and dangerous feature.  I
  811.                  cannot stress strongly enough the care you should use
  812.                  with this option.  Please take the time out to read the
  813.                  case list below before using this option.  You may wish
  814.                  to use Indent! with /K before using this feature.  /K
  815.                  will let you know of any instances where keywords have
  816.                  been used as lValues in a statement.  This can be a
  817.                  good first step before using this part.  Always make a
  818.                  backup of affected files before using this option.  If
  819.                  you have not wisely chosen your keywords, this feature
  820.                  can render your program useless.  Below are some
  821.                  examples of how /U may corrupt a file.
  822.  
  823.                  You have two variables that are different abbreviations
  824.                  of the same keyword.  An example of this error would be
  825.                  prefer and preference.  Once abbreviated these two
  826.                  variables will become the same, and upon expansion they
  827.                  would remain the same.
  828.  
  829.                  Another area of consideration is field names.  The
  830.                  program Genscrn.PRG that comes with FoxPro references
  831.                  several database fields that have the same name as many
  832.                  keywords.  Running this program after using /U will
  833.                  cause it to fail because the field names referenced
  834.                  will no longer be correct.
  835.  
  836.                  If you have a procedure file named BUILD in your
  837.                  application and you use /U, All calls to BUILD will
  838.                  become calls to BUIL.  At run-time (or at compile time
  839.  
  840.                                                                       14
  841.  
  842.  
  843.  
  844.  
  845.  
  846.                  if you are lucky) you will have a file not found error.
  847.  
  848.  
  849.             /V[ L | U]  Token Case Changes
  850.  
  851.             /V allows you to specify that all tokens (variable names,
  852.             procedure and function names, file aliases) should be forced
  853.             to upper, or lower case.  This option can only be used in
  854.             conjunction with /K.
  855.  
  856.                  Examples:
  857.  
  858.                  Force all tokens to Upper Case:
  859.  
  860.  
  861.                       INDENT MyProg /KLVU
  862.  
  863.                  Force all tokens to Lower Case:
  864.  
  865.                       INDENT MyProg /KUVL
  866.  
  867.  
  868.             /X  Keyword Expansion
  869.  
  870.             Indent! allows you to specify that all abbreviated keywords
  871.             be expanded.  For example, PROC would become PROCEDURE, FUNC
  872.             would become FUNCTION, etc.  When expanding keywords Indent!
  873.             tries to determine how far it may expand a keyword before
  874.             possibly introducing undesirable meanings.  For example, the
  875.             abbreviation SELE would be expanded to SELECT, and no
  876.             further.  This is because there are two keywords that start
  877.             with SELE, SELECT and SELECTION.  The furthest that SELE can
  878.             be expanded without causing problems is SELECT.  This
  879.             situation will apply in any cases where there are (almost)
  880.             duplicate entries in the keyword table.  Some other examples
  881.             would be WINDOW and WINDOWS, SHADOW and SHADOWS.
  882.  
  883.                  Warning:  Please read the complete warning in the
  884.                  section on keyword compression (/U).  Keyword expansion
  885.                  and compression can cause severe problems, and should
  886.                  be done with great caution!
  887.  
  888.  
  889.             @File List Processing
  890.  
  891.             Indent! allows you to pass the name of a text file as a
  892.             parameter.  This text file is read, and the files listed in
  893.             it are processed.  List file names may contain any valid
  894.             file specification as discussed above.  An example list file
  895.             is given below.
  896.  
  897.             Examples:
  898.  
  899.                  INDENT @test.lst
  900.  
  901.                                                                       15
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.                  where  the file TEST.LST contains
  909.  
  910.                       mytest.prg
  911.                       \lib\*.prg
  912.                       *.spr
  913.                       *.mpr
  914.  
  915.  
  916.             #[R | I | ? ] Remove/Ignore/Set Directive Comment Character
  917.  
  918.             Each time Indent! sees an Indent! directive in a line of
  919.             code, by default it will expand that directive into comment
  920.             lines.  The /# parameter affects how these directives are
  921.             handled.  A summary of the commands is listed below:
  922.  
  923.                  /#I  Ignore directives.
  924.  
  925.                  /#R  Remove existing directive comment lines and ignore
  926.             directive lines.
  927.  
  928.                  /#?  Set the character used by Indent! for comment
  929.                  introduction.  By default directive comments will start
  930.                  with *|.  You may specify another character by passing
  931.                  as a paratemeter /#<Character>.  When removing
  932.                  directive comments, Indent! will remove all comments
  933.                  starting with an asterisk + the character you specify.
  934.                  The character specified may not be a digit, or a
  935.                  letter.
  936.  
  937.  
  938.             Hint:     You can remove all of the directive commands from
  939.             your program by running Indent! with the parameter /##.
  940.  
  941.  
  942.             *#Directives
  943.  
  944.             Indent! supports additional functionality through the use of
  945.             directives.  These directives are placed in your program as
  946.             comments, and are expanded when Indent! formats your code.
  947.             The information that Indent! generates are placed in your
  948.             program as comments.  Currently supported directives are
  949.             described in detail below.
  950.  
  951.                *#LIST FILE <FileName>
  952.  
  953.                     Using this directive you can specify that a file be
  954.                     read and placed into your code as comments.  An
  955.                     example of this would be a copyright listing.  You
  956.                     could place the copyright text in one file, and then
  957.                     in your code reference it.  This command does not
  958.                     support wild-cards.
  959.  
  960.  
  961.  
  962.                                                                       16
  963.  
  964.  
  965.  
  966.  
  967.  
  968.                *#LIST STRUCTURE <database name>
  969.  
  970.                     Using this directive you can have Indent! place the
  971.                     structure of your database files inside your program
  972.                     as comments.  The database name, type, last update,
  973.                     record size and count, and each field description
  974.                     along with descriptions of compound structural
  975.                     indexes (CDX or MDX) will automatically be inserted
  976.                     into your code.  Database names may include wild-
  977.                     card characters.  An example of the output is shown
  978.                     below:
  979.  
  980.                       Source code before:
  981.  
  982.                            *#List structure p*
  983.  
  984.                       Source code after Indent!
  985.  
  986.                     *#List structure p*
  987.                     *|************************************************************
  988.                     *|     Database Name : PHASE1.DBF
  989.                     *|     Database Type : xBase Standard
  990.                     *|     Last Updated  : 93/04/09
  991.                     *|     Record Size   : 251 Record Count : 4896
  992.                     *|     File Size     : 1228962
  993.                     *|
  994.                     *|     Field   Field Name       Type        Width  Decimals
  995.                     *|
  996.                     *|         1   LINE             Character    250      0
  997.                     *|
  998.                     *|**********************************************************
  999.  
  1000.                     Each time you run Indent!, it will automatically
  1001.                     remove the existing comment lines, and insert new
  1002.                     comment lines containing the specified database
  1003.                     structures.  For more information on Indent!
  1004.                     directives, refer to the section on /#.
  1005.  
  1006.                     Note:  Each time you run Indent! and macro comments
  1007.                     are removed or added, the date/time stamp of the
  1008.                     file will not be preserved.
  1009.  
  1010.             Parameter Passing
  1011.  
  1012.             Parameters may be combined together, or passed individually
  1013.             on the command line.  For example,
  1014.  
  1015.                  INDENT MyProg /R /F /C
  1016.  
  1017.             is equivalent to
  1018.  
  1019.                                                                       17
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.                  INDENT MyProg /RFC, or INDENT /RFC MyProg
  1027.  
  1028.             A dash (-) can be used rather than a forward slash (/) to
  1029.             introduce switches.
  1030.  
  1031.             If invalid command line parameters are passed, the program
  1032.             will display an abbreviated command list.
  1033.  
  1034.             You may also set the parameters for Indent! by using a DOS
  1035.             environment variable.  Rather than passing the parameters
  1036.             each time you use Indent!, you could set an environment
  1037.             variable in your AUTOEXEC.BAT file, and the parameters would
  1038.             be used each time you call Indent.
  1039.  
  1040.             Example:
  1041.  
  1042.                  from the DOS prompt, type:
  1043.  
  1044.                       SET INDENT=/RFCI2S2
  1045.  
  1046.             Now, each time you run Indent!, it will automatically have
  1047.             the parameters set to Remove Snap!/FoxDoc Headers, Provide
  1048.             extra indentation for Function, Procedures, and DoCase/Case
  1049.             Structures,  Continuation lines will receive two additional
  1050.             spaces for indentation, and 2 spaces will be used for
  1051.             standard indentation.  To indent a program with these
  1052.             options, just run Indent! with the file name.
  1053.  
  1054.  
  1055.                  NOTE:  If you are setting the Indent environment
  1056.                  variable from a batch file, and you are using the /A,
  1057.                  or /B options, and you wish to specify the % (modulus)
  1058.                  operator for either section, then when you set the DOS
  1059.                  Environment variable, you must use the following
  1060.                  syntax:
  1061.  
  1062.                  SET INDENT=/A'%%+-'
  1063.  
  1064.             Once set environment variables will always be active, and
  1065.             will override command line parameters.  If you are using
  1066.             wIndent!, then you must change the environment variable name
  1067.             to WINDENT.
  1068.  
  1069.             If you don't wish to use environment variables, you can
  1070.             create a batch file having the parameters you want to call
  1071.             Indent! with.  For example, the following batch file could
  1072.             be used to always call Indent! with FCS2 parameters:
  1073.  
  1074.  
  1075.                  INDENT %1 /FCS2 %2 %3 %4 %5
  1076.  
  1077.             You can create this batch file, and name it something
  1078.             besides Indent, ID, for example.  Then when you wish to call
  1079.  
  1080.                                                                       18
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.             Indent!, from the command line you could type ID <FileName>.
  1087.  
  1088.                  Hint:  In my work I use a batch file to format a file
  1089.                  with action diagram symbols (/G), send it to the
  1090.                  printer, and then immediately remove the graphics.
  1091.                  This makes it very easy to print program files for
  1092.                  review and modification.
  1093.  
  1094.  
  1095.             Indent and SQL
  1096.  
  1097.             Indent! will automatically handle Structured Query Language
  1098.             (SQL)  SELECT statements.  Because SQL, unlike xBase does
  1099.             not have defined structural command endings, there are some
  1100.             special caveats about formatting SQL code.  If you are using
  1101.             sub-queries or unions, you should read this section.
  1102.  
  1103.  
  1104.             Unions
  1105.  
  1106.                  A query with a union clause should be structured like
  1107.             the following example:
  1108.  
  1109.                  Select ...;
  1110.                       from ...;
  1111.                       into ...;
  1112.                       where ...;
  1113.                  union;
  1114.                  select ...;
  1115.                       from ...;
  1116.                       where...;
  1117.  
  1118.                  Not Like
  1119.  
  1120.                  Select ...;
  1121.                       from ...;
  1122.                       into ...;
  1123.                       where ...;
  1124.                  union select ...;
  1125.                       from ...;
  1126.                       where...;
  1127.  
  1128.  
  1129.             Sub-Queries
  1130.  
  1131.                  A query with a sub-query should be structured like the
  1132.             following example:
  1133.  
  1134.                  Select ...;
  1135.                       from ...;
  1136.                       into ...;
  1137.                       where <expr>=<expr> and;
  1138.                            <expr> not in (select <expr> from <table>);
  1139.                       order by ...;
  1140.  
  1141.                                                                       19
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.                       group by ...
  1148.  
  1149.                  Not Like
  1150.  
  1151.                  Select ...;
  1152.                       from ...;
  1153.                       into ...;
  1154.                       where <expr>=<expr> and;
  1155.                            <expr> not in (;
  1156.                            select <expr> from <table>);
  1157.                       order by...
  1158.                       group by...
  1159.  
  1160.                  The key point in sub-queries is that the SELECT
  1161.             statement for the sub-query not start a line, and that the
  1162.             sub-query be contained entirely on one line.
  1163.  
  1164.             Indent and FoxPro
  1165.  
  1166.  
  1167.             Project, Screen, Menu, and Program Indentation
  1168.  
  1169.  
  1170.             Indent! comes with two FoxPro .APP files.  The FoxPro 2.0
  1171.             file is named IDFILE.APP, and the FoxPro 2.5 version is
  1172.             called INDFILE.APP.  These files can be used to indent
  1173.             entire projects, screens (including all snippets), menus,
  1174.             and program files.  To execute these programs type DO
  1175.             <FileName> from the command window.  A file open dialog will
  1176.             appear and you can select the file to indent.  Once you have
  1177.             selected a file, an options menu will appear to allow you to
  1178.             set the controls that Indent! should use during processing.
  1179.             Selections, once made, will be saved in your FoxUser
  1180.             database for use the next time.  After you have made your
  1181.             formatting selections, the program will call Indent! to
  1182.             process your files.  It is recommended that you install
  1183.             these files in a directory on your hard-drive, and add that
  1184.             directory to your FoxPro path using the CONFIG.FP<W> file.
  1185.             For information on CONFIG.FP<W> refer to the FoxPro Help
  1186.             file.  Once this is done, you can execute the programs from
  1187.             any directory you may be working in.
  1188.  
  1189.  
  1190.  
  1191.             Beautify Replacement
  1192.  
  1193.             FoxPro 2.5 for Windows comes with a built in beautify
  1194.             feature.  You can replace Microsoft's beautify program by
  1195.             adding the following line to your CONFIG.FPW file.
  1196.  
  1197.                  _BEAUTIFY='INDFILE.APP'
  1198.  
  1199.             And copy the file INDFILE.APP into your FoxProW directory.
  1200.             Now when you select beautify from the main menu, INDFILE.APP
  1201.  
  1202.                                                                       20
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.             will be called allowing you to use Indent!'s formatting
  1209.             features.
  1210.  
  1211.  
  1212.             Running wIndent! From FoxProW
  1213.  
  1214.             If you have installed wIndent!, you can run it directly from
  1215.             the command window of FoxProW.  To do this type RUN /N
  1216.             wIndent <FileName> /<Options>.
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.                                                                       21
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.             Common Questions and Answers
  1272.  
  1273.             Q:  When I run the FoxPro .APP files, I get a series of BAD
  1274.             COMMAND OR FILENAME messages, and my snippets and programs
  1275.             are not indented.
  1276.  
  1277.             A:  You must ensure that INDENT.EXE and INDENT.WRD are in
  1278.             your DOS path when executing these programs.
  1279.  
  1280.             Q:  When I run Indent!, my file is totally mangled.
  1281.  
  1282.             A:  You must check to ensure that your file editor saves
  1283.             your code with line-feeds.  On the FoxPro editor, Select
  1284.             Edit/Preferences/Save Text With Line Feeds.  Then set this
  1285.             so that it is the default for all your files.
  1286.  
  1287.             Q:  Four letter abbreviations of keywords are not having
  1288.             their case changed.
  1289.  
  1290.             A:  The INDENT.WRD file that comes with the program does not
  1291.             have four letter word abbreviations.  The program will also
  1292.             not check to see that a word might be an abbreviation.  You
  1293.             have two choices:  (a)  Add the four letter abbreviation
  1294.             keywords to the INDENT.WRD file, or (b)  Use the /X option
  1295.             to expand keyword abbreviations.  Keep in mind that if you
  1296.             do add four letter abbreviations, /U and /X will be disabled
  1297.             for those keywords (refer to instructions on /U & /X).
  1298.  
  1299.             Q:  When I run Indent! with the /V option, my tokens
  1300.             (variable names, field names, function & procedure names)
  1301.             are not modified.
  1302.  
  1303.             A:  You can only use the /V option in conjunction with /K.
  1304.             Check also to see that Indent can locate the INDENT.WRD
  1305.             file.  It should be located in the same directory as
  1306.             INDENT.EXE.
  1307.  
  1308.             Q:  When I use *#List Structure macro command, sometimes it
  1309.             works, other times I get comments saying UNABLE TO OPEN
  1310.             DATABASE <NAME>.
  1311.  
  1312.             A:  Indent! tries to open specified databases in
  1313.             Shared/Read-Only mode.  If you or another person have the
  1314.             database open exclusively, then Indent! will not be able to
  1315.             open and read the file.
  1316.  
  1317.  
  1318.             Technical Support
  1319.  
  1320.             Every effort has been made to ensure this software is free
  1321.             of defects.  If you find something you think is a defect
  1322.             please contact us.  We will work with you to fix any bugs
  1323.  
  1324.                                                                       22
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.             you may encounter.  A bug is an instance where the program
  1331.             does not work according to the documentation.  If you find a
  1332.             bug in this program we will make every effort to fix the
  1333.             problem and provide you with an updated program.
  1334.  
  1335.             You may contact technical support by calling (303) 438-9585,
  1336.             via Compuserve mail ID 73237,1665, or via mail at:
  1337.  
  1338.                                      MH Software
  1339.                                1006 W 104th Ave. #200
  1340.                                 Northglenn, CO 80234
  1341.  
  1342.  
  1343.             Enhancement Requests
  1344.  
  1345.             We welcome your requests for enhancements.  MH Software is
  1346.             dedicated to providing the finest xBase enhancement tools
  1347.             available.  We need your input to let us know how we can
  1348.             improve our products.  Please provide your daytime telephone
  1349.             number in the event that we need to contact you for
  1350.             clarification.  Please forward all requests for enhancements
  1351.             to Compuserve Mail ID 73237,1665 or mail them to:
  1352.  
  1353.                                      MH Software
  1354.                                1006 W 104th Ave. #200
  1355.                                 Northglenn, CO 80234
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.                                                                       23
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.             Warnings and Messages:
  1394.  
  1395.             No files matching <FileSpec> found!
  1396.  
  1397.             Indent! was unable to find any files matching the file
  1398.             specification passed.  If you are running Indent! from an
  1399.             integrated development environment (IDE), and shelling out
  1400.             to run Indent!, ensure that the DOS default directory is the
  1401.             same as the default directory for the IDE.
  1402.  
  1403.             Error opening list file: ???
  1404.  
  1405.             You ran Indent! with the list file option (@) but Indent!
  1406.             was unable to find the list file to process.
  1407.  
  1408.             Invalid file extension .???.  Extension may not be .BAK or
  1409.             contain DOS wildcard characters ? or *.
  1410.  
  1411.             The file extension passed was either .BAK, or contained wild
  1412.             cards.  Indent! cannot properly handle extensions like this.
  1413.             If you have multiple extensions that you must indent, it is
  1414.             recommended that you create a batch file calling Indent! for
  1415.             each unique extension.
  1416.  
  1417.             Warning:  Text statement started on line nnn.  No matching
  1418.             ENDTEXT found!
  1419.  
  1420.             Indent! will not Indent! source contained between the key
  1421.             words TEXT and ENDTEXT.  If you do not have a corresponding
  1422.             ENDTEXT statement, this message will appear, and alert you.
  1423.             This message can also be caused by using the keyword TEXT as
  1424.             a variable identifier.  For a complete description of
  1425.             TEXT/ENDTEXT, please refer to your xBase language reference
  1426.             manual.
  1427.  
  1428.             Program Assertion Failure, ???.  Program halted!
  1429.             Error occurred on line nnn.
  1430.  
  1431.             If you get this error, DON'T PANIC.  Remember, your original
  1432.             source code program is available in the .BAK file.  Before
  1433.             performing any other steps when receiving this error, copy
  1434.             the .BAK file to your original file name.  When you receive
  1435.             this error, an internal error or memory allocation error has
  1436.             occurred.  If you are running this program from inside an
  1437.             Integrated Development Environment (IDE) ensure that Indent!
  1438.             has at least 384K of free memory to execute.  If you
  1439.             continue to get this error, please copy down the exact
  1440.             message, and contact technical support for problem
  1441.             resolution.
  1442.  
  1443.             Keyword ??? used as a variable on line nnn.
  1444.  
  1445.  
  1446.                                                                       24
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.             When the /K option is specified, the program checks
  1453.             automatically to see if any keyword found is used as an
  1454.             LValue.  An LValue is a variable identifier that is used on
  1455.             the left hand of an assignment operator (= sign).  If the
  1456.             keyword is being used as an LValue, the warning message is
  1457.             displayed.  It is recommended that you not use keywords as
  1458.             variable identifiers.  This can cause very strange and
  1459.             difficult to trace bugs.  Additionally, using keywords as
  1460.             variable identifiers can cause Indent! to become confused
  1461.             about how your program is structured, and provide incorrect
  1462.             indentation.
  1463.  
  1464.             Cannot open key word input file INDENT.WRD.
  1465.  
  1466.             The /K, /X, or /U options have been selected, but Indent! is
  1467.             unable to find the keyword file.  The INDENT.WRD file should
  1468.             be located in the same directory that INDENT.EXE is located.
  1469.             If you get this error, program execution will continue as
  1470.             normal, but the /K, /V, /X and /U parameters will be
  1471.             ignored.
  1472.  
  1473.             Error renaming file: ???.
  1474.  
  1475.             Something prevented Indent! from renaming the input file to
  1476.             a file with an extension of .BAK.  It is possible the
  1477.             original .BAK file has its attributes set to read-only, or
  1478.             that the original file has been set to be read-only.  If you
  1479.             are operating on a network, it is also possible that someone
  1480.             else on the network has that file open, and is editing it.
  1481.             If this is the case, you will not be able to indent the file
  1482.             until that person has completed their modifications, and
  1483.             closed the file.  Similarly if you have the file open in an
  1484.             edit window, of an Integrated Development Environment, then
  1485.             you will not be able to indent the file until you close it.
  1486.  
  1487.             Error opening file: ???.
  1488.  
  1489.             Something has prevented Indent! from opening the input file.
  1490.             Check to ensure that the FILES= line in your CONFIG.SYS file
  1491.             is set to an adequate level.  If you are using Novell
  1492.             NetWare, check to ensure the FILE HANDLES line in your
  1493.             SHELL.CFG file is set to an adequate number.
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.                                                                       25
  1508.