Pascal 4.0 User’s Guide
Trademarks
Contents
Pascal Compiler
Contents
Pic, -Kpicand -PIC, -KPIC
Contents Vii
Viii
Program Construction and Management
Separate Compilation
C++-Pascal Interface
Error Diagnostics
Xii
XView Toolkit
Math Libraries
Contents Xiii
Xiv
Figures
Pascal 4.0 User’s Guide
Fortran
Tables
Xviii
Preface
Installation
Operating Environment
Organization
Audience
AaBbCc123
Conventions Used in This Guide
Related Documentation
Shell Prompts in Command Examples
Manual
Other Related Documentation
Readme Files
Documents in Hard Copy and in AnswerBook
Hostname% imagetool floating-point.ps
CD-ROM
Standards
Introduction
Pascal Compiler
Features
Compatibility
Debuggers
Text Editors
XView Toolkit
Native Language Support
Internationalization
Locale
Licensing
Pascal 4.0 User’s Guide
Simple Pascal Program
Pascal Programs
Compiling the Program
Renaming the Executable File
Running the Program
Hostname% mv a.out temp
Hostname% pc -o temp temp.p
An Interactive Pascal Program
Hostname% pc -o copy copy.p
Redirecting I/O
Hello, are you listening?
Goodbye, I must go now
Using a File Name as a File Variable
Using Pascal Traceback
Where Did My Program Fail?
Hostname% pc -o copy2 copy2.p
Compiling and Running the Program
Using a Sample Program with Segmentation Violation
Hostname% more a.out.trace
Using the -gOption
Try compiling SegViol.p with -g
Pc Version Number
Pascal Compiler
Hostname% mcs -p a.out grep Pascal
Compile and Link Sequence
Source
Language Preprocessor
Compiler Preprocessor cpp or cppas
Optimizer
Suffix Description
File Name Extensions Accepted By pc
Option-Passing in the Program Text
Option-Passing on the Command-Line
Hostname% pc -l rmc.p
Hostname% pc -o rmc rmc.p
Option Description
Hostname% pc options.p
Options
Bbinding
Bsdmalloc
Cg89
Calign
Cg92
Cond
Dname=def
Config
Dryrun
Dalign
Fast
Fns
Fnonstd
Fround=r
Ftrap=t
Hname
Ipathname
Help or -flags
Iname
Keeptmp
Hostname% pc -l random.p
Ldirectory
Libmil
Libmieee
Llib
Misalign
Nocx
Native
Nolib
Nolibmil
Olevel
Notrace
Hostname% limit datasize 16M
Hostname% /usr/sbin/swap -s
Ofilename
Hostname% /usr/sbin/prtconf grep Memory
Hostname% pc -o myprog myprog.p
Using the -pgOption
Using the -pOption
-pg
Pic,-Kpic and -PIC,-KPIC
Qpathpathname
Qoption
Qproduce
Rpathdir
Pascal 4.0 User’s Guide
Examples
Hostname% pc -Rw recvar.p
Hostname% pc -Rw rr.p
Pascal main program, with.p with statement
Commands to compile and execute with.p
Hostname% pc -Rw with.p
Sbfast
Slevel
Hostname% pc -S rmc.p
Hostname% pc -temp=. hello.p
Temp=dir
Hostname% pc -time hello.p
Time
Xarch=a
Uname
Pascal 4.0 User’s Guide
Value Meaning
Limit the instruction set to V8 architecture
S1/l1/a1 S1/l1/a1s2/l2/a2 S1/l1/a1s2/l2/a2s3/l3/a3
Xcache=c
Example -xcache=16/32/41024/32/1specifies the following
Xchip=c
Xcg92
Xcg89
Xildon
Xildoff
Xlibmieee
Xlibmil
Xlicinfo
Xlibmopt
XMerge
Xnolib
Xprofile=p
Xpg
-xprofileValues
Example -xregs=appl,no%float
Xregs=r
Xsb
Xsafe=mem
Xsbfast
Xtarget=t
Xspace
XtargetExpansions
Pascal 4.0 User’s Guide
Pascal Compiler
Ztext
Units
Program Construction Management
Using Program Units and Module Units
Hostname% pc programunit.p moduleunit.p
Compiling with Units
Program Construction and Management
Using Units and Header Files
Sharing Variables Between Units
Here is a program unit that declares a variable
Program Construction and Management
Libraries
Working with Units
Separate Compilation
Using Module Units
Using Program Units
Sharing Variables and Routines Across Multiple Units
Sharing Public Variables
Compiling without the -xlOption
Program unit
Separate Compilation
Using include Files to Share Variables and Routines
Using extern Option to Share Routines
Program unit, incprog.p, which includes the file
Commands to compile and execute incprog.p and incmod.p
Module unit, incmod.p, which also includes the file
Hostname% pc incprog.p incmod.p
Using public var Declarations
Using the -xlOption
Commands to compile and execute pubvarprog.p and pubvarmod.p
Using the define Variable Attribute
Commands to compile and execute defvarprog.p and defvarmod.p
Using the define Declaration
Module unit
Using include Files
Program unit, incprog2.p Module unit, incmod2.p
Commands to compile and execute incprog2.p and incmod2.p
Using extern
Program unit, extprog.p
Sharing Declarations in Multiple Units
Commands to compile and execute extprog.p and extmod.p
Module unit, extmod.p
Pascal 4.0 User’s Guide
Compilation of Mixed-Language Programs
C-Pascal Interface
Hostname% cc -c myc.c Hostname% pc -calign myc.o mypascal.p
Compatibility of Types for C and Pascal
Character Strings
Precautions with Compatible Types
C-Pascal Interface
Array Indexes
Incompatibilities
Aggregate Types
Enumerated Types
General Parameter Passing in C and Pascal
Procedure Calls C-Pascal
Pascal Set Types
Variable Parameters
Commands to compile and execute Samp.p
Simple Types without -xl
Pascal procedure, SimVar.p
Pascal procedure
Commands to compile and execute SimVar.p and SimVarMain.c
Simple Types with -xl
Strings of Characters
Fixed Arrays
Commands to compile and execute StrVar.p and StrVarMain.c
C main program
Commands to compile and execute FixVec.p and FixVecMain.c
Pascal procedure, FixVec.p
Day =
100
Univ Arrays
C-Pascal Interface 101
Conformant Arrays
102
Example 1 Single-Dimension Array
C-Pascal Interface 103
Example 2 Multi-Dimension Array
104
Example 3 Array of Characters
C-Pascal Interface 105
Records and Structures
106
Commands to compile and execute StruChr.p and StruChrMain.c
C-Pascal Interface 107
Pascal routine
108
Variant Records
C-Pascal Interface 109
Commands to compile and execute VarRec.p and VarRecMain.c
110
Pascal Set Type
C-Pascal Interface 111
Pascal intset Type
112
Value Parameters
C-Pascal Interface 113
Commands to compile and execute SimVal.p and SimValMain.c
114
Arrays
Simple Types
Function Return Values
Pascal function
C-Pascal Interface 115
Pascal procedure, IO.p C main program, IOMain.c
Commands to compile and execute RetReal.p and RetRealMain.c
Input and Output
116
Hostname% cc IO.o IOMain.c -lpc
Procedure Calls Pascal-C
C function, SimRef.c
C-Pascal Interface 117
118
Pascal main program, StrVarMain.p
C function, StrVar.c
C-Pascal Interface 119
Incorrect use of string in static variable storage
Commands to compile and execute StrVar.c
120
C function, FixVec.c
Commands to compile and execute FixVec.c
Pascal main program
C-Pascal Interface 121
122
C function, UniVec.c
C-Pascal Interface 123
C function, IntCA.c
C function, StruChr.c
Commands to compile and execute IntCA.c and IntCAMain.p
124
StruChr.c
Commands to compile and execute StruChr.c and StruChrMain.p
Calign StruChr.o StruChrMain.p
Out
126
C function, VarRec.c
Commands to compile and execute VarRec.c
Non-Pascal Procedures
C-Pascal Interface 127
128
C-Pascal Interface 129
C function, SimVal.c
130
Commands to compile and execute SimVal.c
Commands to compile and execute RetReal.c and RetRealMain.p
Parameters That Are Pointers to Procedures
C function, RetReal.c
C function, ProcPar.c
132
Procedures and Functions as Parameters
Global Variables in C and Pascal
Pascal procedure, GloVar.p
C-Pascal Interface 133
File-Passing Between Pascal and C
C procedure, UseFilePtr.c
134
C-Pascal Interface 135
136
Sample Interface
C++-Pascal Interface
Pascal procedure, Samp, in the file, Samp.p
Procedure Calls C++-Pascal
Compatibility of Types for C++ and Pascal
++ Name Encoding
C++ main program, SampMain.cc
Arguments Passed by Reference
Hostname% pc -c Samp.p
C++-Pascal Interface 139
Simple Types without the -xlOption
Pascal procedure, SampRef, in the file, Samp.p
140
Simple Types with the -xlOption
Commands to compile and execute SamRef.p and SamRefMain.cc
C++ main program
Hostname% pc -c SamRef.p
142
Hostname% pc -c StrRef.p
Commands to compile and execute StrRef.p and StrRefMain.cc
C++-Pascal Interface 143
144
Hostname% pc -c FixVec.p
C++-Pascal Interface 145
Hostname% pc -c DaysOfWeek.p
-calignoption
146
Hostname% pc -c StruChr.p
Commands to compile and execute StruChr.p
C++-Pascal Interface 147
148
C++-Pascal Interface 149
Hostname% pc -c DayWeather.p
Arguments Passed by Value
Hostname% pc -calign -c DayWeather.p
150
C++-Pascal Interface 151
152
Commands to compile and execute SimVal.p
Hostname% pc -c RetReal.p
Commands to compile and execute RetReal.p
C++-Pascal Interface 153
Hostname% pc -c RetShortReal.p
Input and Output
Pascal function, IO.p
154
C++ main program, IOMain.cc
Procedure Calls Pascal-C++
Hostname% CC IO.o IOMain.cc -lpc hostname% a.out
C++-Pascal Interface 155
C++ function, SimRef.cc
Simple Types Passed by Reference
156
C++-Pascal Interface 157
158
C++ function, SimVal.cc
C++-Pascal Interface 159
Commands to compile and execute SimVal.cc
160
C++ function, RetReal.cc
Commands to compile and execute GloVar.p and GloVarMain.cc
Pascal procedure, GloVar.p C++ main program, GloVarMain.cc
Global Variables in C++ and Pascal
C++-Pascal Interface 161
Pascal File Pointers to C++
C++ procedure
162
Compiler Mixed-Language Programs
FORTRAN-Pascal Interface
164
Compatibility of Types for Fortran and Pascal
FORTRAN-Pascal Interface 165
Real Integer Integer*2
166
General Parameter-Passing in Fortran and Pascal
Multidimensional Arrays
FORTRAN-Pascal Interface 167
168
Procedure Calls FORTRAN-Pascal
Fortran main program
Commands to compile and execute SimVar.p
FORTRAN-Pascal Interface 169
Fortran main program, StrVarmain.f
Pascal procedure, StrVar.p
170
Fortran main program, FixVecmain.f
Commands to compile and execute StrVar.p and StrVarmain.f
FORTRAN-Pascal Interface 171
172
Commands to compile and execute FixVec.p
FORTRAN-Pascal Interface 173
Commands to compile and execute UniVec.p and UniVecmain.f
174
Commands to compile and execute IntCA.p
Fortran main program, ChrCAmain.f
Commands to compile and execute ChrCA.p
FORTRAN-Pascal Interface 175
176
FORTRAN-Pascal Interface 177
178
FORTRAN-Pascal Interface 179
180
FORTRAN-Pascal Interface 181
182
Commands to compile and execute SimVal.p and SimValmain.f
Commands to compile and execute ChrCAx.p
Pascal procedure, ChrCAx.p
Pointers
FORTRAN-Pascal Interface 183
184
Commands to compile and execute PastPtr.p
Fortran main program, RetRealmain.f
Procedure Calls Pascal-FORTRAN
FORTRAN-Pascal Interface 185
186
Fortran subroutine
FORTRAN-Pascal Interface 187
188
Fortran subroutine, StrVar.f
Character Dummy Arguments
Commands to compile and execute StrVar.f and StrVarmain.p
Hostname% f77 -c StrVar.f
Hostname% pc StrVar.o StrVarmain.p -lpfc -lF77
190
Following example illustrates this method
FORTRAN-Pascal Interface 191
Commands to compile and execute FixVec.f
Pascal main program, UniVecmain.p
Fortran subroutine, UniVec.f
192
Hostname% f77 -c UniVec.f
Commands to compile and execute UniVec.f and UniVecmain.p
FORTRAN-Pascal Interface 193
194
Fortran subroutine, StruChr.f
Hostname% f77 -c StruChr.f
Commands to compile and execute StruChr.f and StruChrmain.p
Hostname% pc StruChr.o StruChrmain.p -lpfc -lF77
FORTRAN-Pascal Interface 195
196
FORTRAN-Pascal Interface 197
198
FORTRAN-Pascal Interface 199
200
Hostname% f77 -c PassPtr.f
Commands to compile and execute PassPtr.f and PassPtrmain.p
Hostname% pc PassPtr.o PassPtrmain.p -lpfc -lF77
Fortran function, RetReal.f
Routines as Parameters
Commands to compile and execute RetReal.f and RetRealmain.p
202
FORTRAN-Pascal Interface 203
204
Compiler Syntax Errors
Error Diagnostics
Illegal Characters
Digits in Real Numbers
String Errors
206
Error Diagnostics 207
Replacements, Insertions, and Deletions
Hostname% pc synerr.p
Undefined or Improper Identifiers
Expected Symbols and Malformed Constructs
208
Expected and Unexpected End-of-file
Error Diagnostics 209
Hostname% pc synerr2.p
Pascal program, mism.p
Format of the Error Diagnostics
Compiler Semantic Errors
Incompatible Types
210
Error Diagnostics 211
Procedure and Function Type Errors
Scalar Class
Expression Diagnostics
Scalar Error Messages
212
Error Diagnostics 213
This program generates the following error messages
214
Type Equivalence
Unreachable Statements
Error Diagnostics 215
Pascal program, unreached.p
Uninitialized Variables
Goto Statement
Unused Variables, Constants, Types, Labels, and Routines
Hostname% pc unreached.p
Runtime Errors
Compiler Panics, I/O Errors
Error Diagnostics 217
218
Error Diagnostics 219
220
Overview
XView Toolkit
Objects
Tools
Object-Oriented Programming
222
Drawable Object Window Icon
Pascal Interface
XView Toolkit 223
Compiling with Libraries
Attribute Procedures
Header Files
Names
XView Toolkit 225
Attribute Lists
Data Types
Handles
Here, mymenu is an object of type XVobject
226
Coding Fragment
Conversion of C to Pascal
An Example
XView Toolkit 227
228
Pascal
XView Toolkit 229
Sample Translation of an XView Function to Pascal
230
Sample Program
XView Toolkit 231
Menu Demo Program
232
Panelbutton
Math Libraries
Contents of the Math Libraries
Math Libraries 235
Libm Functions
236
Ieee Support Functions
Ieeevalues
Ieeefunctions
Math Libraries 237
Ieeeretrospective
Sparc Libraries
238
Math Libraries 239
Arithmetic Exceptions
240
Math Library Exception-Handling Function matherr
Math Libraries 241
242
Libsunmath Support for Ieee Modes and Exceptions
Math Libraries 243
244
Conditional Variables
Pascal Preprocessor
246
Compiler Directives
Pascal Preprocessor 247
%config Directive
248
Hostname% pc -xl config.p hostname% a.out
Output when you define foo
Output when you define two
%debug Directive
Pascal Preprocessor 249
Hostname% pc -xl -cond debug.p hostname% a.out
%else Directive
250
%elseif Directive
Hostname% pc -xl -config red ifthenelse.p hostname% a.out
Pascal program, ifthenelse.p
Pascal Preprocessor 251
%elseifdef Directive
Hostname% pc -xl -config blue elseif.p hostname% a.out
Pascal program
252
Pascal Preprocessor 253
Hostname% pc -xl -config bird2 ifdef.p hostname% a.out
%enable Directive
254
Hostname% pc -xl enable.p hostname% a.out
%error Directive
%endif Directive
Pascal Preprocessor 255
%exit Directive
Error.p
256
Hostname% pc -xl exitdirective.p hostname% a.out
%if Directive
Pascal Preprocessor 257
258
%ifdef Directive
Pascal Preprocessor 259
%include Directive
Module unit, includemod.p
%list Directive
260
Pascal Preprocessor 261
Pascal program, list.p
List.p
%nolist Directive
262
%var Directive
%slibrary Directive
%warning Directive
Pascal Preprocessor 263
Pc -xl warning.p
Output when you compile warning.p without the -configoption
264
Error Messages
266
Fourth argument to function must be of type type, not type
Error Messages 267
268
Error Messages 269
270
Function requires a to be an unpacked array, not type
Error Messages 271
272
Error Messages 273
274
Identifier
Error Messages 275
276
Unknown option for procedure pointer ignored option
Error Messages 277
278
Error Messages 279
280
Error Messages 281
282
Cannot mix sets with integers and reals as operands of type
Error Messages 283
284
Error Messages 285
286
Error Messages 287
288
Multiply defined label in case, lines number and number
Error Messages 289
290
Error Messages 291
292
Error Messages 293
294
OUT
Error Messages 295
296
297
Index
298
Index 299
300
Index 301
302
Index 303
304
Index 305
306
Index 307
Marques