1 11/08/90 pl1
2
3 Syntax as a command: pl1 path -control_args
4
5
6 Function: invokes the PL/I compiler.
7
8
9 Arguments:
10 path is the pathname of a PL/I source program; the pl1 suffix need
11 not be given. The archive component pathname convention is allowed.
12
13
14 Control arguments:
15 -source, -sc
16 produces a source program listing.
17 -symbols, -sb
18 produces a source program listing followed by a list of all the
19 names used in the compilation.
20 -map
21 produces a source program listing followed by a list of all the
22 names used in the compilation, followed by a map of the object code
23 generated.
24 -list, -ls
25 produces a source program listing followed by a list of all the
26 names used in the compilation, followed by an assembly-like listing
27 of the compiled object program.
28
29
30 -single_symbol_list, -ssl
31 produces a source program listing followed by a list of all the
32 names used in the compilation. The names are listed in one,
33 alphabetized list. If this control argument is not given and
34 -symbols, -map or -list are specified, the names will be separated
35 into four lists, arranged by declaration type.
36 -no_list, -nls
37 don't produce a source program listing. Default
38
39
40 -optimize, -ot
41 invokes an extra compiler phase just before code generation to
42 perform certain optimizations. This control argument should not be
43 used while the program is being debugged.
44 -no_optimize, -not
45 don't invoke an extra compiler phase before code generation.
46 Default
47
48
49 -table, -tb
50 generates a full symbol table for use by the probe and debug
51 commands. This is the default unless -optimize is specified.
52 -brief_table, -bftb
53 generates a partial symbol table that consists of only the
54 information necessary to set breakpoints by source line number.
55 -no_table, -ntb
56 don't generate a runtime symbol table. This is the default if
57 -optimize is specified.
58
59
60 -prefix STR
61 if STR is not null, compiles the program as if it were preceded by
62 the condition prefix "STR:". STR is a list of one or more PL/I
63 condition names separated by commas and optional horizontal white
64 space. Since the program is compiled as if "STR:" was inserted
65 before the first line of the source segment, any condition names
66 given in condition prefixes in the source segment override
67 condition names for the same condition given in STR. If STR is
68 null, no additional condition prefix is used. The condition names
69 may specify enabled computational conditions or disabled
70 computational conditions.
71
72
73 The condition names for enabled computational conditions are:
74 conversion, conv, fixedoverflow, fofl, overflow, ofl, size,
75 stringrange, strg, stringsize, strz, subscriptrange, subrg,
76 underflow, ufl, zerodivide and zdiv. The condition names for
77 disabled computational conditions are: noconversion, noconv,
78 nofixedoverflow, nofofl, nooverflow, noofl, nosize, nostringrange,
79 nostrg, nostringsize, nostrz, nosubscriptrange, nosubrg,
80 nounderflow, noufl, nozerodivide and nozdiv. STR may not contain
81 condition names for an enabled computational condition and a
82 disabled computational condition that identify the same condition.
83 See the "Notes" section for what computational conditions are
84 enabled by default.
85
86
87 -no_prefix
88 turn off any condition prefixes that might have been previously set
89 by the use of the -prefix control argument.
90 -profile, -pf
91 generates additional code to count the number of times each source
92 statement is executed. See "Notes" section.
93 -long_profile, -lpf
94 generates additional code to record the virtual CPU time and number
95 of page faults taken by the execution of each source statement.
96 See "Notes" section.
97 -no_profile, -npf
98 don't generate code to meter the execution of source statements.
99 Default
100
101
102 -brief, -bf
103 omits text of error messages printed on the terminal. Only the
104 error number is indicated.
105 -long, -lg
106 prints text of error message on the terminal the first time the
107 message is issued. Default
108 -severityN, -svN
109 prints error messages whose severity is N or greater N is 1 2 3
110 or 4. Default is 1
111
112
113 -check, -ck
114 used for syntactic and semantic checking of a PL/I program; no
115 object segment is created.
116 -no_check, -nck
117 generate an object segment. Default
118 -check_ansi
119 generates warnings for each construct the compiler detects that is
120 allowed by Multics PL/I but not by the ANSI standard X3.53-1976.
121 -no_check_ansi
122 don't generate error messages for Multics dependent constructs.
123 Default
124
125
126 -separate_static, -ss
127 generates separate sections in the object section for internal
128 static variables and linkage information.
129 -no_separate_static, -nss
130 place internal static variables in the linkage section. Default
131
132
133 -debug, -db
134 leaves the list-structured internal representation of the source
135 program intact after a compilation. Use pl1$clean_up to discard it.
136 -no_debug, -ndb
137 delete the internal representation after compiling a program.
138 Default
139 -time, -tm
140 prints a table after compilation that gives the time in seconds,
141 number of page faults, and amount of free storage used by each of
142 the phases of the compiler. Same as pl1$times after a compilation.
143 -no_time, -ntm
144 don't print a table of times used by each phase of the compiler.
145 Default
146
147
148 -version
149 prints out the current version of the compiler. Default
150 -no_version
151 suppresses printing of the current version of the compiler.
152
153
154 Notes:
155
156 If the user specifies the -source, -symbols, -map, -list or
157 -single_symbol_list control arguments, the pl1 command creates a
158 listing segment named path.list in the working directory. If a
159 control argument and an incompatible alternative are both given on the
160 command line, the rightmost one is used.
161
162
163 If the user specifies the -optimize control argument, the compiler
164 will invoke an extra compiler phase just before code generation to
165 perform certain optimizations, and a different algorithm to keep track
166 of the uses and references of variables. This algorithm can warn the
167 user about unexpected programming practices under more general
168 conditions. Some of which may not be very obvious to users. For
169 example, both optimized and non_optimized compilation may list
170 different variables that have been referenced but never set.
171
172
173 The statistics recorded by the -profile and -long_profile control
174 arguments are perprocess. They may be printed with the profile
175 command.
176
177
178 By default, all computational conditions are enabled except size,
179 stringsize, stringrange, and subscriptrange.
180
181 Refer to the "Multics PL/I Specification," Order No. AG94, and the
182 "Multics PL/I Reference Manual," Order No. AM83, for information
183 about the PL/I language.