1 01/14/87  pascal, pas
  2 
  3 Syntax as a command:  pas path {-control_args}
  4 
  5 
  6 Function: invokes the Pascal compiler, which compiles a source program
  7 written in Pascal and produces a Multics executable object segment.
  8 
  9 
 10 Arguments:
 11 path
 12    is the pathname of the source segment.  The suffix .pascal is
 13    assumed.
 14 
 15 
 16 Control arguments:
 17 -add_exportable_names, -aen
 18    adds names of exported variables and procedures to the object
 19    segment.
 20 -brief_map, -bfm
 21    produces a compilation listing containing source, error messages,
 22    and a statement map.
 23 -brief_table, -bftb
 24    generates a partial symbol table consisting of only a statement
 25    table that gives the correspondence between source line numbers and
 26    object locations for use by symbolic debuggers.  The table appears
 27    in the symbol section of the object segment.  This control argument
 28    does not significantly increase the size of the object segment.
 29 -compilation_warnings, -cw
 30    prints compilation warnings for minor errors.  (Default)
 31 -conditional_execution VAR_NAME true/false, -cond VAR_NAME true/false
 32    forces the value of the conditional compilation variable VAR_NAME to
 33    either true or false.  It overrides any assignments of VAR_NAME in
 34    the text of the program.
 35 -debug, -db
 36    generates code to check for references outside of array bounds,
 37    invalid assignments, values that are out of range, and a variety of
 38    other potential errors.  Also initializes program storage to blanks
 39    (\040) so that a reference through an uninitialized pointer causes a
 40    fault_tag_1 condition.  (Default)
 41 -english
 42    assumes that Pascal reserved words are in English.  (Default)
 43 -error_messages, -em
 44    prints error messages on user_output and includes them in the
 45    listing segment.  (Default) cbn A
 46 -extended_character_code, -ecc
 47    extends internal code allowed for characters to 255 (decimal).
 48 -french
 49    accepts Pascal reserved words in French.  Type "help
 50    pascal_french_keywords.gi" for the correspondence between French and
 51    English reserved words.
 52 -full_extensions, -full
 53    uses all nonstandard extensions defined for Multics Pascal.
 54    (Default)
 55 -interactive, -int
 56    allows text files to operate in interactive mode.  On reset or
 57    readln, "get" of next character is deferred until the next reference
 58    to the file or to one of the variables attached to the file, such as
 59    eof, eoln, and file^.  (Default)
 60 -io_warnings, -iow
 61    allows warnings to be printed by I/O procedures called by the
 62    compiled program.  (Default)
 63 -list
 64    produces a compilation listing including source, error messages, map
 65    and cross-reference of symbols, statement map, and generated code in
 66    symbolic ALM.
 67 -long_profile, -lpf
 68    generates additional code that records the virtual CPU time and
 69    number of page faults for each source statement.  It is incompatible
 70    with -pf.  The profile command can handle both regular and long
 71    profiles.  This feature adds considerable CPU overhead to heavily
 72    executed code.  The extra CPU time is subtracted out so that it does
 73    not appear in the report printed by profile.
 74 -map
 75    produces a compilation listing including source, error messages, map
 76    and cross-reference of symbols, and statement map.
 77 -no_compilation_warnings, -ncw
 78    does not print compilation warnings.
 79 -no_debug
 80    does not generate code to test for references outside of array
 81    bounds, values out of range, or other errors, and does not
 82    initialize storage to blanks.
 83 -no_error_messages, -nem
 84    does not print error messages on user_output.  They are still
 85    included in the listing segment.
 86 -no_extended_character_code, -necc
 87    allows internal code range of 0..127 for characters, as required by
 88    the standard.  (Default)
 89 -no_interactive, -nint
 90    does not allow text files to operate in interactive mode.
 91 -no_io_warnings, -niow
 92    does not print I/O warnings if a nonfatal error occurs in I/O
 93    procedures called by this program.
 94 -no_list
 95    does not produce a compilation listing.  (Default)
 96 -no_long_profile, -nlpf
 97    does not generate additional code to record the virtual CPU time and
 98    number of page faults for each source segment.  (Default)
 99 -no_private_storage, -nps
100    dynamically allocates exported variables in external static.
101    (Default)
102 -no_profile, -npf
103    does not generate code to meter the execution of source statements.
104    (Default)
105 -nonrelocatable, -nrlc
106    generates an object segment that cannot be bound, thus saving from
107    10 to 20 percent of compilation time.
108 -no_table, -ntb
109    does not generate a symbol table in the object segment.
110 -page_length N, -pl N
111    specifies a page length for the listing segment.  (Default: 59
112    lines)
113 -private_storage, -ps
114    allocates all exported variables in a segment in the process
115    directory named progname.defs, where progname is the entryname of
116    the path argument, without the .pascal suffix.  This segment is
117    created if it does not exist.
118 -profile, -pf
119    generates additional code to meter the execution of individual
120    statements.  Each statement in the object program contains an
121    additional instruction to increment an internal counter associated
122    with that statement.  After a program has been executed, you can use
123    the profile command to print the execution counts.
124 -reference_table -rftb
125    generates a full symbol table (see -table) and adds for each
126    variable a table of statements where this variable is referenced or
127    modified.  This feature, used by pascal_cross_reference, is
128    experimental.
129 -relocatable, -rlc
130    generates an object segment that can be bound.  (Default)
131 -sol_extensions, -sol
132    allows only French SOL extensions to be used (type "help
133    pascal_extensions.gi" for their list).
134 -standard
135    allows only standard (ISO) Pascal to be used.  (Default: -full)
136 -table, -tb
137    generates a full symbol table for use by symbolic debuggers.  The
138    symbol table is part of the symbol section of the object segment and
139    consists of two parts: a statement table that gives the
140    correspondence between source line numbers and object locations, and
141    an identifier table containing information about every identifier
142    actually referenced by the source program.  This control argument
143    usually lengthens the object segment significantly.  (Default)
144 
145 
146 Notes: If compilation errors are encountered, error messages are
147 printed on user_output.
148 
149 If you supply incompatible control arguments, the rightmost one is
150 used.
151 
152 Multics Pascal is case insensitive.  All identifier names are mapped to
153 lowercase in the program and its symbol table.  As a result, the Pascal
154 program header
155    program: Foo;
156 produces a segment entry point with the name "foo."
157 
158 For information on Pascal see the Multics Pascal User's Guide (GB62).
159 
160 
161 Notes on listing: The Pascal compilation listing contains the
162 following sections in this order:
163    1. Header: gives the full pathname of the source segment, the
164       Multics site indentification, the date and time of compilation,
165       and the compiler indentification.
166    2. Source: with lines numbered sequentially.  In include files,
167       file number precedes the line number.
168    3. Any error messages.
169    4. Storage requirements for the object segment.
170    5. List of source files used.
171    6. Complete map and cross-reference for symbols declared and used,
172       symbols declared and never used, and symbols declared by default.
173    7. Displacement for fields given in octal (bytes), locations for
174       variables given in octal (words), and sizes given in octal
175       (bytes).
176 
177    8. "DEF:" followed by the number of the line where the symbol is
178       defined.  "REF:" followed by the number of the line(s) where the
179       symbol is referenced.  An asterisk is printed for each reference
180       where the variable or field is set or passed by reference ("var"
181       parameter) to a subroutine.
182 
183    9. Complete map and cross-reference of labels.  "DEF:" is followed
184       by the number of the line where the label is defined.  "DCL:" is
185       followed by the number of the line where the label is declared.
186       "REF:" is followed by the number of the lines where the label is
187       referenced in a GOTO statement.  An asterisk is printed where the
188       GOTO statement exits the current procedure.
189 
190    10.
191       Statement map:  gives the octal location of the first instruction
192       of each statement of the source program.