DOMAIN Pascal Software Release Document
Software Release 9.6
Part No. 05502
Revision 05
This document describes the new features and bugs of
Pascal for software release 9.6.
APOLLO COMPUTER INC.
330 Billerica Road
Chelmsford, Massachusetts 01824
Copyright c 1987 Apollo Computer Inc.
All rights reserved. Printed in U.S.A.
First Printing: May, 1987
Latest Printing: May, 1987
This document was formatted using the FMT tool distributed with the DOMAIN
computer system.
APOLLO and DOMAIN are registered trademarks of Apollo Computer Inc.
AEGIS, DGR, DOMAIN/BRIDGE, DOMAIN/DFL-100, DOMAIN/DQC-100, DOMAIN/Dialogue,
DOMAIN/IX, DOMAIN/Laser-26, DOMAIN/PCI, DOMAIN/SNA, D3M, DPSS, DSEE, GMR, and
GPR are trademarks of Apollo Computer Inc.
UNIX is a registered trademark of American Telephone and Telegraph
Apollo Computer Inc. reserves the right to make changes in specifications and
other information contained in this publication without prior notice, and the
reader should in all cases consult Apollo Computer Inc. to determine whether
any such changes have been made.
THE TERMS AND CONDITIONS GOVERNING THE SALE OF APOLLO COMPUTER INC. HARDWARE
PRODUCTS AND THE LICENSING OF APOLLO COMPUTER INC. SOFTWARE CONSIST SOLELY OF
THOSE SET FORTH IN THE WRITTEN CONTRACTS BETWEEN APOLLO COMPUTER INC. AND ITS
CUSTOMERS. NO REPRESENTATION OR OTHER AFFIRMATION OF FACT CONTAINED IN THIS
PUBLICATION, INCLUDING BUT NOT LIMITED TO STATEMENTS REGARDING CAPACITY,
RESPONSE-TIME PERFORMANCE, SUITABILITY FOR USE OR PERFORMANCE OF PRODUCTS
DESCRIBED HEREIN SHALL BE DEEMED TO BE A WARRANTY BY APOLLO COMPUTER INC. FOR
ANY PURPOSE, OR GIVE RISE TO ANY LIABILITY BY APOLLO COMPUTER INC.
WHATSOEVER.
IN NO EVENT SHALL APOLLO COMPUTER INC. BE LIABLE FOR ANY INCIDENTAL,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING BUT NOT
LIMITED TO LOST PROFITS) ARISING OUT OF OR RELATING TO THIS PUBLICATION OR
THE INFORMATION CONTAINED IN IT, EVEN IF APOLLO COMPUTER INC. HAS BEEN
ADVISED, KNEW OR SHOULD HAVE KNOWN OF THE POSSIBILITY OF SUCH DAMAGES.
THE SOFTWARE PROGRAMS DESCRIBED IN THIS DOCUMENT ARE CONFIDENTIAL INFORMATION
AND PROPRIETARY PRODUCTS OF APOLLO COMPUTER INC. OR ITS LICENSORS.
Reader_Notice
This document resides on line in the /doc directory. To print a copy of this
document, use the PRF command with the -npag and -pr options.
PRF <file_pathname> -PR <printer_name> -NPAG
iii
Contents
Section Page
CHAPTER 1 OVERVIEW OF DOMAIN PASCAL SR9.6
1.1 Choosing a Compiler Version . . . . . . . . . . . . . . . 1-1
1.2 Enhancements at SR9.6 . . . . . . . . . . . . . . . . . . 1-2
1.2.1 UNIX File Compatibility . . . . . . . . . . . . . . 1-2
1.2.2 Pascal Help File . . . . . . . . . . . . . . . . . 1-3
CHAPTER 2 INSTALLATION INFORMATION . . . . . . . . . . . . . . . . 2-1
CHAPTER 3 DOCUMENTATION . . . . . . . . . . . . . . . . . . . . . 3-1
CHAPTER 4 BUGS AND BUG FIXES . . . . . . . . . . . . . . . . . . . 4-1
4.1 Bugs Fixed . . . . . . . . . . . . . . . . . . . . . . 4-1
4.2 Known Limitations at SR9.6 . . . . . . . . . . . . . . . 4-1
Contents iv
CHAPTER 1
OVERVIEW OF DOMAIN PASCAL SR9.6
This chapter briefly describes the enhancements to the Pascal compiler at
SR9.6. These enhancements (except for the last one listed in Section 1.1)
are fully documented in the current version of the DOMAIN_Pascal_Language
Reference manual.
In some instances, you may need to know about changes made between SR9.2 and
SR9.5.1. For information about these changes, read the SR9.5 Pascal Release
Notes (05502, rev. 04), which are also supplied with this release.
1.1 Choosing a Compiler Version
If you are developing programs to run on systems that are running versions of
the operating system prior to SR9.5, you will want to compile your programs
with the SR9.2 version of the Pascal compiler. When you install the SR9.6
Pascal compiler, you also will get the SR9.2 compiler. If you need to use
the older version, compile your file(s) with the following command:
$ passr9.2 filename [-options]
To compile with the SR9.6 version, use the usual command; that is:
$ pas filename [-options]
1-1 Pascal Release at SR9.6
1.2 Enhancements at Revision 9.6
There are several enhancements to the DOMAIN Pascal compiler at SR9.6:
o Variable-Length Strings -- A variable-length string is a string whose
length can change dynamically, depending on the number of characters
assigned to the string during program execution. This differs from
fixed-length strings, whose length is constant throughout program
execution.
o New functions and procedures (APPEND, CTOP, PTOC, and SUBSTR) to
support variable-length strings.
o A new extended string constant syntax that allows you to embed
unprintable characters in strings.
o TYPE names are recorded when debug symbols are generated, so they can
be used by the dbx debugger. (The /com/debug debugger continues to
ignore TYPE names.)
o UNIX File Compatibility -- The DOMAIN Pascal runtime library
(/lib/ftnlib) now outputs files that are fully compatible with files
output by UNIX systems. This means that files created by a DOMAIN
Pascal program can be read by UNIX utilities and other programs
developed with UNIX compilers. In addition, programs running with
the new runtime library will be able to read data files that have
been created on a UNIX system.
o The DOMAIN Pascal compiler supports a new compile option, -CPU FPX,
that takes advantage of the floating-point accelerator (FPX) unit on
DN570-T and DN580-T machines.
o The help file for the Pascal compiler now reports the software
release number rather than the compiler version number.
1.2.1 UNIX File Compatibility
To ensure that DOMAIN Pascal always produces UNIX-compatible files, it was
necessary to remove support for creation of DOMAIN "REC" files. In the past,
DOMAIN Pascal created a REC file whenever you opened a file declared as "file
of base_type." For "text" files, DOMAIN Pascal produced DOMAIN UASC files
(which are UNIX-compatible). The SR9.6 Pascal runtime library always
produces UASC files, regardless of the file type.
Note that this change affects the runtime library only, not the compiler.
Therefore, you do not need to recompile your programs to achieve UNIX
Pascal Release at SR9.6 1-2
compatibility. The same programs that formerly produced REC files will now
produce UASC files.
Note also that this change affects only those programs that use Pascal
mechanisms to access files. Programs that create and access files using
system calls, such as STREAM_$ and IOS_$, will not be affected.
1.2.1.1 Compatibility Issues
For backwards compatibility, DOMAIN Pascal will continue to support reading
from REC files so that you can read record-structured files produced by older
programs. The new compiler also allows you to append record-formatted data
to REC files. However, if your Pascal program copies the contents of a REC
file to a new file, the old file will continue to be a REC file, but the new
file will be a UASC file. This conversion is transparent to your programs.
1.2.2 Pascal Help File
At SR9.6, the help file for this compiler contains a release number (SR9.6)
in its header. At previous releases, the compiler help file contained a
compiler version number, such as 7.09, in its header. We have incorporated
the release number so that you can easily see the software release to which
the help file applies.
You can determine the individual compiler version number, such as 7.09, by
using the compiler's -version option. Please use the compiler version number
if you submit a User Change Request (UCR) or call our Customer Support
Center.
1-3 Pascal Release at SR9.6
CHAPTER 2
INSTALLATION INFORMATION
You can add Pascal to a user node (one equipped with monitor and keyboard) or a
DOMAIN server processor (DSP) that is running SR9.6 or a more recent version
of the AEGIS or DOMAIN/IX operating system. If the user node or DSP is not
running SR9.6 or a more recent version, follow the appropriate software
update procedures as described in Installing__DOMAIN__Software (Order No.
008860) or in the appropriate release notes.
For directions about how to install this product, see the manual Installing
DOMAIN_Software, (Order No. 008860).
NOTE: The user node or DSP must have a minimum of 1600 blocks of
available disk space for a successful installation of this
software.
2-1 Pascal Release at 9.6
CHAPTER 3
DOCUMENTATION
The DOMAIN__Pascal__Language_Reference_Manual (Order No. 000792, rev. 05) has
been revised to reflect enhancements to the compiler released at SR9.6.
Change bars in the margins mark alterations from the previous version of the
manual.
3-1 Pascal Release at SR9.6
CHAPTER 4
BUGS AND BUG FIXES
This chapter lists bugs fixed, known bugs and known limitations.
4.1 Bugs Fixed
o [UCR 0d885057, 0d885619] Prior to this release, the Pascal compiler
reported line numbers of errors modulo 10000. An error on line
11462, for example, was reported to be on line 1462.
This problem has been fixed in SR9.6.
o [UCR 0d885399] Prior to this release, the compiler would sometimes
produce incorrect code for comparison expressions involving a Boolean
variable. The problem arose when a constant non-Boolean value was
converted to Boolean with the Boolean function and then assigned to
a Boolean variable. If the Boolean variable was then tested for
truth or falseness, the compiler would erroneously test for zero or
non-zero. The proper test for Boolean values is negative (true) or
non-negative (false).
This problem has been fixed in SR9.6.
o [UCR 0d885678] A simple error caused the Pascal compiler to
prematurely give up, rather than checking code for other errors. A
short program that exhibits this problem appears below:
program t;
procedure x;
begin
end;
begin
x(0);
end.
4-1 Pascal Release at SR9.6
Using the sr9.5.1 compiler the result was:
$ pas test
(0008) x(0);
******** Line 8: [Error 081]
Too many arguments to X.
******** Line 0: [Error 281]
Too many compilation errors
- compilation terminated.
Using the SR9.2 compiler the result was:
$ pas_sr9.2 test
(0008) x (0);
******** Line 8: [Error 081] Too many arguments to X.
1 error, no warnings, Pascal Rev 6.3348
4.2 Known Limitations at SR9.6
The following is a list of known limitations in SR9.6 version of DOMAIN
Pascal:
o Comparing packed records can produce inaccurate results. This
is because a packed record may have unallocated holes in it whose
values will be tested by the comparison code. Since storage
space for packed records is not cleared when the record is
allocated, "garbage" bits encountered in the comparison will
make a truly equal pair of records fail the test for equality.
This error also can occur with unpacked records. For example:
type
xrec = record
a : char;
b : integer;
end;
There is a one-byte filler between a and b so that b can be
aligned on a word boundary. If your code then includes the following:
var
r,s : xrec;
.
.
.
if r = s then . . .
Pascal Release at SR9.6 4-2
the compiler would generate code to compare the one-byte fillers
as well as a and b. Since those fillers never are initialized,
they might not be equal.
o When you use WRITE or WRITELN to output a large number (whose
numerical value is equal or bigger than 1.00 E100) to standard
output, and the number is stored as DOUBLE, the exponential character
'E' will be omitted. For example, if num is equal to 1.0 E100,
WRITE(num) or WRITELN(num) will output the following to the screen:
1.000000000000001+100
4-3 Pascal Release at SR9.6