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 lines 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.