753 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			753 lines
		
	
	
	
		
			16 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.\" $Id$
 | 
						|
.ll 72n
 | 
						|
.wh 0 hd
 | 
						|
.wh 60 fo
 | 
						|
.de hd
 | 
						|
'sp 5
 | 
						|
..
 | 
						|
.de fo
 | 
						|
'bp
 | 
						|
..
 | 
						|
.tr ~
 | 
						|
.               PARAGRAPH
 | 
						|
.de PP
 | 
						|
.sp
 | 
						|
..
 | 
						|
.               CHAPTER
 | 
						|
.de CH
 | 
						|
.br
 | 
						|
.ne 15
 | 
						|
.sp 3
 | 
						|
.in 0
 | 
						|
\\fB\\$1\\fR
 | 
						|
.in 5
 | 
						|
.PP
 | 
						|
..
 | 
						|
.               SUBCHAPTER
 | 
						|
.de SH
 | 
						|
.br
 | 
						|
.ne 10
 | 
						|
.sp
 | 
						|
.in 5
 | 
						|
\\fB\\$1\\fR
 | 
						|
.in 10
 | 
						|
.PP
 | 
						|
..
 | 
						|
.               INDENT START
 | 
						|
.de IS
 | 
						|
.sp
 | 
						|
.in +5
 | 
						|
..
 | 
						|
.               INDENT END
 | 
						|
.de IE
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
..
 | 
						|
.               DOUBLE INDENT START
 | 
						|
.de DS
 | 
						|
.sp
 | 
						|
.in +5
 | 
						|
.ll -5
 | 
						|
..
 | 
						|
.               DOUBLE INDENT END
 | 
						|
.de DE
 | 
						|
.ll +5
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
..
 | 
						|
.               EQUATION START
 | 
						|
.de EQ
 | 
						|
.sp
 | 
						|
.nf
 | 
						|
..
 | 
						|
.               EQUATION END
 | 
						|
.de EN
 | 
						|
.fi
 | 
						|
.sp
 | 
						|
..
 | 
						|
.               TEST
 | 
						|
.de TT
 | 
						|
.ti -5
 | 
						|
Test~\\$1:~
 | 
						|
.br
 | 
						|
..
 | 
						|
.               IMPLEMENTATION 1
 | 
						|
.de I1
 | 
						|
.br
 | 
						|
Implementation~1:
 | 
						|
..
 | 
						|
.               IMPLEMENTATION 2
 | 
						|
.de I2
 | 
						|
.br
 | 
						|
Implementation~2:
 | 
						|
..
 | 
						|
.de CS
 | 
						|
.br
 | 
						|
~-~\\
 | 
						|
..
 | 
						|
.br
 | 
						|
.fi
 | 
						|
.sp 5
 | 
						|
.ce
 | 
						|
\fBPascal Validation Suite Report\fR
 | 
						|
.CH "Pascal processor identification"
 | 
						|
The ACK-Pascal compiler produces code for an EM machine
 | 
						|
as defined in [1].
 | 
						|
It is up to the implementor of the EM machine whether errors like
 | 
						|
integer overflow, undefined operand and range bound error are recognized or not.
 | 
						|
Therefore it depends on the EM machine implementation whether these errors
 | 
						|
are recognized in Pascal programs or not.
 | 
						|
The validation suite results of all known implementations are given.
 | 
						|
.PP
 | 
						|
There does not (yet) exist a hardware EM machine.
 | 
						|
Therefore, EM programs must be interpreted, or translated into
 | 
						|
instructions for a target machine.
 | 
						|
The following implementations currently exist:
 | 
						|
.IS
 | 
						|
.I1
 | 
						|
an interpreter running on a PDP-11 (using UNIX).
 | 
						|
The normal mode of operation for this interpreter is to check
 | 
						|
for undefined integers, overflow, range errors etc.
 | 
						|
.sp
 | 
						|
.I2
 | 
						|
a translator into PDP-11 instructions (using UNIX).
 | 
						|
Less checks are performed than in the interpreter, because the translator
 | 
						|
is intended to speed up the execution of well-debugged programs.
 | 
						|
.IE
 | 
						|
.CH "Test Conditions"
 | 
						|
Tester: E.G. Keizer
 | 
						|
.br
 | 
						|
Date: October 1983
 | 
						|
.br
 | 
						|
Validation Suite version: 3.0
 | 
						|
.PP
 | 
						|
The final test run is made with a slightly
 | 
						|
modified validation suite.
 | 
						|
.SH "Erroneous programs"
 | 
						|
Some test did not conform to the standard proposal of February 1979.
 | 
						|
It is this version of the standard proposal that is used
 | 
						|
by the authors of the validation suite.
 | 
						|
.IS
 | 
						|
.TT 6.6.3.7-4
 | 
						|
The semicolon between high and integer on line 17 is replaced
 | 
						|
by a colon.
 | 
						|
.sp
 | 
						|
.TT 6.7.2.2-13
 | 
						|
The div operator on line 14 replaced by mod.
 | 
						|
.CH "Conformance tests"
 | 
						|
Number of tests passed = 150
 | 
						|
.br
 | 
						|
Number of tests failed = 6
 | 
						|
.SH "Details of failed tests"
 | 
						|
.IS
 | 
						|
.TT 6.1.2-1
 | 
						|
Character sequences starting with the 8 characters 'procedur'
 | 
						|
or 'function' are
 | 
						|
erroneously classified as the word-symbols 'procedure' and 'function'.
 | 
						|
.sp
 | 
						|
.TT 6.1.3-2
 | 
						|
Identifiers identical in the first eight characters, but
 | 
						|
differing in ninth or higher numbered characters are treated as
 | 
						|
identical.
 | 
						|
.sp
 | 
						|
.TT 6.5.1-1
 | 
						|
ACK-Pascal requires all formal program parameters to be
 | 
						|
declared with type \fIfile\fP.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.5-1
 | 
						|
Gives run-time error eof seen at call to eoln.
 | 
						|
A have a hunch that this is a error in the suit.
 | 
						|
.sp
 | 
						|
.TT 6.6.4.1-1
 | 
						|
Redefining the names of some standard procedures leads to incorrect
 | 
						|
behaviour of the runtime system.
 | 
						|
In this case it crashes without a sensible error message.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.5.1-1
 | 
						|
This test can not be translated by our compiler because two
 | 
						|
non-identical variables are used in the same block with the same first eight
 | 
						|
characters.
 | 
						|
The test passed after replacement of one of those names.
 | 
						|
.IE
 | 
						|
.CH "Deviance tests"
 | 
						|
Number of deviations correctly detected = 120
 | 
						|
.br
 | 
						|
Number of tests not detecting deviations = 20
 | 
						|
.SH "Details of deviations"
 | 
						|
The following tests are compiled without a proper error
 | 
						|
indication although they do
 | 
						|
not conform to the standard.
 | 
						|
.IS
 | 
						|
.TT 6.1.6-5
 | 
						|
ACK-Pascal allows labels in the range 0..32767.
 | 
						|
A warning is produced when testing for deviations from the
 | 
						|
standard.
 | 
						|
.sp
 | 
						|
.TT 6.1.8-5
 | 
						|
A missing space between a number and a word symbol is not
 | 
						|
detected.
 | 
						|
.sp
 | 
						|
.TT 6.2.2-8
 | 
						|
.TT 6.3-6
 | 
						|
.TT 6.4.1-3
 | 
						|
.TT 6.6.1-3
 | 
						|
.TT 6.6.1-4
 | 
						|
Undetected scope error. The scope of an identifier should start at the
 | 
						|
beginning of the block in which it is declared.
 | 
						|
In the ACK-Pascal compiler the scope starts just after the declaration,
 | 
						|
however.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.3-7
 | 
						|
The values of fields from one variant are accessible from
 | 
						|
another variant.
 | 
						|
The correlation is exact.
 | 
						|
.sp
 | 
						|
.TT 6.6.3.3-4
 | 
						|
The passing as a variable parameter of the selector of a
 | 
						|
variant part is not detected.
 | 
						|
A runtime error is produced because the variant selector is not
 | 
						|
initialized.
 | 
						|
.sp
 | 
						|
.TT 6.8.2.4-2
 | 
						|
.TT 6.8.2.4-3
 | 
						|
.TT 6.8.2.4-4
 | 
						|
.TT 6.8.2.4-5
 | 
						|
.TT 6.8.2.4-6
 | 
						|
The ACK-Pascal compiler does not restrict the places from where
 | 
						|
a jump to a label by means of a goto-statement is allowed.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.9-5
 | 
						|
.TT 6.8.3.9-6
 | 
						|
.TT 6.8.3.9-7
 | 
						|
.TT 6.8.3.9-16
 | 
						|
There are no errors produced for assignments to a variable
 | 
						|
in use as control-variable of a for-statement.
 | 
						|
.TT 6.8.3.9-8
 | 
						|
.TT 6.8.3.9-9
 | 
						|
Use of a controlled variable after leaving the loop without
 | 
						|
intervening initialization is not detected.
 | 
						|
.IE
 | 
						|
.CH "Error handling"
 | 
						|
The results depend on the EM implementation.
 | 
						|
.sp
 | 
						|
Number of errors correctly detected =
 | 
						|
.in +5
 | 
						|
.I1
 | 
						|
32
 | 
						|
.I2
 | 
						|
17
 | 
						|
.in -5
 | 
						|
Number of errors not detected =
 | 
						|
.in +5
 | 
						|
.I1
 | 
						|
21
 | 
						|
.I2
 | 
						|
36
 | 
						|
.in -5
 | 
						|
Number of errors incorrectly detected =
 | 
						|
.in +5
 | 
						|
.I1
 | 
						|
2
 | 
						|
.I2
 | 
						|
2
 | 
						|
.in -5
 | 
						|
.SH "Details of errors not detected"
 | 
						|
The following test fails because the ACK-Pascal compiler only
 | 
						|
generates a warning that does not prevent to run the tests.
 | 
						|
.IS
 | 
						|
.TT 6.6.2-8
 | 
						|
A warning is produced if there is no assignment to a function-identifier.
 | 
						|
.IE
 | 
						|
With this test the ACK-Pascal compiler issues an error message for a legal
 | 
						|
construct not directly related to the error to be detected.
 | 
						|
.IS
 | 
						|
.TT 6.5.5-2
 | 
						|
Program does not compile.
 | 
						|
Buffer variable of text file is not allowed as variable
 | 
						|
parameter.
 | 
						|
.IE
 | 
						|
The following errors are not detected at all.
 | 
						|
.IS
 | 
						|
.TT 6.2.1-11
 | 
						|
.I2
 | 
						|
The use of an undefined integer is not caught as an error.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.3-10
 | 
						|
.TT 6.4.3.3-11
 | 
						|
.TT 6.4.3.3-12
 | 
						|
.TT 6.4.3.3-13
 | 
						|
The notion of 'current variant' is not implemented, not even if a tagfield
 | 
						|
is present.
 | 
						|
.sp
 | 
						|
.TT 6.4.5-15
 | 
						|
.TT 6.4.6-9
 | 
						|
.TT 6.4.6-10
 | 
						|
.TT 6.4.6-11
 | 
						|
.TT 6.5.3.2-2
 | 
						|
.I2
 | 
						|
Subrange bounds are not checked.
 | 
						|
.sp
 | 
						|
.TT 6.4.6-12
 | 
						|
.TT 6.4.6-13
 | 
						|
.TT 6.7.2.4-4
 | 
						|
If the base-type of a set is a subrange, then the set elements are not checked
 | 
						|
against the bounds of the subrange.
 | 
						|
Only the host-type of this subrange-type is relevant for ACK-Pascal.
 | 
						|
.sp
 | 
						|
.TT 6.5.4-1
 | 
						|
.I2
 | 
						|
Nil pointers are not detected.
 | 
						|
.sp
 | 
						|
.TT 6.5.4-2
 | 
						|
.I2
 | 
						|
Undefined pointers are not detected.
 | 
						|
.sp
 | 
						|
.TT 6.5.5-3
 | 
						|
Changing the file position while the window is in use as actual variable
 | 
						|
parameter or as an element of the record variable list of a with-statement
 | 
						|
is not detected.
 | 
						|
.sp
 | 
						|
.TT 6.6.2-9
 | 
						|
An undefined function result is not detected,
 | 
						|
because it is never used in an expression.
 | 
						|
.sp
 | 
						|
.TT 6.6.5.3-6
 | 
						|
.TT 6.6.5.3-7
 | 
						|
Disposing a variable while it is in use as actual variable parameter or
 | 
						|
as an element of the record variable list of a with-statement is not detected.
 | 
						|
.sp
 | 
						|
.TT 6.6.5.3-8
 | 
						|
.TT 6.6.5.3-9
 | 
						|
.TT 6.6.5.3-10
 | 
						|
It is not detected that a record variable, created with the variant form
 | 
						|
of new, is used as an operand in an expression or as the variable in an
 | 
						|
assignment or as an actual value parameter.
 | 
						|
.sp
 | 
						|
.TT 6.6.5.3-11
 | 
						|
Use of a variable that is not reinitialized after a dispose is
 | 
						|
not detected.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.4-4
 | 
						|
.TT 6.6.6.4-5
 | 
						|
.TT 6.6.6.4-7
 | 
						|
.I2
 | 
						|
There are no range checks for pred, succ and chr.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.5-6
 | 
						|
ACK-Pascal considers a rewrite of a file as a defining
 | 
						|
occurence.
 | 
						|
.sp
 | 
						|
.TT 6.7.2.2-8
 | 
						|
.TT 6.7.2.2-9
 | 
						|
.TT 6.7.2.2-10
 | 
						|
.TT 6.7.2.2-12
 | 
						|
.I2
 | 
						|
Division by 0 or integer overflow is not detected.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.9-18
 | 
						|
The use of the some control variable in two nested for
 | 
						|
statements in not detected.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.9-19
 | 
						|
Access of a control variable after leaving the loop results in
 | 
						|
the final-value, although an error should be produced.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.2-3
 | 
						|
The program stops with a file not open error.
 | 
						|
The rewrite before the write is missing in the program.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.2-4
 | 
						|
.TT 6.9.3.2-5
 | 
						|
Illegal FracDigits values are not detected.
 | 
						|
.CH "Implementation dependence"
 | 
						|
Number of tests run = 14
 | 
						|
.br
 | 
						|
Number of tests incorrectly handled = 0
 | 
						|
.SH "Details of implementation dependence"
 | 
						|
.IS
 | 
						|
.TT 6.1.9-5
 | 
						|
Alternate comment delimiters are implemented
 | 
						|
.sp
 | 
						|
.TT 6.1.9-6
 | 
						|
The equivalent symbols @ for ^, (. for [ and .) for ] are not
 | 
						|
implemented.
 | 
						|
.sp
 | 
						|
.TT 6.4.2.2-10
 | 
						|
Maxint = 32767
 | 
						|
.sp
 | 
						|
.TT 6.4.3.4-5
 | 
						|
Only elements with non-negative ordinal value are allowed in sets.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.1-1
 | 
						|
Standard procedures and functions are not allowed as parameters.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-11
 | 
						|
Details of the machine characteristics regarding real numbers:
 | 
						|
.IS
 | 
						|
.nf
 | 
						|
beta =       2
 | 
						|
t =         56
 | 
						|
rnd =        1
 | 
						|
ngrd =       0
 | 
						|
machep =   -56
 | 
						|
negep =    -56
 | 
						|
iexp =       8
 | 
						|
minexp =  -128
 | 
						|
maxexp =   127
 | 
						|
eps =     1.387779e-17
 | 
						|
epsneg =  1.387779e-17
 | 
						|
xmin =    2.938736e-39
 | 
						|
xmax =    1.701412e+38
 | 
						|
.fi
 | 
						|
.IE
 | 
						|
.sp
 | 
						|
.TT 6.7.2.3-3
 | 
						|
.TT 6.7.2.3-4
 | 
						|
All operands of boolean expressions are evaluated.
 | 
						|
.sp
 | 
						|
.TT 6.8.2.2-1
 | 
						|
.TT 6.8.2.2-2
 | 
						|
The expression in an assignment statement is evaluated
 | 
						|
before the variable selection if this involves pointer
 | 
						|
dereferencing or array indexing.
 | 
						|
.sp
 | 
						|
.TT 6.8.2.3-2
 | 
						|
Actual parameters are evaluated in reverse order.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.2-6
 | 
						|
The default width for integer, Boolean and real are 6, 5 and 13.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.5.1-2
 | 
						|
The number of digits written in an exponent is 2.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.6-1
 | 
						|
The representations of true and false are (~true) and (false).
 | 
						|
The parenthesis serve to indicate width.
 | 
						|
.IE
 | 
						|
.CH "Quality measurement"
 | 
						|
Number of tests run = 60
 | 
						|
.br
 | 
						|
Number of tests handled incorrectly = 1
 | 
						|
.SH "Results of tests"
 | 
						|
Several test perform operations on reals on indicate the error
 | 
						|
introduced by these operations.
 | 
						|
For each of these tests the following two quality measures are extracted:
 | 
						|
.sp
 | 
						|
.in +5
 | 
						|
maxRE:~~maximum relative error
 | 
						|
.br
 | 
						|
rmsRE:~~root-mean-square relative error
 | 
						|
.in -5
 | 
						|
.sp 2
 | 
						|
.IS
 | 
						|
.TT 1.2-1
 | 
						|
.I1
 | 
						|
25 thousand Whetstone instructions per second.
 | 
						|
.I2
 | 
						|
169 thousand Whetstone instructions per second.
 | 
						|
.sp
 | 
						|
.TT 1.2-2
 | 
						|
The value of (TRUEACC-ACC)*2^56/100000 is 1.4 .
 | 
						|
This is well within the bounds specified in [3].
 | 
						|
.br
 | 
						|
The GAMM measure is:
 | 
						|
.I1
 | 
						|
238 microseconds
 | 
						|
.I2
 | 
						|
26.3 microseconds.
 | 
						|
.sp
 | 
						|
.TT 1.2-3
 | 
						|
The number of procedure calls calculated in this test exceeds
 | 
						|
the maximum integer value.
 | 
						|
The program stops indicating overflow.
 | 
						|
.sp
 | 
						|
.TT 6.1.3-3
 | 
						|
The number of significant characters for identifiers is 8.
 | 
						|
.sp
 | 
						|
.TT 6.1.5-8
 | 
						|
There is no maximum to the line length.
 | 
						|
.sp
 | 
						|
.TT 6.1.5-9
 | 
						|
The error message "too many digits" is given for numbers larger
 | 
						|
than maxint.
 | 
						|
.sp
 | 
						|
.TT 6.1.5-10
 | 
						|
.TT 6.1.5-11
 | 
						|
.TT 6.1.5-12
 | 
						|
Normal values are allowed for real constants and variables.
 | 
						|
.sp
 | 
						|
.TT 6.1.7-14
 | 
						|
A reasonably large number of strings is allowed.
 | 
						|
.sp
 | 
						|
.TT 6.1.8-6
 | 
						|
No warning is given for possibly unclosed comments.
 | 
						|
.sp
 | 
						|
.TT 6.2.1-12
 | 
						|
.TT 6.2.1-13
 | 
						|
.TT 6.2.1-14
 | 
						|
.TT 6.2.1-15
 | 
						|
.TT 6.5.1-2
 | 
						|
Large lists of declarations are possible in each block.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.2-6
 | 
						|
An 'array[integer] of' is not allowed.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.2-7
 | 
						|
.TT 6.4.3.2-8
 | 
						|
Large values are allowed for arrays and indices.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.3-14
 | 
						|
Large amounts of case-constant values are allowed in variants.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.3-15
 | 
						|
Large amounts of record sections can appear in the fixed part of
 | 
						|
a record.
 | 
						|
.sp
 | 
						|
.TT 6.4.3.3-16
 | 
						|
Large amounts of variants are allowed in a record.
 | 
						|
.TT 6.4.3.4-4
 | 
						|
Size and speed of Warshall's algorithm depend on the
 | 
						|
implementation of EM:
 | 
						|
.IS
 | 
						|
.I1
 | 
						|
.br
 | 
						|
size: 122 bytes
 | 
						|
.br
 | 
						|
speed: 5.2 seconds
 | 
						|
.sp
 | 
						|
.I2
 | 
						|
.br
 | 
						|
size: 196 bytes
 | 
						|
.br
 | 
						|
speed: 0.7 seconds
 | 
						|
.IE
 | 
						|
.TT 6.5.3.2-3
 | 
						|
Deep nesting of array indices is allowed.
 | 
						|
.sp
 | 
						|
.TT 6.5.3.2-4
 | 
						|
.TT 6.5.3.2-5
 | 
						|
Arrays can have at least 8 dimensions.
 | 
						|
.sp
 | 
						|
.TT 6.6.1-8
 | 
						|
Deep static nesting of procedure is allowed.
 | 
						|
.sp
 | 
						|
.TT 6.6.3.1-6
 | 
						|
Large amounts of formal parameters are allowed.
 | 
						|
.sp
 | 
						|
.TT 6.6.5.3-12
 | 
						|
Dispose is fully implemented.
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-6
 | 
						|
Test sqrt(x): no errors.
 | 
						|
The error is within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-55.50
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-57.53
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-7
 | 
						|
Test arctan(x): may cause underflow or overflow errors.
 | 
						|
The error is within acceptable bounds.
 | 
						|
.in +5
 | 
						|
.br
 | 
						|
maxRE:~~2~**~-55.00
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-56.36
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-8
 | 
						|
Test exp(x): may cause underflow or overflow errors.
 | 
						|
The error is not within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-50.03
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-51.03
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-9
 | 
						|
Test sin(x): may cause underflow errors.
 | 
						|
The error is not within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-38.20
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-43.68
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
Test cos(x): may cause underflow errors.
 | 
						|
The error is not within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-41.33
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-46.62
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.6.6.2-10
 | 
						|
Test ln(x):
 | 
						|
The error is not within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-54.05
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-55.77
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.7.1-3
 | 
						|
.TT 6.7.1-4
 | 
						|
.TT 6.7.1-5
 | 
						|
Complex nested expressions are allowed.
 | 
						|
.sp
 | 
						|
.TT 6.7.2.2-14
 | 
						|
Test real division:
 | 
						|
The error is within acceptable bounds.
 | 
						|
.in +5
 | 
						|
maxRE:~~0
 | 
						|
.br
 | 
						|
rmsRE:~~0
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.7.2.2-15
 | 
						|
Operations of reals in the integer range are exact.
 | 
						|
.sp
 | 
						|
.TT 6.7.3-1
 | 
						|
.TT 6.8.3.2-1
 | 
						|
.TT 6.8.3.4-2
 | 
						|
.TT 6.8.3.5-15
 | 
						|
.TT 6.8.3.7-4
 | 
						|
.TT 6.8.3.8-3
 | 
						|
.TT 6.8.3.9-20
 | 
						|
.TT 6.8.3.10-7
 | 
						|
Static deep nesting of function calls,
 | 
						|
compound statements, if statements, case statements, repeat
 | 
						|
loops, while loops, for loops and with statements is possible.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.2-2
 | 
						|
Large amounts of statements are allowed in a compound
 | 
						|
statement.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.5-12
 | 
						|
The compiler requires case constants to be compatible with
 | 
						|
the case selector.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.5-13
 | 
						|
.TT 6.8.3.5-14
 | 
						|
Large case statements are possible.
 | 
						|
.sp
 | 
						|
.TT 6.9-2
 | 
						|
Recursive IO on the same file is well-behaved.
 | 
						|
.sp
 | 
						|
.TT 6.9.1-6
 | 
						|
The reading of real values from a text file is done with
 | 
						|
sufficient accuracy.
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-54.61
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-56.32
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.9.1-7
 | 
						|
.TT 6.9.2-2
 | 
						|
.TT 6.9.3-3
 | 
						|
.TT 6.9.4-2
 | 
						|
Read, readln, write and writeln may have large amounts of
 | 
						|
parameters.
 | 
						|
.sp
 | 
						|
.TT 6.9.1-8
 | 
						|
The loss of precision for reals written on a text file and read
 | 
						|
back is:
 | 
						|
.in +5
 | 
						|
maxRE:~~2~**~-53.95
 | 
						|
.br
 | 
						|
rmsRE:~~2~**~-55.90
 | 
						|
.in -5
 | 
						|
.sp
 | 
						|
.TT 6.9.3-2
 | 
						|
File IO buffers without trailing marker are correctly flushed.
 | 
						|
.sp
 | 
						|
.TT 6.9.3.5.2-2
 | 
						|
Reals are written with sufficient accuracy.
 | 
						|
.in +5
 | 
						|
maxRE:~~0
 | 
						|
.br
 | 
						|
rmsRE:~~0
 | 
						|
.in -5
 | 
						|
.IE
 | 
						|
.CH "Level 1 conformance tests"
 | 
						|
Number of test passed = 4
 | 
						|
.br
 | 
						|
Number of tests failed = 1
 | 
						|
.SH "Details of failed tests"
 | 
						|
.IS
 | 
						|
.TT 6.6.3.7-4
 | 
						|
An expression indicated by parenthesis whose
 | 
						|
value is a conformant array is not allowed.
 | 
						|
.IE
 | 
						|
.CH "Level 1 deviance tests"
 | 
						|
Number of deviations correctly detected = 4
 | 
						|
.br
 | 
						|
Number of tests not detecting deviations = 0
 | 
						|
.IE
 | 
						|
.CH "Level 1 error handling"
 | 
						|
The results depend on the EM implementation.
 | 
						|
.sp
 | 
						|
Number of errors correctly detected =
 | 
						|
.in +5
 | 
						|
.I1
 | 
						|
1
 | 
						|
.I2
 | 
						|
0
 | 
						|
.in -5
 | 
						|
Number of errors not detected =
 | 
						|
.in +5
 | 
						|
.I1
 | 
						|
0
 | 
						|
.I2
 | 
						|
1
 | 
						|
.in -5
 | 
						|
.SH "Details of errors not detected"
 | 
						|
.IS
 | 
						|
.TT 6.6.3.7-9
 | 
						|
.I2
 | 
						|
Subrange bounds are not checked.
 | 
						|
.IE
 | 
						|
.CH "Level 1 quality measurement"
 | 
						|
Number of tests run = 1
 | 
						|
.SH "Results of test"
 | 
						|
.IS
 | 
						|
.TT 6.6.3.7-10
 | 
						|
Large conformant arrays are allowed.
 | 
						|
.IE
 | 
						|
.CH "Extensions"
 | 
						|
Number of tests run = 3
 | 
						|
.SH Details of test failed
 | 
						|
.IS
 | 
						|
.TT 6.1.9-7
 | 
						|
The alternative relational operators are not allowed.
 | 
						|
.sp
 | 
						|
.TT 6.1.9-8
 | 
						|
The alternative symbols for colon, semicolon and assignment are
 | 
						|
not allowed.
 | 
						|
.sp
 | 
						|
.TT 6.8.3.5-16
 | 
						|
The otherwise selector in case statements is not allowed.
 | 
						|
.IE
 | 
						|
.CH "References"
 | 
						|
.ti -5
 | 
						|
[1]~~\
 | 
						|
A.S.Tanenbaum, E.G.Keizer, J.W.Stevenson, Hans van Staveren,
 | 
						|
"Description of a machine architecture for use with block structured
 | 
						|
languages",
 | 
						|
Informatica rapport IR-81.
 | 
						|
.ti -5
 | 
						|
[2]~~\
 | 
						|
ISO standard proposal ISO/TC97/SC5-N462, dated February 1979.
 | 
						|
The same proposal, in slightly modified form, can be found in:
 | 
						|
A.M.Addyman e.a., "A draft description of Pascal",
 | 
						|
Software, practice and experience, May 1979.
 | 
						|
An improved version, received March 1980,
 | 
						|
is followed as much as possible for the
 | 
						|
current ACK-Pascal.
 | 
						|
.ti -5
 | 
						|
[3]~~\
 | 
						|
B. A. Wichman and J du Croz,
 | 
						|
A program to calculate the GAMM measure, Computer Journal,
 | 
						|
November 1979.
 |