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.