Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pc(1) — DYNIX/ptx 3.2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pmerge(1)

pxp(1)

PC(1)  —  UNIX Programmer’s Manual

NAME

pc − Pascal compiler

SYNOPSIS

pc [ option ] [ −i name ...  ] name ... 

DESCRIPTION

Pc is a Pascal compiler.  If given an argument file ending with .p, it will compile the file and load it into an executable file called, by default, a.out.

A program may be separated into more than one .p file.  Pc will compile a number of argument .p files into object files (with the extension .o in place of .p).  Object files may then be loaded into an executable a.out file.  Exactly one object file must supply a program statement to successfully create an executable a.out file.  The rest of the files must consist only of declarations which logically nest within the program.  References to objects shared between separately compiled files are allowed if the objects are declared in included header files, whose names must end with .h.  Header files may only be included at the outermost level, and thus declare only globally available objects.  To allow functions and procedures to be declared, an external directive has been added, whose use is similar to the forward directive but restricted to appear only in .h files.  Function and procedure bodies may not appear in .h files.  A binding phase of the compiler checks that declarations are used consistently to enforce the type checking rules of Pascal. 

Object files created by other language processors may be loaded together with object files created by pc. The functions and procedures they define must have been declared in .h files included by all the .p files which call those routines.  Calling conventions are as in C, with var parameters passed by address. 

See the Berkeley Pascal User’s Manual for details. 

The following options have the same meaning as in cc(1) and f77(1). See ld(1) for load-time options.

−c Suppress loading and produce ‘.o’ file(s) from source file(s). 

−g Have the compiler produce additional symbol table information for dbx(1).

−w Suppress warning messages. 

−p Prepare object files for profiling, see prof(1).

−O Invoke an object-code improver. 

−S Compile the named program, and leave the assembler-language output on the corresponding file suffixed ‘.s’.  (No ‘.o’ is created.). 

−o output
Name the final output file output instead of a.out. 

The following options are peculiar to pc.

−C Compile code to perform runtime checks, verify assert calls, and initialize all variables to zero. 

−T[0123l] directory
Find the specified compiler pass (pc0, pc1, pc2, pc3) or pascal library in the given directory.  The default directories are /usr/src/ucb/pascal/pc[0123] and /usr/src/usr.lib/libpc, respectively. 

−b Block buffer the file output. 

−i Produce a listing for the specified procedures, functions and include files. 

−l Make a program listing during translation. 

−s Accept standard Pascal only; non-standard constructs cause warning diagnostics. 

−t directory
Use the given directory for compiler temporary files. 

−z Allow execution profiling with pxp by generating statement counters, and arranging for the creation of the profile data file pmon.out when the resulting object is executed. 

Other arguments are taken to be loader option arguments, perhaps libraries of pc compatible routines.  Certain flags can also be controlled in comments within the program as described in the Berkeley Pascal User’s Manual. 

FILES

file.ppascal source files
/usr/lib/pc0compiler
/usr/lib/pc1code generator
/usr/lib/pc2runtime integrator (inline expander)
/lib/c2peephole optimizer
/usr/lib/pc3separate compilation consistency checker
/usr/lib/pc3.∗stringstext of the error messages
/usr/lib/how_pcbasic usage explanation
/usr/lib/pcexterns.olibrary identifier types for consistency checker
/usr/lib/libpc.aintrinsic functions and I/O library
/usr/lib/libpc_p.aversion of libpc.a used for profiling ( −p option)
/usr/lib/libm.amath library
/lib/libc.astandard library, see intro(3)

SEE ALSO

Berkeley Pascal User’s Manual
pmerge(1), pxp(1)

DIAGNOSTICS

For a basic explanation do

pc

In the diagnostic output of the compiler, lines containing syntax errors are listed with a flag indicating the point of error.  Diagnostic messages indicate the action which the recovery mechanism took in order to be able to continue parsing.  Some diagnostics indicate only that the input is ‘malformed.’ This occurs if the recovery can find no simple correction to make the input syntactically valid. 

Semantic error diagnostics indicate a line in the source text near the point of error.  Some errors evoke more than one diagnostic to help pinpoint the error; the follow-up messages begin with an ellipsis ‘...’. 

The first character of each error message indicates its class:

E Fatal error; no code will be generated. 
e Non-fatal error. 
w Warning − a potential problem. 
s Non-standard Pascal construct warning. 

If a severe error occurs which inhibits further processing, the translator will give a diagnostic and then ‘QUIT’.  Internal errors cause messages containing the word SNARK. 

AUTHORS

Charles B. Haley, William N. Joy, and Ken Thompson
Retargetted to the second pass of the portable C compiler by Peter Kessler
Runtime library and inline optimizer by M. Kirk McKusick
Separate compilation consistency checking by Louise Madrid
DYNIX port by James S. Schoner and Kevin S. Braunsdorf

BUGS

The keyword packed is recognized but has no effect. 

The binder is not as strict as described here, with regard to the rules about external declarations only in ‘.h’ files and including ‘.h’ files only at the outermost level.  It will be made to perform these checks in its next incarnation, so users are warned not to be careless. 

The −z flag doesn’t work for separately compiled files. 

Because the −s option is usurped by the compiler, it is not possible to pass the strip option to the loader.  Thus programs which are to be stripped must be run through strip(1) after they are compiled.

Dbx(1) supports only the DYNIX Pascal compiler described in pascal(1); it does not support this version of Pascal.

4BSD/DYNIX

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026