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
 Operating Environment
Installation
Preface
 Organization
Audience
 AaBbCc123
Conventions Used in This Guide
 Manual
Shell Prompts in Command Examples
Related Documentation
 Other Related Documentation
Readme Files
Documents in Hard Copy and in AnswerBook
Hostname% imagetool floating-point.ps
 CD-ROM
 Standards
Introduction
 Compatibility
Features
Pascal Compiler
 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
 Hostname% pc -o copy2 copy2.p
Where Did My Program Fail?
Using Pascal Traceback
 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
 Fast
Dalign
Dryrun
 Fround=r
Fnonstd
Fns
 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
 Qproduce
Qoption
Qpathpathname
 Rpathdir
 Pascal 4.0 User’s Guide
 Examples
 Hostname% pc -Rw recvar.p
Hostname% pc -Rw rr.p
 Hostname% pc -Rw with.p
Commands to compile and execute with.p
Pascal main program, with.p with statement
 Hostname% pc -S rmc.p
Slevel
Sbfast
 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
 Xsbfast
Xsafe=mem
Xsb
 Xtarget=t
Xspace
 XtargetExpansions
 Pascal 4.0 User’s Guide
 Pascal Compiler
 Ztext
 Units
Program Construction Management
 Using Program Units and Module Units
 Program Construction and Management
Compiling with Units
Hostname% pc programunit.p moduleunit.p
 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
 Sharing Variables and Routines Across Multiple Units
Using Program Units
Using Module 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
 Program unit, extprog.p
Using extern
Commands to compile and execute incprog2.p and incmod2.p
 Module unit, extmod.p
Commands to compile and execute extprog.p and extmod.p
Sharing Declarations in Multiple Units
 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
 C-Pascal Interface
Precautions with Compatible Types
Character Strings
 Array Indexes
Incompatibilities
Aggregate Types
Enumerated Types
 Pascal Set Types
Procedure Calls C-Pascal
General Parameter Passing in C and Pascal
 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
 C main program
Commands to compile and execute StrVar.p and StrVarMain.c
Fixed Arrays
 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
 C-Pascal Interface 119
C function, StrVar.c
Pascal main program, StrVarMain.p
 120
Commands to compile and execute StrVar.c
Incorrect use of string in static variable storage
 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
 124
Commands to compile and execute IntCA.c and IntCAMain.p
C function, StruChr.c
 StruChr.c
Commands to compile and execute StruChr.c and StruChrMain.p
Calign StruChr.o StruChrMain.p
Out
 126
C function, VarRec.c
 C-Pascal Interface 127
Non-Pascal Procedures
Commands to compile and execute VarRec.c
 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
 C-Pascal Interface 133
Pascal procedure, GloVar.p
Global Variables in C and Pascal
 134
C procedure, UseFilePtr.c
File-Passing Between Pascal and C
 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
 140
Pascal procedure, SampRef, in the file, Samp.p
Simple Types without the -xlOption
 Simple Types with the -xlOption
Commands to compile and execute SamRef.p and SamRefMain.cc
C++ main program
Hostname% pc -c SamRef.p
 142
 C++-Pascal Interface 143
Commands to compile and execute StrRef.p and StrRefMain.cc
Hostname% pc -c StrRef.p
 144
Hostname% pc -c FixVec.p
 C++-Pascal Interface 145
 146
-calignoption
Hostname% pc -c DaysOfWeek.p
 C++-Pascal Interface 147
Commands to compile and execute StruChr.p
Hostname% pc -c StruChr.p
 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
 C++-Pascal Interface 153
Commands to compile and execute RetReal.p
Hostname% pc -c RetReal.p
 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
 156
Simple Types Passed by Reference
C++ function, SimRef.cc
 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
 162
C++ procedure
Pascal File Pointers to C++
 Compiler Mixed-Language Programs
FORTRAN-Pascal Interface
 164
Compatibility of Types for Fortran and Pascal
 FORTRAN-Pascal Interface 165
Real Integer Integer*2
 166
 FORTRAN-Pascal Interface 167
Multidimensional Arrays
General Parameter-Passing in Fortran and Pascal
 168
Procedure Calls FORTRAN-Pascal
 FORTRAN-Pascal Interface 169
Commands to compile and execute SimVar.p
Fortran main program
 170
Pascal procedure, StrVar.p
Fortran main program, StrVarmain.f
 FORTRAN-Pascal Interface 171
Commands to compile and execute StrVar.p and StrVarmain.f
Fortran main program, FixVecmain.f
 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-Pascal Interface 175
Commands to compile and execute ChrCA.p
Fortran main program, ChrCAmain.f
 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-Pascal Interface 185
Procedure Calls Pascal-FORTRAN
Fortran main program, RetRealmain.f
 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
 192
Fortran subroutine, UniVec.f
Pascal main program, UniVecmain.p
 FORTRAN-Pascal Interface 193
Commands to compile and execute UniVec.f and UniVecmain.p
Hostname% f77 -c UniVec.f
 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
 202
Commands to compile and execute RetReal.f and RetRealmain.p
Routines as Parameters
 FORTRAN-Pascal Interface 203
 204
 Illegal Characters
Error Diagnostics
Compiler Syntax Errors
 206
String Errors
Digits in Real Numbers
 Hostname% pc synerr.p
Replacements, Insertions, and Deletions
Error Diagnostics 207
 208
Expected Symbols and Malformed Constructs
Undefined or Improper Identifiers
 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
 Scalar Class
Procedure and Function Type Errors
Error Diagnostics 211
 212
Scalar Error Messages
Expression Diagnostics
 Error Diagnostics 213
This program generates the following error messages
 214
Type Equivalence
 Pascal program, unreached.p
Error Diagnostics 215
Unreachable Statements
 Uninitialized Variables
Goto Statement
Unused Variables, Constants, Types, Labels, and Routines
Hostname% pc unreached.p
 Error Diagnostics 217
Compiler Panics, I/O Errors
Runtime Errors
 218
 Error Diagnostics 219
 220
 Overview
XView Toolkit
 Objects
Tools
Object-Oriented Programming
222
 XView Toolkit 223
Pascal Interface
Drawable Object Window Icon
 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
 Math Libraries 237
Ieeefunctions
Ieeevalues
 238
Sparc Libraries
Ieeeretrospective
 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
 250
%else Directive
Hostname% pc -xl -cond debug.p hostname% a.out
 %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
 254
%enable Directive
Hostname% pc -xl -config bird2 ifdef.p hostname% a.out
 Hostname% pc -xl enable.p hostname% a.out
%error Directive
%endif Directive
Pascal Preprocessor 255
 256
Error.p
%exit Directive
 Pascal Preprocessor 257
%if Directive
Hostname% pc -xl exitdirective.p hostname% a.out
 258
%ifdef Directive
 Pascal Preprocessor 259
%include Directive
 260
%list Directive
Module unit, includemod.p
 Pascal Preprocessor 261
Pascal program, list.p
 262
%nolist Directive
List.p
 %var Directive
%slibrary Directive
%warning Directive
Pascal Preprocessor 263
 264
Output when you compile warning.p without the -configoption
Pc -xl warning.p
 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