The file "p2c-1.20.tar.Z" contains the sources to "p2c", the Pascal to C translator, version 1.20. To install p2c: 1. Create a directory for p2c 2. "cd" to that directory 3. Place p2c-1.20.tar.Z in the directory (be sure to ftp it in binary mode) 4. Type "uncompress p2c-1.20.tar.Z" 5. Type "tar xvf p2c-1.20.tar" This will leave you with a README file with full installation instructions. If you are in a hurry, just type "make test" to compile p2c and run it on some example programs. The README file shows how to arrange to install p2c in a public directory. The directory "p2c.patches" contains context diffs to build each new version from the previous one (since version 1.06). The SHAR version of the p2c distribution is the same as this except that certain reproducible files (p2c.hdrs, p2c.proto, TAGS, p2c.cat, and the examples/c directory) have been omitted in the SHAR version to save space. "p2c" Copyright 1989, 1990, 1991 Free Software Foundation, Inc. Written and maintained by: Dave Gillespie 256-80 Caltech Pasadena CA 91125 daveg@csvax.cs.caltech.edu, cit-vax!daveg Summary of changes to "p2c" ------- -- ------- -- --- Version 1.20: * Changed VAX "type t = [byte] 0..255" not to say it can't interpret size. * Changed to use a temp var when passing a constant to a VAR parameter. * Changed to avoid initializing char arrays with string literals in pre-ANSI. * Changed to make arithmetic involving character literals more readable. * Changed to accept empty parentheses in function declarations (for Modula 2). * Made more changes for VAX and MSDOS compatibility (thanks to William Bader). * Added support for PACK and UNPACK procedures (finally!). * EMBED lines beginning with `#' are no longer indented. * EatComments no longer eats EMBED comments. * Reworded "File paramter needs associated buffers" to suggest StructFiles. * Added ability to eliminate "if false" and "if true" if ElimDeadCode = 2. * Bug fix in funcs.c:handleread/write_text: Treated case where fex is a PAC. Symptom: VAX Pascal readv/writev failed when "string" was an array of chars. * Bug fix in expr.c:makeexpr_charcast: Watch for mp->val.type == NULL case. Symptom: Reference to NULL error when referring to some CONST names. (Also fixed this bug in various other places.) * Bug fix in expr.c:eval_expr_either: Check for TK_INTEGER, not tp_integer. Symptom: Constant exprs involving +, *, etc. could not always be evaluated. * Bug fix in pexpr.c:p_factor:MK_SPECIAL case: Added "target &&" check. Symptom: Reference to NULL in VAX Pascal "open(..., ..., new)". * Bug fix in p2clib.c:my_memcpy etc.: Use n-- > 0 instead of --n >= 0. Symptom: Didn't work when size_t is an unsigned integer type. * Bug fix in p2clib.c:ipow: Changed 1<< to 1L<< (also in set functions). Symptom: Didn't work on 16-bit target machines. * Bug fix in funcs.c:handleread_text: Write %g for float, %lg for double. Symptom: Bad code for reading a "single" or "shortreal" variable. * Added to sys.p2crc/trans.h the following configuration parameter: InitPACStrings String literal in initializer can be size of array. Version 1.19: * P2c's copyright has been assigned to the Free Software Foundation. * Improved p2c to preserve Pascal type names in most cases. * Introduced "PreserveTypes" (PreserveTypes=0 makes p2c work like v1.18). * Also added "PreservePointers" (default off) and "PreserveStrings" (on). * Changed p2c.h to recognize funny ANSI-like header files in HP-UX 7.0. * Changed to handle taking the address of an argument of a promotable type. * Changed parser to accept "a * -b" without syntax errors. * Fixed a few unreachable statement warnings in the p2c sources. * Changed exit(0) to exit(EXIT_SUCCESS) in main program. * Added support for VAX C and MSDOS to p2c.h. * Bug fix in parse.c:fixblock: Call filebasetype in similartypes arg. Symptom: Pascal GET procedure sometimes crashed p2c when StructFiles=1. * Bug fix in pexpr.c:p_funcarglist: Handle stdin/stdout when StructFiles=1. Symptom: myproc(output) generated "type mismatch" warning and bad code. * Bug fix in expr.c:makeexpr_rel: Use ISCONST to guard checkconst call. Symptom: "J <= A-I-1+C" where "const C=1" put p2c into an infinite loop. * Bug fix in decl.c:setupmeaning: Consider enum consts to be global names. Symptom: Local enum consts can conflict with similar global names. * Bug fix in lex.c:push_input/pop_input: Save/restore curtokbuf/curtokcase. Symptom: Value lost when main calls defmacro after setup_lex, before parser. * Bug fix in parse.c:out_function: Don't recursively output "exported" funcs. Symptom: This occurs when an "external" decl occurs local to a function. * Bug fix in p2c.h:AGETFBUF: Removed extra "&". Symptom: Taking address of an array generated a warning on some compilers. * Bug fix in p2c.h:LONG_MAX, etc.: Fixed to cast back to signed types. Symptom: LONG_MAX had type unsigned long; "(double)(-LONG_MAX)" failed. * Bug fix in p2clib.c:P_trimname: Added trailing null to output string. Symptom: Function wouldn't always work after first call. * Added to sys.p2crc/trans.h the following configuration parameter: FixPromotedArgs Fix "&" of arguments which may be promoted. PreserveTypes Use typedef to preserve most Pascal type names. PreservePointers Use typedef specifically for pointer types. PreserveStrings Use typedef specifically for string types. SpaceCommas Use spaces after commas (default on). SpaceFuncs Use spaces after function names (default off). NoBanner Suppress "From input file..." comment at top of file. Version 1.18: * Improved indentation strategy for EMBED comments. * Allowed one-line EMBED comments: {EMBED foo();} * Made {SKIP} ... {NOSKIP} comments nestable. ({NOSKIP ... } isn't nestable.) * Changed to emit comments in export sections of modules in correct order. * Rewrote decl.c:p_arraydecl slightly to avoid a gcc bug. * Bug fix in expr.c:makeexpr_sizeof: Compute size by hand if SkipIndices used. Symptom: Size was "sizeof(arr)" even if it should have omitted skipped part. * Bug fix in trans.h: Added #undef _toupper/_tolower at end. Symptom: Failed to compile on Apollos. * Bug fix in parse.c:fixblock: Added "sp->stm1 &&" check for WHILE statements. Symptom: "while cond do ;" caused a reference-to-NULL error. * Bug fix in decl.c:makefakestruct: Suppressed fakestruct when importing. Symptom: Importing a module generates two declarations for _REC_A. * Bug fix in Makefile: Added rules to make home dirs if not found. Version 1.17: * Introduced "StructFile" stuff to help with more intensive file operations. * Simplified "N + 0.0" to "(double)N" instead of "N" when appropriate. * Fixed typo in sys.p2crc: "LogBreakPenalty" => "RelBreakPenalty". * Changed to avoid generating bit fields as members of a union. * Now "stringarray[i] := expr" will sprintf expr into lhs with no temp var. * Handled assignment of small packed arrays of chars into big ones. * Added to sys.p2crc/trans.h the following configuration parameters: CharConsts Assume "const c='x'" is a char, not string constant. SelfIncludeName Format to use when a module includes its own .h file. StructFiles Translate files as special structs rather than FILE *'s. StructFile A file variable to be treated as if StructFiles=1. Version 1.16: * Reduced wasteful proliferation of identical-looking temporary variables. * Improved heuristic for determining allocation size for set constructors. * Corrected handling for EOF applied to buffered binary files. * Bug fix in decl.c: Handled a rare case involving forward-declared pointers. * Bug fix in p2clib.c:P_remset: Forgot to fix s[0] if highest bit was cleared. * Bug fix in p2clib.c:P_setxor: Forgot to fix s[0] if highest bits cancelled. * Added to sys.p2crc/trans.h the following configuration parameters: EofBufName Macro to use for EOF of a bufffered file. FilePosBufName Macro to use for FILEPOS or POSITION of a buffered file. Version 1.15: * Taught the line breaker to handle logical/relational operators specially. * Improved code generation for large set constructors. * Changed makeexpr_assign to handle EK_LITCAST's on the lefthand side. * Changed makeexpr_addr to handle casts. * Changed FieldMacros so that the substituted base expr retains its type. * Bug fix in p2c.h: Rewrote P_getbits_US and other small-packed-array macros. Symptom: On many architectures, these macros didn't work at all! NOTE: These now pack small arrays in the opposite direction (LSB first). * Bug fix in funcs.c:handleread_text: changed strread of string to use %255s. Symptom: Previous translation of %255c did not append a null character. * Bug fix in p2clib.c:strrtrim: Added test for empty string input. Symptom: Incorrect behavior on strrtrim(""). * Bug fix in p2clib.c:P_addsetr: Changed to signed comparison of v1 and v2. Symptom: Adding [0..-1] to a set failed. * Bug fix in p2clib.c:P_expset: Don't write to d[1] if set is empty. Symptom: Sets allocated to store 0 elements didn't work properly. * Added to sys.p2crc/trans.h the following configuration parameters: LogBreakPenalty Like OpBreakPenalty, but for && and ||. LogBreakExtraPenalty Like OpBreakExtraPenalty, but for && and ||. RelBreakPenalty Like OpBreakPenalty, but for <, ==, etc. RelBreakExtraPenalty Like OpBreakExtraPenalty, but for <, ==, etc. Version 1.14: * Added partial support for Oregon Software Pascal's delete(f) procedure. * Changed file_iofunc to be a little more robust in case of errors. * Bug fix in p2clib.c:strrtrim: Changed to "while (*++s2) ;" Symptom: This function didn't do anything! * Bug fix in decl.c:p_type: Declared enums which were base types of sets. Symptom: In "type s = set of (a,b)", the enum was never declared. * Bug fix in decl.c:issafename: Avoided #defining existing field names. Symptom: "type r=record a:integer; end; const a=10;" produced bad code. * Bug fix in expr.c:makeexpr_charcast: Changed to recognize CONST names. Symptom: "const x='x'; var s : set of char; s := [x];" generated bad code. Version 1.13: * Changed to interpret cpp-style "#include" as another include-file syntax. * Improved handling of WRITE field widths for packed arrays of char. * Improved handling of built-in identifiers in PascalCaseSens mode. * Bug fix in parse.c:p_function: used strcicmp to check for "FORWARD" keyword. Symptom: In PascalCaseSens mode, forward declarations had to be capitalized. Version 1.12: * Added support for Sun/Berkeley Pascal. * Beefed up PascalCaseSens handling. * Added some extra parentheses to the P_clrbits macros. (!) * Added to sys.p2crc/trans.h the following configuration parameters: CharFileText Treat "file of char" as identical to "text". UseStrncmp Use strncmp, not memcmp, to compare packed arrays of char. MessageStderr Built-in "message(...)" should use stderr, not stdout. LiteralFiles Files opened without names should use file var's name. LiteralFile Specific files which should use LiteralFiles=1 mode. Version 1.11: * Improved the "usage" message slightly. * Introduced "CollectNest=0" to help with include files of sub-procedures. * Changed to ignore "OVERLAY" keyword (a Turbo Pascal anachronism). * Introduced "BROKEN_OR" option in trans.h in case of compiler bugs. * Changed src/Makefile to check for presence of nroff before changing p2c.cat. * Taught strmax_func to understand string consts as well as string literals. * Changed system.imp to use __module to avoid ModuleNotation dependencies. * Prevented variables in varstructs from being declared "const". * Changed "checkvarchanged" in decl.c to observe constqual, volatilequal. * Introduced "expr_has_address" (in expr.c) as a variant on "expr_is_lvalue". * Bug fix in pexpr.c:p_funcarglist: for strings as conformant arrays, low=1. Symptom: Strings were passed as array [0..N] instead of [1..N]. * Bug fix in decl.c:setupmeaning: added missing "break;" for MK_VARIANT case. Symptom: Special formatting for enumerated type names was broken. * Bug fix in p2c.h:P_getcmdline: removed "Const" keywords. Symptom: Prototype was inconsistent with definition in p2clib.c. * Bug fix in decl.c:addfield: changed to "tname && tname->name ? ...". Symptom: Reference to NULL formatting field names for unnamed records. * Bug fix in expr.c:fixblock: fixed getfbuf + get => fread to check var type. Symptom: "f:file of byte; i:integer; i:=f^; get(f);" used fread incorrectly. * Bug fix in lex.c:turbo_directive: checked return value of handle_include. Symptom: Turbo-style include directives messed up if file was not found. * Added to sys.p2crc/trans.h the following configuration parameter: CollectNest Kludge to make sub-procs be emitted as they are parsed. Version 1.10: * Bug fix in comment.c:addnote: reference to "quiet" changed to "quietmode". Symptom: Failed to compile! (Sorry, about that!) Version 1.09: * Made a few improvements to "-R" (regression-testing) mode. * Bug fix in decl.c:addfield: rewrote part of the issafename loop. Symptom: Various problems choosing names for fields of structs. * Bug fix in out.c:getcurtime: modified non-HASTIME case to use starttime. Symptom: Not safe to multiply raw time() result by 1000. Version 1.08: * Changed "makeproto" commands in src/Makefile to "./makeproto". * Extended "ConstFormat" mechanism for all other kinds of identifiers. * Added a special format for Pascal include-file names. * Added "UseConsts=2" to force the use of "Const" instead of "const". * Added FileNameFilter option. * Added "-E" switch to halt after some number of errors. * Added DeclBufNCName for compilers which can't handle null macro arguments. * Handled the case of multiple parameters using a common conformant schema. * Incorporated several Oregon Pascal standard procedures from William Bader. * Fixed typo in documentation of "BraceLine" in sys.p2crc. * Bug fix: in funcs.c:handleread_text: add copyexpr to P_read[ln]paoc calls. Symptom: Dangling pointer problems generating calls to P_read[ln]paoc. * Bug fix: in pexpr.c:dots_n_hats:TOK_LBR case: changed to use p_ord_expr(). Symptom: Arrays indexed by literal characters used "A", not 'A'. * Bug fix: in pexpr.c:p_setfactor: added two makeexpr_longcast calls. Symptom: Generated code used "1 << x" instead of "1L << x" in a few places. * Bug fix: in decl.c:setup_decl: defined SWORD equivalent to tp_sshort. Symptom: Signed words were translated as longs under some circumstances. * Bug fix: in parse.c:fixblock: "if" rearrangements now clear if-else flags. Symptom: Else-ifs were formed in inappropriate places. * Bug fix: in parse.c:fixblock: "continue" added after final eatstmt call. Symptom: Reference to an already-freed pointer. * Added to sys.p2crc/trans.h the following configuration parameters: ModuleFormat Analogous to ConstFormat but for module names. FunctionFormat Analogous to ConstFormat but for function names. VarFormat Analogous to ConstFormat but for variable names. FieldFormat Analogous to ConstFormat but for record field names. TypeFormat Analogous to ConstFormat but for type names. EnumFormat Analogous to ConstFormat, for enumeration constant names. IncludeFileName Format for include file names. FileNameFilter Function to call to "clean" file names for use by fopen. MaxErrors Number of errors/warnings/notes printed before aborting. DeclBufNCName Version of DeclBufName with no "storage class" arg. Version 1.07: * Added "Integer16=2" mode to translate Pascal "integer" as C "int". * Added a warning when "%" is used for MOD of arguments that may be negative. * Made formatted output of booleans and reals closer to Pascal standards. * Now print warning when trying to use associated buffers of file params. * Added support for buffered "file of array" types. * Prevented warning message when main program ends with ";" instead of ".". * Changed to ignore RESET and REWRITE on standard file OUTPUT. * Bug fix: in decl.c:p_constdecl: Added mp->isactive=0 / ... / mp->isactive=1. Symptom: "const ten=10; procedure p; const ten=ten;" failed. * Bug fix: in pexpr.c:p_factor:MK_SPECIAL case: Checked mp->isfunction. Symptom: Passing a built-in like PAGE as a procedure parameter failed. * Bug fix: in pexpr.c:p_setfactor: Moved "val.i|=1<val.i" to ELSE. Symptom: The set constant [3..0] generated 0x8, not 0. * Bug fix: in p2clib.c:P_addsetr: Added "v1 > v2" test. Symptom: The set constructor [i..j] did not generate [] when i > j. * Bug fix: in p2clib.c:P_peek: Return ' ' if character was \n. Symptom: Line breaks were sometimes not converted to space on input. * Bug fix: in p2c.h: Added "#define CPUTFBUF(f,v) (PUTFBUF(f,char,v))". Symptom: Calls to this undefined routine were produced. * Bug fix: in parse.c:p_stmt:TOK_FOR clause: Added checks for limit=MAXINT. Symptom: "for i := j to maxint" generated an infinite loop. * Bug fix: in decl.c:outfieldlist: Added checking for empty unions. Symptom: "record case integer of 1: () end" produced an empty C union. * Added to sys.p2crc/trans.h the following configuration parameters: ArrayGetName Analogous to GetName for "file of array" types. ArrayGetFBufName Analogous to GetFBufName for "file of array" types. ArrayPutName Analogous to PutName for "file of array" types. ArrayPutFBufName Analogous to PutFBufName for "file of array" types. Version 1.06: * Changed Makefile to look for ranlib in /bin, too. * Added ability to call dispose on a non-lvalue: clearing to NIL is omitted. * Added ForEvalOrder option: "in for x := y to z, y is evaluated before z". * Added more entries in the AvoidName and AvoidGlobalName lists. * Added checks for "__unix" cpp symbol synonymous with "unix". * Improved heuristic in arraysize() which returns NULL for "huge" arrays. * Added support for "rewrite(f)" creating an unnamed temporary file. * Added definition of "tmpfile" in p2c.h for systems that don't have it. * Bug fix in parse.c:usebraces: Added "sp != NULL &&" before findcomment. Symptom: Segmentation fault. * Bug fix in pexpr.c:dots_n_hats: Added "tp->basetype->fbase &&". Symptom: Segmentation fault. * Bug fix in parse.c:p_stmt:TOK_CASE clause: Changed to use p_ord_expr(). Symptom: case 'A' of ... translated to switch("A"), not switch('A'). * Bug fix in parse.c:p_stmt:TOK_FOR clause: Added tp_boolean to "small" types Symptom: for b := true downto false had unsigned-wraparound problems. * Bug fix in decl.c:outbasetype:TK_ENUM clause: Added test for mp == NULL. Symptom: Segmentation fault if null enum list. * Bug fix in expr.c:makeexpr_plus: a->nargs < 1: used gentle_cast on zero. Symptom: f(a-a) => "f()"; argument was converted to real const w/null value. * Bug fix in expr.c:makeexpr_plus: checked a->args[j] for TK_REAL/STRING, too. Symptom: 1+2.0 was incorrectly constant-folded, though 1.0+2 was correct. * Bug fix in p2c.h: removed trailing semicolon from FILEBUF definition. * Bug fix in decl.c:p_type: added a call to makefakestruct for TOK_FILEs. Symptom: "var f:file of record ... end" (for buffered f) produced bad code. * Added to sys.p2crc/trans.h the following configuration parameters: ForEvalOrder Initial value in for loop must be evaluated before limit. FreeRvalueName Name of a function or macro to free a pointer in an rvalue. Version 1.05: * Added support for reading packed arrays of characters. * Made some changes for compatibility with Xenix. * Put in slightly better handling of the "#define BSD" stuff. * Changed trans.c to avoid declaring sbrk() itself. * Changed p2c.h to define _toupper(), _tolower() in a non-ASCII-dependent way. Version 1.04: * Added "-V" switch to generate a log file with some details of translation. * Added "-M" switch to control memory usage during translation. * Added "TEST_MALLOC" stuff to measure memory allocated but never freed. * Added {SIGNED} and {UNSIGNED} comments preceding type "char" and "integer". * Added HighCharBits-related optimizations for characters 128 and above. * Eliminated unnecessary casting of CHR's argument by making it MK_SPECIAL. * Recognized "ch+'A'-'a'" idiom and translated as "_toupper(ch)". * Added P2CRC environment variable. * Bug fix in parse.c:p_search: emptied curcomments at top of do loop. Symptom: leading comment in module header was copied over by import. * Bug fix in funcs.c:func_addr and elsewhere: fixed handling of procedure ptrs Symptom: "var pr:procedure; p := addr(pr);" wrote "_PROCEDURE pr; p = pr". * Bug fix in expr.c:makeexpr_assign: no longer copy _PROCEDUREs with memcpy. Symptom: memcpy was used to copy _PROCEDUREs even though assignable. * Bug fix in pexpr.c:p_factor: always allow makeexpr_hat after p_funccall Symptom: FuncMacros for string functions produced expression of wrong type * Bug fix in decl.c:p_conststring: added gettok() just before p_expr. Symptom: String constants with constructor notation didn't work. * Bug fix in decl.c:isfilevar and elsewhere: don't assume EK_DOT's val.i != 0. Symptom: Reference to NULL arises from "literal" dot expressions. * Bug fix in expr.c:value_name: check for value in range for "'%ld'" format. Symptom: Char literals containing negative or nonprinting chars were made. * Bug fix in expr.c:type_sizeof: prevent multiple recursion for TK_ENUM types. Symptom: Infinite recursion occurred when convert_size used on enum types. * Bug fix in expr.c:makeexpr_assign: avoid using memcpy for _PROCEDURE types. Symptom: Procedure vars with static links used memcpy even if CopyStructs>0. * Added to sys.p2crc/trans.h the following configuration parameters: HighCharBits Do high-char optimizations (safest if chars are 8 bits). PascalEnumSize Size in bits of an enumerated type in Pascal. Version 1.03: * Modified headers to compile under pure System V. * Added '::' operator in C expressions (e.g., FuncMacro definitions). * Added '##' comment delimiter to embedded configuration parameter comments. * In Turbo, RESET/REWRITE now open in read/write mode for binary files. * Added note/warning IDs and a mechanism for suppressing undesired notes. * Extended FuncMacros to apply to predefined and undeclared functions. * Added to sys.p2crc/trans.h the following configuration parameters: ReadWriteOpen Binary files always opened in read/write mode. EatNotes List of notes/warnings to be suppressed. Version 1.02: * Added support for HP Pascal with HP-UX 6.2 and 6.5: BADDRESS, WADDRESS, ADDTOPOINTER, BITSIZE, FCALL. * Now initializes file variables embedded in records or allocated by NEW. * Better error messages in skipcomma, skipcloseparen. * Extended convert_offset in funcs.c to handle more cases. * Extended distribute_plus in expr.c to handle negated arguments. * Line breaker's behavior in difficult/large cases is improved. * Bug fix in decl.c:setup_decl: changed '... modula2 ? "WORD" : "UWORD"' to '... modula2 ? "UWORD" : "WORD"' Symptom: Turbo did not recognize "WORD" built-in type any more. * Bug fix in funcs.c:func_random: removed incorrect "->args[0]" after "ex". Symptom: Bus error parsing "random(4)". * Bug fix in funcs.c: decl_builtins: "randomize" function declared. Symptom: Turbo Pascal "randomize" not recognized. * Bug fix in funcs.c: blockread & blockwrite: size and nitems args swapped. Symptom: Return value for blockread & blockwrite was wrong. * Bug fix in p2clib.c:P_inset: condition changed to "val < *s++ ..." Symptom: Certain elements appeared to be in the set even though too large. * Bug fix in funcs.c:handleopen: called makeexpr_stringify for file name. Symptom: Reset lost file name in dialects with only packed arrays of char. * Bug fix in decl.c:declaretype: added declaresubtypes function. Symptom: _REC_xxx records sometimes emitted before the things they used. * Bug fix in expr.c:makeexpr_lstring, etc: added null terminator for strings. Symptom: Occasional spurious treatment of string constants. * Bug fix in parse.c:replaceexprexpr: now even less strict about types. Symptom: If had to replace char variable ch, missed ord(ch) usage. * Bug fix in out.c:adddeltas/applydelta: changed "> 1000" to ">= 1000". Symptom: Absolute indention of 0 did not work properly. Version 1.01: * VAX Pascal support added. * UCSD Pascal support added. * MPW Pascal support added. * Partial Modula-2 support added. * Added -L command-line flag. * Support for non-local GOTO's added. * Improved code generation for certain set operations. * Special comment forms now recognized for (* *) as well as { }. * Added the "Synonym" feature. * Removed unnecessary type casts for ANYVAR parameters and FuncMacros. * Added comments in trans.h describing major p2c data structures. * Bug fix in parse.c:checkcommas: "if (sp->exp1)" added in SK_FOR case. Symptom: Bus error when initializer portion of FOR was null. * Bug fix in trans.c:main: setup_comment now called before setup_lex. Symptom: Initial comment in program disappeared. * Bug fix in pexpr.c:p_funccall: added func_reference function. Symptom: Static links were occasionally left out when they were needed. * Bug fix in funcs.c:decl_builtins: "pi" function declared. Symptom: Turbo Pascal "pi" not recognized since func_pi never called. * Bug fix in decl.c:outdeclarator and elsewhere: improved pointers to arrays. Symptom: An array-of-strings parameter was declared as "char **". * Bug fix in system.imp: Turbo Pascal's "getmem" was incorrectly declared. * Added to sys.p2crc/trans.h the following configuration parameters: Modula2 Use Modula-2 instead of Pascal syntax. ImplModules Modules use VAX notation rather than HP/UCSD notation. IgnoreNonAlpha Ignore non-alphanumeric characters in Pascal identifiers. StarArrays Control notation for array-valued parameters. InitialCalls List of functions to call at start of main program. SymbolFormat Format string for C identifiers derived from Pascal ones. ArrayMinName Name for lower-bound variables (Modula-2/VAX Pascal). ArrayMaxName Name for upper-bound variables (Modula-2/VAX Pascal). LabelVarName Name for jmp_buf variable associated with a stmt label. Synonym Declare a synonym for a Pascal keyword or identifier. AvoidName Added "Inline" to the list. StructFunction Added "P_remset" to the list. StrlapFunction Added "P_setxor" and "strpad" to the list. RemName Name of function or macro for VAX Pascal REM operator. StrPadName Name of function for VAX Pascal "pad" function. SetXorName Name of function for symmetrical set difference. SetRemName Name of function to remove an element from a set. Version 1.00: (Initial public release)