home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / LANGUAGES / p2c.lha / p2crc < prev    next >
Text File  |  1993-03-06  |  77KB  |  1,569 lines

  1. # Standard configuration file for "p2c" 1.13, the Pascal to C translator
  2. #  Copyright (C) 1989 David Gillespie.
  3. #  Author's address: daveg@csvax.caltech.edu; 256-80 Caltech/Pasadena CA 91125.
  4.  
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation (any version).
  8.  
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. # GNU General Public License for more details.
  13.  
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program; see the file COPYING.  If not, write to
  16. # the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18.  
  19. # Note that all options except "Naming Conventions" and certain library
  20. # functions may be left blank or omitted entirely; the defaults are intended
  21. # to encompass a wide variety of "reasonable" implementations of C.
  22. # Option names are case-insensitive.
  23.  
  24. # The single-valued options can all be overridden by a later line in
  25. # this file, or in your own "p2crc" or ".p2crc" file, or in comments
  26. # in the input file.  To override an explicit value with the original
  27. # default, use the word "def".
  28.  
  29. # Some options define printf-like format strings.  These support all the
  30. # usual formatting codes, with additional features for string formatting.
  31. # The following extra "flag" characters are defined for %s:
  32. #    _     Convert to lower case
  33. #    ^     Convert to upper case
  34. #    _^    Convert to lower except capitalize first char and after non-letters
  35. #    ~     Insert '_' between lower case and following upper case letters
  36. #    !     Remove '_' and other non-alphanumeric characters
  37. #    ?     Negates _ and ^ flags if name contains mixed case
  38. #    R     Remove file name suffix (e.g., "foo.pas" => "foo")
  39. #    /     Remove path name (prefix ending in /, \, ], or :)
  40. # Also, where a format includes several "%" arguments, they may
  41. # appear in either order in the string.  When two string args are
  42. # involved, "%s" will refer to one and "%S" to the other.  The
  43. # notation %H expands to the p2c home directory name, as in "%H/p2crc".
  44.  
  45. # Many options simply refine defaults controlled by the Language, 
  46. # AnsiC, and Target options.
  47.  
  48.  
  49.  
  50.  
  51. Debug                           # Level of debugging output
  52.  
  53. TokenTrace                      # Additional debugging output
  54.  
  55.  
  56. Include                # Additional p2crc files to be included
  57. Include                         # %s=program name
  58.  
  59. CopySource                      # 1=copy Pascal source code into output
  60.                                 # file, #ifdef'd out.
  61.  
  62.  
  63.  
  64.  
  65. # INPUT LANGUAGE
  66.  
  67. Language                        # Known languages:
  68.                                 #  HP (default; Pascal Workstation version)
  69.                                 #  MODCAL (HP's advanced Pascal)
  70.                                 #  HP-UX (almost same as HP)
  71.                                 #  TURBO (vers 5.0 for IBM PC)
  72.                 #  OREGON (Oregon Software Pascal-2 V2.1)
  73.                 #  VAX (VAX/VMS Pascal)
  74.                 #  MODULA (Modula-2)
  75.                                 #  UCSD (almost same as TURBO)
  76.                                 #  MPW (MPW Pascal 2.0 for the Mac)
  77.                 #  BERK (SUN Berkeley Pascal)
  78.  
  79. Modula2                # 1=Use modula-2 block structure (IF-END)
  80.                 # 0=Use Pascal block structure (IF-BEGIN-END)
  81.                 # default=1 if Language=MODULA, 0 for others
  82.  
  83. Integer16                       # 1=assume Pascal integers are 16 bits
  84.                                 # 0=assume Pascal integers are 32 bits
  85.                 # 2=use native C "int" for Pascal "integer"
  86.                                 # default=0 for HP/Oregon/VAX, 1 for Turbo/MPW
  87.  
  88. DoubleReals                     # 1=convert Pascal real to C double
  89.                                 # 0=convert Pascal real to C float
  90.                                 # default=1 for Turbo and HP-UX, 0 for HP
  91.  
  92. UnsignedChar                    # 1=Pascal char must be unsigned
  93.                                 # 0=Pascal char must be signed
  94.                                 # 2=doesn't matter; use native C "char"
  95.                                 # default=unsigned, but use native "char"
  96.  
  97. NeedSignedByte                  # 1=use "signed char" even if not available
  98.                                 # 0 or default=use "short" if not sure
  99.  
  100. PascalEnumSize                  # Size in BITS of a Pascal enum type.
  101.                                 # Default=according to Language.
  102.  
  103. NestedComments                  # 1=Pascal comments may be nested
  104.                                 # 2=comments don't nest, but { must match }
  105.                                 # 0=comments are unnested, unmatched
  106.                                 # default=0 in HP/MODCAL, 2 in Turbo
  107.  
  108. ExternWords       external    # Words analogous to "forward" for declaring
  109. ExternWords      extern    # procedures or functions external.
  110. ExternWords      fortran
  111.  
  112. CExternWords      nonpascal     # Words like ExternWords but for which any
  113. CExternWords            # leading and/or trailing "_" is removed
  114. CExternWords                    # from the Pascal function/variable names.
  115.  
  116. ImportAll                       # 1=read all of each imported file, in case
  117.                                 #   file contains several modules/units
  118.                                 # 0=read only interface text of first module
  119.                                 # default=1 in HP/MODCAL, 0 in others
  120.  
  121. ImplModules            # 1=MODULE starts a block like PROGRAM.
  122.                 # 0=MODULEs have export/implement sections.
  123.  
  124. PascalSignif                    # Number of significant characters in Pascal
  125.                                 # identifiers; default=unlimited
  126.  
  127. PascalCaseSens                  # 1=Pascal idents are case-sensitive,
  128.                 #   keywords and predef words are u.c. or l.c.
  129.                 # 2=case-sens, keywords and predef words u.c.
  130.                 # 3=case-sens, keywords and predef words l.c.
  131.                                 # 0=not case-sensitive
  132.                 # default=2 in Modula-2, otherwise 0
  133.  
  134. DollarIdents            # 1='$' is legal in Pascal and C identifiers
  135.                 # 2=convert '$' (and '%') in idents into C '_'
  136.                 # 0='$' is for HP directives/Turbo hex consts
  137.                 # default=1 for Oregon & VAX Pascal only
  138.  
  139. IgnoreNonAlpha            # 1=ignore _, $, % in Pascal identifiers
  140.                 # 0=retain them (subject to DollarIdents)
  141.                 # default=1 for UCSD, 0 otherwise
  142.  
  143. InputTabSize                    # Number of characters per tab stop in input
  144.                                 # file, for reading Pascal indentation.
  145.                                 # Default=8.
  146.  
  147.  
  148.  
  149. # TARGET LANGUAGE
  150.  
  151. AnsiC                           # 1=use all Ansi C features and definitions
  152.                                 # 2=use GNU C language extensions
  153.                                 # 0=use only original K&R features
  154.                                 # default=use "modern" Unix-like C
  155.  
  156. C++                             # 1=use C++ extensions,
  157.                                 # 0=use straight C,
  158.                                 # default=generate code that works on either
  159.  
  160. Void*                           # 1=use "void *" for anyptr's
  161.                                 # 0=use "char *" for anyptr's
  162.                                 # default=1 if AnsiC=1 or C++=1
  163.  
  164. HasSignedChar                   # 1="signed char" and "signed int" are legal
  165.                                 # 0="signed ..." is not supported
  166.                                 # default=1 if AnsiC=1
  167.  
  168. CastNull                        # 1=must type-cast NULL into specific types
  169.                                 # 0 or default=don't cast NULL
  170.  
  171. CopyStructs                     # 0=no implicit copying of structs allowed
  172.                                 # 1=can assign but not pass to/from funcs
  173.                                 # 2=struct assignment and parameters only
  174.                                 # 3=can assign, pass, and return structs
  175.                                 # default=3 unless AnsiC=0
  176.  
  177. VariableArrays                  # 1=allows variable-length arrays
  178.                                 # 0=array sizes must be constant
  179.                                 # default=1 for Gnu C, 0 otherwise
  180.  
  181. ReUseFieldNames                 # 1=can use same field name in many structs
  182.                                 # 0=field names must be globally unique
  183.                                 # default=1
  184.  
  185. UseVExtern                      # 1 or default=assume strict ANSI linkage
  186.                                 # 0=UNIX-like "common" variable linkage
  187.  
  188. UseAnyptrMacros                 # 1=use Anyptr, Signed, Static, etc. macros
  189.                                 # 0=use true C constructs as specified above
  190.                 # 2=use Static, Local, Char only
  191.                 # default=2 if AnsiC=1, else 1
  192.  
  193. UsePPMacros                     # 1=use PP and PV macros for prototypes
  194.                                 # 0=do not use these macros for prototypes
  195.                                 # 2=use them only for external/forward
  196.                 # default=0 if AnsiC=1, else 2
  197.  
  198.  
  199.  
  200. # TARGET MACHINE
  201.  
  202. Target                          # machine name, if any.  Specify this or answer
  203.                                 # the following questions to tailor the output
  204.                                 # program to a particular architecture.
  205.                                 # Machines known:
  206.                                 #   HPUX-300, SUN-68K, BSD-VAX, BSD, SYSV
  207.  
  208. SignedChar                      # 1=char is signed, 0=char is unsigned,
  209.                                 # default=don't know
  210.  
  211. SignedField                     # 1="int" bit-fields in structs are signed,
  212.                                 # 0="int" bit-fields are unsigned,
  213.                                 # default=don't know but probably signed
  214.                                 # 2=don't know, be paranoid
  215.  
  216. SignedShift                     # 1=">>" does arithmetic (signed) shift,
  217.                                 # 0=">>" does logical shift even for ints,
  218.                                 # default=don't know but probably signed
  219.                                 # 2=don't know, be paranoid
  220.  
  221. CharSize                        # size in bits of a char, default at least 8
  222. ShortSize                       # size in bits of a short, default at least 16
  223. IntSize                         # size in bits of an int, default at least 16
  224. LongSize                        # size in bits of a long, default at least 32
  225. PtrSize                         # size in bits of a pointer.  If not all
  226.                                 # pointers have same size, must leave blank.
  227. FloatSize                       # size in bits of a float
  228. DoubleSize                      # size in bits of a double
  229. EnumSize                        # size in bits of an enum
  230.  
  231. Size_T_Long                     # 1=Ansi "size_t" type is long
  232.                                 # 0=Ansi "size_t" type is int
  233.                                 # default=don't know, probably long
  234.  
  235.  
  236.  
  237. # BRACES AND PLACEMENT OF STATEMENTS
  238.  
  239. NullStmtLine                    # 1=put null statements on their own lines,
  240.                                 # 0 or default=write "while (x) ;"
  241.  
  242. BracesAlways                    # 1=use {braces} always,
  243.                                 # 0=never unless needed,
  244.                                 # default=use nice braces
  245.  
  246. BraceLine                       # 1=always put open braces on a new line,
  247.                                 # 0=never put open brace on new line if poss,
  248.                                 # default=0 for sub-stmts, 1 for func bodies
  249.  
  250. BraceCombine                    # 1=don't put newline after '{' if possible
  251.                                 # 0 or default=open brace always ends a line
  252.  
  253. BraceElse                       # 1=put { } on both "then" and "else" if would
  254.                                 #   put them on either, default=independent
  255.  
  256. BraceElseLine                   # 0 or default=write "} else {"
  257.                                 # 1=write "}\nelse {", 2=write "} else\n{"
  258.                                 # 3=write "}\nelse\n{"
  259.  
  260. ElseIf                          # 1=always write "else if" on same line
  261.                                 # 0=always write "else\nif"
  262.                                 # default=use "else if" only when input used it
  263.  
  264. NewLineFuncs                    # 1=write "static int\nfoo()" in function defs
  265.                                 # 0 or default=write "static int foo()"
  266.  
  267.  
  268.  
  269. # INDENTATION
  270.  
  271. PhysTabSize                     # Spacing of tab-character tabs; default=8.
  272.                                 # 0=do not use tabs in output file.
  273.  
  274. Indent                          # Basic indentation delta; default=+2.
  275.                                 # Indentation deltas specify an amount by which
  276.                                 # to change indentation; +n or -n specifies a
  277.                                 # relative adjustment, n specifies an absolute
  278.                                 # amount of indentation where 0=far left.
  279.  
  280. BlockIndent                     # Indentation delta for statements enclosed
  281.                                 # in braces; applied after Indent.  Default=+0.
  282.  
  283. SwitchIndent                    # Indentation delta for switch statement body;
  284.                                 # applied after Indent.  Default=+0.
  285.  
  286. CaseIndent                      # Indentation delta for case labels; applied
  287.                                 # after Indent and SwitchIndent.  Default=-2.
  288.  
  289. LabelIndent                     # Indentation delta for statement labels.
  290.                                 # Default is 0 (absolute).
  291.  
  292. OpenBraceIndent                 # Indentation delta for the open brace that
  293.                                 # begins a block.  Used only if the brace is
  294.                                 # on its own line.  Default=+0.
  295.  
  296. CloseBraceIndent                # Indentation delta for the close brace that
  297.                                 # ends a block.  Default=+0.
  298.  
  299. FuncArgIndent                   # Indentation delta for function arguments.
  300.                                 # Default is 0.
  301.  
  302. BodyIndent                      # Indentation delta for the body of a function;
  303.                                 # applied after Indent.  Default=+0.
  304.  
  305. FuncOpenIndent                  # Indentation delta for the open brace that
  306.                                 # begins a function body.  Default=+0.
  307.  
  308. FuncCloseIndent                 # Indentation delta for the close brace that
  309.                                 # ends a function body.  Default=+0.
  310.  
  311. StructIndent                    # Indentation delta for "struct" declarations;
  312.                                 # applied after Indent.  Default=+0.
  313.  
  314. StructInitIndent                # Indentation delta for struct and array
  315.                                 # initializers; applied after Indent.
  316.                                 # Default=+0.
  317.  
  318. ExtraInitIndent                 # Indentation delta for nested struct/array
  319.                                 # initializers; not combined with Indent.
  320.                                 # Default=+2.
  321.  
  322. ExtraIndent                     # Extra indentation for broken lines if
  323.                                 # indenting by nesting order is too much;
  324.                                 # default=+2:
  325.                                 #    long_function_name(arguments,
  326.                                 #        more_arguments);
  327.                                 #    1234
  328.  
  329. BumpIndent                      # Extra indentation for subexpressions which
  330.                                 # coincide with next statement's indentation
  331.                                 # in a visually confusing way:
  332.                                 #     if (foo &&
  333.                                 #         bar)     <- this gets BumpIndent
  334.                                 #         spam();
  335.                                 # May be pos, neg or zero.  Default=+1.
  336.  
  337. ConstIndent                     # Target column for #defines; default=24.
  338.                                 # A positive relative value (e.g., +3) means
  339.                                 # to use that many spaces always rather than
  340.                                 # tabbing to a fixed column.  A value of the
  341.                                 # form, e.g., *5 means to tab to the next
  342.                                 # multiple-of-5 column.
  343.  
  344. CommentIndent                   # Target column (as in ConstIndent) for
  345.                                 # comments trailing statements.  Another
  346.                                 # syntax is, e.g., "-80" which means to
  347.                                 # right-justify comments on an 80-column line.
  348.                                 # Default=+3.
  349.  
  350. BraceCommentIndent              # Indentation for trailing comments on
  351.                                 # braces.  Default=+2.
  352.  
  353. DeclCommentIndent               # Target column for comments trailing
  354.                                 # declarations.  Default=CommentIndent.
  355.  
  356. CommentOverIndent               # If line is too long to indent nicely by
  357.                                 # CommentIndent or BraceCommentIndent, start
  358.                                 # a new line and indent according to this
  359.                                 # indentation, either n, +n, or -n.  Zero means
  360.                                 # never to start a new line.  Default=+4.
  361.  
  362. MinSpacing                      # Minimum spacing allowed for things like
  363.                                 # absolute ConstIndent spacing.  Default=2,
  364.                                 # i.e., ConstIndent will always insert at
  365.                                 # least two spaces, even on long lines.
  366.  
  367. MinSpacingThresh                # If specified, threshhold below which
  368.                                 # MinSpacing is used.  (Default=MinSpacing.)
  369.                                 # For example, if MinSpacingThresh=1:
  370.                                 #    foo  /*comment*/   (CommentIndent=5 used)
  371.                                 #    spam /*comment*/   (CommentIndent=5 used)
  372.                                 #    thing  /*comment*/ (MinSpacing=2 used)
  373.  
  374.  
  375.  
  376. # LINE BREAKING
  377.  
  378. LineWidth                       # Target max output line width; default=78.
  379.  
  380. MaxLineWidth                    # Absolute max output line width; default=90.
  381.  
  382. OverWidePenalty                 # Penalty for line lengths > LineWidth.
  383.                                 # Default=25.  (Penalties are real numbers.)
  384.  
  385. OverWideExtraPenalty            # Additional penalty multiplied by
  386.                                 # number-of-chars-too-long squared.
  387.                                 # Default=1.  Total over-wide penalty is
  388.                                 #   OW = max(OWP + N^2*OWEP, 0).
  389.  
  390. EarlyBreakPenalty               # Penalty for breaking at early break-points
  391.                                 # among those at a given nesting level.
  392.                                 # Default=1.  If N=number of possible break
  393.                                 # points before this one in this nesting,
  394.                                 #   EB = -N*EBP.
  395.  
  396. CommaBreakPenalty               # Penalty for breaking lines after a comma.
  397.                                 # Default=10.
  398.  
  399. CommaBreakExtraPenalty          # Additional penalty multiplied by nesting
  400.                                 # level of (number of parens enclosing) comma.
  401.                                 # Default=5.  Total comma-break penalty is
  402.                                 #   B = max(P + CBP + N*CBEP, 1.0)
  403.                                 # where
  404.                                 #   P = OW + EB + SIP + IP  (defined elsewhere)
  405.  
  406. SpecialArgBreakPenalty          # Penalty for breaking lines after a comma
  407.                                 # which follows a "special" argument, such
  408.                                 # as the format string of a printf.  Default=5.
  409.  
  410. OpBreakPenalty                  # Penalty for breaking at an operator (like +).
  411.                                 # Analogous to CommaBreakPenalty; default=25.
  412.  
  413. OpBreakExtraPenalty             # Additional penalty multiplied by nesting
  414.                                 # level of the operator.  Default=20.
  415.  
  416. ExHyphenPenalty                 # Additional penalty for breaking a line just
  417.                                 # after a minus sign.  Default=10.  :-)
  418.  
  419. AssignBreakPenalty              # Penalty for breaking at an assignment
  420.                                 # operator.  Default=50.
  421.  
  422. AssignBreakExtraPenalty         # Additional penalty multiplied by nesting
  423.                                 # level of the assignment.  Default=30.
  424.  
  425. QMarkBreakPenalty               # Penalty for breaking lines at the "?" of
  426.                                 # a "?:" operator.  Default=50.  (Colons
  427.                                 # get the regular OpBreakPenalty.)
  428.  
  429. QMarkBreakExtraPenalty          # Additional penalty multiplied by nesting
  430.                                 # level of the "?:" operator.  Default=30.
  431.  
  432. ParenBreakPenalty               # Penalty for breaking after an open paren
  433.                                 # in a function call:
  434.                                 #   long_function_name(
  435.                                 #       very_long_argument);
  436.                                 # Default=25.
  437.  
  438. ParenBreakExtraPenalty          # Additional penalty multiplied by nesting
  439.                                 # level of the parentheses.  Default=10.
  440.  
  441. MoreBreakPenalty                # Adjustment to CommaBreakPenalty, etc.,
  442.                                 # if it is the second or later break in the
  443.                                 # same nesting.  (E.g., if two or more commas
  444.                                 # of a function call are broken.)  Default=-5.
  445.  
  446. MoreBreakExtraPenalty           # Adjustment to CommaBreakExtraPenalty, etc.,
  447.                                 # as in MoreBreakPenalty.  Default=-3.
  448.  
  449. WrongSidePenalty                # Extra penalty for breaking on the less
  450.                                 # preferred side of an operator (see BreakArith
  451.                                 # et al below).  Default=10.
  452.  
  453. ExtraIndentPenalty              # Penalty for indenting by ExtraIndent instead
  454.                                 # of according to nesting order.  If negative,
  455.                                 # -EIP is penalty for *not* using ExtraIndent.
  456.                                 # Default=30.
  457.  
  458. BumpIndentPenalty               # Penalty for using BumpIndent for identation.
  459.                                 # Default=10.
  460.  
  461. NoBumpIndentPenalty             # Penalty for not using BumpIndent when it
  462.                                 # ought to have been used.  Default=25.
  463.  
  464. IndentAmountPenalty             # Penalty for indentation; for a line indented
  465.                                 # N spaces (beyond the indentation of the
  466.                                 # statement as a whole),
  467.                                 #   IP = N*IAP.
  468.                                 # Default=0.5.
  469.  
  470. SameIndentPenalty               # Penalty for indenting two successive lines
  471.                                 # the same even though they belong to different
  472.                                 # nesting levels:
  473.                                 #   foo = x +
  474.                                 #         y *
  475.                                 #         z
  476.                                 # Default=5.
  477.  
  478. MaxLineBreakTries               # Limit to the number of line breaking
  479.                                 # alternatives to be tried.  Default=5000.
  480.  
  481. AllOrNoneBreak                  # List of functions for which arguments must
  482. AllOrNoneBreak                  # be written all on one line or all on separate
  483. AllOrNoneBreak                  # lines.  (A given function may have only one
  484. AllOrNoneBreak                  # of this and the following break properties.)
  485.  
  486. OneSpecialArg   printf          # List of functions like printf for which the
  487. OneSpecialArg                   # first argument is "special", remaining args
  488. OneSpecialArg                   # are uniform.
  489.  
  490. TwoSpecialArgs  sprintf         # List of functions like fprintf for which the
  491. TwoSpecialArgs  fprintf         # first two arguments are "special".
  492.  
  493. ThreeSpecialArgs                # List of functions for which the first three
  494. ThreeSpecialArgs                # arguments are "special".
  495.  
  496. BreakArith                      # Options string for how to break lines at
  497.                                 # arithmetic operators.  One or more of:
  498.                                 #   L  Break on left side of operator.
  499.                                 #   R  Break on right side of operator.
  500.                                 #   H  Same as L, but use "hanging" indent.
  501.                                 #   N  No breaking.
  502.                                 #  L>R Break either way, L preferred (or R<L).
  503.                                 #  R>L Break either way, R preferred (or L<R).
  504.                                 #  L=R Break either way equally (or LR).
  505.                                 #   A  (with above) Use all-or-none breaking.
  506.                                 # Default is R.
  507.  
  508. BreakRel                        # Same for relational ops (==, <, etc.)
  509.  
  510. BreakLog                        # Same for logical operators && and ||
  511.  
  512. BreakDot                        # Same for dot operators . and ->
  513.  
  514. BreakAssign                     # Same for assignments.
  515.  
  516. For_AllOrNone                   # 1 or default=all-or-none breaking of the
  517.                                 # three clauses of a "for" statement.  0=plain.
  518.  
  519.  
  520.  
  521. # COMMENTS AND BLANK LINES
  522.  
  523. EatComments                     # 1=don't copy any comments into C code
  524.                                 # 2=don't copy comments inside procedures
  525.                                 # 0 or default=keep all comments
  526.  
  527. SpitComments                    # 1=spit out all comments between procedures
  528.                                 # 0 or default=try to attach comments to code
  529.  
  530. SpitOrphanComments              # 1=spit out comments whose orig stmts are lost
  531.                                 # 0 or default=attach orphans to nearby code
  532.  
  533. CommentAfter                    # 1=assume comments follow statements
  534.                                 # 0 or default=assume comments precede stmts
  535.                                 # (in case statements are rearranged.)
  536.  
  537. BlankAfter                      # 1 or default=assume blank lines follow stmts
  538.                                 # 0=assume blanks precede statements
  539.  
  540. MajorSpacing                    # Minimum number of blank lines between major
  541.                                 # sections of code, default=2.
  542.  
  543. MinorSpacing                    # Minimum number of blank lines between minor
  544.                                 # sections, default=1.
  545.  
  546. FuncSpacing                     # Minimum number of blank lines between global
  547.                                 # functions, default=2.
  548.  
  549. MinFuncSpacing                  # Minimum number of blank lines separating
  550.                                 # sub-procedures, default=1.
  551.  
  552. EatNotes            # Suppress any notes whose text contains these
  553. EatNotes            # words.  Example: "EatNotes Spam [216]"
  554. EatNotes            # suppresses notes with "Spam" or "[216]".
  555.  
  556.  
  557.  
  558. # SPECIAL COMMENTS
  559.  
  560. FixedComment      FIXED        # Comment for fixed upper limit of FOR loops:
  561.                 #   for i:=1 to N do {FIXED}
  562.                 # will suppress use of a FORLIM for N.
  563.                 # Case-sensitive; no spaces allowed.
  564.  
  565. PermanentComment  PERMANENT    # Comment for permanently imported modules,
  566.                 # such as "system".
  567.  
  568. InterfaceComment  INTF-ONLY    # Comment for include files which are to be
  569.                 # treated as unit interface text, i.e., are
  570.                 # to be read without generating C code.
  571.  
  572. EmbedComment      EMBED        # Comment for embedded C code in Pascal:
  573.                 #   {EMBED
  574.                                 #   printf("stuff\n");
  575.                                 #   }
  576.                 # Use \[ \] for curly braces within embedded
  577.                 # code.  May appear in any context where
  578.                 # comments are used.
  579.  
  580. SkipComment       SKIP        # Comment for code to skip in p2c only:
  581.                 #   {SKIP} writeln('Not in p2c'); {NOSKIP}
  582.  
  583. NoSkipComment     NOSKIP        # Comment for code to skip except in p2c:
  584.                                 #   {NOSKIP writeln('Only in p2c'); }
  585.                 # Can be used in if-then-else fashion:
  586.                 #   {SKIP} foo; {NOSKIP bar; }
  587.  
  588. SignedComment     SIGNED        # Type annotation: var c : {SIGNED} char;
  589.  
  590. UnsignedComment   UNSIGNED      # Type annotation: type uc = {UNSIGNED} char;
  591.  
  592.  
  593.  
  594.  
  595. # STYLISTIC OPTIONS
  596.  
  597. ExtraParens                     # 1=use many parentheses for readability,
  598.                                 # 2=use even more parentheses,
  599.                                 # 0=use minimal parens,
  600.                                 # default=use nice parens
  601.  
  602. BreakAddParens                  # 1=always add parens for operators broken
  603.                                 # across lines.  0=never, default=nice parens
  604.  
  605. ReturnParens                    # 1=write "return (x)"
  606.                                 # 0=write "return x"
  607.                                 # default=omit parens for trivial expressions
  608.  
  609. SpaceExprs                      # 1=use many spaces in expressions,
  610.                                 # 0=use minimal spaces in expressions,
  611.                                 # default=use nice spacing
  612.  
  613. ImplicitZero                    # 1=generate "if (x)" rather than "if (x!=0)"
  614.                                 # 0=always generate explicit comparisons
  615.                                 # default=only with strcmp and other idioms
  616.  
  617. StarIndex                       # 1=always use "*a"
  618.                                 # 0=always use "a[0]"
  619.                                 # default=use "*a" only in common idioms
  620.  
  621. AddIndex                        # 1=always use "a + n"
  622.                                 # 0=always use "&a[n]"
  623.                                 # default=use "a+n" only in common idioms
  624.  
  625. StarArrays            # 1 or default=write "f(int *a)" for array a
  626.                 # 0=write "f(int a[10])"
  627.                 # 2=write "f(int a[])"
  628.  
  629. StarFunctions                   # 1=write "(*fp)(x,y)" to call thru func ptr
  630.                                 # 0=write "fp(x,y)"
  631.                                 # default=1 unless AnsiC=1
  632.  
  633. PostIncrement                   # 1 or default=write i++ preferentially
  634.                                 # 0=write ++i preferentially
  635.  
  636. CaseSpacing                     # Number of blank lines between CASE sections,
  637.                                 # default=0.
  638.  
  639. CaseTabs                        # 0 or default=put each CASE on its own line.
  640.                                 # Else this is an amount by which to space
  641.                                 # cases on same line, either +n or *n in the
  642.                                 # style of ConstIndent.
  643.  
  644. CaseLimit                       # Maximum number of options in a CASE subrange
  645.                                 # that will be expanded out in-line; more than
  646.                                 # this moves to an "if" in the default clause.
  647.                                 # Default=9.
  648.  
  649. UseCommas                       # 1=use comma operator when convenient
  650.                                 # 0=do not use comma operator
  651.                                 # default=use comma operator when necessary
  652.  
  653. UseReturns                      # 1 or default=introduce "return" statements
  654.                                 # 0=do not rearrange to use "return"
  655.  
  656. ReturnLimit                     # Need at least this many statements in an
  657.                                 # "if" block before "return" rearrangement;
  658.                                 # default=3
  659.  
  660. UseBreaks                       # 1 or default=introduce "break"/"continue"
  661.                                 # 0=do not use "break" and "continue"
  662.  
  663. BreakLimit                      # Need at least this many statements in an
  664.                                 # "if" block before "break" rearrangement;
  665.                                 # default=2
  666.  
  667. ContinueLimit                   # Need at least this many statements in an
  668.                                 # "if" block before "continue" rearrangement;
  669.                                 # default=5
  670.  
  671. InfLoopStyle                    # 0 or default=follow the source file
  672.                                 # 1=use "for (;;) ..." for all infinite loops
  673.                                 # 2=use "while (1) ..."
  674.                                 # 3=use "do ... while (1)"
  675.  
  676. NullChar                        # 1 or default=write '\0' for null character
  677.                                 # 0=write 0 for null character constant
  678.  
  679. HighCharInt                     # 1 or default=write '\200' as 128 and above
  680.                                 # 0=write all char consts as characters
  681.  
  682. MixVars                         # 1=mix all vars of same base type: int a,b;
  683.                                 # 0=never mix variables: int a; int b;
  684.                                 # default=mix only adjacent variables
  685.  
  686. MixTypes                        # 1=mix all var types: int a,*b,c[5];
  687.                                 # 0=never mix variables with different types
  688.                                 # default=pointers only: int a,*b; int c[5];
  689.  
  690. MixFields                       # 1=mix bit-fields just like other vars
  691.                                 # 0=only one bit-field per declaration
  692.                                 # default=1
  693.  
  694. MixInits                        # 1=always mix variables with initializers
  695.                                 # 0=never mix variables with initializers
  696.                                 # default=mix with-inits with other with-inits
  697.  
  698. MainLocals                      # 1 or default=make globals local to main if poss
  699.                                 # 0=globals are always made global
  700.  
  701.  
  702.  
  703. # CODING OPTIONS
  704.  
  705. InitialCalls            # Initial function calls (or other brief C
  706. InitialCalls            # statements) to put at front of main program.
  707. InitialCalls            # E.g.: InitialCalls setup_buffer()
  708.  
  709. ExpandIncludes                  # 1 or default=expand include files into output
  710.                                 # 0=convert Pascal include to #include
  711.  
  712. CollectNest            # 1 or default=collect sub-procs, emit at end.
  713.                 # 0=emit sub-procedures one by one; this will
  714.                 #   produce bad code but is useful with
  715.                 #   ExpandIncludes=0.
  716.  
  717. ShortCircuit                    # 1=use &&, 0=use & for boolean AND, also OR.
  718.                                 # default=1 for Turbo/HP-UX, 0 for HP Pascal
  719.                 #   may be overridden by {$B} / $partial_eval$
  720.  
  721. ShortOpt                        # 1 or default=optimize a&b to a&&b if equiv
  722.                                 # 0=always use a&b, depending on ShortCircuit
  723.  
  724. ElimDeadCode                    # 1 or default=eliminate unreachable code
  725.                                 # 0=leave unreachable code in place
  726.  
  727. FoldConstants                   # 1=instantiate non-structure const's in-line
  728.                                 #   (applies to int, char, boolean, enum, real)
  729.                                 # 0 or default=use #define's for constants
  730.                                 # 0 causes constant to be completely symbolic;
  731.                                 # default sometimes instantiates if convenient.
  732.                                 # A constant is folded if FoldConstants=1
  733.                                 # either when the const was defined, or when
  734.                                 # it was referenced.
  735.  
  736. FoldStrConstants                # 1=instantiate string const's in-line, as above
  737.                                 # 0 or default=use #define's for string const's
  738.  
  739. UseConsts                       # 1=use "const" keyword in C
  740.                 # 2=use "Const" form even if UseAnyptrMacros=0
  741.                                 # 0=do not use "const" declarations
  742.                                 # default=1 if AnsiC=1 or C++=1
  743.  
  744. UseUndef            # 1=use "#undef" when #defines go out of scope
  745.                 # 0=do not use "#undef", default=1.
  746.  
  747. StoreFileNames                  # 1=store file names associated with file vars
  748.                                 # 0=let the system record the name
  749.                                 # default=1 in Turbo Pascal, 0 otherwise.
  750.  
  751. SqueezeSubr                     # 1 or default=squeeze subranges into char, etc.
  752.                                 # 0=use only short's and int's (or long's).
  753.  
  754. UseEnum                         # 1=use C "enum" types
  755.                                 # 0=use integers for enumerations
  756.                                 # default=1 unless AnsiC=0
  757.  
  758. SqueezeEnum            # 1=use bytes for small enums, when UseEnum=0
  759.                 # 0=use shorts always
  760.                 # default=0 for HP Pascal, 1 otherwise.
  761.  
  762. CompEnums                       # 1=okay to compare enums directly
  763.                                 # 0=cast enums to ints for comparisons
  764.                                 # default=0 unless AnsiC=1.
  765.  
  766. Packing                         # 1 or default=fully packed records and arrays
  767.                                 # 0=ignore "packed" keyword
  768.                                 # 2=pack to bytes, but not bits
  769.  
  770. PackSigned                      # 1=implement packed arrays of signed values
  771.                                 # 0=only pack unsigned arrays
  772.                                 # default=1
  773.  
  774. SkipIndices                     # Number of vacant array indices allowable,
  775.                                 # default 0.  If 1, then array [1..10] is
  776.                                 # converted to array [11], but array [2..10]
  777.                                 # would be converted as array [9] with offsets.
  778.  
  779. OffsetForLoops                  # 1=adjust loops where index is always used
  780.                                 #   as, e.g., i-1 by offsetting the index.
  781.                                 # 0=leave them alone.  Default=1.
  782.  
  783. ForEvalOrder                    # 1=in for x:=y to z, force eval of y before z.
  784.                                 # 0 or default=evaluation order unimportant.
  785.  
  786. StringLeaders                   # Number of leading '>' placeholder characters
  787.                                 # that can be prepended to a string literal.
  788.                                 # Default is 3.
  789.  
  790. StringCeiling                   # Maximum size for strings.  Default is 255.
  791.                                 # If > 255, allows some "slop" in strings.
  792.                                 # If < 255, shortens large strings.
  793.  
  794. StringDefault                   # Size of string declared without [ ] brackets.
  795.                                 # Default is 255.
  796.  
  797. StringTruncLimit                # Minimum size of strings for which a warning
  798.                                 # is generated when assigned possibly longer
  799.                                 # strings.  These are assignments to check if
  800.                                 # Turbo-like truncation is necessary.
  801.                                 # Default is 80 for Turbo, 0 otherwise.
  802.  
  803. LongStringSize                  # Smallest string which can be considered
  804.                                 # "arbitrarily long"; default=StringCeiling.
  805.  
  806. KeepNulls                       # 1=try to preserve null (#0) chars in strings
  807.                                 # 0 or default=ignore them (but warn)
  808.  
  809. HighCharBits                    # 1=convert "ch >= 128" to "(ch & ~127) != 0"
  810.                                 # 2=convert "ch >= 127" to "(ch & 128) != 0"
  811.                                 # 0=do not use bit ops for high characters
  812.                                 # default=1 only if ch's signed-ness is unknown
  813.  
  814. StaticFunctions                 # 1 or default=use "static" for private funcs
  815.                                 # 0=don't create static functions
  816.  
  817. StaticVariables                 # 1 or default=use "static" for private vars
  818.                                 # 0=don't create static global vars
  819.  
  820. NeedStatic                      # Names of functions or variables which
  821.                                 # need to be declared static despite
  822.                                 # StaticFunctions=0 or StaticVariables=0.
  823.  
  824. AlwaysCopyValues                # 1=always make a local copy of a parameter
  825.                                 # 0 or default=only if it appears to be changed
  826.  
  827. VoidArgs                        # 1=write "f(void)" for funcs with no args
  828.                                 # 0=write "f()" for funcs with no args
  829.                                 # default=depends on AnsiC and C++
  830.  
  831. Prototypes                      # 1=write "f(int a, int b)"
  832.                                 # 2=write "f(int, int)" when possible
  833.                                 # 0=write "f(a, b) \n int a, b;"
  834.                                 # default=depends of AnsiC and C++
  835.  
  836. FullPrototyping                 # 1 or default=use prototypes everywhere
  837.                                 # 0=use prototypes only for forward/extern
  838.  
  839. ProcPtrPrototypes               # 1 or default=use prototypes for C func ptrs
  840.                                 # 0=always write, e.g., int (*fp)();
  841.  
  842. CastArgs                        # 1=include argument casts if needed: (double)i
  843.                                 # 0=do not include argument casts (dangerous!)
  844.                                 # default=do not cast if func has a prototype
  845.  
  846. CastLongArgs                    # 1=include int/long argument casts if needed
  847.                                 # 0=do not cast between int and long
  848.                                 # default=follow CastArgs
  849.  
  850. PromoteArgs                     # 1=promote e.g. short to int in prototypes
  851.                                 # 0=do not promote in prototypes
  852.                                 # default=only when prototyping forwards only
  853.  
  854. PromoteEnums            # 1=promote enum to int when promoting args
  855.                 # 0=leave enums alone in prototypes
  856.                 # default=only when UseEnum=0
  857.  
  858. StaticLinks                     # 1=use _PROCEDURE (ProcTypeName) for proc ptrs
  859.                                 # 2=use _PROCEDURE but assume only global procs
  860.                                 # 0=use C function pointers, no static links
  861.                                 # default=1 in HP, 0 in Turbo Pascal
  862.  
  863. VarStrings                      # 1=full support for "var s:string" params
  864.                 #   and HP Pascal's strmax function
  865.                                 # 0=assume all var s:string's are string[255]
  866.                                 # default=0 always; may need 1 for some
  867.                                 #   HP Pascal programs
  868.  
  869. VarFiles                        # 1 or default="var f : file" params use &
  870.                                 # 0=pass FILE *'s by value; must not open or
  871.                                 #   close the file within the procedure
  872.  
  873. AddrStdFiles                    # 1=okay to write "&stdout", etc.
  874.                                 # 0 or default=not okay
  875.  
  876. CopyStructFuncs                 # 1=write "temp = f(); temp.field"
  877.                                 # 0=write "f().field"
  878.                                 # default=1 unless AnsiC=1
  879.  
  880. Atan2                           # 1=convert arctan(a/b) to atan2(a,b)
  881.                                 # 0 or default=convert it to atan(a/b)
  882.  
  883. BitwiseMod                      # 1 or default=convert x mod 16 to x&15
  884.                                 # 0=convert x mod 16 to x%16
  885.  
  886. BitwiseDiv                      # 1=convert x div 16 to x>>4
  887.                                 # 0 or default=convert x div 16 to x/16
  888.  
  889. AssumeBits                      # 1=assume args of funcs like na_po2 are
  890.                                 #   within reasonable range; write 1<<x.
  891.                                 # 0 or default=no assumptions; write na_po2
  892.  
  893. AssumeSigns                     # 1 or default=for e.g. na_lsl, assume
  894.                                 #   "x" is positive, "-x" is negative.
  895.                                 # 0=no assumptions (except for constants!)
  896.  
  897. AllocZeroNil                    # 1=na_new(p,0) must set p to nil
  898.                                 # 0 or default=not necessary
  899.                                 # 2=not necessary, but print a warning
  900.  
  901. PrintfOnly                      # 1=don't use puts, putc, etc., in WRITE
  902.                                 # 0=use puts, etc., as well as printf
  903.                                 # default=a pleasing compromise
  904.  
  905. MixWritelns                     # 1 or default=writeln;writeln=>printf("\n\n")
  906.                                 # 0=don't mix consecutive writeln stmts
  907.  
  908. IntegerWidth                    # Default field width for writing integers.
  909.                                 # Default is 1 for Turbo, 12 for HP.
  910.  
  911. RealWidth                       # Default field width for writing reals.
  912.                                 # Default is 12.
  913.  
  914. FormatStrings                   # 1=full support for write(string:width)
  915.                                 # 0 or default=':width' only stretches
  916.  
  917. WhileFgets                      # 1 or default=while (fgets(...)) { ... }
  918.                                 # 0=while (!eof(...)) { fgets(...); ... }
  919.  
  920. UseGets                         # 1 or default=use gets to read string[255]
  921.                                 # 0=always use fgets (with length checking)
  922.  
  923. NewLineSpace                    # 1=convert \n to ' ' in read(ch)
  924.                                 # 0=leave newlines alone reading characters
  925.                                 # default=0 in Turbo Pascal, 1 otherwise
  926.  
  927. BuildReads                      # 1=combine x:=f^;get(f) into read(f,x)
  928.                                 # 2=only for text files and files of char
  929.                                 # 0=leave it alone; default=1
  930.  
  931. BuildWrites                     # 1=combine f^:=x;put(f) into write(f,x)
  932.                                 # 2=only for text files and files of char
  933.                                 # 0=leave it alone; default=1
  934.  
  935. BinaryMode                      # 1 or default=fopen binary files as, say, "rb"
  936.                                 # 0=fopen binary files as "r"
  937.                                 # 2=fopen binary files as "r" with a warning
  938.  
  939. ReadWriteOpen            # 1=RESET/REWRITE open binary files read/write
  940.                 # 0=RESET opens read-only, REWRITE write-only
  941.                 # 2=Open all files (text and binary) read/write
  942.                 # default=1 in Turbo, 0 otherwise.
  943.  
  944. OpenMode                        # fopen mode string to use for Pascal open
  945.                                 # statement.  Use a+ if that mode allows
  946.                                 # seeking.  Default=build out of ANSI modes
  947.  
  948. FileNameFilter            # Name of a function to call which converts
  949.                                 # a file name into a form usable by fopen;
  950.                                 # if name must be changed this should return
  951.                 # a pointer to a static buffer.
  952.                                 # Not used for constant names.  "0"=no filter.
  953.                 # default=P_trimname for Oregon/Berk, else 0
  954.  
  955. LiteralFiles            # 0=nameless rewrite(f) generates a temp file
  956.                 # 1=nameless rewrite(f) uses "f" as file name
  957.                 # 2=like 1 only if f appeared in "program" stmt
  958.                 # default=2 for Berkeley, else 0.
  959.  
  960. LiteralFile            # A file variable which should be treated as
  961. LiteralFile            # if LiteralFiles=1.  If LiteralFiles=2, files
  962. LiteralFile            # in program header are added to this list.
  963.  
  964. FullStrWrite                    # 1=full implementation of strwrite(s,i,j,...)
  965.                                 # 0=ignore "j" variable and other issues
  966.                                 # default=assign "j", assume not mid-string
  967.                                 # 2=like default, but issue a warning
  968.  
  969. FullStrRead                     # 1 or default=full impl of strread using "%n"
  970.                                 # 0=fake the value of "j"
  971.                                 # 2=like default, but issue a warning
  972.  
  973. SetBits                         # Number of bits to use in each "long" of a set
  974.                                 # default=LongSize if defined, else 32
  975.  
  976. DefaultSetSize                  # Default size of un-typed set constants;
  977.                                 # default default=256 for VAX, else 8192
  978.  
  979. SmallSetConst                   # 0=write small-set literals like "1<<2|1<<4"
  980.                                 # 1=write them like "0x14"
  981.                                 # 2=write them like "20"
  982.                                 # -1=do not use small-sets at all
  983.                                 # default=-1 if SetBitsName defined, else 1
  984.  
  985. BigSetConst                     # (analogous to SmallSetConst for big sets)
  986.  
  987. LeLeRange                       # 1=write "j in [1..10]" as "1<=j && j<=10"
  988.                                 # 0 or default=write ... as "j>=1 && j<=10"
  989.  
  990. UnsignedTrick                   # 1 or default=write "(unsigned)i <= 10"
  991.                                 # 0=leave "i >= 0 && i <= 10" alone
  992.  
  993. UseIsAlpha                      # 1 or default=use "isalpha", "isdigit", etc.
  994.                                 # 0=use plain comparisons
  995.  
  996. UseIsSpace                      # 1=convert "c==' '" to "isspace(c)"
  997.                                 # 0 or default=leave it alone
  998.  
  999. UseStrncmp            # 1=use strncmp to compare packed array of char
  1000.                 # 0=use memcmp, same as for all other arrays
  1001.                 # default=1
  1002.  
  1003.  
  1004.  
  1005. # NAMING CONVENTIONS
  1006.  
  1007. CodeFileName      %Rs.c         # Name of .c output file for a program,
  1008.                                 # %s=input file name.
  1009.  
  1010. ModuleFileName    %_S.c         # Name of .c output file for a module,
  1011.                                 # %s=input file name, %S=module name.
  1012.  
  1013. HeaderFileName    %_S.h         # Name of .h output file for a module,
  1014.                                 # %s=input file name, %S=module name.
  1015.  
  1016. HeaderFileName2                 # If defined, different format to use when
  1017.                                 # generating #include's, otherwise same.
  1018.                                 # May be quoted as in IncludeFrom.
  1019.  
  1020. LogFileName       %RS.log       # Name of log file name for -V mode.
  1021.                                 # %s=input file name, %S=output file name.
  1022.  
  1023. IncludeFileName                 # Format for translating Pascal include-file
  1024.                 # names.
  1025.  
  1026. SymCase                         # 1 or default=preserve case of Pascal idents,
  1027.                                 # 0=convert all Pascal idents to lower case
  1028.  
  1029. SymbolFormat                    # Format for C identifiers derived from
  1030.                                 # Pascal ones; default=%s.  The following
  1031.                                 # specific formats override this one.
  1032.                                 # %s=original Pascal identifier,
  1033.                                 # %S=name of parent module or procedure.
  1034.  
  1035. ConstFormat                     # Format for #define names derived from
  1036.                                 # Pascal consts.  (Often used: %^s)
  1037.  
  1038. ModuleFormat                    # Format for program and module names.
  1039.  
  1040. FunctionFormat            # Format for procedure and function names.
  1041.  
  1042. VarFormat            # Format for variable names.
  1043.  
  1044. TypeFormat            # Format for typedef names.
  1045.  
  1046. FieldFormat            # Format for fields of records; %S=record type.
  1047.  
  1048. EnumFormat            # Format for enumeration constants;
  1049.                 # %s=enum type name.  If not specified,
  1050.                 # default is ConstFormat, else SymbolFormat.
  1051.  
  1052. ReturnValueName   Result        # Return value holding variable; [%s=func name]
  1053. UnitInitName      _%s_init      # Turbo Pascal unit initializer; %s=unit name
  1054. HSymbolName       %s_H          # Name of "_H" symbol, if any; %s=unit name
  1055. GSymbolName       %s_G          # Name of "_G" symbol; [%s=unit name]
  1056. StringMaxName     MAX_%s        # VAR STRING hidden variable; %s=param name
  1057. ArrayMinName      %s_LOW    # Lower bound hidden variable; %s=param name
  1058. ArrayMaxName      %s_HIGH    # Upper bound hidden variable; %s=param name
  1059. CopyParName       %s_           # Alternate name for parameter %s
  1060. StaticLinkName    LINK          # Static link parameter name; [%s=func name]
  1061. LocalVarsStruct   LOC_%s        # Name of struct type for locals; %s=func name
  1062. LocalVarsName     V             # Name of struct var for locals; [%s=func name]
  1063. FwdStructName     %s            # Name of forward-used structs; %s=type name
  1064.                                 # (may simply be %s if you don't mind confusion)
  1065. EnumListName      %s_NAMES      # Name of array to hold names for enum %s
  1066. UnionName         UU            # Name of variant union
  1067. UnionPartName     %s            # Name of variant element; %s=tag value name
  1068. FakeStructName    _REC_%s    # Name of "temporary" structs; %s=base name
  1069. LabelName         _L%s          # Name of GOTO label; %s=label name
  1070. LabelVarName      _JL%s        # Name of GOTO label jmp_buf variable; %s=label
  1071. TempName          TEMP%s        # Name of general temporary vars; %s=unique id
  1072. DummyName         DUMMY%s       # Name of throwaway "dummy" vars; %s=unique id
  1073. WithName          WITH%s        # Name of WITH statement temp ptr; %s=unique id
  1074. ForName           FORLIM%s      # Name of FOR statement temp limit; %s=unique id
  1075. PtrName           PTR%s         # Name of NIL-checking temp ptr; %s=unique id
  1076. StringName        STR%s         # Name of temporary string vars; %s=unique id
  1077. SetName           SET%s         # Name of temporary set vars; %s=unique id
  1078. FNVarName         %s_NAME       # Name of file-name vars; %s=file var
  1079. FNSizeName        _FNSIZE       # Maximum length of file name (macro or integer)
  1080.  
  1081. AlternateName1    %s_           # Way to produce a second C symbol for a Pascal
  1082.                                 # symbol, where original symbol was %s.  Default
  1083.                                 # is to use AlternateName with %d=1.
  1084.  
  1085. AlternateName2                  # A second alternate for %s.
  1086.  
  1087. AlternateName                   # A %d'th name for %s.  %s and %d may appear in
  1088.                                 # either order.  Default is %d applications of
  1089.                                 # AlternateName1.
  1090.  
  1091. ExportSymbol                    # Name of exported symbol %s.  E.g.: "P_%s"
  1092.                                 # Default=%s, i.e., don't mess with the name.
  1093.                                 # %s is Pascal symbol name; %S is module name.
  1094.  
  1095. Export_Symbol                   # Exported-symbol format to be used when the
  1096.                                 # symbol %s contains an '_'.  Default=use
  1097.                                 # ExportSymbol format for every symbol.
  1098.  
  1099. Alias                           # Name of external proc or var; default="%s".
  1100.                                 # If does not contain a "%s", this simply
  1101.                                 # renames the next defined symbol of any kind.
  1102.  
  1103. Synonym                # Format:  Synonym name = newname
  1104. Synonym                # Treat the word "name" in the input file
  1105. Synonym                # exactly the same as the keyword or identifier
  1106. Synonym                # "newname".  If "newname" is omitted, ignore
  1107. Synonym                # the word "name" in the input.  For example:
  1108. Synonym                # "Synonym andthen = and" creates a keyword;
  1109. Synonym                # "Synonym allocmem = getmem" simulates a
  1110. Synonym                # built-in function "allocmem" which acts like
  1111. Synonym                # Turbo's "getmem"; "Synonym segment" ignores
  1112. Synonym                # the word "segment" in the input.
  1113.  
  1114. NameOf                          # Format:  NameOf name = newname
  1115. NameOf                          # Rename the specified symbol.  The name may
  1116. NameOf                          # be of the form "modulename.name" or
  1117. NameOf                          # "procname.name"; otherwise, all usages of
  1118. NameOf                          # the symbol are renamed.
  1119.  
  1120. VarMacro                        # Format:  VarMacro varname = C-expression
  1121. VarMacro                        # Must come before the declaration of variable
  1122. VarMacro                        # "varname".  Causes all references to the
  1123. VarMacro                        # variable to use the C expression instead.
  1124. VarMacro                        # In the expr, all C operators are supported;
  1125. VarMacro                        # all identifier names are used verbatim.
  1126. VarMacro                        # Also works for Turbo Pascal typed-constants.
  1127. VarMacro                        # Suppresses declaration of variable unless
  1128. VarMacro                        # "varname" appears in the C expression.
  1129. VarMacro                        # Simple algebra is used for assignments to
  1130. VarMacro                        # vars with expr definitions: if X -> 2*V+1,
  1131. VarMacro                        # then "X:=Y" translates to "V=(Y-1)/2".
  1132.  
  1133. ConstMacro                      # Analogous to VarMacro, but for constants and
  1134. ConstMacro                      # enumeration constants.  In an enum constant,
  1135. ConstMacro                      # if the C-expression is a single name the
  1136. ConstMacro                      # result is equivalent to Alias or NameOf.
  1137.  
  1138. FieldMacro                      # Format:  FieldMacro rec.field = C-expression
  1139. FieldMacro                      # where "rec" is a record type name which
  1140. FieldMacro                      # also appears in the C-expression.  For
  1141. FieldMacro                      # example: FieldMacro obj.foo = bar(obj) causes
  1142. FieldMacro                      # the field "foo" of record type "obj" to be 
  1143. FieldMacro                      # referenced through the function or macro
  1144. FieldMacro                      # "bar", rather than using dot notation.
  1145.  
  1146. FuncMacro                       # Format:  FuncMacro foo(a,b,c) = C-expression
  1147. FuncMacro                       # where "a", "b", "c" are arbitrary arg names
  1148. FuncMacro                       # also appearing in the C-expression.  "Foo"
  1149. FuncMacro                       # is a procedure or function defined or to be
  1150. FuncMacro                       # defined in the code, or predefined in Pascal.
  1151. FuncMacro                       # E.g.: FuncMacro PtInRect(p,r) = PtInRect(p,&r)
  1152. FuncMacro                       # causes "r" to be treated as a VAR param even
  1153. FuncMacro                       # though otherwise it would be passed by value.
  1154.  
  1155. WarnMacros                      # 1=warn if Var/Const/Field/FuncMacro not used
  1156.                                 # 0 or default=don't care.
  1157.  
  1158. SpecialMalloc                   # Format:  SpecialMalloc x.y.z = funcname
  1159. SpecialMalloc                   # where x is a type name, and y and z are
  1160. SpecialMalloc                   # optional variant tags for records.  The
  1161. SpecialMalloc                   # statement "new(p,y,z)" where p is a pointer
  1162. SpecialMalloc                   # to x is converted to p = funcname().
  1163.  
  1164. SpecialFree                     # Like SpecialMalloc, but defines a special
  1165. SpecialFree                     # function for freeing things of a given type.
  1166.  
  1167. SpecialSizeOf                   # Like SpecialMalloc, but defines a name or
  1168. SpecialSizeOf                   # other integer-valued C expression which is
  1169. SpecialSizeOf                   # the size of an object of the given type.
  1170.  
  1171. AvoidName         getc          # If any of these names appear in the code,
  1172. AvoidName         putc          # use an alternate name so as to avoid
  1173. AvoidName         getchar       # library conflicts.
  1174. AvoidName         putchar
  1175. AvoidName         feof          # These are typically macro names whose use
  1176. AvoidName         ferror        # would be disasterous under any
  1177. AvoidName         clearerr      # circumstances.
  1178. AvoidName         fileno
  1179. AvoidName         BUFSIZ    NULL    EOF
  1180. AvoidName         stdin     stdout  stderr
  1181. AvoidName         true false assert
  1182. AvoidName         Anyptr Void Char PP PV
  1183. AvoidName         Signed Const Volatile Register Static Local Inline
  1184. AvoidName         cdecl far near huge
  1185. AvoidName         isalpha isupper islower isdigit isxdigit isspace ispunct
  1186. AvoidName         isalnum isprint isgraph iscntrl isascii toascii
  1187. AvoidName         toupper tolower
  1188. AvoidName      LINK SEXT
  1189.  
  1190. AvoidGlobalName   fopen         # These names should be avoided in global
  1191. AvoidGlobalName   fclose        # contexts, but they are okay as local names.
  1192. AvoidGlobalName   fseek
  1193. AvoidGlobalName   exit      main
  1194. AvoidGlobalName   strcpy    strcat
  1195. AvoidGlobalName   printf    fprintf sprintf
  1196. AvoidGlobalName   scanf     fscanf  sscanf
  1197. AvoidGlobalName   malloc    realloc free
  1198. AvoidGlobalName   y0 y1 yn j0 j1 jn    # from math.h -- urghhh!
  1199.                                 # ... we should define lots more of these!
  1200.  
  1201. WarnName                        # A similar list of names to leave alone, but
  1202. WarnName                        # generate warnings for if they are defined.
  1203.  
  1204. WarnNames                       # 1=All vars, consts, types, procs, fields
  1205.                                 #   defined after this point should generate
  1206.                                 #   warnings if used.
  1207.                                 # 0 or default=no warnings for future names
  1208.  
  1209. WarnLibrary                     # A list of C functions, any calls to which
  1210. WarnLibrary                     # should generate warnings.
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216. # TARGET LIBRARY
  1217.  
  1218. QuoteIncludes                   # 1 or default=write #include "foo.h"
  1219.                                 # 0=write #include <foo.h>
  1220.  
  1221. IncludeFrom                     # Names of modules which need special
  1222. IncludeFrom                     # #include file names.  Formats:
  1223. IncludeFrom                     # IncludeFrom foo bar.h   => #include <bar.h>
  1224. IncludeFrom                     #   if QuoteIncludes=0 else #include "bar.h"
  1225. IncludeFrom                     # IncludeFrom foo <bar.h> => #include <bar.h>
  1226. IncludeFrom                     # IncludeFrom foo "bar.h" => #include "bar.h"
  1227. IncludeFrom                     # IncludeFrom foo         => no #include at all
  1228. IncludeFrom iodeclarations <p2c/iodecl.h>
  1229. IncludeFrom system
  1230. IncludeFrom printer
  1231. IncludeFrom dos
  1232. IncludeFrom crt
  1233.  
  1234. ImportFrom                      # Names of modules whose import text
  1235. ImportFrom                      # resides in the specified files.
  1236. ImportFrom                      # E.g.: ImportFrom  mymod  /usr/me/mymod.imp
  1237. ImportFrom                      # These are the Turbo Pascal standard units
  1238. ImportFrom  system         %H/turbo.imp
  1239. ImportFrom  printer       %H/turbo.imp
  1240. ImportFrom  dos           %H/turbo.imp
  1241. ImportFrom  crt           %H/turbo.imp
  1242. ImportFrom  graph          %H/turbo.imp
  1243.  
  1244. ImportDir   %_s.pas             # Search list of other places to look for
  1245. ImportDir   %_s.text            # the module named %s.
  1246. ImportDir   %H/%_s.imp
  1247.  
  1248. IncludeDir  %_s                 # Search list of places to look for the
  1249. IncludeDir  %_s.pas             # Pascal include file %s.
  1250. IncludeDir  %_s.text
  1251. IncludeDir  %H/%_s.pas
  1252.  
  1253. LibraryFile %H/system.imp       # Names of import-text files to search
  1254. LibraryFile                     # always (as if "-s name" were used).
  1255.  
  1256. StructFunction    sprintf       # Names of "structured functions".
  1257. StructFunction    memcpy  memmove
  1258. StructFunction    strcpy    strsub   strrtrim    strrpt
  1259. StructFunction    P_addset  P_addsetr  P_remset
  1260.  
  1261. StrlapFunction    P_setunion    # Names of "structured functions" which
  1262. StrlapFunction    P_setint      # allow duplication of their arguments.
  1263. StrlapFunction    P_setdiff
  1264. StrlapFunction      P_setxor
  1265. StrlapFunction    P_expset    strlower   strupper   strpad
  1266.  
  1267. NoSideEffects     strcmp memcmp # Names of functions which have absolutely
  1268. NoSideEffects                   # no side effects on their arguments or
  1269. NoSideEffects                   # other global state of the program.
  1270.  
  1271. Deterministic     abs sin cos   # Names of functions which satisfy all
  1272. Deterministic                   # requirements for NoSideEffects, and
  1273. Deterministic                   # additionally compute their result
  1274. Deterministic                   # deterministically (and quickly), without
  1275. Deterministic                   # any sort of hidden dependencies.
  1276.                                 # (need many more in this list!)
  1277.  
  1278. LeaveAlone                      # Names of library functions which should
  1279. LeaveAlone                      # be left alone, rather than translated
  1280. LeaveAlone                      # into C equivalents.  (For example, prevents
  1281. LeaveAlone                      # converting fwritebytes into C fwrite.)
  1282.  
  1283. HeaderName        <p2c/p2c.h>   # Name of standard p2c header file
  1284.  
  1285. UCharName         uchar         # Name of a typedef for "unsigned char";
  1286.                                 # default="char" or "unsigned char".
  1287.  
  1288. SCharName         schar         # Name of a typedef for "signed char";
  1289.                                 # default="char" or "signed char".
  1290.  
  1291. BooleanName       boolean       # Name of a typedef for booleans; default=char.
  1292.  
  1293. TrueName          true          # Name of a boolean "true" constant (optional)
  1294. FalseName         false         # Name of a boolean "false" constant (opt.)
  1295.  
  1296. NullName          NULL          # Name of a NULL pointer constant
  1297.  
  1298. ProcTypeName      _PROCEDURE    # Name of procedure-pointer typedef
  1299.  
  1300. EscapeCodeName    P_escapecode  # Names of error-handling variables
  1301. IOResultName      P_ioresult
  1302.  
  1303. ArgCName          P_argc        # Name of global copy of argc
  1304. ArgVName          P_argv        # Name of global copy of argv
  1305.  
  1306. MainName          PASCAL_MAIN   # Name of program setup function
  1307.  
  1308. EscapeName        _Escape       # Name of error-generation function
  1309.  
  1310. EscIOName         _EscIO        # Name of I/O-error-generation function
  1311.  
  1312. CheckIOName       _CHKIO        # Name of I/O-error-checking function
  1313.  
  1314. SetIOName         _SETIO        # Name of I/O-error-setting function
  1315.  
  1316. FileNotFoundName  FileNotFound  # Name or number of "File Not Found" ioresult
  1317.  
  1318. FileNotOpenName   FileNotOpen   # Name or number of "File Not Open" ioresult
  1319.  
  1320. FileWriteErrorName FileWriteError # Name of num of "File Write Error" ioresult
  1321.  
  1322. BadInputFormatName BadInputFormat # Name or num of "Bad Input Format" ioresult
  1323.  
  1324. EndOfFileName     EndOfFile     # Name or number of "End of File" ioresult
  1325.  
  1326. OutMemName        _OutMem       # Name of out-of-memory error function
  1327.  
  1328. CaseCheckName      _CaseCheck    # Name of case-out-of-range error function
  1329.  
  1330. NilCheckName      _NilCheck    # Name of nil-pointer error function
  1331.  
  1332. SetBitsName                     # Name of macro defined equal to SetBits
  1333.                                 # default=compile SetBits in-line
  1334.  
  1335. SprintfValue                    # 1=sprintf() returns its first argument
  1336.                                 # 0=sprintf() returns a character count
  1337.                                 # default=don't know (unless AnsiC=1)
  1338.                                 # -2=don't know regardless of AnsiC
  1339.                                 # 2=don't use sprintf in expressions
  1340.  
  1341. SprintfName                     # If SprintfValue != 1, this is the name
  1342.                                 # of a sprintf-like function which returns
  1343.                                 # its first argument.  Default=no such
  1344.                                 # function exists.
  1345.  
  1346. MemCpyName                      # Methods known: "memcpy", "bcopy"
  1347.                                 # default=according to Target, default "memcpy"
  1348.  
  1349. RoundName                       # Name of function or macro for rounding
  1350.                                 # a real to an integer.  Precede name with
  1351.                                 # a '*' if it is a macro that evaluates its
  1352.                                 # arguments more than once.  Default=do it
  1353.                                 # by hand.
  1354.  
  1355. DivName                # Name of function or macro for Pascal integer
  1356.                 # division where numerator may be negative.
  1357.                 # Use '*' if macro; default=use regular '/'.
  1358.  
  1359. ModName                # Name of function or macro for Pascal integer
  1360.                 # modulo where numerator may be negative.
  1361.                 # Use '*' if macro; default=use regular '%'.
  1362.  
  1363. RemName                # Name of function or macro for VAX Pascal
  1364.                 # REM where numerator or denominator may be
  1365.                 # negative.  Use '*' if macro; default=use MOD.
  1366.  
  1367. AbsName           labs          # Name of function for computing ABS of a
  1368.                                 # "long" value.  Precede with '*' if a
  1369.                                 # macro.  Default=by hand, or "labs" in AnsiC.
  1370.  
  1371. OddName                         # Name of a macro for computing ODD of an
  1372.                                 # integer.  Default=x&1.
  1373.  
  1374. EvenName                        # Name of a macro for computing NOT ODD of
  1375.                                 # an integer.  Default=!odd(x).
  1376.  
  1377. SwapName          _swap         # Name of Turbo-like swap() function.
  1378.  
  1379. StrCpyLeft                      # 1 or default=strcpy(s1,s2) works even if
  1380.                                 # s1 and s2 overlap, provided s1 <= s2.
  1381.                                 # 0=strcpy(s1,s2) does not allow overlap.
  1382.  
  1383. StrCICmpName      strcicmp      # Name of a strcicmp-like function; no default
  1384. StrSubName        strsub        # Name of a strsub-like function; no default
  1385. StrPosName        strpos2       # Name of a strpos2-like function; no default
  1386. StrDeleteName     strdelete     # Name of a strdelete-like function; no default
  1387. StrInsertName     strinsert     # Name of a strinsert-like function; no default
  1388. StrMoveName      strmove    # Name of a strmove-like function; no default
  1389. StrLTrimName      strltrim      # Name of a strltrim-like function; no default
  1390. StrRTrimName      strrtrim      # Name of a strrtrim-like function; no default
  1391. StrRptName        strrpt        # Name of a strrpt-like function; no default
  1392. StrPadName        strpad        # Name of a pad-like function; no default
  1393.  
  1394. MallocName        Malloc        # Name of a malloc-like function; default=malloc
  1395. FreeName          Free          # Name of a dispose-like function; default=free
  1396. FreeRvalueName    FreeR         # Name of a free-like function; default=free
  1397.  
  1398. RandRealName      _randreal     # Name of a Turbo "random" function; no default
  1399. RandIntName       _randint      # Name of a Turbo "random()" function; no def
  1400. RandomizeName     _randomize    # Name of a Turbo "randomize" procedure
  1401.  
  1402. SkipSpaceName     _skipspaces   # Name of a Turbo seekeof/seekeoln skipper
  1403.  
  1404. ReadlnName                      # Name of function or macro to skip past eoln.
  1405.                                 # Special names: fgets=use fgets with dummy var
  1406.                                 #                scanf=use scanf/fscanf
  1407.                                 # Default=use whichever method works out best
  1408.  
  1409. FreopenName                     # Name of function or macro that acts like
  1410.                                 # freopen(n,m,f), but if f==NULL acts like
  1411.                                 # fopen(n,m).  Default=do it by hand.
  1412.                                 # "fopen"=assume not reopening files.
  1413.                                 # "fclose"=fclose first, then fopen.
  1414.  
  1415. EofName           P_eof         # Name of "feof" with Pascal semantics.
  1416. EolnName          P_eoln        # Name of "eoln" function.
  1417. FilePosName       ftell         # Name of "filepos" function.
  1418. MaxPosName        P_maxpos      # Name of "maxpos" function.
  1419.  
  1420. SetUnionName      P_setunion    # Name of a set "+" function; no default
  1421. SetIntName        P_setint      # Name of a set "*" function; no default
  1422. SetDiffName       P_setdiff     # Name of a set "-" function; no default
  1423. SetXorName        P_setxor      # Name of a set "/" function; no default
  1424. SetInName         P_inset       # Name of a set "IN" function; no default
  1425. SetAddName        P_addset      # Name of a set "a:=a+[x]" function; no default
  1426. SetAddRangeName   P_addsetr     # Name of a set "a:=a+[x..y]" function; no def
  1427. SetRemName        P_remset      # Name of a set "a:=a-[x]" function; no default
  1428. SetEqualName      P_setequal    # Name of a set "=" function; no default
  1429. SubSetName        P_subset      # Name of a set "<=" function; no default
  1430. SetCopyName       P_setcpy      # Name of a set ":=" function; no default
  1431. SetExpandName     P_expset      # Name of small-set-to-set expander; no default
  1432. SetPackName       P_packset     # Name of set-to-small-set packer; no default
  1433.  
  1434. SignExtendName    SEXT          # Name of macro to sign-extend a number.
  1435.  
  1436. GetBitsName       *P_getbits_%s # Name of family of array-unpacking functions.
  1437.                                 # Precede name with '*' if a macro.  %s will
  1438.                                 # expand to S (for signed) or U (for unsigned),
  1439.                                 # followed by B (big array) or S (small array).
  1440.  
  1441. PutBitsName       *P_putbits_%s # Name of family of functions which 'OR' a
  1442.                                 # value into an element of a packed array.
  1443.                                 # %s expands to S or U, followed by B or S.
  1444.                                 # Use '*' if macro.  Default=use StoreBits.
  1445.  
  1446. ClrBitsName       *P_clrbits_%s # Name of family of functions which zero an
  1447.                                 # element of a packed array.  %s expands
  1448.                                 # to B or S only.  Use '*' if macro.
  1449.                                 # Default=use StoreBits.
  1450.  
  1451. StoreBitsName                   # Name of a family of functions or macros
  1452.                                 # which act just like PutBits, but overwrite
  1453.                                 # the array element rather than OR'ing.
  1454.                                 # Default=use ClrBits followed by PutBits.
  1455.                                 # At least StoreBits or both PutBits and
  1456.                                 # ClrBits must be defined.
  1457.  
  1458. DeclBufName        FILEBUF      # Name of a macro for declaring the file
  1459.                 # buffer for a file using GET and PUT.
  1460.  
  1461. DeclBufNCName                   # Name of a DeclBufName-like macro with two
  1462.                                 # arguments (no storage class), in case your
  1463.                 # compiler can't handle null macro arguments.
  1464.  
  1465. BufferedFile            # Names of file variables that use GET/PUT/^
  1466. BufferedFile            # notation instead of READ/WRITE notation.
  1467. BufferedFile            # Mostly useful for globals; locals are
  1468. BufferedFile            # detected automatically.  May be a var name,
  1469. BufferedFile            # field name, proc.var, type.field, or
  1470. BufferedFile            # "1"=use buffers for all files.
  1471.  
  1472. UnBufferedFile            # Names of files that will not be buffered,
  1473. UnBufferedFile            # even if they would otherwise be.  Syntax
  1474. UnBufferedFile            # same as for BufferedFile.
  1475.  
  1476. ResetBufName       RESETBUF     # Name of a macro for setting up a file
  1477.                 # buffer in "read" mode.  (For RESET.)
  1478.  
  1479. SetupBufName       SETUPBUF    # Name of a macro for setting up a file
  1480.                 # buffer in read/write mode.  (For OPEN, SEEK.)
  1481.  
  1482. GetFBufName        GETFBUF      # Name of a macro for accessing a file
  1483.                                 # buffer using "file^" notation.
  1484.  
  1485. GetName            GET          # Name of a macro for advancing
  1486.                                 # to the next element of an input file.
  1487.  
  1488. PutFBufName        PUTFBUF      # Name of a macro for storing an element
  1489.                                 # of a file using "file^" notation.
  1490.  
  1491. PutName            PUT          # Name of a macro for advancing
  1492.                                 # to the next element of an output file.
  1493.  
  1494. CharGetFBufName    P_peek       # A special GetFBuf for text and files of char.
  1495.  
  1496. CharGetName        getc         # A special Get for text and files of char.
  1497.  
  1498. CharPutFBufName    CPUTFBUF     # A special PutFBuf for text and files of char.
  1499.  
  1500. CharPutName        CPUT         # A special Put for text and files of char.
  1501.  
  1502. ArrayGetFBufName   AGETFBUF    # A special GetFBuf for files of arrays.
  1503.  
  1504. ArrayGetName            # A special Get for files of arrays.
  1505.  
  1506. ArrayPutFBufName   APUTFBUF    # A special PutFBuf for files of arrays.
  1507.  
  1508. ArrayPutName            # A special Put for files of arrays.
  1509.  
  1510.  
  1511.  
  1512. # CHECKING
  1513.  
  1514. CaseCheck                       # 1=check CASE statements without OTHERWISE
  1515.                                 # 0 or default=skip CASE stmt if out of range
  1516.                                 # 2=according to $range$ directives
  1517.  
  1518. ArrayCheck                      # 1=check array bounds
  1519.                                 # 0 or default=do not check array bounds
  1520.                                 # 2=according to $range$ directives
  1521.                                 #   (not yet implemented)
  1522.  
  1523. NilCheck                        # check pointer dereferences (0, 1, or 2)
  1524.  
  1525. RangeCheck                      # enable other range checking (0, 1, or 2):
  1526.                                 #   string indexing, ...?
  1527.                                 #   (not yet implemented)
  1528.  
  1529. MallocCheck                     # 1=check if malloc returns NULL
  1530.                                 # 0 or default=assume malloc never returns NULL
  1531.                                 # (often used with MallocName; see above)
  1532.  
  1533. CheckFileOpen                   # 1 or default=check for errors during open,
  1534.                                 # 0=assume file opens successfully
  1535.                 # 2=check only when $iocheck off$ or {$I-}
  1536.  
  1537. CheckFileIsOpen                 # 1=check for "file not open" error,
  1538.                                 # 0 or default=eof, etc., assume file is open
  1539.                 # 2=check only when $iocheck off$ or {$I-}
  1540.  
  1541. CheckFileWrite                  # 1=check for errors during write
  1542.                                 # 0=ignore write errors
  1543.                 # 2 or default=only when $iocheck off$ or {$I-}
  1544.  
  1545. CheckReadFormat                 # 1=check for "bad format" errors during read
  1546.                                 # 0=ignore read format errors
  1547.                 # 2 or default=only when $iocheck off$ or {$I-}
  1548.  
  1549. CheckFileEOF                    # 1=check for "past EOF" errors reading files
  1550.                                 # 0=ignore file EOF errors
  1551.                 # 2 or default=only when $iocheck off$ or {$I-}
  1552.  
  1553. CheckStdinEOF                   # 1=check for "past EOF" errors reading stdin
  1554.                                 # 0=ignore stdin EOF errors
  1555.                 # 2 or default=only when $iocheck off$ or {$I-}
  1556.  
  1557. CheckFileSeek                   # 1=check for errors during seek
  1558.                                 # 0=ignore seek errors
  1559.                 # 2 or default=only when $iocheck off$ or {$I-}
  1560.  
  1561.  
  1562.  
  1563.  
  1564. Include %H/loc.p2crc        # Include any local modifications to this file.
  1565.  
  1566.  
  1567.  
  1568. # End of p2crc
  1569.