PASCAL V.2 HELP FILE  4 pages  23-May-77

Files for Pascal on IPS Systems:

-1. SYS:PASCAL.SAV	The dispatcher to the compiler
0.  SYS:CROSS.SAV	The dispatcher to the cross reference program
1.  PUB:PASCAL.EXE	The compiler
2.  PUB:CROSS.EXE	The cross reference program
3.  SYS:PASLIB.REL	The Pascal library
4.  HLP:PASCAL.HLP	Help file for the compiler
5.  DOC:PASCAL.MAN	Pascal User's Manual for the 10
6.  DOC:PASCAL.DOC	History of DEC-10 Implementation
7.  PAS:ACK3.PAS	Sample Pascal program
8.  PAS:CROSS.PAS	Source for the cross reference program
9.  PAS:PASCAL.PAS	Source for the compiler
10. PAS:LIBPAS.PAS	Pascal portion of the library
11. PAS:LIBMAC.MAC	Macro portion of the library

Note:  on IPS systems, PAS: is defined to be DSKE:[5,63]
       Note also that PASCAL is a compiler distributed by DECUS and
       as such IPS does not guarantee the correct operation of the
       compiler.  The compiler is placed on our systems in the hope
       that by offering the user community a superior language in
       which to express their programs, the art of programming may
       be furthered.

The following is extracted from pages 4, 5, and 6 of the users manual,
PASCAL.MAN to illustrate the usage of the compiler.  For more detailed
information, list out DOC:PASCAL.MAN.

	1. Usage of the PASCAL Compiler
	================================
 
 
	1.1. How to Use the Concise Command Language for PASCAL
	-------------------------------------------------------
	
	   If the installation has modified the DECSystem-10 Concise  Command
	 Language  (CCL) handler [8] to detect the extension PAS and activate
	 the PASCAL  compiler,	one  simply  has  to  use  the	standard  CCL
	 commands.    Options,	as described in Section 1.5., may be appended
	 according  to	the  CCL  conventions.	   These   commands,   called
	 "COMPIL-class" commands, are defined as follows:
	
		<compil-class command> ::= <command name>
					   [<file name>=]
					   <file description>
					   [@<file name>]
					   [<compiler options>]
					   [<command options>]
		<command name>	       ::= COMPILE or LOAD or EXECUTE
		<compiler options>     ::= (<option sequence>)
		<command options>      ::= /<option sequence>
		<option sequence>      ::= <option> [/<option>]*
		<option> 	       ::= <identifier> [:<unsigned integer>]
		<file description>     ::= [<device>:] <filename>
				     	   [.<extension>] [<ppn>]
					   [<protection>]
	Example:
	
		.COMPILE FILNAM( CODESIZE:1200/DEBUG )/LIST
		.LOAD FILNAM( RUNCORE:16/CODE )/CREF
		.EXECUTE FILNAM( FORTIO/NOCHECK )/COMPILE
	
	   The so-called =- and @-constructions [8] are also supported.
	
		.COMPILE NAMFIL=FILNAM( EXTERN )/LIST
	
	 generates  relocatable  output  on  NAMFIL.REL  and  a  listing   on
	 LPT:NAMFIL.
	
	 If SWITCH.CMD contains the line
	
		( CODESIZE:1200/DEBUG/RUNCORE:20 )
	
	 the command
	
		.COMPILE FILNAM@SWITCH
	
	 is equivalent to
	
		.COMPILE FILNAM( CODESIZE:1200/DEBUG/RUNCORE:20 )
	
	   Depending on the command the program  is  compiled  and/or  loaded
	 and/or  executed.	The program is compiled if the PAS-file has a
	 younger creation  date  than  the  REL-file  -if  existent-.	  The
	 compilation can be enforced with the COMPILE-option (refer to 1.5.).
								- 5-
 
 
	1.2. How to Use the PASCAL Compiler Directly
	--------------------------------------------
	
	   The compiler is executed by
	
		.R PASCAL
	
	 In  this  case  the compiler will prompt the user at his terminal to
	 provide file descriptions and compiler-options for source, list  and
	 relocatable object code files (refer to Section 2.1. or 5.7.9.   for
	 more detailed information).  The file description has the  following
	 form:
	
		DEVICE: FILNAM.PAS [PROJECT, PROGRAMMER] <PROTECTION>
		------- 	   --------------------- ------------
	
	 The underlined parts may be omitted. They are by default
	
		DEVICE			DSK
		[PROJECT, PROGRAMMER]	own PPN
		<PROTECTION>		installation default (usually <057>)
	
	 The compiler-options may be appended to each of the  following  file
	 descriptions according to the conventions described in Section 1.5..
	
	Example:
	
		.r pascal
		OBJECT = filnam.rel/codesize:800	relocatable object
		LIST = filnam.lst/code			listing
		SOURCE = filnam.pas/nocheck/debug	source file
	
	   If e.g. the file description for OBJECT is defaulted, the compiler
	 generates  relocatable  object code on a file named OBJECT (refer to
	 2.1. and 4.1.). A listing is generated if either the LIST-, CODE- or
	 CREF-option  is  specified  or  just  a file description for LIST is
	 provided.
 
 
 
	1.3. How to Run a PASCAL Program
	--------------------------------
	
	   Compilation starts when the following message is output:
	
		PASCAL: FILNAM [<program name>: <entry>, ...]
	
	 After successful  compilation	the  following	size  information  is
	 output:
	
		HIGHSEG: u K + m WORD(S)
		LOWSEG : v K + n WORD(S)
	
	 The first line denotes the core  requirement  for  the  high-segment
	 (code)  in  K,  the  next  line denotes the core requirement for the
	 low-segment (data) in K.
								- 6-
 
 
	   If the compiler has generated relocatable code on FILNAM.REL,  the
	 program is loaded by
	
		.LOAD FILNAM.REL or .LOAD FILNAM
	   An executable program is obtained by
	
		.SAVE FILNAM w
	
	 after loading where w is the total core requirement for the program.
	 It should be at least u + v + 5. A sharable high-segment is obtained
	 by
	
		.SSAVE FILNAM w
	
	 SSAVE must not be used if the program has been  compiled  using  the
	 DEBUG-option.
	
	   Another  way  to  provide the core requirement for a program is to
	 compile it with the RUNCORE-option. The value of the option  denotes
	 the  maximum  core  requirement  for the low-segment in K words. The
	 value has to be v + 2 at least.
	
	Example:
		.load filnam( runcore:16 )/compile
		.ssave filnam
		.run filnam
	
	 In  this  case  the program itself allocates 16K for its low-segment
	 each time it is executed and the user need not to take  care  of the
	 size of the high-segment.
	
	   The program is executed by
	
		.RUN FILNAM
	
	 Should more core be required than has been specified when saving  or
	 compiling the program, the command
	
		.RUN FILNAM n
	
	 may be used where n stands for the larger core requirement.
	
	   If several programs are linked together or it is necessary to  get
	 the  correct size of low- and high-segment, the program(s) should be
	 loaded with the MAP-option like
	
		.LOAD FILNAM,PROC1,PROC2,/SEARCH MYLIB[302,3015]/MAP
	
	 The "loader map" can be obtained by
	
		.PRINT <program name>.MAP
	
	   After inspection of the loader map one can specify w as the	total
	 size of the low-segment plus the total size of the high-segment plus
	 the core needed for Stack and Heap. The value of the  RUNCORE-option
	 for  later  compilations can be evaluated as the total length of the
	 low-segment plus the size of the heap.

