Check-in [ec0b3dba13]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:P5 Pascal Compiler upgrade
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:ec0b3dba13436e8068f728a2d42af771cb0f7013
User & Date: tonyp 2014-10-16 09:22:10
Context
2014-10-20
11:05
Added missing comment closing brace (pint.pas) check-in: e0844d3905 user: tonypdmtr tags: trunk
2014-10-16
09:22
P5 Pascal Compiler upgrade check-in: ec0b3dba13 user: tonyp tags: trunk
09:17
Original P4 Pascal Compiler check-in: 8e126288ba user: tonyp tags: trunk
Changes

Added The_Programming_Language_Pascal_1973.pdf.

cannot compute difference between binary files

Added build.













>
>
>
>
>
>
1
2
3
4
5
6
#!/bin/bash
#
# Simply builds the system with whatever compiler is selected.
#
./cpcom
./cpint

Added build.bat.













>
>
>
>
>
>
1
2
3
4
5
6
@echo off
rem
rem Simply builds the system with whatever compiler is selected.
rem
call cpcom
call cpint

Added compile.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
#
# Compile file in batch mode using IP Pascal.
#
# Runs a compile with the input and output coming from/
# going to files.
# 
# Execution:
# 
# Compile <file>
#
# <file> is the filename without extention.
#
# The files are:
#
# <file>.pas - The Pascal source file
# <file>.p5  - The intermediate file produced
# <file>.err - The errors output from the compiler
#
# Note that the l+ option must be specified to get a full
# listing in the .err file (or just a lack of l-).
#

if [ -z "$1" ]
then
   echo "*** Error: Missing parameter"
   exit 1
fi

if [ ! -f $1.pas ]
then
   echo "*** Error: Missing $1.pas file"
   exit 1
fi

./pcom $1.p5 < $1.pas > $1.err

Added compile.bat.







































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@echo off
rem
rem Compile file in batch mode using IP Pascal.
rem
rem Runs a compile with the input and output coming from/
rem going to files.
rem 
rem Execution:
rem 
rem Compile <file>
rem
rem <file> is the filename without extention.
rem
rem The files are:
rem
rem <file>.pas - The Pascal source file
rem <file>.p5  - The intermediate file produced
rem <file>.err - The errors output from the compiler
rem
rem Note that the l+ option must be specified to get a full
rem listing in the .err file (or just a lack of l-).
rem

rem
rem Check there is a parameter
rem
if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok

rem
rem Check the source file exists
rem
if exist "%1.pas" goto fileexists
echo *** Error: Missing %1.pas file
goto stop
:fileexists

rem
rem Run the compile
rem
pcom %1.p5 < %1.pas > %1.err

rem
rem Set the error status of the compile
rem
rem This will be zero if the compile was sucessful
rem
grep "Errors in program: 0" %1.err > %1.tmp
rem echo Error return after compile: %errorlevel%
if errorlevel 1 (

    rem
    rem For failed compiles, remove the intermediate file
    rem so it can't be run.
    rem
    echo Compile fails, examine the %1.err file
    del %1.p5

)
rem del %1.tmp

rem
rem Terminate
rem
:stop

Added configure.











































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
#
# Set up compiler to use.
#
# Presently implements:
#
# IP Pascal, named "ip_pascal"
#
# GPC Pascal, named "GPC" (or "gpc")
#

if [ -z "$1" ]
then

   echo "*** Error: Missing parameter"
   echo "*** Must be \"ip_pascal\" or \"gpc\""
   exit 1

fi

if [ $1 = "ip_pascal" ]
then

   #
   # Set up for IP Pascal
   #
   cp ip_pascal/p5.bat      p5.bat
   cp ip_pascal/compile.bat compile.bat
   cp ip_pascal/run.bat     run.bat
   cp ip_pascal/cpcom.bat   cpcom.bat
   cp ip_pascal/cpint.bat   cpint.bat

   cp ip_pascal/p5          p5
   cp ip_pascal/compile     compile
   cp ip_pascal/run         run
   cp ip_pascal/cpcom       cpcom
   cp ip_pascal/cpint       cpint

   cp ip_pascal/standard_tests/iso7185pat.cmp standard_tests
   cp ip_pascal/standard_tests/iso7185pats.cmp standard_tests

   echo Compiler set to IP Pascal

elif [ $1 = "gpc" ] || [ $1 = "GPC" ]
then 

   #
   # Set up for GPC Pascal
   #
   cp gpc/p5.bat      p5.bat
   cp gpc/compile.bat compile.bat
   cp gpc/run.bat     run.bat
   cp gpc/cpcom.bat   cpcom.bat
   cp gpc/cpint.bat   cpint.bat

   cp gpc/p5          p5
   cp gpc/compile     compile
   cp gpc/run         run
   cp gpc/cpcom       cpcom
   cp gpc/cpint       cpint

   cp gpc/standard_tests/iso7185pat.cmp standard_tests
   cp gpc/standard_tests/iso7185pats.cmp standard_tests

   #
   # GPC has been problematic for line endings. This changes them
   # all to Unix mode for GPC compiles, which at this moment is
   # all there is. GPC for Windows has serious problems.
   #
   unixeol

   echo Compiler set to GPC Pascal

else

   #
   # No compiler name found!
   #
   echo "*** Compiler name does not match currently implemented"
   echo "*** compilers"
   echo
   echo "IP Pascal  - use \"ip_pascal\""
   echo "GPC Pascal - use \"GPC\""

fi

Added configure.bat.



























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@echo off
rem
rem Set up compiler to use.
rem
rem Presently implements:
rem
rem IP Pascal, named "ip_pascal"
rem
rem GPC Pascal, named "GPC" (or "gpc")
rem

if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok

if not "%1"=="ip_pascal" goto chkgpc
rem
rem Set up for IP Pascal
rem
cp ip_pascal\p5.bat      p5.bat
cp ip_pascal\compile.bat compile.bat
cp ip_pascal\run.bat     run.bat
cp ip_pascal\cpcom.bat   cpcom.bat
cp ip_pascal\cpint.bat   cpint.bat

cp ip_pascal\p5          p5
cp ip_pascal\compile     compile
cp ip_pascal\run         run
cp ip_pascal\cpcom       cpcom
cp ip_pascal\cpint       cpint

cp ip_pascal\standard_tests/iso7185pat.cmp standard_tests
cp ip_pascal\standard_tests/iso7185pats.cmp standard_tests

echo Compiler set to IP Pascal
goto stop
:chkgpc

if "%1"=="gpc" goto dogpc
if not "%1"=="GPC" goto nonefound
:dogpc
rem
rem Set up for GPC Pascal
rem
cp gpc\p5.bat      p5.bat
cp gpc\compile.bat compile.bat
cp gpc\run.bat     run.bat
cp gpc\cpcom.bat   cpcom.bat
cp gpc\cpint.bat   cpint.bat

cp gpc\p5          p5
cp gpc\compile     compile
cp gpc\run         run
cp gpc\cpcom       cpcom
cp gpc\cpint       cpint

cp gpc/standard_tests/iso7185pat.cmp standard_tests
cp gpc/standard_tests/iso7185pats.cmp standard_tests

echo Compiler set to GPC Pascal
goto stop

rem
rem No compiler name found!
rem
:nonefound
echo *** Compiler name does not match currently implemented
echo *** compilers.
echo. 
echo IP Pascal  - use "ip_pascal"
echo GPC Pascal - use "GPC"
echo.
rem
rem Terminate script
rem
:stop

Added cpcom.





































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Compile pcom using IP Pascal
#
# *** This script does not work, use the .bat file.
# There is a problem with getting command parameters from Bash.
#

if [ ! -f pcom.pas ]
then
   echo "*** Error: Missing pcom.pas file"
   exit 1
fi

echo
echo Compiling pcom.pas to create pcom.exe
echo
echo pc pcom /standard /nrf /r

Added cpcom.bat.







































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
rem
rem Compile pcom using IP Pascal
rem

if exist "pcom.pas" goto fileexists
echo *** Error: Missing pcom.pas file
goto stop
:fileexists

echo.
echo Compiling pcom.pas to create pcom.exe
echo.
pc pcom/standard/nrf/r

rem
rem Terminate
rem
:stop

Added cpcoms.





































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
#
# Script to run a pcom self compile
#
# First, change elide patterns to #ove prr file statements.
# The modified file goes in pcomm.pas (pcom modified).
#
sed -e 's/{elide}/{/g' -e 's/{noelide}/}/g' pcom.pas > pcomm.pas
#
# Compile pcom to intermediate code using its binary version.
#
echo Compiling pcom to intermediate code
./compile pcomm
cat pcomm.err
#
# Now run that code on the interpreter and have it compile itself
# to intermediate again.
#
echo Running pcom to compile itself
cp pcomm.pas pcomm.inp
./run pcomm
cat pcomm.lst
#
# Now we have the original intermediate from the binary version
# of pcom, and the intermediate generated by the interpreted
# pcom. Compare them for equality. Put the result in pcomm.dif.
#
echo Comparing the intermediate code for the runs
diffnole pcomm.p5 pcomm.out > pcomm.dif
#
# Show the file, so if the length is zero, it compared ok.
#
echo Resulting diff file length should be zero for pass
ls -l pcomm.dif

Added cpcoms.bat.





































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@echo off
rem
rem Script to run a pcom self compile
rem
rem First, change elide patterns to remove prr file statements.
rem The modified file goes in pcomm.pas (pcom modified).
rem
sed -e 's/{elide}/{/g' -e 's/{noelide}/}/g' pcom.pas > pcomm.pas
rem
rem Compile pcom to intermediate code using its binary version.
rem
echo Compiling pcom to intermediate code
call compile pcomm
type pcomm.err
rem
rem Now run that code on the interpreter and have it compile itself
rem to intermediate again.
rem
echo Running pcom to compile itself
cp pcomm.pas pcomm.inp
call run pcomm
type pcomm.lst
rem
rem Now we have the original intermediate from the binary version
rem of pcom, and the intermediate generated by the interpreted
rem pcom. Compare them for equality. Put the result in pcomm.dif.
rem
echo Comparing the intermediate code for the runs
call diffnole pcomm.p5 pcomm.out > pcomm.dif
rem
rem Show the file, so if the length is zero, it compared ok.
rem
echo Resulting diff file length should be zero for pass
dir pcomm.dif

Added cpint.





































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Compile pint using IP Pascal
#
# This script does not work, use the .bat file.
# There is a problem with getting command parameters from Bash.
#

if [ ! -f pint.pas ]
then
   echo "*** Error: Missing pint.pas file"
   exit 1
fi

echo
echo Compiling pint.pas to create pint.exe
echo
pc pint/standard/nrf/r

Added cpint.bat.







































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
rem
rem Compile pcom using IP Pascal
rem

if exist "pcom.pas" goto fileexists
echo *** Error: Missing pcom.pas file
goto stop
:fileexists

echo.
echo Compiling pint.pas to create pint.exe
echo.
pc pint/standard/nrf/r

rem
rem Terminate
rem
:stop

Added cpints.



















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
#
# Script to run a pint self compile
#
# First, change elide patterns to #ove prd and prr file statements.
# The modified file goes in pintm.pas (pint modified).
#
sed -e 's/{elide}/{/g' -e 's/{noelide}/}/g' -e 's/{remove//g' -e 's/remove}//g' pint.pas > pintm.pas
#
# Compile the final target, the PAT
#
echo Compiling the ISO 7185 PAT
./compile standard_tests/iso7185pat
cat standard_tests/iso7185pat.err
#
# Compile pint itself
#
echo Compiling pint to intermediate code
./compile pintm
cat pintm.err
#
# Add the final target program (the pat) to the end of pint.
# This means that the version of pint will read and interpret
# this.
#
cat pintm.p5 standard_tests/iso7185pat.p5 > tmp.p5
rm pintm.p5
mv tmp.p5 pintm.p5
#
# Now run pint on pint, which runs the PAT.
#
echo Running pint on itself, to run the ISO 7185 PAT
./run pintm
cp pintm.lst standard_tests/iso7185pats.lst
echo Comparing PAT result to reference
diffnole standard_tests/iso7185pats.lst standard_tests/iso7185pats.cmp > standard_tests/iso7185pats.dif
#
# Show the file, so if the length is zero, it compared ok.
#
echo Resulting diff file length should be zero for pass
ls -l standard_tests/iso7185pats.dif

Added cpints.bat.



















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
rem
rem Script to run a pint self compile
rem
rem First, change elide patterns to remove prd and prr file statements.
rem The modified file goes in pintm.pas (pint modified).
rem
sed -e 's/{elide}/{/g' -e 's/{noelide}/}/g' -e 's/{remove//g' -e 's/remove}//g' pint.pas > pintm.pas
rem
rem Compile the final target, the PAT
rem
echo Compiling the ISO 7185 PAT
call compile standard_tests\iso7185pat
type standard_tests\iso7185pat.err
rem
rem Compile pint itself
rem
echo Compiling pint to intermediate code
call compile pintm
type pintm.err
rem
rem Add the final target program (the pat) to the end of pint.
rem This means that the version of pint will read and interpret
rem this.
rem
cat pintm.p5 standard_tests\iso7185pat.p5 > tmp.p5
del pintm.p5
ren tmp.p5 pintm.p5
rem
rem Now run pint on pint, which runs the PAT.
rem
echo Running pint on itself, to run the ISO 7185 PAT
call run pintm
cp pintm.lst standard_tests\iso7185pats.lst
echo Comparing PAT result to reference
call diffnole standard_tests\iso7185pats.lst standard_tests\iso7185pats.cmp > standard_tests\iso7185pats.dif
rem
rem Show the file, so if the length is zero, it compared ok.
rem
echo Resulting diff file length should be zero for pass
dir standard_tests\iso7185pats.dif

Added deoln.c.





































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**********************************************************************
*
*                       CONVERT LINE ENDINGS TO DOS FORMAT
*
* Converts line endings to DOS format.
*
*/

#include <stdio.h>

main()

{

    int c;
    int lf = 0;
    int cr = 0;

    while ((c = getchar()) != EOF) {

        if (c == '\n') {

            if (cr) {

                /* Last was lf, this is cr, ignore */
                cr = 0;
                lf = 0;

            } else {

                /* output newline and flag last */
                putchar('\r');
                putchar('\n');
                lf = 1;

            }

         } else if (c == '\r') {

            if (lf) {

                /* last was cr, this is lf, ignore */
                cr = 0;
                lf = 0;
              
            } else {

                /* output newline and flag last */
                putchar('\r');
                putchar('\n');
                cr = 1;

            }

        } else {

            /* output normal character */
            putchar(c);
            cr = 0;
            lf = 0;

        }

    }

}

Added diffnole.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
#
# Difference without line endings
#
# Same as diff, but ignores the DOS/Unix line ending differences.
#

if [ -z "$1" ]
then

   echo "*** Error: Missing parameter 1"
   echo "*** s/b \"diffnole <file1> <file2>\""
   exit 1

fi

if [ -z "$2" ]
then

   echo "*** Error: Missing parameter 2"
   echo "*** s/b \"diffnole <file1> <file2>\""
   exit 1

fi

cp $1 tmp1
cp $2 tmp2
flip -u -b tmp1
flip -u -b tmp2
diff tmp1 tmp2
rm tmp1
rm tmp2

Added diffnole.bat.



















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
rem
rem Difference without line endings
rem
rem Same as diff, but ignores the DOS/Unix line ending differences.
rem

if not "%1"=="" goto paramok1
echo *** Error: Missing parameter 1
goto stop
:paramok1

if not "%2"=="" goto paramok2
echo *** Error: Missing parameter 2
goto stop
:paramok2

copy %1 %1.tmp > tmp3
copy %2 %2.tmp > tmp3
flip -u -b %1.tmp
flip -u -b %2.tmp
diff %1.tmp %2.tmp
rm -f %1.tmp
rm -f %2.tmp
rm -f tmp3

Added fixeol.













































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
#
# Fix line ending on bash scripts
#
echo
echo Fixing the line endings on Unix files
echo
flip -u compile
flip -u	cpcom
flip -u	cpcoms
flip -u	cpint
flip -u	cpints
flip -u	diffnole
flip -u	regress
flip -u	run
flip -u	configure
flip -u	testprog
flip -u	build
flip -u	gpc/compile
flip -u	gpc/cpcom
flip -u	gpc/cpint
flip -u	gpc/p5
flip -u	gpc/run
flip -u	ip_pascal/compile
flip -u	ip_pascal/cpcom
flip -u	ip_pascal/cpint
flip -u	ip_pascal/p5
flip -u	ip_pascal/run
flip -u mac_flip_script
flip -u make_flip
echo
echo Fixing the line enddings on DOS/Windows files
echo
flip -m compile.bat
flip -m	cpcom.bat
flip -m	cpcoms.bat
flip -m	cpint.bat
flip -m	cpints.bat
flip -m	diffnole.bat
flip -m	regress.bat
flip -m	run.bat
flip -m	configure.bat
flip -m	testprog.bat
flip -u	build.bat
flip -m	gpc/compile.bat
flip -m	gpc/cpcom.bat
flip -m	gpc/cpint.bat
flip -m	gpc/p5.bat
flip -m	gpc/run.bat
flip -m	ip_pascal/compile.bat
flip -m	ip_pascal/cpcom.bat
flip -m	ip_pascal/cpint.bat
flip -m	ip_pascal/p5.bat
flip -m	ip_pascal/run.bat

Added fixeol.bat.















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@echo off
rem
rem Fix line endings
rem 
echo.
echo Fixing the line endings on Unix files.
echo.
flip -u compile
flip -u	cpcom
flip -u	cpcoms
flip -u	cpint
flip -u	cpints
flip -u	diffnole
flip -u	regress
flip -u	run
flip -u	configure
flip -u	testprog
flip -u	build
flip -u unixeol
flip -u	gpc\compile
flip -u	gpc\cpcom
flip -u	gpc\cpint
flip -u	gpc\p5
flip -u	gpc\run
flip -u	ip_pascal\compile
flip -u	ip_pascal\cpcom
flip -u	ip_pascal\cpint
flip -u	ip_pascal\p5
flip -u	ip_pascal\run
flip -u mac_flip_script
flip -u make_flip
echo.
echo Fixing the line endings on DOS/Windows files.
echo.
flip -m compile.bat
flip -m	cpcom.bat
flip -m	cpcoms.bat
flip -m	cpint.bat
flip -m	cpints.bat
flip -m	diffnole.bat
flip -m	regress.bat
flip -m	run.bat
flip -m	configure.bat
flip -m	testprog.bat
flip -u	build.bat
flip -m	gpc\compile.bat
flip -m	gpc\cpcom.bat
flip -m	gpc\cpint.bat
flip -m	gpc\p5.bat
flip -m	gpc\run.bat
flip -m	ip_pascal\compile.bat
flip -m	ip_pascal\cpcom.bat
flip -m	ip_pascal\cpint.bat
flip -m	ip_pascal\p5.bat
flip -m	ip_pascal\run.bat

Added gpc/compile.











































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
#
# Compile file in batch mode using GPC Pascal.
#
# Runs a compile with the input and output coming from/
# going to files.
# 
# Execution:
# 
# Compile <file>
#
# <file> is the filename without extention.
#
# The files are:
#
# <file>.pas - The Pascal source file
# <file>.p5  - The intermediate file produced
# <file>.err - The errors output from the compiler
#
# Note that the l+ option must be specified to get a full
# listing in the .err file (or just a lack of l-).
#

if [ -z "$1" ]
then
   echo "*** Error: Missing parameter"
   exit 1
fi

if [ ! -f $1.pas ]
then
   echo "*** Error: Missing $1.pas file"
   exit 1
fi

./pcom < $1.pas > $1.err
mv prr $1.p5

Added gpc/compile.bat.



















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
rem
rem Compile file in batch mode using GPC Pascal.
rem
rem Runs a compile with the input and output coming from/
rem going to files.
rem 
rem Execution:
rem 
rem Compile <file>
rem
rem <file> is the filename without extention.
rem
rem The files are:
rem
rem <file>.pas - The Pascal source file
rem <file>.p5  - The intermediate file produced
rem <file>.err - The errors output from the compiler
rem
rem Note that the l+ option must be specified to get a full
rem listing in the .err file (or just a lack of l-).
rem
if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok
if exist "%1.pas" goto fileexists
echo *** Error: Missing %1.pas file
goto stop
:fileexists
pcom < %1.pas > %1.err
if not exist "%1.p5" goto nodel1
del %1.p5
:nodel1
cp prr %1.p5
rm prr
chmod +w %1.p5
rem
rem Terminate
rem
:stop

Added gpc/cpcom.













































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
#
# Compile pcom using GPC
#
# Note that GPC generates several unecessary warnings during
# the compile, including use of compiler directives in comments
# (in ISO 7185 mode it should just ignore them), and that it
# is generating 256 element sets by default (there does not
# seem to be any way to shut up this warning, including using the
# --setlimit option).
#

if [ ! -f pcom.pas ]
then
   echo "*** Error: Missing pcom.pas file"
   exit 1
fi

echo
echo Compiling pcom.pas to create pcom.exe
echo
gpc -o pcom pcom.pas --classic-pascal-level-0 --no-warnings --transparent-file-names --no-range-checking

Added gpc/cpcom.bat.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
rem
rem Compile pcom using GPC
rem
rem Note that GPC generates several unecessary warnings during
rem the compile, including use of compiler directives in comments
rem (in ISO 7185 mode it should just ignore them), and that it
rem is generating 256 element sets by default (there does not
rem seem to be any way to shut up this warning, including using the
rem --setlimit option).
rem
echo.
echo Compiling pcom.pas to create pcom.exe
echo.
gpc -o pcom pcom.pas --classic-pascal-level-0 --no-warnings --transparent-file-names --no-range-checking

Added gpc/cpint.













































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
#
# Compile pint using GPC
#
# Note that GPC generates several unecessary warnings during
# the compile, including use of compiler directives in comments
# (in ISO 7185 mode it should just ignore them), and that it
# is generating 256 element sets by default (there does not
# seem to be any way to shut up this warning, including using the
# --setlimit option).
#

if [ ! -f pint.pas ]
then
   echo "*** Error: Missing pint.pas file"
   exit 1
fi

echo
echo Compiling pint.pas to create pint.exe
echo
gpc -o pint pint.pas --classic-pascal-level-0 --no-warnings --transparent-file-names --no-range-checking

Added gpc/cpint.bat.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
rem
rem Compile pint using GPC
rem
rem Note that GPC generates several unecessary warnings during
rem the compile, including use of compiler directives in comments
rem (in ISO 7185 mode it should just ignore them), and that it
rem is generating 256 element sets by default (there does not
rem seem to be any way to shut up this warning, including using the
rem --setlimit option).
rem
echo.
echo Compiling pint.pas to create pint.exe
echo.
gpc -o pint pint.pas --classic-pascal-level-0 --no-warnings --transparent-file-names --no-range-checking

Added gpc/linux_X86/pcom.

cannot compute difference between binary files

Added gpc/linux_X86/pint.

cannot compute difference between binary files

Added gpc/p5.

















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
#
# Compile with P5 using GPC Pascal
#
# Execute with:
#
# p5 <file>
#
# Where <file> is the name of the source file without
# extention. The Pascal file is compiled and run.
# Any compiler errors are output to the screen. Input
# and output to and from the running program are from
# the console, but output to the prr file is placed
# in <file>.out.
# The intermediate code is placed in <file>.p5.
#

if [ -z "$1" ]
then

   echo "*** Error: Missing parameter"
   exit 1

fi

if [ ! -f $1.pas ]
then

   echo "*** Error: Missing $1.pas file"
   exit 1

fi

echo
echo Compiling and running $1
echo
./pcom < $1.pas
mv prr $1.p5
cp $1.p5 prd 
./pint

Added gpc/p5.bat.















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@echo off
rem
rem Compile with P5 using GPC
rem
rem Execute with:
rem
rem p5 <file>
rem
rem where <file> is the name of the source file without
rem extention. The Pascal file is compiled and run.
rem Any compiler errors are output to the screen. Input
rem and output to and from the running program are from
rem the console, but output to the prr file is placed
rem in <file>.out.
rem The intermediate code is placed in <file>.p5.
rem
if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok
if exist "%1.pas" goto fileexists
echo *** Error: Missing %1.pas file
goto stop
:fileexists
echo.
echo Compiling and running %1
echo.
pcom < %1.pas
if not exist "%1.p5" goto nodel
del %1.p5
:nodel
cp prr %1.p5
del prr
copy %1.p5 prd 
pint
rem
rem Terminate
rem
:stop

Added gpc/run.



























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
#
# Run a Pascal file in batch mode using GPC Pascal
#
# Runs a Pascal intermediate in batch mode.
#
# Execution:
#
# run <file>
#
# <file> is the filename without extention.
#
# The files are:
#
# <file>.p5  - The intermediate file
# <file>.out - The prr file produced
# <file>.inp - The input file to the program
# <file>.lst - The output file from the program
#

if [ -z "$1" ]
then
   echo "*** Error: Missing parameter"
   exit 1
fi

if [ ! -f $1.p5 ]
then
   echo "*** Error: Missing $1.p5 file"
   exit 1
fi

if [ ! -f $1.inp ]
then
   echo "*** Error: Missing $1.inp file"
   exit 1
fi

cp $1.p5 prd 
./pint < $1.inp > $1.lst
if [ -e "$1" ]
then
   rm $1.out
fi
mv prd $1.out

Added gpc/run.bat.

























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@echo off
rem
rem Run a Pascal file in batch mode using GPC Pascal
rem
rem Runs a Pascal intermediate in batch mode.
rem
rem Execution:
rem
rem run <file>
rem
rem <file> is the filename without extention.
rem
rem The files are:
rem
rem <file>.p5  - The intermediate file
rem <file>.out - The prr file produced
rem <file>.inp - The input file to the program
rem <file>.lst - The output file from the program
rem
if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok
if exist "%1.p5" goto fileexists1
echo *** Error: Missing %1.p5 file
goto stop
:fileexists1
if exist "%1.inp" goto fileexists2
echo *** Error: Missing %1.inp file
goto stop
:fileexists2
copy %1.p5 prd 
pint < %1.inp > %1.lst
if not exist "%1.out" goto fileexists3
del %1.out
:fileexists3
cp prd %1.out
del prd
chmod +w %1.out
rem
rem Terminate
rem
:stop

Added gpc/standard_tests/iso7185pat.cmp.





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

*******************************************************************************

                 TEST SUITE FOR ISO 7185 PASCAL

                 Copyright (C) 1995 S. A. Moore - All rights reserved

*******************************************************************************

The following are implementation defined characteristics

Maxint: 2147483647
Bit length of integer without sign bit appears to be: 31
Integer default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
          1
Real default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
 1.200000000000000e+00
Boolean default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
False
 True
Char default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
a
Appears to be ASCII

******************* Control structures tests *******************

Control1: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control2: 10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Control3: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control4: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control5: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control6: yes s/b yes
Control7: yes s/b yes
Control8: yes stop s/b yes stop
Control9: stop s/b stop
Control10: one two three four five six seven eight nine-ten nine-ten 
Control10: s/b one two three four five six seven eight nine-ten nine-ten
Control11: start stop s/b start stop
Control12: start stop s/b start stop
Control13: start   1  2  3  4  5  6  7  8  9 10 s/b   1  2  3  4  5  6  7  8  9 10
Control14: start  10  9  8  7  6  5  4  3  2  1 s/b  10  9  8  7  6  5  4  3  2  1
Control15: start  0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
Control16: start  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Control17: start good start s/b good

******************* Integers *******************

Integer1:   121 s/b 121
Integer2:   35 s/b 35
Integer3:   3354 s/b 3354
Integer4:   1 s/b 1
Integer5:   35 s/b 35
Integer6:   44 s/b 44
Integer7:   42 s/b 42
Integer8:   1849 s/b 1849
Integer9:   N s/b N
Integer10:  43 s/b 43
Integer11:   True s/b true
Integer12:  False s/b false
Integer13:   True s/b true
Integer14:  False s/b false
Integer15:   True s/b true
Integer16:  False s/b false
Integer17:   True s/b true
Integer18:  False s/b false
Integer19:   True s/b true
Integer20:  False s/b false
Integer21:   True s/b true
Integer22:   True s/b true
Integer23:  False s/b false
Integer24:   True s/b true
Integer25:   True s/b true
Integer26:  False s/b false
Integer27:  546 s/b 546
Integer28:  90 s/b 90
Integer29:  22 s/b 22
Integer30:  1904 s/b 1904
Integer31:  1 s/b 1
Integer32:  22 s/b 22
Integer33:  6 s/b 6
Integer34:  4 s/b 4
Integer35:  49 s/b 49
Integer36:  A s/b A
Integer37:  65 s/b 65
Integer38:  768 s/b 768
Integer39:   True s/b true
Integer40:  False s/b false
Integer41:   True s/b true
Integer42:  False s/b false
Integer43:   True s/b true
Integer44:  False s/b false
Integer45:   True s/b true
Integer46:  False s/b false
Integer47:   True s/b true
Integer48:  False s/b false
Integer49:   True s/b true
Integer50:   True s/b true
Integer51:  False s/b false
Integer52:   True s/b true
Integer53:   True s/b true
Integer54:  False s/b false
Integer55:  6 s/b 6
Integer56:  6 s/b 6
Integer57:  -12 s/b -12
Integer58:  -46 s/b -46
Integer59:  34 s/b 34
Integer60:  -52 s/b -52
Integer61:  -18 s/b -18
Integer62:  -280 s/b -280
Integer63:  -280 s/b -280
Integer64:  448 s/b 448
Integer65:  -1 s/b -1
Integer66:  -1 s/b -1
Integer67:  2 s/b 2
Integer68:  -13 s/b -13
Integer69:  -33 s/b -33
Integer70: 196 s/b 196
Integer71:  False s/b false
Integer72:   True s/b true
Integer73:   True s/b true
Integer74:  False s/b false
Integer75:   True s/b true
Integer76:  False s/b false
Integer77:   True s/b true
Integer78:   True s/b true
Integer79:  False s/b false
Integer80:  False s/b false
Integer81:   True s/b true
Integer82:   True s/b true
Integer83:  False s/b false
Integer84:  False s/b false
Integer85:   True s/b true
Integer86:   True s/b true
Integer87:   True s/b true
Integer88:  False s/b false
Integer89:  False s/b false
Integer90:   True s/b true
Integer91:   True s/b true
Integer92:   True s/b true
Integer93:  False s/b false
Integer94:  False s/b false
Integer95:  14 s/b 14
Integer96:  0 s/b 0
Integer97:  0 s/b 0
Integer98:  0 s/b 0
Integer99:  15 s/b 15
Integer100:  45 s/b 45
Integer101: -39 s/b -39
Integer102: -35 s/b -35
Integer103: 34 s/b 34
Integer104: -48 s/b -48
Integer105: -44 s/b -44
Integer106: -20 s/b -20
Integer107: -126 s/b -126
Integer108: 520 s/b 520
Integer109: -6 s/b -6
Integer110: -25 s/b -25
Integer111: 5 s/b 5
Integer112: -9 s/b -9
Integer113: 0 s/b 0
Integer114: -2 s/b -2
Integer115: 64 s/b 64
Integer116: -55 s/b -55
Integer117: False s/b false
Integer118:  True s/b true
Integer119:  True s/b true
Integer120: False s/b false
Integer121:  True s/b true
Integer122: False s/b false
Integer123:  True s/b true
Integer124:  True s/b true
Integer125: False s/b false
Integer126: False s/b false
Integer127:  True s/b true
Integer128:  True s/b true
Integer129: False s/b false
Integer130: False s/b false
Integer131:  True s/b true
Integer132:  True s/b true
Integer133:  True s/b true
Integer134: False s/b false
Integer135: False s/b false
Integer136:  True s/b true
Integer137:  True s/b true
Integer138:  True s/b true
Integer139: False s/b false
Integer140: False s/b false
Integer141: 6 s/b 6
Integer142: -52 s/b -52
Integer143: 52 s/b 52
Integer144: -768 s/b -768
Integer145: 52 s/b 52
Integer146: 0 s/b 0

******************* Subranges *******************

Subrange1:   121 s/b 121
Subrange2:   35 s/b 35
Subrange3:   3354 s/b 3354
Subrange4:   1 s/b 1
Subrange5:   35 s/b 35
Subrange6:   44 s/b 44
Subrange7:   42 s/b 42
Subrange8:   N s/b N
Subrange9:   43 s/b 43
Subrange10:   True s/b true
Subrange11:  False s/b false
Subrange12:   True s/b true
Subrange13:  False s/b false
Subrange14:   True s/b true
Subrange15:  False s/b false
Subrange16:   True s/b true
Subrange17:  False s/b false
Subrange18:   True s/b true
Subrange19:  False s/b false
Subrange20:   True s/b true
Subrange21:   True s/b true
Subrange22:  False s/b false
Subrange23:   True s/b true
Subrange24:   True s/b true
Subrange25:  False s/b false
Subrange26:  6 s/b 6
Subrange27:  6 s/b 6
Subrange28:  -12 s/b -12
Subrange29:  -46 s/b -46
Subrange30:  34 s/b 34
Subrange31:  -52 s/b -52
Subrange32:  -18 s/b -18
Subrange33:  -280 s/b -280
Subrange34:  -280 s/b -280
Subrange35:  448 s/b 448
Subrange36:  -1 s/b -1
Subrange37:  -1 s/b -1
Subrange38:  2 s/b 2
Subrange39:  -13 s/b -13
Subrange40:  -33 s/b -33
Subrange41:  False s/b false
Subrange42:   True s/b true
Subrange43:   True s/b true
Subrange44:  False s/b false
Subrange45:   True s/b true
Subrange46:  False s/b false
Subrange47:   True s/b true
Subrange48:   True s/b true
Subrange49:  False s/b false
Subrange50:  False s/b false
Subrange51:   True s/b true
Subrange52:   True s/b true
Subrange53:  False s/b false
Subrange54:  False s/b false
Subrange55:   True s/b true
Subrange56:   True s/b true
Subrange57:   True s/b true
Subrange58:  False s/b false
Subrange59:  False s/b false
Subrange60:   True s/b true
Subrange61:   True s/b true
Subrange62:   True s/b true
Subrange63:  False s/b false
Subrange64:  False s/b false
Subrange65:  14 s/b 14

******************* Characters*******************

Character1:   g g u s/b g g u
Character2:   h s/b h
Character3:   f s/b f
Character4:   103 s/b 103
Character5:   u s/b u
Character6:    True s/b true
Character7:   False s/b false
Character8:    True s/b true
Character9:   False s/b false
Character10:   True s/b true
Character11:  False s/b false
Character12:   True s/b true
Character13:  False s/b false
Character14:   True s/b true
Character15:   True s/b true
Character16:  False s/b false
Character17:   True s/b true
Character18:   True s/b true
Character19:  False s/b false
Character20:  porker    porker    parker     s/b porker    porker    parker
Character21:   True s/b true
Character22:  False s/b false
Character23:   True s/b true
Character24:  False s/b false
Character25:   True s/b true
Character26:  False s/b false
Character27:   True s/b true
Character28:  False s/b false
Character29:   True s/b true
Character30:   True s/b true
Character40:  False s/b false
Character41:   True s/b true
Character42:   True s/b true
Character43:  False s/b false
Character44:  abcdefghijklmnopqrstuvwxyz s/b abcdefghijklmnopqrstuvwxyz
Character45:  zyxwvutsrqponmlkjihgfedcba s/b zyxwvutsrqponmlkjihgfedcba
Character46:  25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
Character46: s/b 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Character47: n s/b n
Character48: junky01234 s/b junky01234
Character49:  
crapola   
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork   
trash     
Character49: s/b
crapola
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork
trash
Character50:  
zero one two three four five six seven eight nine 
 s/b zero one two three four five six seven eight nine
Character51:  a s/b a
Character52:  b s/b b
Character53:  y s/b y
Character54:  99 s/b 99
Character55:  g s/b g
Character56:   True s/b true
Character57:  False s/b false
Character58:   True s/b true
Character59:  False s/b false
Character50:   True s/b true
Character61:  False s/b false
Character62:   True s/b true
Character63:  False s/b false
Character64:   True s/b true
Character65:   True s/b true
Character66:  False s/b false
Character67:   True s/b true
Character68:   True s/b true
Character69:  False s/b false
Character70:   True s/b true
Character71:  False s/b false
Character72:   True s/b true
Character73:  False s/b false
Character74:   True s/b true
Character75:  False s/b false
Character76:   True s/b true
Character77:  False s/b false
Character78:   True s/b true
Character79:   True s/b true
Character80:  False s/b false
Character81:   True s/b true
Character82:   True s/b true
Character83:  False s/b false
Character84:  this is a string s/b this is a string
Character85:  v s/b v
Character86:  
   hello, world
  hello, world
 hello, world
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h
Character86:  s/b:
   hello, world
  hello, world
 hello, world 
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h

******************* Booleans *******************

Boolean1:    True False s/b true false
Boolean2:    True s/b true
Boolean3:   False s/b false
Boolean4:   0 s/b 0
Boolean5:   1 s/b 1
Boolean6:    True s/b true
Boolean7:    True s/b true
Boolean8:   False s/b false
Boolean9:    True s/b true
Boolean10:  False s/b false
Boolean11:   True s/b true
Boolean12:  False s/b false
Boolean13:   True s/b true
Boolean14:  False s/b false
Boolean15:   True s/b true
Boolean16:   True s/b true
Boolean17:  False s/b false
Boolean18:   True s/b true
Boolean19:   True s/b true
Boolean20:  False s/b false
Boolean21:  False  True s/b false true
Boolean22:   True False s/b true false
Boolean23:   True s/b true
Boolean24:  False s/b false
Boolean25:   True False s/b true false
Boolean26:   True s/b true
Boolean27:  False s/b false
Boolean28:  0 s/b 0
Boolean29:  1 s/b 1
Boolean30:   True s/b true
Boolean31:   True s/b true
Boolean32:  False s/b false
Boolean33:   True s/b true
Boolean34:  False s/b false
Boolean35:   True s/b true
Boolean36:  False s/b false
Boolean37:   True s/b true
Boolean38:  False s/b false
Boolean39:   True s/b true
Boolean40:   True s/b true
Boolean41:  False s/b false
Boolean42:   True s/b true
Boolean43:   True s/b true
Boolean44:  False s/b false
Boolean45:
     False
    False
   False
  False
 False
False
Fals
Fal
Fa
F
Boolean45: s/b:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean46:
      True
     True
    True
   True
  True
 True
True
Tru
Tr
T
Boolean46: s/b:
      true
     true
    true
   true
  true
 true
true
tru
tr
t

******************* Scalar *******************

Scalar1:    True s/b true
Scalar2:    True s/b true
Scalar3:   0 s/b 0
Scalar4:   2 s/b 2
Scalar5:    True s/b true
Scalar6:    True s/b true
Scalar7:   False s/b false
Scalar8:    True s/b true
Scalar9:   False s/b false
Scalar10:   True s/b true
Scalar11:  False s/b false
Scalar12:   True s/b true
Scalar13:  False s/b false
Scalar14:   True s/b true
Scalar15:   True s/b true
Scalar16:  False s/b false
Scalar17:   True s/b true
Scalar18:   True s/b true
Scalar19:  False s/b false
Scalar20:  0 1 2 3 4 5 6 s/b 0 1 2 3 4 5 6
Scalar21:  6 5 4 3 2 1 0 s/b 6 5 4 3 2 1 0
Scalar1:    True s/b true
Scalar2:    True s/b true
Scalar3:   2 s/b 2
Scalar4:   6 s/b 6
Scalar5:    True s/b true
Scalar6:    True s/b true
Scalar7:   False s/b false
Scalar8:    True s/b true
Scalar9:   False s/b false
Scalar10:   True s/b true
Scalar11:  False s/b false
Scalar12:   True s/b true
Scalar13:  False s/b false
Scalar14:   True s/b true
Scalar15:   True s/b true
Scalar16:  False s/b false
Scalar17:   True s/b true
Scalar18:   True s/b true
Scalar19:  False s/b false

******************* Reals ******************************

Real1:    1.55400000e+00 s/b  1.554000e+00
Real2:    3.34000000e-03 s/b  3.340000e-03
Real3:    3.34000000e-24 s/b  3.34000e-24
Real4:    4.00000000e-45 s/b  4.000000e-45
Real5:   -5.56500000e+00 s/b -5.565000e+03
Real6:   -9.44000000e-03 s/b -9.440000e-03
Real7:   -6.36400000e+29 s/b -6.364000e+29
Real8:   -2.00000000e-14 s/b -2.000000e-14
Real9:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.23e+00
 1.235e+00
 1.2346e+00
 1.23457e+00
 1.234568e+00
 1.2345679e+00
 1.23456789e+00
 1.234567890e+00
 1.2345678901e+00
 1.23456789012e+00
 1.234567890123e+00
 1.2345678901235e+00
s/b (note precision dropoff at right):
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678901e+000
 1.23456789012e+000
 1.234567890123e+000
Real10:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
1.2
2.23
3.235
4.2346
5.23457
6.234568
7.2345679
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901235
14.23456789012346
15.234567890123456
16.2345678901234578
17.23456789012345780
18.234567890123457801
19.2345678901234578007
20.23456789012345780066
s/b (note precision dropoff at right):
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901234
14.23456789012345
15.234567890123456
16.2345678901234567
17.23456789012345678
18.234567890123456789
19.2345678901234567890
20.23456789012345678901
Real11:   1.41890000e+03 s/b  1.418900e+03
Rea112:   5.48440000e+02 s/b  5.484399e+02
Real13:   4.28122694e+05 s/b  4.281227e+05
Real14:   2.26011534e+00 s/b  2.260115e+00
Real15:   True s/b true
Real16:  False s/b false
Real17:   True s/b true
Real18:  False s/b false
Real19:   True s/b true
Real20:  False s/b false
Real21:   True s/b true
Real22:  False s/b false
Real23:   True s/b true
Real24:   True s/b true
Real25:  False s/b false
Real26:   True s/b true
Real27:   True s/b true
Real28:  False s/b false
Real29:   4.35230000e+02 s/b  4.35230e+02
Real30:   1.89425153e+05 s/b  1.89425e+05
Real31:   3.13635138e+01 s/b  3.13635e+01
Real32:  -3.44305942e-01 s/b -3.44290e-01
Real33:   1.56849870e+00 s/b  1.56850e+00
Real34:   1.41100187e+00 s/b  1.41100e+00
Real35:   6.07587463e+00 s/b  6.07587e+00
Real36:  435 s/b 435
Real37:  984 s/b 984
Real38:  435 s/b 435
Real39:   1.27805200e+03 s/b  1.278052e+03
Real40:   2.38946000e+02 s/b  2.389460e+02
Real41:   1.04720175e+05 s/b  1.047202e+05
Real42:   7.25959751e-03 s/b  7.259598e-03
Real43:   True s/b true
Real44:  False s/b false
Real45:   True s/b true
Real46:  False s/b false
Real47:   True s/b true
Real48:  False s/b false
Real49:   True s/b true
Real50:  False s/b false
Real51:   True s/b true
Real52:   True s/b true
Real53:  False s/b false
Real54:   True s/b true
Real55:   True s/b true
Real56:  False s/b false
Real57:   3.49300000e+01 s/b  3.493000e+01
Real58:   5.47560000e+00 s/b  5.475600e+00
Real59:   9.72333276e+01 s/b  9.723333e+01
Real60:   3.31147273e-01 s/b  3.311461e-01
Real61:   1.56788258e+00 s/b  1.567883e+00
Real62:   1.39375285e+00 s/b  1.393753e+00
Real63:   4.42148770e+00 s/b  4.421488e+00
Real64:  24 s/b 24
Real65:  75 s/b 75
Real66:  83 s/b 83
Real67:   4.33300000e+01 s/b  4.333000e+01
Real68:   3.00340000e+02 s/b  3.003400e+02
Real69:   3.00340000e+02 s/b  3.003400e+02
Real70:  -6.59998000e+03 s/b -6.599980e+03
Real71:  -8.36872000e+03 s/b -8.368720e+03
Real72:   1.76874000e+03 s/b  1.768740e+03
Real73:  -8.66906000e+03 s/b -8.669061e+03
Real74:  -6.90032000e+03 s/b -6.900320e+03
Real75:  -7.59559268e+05 s/b -7.595593e+05
Real76:  -7.59559268e+05 s/b -7.595593e+05
Real77:   5.60526458e+06 s/b  5.605265e+06
Real78:  -1.40907110e+00 s/b -1.409071e+00
Real79:  -7.37962766e+00 s/b -7.379627e+00
Real80:   1.03984200e+01 s/b  1.039842e+01
Real81:   True s/b true
Real82:  False s/b false
Real83:   True s/b true
Real84:  False s/b false
Real85:   True s/b true
Real86:   True s/b true
Real87:  False s/b false
Real88:  False s/b false
Real89:   True s/b true
Real90:   True s/b true
Real91:  False s/b false
Real92:  False s/b false
Real93:   True s/b true
Real94:   True s/b true
Real95:   True s/b true
Real96:  False s/b false
Real97:  False s/b false
Real98:   True s/b true
Real99:   True s/b true
Real100:  True s/b true
Real101: False s/b false
Real102: False s/b false
Real103:  7.34200000e+02 s/b  7.34200e+02
Real104:  5.39049640e+05 s/b  5.39050e+05
Real105: -4.34832062e-01 s/b -4.34850e-01
Real106: -1.56943430e+00 s/b -1.56943e+00
Real107:  6.80566323e-01 s/b  6.80566e-01
Real108:            -734 s/b -734
Real109:           -7635 s/b -7635
Real110:            -734 s/b -734
Real111:  1.51000000e+01 s/b  1.510000e+01
Real112:  4.51330000e+01 s/b  4.513300e+01
Real113: -3.86400000e+01 s/b -3.864000e+01
Real114: -3.65810000e+01 s/b -3.658100e+01
Real115:  3.55480000e+01 s/b  3.554800e+01
Real116: -4.93984000e+01 s/b -4.939840e+01
Real117: -4.40010000e+01 s/b -4.400100e+01
Real118: -2.64122320e+01 s/b -2.641223e+01
Real119: -1.48904140e+02 s/b -1.489041e+02
Real120:  5.58563248e+02 s/b  5.585632e+02
Real121: -5.22015662e+00 s/b -5.220157e+00
Real122: -1.77216253e+01 s/b -1.772163e+01
Real123:  4.27458238e+00 s/b  4.274582e+00
Real124:  True s/b true
Real125: False s/b false
Real126:  True s/b true
Real127: False s/b false
Real128:  True s/b true
Real129:  True s/b true
Real130: False s/b false
Real131: False s/b false
Real132:  True s/b true
Real133:  True s/b true
Real134: False s/b false
Real135: False s/b false
Real136:  True s/b true
Real137:  True s/b true
Real138:  True s/b true
Real139: False s/b false
Real140: False s/b false
Real141:  True s/b true
Real142:  True s/b true
Real143:  True s/b true
Real144: False s/b false
Real145: False s/b false
Real146:  6.82300000e+00 s/b  6.823000e+00
Real147   1.21257168e+05 s/b  1.212572e+05
Real148:  9.42124497e-01 s/b  9.421146e-01
Real149: -1.57067710e+00 s/b -1.570677e+00
Real150:  4.17153925e-01 s/b  4.171539e-01
Real151: -33 s/b -33
Real152: -843 s/b -843
Real153: -6244 s/b -6244
Real154: -8.42200000e+01 s/b -8.422000e+01
Real155:  8.42200000e+01 s/b  8.422000e+01
Real156:  -4.33300000e+01 s/b -4.333000e+01
Real157:  8.42200000e+01 s/b  8.422000e+01

******************* sets ******************************

Set1:  10101010101010101010 s/b 10101010101010101010
Set2:  1101110001 s/b 1101110001
Set3:  0100010000 s/b 0100010000
Set4:  0100001000 s/b 0100001000
Set5:  False s/b false
Set6:   True s/b true
Set7:   True s/b true
Set8:  False s/b false
Set9:   True s/b true
Set10:  True s/b true
Set11: False s/b false
Set12:  True s/b true
Set13:  True s/b true
Set14: False s/b false
Set15: 0101010000 s/b 0101010000
Set16: a_c_e_g_i_k_m_o_q_s_ s/b a_c_e_g_i_k_m_o_q_s_
Set17: a_cd_fg___ s/b a_cd_fg___
Set18: a______h__ s/b a______h__
Set19: _b_______j s/b _b_______j
Set20: False s/b false
Set21:  True s/b true
Set22:  True s/b true
Set23: False s/b false
Set24:  True s/b true
Set25:  True s/b true
Set26: False s/b false
Set27:  True s/b true
Set28:  True s/b true
Set29: False s/b false
Set30: a___e_____ s/b a___e_____
Set31: 0101010101 s/b 0101010101
Set32: 1101110001 s/b 1101110001
Set33: 0100010000 s/b 0100010000
Set34: 0100001000 s/b 0100001000
Set35: False s/b false
Set36:  True s/b true
Set37:  True s/b true
Set38: False s/b false
Set39:  True s/b true
Set40:  True s/b true
Set41: False s/b false
Set42:  True s/b true
Set43:  True s/b true
Set44: False s/b false
Set45: 0110000000 s/b 0110000000
Set46: 01 s/b 01
Set47: 11 s/b 11
Set48: 10 s/b 10
Set49: 10 s/b 10
Set50: False s/b false
Set51:  True s/b true
Set52:  True s/b true
Set53: False s/b false
Set54:  True s/b true
Set55:  True s/b true
Set56: False s/b false
Set57:  True s/b true
Set58:  True s/b true
Set59: False s/b false
Set60: 11 s/b 11
set61:  True s/b true

******************* Pointers ******************************

Pointer1:   4594 s/b 4594
Pointer2:    True s/b  true
Pointer3:   False s/b false
Pointer4:   p s/b p
Pointer5:   5 s/b 5
Pointer6:   3 s/b 3
Pointer7:   17 s/b 17
Pointer8:   1234.5678 s/b 1234.5678
Pointer9:   my word is s/b my word is
Pointer10:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Pointer11:   7234 y s/b 7234 y
Pointer12:   _b_d____ij s/b _b_d____ij
Pointer13:  3732 s/b 3732
Pointer14:   True s/b  true
Pointer15:  False s/b false
Pointer16:   True s/b true
Pointer17:  False s/b false
Pointer18:  False s/b false
Pointer19:   True s/b  true
Pointer20:  done s/b done
Pointer21:  Pointer22:  done s/b done
Pointer23:  done s/b done
Pointer24:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100
Pointer25:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100

******************* arrays ******************************

Array1:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array2:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array3:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array4:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array5:   False  True False  True False  True False  True False  True 
    s/b:   false  true false  true false  true false  true false  true
Array6:   False  True False  True False  True False  True False  True 
    s/b:   false  true false  true false  true false  true false  true
Array7:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array8:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array9:   k j i h g f e d c b s/b k j i h g f e d c b
Array10:  k j i h g f e d c b s/b k j i h g f e d c b
Array11:  p o n m l k j i h g s/b p o n m l k j i h g
Array12:  p o n m l k j i h g s/b p o n m l k j i h g
Array13:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array14:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array15:  5 4 3 2 s/b 5 4 3 2
Array16:  5 4 3 2 s/b 5 4 3 2
Array17:  k j i h g f e d c b s/b k j i h g f e d c b
Array18:  k j i h g f e d c b s/b k j i h g f e d c b
Array19:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array20:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array21:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array22:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array23:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array24:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array25:  11 10  s/b 11 10
Array26:  11 10  s/b 11 10
Array27:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array28:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array29:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array30:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array31:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array32:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array33:  5 4 3 2 1  s/b  5 4 3 2 1
Array34:  5 4 3 2 1  s/b  5 4 3 2 1
Array35:
 0 10 20 30 40 50 60 70 80 90 
 1 11 21 31 41 51 61 71 81 91 
 2 12 22 32 42 52 62 72 82 92 
 3 13 23 33 43 53 63 73 83 93 
 4 14 24 34 44 54 64 74 84 94 
 5 15 25 35 45 55 65 75 85 95 
 6 16 26 36 46 56 66 76 86 96 
 7 17 27 37 47 57 67 77 87 97 
 8 18 28 38 48 58 68 78 88 98 
 9 19 29 39 49 59 69 79 89 99 
s/b
0 10 20 30 40 50 60 70 80 90
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
Array36: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array37: 
hello, guy s/b hello, guy
Array38: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array39: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array40: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array41: 
30 29 28 27 26 25 24 23 22 21 s/b 30 29 28 27 26 25 24 23 22 21
Array42: 
40 39 38 37 36 35 34 33 32 31 s/b 40 39 38 37 36 35 34 33 32 31
Array43: 
22 21 20 19 18 17 16 15 14 13 s/b 22 21 20 19 18 17 16 15 14 13

******************* records ******************************

Record1:   
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record2:   
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record3:   873 0 235 427 s/b 873 0 235 427
Record4:   873 1  True 427 s/b 873 1  true 427
Record5:   873 2 f 427 s/b 873 2 f 427
Record6:   873 3 8 427 s/b 873 3 8 427
Record7:   873 4 3 427 s/b 873 4 3 427
Record8:   873 5 12 427 s/b 873 5 12 427
Record9:   873 6 8734.8389 427 s/b 873 6 8734.8389 427
Record10:  873 7 this one ? 427 s/b 873 7 this one ? 427
Record11:  873 8 20 19 18 17 16 15 14 13 12 11 427
      s/b:  873 8 20 19 18 17 16 15 14 13 12 11 427
Record12:  873 9 2387 t 427 s/b:  873 9 2387 t 427
Record13:  873 10 _i_gfedcb_ 427
      s/b:  873 10 _i_gfedcb_ 427
Record14:  873 11 2394 427 s/b 873 11 2394 427
Record15:  10 2343 s/b 10 2343
Record16:  19  True s/b 19  true
Record17:   True 2343 s/b  true 2343
Record18:  False  True s/b false  true
Record19:  2 2343 s/b 2 2343
Record20:  7  True s/b 7  true
Record21:  3 2343 s/b 3 2343
Record22:  4  True s/b 4  true
Record23:  1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Record24:  10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Record25:  10 9 8 7 6 5 4 3 2 76 s/b 10 9 8 7 6 5 4 3 2 76
Record26:  1 g s/b 1 g
Record27:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11

******************* files ******************************

File1:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File2:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File3:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File4:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File5:   a b c d e f g h i j s/b a b c d e f g h i j
File6:   a b c d e f g h i j s/b a b c d e f g h i j
File7:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File8:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File9:
7384
8342
 True
False
m
q
 1.23456780e+00
1.2345678
 5.68943210e+01
0.93837632
hi there !
hi th
     hi there !
s/b:
7384
8342
 true
false
m
q
 1.2345678000e+00
1.2345678
 5.6894321000e+01
0.93837632
hi there !
hi th
     hi there !
file10:
7384
8342
m
q
 1.23456780e+00
 1.23456780e+00
 5.68943210e+01
 9.38376320e-01
s/b:
7384
8342
m
q
 1.2345678000e+00
 1.2345678000e+00
 5.6894321000e+01
 9.3837632000e+01
file11:
'how now<eoln> brown cow<eoln> ' s/b 'how now<eoln> brown cow<eoln> '
file12:
'too much<eoln> too soon<eoln> ' s/b 'too much<eoln> too soon<eoln> '
File13:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File14:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File15:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File16:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File17:   a b c d e f g h i j s/b a b c d e f g h i j
File18:   a b c d e f g h i j s/b a b c d e f g h i j
File19:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File20:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File21:    s/b 50
File22:    True s/b true

************ Procedures and functions ******************

ProcedureFunction1:   45 89 s/b 45 89
ProcedureFunction2:   46 s/b 46
ProcedureFunction3:   total junk s/b total junk
ProcedureFunction4:   tota? junk s/b tota? junk
total junk s/b total junk
ProcedureFunction5:   35 s/b 35
ProcedureFunction6:   10 9 8 6 5 4 3 2 1 78
s/b:   10 9 8 6 5 4 3 2 1 78
ProcedureFunction7:
93  True k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20 
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
23487 n False
help me123
abcd___h__
734
s/b:
93  true k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20
64 false j 1 3 12  4.54500000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
ProcedureFunction8:   9834 8383 j 744 s/b 9834 8383 j 744
ProcedureFunction9:   942 s/b 942
ProcedureFunction10:   62 76 s/b 62 76
ProcedureFunction11:   52 s/b 52
ProcedureFunction12:   a s/b a
ProcedureFunction13:   37 s/b 37

program complete

Added gpc/standard_tests/iso7185pats.cmp.



































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

*******************************************************************************

                 TEST SUITE FOR ISO 7185 PASCAL

                 Copyright (C) 1995 S. A. Moore - All rights reserved

*******************************************************************************

The following are implementation defined characteristics

Maxint: 2147483647
Bit length of integer without sign bit appears to be: 31
Integer default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
          1
Real default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
 1.200000000000000e+00
Boolean default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
False
 True
Char default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
a
Appears to be ASCII

******************* Control structures tests *******************

Control1: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control2: 10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Control3: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control4: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control5: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control6: yes s/b yes
Control7: yes s/b yes
Control8: yes stop s/b yes stop
Control9: stop s/b stop
Control10: one two three four five six seven eight nine-ten nine-ten 
Control10: s/b one two three four five six seven eight nine-ten nine-ten
Control11: start stop s/b start stop
Control12: start stop s/b start stop
Control13: start   1  2  3  4  5  6  7  8  9 10 s/b   1  2  3  4  5  6  7  8  9 10
Control14: start  10  9  8  7  6  5  4  3  2  1 s/b  10  9  8  7  6  5  4  3  2  1
Control15: start  0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
Control16: start  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Control17: start good start s/b good

******************* Integers *******************

Integer1:   121 s/b 121
Integer2:   35 s/b 35
Integer3:   3354 s/b 3354
Integer4:   1 s/b 1
Integer5:   35 s/b 35
Integer6:   44 s/b 44
Integer7:   42 s/b 42
Integer8:   1849 s/b 1849
Integer9:   N s/b N
Integer10:  43 s/b 43
Integer11:   True s/b true
Integer12:  False s/b false
Integer13:   True s/b true
Integer14:  False s/b false
Integer15:   True s/b true
Integer16:  False s/b false
Integer17:   True s/b true
Integer18:  False s/b false
Integer19:   True s/b true
Integer20:  False s/b false
Integer21:   True s/b true
Integer22:   True s/b true
Integer23:  False s/b false
Integer24:   True s/b true
Integer25:   True s/b true
Integer26:  False s/b false
Integer27:  546 s/b 546
Integer28:  90 s/b 90
Integer29:  22 s/b 22
Integer30:  1904 s/b 1904
Integer31:  1 s/b 1
Integer32:  22 s/b 22
Integer33:  6 s/b 6
Integer34:  4 s/b 4
Integer35:  49 s/b 49
Integer36:  A s/b A
Integer37:  65 s/b 65
Integer38:  768 s/b 768
Integer39:   True s/b true
Integer40:  False s/b false
Integer41:   True s/b true
Integer42:  False s/b false
Integer43:   True s/b true
Integer44:  False s/b false
Integer45:   True s/b true
Integer46:  False s/b false
Integer47:   True s/b true
Integer48:  False s/b false
Integer49:   True s/b true
Integer50:   True s/b true
Integer51:  False s/b false
Integer52:   True s/b true
Integer53:   True s/b true
Integer54:  False s/b false
Integer55:  6 s/b 6
Integer56:  6 s/b 6
Integer57:  -12 s/b -12
Integer58:  -46 s/b -46
Integer59:  34 s/b 34
Integer60:  -52 s/b -52
Integer61:  -18 s/b -18
Integer62:  -280 s/b -280
Integer63:  -280 s/b -280
Integer64:  448 s/b 448
Integer65:  -1 s/b -1
Integer66:  -1 s/b -1
Integer67:  2 s/b 2
Integer68:  -13 s/b -13
Integer69:  -33 s/b -33
Integer70: 196 s/b 196
Integer71:  False s/b false
Integer72:   True s/b true
Integer73:   True s/b true
Integer74:  False s/b false
Integer75:   True s/b true
Integer76:  False s/b false
Integer77:   True s/b true
Integer78:   True s/b true
Integer79:  False s/b false
Integer80:  False s/b false
Integer81:   True s/b true
Integer82:   True s/b true
Integer83:  False s/b false
Integer84:  False s/b false
Integer85:   True s/b true
Integer86:   True s/b true
Integer87:   True s/b true
Integer88:  False s/b false
Integer89:  False s/b false
Integer90:   True s/b true
Integer91:   True s/b true
Integer92:   True s/b true
Integer93:  False s/b false
Integer94:  False s/b false
Integer95:  14 s/b 14
Integer96:  0 s/b 0
Integer97:  0 s/b 0
Integer98:  0 s/b 0
Integer99:  15 s/b 15
Integer100:  45 s/b 45
Integer101: -39 s/b -39
Integer102: -35 s/b -35
Integer103: 34 s/b 34
Integer104: -48 s/b -48
Integer105: -44 s/b -44
Integer106: -20 s/b -20
Integer107: -126 s/b -126
Integer108: 520 s/b 520
Integer109: -6 s/b -6
Integer110: -25 s/b -25
Integer111: 5 s/b 5
Integer112: -9 s/b -9
Integer113: 0 s/b 0
Integer114: -2 s/b -2
Integer115: 64 s/b 64
Integer116: -55 s/b -55
Integer117: False s/b false
Integer118:  True s/b true
Integer119:  True s/b true
Integer120: False s/b false
Integer121:  True s/b true
Integer122: False s/b false
Integer123:  True s/b true
Integer124:  True s/b true
Integer125: False s/b false
Integer126: False s/b false
Integer127:  True s/b true
Integer128:  True s/b true
Integer129: False s/b false
Integer130: False s/b false
Integer131:  True s/b true
Integer132:  True s/b true
Integer133:  True s/b true
Integer134: False s/b false
Integer135: False s/b false
Integer136:  True s/b true
Integer137:  True s/b true
Integer138:  True s/b true
Integer139: False s/b false
Integer140: False s/b false
Integer141: 6 s/b 6
Integer142: -52 s/b -52
Integer143: 52 s/b 52
Integer144: -768 s/b -768
Integer145: 52 s/b 52
Integer146: 0 s/b 0

******************* Subranges *******************

Subrange1:   121 s/b 121
Subrange2:   35 s/b 35
Subrange3:   3354 s/b 3354
Subrange4:   1 s/b 1
Subrange5:   35 s/b 35
Subrange6:   44 s/b 44
Subrange7:   42 s/b 42
Subrange8:   N s/b N
Subrange9:   43 s/b 43
Subrange10:   True s/b true
Subrange11:  False s/b false
Subrange12:   True s/b true
Subrange13:  False s/b false
Subrange14:   True s/b true
Subrange15:  False s/b false
Subrange16:   True s/b true
Subrange17:  False s/b false
Subrange18:   True s/b true
Subrange19:  False s/b false
Subrange20:   True s/b true
Subrange21:   True s/b true
Subrange22:  False s/b false
Subrange23:   True s/b true
Subrange24:   True s/b true
Subrange25:  False s/b false
Subrange26:  6 s/b 6
Subrange27:  6 s/b 6
Subrange28:  -12 s/b -12
Subrange29:  -46 s/b -46
Subrange30:  34 s/b 34
Subrange31:  -52 s/b -52
Subrange32:  -18 s/b -18
Subrange33:  -280 s/b -280
Subrange34:  -280 s/b -280
Subrange35:  448 s/b 448
Subrange36:  -1 s/b -1
Subrange37:  -1 s/b -1
Subrange38:  2 s/b 2
Subrange39:  -13 s/b -13
Subrange40:  -33 s/b -33
Subrange41:  False s/b false
Subrange42:   True s/b true
Subrange43:   True s/b true
Subrange44:  False s/b false
Subrange45:   True s/b true
Subrange46:  False s/b false
Subrange47:   True s/b true
Subrange48:   True s/b true
Subrange49:  False s/b false
Subrange50:  False s/b false
Subrange51:   True s/b true
Subrange52:   True s/b true
Subrange53:  False s/b false
Subrange54:  False s/b false
Subrange55:   True s/b true
Subrange56:   True s/b true
Subrange57:   True s/b true
Subrange58:  False s/b false
Subrange59:  False s/b false
Subrange60:   True s/b true
Subrange61:   True s/b true
Subrange62:   True s/b true
Subrange63:  False s/b false
Subrange64:  False s/b false
Subrange65:  14 s/b 14

******************* Characters*******************

Character1:   g g u s/b g g u
Character2:   h s/b h
Character3:   f s/b f
Character4:   103 s/b 103
Character5:   u s/b u
Character6:    True s/b true
Character7:   False s/b false
Character8:    True s/b true
Character9:   False s/b false
Character10:   True s/b true
Character11:  False s/b false
Character12:   True s/b true
Character13:  False s/b false
Character14:   True s/b true
Character15:   True s/b true
Character16:  False s/b false
Character17:   True s/b true
Character18:   True s/b true
Character19:  False s/b false
Character20:  porker    porker    parker     s/b porker    porker    parker
Character21:   True s/b true
Character22:  False s/b false
Character23:   True s/b true
Character24:  False s/b false
Character25:   True s/b true
Character26:  False s/b false
Character27:   True s/b true
Character28:  False s/b false
Character29:   True s/b true
Character30:   True s/b true
Character40:  False s/b false
Character41:   True s/b true
Character42:   True s/b true
Character43:  False s/b false
Character44:  abcdefghijklmnopqrstuvwxyz s/b abcdefghijklmnopqrstuvwxyz
Character45:  zyxwvutsrqponmlkjihgfedcba s/b zyxwvutsrqponmlkjihgfedcba
Character46:  25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
Character46: s/b 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Character47: n s/b n
Character48: junky01234 s/b junky01234
Character49:  
crapola   
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork   
trash     
Character49: s/b
crapola
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork
trash
Character50:  
zero one two three four five six seven eight nine 
 s/b zero one two three four five six seven eight nine
Character51:  a s/b a
Character52:  b s/b b
Character53:  y s/b y
Character54:  99 s/b 99
Character55:  g s/b g
Character56:   True s/b true
Character57:  False s/b false
Character58:   True s/b true
Character59:  False s/b false
Character50:   True s/b true
Character61:  False s/b false
Character62:   True s/b true
Character63:  False s/b false
Character64:   True s/b true
Character65:   True s/b true
Character66:  False s/b false
Character67:   True s/b true
Character68:   True s/b true
Character69:  False s/b false
Character70:   True s/b true
Character71:  False s/b false
Character72:   True s/b true
Character73:  False s/b false
Character74:   True s/b true
Character75:  False s/b false
Character76:   True s/b true
Character77:  False s/b false
Character78:   True s/b true
Character79:   True s/b true
Character80:  False s/b false
Character81:   True s/b true
Character82:   True s/b true
Character83:  False s/b false
Character84:  this is a string s/b this is a string
Character85:  v s/b v
Character86:  
   hello, world
  hello, world
 hello, world
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h
Character86:  s/b:
   hello, world
  hello, world
 hello, world 
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h

******************* Booleans *******************

Boolean1:    True False s/b true false
Boolean2:    True s/b true
Boolean3:   False s/b false
Boolean4:   0 s/b 0
Boolean5:   1 s/b 1
Boolean6:    True s/b true
Boolean7:    True s/b true
Boolean8:   False s/b false
Boolean9:    True s/b true
Boolean10:  False s/b false
Boolean11:   True s/b true
Boolean12:  False s/b false
Boolean13:   True s/b true
Boolean14:  False s/b false
Boolean15:   True s/b true
Boolean16:   True s/b true
Boolean17:  False s/b false
Boolean18:   True s/b true
Boolean19:   True s/b true
Boolean20:  False s/b false
Boolean21:  False  True s/b false true
Boolean22:   True False s/b true false
Boolean23:   True s/b true
Boolean24:  False s/b false
Boolean25:   True False s/b true false
Boolean26:   True s/b true
Boolean27:  False s/b false
Boolean28:  0 s/b 0
Boolean29:  1 s/b 1
Boolean30:   True s/b true
Boolean31:   True s/b true
Boolean32:  False s/b false
Boolean33:   True s/b true
Boolean34:  False s/b false
Boolean35:   True s/b true
Boolean36:  False s/b false
Boolean37:   True s/b true
Boolean38:  False s/b false
Boolean39:   True s/b true
Boolean40:   True s/b true
Boolean41:  False s/b false
Boolean42:   True s/b true
Boolean43:   True s/b true
Boolean44:  False s/b false
Boolean45:
     False
    False
   False
  False
 False
False
Fals
Fal
Fa
F
Boolean45: s/b:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean46:
      True
     True
    True
   True
  True
 True
True
Tru
Tr
T
Boolean46: s/b:
      true
     true
    true
   true
  true
 true
true
tru
tr
t

******************* Scalar *******************

Scalar1:    True s/b true
Scalar2:    True s/b true
Scalar3:   0 s/b 0
Scalar4:   2 s/b 2
Scalar5:    True s/b true
Scalar6:    True s/b true
Scalar7:   False s/b false
Scalar8:    True s/b true
Scalar9:   False s/b false
Scalar10:   True s/b true
Scalar11:  False s/b false
Scalar12:   True s/b true
Scalar13:  False s/b false
Scalar14:   True s/b true
Scalar15:   True s/b true
Scalar16:  False s/b false
Scalar17:   True s/b true
Scalar18:   True s/b true
Scalar19:  False s/b false
Scalar20:  0 1 2 3 4 5 6 s/b 0 1 2 3 4 5 6
Scalar21:  6 5 4 3 2 1 0 s/b 6 5 4 3 2 1 0
Scalar1:    True s/b true
Scalar2:    True s/b true
Scalar3:   2 s/b 2
Scalar4:   6 s/b 6
Scalar5:    True s/b true
Scalar6:    True s/b true
Scalar7:   False s/b false
Scalar8:    True s/b true
Scalar9:   False s/b false
Scalar10:   True s/b true
Scalar11:  False s/b false
Scalar12:   True s/b true
Scalar13:  False s/b false
Scalar14:   True s/b true
Scalar15:   True s/b true
Scalar16:  False s/b false
Scalar17:   True s/b true
Scalar18:   True s/b true
Scalar19:  False s/b false

******************* Reals ******************************

Real1:    1.55400000e+00 s/b  1.554000e+00
Real2:    3.34000000e-03 s/b  3.340000e-03
Real3:    3.34000000e-24 s/b  3.34000e-24
Real4:    4.00000000e-45 s/b  4.000000e-45
Real5:   -5.56500000e+00 s/b -5.565000e+03
Real6:   -9.44000000e-03 s/b -9.440000e-03
Real7:   -6.36400000e+29 s/b -6.364000e+29
Real8:   -2.00000000e-14 s/b -2.000000e-14
Real9:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.2e+00
 1.23e+00
 1.235e+00
 1.2346e+00
 1.23457e+00
 1.234568e+00
 1.2345679e+00
 1.23456789e+00
 1.234567890e+00
 1.2345678901e+00
 1.23456789012e+00
 1.234567890123e+00
 1.2345678901235e+00
s/b (note precision dropoff at right):
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678901e+000
 1.23456789012e+000
 1.234567890123e+000
Real10:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
1.2
2.23
3.235
4.2346
5.23457
6.234568
7.2345679
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901235
14.23456789012346
15.234567890123456
16.2345678901234578
17.23456789012345780
18.234567890123457801
19.2345678901234578007
20.23456789012345780066
s/b (note precision dropoff at right):
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901234
14.23456789012345
15.234567890123456
16.2345678901234567
17.23456789012345678
18.234567890123456789
19.2345678901234567890
20.23456789012345678901
Real11:   1.41890000e+03 s/b  1.418900e+03
Rea112:   5.48440000e+02 s/b  5.484399e+02
Real13:   4.28122694e+05 s/b  4.281227e+05
Real14:   2.26011534e+00 s/b  2.260115e+00
Real15:   True s/b true
Real16:  False s/b false
Real17:   True s/b true
Real18:  False s/b false
Real19:   True s/b true
Real20:  False s/b false
Real21:   True s/b true
Real22:  False s/b false
Real23:   True s/b true
Real24:   True s/b true
Real25:  False s/b false
Real26:   True s/b true
Real27:   True s/b true
Real28:  False s/b false
Real29:   4.35230000e+02 s/b  4.35230e+02
Real30:   1.89425153e+05 s/b  1.89425e+05
Real31:   3.13635138e+01 s/b  3.13635e+01
Real32:  -3.44305942e-01 s/b -3.44290e-01
Real33:   1.56849870e+00 s/b  1.56850e+00
Real34:   1.41100187e+00 s/b  1.41100e+00
Real35:   6.07587463e+00 s/b  6.07587e+00
Real36:  435 s/b 435
Real37:  984 s/b 984
Real38:  435 s/b 435
Real39:   1.27805200e+03 s/b  1.278052e+03
Real40:   2.38946000e+02 s/b  2.389460e+02
Real41:   1.04720175e+05 s/b  1.047202e+05
Real42:   7.25959751e-03 s/b  7.259598e-03
Real43:   True s/b true
Real44:  False s/b false
Real45:   True s/b true
Real46:  False s/b false
Real47:   True s/b true
Real48:  False s/b false
Real49:   True s/b true
Real50:  False s/b false
Real51:   True s/b true
Real52:   True s/b true
Real53:  False s/b false
Real54:   True s/b true
Real55:   True s/b true
Real56:  False s/b false
Real57:   3.49300000e+01 s/b  3.493000e+01
Real58:   5.47560000e+00 s/b  5.475600e+00
Real59:   9.72333276e+01 s/b  9.723333e+01
Real60:   3.31147273e-01 s/b  3.311461e-01
Real61:   1.56788258e+00 s/b  1.567883e+00
Real62:   1.39375285e+00 s/b  1.393753e+00
Real63:   4.42148770e+00 s/b  4.421488e+00
Real64:  24 s/b 24
Real65:  75 s/b 75
Real66:  83 s/b 83
Real67:   4.33300000e+01 s/b  4.333000e+01
Real68:   3.00340000e+02 s/b  3.003400e+02
Real69:   3.00340000e+02 s/b  3.003400e+02
Real70:  -6.59998000e+03 s/b -6.599980e+03
Real71:  -8.36872000e+03 s/b -8.368720e+03
Real72:   1.76874000e+03 s/b  1.768740e+03
Real73:  -8.66906000e+03 s/b -8.669061e+03
Real74:  -6.90032000e+03 s/b -6.900320e+03
Real75:  -7.59559268e+05 s/b -7.595593e+05
Real76:  -7.59559268e+05 s/b -7.595593e+05
Real77:   5.60526458e+06 s/b  5.605265e+06
Real78:  -1.40907110e+00 s/b -1.409071e+00
Real79:  -7.37962766e+00 s/b -7.379627e+00
Real80:   1.03984200e+01 s/b  1.039842e+01
Real81:   True s/b true
Real82:  False s/b false
Real83:   True s/b true
Real84:  False s/b false
Real85:   True s/b true
Real86:   True s/b true
Real87:  False s/b false
Real88:  False s/b false
Real89:   True s/b true
Real90:   True s/b true
Real91:  False s/b false
Real92:  False s/b false
Real93:   True s/b true
Real94:   True s/b true
Real95:   True s/b true
Real96:  False s/b false
Real97:  False s/b false
Real98:   True s/b true
Real99:   True s/b true
Real100:  True s/b true
Real101: False s/b false
Real102: False s/b false
Real103:  7.34200000e+02 s/b  7.34200e+02
Real104:  5.39049640e+05 s/b  5.39050e+05
Real105: -4.34832062e-01 s/b -4.34850e-01
Real106: -1.56943430e+00 s/b -1.56943e+00
Real107:  6.80566323e-01 s/b  6.80566e-01
Real108:            -734 s/b -734
Real109:           -7635 s/b -7635
Real110:            -734 s/b -734
Real111:  1.51000000e+01 s/b  1.510000e+01
Real112:  4.51330000e+01 s/b  4.513300e+01
Real113: -3.86400000e+01 s/b -3.864000e+01
Real114: -3.65810000e+01 s/b -3.658100e+01
Real115:  3.55480000e+01 s/b  3.554800e+01
Real116: -4.93984000e+01 s/b -4.939840e+01
Real117: -4.40010000e+01 s/b -4.400100e+01
Real118: -2.64122320e+01 s/b -2.641223e+01
Real119: -1.48904140e+02 s/b -1.489041e+02
Real120:  5.58563248e+02 s/b  5.585632e+02
Real121: -5.22015662e+00 s/b -5.220157e+00
Real122: -1.77216253e+01 s/b -1.772163e+01
Real123:  4.27458238e+00 s/b  4.274582e+00
Real124:  True s/b true
Real125: False s/b false
Real126:  True s/b true
Real127: False s/b false
Real128:  True s/b true
Real129:  True s/b true
Real130: False s/b false
Real131: False s/b false
Real132:  True s/b true
Real133:  True s/b true
Real134: False s/b false
Real135: False s/b false
Real136:  True s/b true
Real137:  True s/b true
Real138:  True s/b true
Real139: False s/b false
Real140: False s/b false
Real141:  True s/b true
Real142:  True s/b true
Real143:  True s/b true
Real144: False s/b false
Real145: False s/b false
Real146:  6.82300000e+00 s/b  6.823000e+00
Real147   1.21257168e+05 s/b  1.212572e+05
Real148:  9.42124497e-01 s/b  9.421146e-01
Real149: -1.57067710e+00 s/b -1.570677e+00
Real150:  4.17153925e-01 s/b  4.171539e-01
Real151: -33 s/b -33
Real152: -843 s/b -843
Real153: -6244 s/b -6244
Real154: -8.42200000e+01 s/b -8.422000e+01
Real155:  8.42200000e+01 s/b  8.422000e+01
Real156:  -4.33300000e+01 s/b -4.333000e+01
Real157:  8.42200000e+01 s/b  8.422000e+01

******************* sets ******************************

Set1:  10101010101010101010 s/b 10101010101010101010
Set2:  1101110001 s/b 1101110001
Set3:  0100010000 s/b 0100010000
Set4:  0100001000 s/b 0100001000
Set5:  False s/b false
Set6:   True s/b true
Set7:   True s/b true
Set8:  False s/b false
Set9:   True s/b true
Set10:  True s/b true
Set11: False s/b false
Set12:  True s/b true
Set13:  True s/b true
Set14: False s/b false
Set15: 0101010000 s/b 0101010000
Set16: a_c_e_g_i_k_m_o_q_s_ s/b a_c_e_g_i_k_m_o_q_s_
Set17: a_cd_fg___ s/b a_cd_fg___
Set18: a______h__ s/b a______h__
Set19: _b_______j s/b _b_______j
Set20: False s/b false
Set21:  True s/b true
Set22:  True s/b true
Set23: False s/b false
Set24:  True s/b true
Set25:  True s/b true
Set26: False s/b false
Set27:  True s/b true
Set28:  True s/b true
Set29: False s/b false
Set30: a___e_____ s/b a___e_____
Set31: 0101010101 s/b 0101010101
Set32: 1101110001 s/b 1101110001
Set33: 0100010000 s/b 0100010000
Set34: 0100001000 s/b 0100001000
Set35: False s/b false
Set36:  True s/b true
Set37:  True s/b true
Set38: False s/b false
Set39:  True s/b true
Set40:  True s/b true
Set41: False s/b false
Set42:  True s/b true
Set43:  True s/b true
Set44: False s/b false
Set45: 0110000000 s/b 0110000000
Set46: 01 s/b 01
Set47: 11 s/b 11
Set48: 10 s/b 10
Set49: 10 s/b 10
Set50: False s/b false
Set51:  True s/b true
Set52:  True s/b true
Set53: False s/b false
Set54:  True s/b true
Set55:  True s/b true
Set56: False s/b false
Set57:  True s/b true
Set58:  True s/b true
Set59: False s/b false
Set60: 11 s/b 11
set61:  True s/b true

******************* Pointers ******************************

Pointer1:   4594 s/b 4594
Pointer2:    True s/b  true
Pointer3:   False s/b false
Pointer4:   p s/b p
Pointer5:   5 s/b 5
Pointer6:   3 s/b 3
Pointer7:   17 s/b 17
Pointer8:   1234.5678 s/b 1234.5678
Pointer9:   my word is s/b my word is
Pointer10:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Pointer11:   7234 y s/b 7234 y
Pointer12:   _b_d____ij s/b _b_d____ij
Pointer13:  3732 s/b 3732
Pointer14:   True s/b  true
Pointer15:  False s/b false
Pointer16:   True s/b true
Pointer17:  False s/b false
Pointer18:  False s/b false
Pointer19:   True s/b  true
Pointer20:  done s/b done
Pointer21:  Pointer22:  done s/b done
Pointer23:  done s/b done
Pointer24:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100
Pointer25:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100

******************* arrays ******************************

Array1:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array2:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array3:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array4:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array5:   False  True False  True False  True False  True False  True 
    s/b:   false  true false  true false  true false  true false  true
Array6:   False  True False  True False  True False  True False  True 
    s/b:   false  true false  true false  true false  true false  true
Array7:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array8:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array9:   k j i h g f e d c b s/b k j i h g f e d c b
Array10:  k j i h g f e d c b s/b k j i h g f e d c b
Array11:  p o n m l k j i h g s/b p o n m l k j i h g
Array12:  p o n m l k j i h g s/b p o n m l k j i h g
Array13:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array14:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array15:  5 4 3 2 s/b 5 4 3 2
Array16:  5 4 3 2 s/b 5 4 3 2
Array17:  k j i h g f e d c b s/b k j i h g f e d c b
Array18:  k j i h g f e d c b s/b k j i h g f e d c b
Array19:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array20:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array21:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array22:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array23:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array24:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array25:  11 10  s/b 11 10
Array26:  11 10  s/b 11 10
Array27:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array28:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array29:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array30:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array31:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array32:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array33:  5 4 3 2 1  s/b  5 4 3 2 1
Array34:  5 4 3 2 1  s/b  5 4 3 2 1
Array35:
 0 10 20 30 40 50 60 70 80 90 
 1 11 21 31 41 51 61 71 81 91 
 2 12 22 32 42 52 62 72 82 92 
 3 13 23 33 43 53 63 73 83 93 
 4 14 24 34 44 54 64 74 84 94 
 5 15 25 35 45 55 65 75 85 95 
 6 16 26 36 46 56 66 76 86 96 
 7 17 27 37 47 57 67 77 87 97 
 8 18 28 38 48 58 68 78 88 98 
 9 19 29 39 49 59 69 79 89 99 
s/b
0 10 20 30 40 50 60 70 80 90
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
Array36: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array37: 
hello, guy s/b hello, guy
Array38: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array39: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array40: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array41: 
30 29 28 27 26 25 24 23 22 21 s/b 30 29 28 27 26 25 24 23 22 21
Array42: 
40 39 38 37 36 35 34 33 32 31 s/b 40 39 38 37 36 35 34 33 32 31
Array43: 
22 21 20 19 18 17 16 15 14 13 s/b 22 21 20 19 18 17 16 15 14 13

******************* records ******************************

Record1:   
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record2:   
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record3:   873 0 235 427 s/b 873 0 235 427
Record4:   873 1  True 427 s/b 873 1  true 427
Record5:   873 2 f 427 s/b 873 2 f 427
Record6:   873 3 8 427 s/b 873 3 8 427
Record7:   873 4 3 427 s/b 873 4 3 427
Record8:   873 5 12 427 s/b 873 5 12 427
Record9:   873 6 8734.8389 427 s/b 873 6 8734.8389 427
Record10:  873 7 this one ? 427 s/b 873 7 this one ? 427
Record11:  873 8 20 19 18 17 16 15 14 13 12 11 427
      s/b:  873 8 20 19 18 17 16 15 14 13 12 11 427
Record12:  873 9 2387 t 427 s/b:  873 9 2387 t 427
Record13:  873 10 _i_gfedcb_ 427
      s/b:  873 10 _i_gfedcb_ 427
Record14:  873 11 2394 427 s/b 873 11 2394 427
Record15:  10 2343 s/b 10 2343
Record16:  19  True s/b 19  true
Record17:   True 2343 s/b  true 2343
Record18:  False  True s/b false  true
Record19:  2 2343 s/b 2 2343
Record20:  7  True s/b 7  true
Record21:  3 2343 s/b 3 2343
Record22:  4  True s/b 4  true
Record23:  1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Record24:  10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Record25:  10 9 8 7 6 5 4 3 2 76 s/b 10 9 8 7 6 5 4 3 2 76
Record26:  1 g s/b 1 g
Record27:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11

******************* files ******************************

File1:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File2:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File3:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File4:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File5:   a b c d e f g h i j s/b a b c d e f g h i j
File6:   a b c d e f g h i j s/b a b c d e f g h i j
File7:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File8:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File9:
7384
8342
 True
False
m
q
 1.23456780e+00
1.2345678
 5.68943210e+01
0.93837632
hi there !
hi th
     hi there !
s/b:
7384
8342
 true
false
m
q
 1.2345678000e+00
1.2345678
 5.6894321000e+01
0.93837632
hi there !
hi th
     hi there !
file10:
7384
8342
m
q
 1.23456780e+00
 1.23456780e+00
 5.68943210e+01
 9.38376320e-01
s/b:
7384
8342
m
q
 1.2345678000e+00
 1.2345678000e+00
 5.6894321000e+01
 9.3837632000e+01
file11:
'how now<eoln> brown cow<eoln> ' s/b 'how now<eoln> brown cow<eoln> '
file12:
'too much<eoln> too soon<eoln> ' s/b 'too much<eoln> too soon<eoln> '
File13:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File14:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File15:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File16:    True False  True False  True False  True False  True False 
   s/b:    true false  true false  true false  true false  true false
File17:   a b c d e f g h i j s/b a b c d e f g h i j
File18:   a b c d e f g h i j s/b a b c d e f g h i j
File19:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File20:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File21:    s/b 50
File22:    True s/b true

************ Procedures and functions ******************

ProcedureFunction1:   45 89 s/b 45 89
ProcedureFunction2:   46 s/b 46
ProcedureFunction3:   total junk s/b total junk
ProcedureFunction4:   tota? junk s/b tota? junk
total junk s/b total junk
ProcedureFunction5:   35 s/b 35
ProcedureFunction6:   10 9 8 6 5 4 3 2 1 78
s/b:   10 9 8 6 5 4 3 2 1 78
ProcedureFunction7:
93  True k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20 
64 False j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
23487 n False
help me123
abcd___h__
734
s/b:
93  true k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20
64 false j 1 3 12  4.54500000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
ProcedureFunction8:   9834 8383 j 744 s/b 9834 8383 j 744
ProcedureFunction9:   942 s/b 942
ProcedureFunction10:   62 76 s/b 62 76
ProcedureFunction11:   52 s/b 52
ProcedureFunction12:   a s/b a
ProcedureFunction13:   37 s/b 37

program complete

program complete

Added gpc/windows_X86/pcom.exe.

cannot compute difference between binary files

Added gpc/windows_X86/pint.exe.

cannot compute difference between binary files

Added ip_pascal/compile.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
#
# Compile file in batch mode using IP Pascal.
#
# Runs a compile with the input and output coming from/
# going to files.
# 
# Execution:
# 
# Compile <file>
#
# <file> is the filename without extention.
#
# The files are:
#
# <file>.pas - The Pascal source file
# <file>.p5  - The intermediate file produced
# <file>.err - The errors output from the compiler
#
# Note that the l+ option must be specified to get a full
# listing in the .err file (or just a lack of l-).
#

if [ -z "$1" ]
then
   echo "*** Error: Missing parameter"
   exit 1
fi

if [ ! -f $1.pas ]
then
   echo "*** Error: Missing $1.pas file"
   exit 1
fi

./pcom $1.p5 < $1.pas > $1.err

Added ip_pascal/compile.bat.







































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@echo off
rem
rem Compile file in batch mode using IP Pascal.
rem
rem Runs a compile with the input and output coming from/
rem going to files.
rem 
rem Execution:
rem 
rem Compile <file>
rem
rem <file> is the filename without extention.
rem
rem The files are:
rem
rem <file>.pas - The Pascal source file
rem <file>.p5  - The intermediate file produced
rem <file>.err - The errors output from the compiler
rem
rem Note that the l+ option must be specified to get a full
rem listing in the .err file (or just a lack of l-).
rem

rem
rem Check there is a parameter
rem
if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok

rem
rem Check the source file exists
rem
if exist "%1.pas" goto fileexists
echo *** Error: Missing %1.pas file
goto stop
:fileexists

rem
rem Run the compile
rem
pcom %1.p5 < %1.pas > %1.err

rem
rem Set the error status of the compile
rem
rem This will be zero if the compile was sucessful
rem
grep "Errors in program: 0" %1.err > %1.tmp
rem echo Error return after compile: %errorlevel%
if errorlevel 1 (

    rem
    rem For failed compiles, remove the intermediate file
    rem so it can't be run.
    rem
    echo Compile fails, examine the %1.err file
    del %1.p5

)
rem del %1.tmp

rem
rem Terminate
rem
:stop

Added ip_pascal/cpcom.





































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Compile pcom using IP Pascal
#
# *** This script does not work, use the .bat file.
# There is a problem with getting command parameters from Bash.
#

if [ ! -f pcom.pas ]
then
   echo "*** Error: Missing pcom.pas file"
   exit 1
fi

echo
echo Compiling pcom.pas to create pcom.exe
echo
echo pc pcom /standard /nrf /r

Added ip_pascal/cpcom.bat.







































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
rem
rem Compile pcom using IP Pascal
rem

if exist "pcom.pas" goto fileexists
echo *** Error: Missing pcom.pas file
goto stop
:fileexists

echo.
echo Compiling pcom.pas to create pcom.exe
echo.
pc pcom/standard/nrf/r

rem
rem Terminate
rem
:stop

Added ip_pascal/cpint.





































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#
# Compile pint using IP Pascal
#
# This script does not work, use the .bat file.
# There is a problem with getting command parameters from Bash.
#

if [ ! -f pint.pas ]
then
   echo "*** Error: Missing pint.pas file"
   exit 1
fi

echo
echo Compiling pint.pas to create pint.exe
echo
pc pint/standard/nrf/r

Added ip_pascal/cpint.bat.







































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
rem
rem Compile pcom using IP Pascal
rem

if exist "pcom.pas" goto fileexists
echo *** Error: Missing pcom.pas file
goto stop
:fileexists

echo.
echo Compiling pint.pas to create pint.exe
echo.
pc pint/standard/nrf/r

rem
rem Terminate
rem
:stop

Added ip_pascal/p5.













































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
#
# Compile with P5 using IP Pascal
#
# Execute with:
#
# p5 <file>
#
# Where <file> is the name of the source file without
# extention. The Pascal file is compiled and run.
# Any compiler errors are output to the screen. Input
# and output to and from the running program are from
# the console, but output to the prr file is placed
# in <file>.out.
# The intermediate code is placed in <file>.p5.
#

if [ -z "$1" ]
then

   echo "*** Error: Missing parameter"
   exit 1

fi

if [ ! -f $1.pas ]
then

   echo "*** Error: Missing $1.pas file"
   exit 1

fi

echo
echo Compiling and running $1
echo
./pcom $1.p5 < $1.pas
./pint $1.p5 $1.out

Added ip_pascal/p5.bat.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off
rem
rem Compile with P5 using IP Pascal
rem
rem Execute with:
rem
rem p5 <file>
rem
rem where <file> is the name of the source file without
rem extention. The Pascal file is compiled and run.
rem Any compiler errors are output to the screen. Input
rem and output to and from the running program are from
rem the console, but output to the prr file is placed
rem in <file>.out.
rem The intermediate code is placed in <file>.p5.
rem

if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok

if exist "%1.pas" goto fileexists
echo *** Error: Missing %1.pas file
goto stop
:fileexists

echo.
echo Compiling and running %1
echo.
pcom %1.p5 < %1.pas
pint %1.p5 %1.out
rem
rem Terminate
rem
:stop

Added ip_pascal/run.

















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
#
# Run a Pascal file in batch mode using IP Pascal
#
# Runs a Pascal intermediate in batch mode.
#
# Execution:
#
# run <file>
#
# <file> is the filename without extention.
#
# The files are:
#
# <file>.p5  - The intermediate file
# <file>.out - The prr file produced
# <file>.inp - The input file to the program
# <file>.lst - The output file from the program
#

if [ -z "$1" ]
then
   echo "*** Error: Missing parameter"
   exit 1
fi

if [ ! -f $1.p5 ]
then
   echo "*** Error: Missing $1.p5 file"
   exit 1
fi

if [ ! -f $1.inp ]
then
   echo "*** Error: Missing $1.inp file"
   exit 1
fi

cp $1.p5 prd 
./pint $1.p5 $1.out < $1.inp > $1.lst

Added ip_pascal/run.bat.

















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
rem
rem Run a Pascal file in batch mode using IP Pascal
rem
rem Runs a Pascal intermediate in batch mode.
rem
rem Execution:
rem
rem run <file>
rem
rem <file> is the filename without extention.
rem
rem The files are:
rem
rem <file>.p5  - The intermediate file
rem <file>.out - The prr file produced
rem <file>.inp - The input file to the program
rem <file>.lst - The output file from the program
rem

if not "%1"=="" goto paramok
echo *** Error: Missing parameter
goto stop
:paramok

if exist "%1.p5" goto fileexists1
echo *** Error: Missing %1.p5 file
goto stop
:fileexists1

if exist "%1.inp" goto fileexists2
echo *** Error: Missing %1.inp file
goto stop
:fileexists2

pint %1.p5 %1.out < %1.inp > %1.lst
rem
rem Terminate
rem
:stop

Added ip_pascal/standard_tests/iso7185pat.cmp.





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

*******************************************************************************

                 TEST SUITE FOR ISO 7185 PASCAL

                 Copyright (C) 1995 S. A. Moore - All rights reserved

*******************************************************************************

The following are implementation defined characteristics

Maxint: 2147483647
Bit length of integer without sign bit appears to be: 31
Integer default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
          1
Real default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
 1.20000000000000e+000
Boolean default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
false
 true
Char default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
a
Appears to be ASCII

******************* Control structures tests *******************

Control1: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control2: 10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Control3: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control4: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control5: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control6: yes s/b yes
Control7: yes s/b yes
Control8: yes stop s/b yes stop
Control9: stop s/b stop
Control10: one two three four five six seven eight nine-ten nine-ten 
Control10: s/b one two three four five six seven eight nine-ten nine-ten
Control11: start stop s/b start stop
Control12: start stop s/b start stop
Control13: start   1  2  3  4  5  6  7  8  9 10 s/b   1  2  3  4  5  6  7  8  9 10
Control14: start  10  9  8  7  6  5  4  3  2  1 s/b  10  9  8  7  6  5  4  3  2  1
Control15: start  0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
Control16: start  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Control17: start good start s/b good

******************* Integers *******************

Integer1:   121 s/b 121
Integer2:   35 s/b 35
Integer3:   3354 s/b 3354
Integer4:   1 s/b 1
Integer5:   35 s/b 35
Integer6:   44 s/b 44
Integer7:   42 s/b 42
Integer8:   1849 s/b 1849
Integer9:   N s/b N
Integer10:  43 s/b 43
Integer11:   true s/b true
Integer12:  false s/b false
Integer13:   true s/b true
Integer14:  false s/b false
Integer15:   true s/b true
Integer16:  false s/b false
Integer17:   true s/b true
Integer18:  false s/b false
Integer19:   true s/b true
Integer20:  false s/b false
Integer21:   true s/b true
Integer22:   true s/b true
Integer23:  false s/b false
Integer24:   true s/b true
Integer25:   true s/b true
Integer26:  false s/b false
Integer27:  546 s/b 546
Integer28:  90 s/b 90
Integer29:  22 s/b 22
Integer30:  1904 s/b 1904
Integer31:  1 s/b 1
Integer32:  22 s/b 22
Integer33:  6 s/b 6
Integer34:  4 s/b 4
Integer35:  49 s/b 49
Integer36:  A s/b A
Integer37:  65 s/b 65
Integer38:  768 s/b 768
Integer39:   true s/b true
Integer40:  false s/b false
Integer41:   true s/b true
Integer42:  false s/b false
Integer43:   true s/b true
Integer44:  false s/b false
Integer45:   true s/b true
Integer46:  false s/b false
Integer47:   true s/b true
Integer48:  false s/b false
Integer49:   true s/b true
Integer50:   true s/b true
Integer51:  false s/b false
Integer52:   true s/b true
Integer53:   true s/b true
Integer54:  false s/b false
Integer55:  6 s/b 6
Integer56:  6 s/b 6
Integer57:  -12 s/b -12
Integer58:  -46 s/b -46
Integer59:  34 s/b 34
Integer60:  -52 s/b -52
Integer61:  -18 s/b -18
Integer62:  -280 s/b -280
Integer63:  -280 s/b -280
Integer64:  448 s/b 448
Integer65:  -1 s/b -1
Integer66:  -1 s/b -1
Integer67:  2 s/b 2
Integer68:  -13 s/b -13
Integer69:  -33 s/b -33
Integer70: 196 s/b 196
Integer71:  false s/b false
Integer72:   true s/b true
Integer73:   true s/b true
Integer74:  false s/b false
Integer75:   true s/b true
Integer76:  false s/b false
Integer77:   true s/b true
Integer78:   true s/b true
Integer79:  false s/b false
Integer80:  false s/b false
Integer81:   true s/b true
Integer82:   true s/b true
Integer83:  false s/b false
Integer84:  false s/b false
Integer85:   true s/b true
Integer86:   true s/b true
Integer87:   true s/b true
Integer88:  false s/b false
Integer89:  false s/b false
Integer90:   true s/b true
Integer91:   true s/b true
Integer92:   true s/b true
Integer93:  false s/b false
Integer94:  false s/b false
Integer95:  14 s/b 14
Integer96:  0 s/b 0
Integer97:  0 s/b 0
Integer98:  0 s/b 0
Integer99:  15 s/b 15
Integer100:  45 s/b 45
Integer101: -39 s/b -39
Integer102: -35 s/b -35
Integer103: 34 s/b 34
Integer104: -48 s/b -48
Integer105: -44 s/b -44
Integer106: -20 s/b -20
Integer107: -126 s/b -126
Integer108: 520 s/b 520
Integer109: -6 s/b -6
Integer110: -25 s/b -25
Integer111: 5 s/b 5
Integer112: -9 s/b -9
Integer113: 0 s/b 0
Integer114: -2 s/b -2
Integer115: 64 s/b 64
Integer116: -55 s/b -55
Integer117: false s/b false
Integer118:  true s/b true
Integer119:  true s/b true
Integer120: false s/b false
Integer121:  true s/b true
Integer122: false s/b false
Integer123:  true s/b true
Integer124:  true s/b true
Integer125: false s/b false
Integer126: false s/b false
Integer127:  true s/b true
Integer128:  true s/b true
Integer129: false s/b false
Integer130: false s/b false
Integer131:  true s/b true
Integer132:  true s/b true
Integer133:  true s/b true
Integer134: false s/b false
Integer135: false s/b false
Integer136:  true s/b true
Integer137:  true s/b true
Integer138:  true s/b true
Integer139: false s/b false
Integer140: false s/b false
Integer141: 6 s/b 6
Integer142: -52 s/b -52
Integer143: 52 s/b 52
Integer144: -768 s/b -768
Integer145: 52 s/b 52
Integer146: 0 s/b 0

******************* Subranges *******************

Subrange1:   121 s/b 121
Subrange2:   35 s/b 35
Subrange3:   3354 s/b 3354
Subrange4:   1 s/b 1
Subrange5:   35 s/b 35
Subrange6:   44 s/b 44
Subrange7:   42 s/b 42
Subrange8:   N s/b N
Subrange9:   43 s/b 43
Subrange10:   true s/b true
Subrange11:  false s/b false
Subrange12:   true s/b true
Subrange13:  false s/b false
Subrange14:   true s/b true
Subrange15:  false s/b false
Subrange16:   true s/b true
Subrange17:  false s/b false
Subrange18:   true s/b true
Subrange19:  false s/b false
Subrange20:   true s/b true
Subrange21:   true s/b true
Subrange22:  false s/b false
Subrange23:   true s/b true
Subrange24:   true s/b true
Subrange25:  false s/b false
Subrange26:  6 s/b 6
Subrange27:  6 s/b 6
Subrange28:  -12 s/b -12
Subrange29:  -46 s/b -46
Subrange30:  34 s/b 34
Subrange31:  -52 s/b -52
Subrange32:  -18 s/b -18
Subrange33:  -280 s/b -280
Subrange34:  -280 s/b -280
Subrange35:  448 s/b 448
Subrange36:  -1 s/b -1
Subrange37:  -1 s/b -1
Subrange38:  2 s/b 2
Subrange39:  -13 s/b -13
Subrange40:  -33 s/b -33
Subrange41:  false s/b false
Subrange42:   true s/b true
Subrange43:   true s/b true
Subrange44:  false s/b false
Subrange45:   true s/b true
Subrange46:  false s/b false
Subrange47:   true s/b true
Subrange48:   true s/b true
Subrange49:  false s/b false
Subrange50:  false s/b false
Subrange51:   true s/b true
Subrange52:   true s/b true
Subrange53:  false s/b false
Subrange54:  false s/b false
Subrange55:   true s/b true
Subrange56:   true s/b true
Subrange57:   true s/b true
Subrange58:  false s/b false
Subrange59:  false s/b false
Subrange60:   true s/b true
Subrange61:   true s/b true
Subrange62:   true s/b true
Subrange63:  false s/b false
Subrange64:  false s/b false
Subrange65:  14 s/b 14

******************* Characters*******************

Character1:   g g u s/b g g u
Character2:   h s/b h
Character3:   f s/b f
Character4:   103 s/b 103
Character5:   u s/b u
Character6:    true s/b true
Character7:   false s/b false
Character8:    true s/b true
Character9:   false s/b false
Character10:   true s/b true
Character11:  false s/b false
Character12:   true s/b true
Character13:  false s/b false
Character14:   true s/b true
Character15:   true s/b true
Character16:  false s/b false
Character17:   true s/b true
Character18:   true s/b true
Character19:  false s/b false
Character20:  porker    porker    parker     s/b porker    porker    parker
Character21:   true s/b true
Character22:  false s/b false
Character23:   true s/b true
Character24:  false s/b false
Character25:   true s/b true
Character26:  false s/b false
Character27:   true s/b true
Character28:  false s/b false
Character29:   true s/b true
Character30:   true s/b true
Character40:  false s/b false
Character41:   true s/b true
Character42:   true s/b true
Character43:  false s/b false
Character44:  abcdefghijklmnopqrstuvwxyz s/b abcdefghijklmnopqrstuvwxyz
Character45:  zyxwvutsrqponmlkjihgfedcba s/b zyxwvutsrqponmlkjihgfedcba
Character46:  25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
Character46: s/b 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Character47: n s/b n
Character48: junky01234 s/b junky01234
Character49:  
crapola   
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork   
trash     
Character49: s/b
crapola
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork
trash
Character50:  
zero one two three four five six seven eight nine 
 s/b zero one two three four five six seven eight nine
Character51:  a s/b a
Character52:  b s/b b
Character53:  y s/b y
Character54:  99 s/b 99
Character55:  g s/b g
Character56:   true s/b true
Character57:  false s/b false
Character58:   true s/b true
Character59:  false s/b false
Character50:   true s/b true
Character61:  false s/b false
Character62:   true s/b true
Character63:  false s/b false
Character64:   true s/b true
Character65:   true s/b true
Character66:  false s/b false
Character67:   true s/b true
Character68:   true s/b true
Character69:  false s/b false
Character70:   true s/b true
Character71:  false s/b false
Character72:   true s/b true
Character73:  false s/b false
Character74:   true s/b true
Character75:  false s/b false
Character76:   true s/b true
Character77:  false s/b false
Character78:   true s/b true
Character79:   true s/b true
Character80:  false s/b false
Character81:   true s/b true
Character82:   true s/b true
Character83:  false s/b false
Character84:  this is a string s/b this is a string
Character85:  v s/b v
Character86:  
   hello, world
  hello, world
 hello, world
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h
Character86:  s/b:
   hello, world
  hello, world
 hello, world 
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h

******************* Booleans *******************

Boolean1:    true false s/b true false
Boolean2:    true s/b true
Boolean3:   false s/b false
Boolean4:   0 s/b 0
Boolean5:   1 s/b 1
Boolean6:    true s/b true
Boolean7:    true s/b true
Boolean8:   false s/b false
Boolean9:    true s/b true
Boolean10:  false s/b false
Boolean11:   true s/b true
Boolean12:  false s/b false
Boolean13:   true s/b true
Boolean14:  false s/b false
Boolean15:   true s/b true
Boolean16:   true s/b true
Boolean17:  false s/b false
Boolean18:   true s/b true
Boolean19:   true s/b true
Boolean20:  false s/b false
Boolean21:  false  true s/b false true
Boolean22:   true false s/b true false
Boolean23:   true s/b true
Boolean24:  false s/b false
Boolean25:   true false s/b true false
Boolean26:   true s/b true
Boolean27:  false s/b false
Boolean28:  0 s/b 0
Boolean29:  1 s/b 1
Boolean30:   true s/b true
Boolean31:   true s/b true
Boolean32:  false s/b false
Boolean33:   true s/b true
Boolean34:  false s/b false
Boolean35:   true s/b true
Boolean36:  false s/b false
Boolean37:   true s/b true
Boolean38:  false s/b false
Boolean39:   true s/b true
Boolean40:   true s/b true
Boolean41:  false s/b false
Boolean42:   true s/b true
Boolean43:   true s/b true
Boolean44:  false s/b false
Boolean45:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean45: s/b:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean46:
      true
     true
    true
   true
  true
 true
true
tru
tr
t
Boolean46: s/b:
      true
     true
    true
   true
  true
 true
true
tru
tr
t

******************* Scalar *******************

Scalar1:    true s/b true
Scalar2:    true s/b true
Scalar3:   0 s/b 0
Scalar4:   2 s/b 2
Scalar5:    true s/b true
Scalar6:    true s/b true
Scalar7:   false s/b false
Scalar8:    true s/b true
Scalar9:   false s/b false
Scalar10:   true s/b true
Scalar11:  false s/b false
Scalar12:   true s/b true
Scalar13:  false s/b false
Scalar14:   true s/b true
Scalar15:   true s/b true
Scalar16:  false s/b false
Scalar17:   true s/b true
Scalar18:   true s/b true
Scalar19:  false s/b false
Scalar20:  0 1 2 3 4 5 6 s/b 0 1 2 3 4 5 6
Scalar21:  6 5 4 3 2 1 0 s/b 6 5 4 3 2 1 0
Scalar1:    true s/b true
Scalar2:    true s/b true
Scalar3:   2 s/b 2
Scalar4:   6 s/b 6
Scalar5:    true s/b true
Scalar6:    true s/b true
Scalar7:   false s/b false
Scalar8:    true s/b true
Scalar9:   false s/b false
Scalar10:   true s/b true
Scalar11:  false s/b false
Scalar12:   true s/b true
Scalar13:  false s/b false
Scalar14:   true s/b true
Scalar15:   true s/b true
Scalar16:  false s/b false
Scalar17:   true s/b true
Scalar18:   true s/b true
Scalar19:  false s/b false

******************* Reals ******************************

Real1:    1.5540000e+000 s/b  1.554000e+00
Real2:    3.3400000e-003 s/b  3.340000e-03
Real3:    3.3400000e-024 s/b  3.34000e-24
Real4:    4.0000000e-045 s/b  4.000000e-45
Real5:   -5.5650000e+000 s/b -5.565000e+03
Real6:   -9.4400000e-003 s/b -9.440000e-03
Real7:   -6.3640000e+029 s/b -6.364000e+29
Real8:   -2.0000000e-014 s/b -2.000000e-14
Real9:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678900e+000
 1.23456789000e+000
 1.234567890000e+000
s/b (note precision dropoff at right):
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678901e+000
 1.23456789012e+000
 1.234567890123e+000
Real10:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678900
11.23456789000
12.234567890000
13.2345678900000
14.23456789000000
15.234567890000000
16.2345678900000000
17.23456789000000000
18.234567890000000000
19.2345678900000000000
20.23456789000000000000
s/b (note precision dropoff at right):
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901234
14.23456789012345
15.234567890123456
16.2345678901234567
17.23456789012345678
18.234567890123456789
19.2345678901234567890
20.23456789012345678901
Real11:   1.4189000e+003 s/b  1.418900e+03
Rea112:   5.4844000e+002 s/b  5.484399e+02
Real13:   4.2812269e+005 s/b  4.281227e+05
Real14:   2.2601153e+000 s/b  2.260115e+00
Real15:   true s/b true
Real16:  false s/b false
Real17:   true s/b true
Real18:  false s/b false
Real19:   true s/b true
Real20:  false s/b false
Real21:   true s/b true
Real22:  false s/b false
Real23:   true s/b true
Real24:   true s/b true
Real25:  false s/b false
Real26:   true s/b true
Real27:   true s/b true
Real28:  false s/b false
Real29:   4.3523000e+002 s/b  4.35230e+02
Real30:   1.8942515e+005 s/b  1.89425e+05
Real31:   3.1363513e+001 s/b  3.13635e+01
Real32:  -3.4430594e-001 s/b -3.44290e-01
Real33:   1.5684987e+000 s/b  1.56850e+00
Real34:   1.4110018e+000 s/b  1.41100e+00
Real35:   6.0758746e+000 s/b  6.07587e+00
Real36:  435 s/b 435
Real37:  984 s/b 984
Real38:  435 s/b 435
Real39:   1.2780520e+003 s/b  1.278052e+03
Real40:   2.3894600e+002 s/b  2.389460e+02
Real41:   1.0472017e+005 s/b  1.047202e+05
Real42:   7.2595975e-003 s/b  7.259598e-03
Real43:   true s/b true
Real44:  false s/b false
Real45:   true s/b true
Real46:  false s/b false
Real47:   true s/b true
Real48:  false s/b false
Real49:   true s/b true
Real50:  false s/b false
Real51:   true s/b true
Real52:   true s/b true
Real53:  false s/b false
Real54:   true s/b true
Real55:   true s/b true
Real56:  false s/b false
Real57:   3.4930000e+001 s/b  3.493000e+01
Real58:   5.4756000e+000 s/b  5.475600e+00
Real59:   9.7233327e+001 s/b  9.723333e+01
Real60:   3.3114727e-001 s/b  3.311461e-01
Real61:   1.5678825e+000 s/b  1.567883e+00
Real62:   1.3937528e+000 s/b  1.393753e+00
Real63:   4.4214877e+000 s/b  4.421488e+00
Real64:  24 s/b 24
Real65:  75 s/b 75
Real66:  83 s/b 83
Real67:   4.3330000e+001 s/b  4.333000e+01
Real68:   3.0034000e+002 s/b  3.003400e+02
Real69:   3.0034000e+002 s/b  3.003400e+02
Real70:  -6.5999800e+003 s/b -6.599980e+03
Real71:  -8.3687200e+003 s/b -8.368720e+03
Real72:   1.7687400e+003 s/b  1.768740e+03
Real73:  -8.6690600e+003 s/b -8.669061e+03
Real74:  -6.9003200e+003 s/b -6.900320e+03
Real75:  -7.5955926e+005 s/b -7.595593e+05
Real76:  -7.5955926e+005 s/b -7.595593e+05
Real77:   5.6052645e+006 s/b  5.605265e+06
Real78:  -1.4090711e+000 s/b -1.409071e+00
Real79:  -7.3796276e+000 s/b -7.379627e+00
Real80:   1.0398420e+001 s/b  1.039842e+01
Real81:   true s/b true
Real82:  false s/b false
Real83:   true s/b true
Real84:  false s/b false
Real85:   true s/b true
Real86:   true s/b true
Real87:  false s/b false
Real88:  false s/b false
Real89:   true s/b true
Real90:   true s/b true
Real91:  false s/b false
Real92:  false s/b false
Real93:   true s/b true
Real94:   true s/b true
Real95:   true s/b true
Real96:  false s/b false
Real97:  false s/b false
Real98:   true s/b true
Real99:   true s/b true
Real100:  true s/b true
Real101: false s/b false
Real102: false s/b false
Real103:  7.3420000e+002 s/b  7.34200e+02
Real104:  5.3904964e+005 s/b  5.39050e+05
Real105: -4.3483206e-001 s/b -4.34850e-01
Real106: -1.5694343e+000 s/b -1.56943e+00
Real107:  6.8056632e-001 s/b  6.80566e-01
Real108:            -734 s/b -734
Real109:           -7635 s/b -7635
Real110:            -734 s/b -734
Real111:  1.5100000e+001 s/b  1.510000e+01
Real112:  4.5133000e+001 s/b  4.513300e+01
Real113: -3.8640000e+001 s/b -3.864000e+01
Real114: -3.6581000e+001 s/b -3.658100e+01
Real115:  3.5548000e+001 s/b  3.554800e+01
Real116: -4.9398400e+001 s/b -4.939840e+01
Real117: -4.4001000e+001 s/b -4.400100e+01
Real118: -2.6412232e+001 s/b -2.641223e+01
Real119: -1.4890414e+002 s/b -1.489041e+02
Real120:  5.5856324e+002 s/b  5.585632e+02
Real121: -5.2201566e+000 s/b -5.220157e+00
Real122: -1.7721625e+001 s/b -1.772163e+01
Real123:  4.2745823e+000 s/b  4.274582e+00
Real124:  true s/b true
Real125: false s/b false
Real126:  true s/b true
Real127: false s/b false
Real128:  true s/b true
Real129:  true s/b true
Real130: false s/b false
Real131: false s/b false
Real132:  true s/b true
Real133:  true s/b true
Real134: false s/b false
Real135: false s/b false
Real136:  true s/b true
Real137:  true s/b true
Real138:  true s/b true
Real139: false s/b false
Real140: false s/b false
Real141:  true s/b true
Real142:  true s/b true
Real143:  true s/b true
Real144: false s/b false
Real145: false s/b false
Real146:  6.8230000e+000 s/b  6.823000e+00
Real147   1.2125716e+005 s/b  1.212572e+05
Real148:  9.4212449e-001 s/b  9.421146e-01
Real149: -1.5706771e+000 s/b -1.570677e+00
Real150:  4.1715392e-001 s/b  4.171539e-01
Real151: -33 s/b -33
Real152: -843 s/b -843
Real153: -6244 s/b -6244
Real154: -8.4220000e+001 s/b -8.422000e+01
Real155:  8.4220000e+001 s/b  8.422000e+01
Real156:  -4.3330000e+001 s/b -4.333000e+01
Real157:  8.4220000e+001 s/b  8.422000e+01

******************* sets ******************************

Set1:  10101010101010101010 s/b 10101010101010101010
Set2:  1101110001 s/b 1101110001
Set3:  0100010000 s/b 0100010000
Set4:  0100001000 s/b 0100001000
Set5:  false s/b false
Set6:   true s/b true
Set7:   true s/b true
Set8:  false s/b false
Set9:   true s/b true
Set10:  true s/b true
Set11: false s/b false
Set12:  true s/b true
Set13:  true s/b true
Set14: false s/b false
Set15: 0101010000 s/b 0101010000
Set16: a_c_e_g_i_k_m_o_q_s_ s/b a_c_e_g_i_k_m_o_q_s_
Set17: a_cd_fg___ s/b a_cd_fg___
Set18: a______h__ s/b a______h__
Set19: _b_______j s/b _b_______j
Set20: false s/b false
Set21:  true s/b true
Set22:  true s/b true
Set23: false s/b false
Set24:  true s/b true
Set25:  true s/b true
Set26: false s/b false
Set27:  true s/b true
Set28:  true s/b true
Set29: false s/b false
Set30: a___e_____ s/b a___e_____
Set31: 0101010101 s/b 0101010101
Set32: 1101110001 s/b 1101110001
Set33: 0100010000 s/b 0100010000
Set34: 0100001000 s/b 0100001000
Set35: false s/b false
Set36:  true s/b true
Set37:  true s/b true
Set38: false s/b false
Set39:  true s/b true
Set40:  true s/b true
Set41: false s/b false
Set42:  true s/b true
Set43:  true s/b true
Set44: false s/b false
Set45: 0110000000 s/b 0110000000
Set46: 01 s/b 01
Set47: 11 s/b 11
Set48: 10 s/b 10
Set49: 10 s/b 10
Set50: false s/b false
Set51:  true s/b true
Set52:  true s/b true
Set53: false s/b false
Set54:  true s/b true
Set55:  true s/b true
Set56: false s/b false
Set57:  true s/b true
Set58:  true s/b true
Set59: false s/b false
Set60: 11 s/b 11
set61:  true s/b true

******************* Pointers ******************************

Pointer1:   4594 s/b 4594
Pointer2:    true s/b  true
Pointer3:   false s/b false
Pointer4:   p s/b p
Pointer5:   5 s/b 5
Pointer6:   3 s/b 3
Pointer7:   17 s/b 17
Pointer8:   1234.5678 s/b 1234.5678
Pointer9:   my word is s/b my word is
Pointer10:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Pointer11:   7234 y s/b 7234 y
Pointer12:   _b_d____ij s/b _b_d____ij
Pointer13:  3732 s/b 3732
Pointer14:   true s/b  true
Pointer15:  false s/b false
Pointer16:   true s/b true
Pointer17:  false s/b false
Pointer18:  false s/b false
Pointer19:   true s/b  true
Pointer20:  done s/b done
Pointer21:  Pointer22:  done s/b done
Pointer23:  done s/b done
Pointer24:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100
Pointer25:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100

******************* arrays ******************************

Array1:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array2:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array3:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array4:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array5:   false  true false  true false  true false  true false  true 
    s/b:   false  true false  true false  true false  true false  true
Array6:   false  true false  true false  true false  true false  true 
    s/b:   false  true false  true false  true false  true false  true
Array7:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array8:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array9:   k j i h g f e d c b s/b k j i h g f e d c b
Array10:  k j i h g f e d c b s/b k j i h g f e d c b
Array11:  p o n m l k j i h g s/b p o n m l k j i h g
Array12:  p o n m l k j i h g s/b p o n m l k j i h g
Array13:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array14:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array15:  5 4 3 2 s/b 5 4 3 2
Array16:  5 4 3 2 s/b 5 4 3 2
Array17:  k j i h g f e d c b s/b k j i h g f e d c b
Array18:  k j i h g f e d c b s/b k j i h g f e d c b
Array19:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array20:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array21:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array22:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array23:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array24:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array25:  11 10  s/b 11 10
Array26:  11 10  s/b 11 10
Array27:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array28:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array29:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array30:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array31:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array32:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array33:  5 4 3 2 1  s/b  5 4 3 2 1
Array34:  5 4 3 2 1  s/b  5 4 3 2 1
Array35:
 0 10 20 30 40 50 60 70 80 90 
 1 11 21 31 41 51 61 71 81 91 
 2 12 22 32 42 52 62 72 82 92 
 3 13 23 33 43 53 63 73 83 93 
 4 14 24 34 44 54 64 74 84 94 
 5 15 25 35 45 55 65 75 85 95 
 6 16 26 36 46 56 66 76 86 96 
 7 17 27 37 47 57 67 77 87 97 
 8 18 28 38 48 58 68 78 88 98 
 9 19 29 39 49 59 69 79 89 99 
s/b
0 10 20 30 40 50 60 70 80 90
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
Array36: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array37: 
hello, guy s/b hello, guy
Array38: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array39: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array40: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array41: 
30 29 28 27 26 25 24 23 22 21 s/b 30 29 28 27 26 25 24 23 22 21
Array42: 
40 39 38 37 36 35 34 33 32 31 s/b 40 39 38 37 36 35 34 33 32 31
Array43: 
22 21 20 19 18 17 16 15 14 13 s/b 22 21 20 19 18 17 16 15 14 13

******************* records ******************************

Record1:   
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record2:   
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record3:   873 0 235 427 s/b 873 0 235 427
Record4:   873 1  true 427 s/b 873 1  true 427
Record5:   873 2 f 427 s/b 873 2 f 427
Record6:   873 3 8 427 s/b 873 3 8 427
Record7:   873 4 3 427 s/b 873 4 3 427
Record8:   873 5 12 427 s/b 873 5 12 427
Record9:   873 6 8734.8389 427 s/b 873 6 8734.8389 427
Record10:  873 7 this one ? 427 s/b 873 7 this one ? 427
Record11:  873 8 20 19 18 17 16 15 14 13 12 11 427
      s/b:  873 8 20 19 18 17 16 15 14 13 12 11 427
Record12:  873 9 2387 t 427 s/b:  873 9 2387 t 427
Record13:  873 10 _i_gfedcb_ 427
      s/b:  873 10 _i_gfedcb_ 427
Record14:  873 11 2394 427 s/b 873 11 2394 427
Record15:  10 2343 s/b 10 2343
Record16:  19  true s/b 19  true
Record17:   true 2343 s/b  true 2343
Record18:  false  true s/b false  true
Record19:  2 2343 s/b 2 2343
Record20:  7  true s/b 7  true
Record21:  3 2343 s/b 3 2343
Record22:  4  true s/b 4  true
Record23:  1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Record24:  10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Record25:  10 9 8 7 6 5 4 3 2 76 s/b 10 9 8 7 6 5 4 3 2 76
Record26:  1 g s/b 1 g
Record27:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11

******************* files ******************************

File1:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File2:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File3:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File4:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File5:   a b c d e f g h i j s/b a b c d e f g h i j
File6:   a b c d e f g h i j s/b a b c d e f g h i j
File7:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File8:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File9:
7384
8342
 true
false
m
q
 1.2345678e+000
1.2345678
 5.6894321e+001
0.93837632
hi there !
hi th
     hi there !
s/b:
7384
8342
 true
false
m
q
 1.2345678000e+00
1.2345678
 5.6894321000e+01
0.93837632
hi there !
hi th
     hi there !
file10:
7384
8342
m
q
 1.2345678e+000
 1.2345678e+000
 5.6894321e+001
 9.3837632e-001
s/b:
7384
8342
m
q
 1.2345678000e+00
 1.2345678000e+00
 5.6894321000e+01
 9.3837632000e+01
file11:
'how now<eoln> brown cow<eoln> ' s/b 'how now<eoln> brown cow<eoln> '
file12:
'too much<eoln> too soon<eoln> ' s/b 'too much<eoln> too soon<eoln> '
File13:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File14:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File15:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File16:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File17:   a b c d e f g h i j s/b a b c d e f g h i j
File18:   a b c d e f g h i j s/b a b c d e f g h i j
File19:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File20:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File21:    s/b 50
File22:    true s/b true

************ Procedures and functions ******************

ProcedureFunction1:   45 89 s/b 45 89
ProcedureFunction2:   46 s/b 46
ProcedureFunction3:   total junk s/b total junk
ProcedureFunction4:   tota? junk s/b tota? junk
total junk s/b total junk
ProcedureFunction5:   35 s/b 35
ProcedureFunction6:   10 9 8 6 5 4 3 2 1 78
s/b:   10 9 8 6 5 4 3 2 1 78
ProcedureFunction7:
93  true k 7 4 10  3.1414000e+000 hello, guy
11 12 13 14 15 16 17 18 19 20 
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
s/b:
93  true k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20
64 false j 1 3 12  4.54500000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
ProcedureFunction8:   9834 8383 j 744 s/b 9834 8383 j 744
ProcedureFunction9:   942 s/b 942
ProcedureFunction10:   62 76 s/b 62 76
ProcedureFunction11:   52 s/b 52
ProcedureFunction12:   a s/b a
ProcedureFunction13:   37 s/b 37

program complete

Added ip_pascal/standard_tests/iso7185pats.cmp.



































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

P5 Pascal interpreter vs. 1.0

Assembling/loading program
Running program

*******************************************************************************

                 TEST SUITE FOR ISO 7185 PASCAL

                 Copyright (C) 1995 S. A. Moore - All rights reserved

*******************************************************************************

The following are implementation defined characteristics

Maxint: 2147483647
Bit length of integer without sign bit appears to be: 31
Integer default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
          1
Real default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
 1.20000000000000e+000
Boolean default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
false
 true
Char default output field
         1111111111222222222233333333334
1234567890123456789012345678901234567890
a
Appears to be ASCII

******************* Control structures tests *******************

Control1: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control2: 10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Control3: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control4: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control5: 1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Control6: yes s/b yes
Control7: yes s/b yes
Control8: yes stop s/b yes stop
Control9: stop s/b stop
Control10: one two three four five six seven eight nine-ten nine-ten 
Control10: s/b one two three four five six seven eight nine-ten nine-ten
Control11: start stop s/b start stop
Control12: start stop s/b start stop
Control13: start   1  2  3  4  5  6  7  8  9 10 s/b   1  2  3  4  5  6  7  8  9 10
Control14: start  10  9  8  7  6  5  4  3  2  1 s/b  10  9  8  7  6  5  4  3  2  1
Control15: start  0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
Control16: start  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Control17: start good start s/b good

******************* Integers *******************

Integer1:   121 s/b 121
Integer2:   35 s/b 35
Integer3:   3354 s/b 3354
Integer4:   1 s/b 1
Integer5:   35 s/b 35
Integer6:   44 s/b 44
Integer7:   42 s/b 42
Integer8:   1849 s/b 1849
Integer9:   N s/b N
Integer10:  43 s/b 43
Integer11:   true s/b true
Integer12:  false s/b false
Integer13:   true s/b true
Integer14:  false s/b false
Integer15:   true s/b true
Integer16:  false s/b false
Integer17:   true s/b true
Integer18:  false s/b false
Integer19:   true s/b true
Integer20:  false s/b false
Integer21:   true s/b true
Integer22:   true s/b true
Integer23:  false s/b false
Integer24:   true s/b true
Integer25:   true s/b true
Integer26:  false s/b false
Integer27:  546 s/b 546
Integer28:  90 s/b 90
Integer29:  22 s/b 22
Integer30:  1904 s/b 1904
Integer31:  1 s/b 1
Integer32:  22 s/b 22
Integer33:  6 s/b 6
Integer34:  4 s/b 4
Integer35:  49 s/b 49
Integer36:  A s/b A
Integer37:  65 s/b 65
Integer38:  768 s/b 768
Integer39:   true s/b true
Integer40:  false s/b false
Integer41:   true s/b true
Integer42:  false s/b false
Integer43:   true s/b true
Integer44:  false s/b false
Integer45:   true s/b true
Integer46:  false s/b false
Integer47:   true s/b true
Integer48:  false s/b false
Integer49:   true s/b true
Integer50:   true s/b true
Integer51:  false s/b false
Integer52:   true s/b true
Integer53:   true s/b true
Integer54:  false s/b false
Integer55:  6 s/b 6
Integer56:  6 s/b 6
Integer57:  -12 s/b -12
Integer58:  -46 s/b -46
Integer59:  34 s/b 34
Integer60:  -52 s/b -52
Integer61:  -18 s/b -18
Integer62:  -280 s/b -280
Integer63:  -280 s/b -280
Integer64:  448 s/b 448
Integer65:  -1 s/b -1
Integer66:  -1 s/b -1
Integer67:  2 s/b 2
Integer68:  -13 s/b -13
Integer69:  -33 s/b -33
Integer70: 196 s/b 196
Integer71:  false s/b false
Integer72:   true s/b true
Integer73:   true s/b true
Integer74:  false s/b false
Integer75:   true s/b true
Integer76:  false s/b false
Integer77:   true s/b true
Integer78:   true s/b true
Integer79:  false s/b false
Integer80:  false s/b false
Integer81:   true s/b true
Integer82:   true s/b true
Integer83:  false s/b false
Integer84:  false s/b false
Integer85:   true s/b true
Integer86:   true s/b true
Integer87:   true s/b true
Integer88:  false s/b false
Integer89:  false s/b false
Integer90:   true s/b true
Integer91:   true s/b true
Integer92:   true s/b true
Integer93:  false s/b false
Integer94:  false s/b false
Integer95:  14 s/b 14
Integer96:  0 s/b 0
Integer97:  0 s/b 0
Integer98:  0 s/b 0
Integer99:  15 s/b 15
Integer100:  45 s/b 45
Integer101: -39 s/b -39
Integer102: -35 s/b -35
Integer103: 34 s/b 34
Integer104: -48 s/b -48
Integer105: -44 s/b -44
Integer106: -20 s/b -20
Integer107: -126 s/b -126
Integer108: 520 s/b 520
Integer109: -6 s/b -6
Integer110: -25 s/b -25
Integer111: 5 s/b 5
Integer112: -9 s/b -9
Integer113: 0 s/b 0
Integer114: -2 s/b -2
Integer115: 64 s/b 64
Integer116: -55 s/b -55
Integer117: false s/b false
Integer118:  true s/b true
Integer119:  true s/b true
Integer120: false s/b false
Integer121:  true s/b true
Integer122: false s/b false
Integer123:  true s/b true
Integer124:  true s/b true
Integer125: false s/b false
Integer126: false s/b false
Integer127:  true s/b true
Integer128:  true s/b true
Integer129: false s/b false
Integer130: false s/b false
Integer131:  true s/b true
Integer132:  true s/b true
Integer133:  true s/b true
Integer134: false s/b false
Integer135: false s/b false
Integer136:  true s/b true
Integer137:  true s/b true
Integer138:  true s/b true
Integer139: false s/b false
Integer140: false s/b false
Integer141: 6 s/b 6
Integer142: -52 s/b -52
Integer143: 52 s/b 52
Integer144: -768 s/b -768
Integer145: 52 s/b 52
Integer146: 0 s/b 0

******************* Subranges *******************

Subrange1:   121 s/b 121
Subrange2:   35 s/b 35
Subrange3:   3354 s/b 3354
Subrange4:   1 s/b 1
Subrange5:   35 s/b 35
Subrange6:   44 s/b 44
Subrange7:   42 s/b 42
Subrange8:   N s/b N
Subrange9:   43 s/b 43
Subrange10:   true s/b true
Subrange11:  false s/b false
Subrange12:   true s/b true
Subrange13:  false s/b false
Subrange14:   true s/b true
Subrange15:  false s/b false
Subrange16:   true s/b true
Subrange17:  false s/b false
Subrange18:   true s/b true
Subrange19:  false s/b false
Subrange20:   true s/b true
Subrange21:   true s/b true
Subrange22:  false s/b false
Subrange23:   true s/b true
Subrange24:   true s/b true
Subrange25:  false s/b false
Subrange26:  6 s/b 6
Subrange27:  6 s/b 6
Subrange28:  -12 s/b -12
Subrange29:  -46 s/b -46
Subrange30:  34 s/b 34
Subrange31:  -52 s/b -52
Subrange32:  -18 s/b -18
Subrange33:  -280 s/b -280
Subrange34:  -280 s/b -280
Subrange35:  448 s/b 448
Subrange36:  -1 s/b -1
Subrange37:  -1 s/b -1
Subrange38:  2 s/b 2
Subrange39:  -13 s/b -13
Subrange40:  -33 s/b -33
Subrange41:  false s/b false
Subrange42:   true s/b true
Subrange43:   true s/b true
Subrange44:  false s/b false
Subrange45:   true s/b true
Subrange46:  false s/b false
Subrange47:   true s/b true
Subrange48:   true s/b true
Subrange49:  false s/b false
Subrange50:  false s/b false
Subrange51:   true s/b true
Subrange52:   true s/b true
Subrange53:  false s/b false
Subrange54:  false s/b false
Subrange55:   true s/b true
Subrange56:   true s/b true
Subrange57:   true s/b true
Subrange58:  false s/b false
Subrange59:  false s/b false
Subrange60:   true s/b true
Subrange61:   true s/b true
Subrange62:   true s/b true
Subrange63:  false s/b false
Subrange64:  false s/b false
Subrange65:  14 s/b 14

******************* Characters*******************

Character1:   g g u s/b g g u
Character2:   h s/b h
Character3:   f s/b f
Character4:   103 s/b 103
Character5:   u s/b u
Character6:    true s/b true
Character7:   false s/b false
Character8:    true s/b true
Character9:   false s/b false
Character10:   true s/b true
Character11:  false s/b false
Character12:   true s/b true
Character13:  false s/b false
Character14:   true s/b true
Character15:   true s/b true
Character16:  false s/b false
Character17:   true s/b true
Character18:   true s/b true
Character19:  false s/b false
Character20:  porker    porker    parker     s/b porker    porker    parker
Character21:   true s/b true
Character22:  false s/b false
Character23:   true s/b true
Character24:  false s/b false
Character25:   true s/b true
Character26:  false s/b false
Character27:   true s/b true
Character28:  false s/b false
Character29:   true s/b true
Character30:   true s/b true
Character40:  false s/b false
Character41:   true s/b true
Character42:   true s/b true
Character43:  false s/b false
Character44:  abcdefghijklmnopqrstuvwxyz s/b abcdefghijklmnopqrstuvwxyz
Character45:  zyxwvutsrqponmlkjihgfedcba s/b zyxwvutsrqponmlkjihgfedcba
Character46:  25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
Character46: s/b 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Character47: n s/b n
Character48: junky01234 s/b junky01234
Character49:  
crapola   
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork   
trash     
Character49: s/b
crapola
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
finnork
trash
Character50:  
zero one two three four five six seven eight nine 
 s/b zero one two three four five six seven eight nine
Character51:  a s/b a
Character52:  b s/b b
Character53:  y s/b y
Character54:  99 s/b 99
Character55:  g s/b g
Character56:   true s/b true
Character57:  false s/b false
Character58:   true s/b true
Character59:  false s/b false
Character50:   true s/b true
Character61:  false s/b false
Character62:   true s/b true
Character63:  false s/b false
Character64:   true s/b true
Character65:   true s/b true
Character66:  false s/b false
Character67:   true s/b true
Character68:   true s/b true
Character69:  false s/b false
Character70:   true s/b true
Character71:  false s/b false
Character72:   true s/b true
Character73:  false s/b false
Character74:   true s/b true
Character75:  false s/b false
Character76:   true s/b true
Character77:  false s/b false
Character78:   true s/b true
Character79:   true s/b true
Character80:  false s/b false
Character81:   true s/b true
Character82:   true s/b true
Character83:  false s/b false
Character84:  this is a string s/b this is a string
Character85:  v s/b v
Character86:  
   hello, world
  hello, world
 hello, world
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h
Character86:  s/b:
   hello, world
  hello, world
 hello, world 
hello, world
hello, worl
hello, wor
hello, wo
hello, w
hello, 
hello,
hello
hell
hel
he
h

******************* Booleans *******************

Boolean1:    true false s/b true false
Boolean2:    true s/b true
Boolean3:   false s/b false
Boolean4:   0 s/b 0
Boolean5:   1 s/b 1
Boolean6:    true s/b true
Boolean7:    true s/b true
Boolean8:   false s/b false
Boolean9:    true s/b true
Boolean10:  false s/b false
Boolean11:   true s/b true
Boolean12:  false s/b false
Boolean13:   true s/b true
Boolean14:  false s/b false
Boolean15:   true s/b true
Boolean16:   true s/b true
Boolean17:  false s/b false
Boolean18:   true s/b true
Boolean19:   true s/b true
Boolean20:  false s/b false
Boolean21:  false  true s/b false true
Boolean22:   true false s/b true false
Boolean23:   true s/b true
Boolean24:  false s/b false
Boolean25:   true false s/b true false
Boolean26:   true s/b true
Boolean27:  false s/b false
Boolean28:  0 s/b 0
Boolean29:  1 s/b 1
Boolean30:   true s/b true
Boolean31:   true s/b true
Boolean32:  false s/b false
Boolean33:   true s/b true
Boolean34:  false s/b false
Boolean35:   true s/b true
Boolean36:  false s/b false
Boolean37:   true s/b true
Boolean38:  false s/b false
Boolean39:   true s/b true
Boolean40:   true s/b true
Boolean41:  false s/b false
Boolean42:   true s/b true
Boolean43:   true s/b true
Boolean44:  false s/b false
Boolean45:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean45: s/b:
     false
    false
   false
  false
 false
false
fals
fal
fa
f
Boolean46:
      true
     true
    true
   true
  true
 true
true
tru
tr
t
Boolean46: s/b:
      true
     true
    true
   true
  true
 true
true
tru
tr
t

******************* Scalar *******************

Scalar1:    true s/b true
Scalar2:    true s/b true
Scalar3:   0 s/b 0
Scalar4:   2 s/b 2
Scalar5:    true s/b true
Scalar6:    true s/b true
Scalar7:   false s/b false
Scalar8:    true s/b true
Scalar9:   false s/b false
Scalar10:   true s/b true
Scalar11:  false s/b false
Scalar12:   true s/b true
Scalar13:  false s/b false
Scalar14:   true s/b true
Scalar15:   true s/b true
Scalar16:  false s/b false
Scalar17:   true s/b true
Scalar18:   true s/b true
Scalar19:  false s/b false
Scalar20:  0 1 2 3 4 5 6 s/b 0 1 2 3 4 5 6
Scalar21:  6 5 4 3 2 1 0 s/b 6 5 4 3 2 1 0
Scalar1:    true s/b true
Scalar2:    true s/b true
Scalar3:   2 s/b 2
Scalar4:   6 s/b 6
Scalar5:    true s/b true
Scalar6:    true s/b true
Scalar7:   false s/b false
Scalar8:    true s/b true
Scalar9:   false s/b false
Scalar10:   true s/b true
Scalar11:  false s/b false
Scalar12:   true s/b true
Scalar13:  false s/b false
Scalar14:   true s/b true
Scalar15:   true s/b true
Scalar16:  false s/b false
Scalar17:   true s/b true
Scalar18:   true s/b true
Scalar19:  false s/b false

******************* Reals ******************************

Real1:    1.5540000e+000 s/b  1.554000e+00
Real2:    3.3400000e-003 s/b  3.340000e-03
Real3:    3.3400000e-024 s/b  3.34000e-24
Real4:    4.0000000e-045 s/b  4.000000e-45
Real5:   -5.5650000e+000 s/b -5.565000e+03
Real6:   -9.4400000e-003 s/b -9.440000e-03
Real7:   -6.3640000e+029 s/b -6.364000e+29
Real8:   -2.0000000e-014 s/b -2.000000e-14
Real9:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678900e+000
 1.23456789000e+000
 1.234567890000e+000
s/b (note precision dropoff at right):
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.2e+000
 1.23e+000
 1.234e+000
 1.2345e+000
 1.23456e+000
 1.234567e+000
 1.2345678e+000
 1.23456789e+000
 1.234567890e+000
 1.2345678901e+000
 1.23456789012e+000
 1.234567890123e+000
Real10:
         11111111112222222222333333333344444444445
12345678901234567890123456789012345678901234567890
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678900
11.23456789000
12.234567890000
13.2345678900000
14.23456789000000
15.234567890000000
16.2345678900000000
17.23456789000000000
18.234567890000000000
19.2345678900000000000
20.23456789000000000000
s/b (note precision dropoff at right):
1.2
2.23
3.234
4.2345
5.23456
6.234567
7.2345678
8.23456789
9.234567890
10.2345678901
11.23456789012
12.234567890123
13.2345678901234
14.23456789012345
15.234567890123456
16.2345678901234567
17.23456789012345678
18.234567890123456789
19.2345678901234567890
20.23456789012345678901
Real11:   1.4189000e+003 s/b  1.418900e+03
Rea112:   5.4844000e+002 s/b  5.484399e+02
Real13:   4.2812269e+005 s/b  4.281227e+05
Real14:   2.2601153e+000 s/b  2.260115e+00
Real15:   true s/b true
Real16:  false s/b false
Real17:   true s/b true
Real18:  false s/b false
Real19:   true s/b true
Real20:  false s/b false
Real21:   true s/b true
Real22:  false s/b false
Real23:   true s/b true
Real24:   true s/b true
Real25:  false s/b false
Real26:   true s/b true
Real27:   true s/b true
Real28:  false s/b false
Real29:   4.3523000e+002 s/b  4.35230e+02
Real30:   1.8942515e+005 s/b  1.89425e+05
Real31:   3.1363513e+001 s/b  3.13635e+01
Real32:  -3.4430594e-001 s/b -3.44290e-01
Real33:   1.5684987e+000 s/b  1.56850e+00
Real34:   1.4110018e+000 s/b  1.41100e+00
Real35:   6.0758746e+000 s/b  6.07587e+00
Real36:  435 s/b 435
Real37:  984 s/b 984
Real38:  435 s/b 435
Real39:   1.2780520e+003 s/b  1.278052e+03
Real40:   2.3894600e+002 s/b  2.389460e+02
Real41:   1.0472017e+005 s/b  1.047202e+05
Real42:   7.2595975e-003 s/b  7.259598e-03
Real43:   true s/b true
Real44:  false s/b false
Real45:   true s/b true
Real46:  false s/b false
Real47:   true s/b true
Real48:  false s/b false
Real49:   true s/b true
Real50:  false s/b false
Real51:   true s/b true
Real52:   true s/b true
Real53:  false s/b false
Real54:   true s/b true
Real55:   true s/b true
Real56:  false s/b false
Real57:   3.4930000e+001 s/b  3.493000e+01
Real58:   5.4756000e+000 s/b  5.475600e+00
Real59:   9.7233327e+001 s/b  9.723333e+01
Real60:   3.3114727e-001 s/b  3.311461e-01
Real61:   1.5678825e+000 s/b  1.567883e+00
Real62:   1.3937528e+000 s/b  1.393753e+00
Real63:   4.4214877e+000 s/b  4.421488e+00
Real64:  24 s/b 24
Real65:  75 s/b 75
Real66:  83 s/b 83
Real67:   4.3330000e+001 s/b  4.333000e+01
Real68:   3.0034000e+002 s/b  3.003400e+02
Real69:   3.0034000e+002 s/b  3.003400e+02
Real70:  -6.5999800e+003 s/b -6.599980e+03
Real71:  -8.3687200e+003 s/b -8.368720e+03
Real72:   1.7687400e+003 s/b  1.768740e+03
Real73:  -8.6690600e+003 s/b -8.669061e+03
Real74:  -6.9003200e+003 s/b -6.900320e+03
Real75:  -7.5955926e+005 s/b -7.595593e+05
Real76:  -7.5955926e+005 s/b -7.595593e+05
Real77:   5.6052645e+006 s/b  5.605265e+06
Real78:  -1.4090711e+000 s/b -1.409071e+00
Real79:  -7.3796276e+000 s/b -7.379627e+00
Real80:   1.0398420e+001 s/b  1.039842e+01
Real81:   true s/b true
Real82:  false s/b false
Real83:   true s/b true
Real84:  false s/b false
Real85:   true s/b true
Real86:   true s/b true
Real87:  false s/b false
Real88:  false s/b false
Real89:   true s/b true
Real90:   true s/b true
Real91:  false s/b false
Real92:  false s/b false
Real93:   true s/b true
Real94:   true s/b true
Real95:   true s/b true
Real96:  false s/b false
Real97:  false s/b false
Real98:   true s/b true
Real99:   true s/b true
Real100:  true s/b true
Real101: false s/b false
Real102: false s/b false
Real103:  7.3420000e+002 s/b  7.34200e+02
Real104:  5.3904964e+005 s/b  5.39050e+05
Real105: -4.3483206e-001 s/b -4.34850e-01
Real106: -1.5694343e+000 s/b -1.56943e+00
Real107:  6.8056632e-001 s/b  6.80566e-01
Real108:            -734 s/b -734
Real109:           -7635 s/b -7635
Real110:            -734 s/b -734
Real111:  1.5100000e+001 s/b  1.510000e+01
Real112:  4.5133000e+001 s/b  4.513300e+01
Real113: -3.8640000e+001 s/b -3.864000e+01
Real114: -3.6581000e+001 s/b -3.658100e+01
Real115:  3.5548000e+001 s/b  3.554800e+01
Real116: -4.9398400e+001 s/b -4.939840e+01
Real117: -4.4001000e+001 s/b -4.400100e+01
Real118: -2.6412232e+001 s/b -2.641223e+01
Real119: -1.4890414e+002 s/b -1.489041e+02
Real120:  5.5856324e+002 s/b  5.585632e+02
Real121: -5.2201566e+000 s/b -5.220157e+00
Real122: -1.7721625e+001 s/b -1.772163e+01
Real123:  4.2745823e+000 s/b  4.274582e+00
Real124:  true s/b true
Real125: false s/b false
Real126:  true s/b true
Real127: false s/b false
Real128:  true s/b true
Real129:  true s/b true
Real130: false s/b false
Real131: false s/b false
Real132:  true s/b true
Real133:  true s/b true
Real134: false s/b false
Real135: false s/b false
Real136:  true s/b true
Real137:  true s/b true
Real138:  true s/b true
Real139: false s/b false
Real140: false s/b false
Real141:  true s/b true
Real142:  true s/b true
Real143:  true s/b true
Real144: false s/b false
Real145: false s/b false
Real146:  6.8230000e+000 s/b  6.823000e+00
Real147   1.2125716e+005 s/b  1.212572e+05
Real148:  9.4212449e-001 s/b  9.421146e-01
Real149: -1.5706771e+000 s/b -1.570677e+00
Real150:  4.1715392e-001 s/b  4.171539e-01
Real151: -33 s/b -33
Real152: -843 s/b -843
Real153: -6244 s/b -6244
Real154: -8.4220000e+001 s/b -8.422000e+01
Real155:  8.4220000e+001 s/b  8.422000e+01
Real156:  -4.3330000e+001 s/b -4.333000e+01
Real157:  8.4220000e+001 s/b  8.422000e+01

******************* sets ******************************

Set1:  10101010101010101010 s/b 10101010101010101010
Set2:  1101110001 s/b 1101110001
Set3:  0100010000 s/b 0100010000
Set4:  0100001000 s/b 0100001000
Set5:  false s/b false
Set6:   true s/b true
Set7:   true s/b true
Set8:  false s/b false
Set9:   true s/b true
Set10:  true s/b true
Set11: false s/b false
Set12:  true s/b true
Set13:  true s/b true
Set14: false s/b false
Set15: 0101010000 s/b 0101010000
Set16: a_c_e_g_i_k_m_o_q_s_ s/b a_c_e_g_i_k_m_o_q_s_
Set17: a_cd_fg___ s/b a_cd_fg___
Set18: a______h__ s/b a______h__
Set19: _b_______j s/b _b_______j
Set20: false s/b false
Set21:  true s/b true
Set22:  true s/b true
Set23: false s/b false
Set24:  true s/b true
Set25:  true s/b true
Set26: false s/b false
Set27:  true s/b true
Set28:  true s/b true
Set29: false s/b false
Set30: a___e_____ s/b a___e_____
Set31: 0101010101 s/b 0101010101
Set32: 1101110001 s/b 1101110001
Set33: 0100010000 s/b 0100010000
Set34: 0100001000 s/b 0100001000
Set35: false s/b false
Set36:  true s/b true
Set37:  true s/b true
Set38: false s/b false
Set39:  true s/b true
Set40:  true s/b true
Set41: false s/b false
Set42:  true s/b true
Set43:  true s/b true
Set44: false s/b false
Set45: 0110000000 s/b 0110000000
Set46: 01 s/b 01
Set47: 11 s/b 11
Set48: 10 s/b 10
Set49: 10 s/b 10
Set50: false s/b false
Set51:  true s/b true
Set52:  true s/b true
Set53: false s/b false
Set54:  true s/b true
Set55:  true s/b true
Set56: false s/b false
Set57:  true s/b true
Set58:  true s/b true
Set59: false s/b false
Set60: 11 s/b 11
set61:  true s/b true

******************* Pointers ******************************

Pointer1:   4594 s/b 4594
Pointer2:    true s/b  true
Pointer3:   false s/b false
Pointer4:   p s/b p
Pointer5:   5 s/b 5
Pointer6:   3 s/b 3
Pointer7:   17 s/b 17
Pointer8:   1234.5678 s/b 1234.5678
Pointer9:   my word is s/b my word is
Pointer10:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Pointer11:   7234 y s/b 7234 y
Pointer12:   _b_d____ij s/b _b_d____ij
Pointer13:  3732 s/b 3732
Pointer14:   true s/b  true
Pointer15:  false s/b false
Pointer16:   true s/b true
Pointer17:  false s/b false
Pointer18:  false s/b false
Pointer19:   true s/b  true
Pointer20:  done s/b done
Pointer21:  Pointer22:  done s/b done
Pointer23:  done s/b done
Pointer24:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100
Pointer25:  
  1   2   3   4   5   6   7   8   9  10 
 11  12  13  14  15  16  17  18  19  20 
 21  22  23  24  25  26  27  28  29  30 
 31  32  33  34  35  36  37  38  39  40 
 41  42  43  44  45  46  47  48  49  50 
 51  52  53  54  55  56  57  58  59  60 
 61  62  63  64  65  66  67  68  69  70 
 71  72  73  74  75  76  77  78  79  80 
 81  82  83  84  85  86  87  88  89  90 
 91  92  93  94  95  96  97  98  99 100 

s/b

  1   2   3   4   5   6   7   8   9  10
 11  12  13  14  15  16  17  18  19  20
 21  22  23  24  25  26  27  28  29  30
 31  32  33  34  35  36  37  38  39  40
 41  42  43  44  45  46  47  48  49  50
 51  52  53  54  55  56  57  58  59  60
 61  62  63  64  65  66  67  68  69  70
 71  72  73  74  75  76  77  78  79  80
 81  82  83  84  85  86  87  88  89  90
 91  92  93  94  95  96  97  98  99  100

******************* arrays ******************************

Array1:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array2:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array3:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array4:   20 19 18 17 16 15 14 13 12 11  s/b 20 19 18 17 16 15 14 13 12 11
Array5:   false  true false  true false  true false  true false  true 
    s/b:   false  true false  true false  true false  true false  true
Array6:   false  true false  true false  true false  true false  true 
    s/b:   false  true false  true false  true false  true false  true
Array7:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array8:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12 
    s/b:   20.12 19.12 18.12 17.12 16.12 15.12 14.12 13.12 12.12 11.12
Array9:   k j i h g f e d c b s/b k j i h g f e d c b
Array10:  k j i h g f e d c b s/b k j i h g f e d c b
Array11:  p o n m l k j i h g s/b p o n m l k j i h g
Array12:  p o n m l k j i h g s/b p o n m l k j i h g
Array13:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array14:  9 8 7 6 5 4 3 2 1 0 s/b 9 8 7 6 5 4 3 2 1 0
Array15:  5 4 3 2 s/b 5 4 3 2
Array16:  5 4 3 2 s/b 5 4 3 2
Array17:  k j i h g f e d c b s/b k j i h g f e d c b
Array18:  k j i h g f e d c b s/b k j i h g f e d c b
Array19:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array20:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b 
     s/b:  20 k 19 j 18 i 17 h 16 g 15 f 14 e 13 d 12 c 11 b
Array21:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array22:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array23:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array24:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array25:  11 10  s/b 11 10
Array26:  11 10  s/b 11 10
Array27:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array28:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array29:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array30:  j i h g f e d c b a  s/b  j i h g f e d c b a
Array31:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array32:  9 8 7 6 5 4 3 2 1 0  s/b  9 8 7 6 5 4 3 2 1 0
Array33:  5 4 3 2 1  s/b  5 4 3 2 1
Array34:  5 4 3 2 1  s/b  5 4 3 2 1
Array35:
 0 10 20 30 40 50 60 70 80 90 
 1 11 21 31 41 51 61 71 81 91 
 2 12 22 32 42 52 62 72 82 92 
 3 13 23 33 43 53 63 73 83 93 
 4 14 24 34 44 54 64 74 84 94 
 5 15 25 35 45 55 65 75 85 95 
 6 16 26 36 46 56 66 76 86 96 
 7 17 27 37 47 57 67 77 87 97 
 8 18 28 38 48 58 68 78 88 98 
 9 19 29 39 49 59 69 79 89 99 
s/b
0 10 20 30 40 50 60 70 80 90
1 11 21 31 41 51 61 71 81 91
2 12 22 32 42 52 62 72 82 92
3 13 23 33 43 53 63 73 83 93
4 14 24 34 44 54 64 74 84 94
5 15 25 35 45 55 65 75 85 95
6 16 26 36 46 56 66 76 86 96
7 17 27 37 47 57 67 77 87 97
8 18 28 38 48 58 68 78 88 98
9 19 29 39 49 59 69 79 89 99
Array36: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array37: 
hello, guy s/b hello, guy
Array38: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array39: 
63 62 61 60 59 58 57 56 
55 54 53 52 51 50 49 48 
47 46 45 44 43 42 41 40 
39 38 37 36 35 34 33 32 
31 30 29 28 27 26 25 24 
23 22 21 20 19 18 17 16 
15 14 13 12 11 10  9  8 
 7  6  5  4  3  2  1  0 
s/b:
63 62 61 60 59 58 57 56
55 54 53 52 51 50 49 48
47 46 45 44 43 42 41 40
39 38 37 36 35 34 33 32
31 30 29 28 27 26 25 24
23 22 21 20 19 18 17 16
15 14 13 12 11 10  9  8
 7  6  5  4  3  2  1  0
Array40: 
20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11
Array41: 
30 29 28 27 26 25 24 23 22 21 s/b 30 29 28 27 26 25 24 23 22 21
Array42: 
40 39 38 37 36 35 34 33 32 31 s/b 40 39 38 37 36 35 34 33 32 31
Array43: 
22 21 20 19 18 17 16 15 14 13 s/b 22 21 20 19 18 17 16 15 14 13

******************* records ******************************

Record1:   
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record2:   
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
s/b:
64 false j 1 3 12  4.54512000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
Record3:   873 0 235 427 s/b 873 0 235 427
Record4:   873 1  true 427 s/b 873 1  true 427
Record5:   873 2 f 427 s/b 873 2 f 427
Record6:   873 3 8 427 s/b 873 3 8 427
Record7:   873 4 3 427 s/b 873 4 3 427
Record8:   873 5 12 427 s/b 873 5 12 427
Record9:   873 6 8734.8389 427 s/b 873 6 8734.8389 427
Record10:  873 7 this one ? 427 s/b 873 7 this one ? 427
Record11:  873 8 20 19 18 17 16 15 14 13 12 11 427
      s/b:  873 8 20 19 18 17 16 15 14 13 12 11 427
Record12:  873 9 2387 t 427 s/b:  873 9 2387 t 427
Record13:  873 10 _i_gfedcb_ 427
      s/b:  873 10 _i_gfedcb_ 427
Record14:  873 11 2394 427 s/b 873 11 2394 427
Record15:  10 2343 s/b 10 2343
Record16:  19  true s/b 19  true
Record17:   true 2343 s/b  true 2343
Record18:  false  true s/b false  true
Record19:  2 2343 s/b 2 2343
Record20:  7  true s/b 7  true
Record21:  3 2343 s/b 3 2343
Record22:  4  true s/b 4  true
Record23:  1 2 3 4 5 6 7 8 9 10 s/b 1 2 3 4 5 6 7 8 9 10
Record24:  10 9 8 7 6 5 4 3 2 1 s/b 10 9 8 7 6 5 4 3 2 1
Record25:  10 9 8 7 6 5 4 3 2 76 s/b 10 9 8 7 6 5 4 3 2 76
Record26:  1 g s/b 1 g
Record27:  20 19 18 17 16 15 14 13 12 11 s/b 20 19 18 17 16 15 14 13 12 11

******************* files ******************************

File1:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File2:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File3:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File4:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File5:   a b c d e f g h i j s/b a b c d e f g h i j
File6:   a b c d e f g h i j s/b a b c d e f g h i j
File7:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File8:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File9:
7384
8342
 true
false
m
q
 1.2345678e+000
1.2345678
 5.6894321e+001
0.93837632
hi there !
hi th
     hi there !
s/b:
7384
8342
 true
false
m
q
 1.2345678000e+00
1.2345678
 5.6894321000e+01
0.93837632
hi there !
hi th
     hi there !
file10:
7384
8342
m
q
 1.2345678e+000
 1.2345678e+000
 5.6894321e+001
 9.3837632e-001
s/b:
7384
8342
m
q
 1.2345678000e+00
 1.2345678000e+00
 5.6894321000e+01
 9.3837632000e+01
file11:
'how now<eoln> brown cow<eoln> ' s/b 'how now<eoln> brown cow<eoln> '
file12:
'too much<eoln> too soon<eoln> ' s/b 'too much<eoln> too soon<eoln> '
File13:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File14:   11 12 13 14 15 16 17 18 19 20 s/b 11 12 13 14 15 16 17 18 19 20
File15:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File16:    true false  true false  true false  true false  true false 
   s/b:    true false  true false  true false  true false  true false
File17:   a b c d e f g h i j s/b a b c d e f g h i j
File18:   a b c d e f g h i j s/b a b c d e f g h i j
File19:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File20:   0 1 2 3 4 5 6 7 8 9 s/b 0 1 2 3 4 5 6 7 8 9
File21:    s/b 50
File22:    true s/b true

************ Procedures and functions ******************

ProcedureFunction1:   45 89 s/b 45 89
ProcedureFunction2:   46 s/b 46
ProcedureFunction3:   total junk s/b total junk
ProcedureFunction4:   tota? junk s/b tota? junk
total junk s/b total junk
ProcedureFunction5:   35 s/b 35
ProcedureFunction6:   10 9 8 6 5 4 3 2 1 78
s/b:   10 9 8 6 5 4 3 2 1 78
ProcedureFunction7:
93  true k 7 4 10  3.1414000e+000 hello, guy
11 12 13 14 15 16 17 18 19 20 
64 false j 1 3 12  4.5451200e-029 what ? who
21 22 23 24 25 26 27 28 29 30 
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
s/b:
93  true k 7 4 10  3.14140000e+00 hello, guy
11 12 13 14 15 16 17 18 19 20
64 false j 1 3 12  4.54500000e-29 what ? who
21 22 23 24 25 26 27 28 29 30
2324 y
_bcde___i_
8454
23487 n false
help me123
abcd___h__
734
ProcedureFunction8:   9834 8383 j 744 s/b 9834 8383 j 744
ProcedureFunction9:   942 s/b 942
ProcedureFunction10:   62 76 s/b 62 76
ProcedureFunction11:   52 s/b 52
ProcedureFunction12:   a s/b a
ProcedureFunction13:   37 s/b 37

program complete

program complete

Added ip_pascal/windows_X86/pcom.exe.

cannot compute difference between binary files

Added ip_pascal/windows_X86/pint.exe.

cannot compute difference between binary files

Added iso7185.html.

































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
   <meta name="Author" content="Scott A. Moore">
   <title>ANSI-ISO PASCAL</title>
</head>
<body text="#000000" bgcolor="#66FFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000" background="graphpaper.gif">

<center>
    <h1>ISO 7185 Standard</h1>
</center>

<hr>
<p align="left">This copy of the standard is unofficial, but believed to represent 
an accurate current copy of the ISO 7185 standard with a modified introduction. 
The introduction was changed, in a humorous manner, apparently to emphasise the 
point that this is not meant to be an official copy.</p>
<p align="left">As much as possible, the formatting of the original document 
has been kept in this HTML document. However, the page headers and footers have 
been removed, and in some cases changes were required because of differences 
between HTML formatting principles and the original formatting.</p>
<p align="left">The original copy of this document was received as a PDF (Portable 
Document Format) represented as direct bitmap scans of the original. This was 
run through an optical character recognition program which created the character 
codes for the text and created a &quot;coordinated&quot; PDF containing both 
the original image and the selectable text overlaid one atop the other. From 
this extracted text this HTML document was created. The optical character recognition 
is not perfect, and there may in fact be several recognition errors within this 
document.</p>
<p align="left">The table of contents that appears next was not part of the original standard, 
and I have added that. Note that the way the standard is structured, the points 
don't always have subjects, and may have no content. I have simply placed and 
referenced each of the points of the document as content indexes.</p>
<p align="left">The embedded indexes, where possible, have been linked to their 
bookmarks. Note that in one case, such a link leads nowhere in the original 
standard, see the reference to 6.6.4.1. This was left unlinked. It refers to 
a missing index in the standard:</p>
<p align="left">6.6.4.1 General. The required procedures shall be ...</p>
<p align="left">This existed in the ANSI/IEEE770X3.97-1983 standard, and was 
left out of the ISO 7185 standard. It wasn't important, but was  apparently 
deleted without also deleting references to it.</p>
<p align="left">One of the advantages of HTML formatting is color. The optional 
sections of the standard, dealing with conformant array parameters, was placed 
in <font color="red">red color text</font>. This is your indication that this 
may or may not exist in your implementation. Note that with the red sections 
removed, the ISO 7185 standard is almost identical to the original&nbsp;ANSI/IEEE770X3.97-1983 
standard, now discontinued. The color red has no particular import, it was choosen 
because it shows up well against the blue background.</p>
<hr>
<h2 align="center">Table of contents</h2>
<h3><a href="#Acknowledgements">Acknowledgements</a></h3><h3><a href="#Introduction">Introduction</a></h3><h3><a href="#Language history">Language history</a></h3><h3><a href="#Project history">Project history</a></h3>
<h3><a href="#1 Scope">1 Scope</a></h3>
<ul>
<h3><a href="#1.1">1.1</a></h3>
<h3><a href="#1.2">1.2</a></h3>
</ul>
<h3><a href="#2 Normative reference">2 Normative reference</a></h3>
<h3><a href="#3 Definitions">3 Definitions</a></h3>
<ul>
<h3><a href="#3.1 Error">3.1 Error</a></h3>
<h3><a href="#3.2 Extension">3.2 Extension</a></h3>
<h3><a href="#3.3 Implementation-defined">3.3 Implementation-defined</a></h3>
<h3><a href="#3.4 Implementation-dependent">3.4 Implementation-dependent</a></h3>
<h3><a href="#3.5 Processor">3.5 Processor</a></h3>
</ul>
<h3><a href="#4 Definitional conventions">4 Definitional conventions</a></h3>
<h3><a href="#5 Compliance">5 Compliance</a></h3>
<ul>
<h3><a href="#5.1 Processors">5.1 Processors</a></h3>
<h3><a href="#5.2 Programs">5.2 Programs</a></h3>
</ul>
<h3><a href="#6 Requirements">6 Requirements</a></h3>
<ul>
<h3><a href="#6.1 Lexical tokens">6.1 Lexical tokens</a></h3>
    <ul>
<h3><a href="#6.1.1 General">6.1.1 General</a></h3><h3><a href="#6.1.2 Special-symbols">6.1.2 Special-symbols</a></h3><h3><a href="#6.1.3 Identifiers">6.1.3 Identifiers</a></h3><h3><a href="#6.1.4 Directives">6.1.4 Directives</a></h3><h3><a href="#6.1.5 Numbers">6.1.5 Numbers</a></h3><h3><a href="#6.1.6 Labels">6.1.6 Labels</a></h3><h3><a href="#6.1.7 Character-strings">6.1.7 Character-strings</a></h3><h3><a href="#6.1.8 Token separators">6.1.8 Token separators</a></h3><h3><a href="#6.1.9 Lexical alternatives">6.1.9 Lexical alternatives</a></h3>
    </ul>
<h3><a href="#6.2 Blocks, scopes, and activations">6.2 Blocks, scopes, and activations</a></h3>
    <ul>
<h3><a href="#6.2.1 Blocks">6.2.1 Blocks</a></h3><h3><a href="#6.2.2 Scopes">6.2.2 Scopes</a></h3>
        <ul>
<h3><a href="#6.2.2.1">6.2.2.1</a></h3>
<h3><a href="#6.2.2.2">6.2.2.2</a></h3>
<h3><a href="#6.2.2.3">6.2.2.3</a></h3>
<h3><a href="#6.2.2.4">6.2.2.4</a></h3>
<h3><a href="#6.2.2.5">6.2.2.5</a></h3>
<h3><a href="#6.2.2.6">6.2.2.6</a></h3>
<h3><a href="#6.2.2.7">6.2.2.7</a></h3>
<h3><a href="#6.2.2.8">6.2.2.8</a></h3>
<h3><a href="#6.2.2.9">6.2.2.9</a></h3>
<h3><a href="#6.2.2.10">6.2.2.10</a></h3>
<h3><a href="#6.2.2.11">6.2.2.11</a></h3>
        </ul>
<h3><a href="#6.2.3 Activations">6.2.3 Activations</a></h3>
        <ul>
<h3><a href="#6.2.3.1">6.2.3.1</a></h3>
<h3><a href="#6.2.3.2">6.2.3.2</a></h3>
<h3><a href="#6.2.3.3">6.2.3.3</a></h3>
<h3><a href="#6.2.3.4">6.2.3.4</a></h3>
<h3><a href="#6.2.3.5">6.2.3.5</a></h3>
        </ul>
    </ul>
<h3><a href="#6.3 Constant-definitions">6.3 Constant-definitions</a></h3>
<h3><a href="#6.4 Type-definitions">6.4 Type-definitions</a></h3>
    <ul>
<h3><a href="#6.4.1 General">6.4.1 General</a></h3><h3><a href="#6.4.2 Simple-types">6.4.2 Simple-types</a></h3>
        <ul>
<h3><a href="#6.4.2.1 General">6.4.2.1 General</a></h3>
<h3><a href="#6.4.2.2 Required simple-types">6.4.2.2 Required simple-types</a></h3>
<h3><a href="#6.4.2.3 Enumerated-types">6.4.2.3 Enumerated-types</a></h3>
<h3><a href="#6.4.2.4 Subrange-types">6.4.2.4 Subrange-types</a></h3>
        </ul>
<h3><a href="#6.4.3 Structured-types">6.4.3 Structured-types</a></h3>
        <ul>
<h3><a href="#6.4.3.1 General">6.4.3.1 General</a></h3>
<h3><a href="#6.4.3.2 Array-types">6.4.3.2 Array-types</a></h3>
<h3><a href="#6.4.3.3 Record-types">6.4.3.3 Record-types</a></h3>
<h3><a href="#6.4.3.4 Set-types">6.4.3.4 Set-types</a></h3>
<h3><a href="#6.4.3.5 File-types">6.4.3.5 File-types</a></h3>
        </ul>
<h3><a href="#6.4.4 Pointer-types">6.4.4 Pointer-types</a></h3><h3><a href="#6.4.5 Compatible types">6.4.5 Compatible types</a></h3><h3><a href="#6.4.6 Assignment-compatibility">6.4.6 Assignment-compatibility</a></h3><h3><a href="#6.4.7 Example of a type-definition-part">6.4.7 Example of a type-definition-part</a></h3>
    </ul>
<h3><a href="#6.5 Declarations and denotations of variables">6.5 Declarations and denotations of variables</a></h3>
    <ul>
<h3><a href="#6.5.1 Variable-declarations">6.5.1 Variable-declarations</a></h3><h3><a href="#6.5.2 Entire-variables">6.5.2 Entire-variables</a></h3><h3><a href="#6.5.3 Component-variables">6.5.3 Component-variables</a></h3>
        <ul>
<h3><a href="#6.5.3.1 General">6.5.3.1 General</a></h3>
<h3><a href="#6.5.3.2 Indexed-variables">6.5.3.2 Indexed-variables</a></h3>
<h3><a href="#6.5.3.3 Field-designators">6.5.3.3 Field-designators</a></h3>
        </ul>
<h3><a href="#6.5.4 Identified-variables">6.5.4 Identified-variables</a></h3><h3><a href="#6.5.5 Buffer-variables">6.5.5 Buffer-variables</a></h3>
    </ul>
<h3><a href="#6.6 Procedure and function declarations">6.6 Procedure and function declarations</a></h3>
    <ul>
<h3><a href="#6.6.1 Procedure-declarations">6.6.1 Procedure-declarations</a></h3><h3><a href="#6.6.2 Function-declarations">6.6.2 Function-declarations</a></h3><h3><a href="#6.6.3 Parameters">6.6.3 Parameters</a></h3>
        <ul>
<h3><a href="#6.6.3.1 General">6.6.3.1 General</a></h3>
<h3><a href="#6.6.3.2 Value parameters">6.6.3.2 Value parameters</a></h3>
<h3><a href="#6.6.3.3 Variable parameters">6.6.3.3 Variable parameters</a></h3>
<h3><a href="#6.6.3.4 Procedural parameters">6.6.3.4 Procedural parameters</a></h3>
<h3><a href="#6.6.3.5 Functional parameters">6.6.3.5 Functional parameters</a></h3>
<h3><a href="#6.6.3.6 Parameter list congruity">6.6.3.6 Parameter list congruity</a></h3>
<h3><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7 Conformant array parameters</font></a></h3>
            <ul>
<h3><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1 General</font></a></h3>
<h3><a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2 Value conformant arrays</font></a></h3>
<h3><a href="#6.6.3.7.3 Variable conformant arrays"><font color="red">6.6.3.7.3 Variable conformant arrays</font></a></h3>
            </ul>
<h3><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8 Conformability</font></a></h3>
        </ul>
<h3><a href="#6.6.4 Required procedures and functions">6.6.4 Required procedures and functions</a></h3><h3><a href="#6.6.5 Required procedures">6.6.5 Required procedures</a></h3>
        <ul>
<h3><a href="#6.6.5.1 General">6.6.5.1 General</a></h3>
<h3><a href="#6.6.5.2 File handling procedures">6.6.5.2 File handling procedures</a></h3>
<h3><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3 Dynamic allocation procedures</a></h3>
<h3><a href="#6.6.5.4 Transfer procedures">6.6.5.4 Transfer procedures</a></h3>
        </ul>
<h3><a href="#6.6.6 Required functions">6.6.6 Required functions</a></h3>
        <ul>
<h3><a href="#6.6.6.1 General">6.6.6.1 General</a></h3>
<h3><a href="#6.6.6.2 Arithmetic functions">6.6.6.2 Arithmetic functions</a></h3>
<h3><a href="#6.6.6.3 Transfer functions">6.6.6.3 Transfer functions</a></h3>
<h3><a href="#6.6.6.4 Ordinal functions">6.6.6.4 Ordinal functions</a></h3>
<h3><a href="#6.6.6.5 Boolean functions">6.6.6.5 Boolean functions</a></h3>
        </ul>
    </ul>
<h3><a href="#6.7 Expressions">6.7 Expressions</a></h3>
    <ul>
<h3><a href="#6.7.1 General">6.7.1 General</a></h3><h3><a href="#6.7.2 Operators">6.7.2 Operators</a></h3>
        <ul>
<h3><a href="#6.7.2.1 General">6.7.2.1 General</a></h3>
<h3><a href="#6.7.2.2 Arithmetic operators">6.7.2.2 Arithmetic operators</a></h3>
<h3><a href="#6.7.2.3 Boolean operators">6.7.2.3 Boolean operators</a></h3>
<h3><a href="#6.7.2.4 Set operators">6.7.2.4 Set operators</a></h3>
<h3><a href="#6.7.2.5 Relational operators">6.7.2.5 Relational operators</a></h3>
        </ul>
<h3><a href="#6.7.3 Function-designators">6.7.3 Function-designators</a></h3>
    </ul>
<h3><a href="#6.8 Statements">6.8 Statements</a></h3>
    <ul>
<h3><a href="#6.8.1 General">6.8.1 General</a></h3><h3><a href="#6.8.2 Simple-statements">6.8.2 Simple-statements</a></h3>
        <ul>
<h3><a href="#6.8.2.1 General">6.8.2.1 General</a></h3>
<h3><a href="#6.8.2.2 Assignment-statements">6.8.2.2 Assignment-statements</a></h3>
<h3><a href="#6.8.2.3 Procedure-statements">6.8.2.3 Procedure-statements</a></h3>
<h3><a href="#6.8.2.4 Goto-statements">6.8.2.4 Goto-statements</a></h3>
        </ul>
<h3><a href="#6.8.3 Structured-statements">6.8.3 Structured-statements</a></h3>
        <ul>
<h3><a href="#6.8.3.1 General">6.8.3.1 General</a></h3>
<h3><a href="#6.8.3.2 Compound-statements">6.8.3.2 Compound-statements</a></h3>
<h3><a href="#6.8.3.3 Conditional-statements">6.8.3.3 Conditional-statements</a></h3>
<h3><a href="#6.8.3.4 If-statements">6.8.3.4 If-statements</a></h3>
<h3><a href="#6.8.3.5 Case-statements">6.8.3.5 Case-statements</a></h3>
<h3><a href="#6.8.3.6 Repetitive-statements">6.8.3.6 Repetitive-statements</a></h3>
<h3><a href="#6.8.3.7 Repeat-statements">6.8.3.7 Repeat-statements</a></h3>
<h3><a href="#6.8.3.8 While-statements">6.8.3.8 While-statements</a></h3>
<h3><a href="#6.8.3.9 For-statements">6.8.3.9 For-statements</a></h3>
<h3><a href="#6.8.3.10 With-statements">6.8.3.10 With-statements</a></h3>
        </ul>
    </ul>
<h3><a href="#6.9 Input and output">6.9 Input and output</a></h3>
    <ul>
<h3><a href="#6.9.1 The procedure read">6.9.1 The procedure read</a></h3><h3><a href="#6.9.2 The procedure readln">6.9.2 The procedure readln</a></h3><h3><a href="#6.9.3 The procedure write">6.9.3 The procedure write</a></h3>
        <ul>
<h3><a href="#6.9.3.1 Write-parameters">6.9.3.1 Write-parameters</a></h3>
<h3><a href="#6.9.3.2 Char-type">6.9.3.2 Char-type</a></h3>
<h3><a href="#6.9.3.3 Integer-type">6.9.3.3 Integer-type</a></h3>
<h3><a href="#6.9.3.4 Real-type">6.9.3.4 Real-type</a></h3>
            <ul>
<h3><a href="#6.9.3.4.1 The floating-point representation">6.9.3.4.1 The floating-point representation</a></h3>
<h3><a href="#6.9.3.4.2 The fixed-point representation">6.9.3.4.2 The fixed-point representation</a></h3>
            </ul>
<h3><a href="#6.9.3.5 Boolean-type">6.9.3.5 Boolean-type</a></h3>
<h3><a href="#6.9.3.6 String-types">6.9.3.6 String-types</a></h3>
        </ul>
<h3><a href="#6.9.4 The procedure writeln">6.9.4 The procedure writeln</a></h3><h3><a href="#6.9.5 The procedure page">6.9.5 The procedure page</a></h3>
    </ul>
<h3><a href="#6.10 Programs">6.10 Programs</a></h3>
</ul>
<h3 align="left"><a href="#Annex A">Annex A: Collected syntax</a></h3>
<h3 align="left"><a href="#Annex B">Annex B: Cross-references</a></h3>
<h3 align="left"><a href="#Annex C">Annex C: Required identifiers</a></h3>
<h3 align="left"><a href="#Annex D">Annex D: Errors</a></h3>
<h3 align="left"><a href="#Annex E">Annex E: Implementation-defined features</a></h3>
<h3 align="left"><a href="#Annex F">Annex F: Implementation-dependent features</a></h3>
<hr WIDTH="100%">
<h2 align="center">Pascal</h2>
<h2 align="center">ISO 7185:1990</h2>
<hr>
<p align="left">This online copy of the unextended Pascal standard is provided only as an 
aid to standardization. In the case of differences between this online version 
and the printed version, the printed version takes precedence.</p>
<p>Do not modify this document. Do not include this document in another software 
product. You may print this document for personal use only. Do not sell this 
document.</p>
<p>Use this information only for good ; never for evil. Do not expose to fire. Do not operate heavy equipment after reading, may cause drowsiness. Do not 
read under the inuence of alcohol (although there have been several unconfirmed 
reports that alcohol actually improves the readability). The standard is written 
in English. If you have trouble understanding a particular section, read it 
again and again and again... Sit up straight. Eat your vegatables. Do not 
mumble.</p>
<p>(C)ISO/IEC 1991</p>
<h3><a name="Acknowledgements">Acknowledgements</a></h3>
<p>The efforts are acknowledged of all those who contributed to the work of 
the BSI and ISO Pascal working groups, and in particular:</p>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Tony Addyman&nbsp;         Harris Hall             John Reagan</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Albrecht Biedl        Carsten Hammer          Mike Rees</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Bob Brewer            Atholl Hay              Arthur Sale</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Coen Bron             Tony Hetherington       Paula Schwartz</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">David Burnett-Hall    Steve Hobbs             Barry Smith</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">David Bustard         Mel Jackson             John Souter</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Barry Byrne           Scott Jameson           Manfred Stadel</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Klaus Daessler        David Jones             Bob Tennent</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Richard De Morgan     David Joslin            Tom Turba</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Norman Diamond        Katsuhiko Kakehi        Eiiti Wada</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Bob Dietrich          Olivier Lecarme         Willem Wakker</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Ken Edwards           Jim Miner               David Watt</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Jacques Farre         Wes Munsil              Jim Welsh</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Bill Findlay          Bill Price              Brian Wichmann</pre>
<p>The efforts are acknowledged of all those who contributed to the work of 
JPC, and in particular:</p>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Michael Alexander      Steven Hobbs           David L. Presberg</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Jeffrey Allen          Albert A. Hoffman      William C. Price</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Ed Barkmeyer           Robert Hutchins        Bruce Ravenal</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">W. Ashby Boaz          Rosa C. Hwang          David L. Reese</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Jack Boudreaux         Scott Jameson          David C. Robbins</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">A. Winsor Brown        David Jones            Lynne Rosenthal</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Jerry R. Brookshire    Steen Jurs             Tom Rudkin</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Tomas M. Burger        Mel Kanner             Stephen C. Schwarm</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">David S. Cargo         John Kaufmann          Rick Shaw</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Richard J. Cichelli    Leslie Klein           Carol Sledge</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Joe Cointment          Bruce Knobe            Barry Smith</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Roger Cox              Dennis Kodimer         Rudeen S. Smith</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Jean Danver            Ronald E. Kole         Bill Stackhouse</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Debra Deutsch          Alan A. Kortesoja      Marius Troost</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Bob Dietrich           Edward Krall           Thomas N. Turba</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Victor A. Folwarczny   Robert Lange Prescott  K. Turner</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">G. G. Gustafson        Rainer McCown          Howard Turtle</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Thomas Giventer        Jim Miner              Robert Tuttle</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Hellmut Golde          Eugene N. Miya         Richard C. Vile, Jr</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">David N. Gray          Mark Molloy            Larry B. Weber</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Paul Gregory           William Neuhauser      David Weil</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Michael Hagerty        Dennis Nicholson       Thomas R. Wilcox</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Charles E. Haynes      Mark Overgaard         Thomas Wolfe</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Christopher Henrich    Ted C. Park            Harvey Wohlwend</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Steven Hiebert         Donald D. Peckham      Kenneth M. Zemrowski</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Ruth Higgins           David Peercy</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Charles Hill           Robert C. B. Poon</pre>
<p>(The above list is of people acknowledged in ANSI/IEEE770X3.97-1983.)</p>
<h3><a name="Introduction">Introduction</a></h3>
<p>This International Standard provides an unambiguous and machine independent 
definition of the programming language Pascal. Its purpose is to facilitate 
portability of Pascal programs for use on a wide variety of data processing 
systems.</p>
<h3><a name="Language history">Language history</a></h3>
<p>The computer programming language Pascal was designed by Professor Niklaus 
Wirth to satisfy two principal aims</p>
<ul>
    <p>a) to make available a language suitable for teaching programming as 
    a systematic discipline based on certain fundamental concepts clearly and 
    naturally reected by the language;</p>
    <p>b) to define a language whose implementations could be both reliable 
    and efficient on then available computers.</p>
</ul>
<p>However, it has become apparent that Pascal has attributes that go far beyond 
these original goals. It is now being increasingly used commercially in the 
writing of both system and application software. This International Standard 
is primarily a consequence of the growing commercial interest in Pascal and 
the need to promote the portability of Pascal programs between data processing 
systems.</p>
<p>In drafting this International Standard the continued stability of Pascal 
has been a prime objective. However, apart from changes to clarify the specification, two major changes have been introduced.</p>
<ul>
    <p>a) The syntax used to specify procedural and functional parameters has 
    been changed to require the use of a procedure or function heading, as appropriate 
    (see <b><a href="#6.6.3.1 General">6.6.3.1</a></b>) ; this change was introduced to overcome a language insecurity.</p>
    <p><font color="red">b) A fifth kind of parameter, the conformant-array-parameter, has been 
    introduced (see </font><b><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a></b><font color="red">). With this kind of parameter, the required bounds 
    of the index-type of an actual-parameter are not fixed, but are restricted 
    to a specified range of values.</font></p>
</ul>
<h3><a name="Project history">Project history</a></h3>
<p>In 1977, a working group was formed within the British Standards Institution 
(BSI) to produce a standard for the programming language Pascal. This group 
produced several working drafts, the first draft for public comment being widely 
published early in 1979. In 1978, BSI's proposal that Pascal be added to ISO's 
program of work was accepted, and the ISO Pascal Working Group (then designated 
ISO/TC97/SC5/WG4) was formed in 1979. The Pascal standard was to be published 
by BSI on behalf of ISO, and this British Standard referenced by the International 
Standard.</p>
<p>In the USA, in the fall of 1978, application was made to the IEEE Standards 
Board by the IEEE Computer Society to authorize project 770 (Pascal). After 
approval, the first meeting was held in January 1979.</p>
<p>In December of 1978, X3J9 convened as a result of a SPARC (Standards Planning 
and Requirements Committee) resolution to form a US TAG (Technical Advisory 
Group) for the ISO Pascal standardization effort initiated by the UK. These 
efforts were performed under X3 project 317.</p>
<p>In agreement with IEEE representatives, in February of 1979, an X3 resolution 
combined the X3J9 and P770 committees into a single committee called the Joint 
X3J9/IEEE-P770 Pascal Standards Committee. (Throughout, the term JPC refers 
to this committee.) The first meeting as JPC was held in April 1979.</p>
<p>The resolution to form JPC clarified the dual function of the single joint 
committee to produce a dpANS and a proposed IEEE Pascal standard, identical 
in content.</p>
<p>ANSI/IEEE770X3.97-1983, American National Standard Pascal Computer Programming 
Language, was approved by the IEEE Standards Board on September 17, 1981, and 
by the American National Standards Institute on December 16, 1982. British Standard 
BS6192, Specification for Computer programming language Pascal, was published 
in 1982, and International Standard 7185 (incorporating BS6192 by reference) 
was approved by ISO on December 1, 1983. Differences between the ANSI and ISO 
standards are detailed in the Foreword of ANSI/IEEE770X3.97-1983.</p>
<p>In 1985, the ISO Pascal Working Group (then designated ISO/TC97/SC22/WG2, 
now ISO/IEC JTC1/SC22/WG2) was reconvened after a long break. An Interpretations 
Subgroup was formed, to interpret doubtful or ambiguous portions of the Pascal 
standards. As a result of the work of this subgroup, and also of the work on 
the Extended Pascal standard being produced by WG2 and JPC, BS6192/ISO7185 was 
revised and corrected during 1988/89 ; it is expected that ANSI/IEEE770X3.97-1983 
will be replaced by the revised ISO 7185.</p>
<p>The major revisions to BS6192 :1982 to produce the new ISO 7185 are:</p>
<ul>
    <p>a) resolution of the differences with ANSI/IEEE770X3.97-1983;</p>
    <p>b) relaxation of the syntax of real numbers, to allow &quot;digit sequences&quot; 
    rather than &quot;unsigned integers&quot; for the various components;</p>
    <p>c) in the handling of &quot;end-of-line characters&quot; in text files;</p>
    <p>d) in the handling of run-time errors.</p>
</ul>
<h3>INTERNATIONAL STANDARD ISO/IEC 7185:1990(E)</h3>
<h3>Information technology -- Programming</h3>
<h3>languages -- Pascal</h3>
<h1><a name="1 Scope">1 Scope</a></h1>
<h2><a name="1.1">1.1</a></h2>
<p>This International Standard specifi es the semantics and syntax of the computer 
programming language Pascal by specifying requirements for a processor and for 
a conforming program. Two levels of compliance are defined for both processors 
and programs.</p>
<h2><a name="1.2">1.2</a></h2>
<p>This International Standard does not specify</p>
<ul>
    <p>a) the size or complexity of a program and its data that will exceed 
    the capacity of any specific data processing system or the capacity of a particular processor, nor 
    the actions to be taken when the corresponding limits are exceeded;</p>
    <p>b) the minimal requirements of a data processing system that is capable 
    of supporting an implementation of a processor for Pascal;</p>
    <p>c) the method of activating the program-block or the set of commands 
    used to control the environment in which a Pascal program is transformed 
    and executed;</p>
    <p>d) the mechanism by which programs written in Pascal are transformed 
    for use by a data processing system;</p>
    <p>e) the method for reporting errors or warnings;</p>
    <p>f) the typographical representation of a program published for human 
    reading.</p>
</ul>
<h1><a name="2 Normative reference">2 Normative reference</a></h1>
<p>The following standard contains provisions which, through reference in this 
text, constitute provisions of this International Standard. At the time of publication, 
the edition indicated was valid. All standards are subject to revision, and 
parties to agreements based on this International Standard are encouraged to investigate the possibility of applying the most recent 
edition of the standard listed below. Members of IEC and ISO maintain registers 
of currently valid International Standards.</p>
<p>ISO 646 :1983, Information processing|ISO 7-bit coded character set for information 
interchange.</p>
<h1><a name="3 Definitions">3 Definitions</a></h1>
<p>For the purposes of this International Standard, the following definitions 
apply.</p>
<p>NOTE -- To draw attention to language concepts, some terms are printed in italics 
on their first mention or at their defining occurrence(s) in this International 
Standard.</p>
<h2><a name="3.1 Error">3.1 Error</a></h2>
<p>A violation by a program of the requirements of this International Standard 
that a processor is permitted to leave undetected.</p>
<p>NOTES</p>
<p>1 If it is possible to construct a program in which the violation or non-violation 
of this International Standard requires knowledge of the data read by the program 
or the implementation defi nition of implementationde fined features, then violation 
of that requirement is classified as an error. Processors may report on such 
violations of the requirement without such knowledge, but there always remain 
some cases that require execution, simulated execution, or proof procedures 
with the required knowledge. Requirements that can be verified without such 
knowledge are not classified as errors.</p>
<p>2 Processors should attempt the detection of as many errors as possible, 
and to as complete a degree as possible. Permission to omit detection is provided 
for implementations in which the detection would be an excessive burden.</p>
<h2><a name="3.2 Extension">3.2 Extension</a></h2>
<p>A modification to clause <b><a href="#6 Requirements">6</a></b> of the requirements of this International Standard 
that does not invalidate any program complying with this International Standard, as defined by <b><a href="#5.2 Programs">5.2</a></b>, 
except by prohibiting the use of one or more particular spellings of identifiers (see <b><a href="#6.1.2 Special-symbols">6.1.2</a></b> and 
<b><a href="#6.1.3 Identifiers">6.1.3</a></b>).</p>
<h2><a name="3.3 Implementation-defined">3.3 Implementation-defined</a></h2>
<p>Possibly differing between processors, but defined for any particular processor.</p>
<h2><a name="3.4 Implementation-dependent">3.4 Implementation-dependent</a></h2>
<p>Possibly differing between processors and not necessarily defined for any 
particular processor.</p>
<h2><a name="3.5 Processor">3.5 Processor</a></h2>
<p>A system or mechanism that accepts a program as input, prepares it for execution, 
and executes the process so defined with data to produce results.</p>
<p>NOTE -- A processor may consist of an interpreter, a compiler and run-time 
system, or another mechanism, together with an associated host computing machine and operating system, 
or another mechanism for achieving the same effect. A compiler in itself, for example, does not constitute 
a processor.</p>
<h3 align="center" style="line-height:100%; margin-top:0; margin-bottom:0;">Table 1 -- Metalanguage symbols</h3>
<table border="1" style="line-height:100%; margin-top:0; margin-bottom:0;">
    <tr>
        <td width="416">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Metasymbol</h3>
        </td>
        <td width="416">            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;"> Meaning</h3>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">=</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">Shall be defined to be</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&gt;</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">Shall have as an alternative definition</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">|</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">Alternatively</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">.</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">End of definition</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">[ x ]</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">0 or 1 instance of x</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">{ x }</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">0 or more instances of x</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">( x | y )</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">Grouping : either of x or y</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">'xyz'</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">The terminal symbol xyz</p>
        </td>
    </tr>
    <tr>
        <td width="416">            <p style="line-height:100%; margin-top:0; margin-bottom:0;">meta-identifier</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">A nonterminal symbol</p>
        </td>
    </tr>
</table>
<h1><a name="4 Definitional conventions">4 Definitional conventions</a></h1>
<p>The metalanguage used in this International Standard to specify the syntax 
of the constructs is based on Backus-Naur Form. The notation has been modified from the original 
to permit greater convenience of description and to allow for iterative productions to replace 
recursive ones. Table 1 lists the meanings of the various metasymbols. Further specification of 
the constructs is given by prose and, in some cases, by equivalent program fragments. Any identifier 
that is defined in clause <b><a href="#6 Requirements">6</a></b> as a required identifier shall denote the corresponding required entity 
by its occurrence in such a program fragment. In all other respects, any such program fragment is 
bound by any pertinent requirement of this International Standard.</p>
<p>A meta-identifier shall be a sequence of letters and hyphens beginning with 
a letter.</p>
<p>A sequence of terminal and nonterminal symbols in a production implies the 
concatenation of the text that they ultimately represent. Within <b><a href="#6.1 Lexical tokens">6.1</a></b> this concatenation is direct 
; no characters shall intervene. In all other parts of this International Standard the concatenation 
is in accordance with the rules set out in <b><a href="#6.1 Lexical tokens">6.1</a></b>.</p>
<p>The characters required to form Pascal programs shall be those implicitly 
required to form the tokens and separators defined in <b><a href="#6.1 Lexical tokens">6.1</a></b>.</p>
<p>Use of the words of, in, containing, and closest-containing, when expressing 
a relationship between terminal or nonterminal symbols, shall have the following meanings</p>
<ul>
<p>-- the x of a y: refers to the x occurring directly in a production defining 
y;</p>
<p>-- the x in a y : is synonymous with 'the x of a y';</p>
<p>-- a y containing an x : refers to any y from which an x is directly or indirectly 
derived;</p>
<p>-- the y closest-containing an x : that y containing an x and not containing 
another y containing that x.</p>
</ul>
<p>These syntactic conventions are used in clause <b><a href="#6 Requirements">6</a></b> to specify certain syntactic 
requirements and also the contexts within which certain semantic specifications apply.</p>
<p>In addition to the normal English rules for hyphenation, hyphenation is used 
in this International Standard to form compound words that represent meta-identifiers, semantic 
terms, or both. All meta-identifiers that contain more than one word are written as a unit with 
hyphens joining the parts. Semantic terms ending in \type&quot; and \variable&quot; are also 
written as one hyphenated unit. Semantic terms representing compound ideas are likewise written as hyphenated 
units, e.g., digitvalue, activation-point, assignment-compatible, and identifying-value.</p>
<p>NOTES are included in this International Standard only for purposes of clarification, 
and aid in the use of the standard. NOTES are informative only and are not a part of the 
International Standard.</p>
<p>Examples in this International Standard are equivalent to NOTES.</p>
<h1><a name="5 Compliance"><font color="black">5 Compliance</font></a></h1>
<p><font color="red">There are two levels of compliance, level 0 and level 1. Level 0 does not 
include conformant-arrayparameters. Level 1 does include conformant-array-parameters.</font></p>
<h2><a name="5.1 Processors">5.1 Processors</a></h2>
<p>A processor complying with the requirements of this International Standard 
shall</p>
<ul>
<p><font color="black">a) if it complies at level 0, accept all the features of the language specified 
in clause </font><b><a href="#6 Requirements"><font color="black">6</font></a></b><font color="black">, except for </font><b><a href="#6.6.3.6 Parameter list congruity"><font color="black">6.6.3.6</font></a><font color="black"> e</font></b><font color="black">), </font><b><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a></b><font color="black">, and </font><b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b><font color="black">, with the meanings defined in clause 
</font><b><a href="#6 Requirements"><font color="black">6</font></a></b><font color="black">;</font></p>
<p>b) if it complies at level 1, accept all the features of the language specified 
in clause 6 with the meanings defined in clause <b><a href="#6 Requirements">6</a></b>;</p>
<p>c) not require the inclusion of substitute or additional language elements 
in a program in order to accomplish a feature of the language that is specified in clause <b><a href="#6 Requirements">6</a></b>;</p>
<p>d) be accompanied by a document that provides a definition of all implementation-defined 
features;</p>
<p>e) be able to determine whether or not the program violates any requirements 
of this International Standard, where such a violation is not designated an error, report the result 
of this determination to the user of the processor before the execution of the program-block, if 
any, and shall prevent execution of the program-block, if any;</p>
<p>f) treat each violation that is designated an error in at least one of the 
following ways</p>
    <ul>
<p>1) there shall be a statement in an accompanying document that the error 
is not reported, and a note referencing each such statement shall appear in a separate section 
of the accompanying document;</p>
<p>2) the processor shall report the error or the possibility of the error during 
preparation of the program for execution and in the event of such a report shall be able 
to continue further processing and shall be able to refuse execution of the program-block;</p>
<p>3) the processor shall report the error during execution of the program;</p>
    </ul>
<p>and if an error is reported during execution of the program, the processor 
shall terminate execution ; if an error occurs within a statement, the execution of that 
statement shall not be completed;</p>
</ul>
<ul>
<p>NOTE -- 1 This means that processing will continue up to or beyond execution 
of the program at the option of the user.</p>
<p>g) be accompanied by a document that separately describes any features accepted 
by the processor that are prohibited or not specified in clause 6: such extensions shall 
be described as being 'extensions to Pascal as specified by ISO/IEC 7185';</p>
<p>h) be able to process, in a manner similar to that specified for errors, 
any use of any such extension;</p>
<p>i) be able to process, in a manner similar to that specified for errors, 
any use of an implementation-dependent feature.</p>
</ul>
<p>NOTE -- 2 The phrase 'be able to' is used in <b><a href="#5.1 Processors">5.1</a></b> to permit the implementation 
of a switch with which the user may control the reporting.</p>
<p>A processor that purports to comply, wholly or partially, with the requirements 
of this International Standard shall do so only in the following terms. A compliance statement 
shall be produced by the processor as a consequence of using the processor or shall be included 
in accompanying documentation. If the processor complies in all respects with the requirements 
of this International Standard, the compliance statement shall be</p>
<p>(This processor) complies with the requirements of level (number) of ISO/IEC 
7185.</p>
<p>If the processor complies with some but not all of the requirements of this 
International Standard then it shall not use the above statement, but shall instead use the following 
compliance statement</p>
<p>(This processor) complies with the requirements of level (number) of ISO/IEC 
7185, with the following exceptions : (followed by a reference to, or a complete list of, 
the requirements of the International Standard with which the processor does not comply).</p>
<p>In both cases the text (This processor) shall be replaced by an unambiguous 
name identifying the processor, and the text (number) shall be replaced by the appropriate level 
number.</p>
<p>NOTE -- 3 Processors that do not comply fully with the requirements of the 
International Standard are not required to give full details of their failures to comply in the compliance 
statement ; a brief reference to accompanying documentation that contains a complete list in sufficient 
detail to identify the defects is sufficient.</p>
<h2><a name="5.2 Programs">5.2 Programs</a></h2>
<p>A program conforming with the requirements of this International Standard 
shall</p>
<ul>
<p>a) if it conforms at level 0, use only those features of the language specified 
in clause <b><a href="#6 Requirements">6</a></b>, except for <b><a href="#6.6.3.6 Parameter list congruity">6.6.3.6</a> e</b>), <b><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a></b>, and <b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b>;</p>
<p>b) if it conforms at level 1, use only those features of the language specified 
in clause <b><a href="#6 Requirements">6</a></b>; and</p>
    <p>c) not rely on any particular interpretation of implementation-dependent 
features.</p>
</ul>
<p>NOTES</p>
<p>1 A program that complies with the requirements of this International Standard 
may rely on particular implementation-de fined values or features.</p>
<p>2 The requirements for conforming programs and compliant processors do not 
require that the results produced by a conforming program are always the same when processed by a 
compliant processor. They may be the same, or they may differ, depending on the program. A simple 
program to illustrate this is</p>
<ul>
<pre>program x(output); begin writeln(maxint) end.</pre>
</ul>
<h1><a name="6 Requirements">6 Requirements</a></h1>
<h2><a name="6.1 Lexical tokens">6.1 Lexical tokens</a></h2>
<p>NOTE -- The syntax given in this subclause describes the formation of lexical 
tokens from characters and the separation of these tokens and therefore does not adhere to the same 
rules as the syntax in the rest of this International Standard.</p>
<h3><a name="6.1.1 General">6.1.1 General</a></h3>
<p>The lexical tokens used to construct Pascal programs are classified into 
special-symbols, identifiers, directives, unsigned-numbers, labels, and character-strings. The representation 
of any letter (upper case or lower case, differences of font, etc.) occurring anywhere outside 
of a character-string (see <b><a href="#6.1.7 Character-strings">6.1.7</a></b>) shall be insignificant in that occurrence to the meaning of the program.</p>
<ul>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">letter = 'a' | 'b' | 'c' | 'd' | 'e' |&nbsp;'f' |&nbsp;'g' | 'h' | 'i' | 'j'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">       | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">       | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' .</pre>
</ul>
<h3><a name="6.1.2 Special-symbols">6.1.2 Special-symbols</a></h3>
<p>The special-symbols are tokens having special meanings and are used to delimit 
the syntactic units of the language.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">special-symbol = '+' | '-' | '*' | '/' | '=' | '&lt;' | '&gt;' | '[' | ']'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">               | '.' | ',' | ':' | ';' | '^' | '(' | ')'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">               | '&lt;&gt;' | '&lt;=' | '&gt;=' | ':=' | '..' | word-symbol .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">word-symbol = 'and' | 'array' | 'begin' | 'case' | 'const' | 'div'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">            |'do' | 'downto' | 'else' | 'end' | 'file' | 'for'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">            |'function' | 'goto' | 'if' | 'in' | 'label' | 'mod'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">            |'nil' | 'not' | 'of' | 'or' | 'packed' | 'procedure'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">            |'program' | 'record' | 'repeat' | 'set' | 'then'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">            |'to' | 'type' | 'until' | 'var' | 'while' | 'with' .</pre>
</ul>
<h3><a name="6.1.3 Identifiers">6.1.3 Identifiers</a></h3>
<p>Identifiers can be of any length. The spelling of an identifier shall be 
composed from all its constituent characters taken in textual order, without regard for the case of letters. No identifier shall have the same spelling as any word-symbol. Identifiers that are specified to be required 
shall have special significance (see <b><a href="#6.2.2.10">6.2.2.10</a></b> and <b><a href="#6.10 Programs">6.10</a></b>).</p>
<ul>
    <p>identifier = letter { letter | digit }.</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">X</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">time</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">readinteger</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">WG4</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">AlterHeatSetting</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">InquireWorkstationTransformation</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">InquireWorkstationIdentification</pre>
</ul>
<h3><a name="6.1.4 Directives">6.1.4 Directives</a></h3>
<p>A directive shall only occur in a procedure-declaration or a function-declaration. The only directive shall be the required directive <b>forward</b> (see <b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b> and <b><a href="#6.6.2 Function-declarations">6.6.2</a></b>). No directive 
shall have the same spelling as any word-symbol.</p>
<ul>
    <p>directive = letter { letter | digit }.</p>
</ul>
<p>NOTE -- Many processors provide, as an extension, the directive external, 
which is used to specify that the procedure-block or function-block corresponding to that procedure-heading 
or function-heading is external to the program-block. Usually it is in a library in a form to be input to, 
or that has been produced by, the processor.</p>
<h3><a name="6.1.5 Numbers">6.1.5 Numbers</a></h3>
<p>An unsigned-integer shall denote in decimal notation a value of integer-type 
(see <b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b>). An unsigned-real shall denote in decimal notation a value of real-type (see 
<b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b>). The letter 'e' preceding a scale-factor shall mean times ten to the power of. The value 
denoted by an unsignedinteger shall be in the closed interval 0 to <b>maxint</b> (see <b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b> and <b><a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a></b>).</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">signed-number = signed-integer | signed-real .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">signed-real = [ sign ] unsigned-real .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">signed-integer = [ sign ] unsigned-integer .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">unsigned-number = unsigned-integer | unsigned-real .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">sign = '+' | '-' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">unsigned-real = digit-sequence '.' fractional-part [ 'e' scale-factor</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">              |digit-sequence 'e' scale-factor .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">unsigned-integer = digit-sequence .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">fractional-part = digit-sequence .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">scale-factor = [ sign ] digit-sequence .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">digit-sequence = digit { digit } .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">1e10</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">+100</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">-0.1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">5e-3</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">87.35E+8</pre>
</ul>
<h3><a name="6.1.6 Labels">6.1.6 Labels</a></h3>
<p>Labels shall be digit-sequences and shall be distinguished by their apparent 
integral values and shall be in the closed interval 0 to 9999. The spelling of a label shall be its 
apparent integral value.</p>
<ul>
<p>label = digit-sequence .</p>
</ul>
<h3><a name="6.1.7 Character-strings">6.1.7 Character-strings</a></h3>
<p>A character-string containing a single string-element shall denote a value 
of the required char-type (see <b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b>). A character-string containing more than one string-element 
shall denote a value of a string-type (see <b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>) with the same number of components as the 
character-string contains string-elements. All character-strings with a given number of components 
shall possess the same string-type.</p>
<p>There shall be an implementation-defined one-to-one correspondence between 
the set of alternatives from which string-elements are drawn and a subset of the values of the required 
char-type. The occurrence of a string-element in a character-string shall denote the occurrence 
of the corresponding value of char-type.</p>
<ul>
<p>character-string = ''' string-element { string-element } '''&nbsp;.</p>
<p>string-element = apostrophe-image | string-character .</p>
<p>apostrophe-image = ''' .</p>
<p>string-character = one-of-a-set-of-implementation-defined-characters .</p>
</ul>
<p>NOTE -- Conventionally, the apostrophe-image is regarded as a substitute for 
the apostrophe character, which cannot be a string-character.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">'A'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">';'</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">''''</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">'Pascal '</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">'THIS IS A STRING'</pre>
</ul>
<h3><a name="6.1.8 Token separators">6.1.8 Token separators</a></h3>
<p>Where a commentary shall be any sequence of characters and separations of 
lines, containing neither } nor *), the construct</p>
<p>( '{' | '(*' ) commentary ( '*)' | '}' )</p>
<p>shall be a comment if neither the { nor the (* occurs within a character-string 
or within a commentary.</p>
<p>NOTES</p>
<p>1 A comment may thus commence with { and end with *), or commence with (* 
and end with }.</p>
<p>2 The sequence (*) cannot occur in a commentary even though the sequence 
{) can.</p>
<p>Comments, spaces (except in character-strings), and the separations of consecutive 
lines shall be considered to be token separators. Zero or more token separators can occur 
between any two consecutive tokens, before the first token of a program text, or after the 
last token of the program text. There shall be at least one separator between any pair of consecutive 
tokens made up of identifiers, word-symbols, labels or unsigned-numbers. No separators shall 
occur within tokens.</p>
<h3><a name="6.1.9 Lexical alternatives">6.1.9 Lexical alternatives</a></h3>
<p>The representation for lexical tokens and separators given in <b><a href="#6.1.1 General">6.1.1</a></b> to 
<b><a href="#6.1.8 Token separators">6.1.8</a></b>, except for the character sequences (* and *), shall constitute a reference representation for these 
tokens and separators.</p>
<p>To facilitate the use of Pascal on processors that do not support the reference 
representation, the following alternatives have been defined. All processors that have the required 
characters in their character set shall provide both the reference representations and the alternative 
representations, and the corresponding tokens or separators shall not be distinguished. Provision 
of the reference representations, and of the alterative token @, shall be implementation-defined.</p>
<p>The alternative representations for the tokens shall be</p>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">Reference token Alternative token</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        ^               @</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        [               (.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        ]               .)</pre>
<p>NOTE -- 1 The character ^(up arrow) that appears in some national variants of ISO 
646 is regarded as identical to the character ^. In this International Standard, the character ^ has been 
used because of its greater visibility.</p>
<p>The comment-delimiting characters { and } shall be the reference representations, 
and (* and *) respectively shall be alternative representations (see <b><a href="#6.1.8 Token separators">6.1.8</a></b>).</p>
<p>NOTE -- 2 See also <a href="#1.2"><b>1.2</b></a> f).</p>
<h2><a name="6.2 Blocks, scopes, and activations">6.2 Blocks, scopes, and activations</a></h2>
<h3><a name="6.2.1 Blocks">6.2.1 Blocks</a></h3>
<p>A block closest-containing a label-declaration-part in which a label occurs 
shall closest-contain exactly one statement in which that label occurs. The occurrence of a label in the 
label-declaration-part of a block shall be its defining-point for the region that is the block. Each 
applied occurrence of that label (see <b><a href="#6.2.2.8">6.2.2.8</a></b>) shall be a label. Within an activation of the block, 
all applied occurrences of that label shall denote the corresponding program-point in the algorithm 
of the activation at that statement (see <b><a href="#6.2.3.2">6.2.3.2</a> b</b>)).</p>
<ul>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">block = label-declaration-part constant-definition-part type-definition-part</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        variable-declaration-part procedure-and-function-declaration-part</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        statement-part.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        label-declaration-part = [ 'label' label { ',' label } ';' ].</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        constant-definition-part = [ 'const' constant-definition ';' { constant-definition ';' } ].</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        type-definition-part = [ 'type' type-definition ';' { type-definition ';' } ].</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        variable-declaration-part = [ 'var' variable-declaration ';' { variable-declaration ';' } ].</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        procedure-and-function-declaration-part = { ( procedure-declaration</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                                    | function-declaration ) ';' }.</pre>
</ul>
<p>The statement-part shall specify the algorithmic actions to be executed upon 
an activation of the block.</p>
<ul>
<p>statement-part = compound-statement .</p>
</ul>
<h3><a name="6.2.2 Scopes">6.2.2 Scopes</a></h3>
<h4><a name="6.2.2.1">6.2.2.1</a></h4>
<p>Each identifier or label contained by the program-block shall have a defining-point.</p>
<h4><a name="6.2.2.2">6.2.2.2</a></h4>
<p>Each defining-point shall have a region that is a part of the program text, 
and a scope that is a part or all of that region.</p>
<h4><a name="6.2.2.3">6.2.2.3</a></h4>
<p>The region of each defining-point is defined elsewhere (see <b><a href="#6.2.1 Blocks">6.2.1</a></b>, <b><a href="#6.2.2.10">6.2.2.10</a></b>, <b><a href="#6.3 Constant-definitions">6.3</a></b>, <b><a href="#6.4.1 General">6.4.1</a></b>, <b><a href="#6.4.2.3 Enumerated-types">6.4.2.3</a></b>, 
<b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>, <b><a href="#6.5.1 Variable-declarations">6.5.1</a></b>, <b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>, <b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b>, <b><a href="#6.6.2 Function-declarations">6.6.2</a></b>, <b><a href="#6.6.3.1 General">6.6.3.1</a></b>, <b><a href="#6.8.3.10 With-statements">6.8.3.10</a></b>, 
<b><a href="#6.10 Programs">6.10</a></b>).</p>
<h4><a name="6.2.2.4">6.2.2.4</a></h4>
<p>The scope of each defining-point shall be its region (including all regions 
enclosed by that region) subject to <b><a href="#6.2.2.5">6.2.2.5</a></b> and <b><a href="#6.2.2.6">6.2.2.6</a></b>.</p>
<h4><a name="6.2.2.5">6.2.2.5</a></h4>
<p>When an identifier or label has a defining-point for region A and another 
identifier or label having the same spelling has a defining-point for some region B enclosed by A, then 
region B and all regions enclosed by B shall be excluded from the scope of the defining-point for 
region A.</p>
<h4><a name="6.2.2.6">6.2.2.6</a></h4>
<p>The region that is the field-specifier of a field-designator shall be excluded 
from the enclosing scopes.</p>
<h4><a name="6.2.2.7">6.2.2.7</a></h4>
<p>When an identifier or label has a defining-point for a region, another identifier 
or label with the same spelling shall not have a defining-point for that region.</p>
<h4><a name="6.2.2.8">6.2.2.8</a></h4>
<p>Within the scope of a defining-point of an identifier or label, each occurrence 
of an identifier or label having the same spelling as the identifier or label of the defining-point 
shall be designated an applied occurrence of the identifier or label of the defining-point, except for an 
occurrence that constituted the defining-point ; such an occurrence shall be designated a defining occurrence. 
No occurrence outside that scope shall be an applied occurrence.</p>
<p>NOTE -- Within the scope of a defining-point of an identifier or label, there 
are no applied occurrences of an identifier or label that cannot be distinguished from it and have a defining-point 
for a region enclosing that scope.</p>
<h4><a name="6.2.2.9">6.2.2.9</a></h4>
<p>The defining-point of an identifier or label shall precede all applied occurrences 
of that identifier or label contained by the program-block with one exception, namely that an 
identifier can have an applied occurrence in the type-identifier of the domain-type of any new-pointer-types 
contained by the type-definition-part containing the defining-point of the type-identifier.</p>
<h4><a name="6.2.2.10">6.2.2.10</a></h4>
<p>Required identifiers that denote required values, types, procedures, and 
functions shall be used as if their defining-points have a region enclosing the program (see <b><a href="#6.1.3 Identifiers">6.1.3</a></b>, <b><a href="#6.3 Constant-definitions">6.3</a></b>, <b><a href="#6.4.1 General">6.4.1</a></b>, and <b>6.6.4.1</b>). 
</p>
<p>NOTE -- The required identifiers input and output are not included, since 
these denote variables.</p>
<h4><a name="6.2.2.11">6.2.2.11</a></h4>
<p>Whatever an identifier or label denotes at its defining-point shall be denoted 
at all applied occurrences of that identifier or label.</p>
<p>NOTES</p>
<p>1 Within syntax definitions, an applied occurrence of an identifier is qualified 
(e.g., type-identifier), whereas a use that constitutes a defining-point is not qualified.</p>
<p>2 It is intended that such qualification indicates the nature of the entity 
denoted by the applied occurrence: e.g., a constant-identifier denotes a constant.</p>
<h3><a name="6.2.3 Activations">6.2.3 Activations</a></h3>
<h4><a name="6.2.3.1">6.2.3.1</a></h4>
<p>A procedure-identifier or function-identifier having a defining-point for 
a region that is a block within the procedure-and-function-declaration-part of that block shall be designated 
local to that block.</p>
<h4><a name="6.2.3.2">6.2.3.2</a></h4>
<p>The activation of a block shall contain</p>
<ul>
<p>a) for the statement-part of the block, an algorithm, the completion of which 
shall terminate the activation (see also <b><a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b>);</p>
<p>b) for each defining-point of a label in the label-declaration-part of the 
block, a corresponding program-point (see <b><a href="#6.2.1 Blocks">6.2.1</a></b>);</p>
<p>c) for each variable-identifier having a defining-point for the region that 
is the block, a variable possessing the type associated with the variable-identifier;</p>
<p>d) for each procedure-identifier local to the block, a procedure with the 
procedure-block corresponding to the procedure-identifier, and the formal-parameters of that procedure-block;</p>
<p>e) for each function-identifier local to the block, a function with the function-block 
corresponding to, and the result type associated with, the function-identifier, and the 
formal-parameters of that function-block;</p>
<p>f) if the block is a function-block, a result possessing the associated result 
type.</p>
</ul>
<p>NOTE -- Each activation contains its own algorithm, program-points, variables, 
procedures, and functions, distinct from every other activation.</p>
<h4><a name="6.2.3.3">6.2.3.3</a></h4>
<p>The activation of a procedure or function shall be an activation of the block 
of the procedure-block of the procedure or function-block of the function, respectively, and shall 
be designated as within</p>
<ul>
<p>a) the activation containing the procedure or function ; and</p>
<p>b) all activations that that containing activation is within.</p>
</ul>
<p>NOTE -- An activation of a block B can only be within activations of blocks 
containing B. Thus, an activation is not within another activation of the same block.</p>
<p>Within an activation, an applied occurrence of a label or variable-identifier, 
or of a procedure-identifier or function-identifier local to the block of the activation, shall denote 
the corresponding program-point, variable, procedure, or function, respectively, of that activation 
; except that the function-identifier of an assignment-statement shall, within an activation 
of the function denoted by that function-identifier, denote the result of that activation.</p>
<h4><a name="6.2.3.4">6.2.3.4</a></h4>
<p>A procedure-statement or function-designator contained in the algorithm of 
an activation and that specifies an activation of a block shall be designated the activation-point 
of the activation of the block.</p>
<h4><a name="6.2.3.5">6.2.3.5</a></h4>
<p>All variables contained by an activation, except for those listed as program-parameters, 
and any result of an activation, shall be totally-undefined at the commencement of 
that activation. The algorithm, program-points, variables, procedures, and functions, if any, 
shall exist until the termination of the activation.</p>
<h2><a name="6.3 Constant-definitions">6.3 Constant-definitions</a></h2>
<p>A constant-definition shall introduce an identifier to denote a value.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">constant-definition = identifier '=' constant .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">constant = [ sign ] ( unsigned-number | constant-identifier )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">         | character-string .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">constant-identifier = identifier .</pre>
</ul>
<p>The occurrence of an identifier in a constant-definition of a constant-definition-part 
of a block shall constitute its defining-point for the region that is the block. The constant 
in a constant-definition shall not contain an applied occurrence of the identifier in the constant-definition. Each applied occurrence of that identifier shall be a constant-identifier and shall denote 
the value denoted by the constant of the constant-definition. A constant-identifier in a constant 
containing an occurrence of a sign shall have been defined to denote a value of real-type or of integer-type. The required constant-identifiers shall be as specified in <b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b> and <b><a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a></b>.</p>
<h2><a name="6.4 Type-definitions">6.4 Type-definitions</a></h2>
<h3><a name="6.4.1 General">6.4.1 General</a></h3>
<p>A type-definition shall introduce an identifier to denote a type. Type shall 
be an attribute that is possessed by every value and every variable. Each occurrence of a new-type 
shall denote a type that is distinct from any other new-type.</p>
<ul>
<p>type-definition = identifier '=' type-denoter .</p>
<p>type-denoter = type-identifier | new-type .</p>
<p>new-type = new-ordinal-type | new-structured-type | new-pointer-type .</p>
</ul>
<p>The occurrence of an identifier in a type-definition of a type-definition-part 
of a block shall constitute its defining-point for the region that is the block. Each applied occurrence 
of that identifier shall be a type-identifier and shall denote the same type as that which is denoted 
by the type-denoter of the type-definition. Except for applied occurrences in the domain-type of 
a new-pointer-type, the type-denoter shall not contain an applied occurrence of the identifier in 
the type-definition.</p>
<p>Types shall be classified as simple-types, structured-types or pointer-types. The required typeidentifiers and corresponding required types shall be as specified in <b><a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b> and 
<b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>.</p>
<ul>
<p>simple-type-identifier = type-identifier .</p>
<p>structured-type-identifier = type-identifier .</p>
<p>pointer-type-identifier = type-identifier .</p>
<p>type-identifier = identifier .</p>
</ul>
<p>A type-identifier shall be considered as a simple-type-identifier, a structured-type-identifier, 
or a pointer-type-identifier, according to the type that it denotes.</p>
<h3><a name="6.4.2 Simple-types">6.4.2 Simple-types</a></h3>
<h4><a name="6.4.2.1 General">6.4.2.1 General</a></h4>
<p>A simple-type shall determine an ordered set of values. A value of an ordinal-type 
shall have an integer ordinal number ; the ordering relationship between any two such values 
of one type shall be the same as that between their ordinal numbers. An ordinal-type-identifier shall 
denote an ordinal-type. A real-type-identifier shall denote the real-type.</p>
<ul>
<p>simple-type = ordinal-type | real-type-identifier .</p>
<p>ordinal-type = new-ordinal-type | ordinal-type-identifier .</p>
<p>new-ordinal-type = enumerated-type | subrange-type .</p>
<p>ordinal-type-identifier = type-identifier .</p>
<p>real-type-identifier = type-identifier .</p>
</ul>
<h4><a name="6.4.2.2 Required simple-types">6.4.2.2 Required simple-types</a></h4>
<p>The following types shall exist</p>
<ul>
<p>a)<i> integer-typ</i>e. The required type-identifier integer shall denote the integer-type. The integer-type shall be an ordinal-type. The values shall be a subset of the whole numbers, 
denoted as specified in <b><a href="#6.1.5 Numbers">6.1.5</a></b> by signed-integer (see also <b><a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a></b>). The ordinal 
number of a value of integer-type shall be the value itself.</p>
<p>b) <i>real-type</i>. The required type-identifier real shall denote the real-type. The real-type shall be a simple-type. The values shall be an implementation-defined subset of 
the real numbers, denoted as specified in <b><a href="#6.1.5 Numbers">6.1.5</a></b> by signed-real.</p>
<p>c) <i>Boolean-typ</i>e. The required type-identifier Boolean shall denote the Boolean-type. The Boolean-type shall be an ordinal-type. The values shall be the enumeration 
of truth values denoted by the required constant-identifiers false and true, such that false 
is the predecessor of true. The ordinal numbers of the truth values denoted by false and true 
shall be the integer values 0 and 1 respectively.</p>
<p>d) <i>char-type</i>. The required type-identifier char shall denote the char-type. The char-type shall be an ordinal-type. The values shall be the enumeration of a set of 
implementation-defined characters, some possibly without graphic representations. The ordinal numbers 
of the character values shall be values of integer-type that are implementation-defined 
and that are determined by mapping the character values on to consecutive non-negative 
integer values starting at zero. The following relations shall hold.</p>
    <ul>
<p>1) The subset of character values representing the digits 0 to 9 shall be 
numerically ordered and contiguous.</p>
<p>2) The subset of character values representing the upper case letters A to 
Z, if available, shall be alphabetically ordered but not necessarily contiguous.</p>
<p>3) The subset of character values representing the lower case letters a to 
z, if available, shall be alphabetically ordered but not necessarily contiguous.</p>
    </ul>
</ul>
<p>NOTE -- Operators applicable to the required simple-types are specified 
in <b><a href="#6.7.2 Operators">6.7.2</a></b>.</p>
<h4><a name="6.4.2.3 Enumerated-types">6.4.2.3 Enumerated-types</a></h4>
<ul>
<p>enumerated-type = '(' identifier-list ')' .</p>
<p>identifier-list = identifier { ',' identifier } .</p>
</ul>
<p>The occurrence of an identifier in the identifier-list of an enumerated-type 
shall constitute its defining-point for the region that is the block closest-containing the enumerated-type. Each applied occurrence of the identifier shall be a constant-identifier. Within an activation 
of the block, all applied occurrences of that identifier shall possess the type denoted by 
the enumerated-type and shall denote the type's value whose ordinal number is the number of occurrences 
of identifiers preceding that identifier in the identifier-list.</p>
<p>NOTE -- Enumerated type constants are ordered by the sequence in which they 
are de fi ned, and they have consecutive ordinal numbers starting at zero.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">(red, yellow, green, blue, tartan)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">(club, diamond, heart, spade)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">(married, divorced, widowed, single)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">(scanning, found, notpresent)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">(Busy, InterruptEnable, ParityError, OutOfPaper, LineBreak)</pre>
</ul>
<h4><a name="6.4.2.4 Subrange-types">6.4.2.4 Subrange-types</a></h4>
<p>A subrange-type shall include identification of the smallest and the largest 
value in the subrange. The first constant of a subrange-type shall specify the smallest value, and 
this shall be less than or equal to the largest value, which shall be specified by the second constant 
of the subrange-type. Both constants shall be of the same ordinal-type, and that ordinal-type shall 
be designated the host-type of the subrange-type.</p>
<ul>
<p>subrange-type = constant '..' constant.</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">1..100</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">-10..+10</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">red..green</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">'0'..'9'</pre>
</ul>
<h3><a name="6.4.3 Structured-types">6.4.3 Structured-types</a></h3>
<h4><a name="6.4.3.1 General">6.4.3.1 General</a></h4>
<p>A new-structured-type shall be classified as an array-type, record-type, 
set-type, or file-type according to the unpacked-structured-type closest-contained by the new-structured-type. A component of a value of a structured-type shall be a value.</p>
<ul>
<p>structured-type = new-structured-type | structured-type-identifier.</p>
<p>new-structured-type = [ '<b>packed</b>' ] unpacked-structured-type.</p>
<p>unpacked-structured-type = array-type | record-type | set-type | file-type.</p>
</ul>
<p>The occurrence of the token packed in a new-structured-type shall designate 
the type denoted thereby as packed. The designation of a structured-type as packed shall 
indicate to the processor that data-storage of values should be economized, even if this causes operations 
on, or accesses to components of, variables possessing the type to be less efficient in terms 
of space or time.</p>
<p>The designation of a structured-type as packed shall affect the representation 
in data-storage of that structured-type only; i.e., if a component is itself structured, the 
component's representation in data-storage shall be packed only if the type of the component is designated 
packed.</p>
<p>NOTE -- The ways in which the treatment of entities of a type is affected 
by whether or not the type is designated packed are specified in <b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>, <b><a href="#6.4.5 Compatible types">6.4.5</a></b>, <b><a href="#6.6.3.3 Variable parameters">6.6.3.3</a></b>, <b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b><a href="#6.6.3.8 Conformability">,</a> <b><a href="#6.6.5.4 Transfer procedures">6.6.5.4</a></b>, and <b><a href="#6.7.1 General">6.7.1</a></b>.</p>
<h4><a name="6.4.3.2 Array-types">6.4.3.2 Array-types</a></h4>
<p>An array-type shall be structured as a mapping from each value specified 
by its index-type to a distinct component. Each component shall have the type denoted by the 
type-denoter of the component-type of the array-type.</p>
<ul>
<p>array-type = '<b>array</b>' '[' index-type { ',' index-type } ']' 'of' component-type 
    .</p>
<p>index-type = ordinal-type .</p>
<p>component-type = type-denoter .</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example 1:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [1..100] of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [Boolean] of colour</pre>
</ul>
<p>An array-type that specifies a sequence of two or more index-types shall 
be an abbreviated notation for an array-type specified to have as its index-type the first index-type 
in the sequence and to have a component-type that is an array-type specifying the sequence of index-types 
without the first indextype in the sequence and specifying the same component-type as the original specification. The component-type thus constructed shall be designated packed if and only if 
the original array-type is designated packed. The abbreviated form and the full form shall be equivalent.</p>
<p>NOTE -- 1 Each of the following two examples thus contains different ways 
of expressing its array-type.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example 2:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [Boolean] of array [1..10] of array [size] of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [Boolean] of array [1..10, size] of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [Boolean, 1..10, size] of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">array [Boolean, 1..10] of array [size] of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example 3:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">packed array [1..10, 1..8] of Boolean</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">packed array [1..10] of packed array [1..8] of Boolean</pre>
</ul>
<p>Let i denote a value of the index-type ; let V i denote a value of that component 
of the array-type that corresponds to the value i by the structure of the array-type ; let 
the smallest and largest values specified by the index-type be denoted by m and n, respectively ; and let 
k = (ord(n)-ord(m)+1) denote the number of values specified by the index-type ; then the values 
of the array-type shall be the distinct k-tuples of the form</p>
<ul>
<p>(Vm ,...,V n ).</p>
</ul>
<p>NOTE -- 2 A value of an array-type does not therefore exist unless all of 
its component-values are de fi ned. If the component-type has c values, then it follows that the cardinality 
of the set of values of the array-type is c raised to the power k.</p>
<p>Any type designated packed and denoted by an array-type having as its index-type 
a denotation of a subrange-type specifying a smallest value of 1 and a largest value of greater 
than 1, and having as its component-type a denotation of the char-type, shall be designated a string-type.</p>
<p>The correspondence of character-strings to values of string-types is obtained 
by relating the individual string-elements of the character-string, taken in textual order, to the components 
of the values of the string-type in order of increasing index.</p>
<p>NOTE -- 3 The values of a string-type possess additional properties which 
allow writing them to textfiles (see <b><a href="#6.9.3.6 String-types">6.9.3.6</a></b>) and define their use with relational-operators (see <b><a href="#6.7.2.5 Relational operators">6.7.2.5</a></b>).</p>
<h4><a name="6.4.3.3 Record-types">6.4.3.3 Record-types</a></h4>
<p>The structure and values of a record-type shall be the structure and values 
of the field-list of the record-type.</p>
<ul>
<p>record-type = 'record' field-list 'end' .</p>
<p>field-list = [ ( fixed-part [ ';' variant-part ] | variant-part ) [ ' ;' 
] ] .</p>
<p>fixed-part = record-section { ' ;' record-section } .</p>
<p>record-section = identifier-list ' :' type-denoter .</p>
<p>field-identifier = identifier .</p>
<p>variant-part = '<b>case</b>' variant-selector 'of' variant {  ' ;' variant } 
    .</p>
<p>variant-selector = [ tag-field ' :' ] tag-type .</p>
<p>tag-field = identifier .</p>
<p>variant = case-constant-list ' :' '(' field-list ')' .</p>
<p>tag-type = ordinal-type-identifier .</p>
<p>case-constant-list = case-constant { ',' case-constant } .</p>
<p>case-constant = constant .</p>
</ul>
<p>A field-list containing neither a fixed-part nor a variant-part shall have 
no components, shall define a single null value, and shall be designated empty.</p>
<p>The occurrence of an identifier in the identifier-list of a record-section 
of a fixed-part of a field-list shall constitute its defining-point as a field-identifier for the region 
that is the record-type closest containing the field-list and shall associate the field-identifier with a distinct component, 
which shall be designated a field, of the record-type and of the field-list. That component 
shall have the type denoted by the type-denoter of the record-section. </p>
<p>The field-list closest-containing a variant-part shall have a distinct component 
that shall have the values and structure defined by the variant-part.</p>
<p>Let Vi denote the value of the i-th component of a non-empty field-list having 
m components ; then the values of the field-list shall be distinct m-tuples of the form</p>
<ul>
<p>(V1 , V 2,...,Vm).</p>
</ul>
<p>NOTE -- 1 If the type of the i-th component has Fi values, then the cardinality 
of the set of values of the field-list is (F 1 * F 2 *... * Fm).</p>
<p>A tag-type shall be the type denoted by the ordinal-type-identifier of the 
tag-type. A case-constant shall denote the value denoted by the constant of the case-constant.</p>
<p>The type of each case-constant in the case-constant-list of a variant of 
a variant-part shall be compatible with the tag-type of the variant-selector of the variant-part. The values denoted by all case-constants of a type that is required to be compatible with a given 
tag-type shall be distinct and the set thereof shall be equal to the set of values specified by the 
tag-type. The values denoted by the case-constants of the case-constant-list of a variant shall be designated 
as corresponding to the variant.</p>
<p>With each variant-part shall be associated a type designated the selector-type 
possessed by the variant-part. If the variant-selector of the variant-part contains a tag-field, 
or if the case-constantlist of each variant of the variant-part contains only one case-constant, then 
the selector-type shall be denoted by the tag-type, and each variant of the variant-part shall be 
associated with those values specified by the selector-type denoted by the case-constants of the 
case-constant-list of the variant. Otherwise, the selector-type possessed by the variant-part shall 
be a new ordinal-type that is constructed to possess exactly one value for each variant of the variant-part, 
and no others, and each such variant shall be associated with a distinct value of that type.</p>
<p>Each variant-part shall have a component which shall be designated the selector 
of the variant-part, and which shall possess the selector-type of the variant-part. If the variant-selector 
of the variant-part contains a tag-field, then the occurrence of an identifier in the tag-field 
shall constitute the defining-point of the identifier as a field-identifier for the region that is the record-type 
closest-containing the variant-part and shall associate the field-identifier with the selector of 
the variant-part. The selector shall be designated a fi eld of the record-type if and only if it is associated 
with a field-identifier.</p>
<p>Each variant of a variant-part shall denote a distinct component of the variant-part 
; the component shall have the values and structure of the field-list of the variant, and 
shall be associated with those values specified by the selector-type possessed by the variant-part associated 
with the variant. The value of the selector of the variant-part shall cause the associated variant 
and component of the variant-part to be in a state that shall be designated active.</p>
<p>The values of a variant-part shall be the distinct pairs</p>
<ul>
<p>(k, Xk )</p>
</ul>
<p>where k represents a value of the selector of the variant-part, and X k is 
a value of the field-list of the active variant of the variant-part.</p>
<p>NOTES</p>
<p>2 If there are n values specified by the selector-type, and if the fi eld-list 
of the variant associated with the i-th value has T i values, then the cardinality of the set of values of the 
variant-part is (T1 + T2 +... +Tn ). There is no component of a value of a variant-part corresponding to 
any non-active variant of the variant-part.</p>
<p>3 Restrictions placed on the use of fi elds of a record-variable pertaining 
to variant-parts are specified in <b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>, <b><a href="#6.6.3.3 Variable parameters">6.6.3.3</a></b>, and <b><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b>.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">record</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  year : 0..2000;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  month : 1..12;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  day : 1..31</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">record</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  name, firstname : string;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  age : 0..99;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  case married : Boolean of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    true : (Spousesname : string);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    false : ( )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">record</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  x, y : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  area : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  case shape of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    triangle :</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      (side : real ; inclination, angle1, angle2 : angle);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    rectangle :</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      (side1, side2 : real ; skew : angle);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    circle :</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      (diameter : real);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<h4><a name="6.4.3.4 Set-types">6.4.3.4 Set-types</a></h4>
<p>A set-type shall determine the set of values that is structured as the power 
set of the base-type of the set-type. Thus, each value of a set-type shall be a set whose members 
shall be unique values of the base-type.</p>
<ul>
<p>set-type = '<b>se</b>t' 'of' base-type .</p>
<p>base-type = ordinal-type .</p>
</ul>
<p>NOTE -- 1 Operators applicable to values of set-types are specified in <b><a href="#6.7.2.4 Set operators">6.7.2.4</a></b>.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">set of char</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">set of (club, diamond, heart, spade)</pre>
</ul>
<p>NOTE -- 2 If the base-type of a set-type has b values, then the cardinality 
of the set of values is 2 raised to the power b.</p>
<p>For each ordinal-type T that is not a subrange-type, there shall exist both 
an unpacked settype designated the unpacked-canonical-set-of-T-type and a packed set-type designated 
the packedcanonical-set-of-T-type. If S is any subrange-type and T is its host-type, then the 
set of values determined by the type set of S shall be included in the sets of values determined 
by the unpackedcanonical-set-of-T-type and by the packed-canonical-set-of-T-type (see <b><a href="#6.7.1 General">6.7.1</a></b>).</p>
<h4><a name="6.4.3.5 File-types">6.4.3.5 File-types</a></h4>
<p>NOTE -- 1 A file-type describes sequences of values of the specified component-type, 
together with a current position in each sequence and a mode that indicates whether the sequence 
is being inspected or generated.</p>
<ul>
<p>file-type = 'file' 'of' component-type .</p>
</ul>
<p>A type-denoter shall not be permissible as the component-type of a file-type 
if it denotes either a file-type or a structured-type having any component whose type-denoter is 
not permissible as the component-type of a file-type.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">file of real</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">file of vector</pre>
</ul>
<p>A file-type shall define implicitly a type designated a sequence-type having 
exactly those values, which shall be designated sequences, defined by the following five rules 
in items a) to e).</p>
<p>NOTE -- 2 The notation x~y represents the concatenation of sequences x and 
y. The explicit representation of sequences (e.g., S(c)), of concatenation of sequences ; of the first, 
last, and rest selectors ; and of sequence equality is not part of the Pascal language. These notations are used to 
de fine fi le values, below, and the required file operations in <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b> and <b><a href="#6.6.6.5 Boolean functions">6.6.6.5</a></b>.</p>
<ul>
<p>a) S( ) shall be a value of the sequence-type S and shall be designated the 
empty sequence. The empty sequence shall have no components.</p>
<p>b) Let c be a value of the specified component-type and let x be a value 
of the sequence-type S; then S(c) shall be a sequence of type S, consisting of the single component-value 
c, and both S(c) ~x and x ~ S(c) shall be sequences, distinct from S( ), of type S.</p>
<p>c) Let c, S, and x be as in b), let y denote the sequence S(c) ~x and let 
z denote the sequence x~S(c) ; then the notation y.first shall denote c (i.e., the first component-value 
of y), y.rest shall denote x (i.e., the sequence obtained from y by deleting the first component), 
and z.last shall denote c (i.e., the last component-value of z).</p>
<p>d) Let x and y each be a non-empty sequence of type S ; then x = y shall 
be true if and only if both (x.first = y.first) and (x.rest = y.rest) are true. If x or y is the 
empty sequence, then x = y shall be true if and only if both x and y are the empty sequence.</p>
<p>e) Let x, y, and z be sequences of type S ; then x ~ (y ~z) = (x~ y) ~ z, 
S( ) ~x = x, and x ~ S( ) = x shall be true.</p>
</ul>
<p>A file-type also shall define implicitly a type designated a mode-type having 
exactly two values, which are designated Inspection and Generation.</p>
<p>NOTE -- 3 The explicit denotation of the values Inspection and Generation 
is not part of the Pascal language.</p>
<p>A file-type shall be structured as three components. Two of these components, 
designated f.L and f.R, shall be of the implicit sequence-type. The third component, designated 
f.M, shall be of the implicit mode-type.</p>
<p>Let f.L and f.R each be a single value of the sequence-type and let f.M 
be a single value of the mode-type ; then each value of the file-type shall be a distinct triple of 
the form</p>
<ul>
<p>(f.L, f.R, f.M)</p>
</ul>
<p>where f.R shall be the empty sequence if f.M is the value Generation. The 
value, f, of the file-type shall be designated empty if and only if f.L ~ f.R is the empty sequence.</p>
<p>NOTE -- 4 The two components, f.L and f.R, of a value of the fi le-type may 
be considered to represent the single sequence f.L ~ f.R together with a current position in that sequence. If f.R is non-empty, then f.R. first may be considered the current component as determined by the current position 
; otherwise, the current position is the end-of- file position.</p>
<p>There shall be a file-type that is denoted by the required structured-type-identifier 
text. The structure of the type denoted by <b>text</b> shall define an additional sequence-type 
whose values shall be designated lines. A line shall be a sequence cs ~S(end-of-line), where cs 
is a sequence of components possessing the char-type, and end-of-line shall represent a special component-value. Any assertion in clause <b>6</b> that the end-of-line value is attributed to a variable other 
than a component of a sequence shall be construed as an assertion that the variable has attributed to it 
the char-type value space. If l is a line, then no component of l other than l.last shall be an end-of-line. There shall be an implementation-defined subset of the set of char-type values, designated 
characters prohibited from textfi les; the effect of causing a character in that subset to be attributed 
to a component of either t.L or t.R for any textfile t shall be implementation-dependent.</p>
<p>A line-sequence, ls, shall be either the empty sequence or the sequence l 
~ ls' where l is a line and ls' is a line-sequence.</p>
<p>Every value t of the type denoted by text shall satisfy the following two 
rules:</p>
<ul>
<p>a) If t.M = Inspection, then t.L ~ t.R shall be a line-sequence.</p>
<p>b) If t.M = Generation, then t.L ~ t.R shall be ls ~cs, where ls is a line-sequence 
and cs is a sequence of components possessing the char-type.</p>
</ul>
<p>NOTE -- 5 In rule b), cs may be considered, especially if it is non-empty, 
to be a partial line that is being generated. Such a partial line cannot occur during inspection of a fi le. Also, cs does not correspond to t.R, since t.R is the empty sequence if t.M = Generation.</p>
<p>A variable that possesses the type denoted by the required type-identifier 
text shall be designated a textfile.</p>
<p>NOTE -- 6 All required procedures and functions applicable to a variable of 
type file of char are applicable to text files. Additional required procedures and functions, applicable 
only to text fi les, are defined in <b><a href="#6.6.6.5 Boolean functions">6.6.6.5</a></b> and <b><a href="#6.9 Input and output">6.9</a></b>.</p>
<h3><a name="6.4.4 Pointer-types">6.4.4 Pointer-types</a></h3>
<p>The values of a pointer-type shall consist of a single nil-value and a set 
of identifying-values each identifying a distinct variable possessing the domain-type of the new-pointer-type. The set of identifying-values shall be dynamic, in that the variables and the values 
identifying them shall be permitted to be created and destroyed during the execution of the program. Identifying-values and the variables identified by them shall be created only by the required procedure 
new (see <b><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b>).</p>
<p>NOTE -- 1 Since the nil-value is not an identifying-value, it does not identify 
a variable.</p>
<p>The token nil shall denote the nil-value in all pointer-types .</p>
<ul>
<p>pointer-type = new-pointer-type | pointer-type-identifier .</p>
<p>new-pointer-type = '^' domain-type .</p>
<p>domain-type = type-identifier .</p>
</ul>
<p>NOTE -- 2 The token nil does not have a single type, but assumes a suitable 
pointer-type to satisfy the assignment-compatibility rules, or the compatibility rules for operators, 
if possible.</p>
<h3><a name="6.4.5 Compatible types">6.4.5 Compatible types</a></h3>
<p>Types T1 and T2 shall be designated compatible if any of the following four 
statements is true:</p>
<ul>
<p>a) T1 and T2 are the same type.</p>
<p>b) T1 is a subrange of T2, or T2 is a subrange of T1, or both T1 and T2 are 
subranges of the same host-type.</p>
<p>c) T1 and T2 are set-types of compatible base-types, and either both T1 and 
T2 are designated packed or neither T1 nor T2 is designated packed.</p>
<p>d) T1 and T2 are string-types with the same number of components.</p>
</ul>
<h3><a name="6.4.6 Assignment-compatibility">6.4.6 Assignment-compatibility</a></h3>
<p>A value of type T2 shall be designated assignment-compatible with a type 
T1 if any of the following five statements is true:</p>
<ul>
<p>a) T1 and T2 are the same type, and that type is permissible as the component-type 
of a file-type (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>).</p>
<p>b) T1 is the real-type and T2 is the integer-type.</p>
<p>c) T1 and T2 are compatible ordinal-types, and the value of type T2 is in 
the closed intervalspecified by the type T1.</p>
<p>d) T1 and T2 are compatible set-types, and all the members of the value of 
type T2 are in the closed interval specified by the base-type of T1.</p>
<p>e) T1 and T2 are compatible string-types.</p>
</ul>
<p>At any place where the rule of assignment-compatibility is used</p>
<ul>
<p>a) it shall be an error if T1 and T2 are compatible ordinal-types and the 
value of type T2 is not in the closed interval specified by the type T1;</p>
<p>b) it shall be an error if T1 and T2 are compatible set-types and any member 
of the value of type T2 is not in the closed interval specified by the base-type of the type T1.</p>
</ul>
<p>At any place where the rule of assignment-compatibility is used to require 
a value of integer-type to be assignment-compatible with a real-type, an implicit integer-to-real conversion 
shall be performed.</p>
<h3><a name="6.4.7 Example of a type-definition-part">6.4.7 Example of a type-definition-part</a></h3>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">type</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> natural = 0..maxint;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> count = integer;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> range = integer;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> colour = (red, yellow, green, blue);</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> sex = (male, female);</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> year = 1900..1999;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> shape = (triangle, rectangle, circle);</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> punchedcard = array [1..80] of char;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> charsequence = file of char;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> polar = record</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">               r : real;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">           theta : angle</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">         end;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> indextype = 1..limit;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> vector = array [indextype] of real;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> person = ^ persondetails;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> persondetails = record</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  name, firstname : charsequence;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  age : natural;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  married : Boolean ;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  father, child, sibling : person;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  case s : sex of</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  male :</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                   (enlisted, bearded : Boolean);</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  female :</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                   (mother, programmer : Boolean)</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">               end;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> FileOfInteger = file of integer;</pre>
<p>NOTE -- In the above example count, range, and integer denote the same type. The types denoted by year and natural are compatible with, but not the same as, the type denoted 
by range, count, and integer.</p>
<h2><a name="6.5 Declarations and denotations of variables">6.5 Declarations and denotations of variables</a></h2>
<h3><a name="6.5.1 Variable-declarations">6.5.1 Variable-declarations</a></h3>
<p>A variable shall be an entity to which a value can be attributed (see <b><a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b>). Each identifier in the identifier-list of a variable-declaration shall denote a distinct variable 
possessing the type denoted by the type-denoter of the variable-declaration.</p>
<ul>
<p>variable-declaration = identifier-list ' :' type-denoter .</p>
</ul>
<p>The occurrence of an identifier in the identifier-list of a variable-declaration 
of the variable-declarationpart of a block shall constitute its defining-point as a variable-identifier for 
the region that is the block. The structure of a variable possessing a structured-type shall 
be the structure of the structured-type. A use of a variable-access shall be an access, at the time 
of the use, to the variable thereby denoted. A variable-access, according to whether it is an entire-variable, 
a componentvariable, an identified-variable, or a buffer-variable, shall denote a declared variable, 
a component of a variable, a variable that is identified by a pointer value (see <b><a href="#6.4.4 Pointer-types">6.4.4</a></b>), 
or a buffer-variable, respectively.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">variable-access = entire-variable j component-variable j identified-variable</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                | buffer-variable.</pre>
</ul>
<p><i>Example of a variable-declaration-part:</i></p>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x, y, z, max : real;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> i, j : integer;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> k : 0..9;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> p, q, r : Boolean;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> operator : (plus, minus, times);</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> a : array [0..63] of real;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> c : colour;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> f : file of char;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> hue1, hue2 : set of colour;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> p1, p2 : person;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> m, m1, m2 : array [1..10, 1..10] of real;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> coord : polar;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> pooltape : array [1..4] of FileOfInteger;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"> date : record</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">          month : 1..12;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">          year : integer</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">        end;</pre>
<p>NOTE -- Variables occurring in examples in the remainder of this International 
Standard should be assumed to have been declared as specified in the above example.</p>
<h3><a name="6.5.2 Entire-variables">6.5.2 Entire-variables</a></h3>
<ul>
<p>entire-variable = variable-identifier .</p>
<p>variable-identifier = identifier .</p>
</ul>
<h3><a name="6.5.3 Component-variables">6.5.3 Component-variables</a></h3>
<h4><a name="6.5.3.1 General">6.5.3.1 General</a></h4>
<p>A component of a variable shall be a variable. A component-variable shall 
denote a component of a variable. A reference or an access to a component of a variable shall 
constitute a reference or an access, respectively, to the variable. The value, if any, of the component 
of a variable shall be the same component of the value, if any, of the variable.</p>
<ul>
<p>component-variable = indexed-variable j field-designator .</p>
</ul>
<h4><a name="6.5.3.2 Indexed-variables">6.5.3.2 Indexed-variables</a></h4>
<p>A component of a variable possessing an array-type shall be denoted by an 
indexed-variable.</p>
<ul>
<p>indexed-variable = array-variable '[' index-expression, { ',' index-expression 
} ']'.</p>
<p>array-variable = variable-access.</p>
<p>index-expression = expression.</p>
</ul>
<p>An array-variable shall be a variable-access that denotes a variable possessing 
an array-type. For an indexed-variable closest-containing a single index-expression, the value 
of the index-expression shall be assignment-compatible with the index-type of the array-type. The component 
denoted by the indexed-variable shall be the component that corresponds to the value of 
the index-expression by the mapping of the type possessed by the array-variable (see <b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>).</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example 1:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">a[12]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">a[i + j]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">m[k]</pre>
</ul>
<p>If the array-variable is itself an indexed-variable, an abbreviation shall 
be permitted. In the abbreviated form, a single comma shall replace the sequence ] [ that occurs 
in the full form. The abbreviated form and the full form shall be equivalent. 
</p>
<p>The order of both the evaluation of the index-expressions of, and the access 
to the array-variable of, an indexed-variable shall be implementation-dependent.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example 2:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">m[k][1]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">m[k, 1]</pre>
</ul>
<p>NOTE -- These two examples denote the same component-variable.</p>
<h4><a name="6.5.3.3 Field-designators">6.5.3.3 Field-designators</a></h4>
<p>A field-designator either shall denote that component of the record-variable 
of the field-designator associated (see <b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>) with the field-identifier of the field-specifier 
of the field-designator or shall denote the variable denoted by the field-designator-identifier (see <b><a href="#6.8.3.10 With-statements">6.8.3.10</a></b>) of the field-designator. A record-variable shall be a variable-access that denotes a variable possessing 
a record-type.</p>
<p>The occurrence of a record-variable in a field-designator shall constitute 
the defining-point of the field-identifiers associated with components of the record-type possessed 
by the record-variable, for the region that is the field-specifier of the field-designator.</p>
<ul>
<p>field-designator = record-variable '.' field-specifier j field-designator-identifier 
    .</p>
<p>record-variable = variable-access .</p>
<p>field-specifier = field-identifier .</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">Examples:</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">p2^.mother</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">coord.theta</p>
</ul>
<p>An access to a component of a variant of a variant-part, where the selector 
of the variant-part is not a field, shall attribute to the selector that value associated (see <b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>) with the variant. It shall be an error unless a variant is active for the entirety of each reference 
and access to each component of the variant.</p>
<p>When a variant becomes non-active, all of its components shall become totally-undefined.</p>
<p>NOTE -- If the selector of a variant-part is undefined, then no variant of 
the variant-part is active.</p>
<h3><a name="6.5.4 Identified-variables">6.5.4 Identified-variables</a></h3>
<p>An identified-variable shall denote the variable, if any, identified by the 
value of the pointer-variable of the identified-variable (see <b><a href="#6.4.4 Pointer-types">6.4.4</a></b> and <b><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b>) shall be accessible 
until the termination of the activation of the program-block or until the variable is made inaccessible 
(see the required procedure <b>dispose</b>, <b><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b>).</p>
<p>NOTE -- The accessibility of the variable also depends on the existence of 
a pointer-variable that has attributed to it the corresponding identifying-value.</p>
<p>A pointer-variable shall be a variable-access that denotes a variable possessing 
a pointer-type. It shall be an error if the pointer-variable of an identified-variable either denotes 
a nil-value or is undefined. It shall be an error to remove from the set of values of the pointer-type 
the identifying-value of an identified-variable (see <b><a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b>) when a reference to the identified-variable 
exists.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p1fi</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p1f.fatherf</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p1's.sibling's.father's</pre>
</ul>
<h3><a name="6.5.5 Buffer-variables">6.5.5 Buffer-variables</a></h3>
<p>A file-variable shall be a variable-access that denotes a variable possessing 
a file-type. A buffervariable shall denote a variable associated with the variable denoted by the file-variable 
of the buffer-variable. A buffer-variable associated with a textfile shall possess 
the char-type; otherwise, a buffer-variable shall possess the component-type of the file-type possessed 
by the file-variable of the buffer-variable.</p>
<ul>
<p>buffer-variable = file-variable '^' .</p>
<p>file-variable = variable-access .</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">input^</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">pooltape[2]^</pre>
</ul>
<p>It shall be an error to alter the value of a file-variable f when a reference 
to the buffer-variable ff exists. A reference or an access to a buffer-variable shall constitute 
a reference or an access, respectively, to the associated file-variable.</p>
<h2><a name="6.6 Procedure and function declarations">6.6 Procedure and function declarations</a></h2>
<h3><a name="6.6.1 Procedure-declarations">6.6.1 Procedure-declarations</a></h3>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-declaration = procedure-heading ';' directive</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                      | procedure-identification ';' procedure-block</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                      | procedure-heading ';' procedure-block .</pre>
    <pre>procedure-heading = 'procedure' identifier [ formal-parameter-list ] .</pre>
    <pre>procedure-identification = 'procedure' procedure-identifier .</pre>
    <pre>procedure-identifier = identifier .</pre>
    <pre>procedure-block = block .</pre>
</ul>
<p>The occurrence of a formal-parameter-list in a procedure-heading of a procedure-declaration 
shall define the formal-parameters of the procedure-block, if any, associated with 
the identifier of the procedure-heading to be those of the formal-parameter-list.</p>
<p>The occurrence of an identifier in the procedure-heading of a procedure-declaration 
shall constitute its defining-point as a procedure-identifier for the region that is the block 
closest-containing the procedure-declaration.</p>
<p>Each identifier having a defining-point as a procedure-identifier in a procedure-heading 
of a procedure-declaration in which the directive <b>forward</b> occurs shall have exactly one of its applied 
occurrences in a procedure-identification of a procedure-declaration, and this applied 
occurrence shall be closestcontained by the procedure-and-function-declaration-part closest-containing the procedure-heading.</p>
<p>The occurrence of a procedure-block in a procedure-declaration shall associate 
the procedure-block with the identifier in the procedure-heading, or with the procedure-identifier 
in the procedureidentification, of the procedure-declaration.</p>
<p>There shall be at most one procedure-block associated with a procedure-identifier.</p>
<p><i>Examples of procedure-and-function-declaration-parts:</i></p>
<p>Example 1:</p>
<p>NOTE --- This example is not for level 0.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure AddVectors (var A, B, C : array [low..high : natural] of real);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  i : natural;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  for i := low to high do A[i] := B[i] + C[i]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end { of AddVectors };</pre>
</ul>
<p>Example 2:</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure readinteger (var f : text ; var x : integer);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     i : natural;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  while ff = ' ' do get(f);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {The buffer-variable contains the first non-space char}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  i := 0;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  while ff in [ ' 0 '.. ' 9 ' ] do begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     i := (10 * i) + (ord(f f) - ord( ' 0 ' ));</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     get(f)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {The buffer-variable contains a non-digit}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  x := i</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {Of course if there are no digits, x is zero}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure bisect (function f(x : real) : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                           a, b        : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                  var      result      : real);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> {This procedure attempts to find a zero of f(x) in (a,b) by</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  the method of bisection. It is assumed that the procedure is</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  called with suitable values of a and b such that</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      (f(a) &lt; 0) and (f(b) &gt;= 0)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  The estimate is returned in the last parameter.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> const</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   eps = 1e-10;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   midpoint : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {The invariant P is true by calling assumption}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  midpoint := a;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  while abs(a - b) &gt; eps * abs(a) do begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   midpoint := (a + b) / 2;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   if f(midpoint) &lt; 0 then a := midpoint</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   else b := midpoint</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {Which re-establishes the invariant:</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     P = (f(a) &lt; 0) and (f(b) &gt;= 0)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   and reduces the interval (a,b) provided that the</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   value of midpoint is distinct from both a and b.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {P together with the loop exit condition assures that a zero</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   is contained in a small subinterval. Return the midpoint as</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   the zero.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  result := midpoint</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure PrepareForAppending (var f : FileOfInteger);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">{ This procedure takes a file in any state suitable for reset and</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  places it in a condition for appending data to its end. Simpler</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  conditioning is only possible if assumptions are made about the</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  initial state of the file. }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  LocalCopy : FileOfInteger;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  procedure CopyFiles (var from, into : FileOfInteger);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    reset(from) ; rewrite(into);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    while not eof(from) do begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    into' := from';</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    put(into) ; get(from)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end { of CopyFiles };</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin { of body of PrepareForAppending }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  CopyFiles(f, LocalCopy);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  CopyFiles(LocalCopy, f)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end { of PrepareForAppending };</pre>
</ul>
<h3><a name="6.6.2 Function-declarations">6.6.2 Function-declarations</a></h3>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-declaration = function-heading ';' directive</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                     | function-identification ' ;' function-block</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                     | function-heading ' ;' function-block .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-heading = 'function' identifier [ formal-parameter-list ] ';' result-type .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-identification = 'function' function-identifier .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-identifier = identifier .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">result-type = simple-type-identifier | pointer-type-identifier .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-block = block.</pre>
</ul>
<p>The occurrence of a formal-parameter-list in a function-heading of a function-declaration 
shall define the formal-parameters of the function-block, if any, associated with the 
identifier of the function-heading to be those of the formal-parameter-list. The function-block shall contain 
at least one assignment-statement such that the function-identifier of the assignment-statement 
is associated with the block (see <b><a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b>).</p>
<p>The occurrence of an identifier in the function-heading of a function-declaration 
shall constitute its defining-point as a function-identifier associated with the result type denoted 
by the result-type for the region that is the block closest-containing the function-declaration.</p>
<p>Each identifier having a defining-point as a function-identifier in the function-heading 
of a function-declaration in which the directive <b>forward</b> occurs shall have exactly one of its applied 
occurrences in a function-identification of a function-declaration, and this applied 
occurrence shall be closestcontained by the procedure-and-function-declaration-part closest-containing the function-heading.</p>
<p>The occurrence of a function-block in a function-declaration shall associate 
the function-block with the identifier in the function-heading, or with the function-identifier in 
the function-identification, of the function-declaration ; the block of the function-block shall be associated 
with the result type that is associated with the identifier or function-identifier.</p>
<p>There shall be at most one function-block associated with a function-identifier.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example of a procedure-and-function-declaration-part:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function Sqrt (x : real) : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">{This function computes the square root of x (x &gt; 0) using Newton's</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> method.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  old, estimate : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> estimate := x;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> repeat</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   old := estimate;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   estimate := (old + x / old) * 0.5;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> until abs(estimate - old) &lt; eps * estimate;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> {eps being a global constant}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> Sqrt := estimate</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end { of Sqrt };</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function max (a : vector) : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">{This function finds the largest component of the value of a.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  largestsofar : real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  fence : indextype;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> largestsofar := a[1];</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> {Establishes largestsofar = max(a[1])}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> for fence := 2 to limit do begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   if largestsofar &lt; a[fence] then largestsofar := a[fence]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   {Re-establishing largestsofar = max(a[1],... ,a[fence]) l</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> {So now largestsofar = max(a[1],... ,a[limit]) l</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> max := largestsofar</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end { of max };</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function GCD (m, n : natural) : natural;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  if n=0 then GCD := m else GCD := GCD(n, m mod n);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">{The following two functions analyze a parenthesized expression and</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> convert it to an internal form. They are declared forward</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> since they are mutually recursive, i.e., they call each other.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> These function-declarations use the following identifiers that are not</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> defined in this International Standard : formula, IsOpenParenthesis, IsOperator,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> MakeFormula, nextsym, operation, ReadElement, ReadOperator, and</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> SkipSymbol. }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function ReadExpression : formula ; forward;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function ReadOperand : formula ; forward ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function ReadExpression ; {See forward declaration of heading.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  this : formula;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  op : operation;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> this := ReadOperand;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> while IsOperator(nextsym) do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   op := ReadOperator;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   this := MakeFormula(this, op, ReadOperand);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> ReadExpression := this</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function ReadOperand ; {See forward declaration of heading.}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if IsOpenParenthesis(nextsym) then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  SkipSymbol;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  ReadOperand := ReadExpression;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  {nextsym should be a close-parenthesis}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  SkipSymbol</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> else ReadOperand := ReadElement</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end;</pre>
</ul>
<h3><a name="6.6.3 Parameters">6.6.3 Parameters</a></h3>
<h4><a name="6.6.3.1 General">6.6.3.1 General</a></h4>
<p>The identifier-list in a value-parameter-specification shall be a list of 
value parameters. The identifier-list in a variable-parameter-specification shall be a list of variable parameters.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">formal-parameter-list = '(' formal-parameter-section { ';' formal-parameter-section } ')' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">formal-parameter-section &gt; value-parameter-specification</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         | variable-parameter-specification</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         | procedural-parameter-specification</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         | functional-parameter-specification .</pre>
</ul>
<p>NOTE -- 1 There is also a syntax rule for formal-parameter-section in <b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b>.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">value-parameter-specification = identifier-list ':' type-identifier .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">variable-parameter-specification = 'var' identifier-list ':' type-identifier .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedural-parameter-specification = procedure-heading .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">functional-parameter-specification = function-heading .</pre>
</ul>
<p>An identifier defined to be a parameter-identifier for the region that is 
the formal-parameter-list of a procedure-heading shall be designated a formal-parameter of the block of 
the procedure-block, if any, associated with the identifier of the procedure-heading. An identifier 
defined to be a parameteridentifier for the region that is the formal-parameter-list of a function-heading shall 
be designated a formal-parameter of the block of the function-block, if any, associated 
with the identifier of the function-heading.</p>
<p>The occurrence of an identifier in the identifier-list of a value-parameter-specification 
or a variable-parameter-specification shall constitute its defining-point as a parameter-identifier 
for the region that is the formal-parameter-list closest-containing it, and its defining-point 
as the associated variable-identifier for the region that is the block, if any, of which it is a formal-parameter.</p>
<p>The occurrence of the identifier of a procedure-heading in a procedural-parameter-specification 
shall constitute its defining-point as a parameter-identifier for the region that 
is the formal-parameter-list closest-containing it, and its defining-point as the associated procedure-identifier 
for the region that is the block, if any, of which it is a formal-parameter.</p>
<p>The occurrence of the identifier of a function-heading in a functional-parameter-specification 
shall constitute its defining-point as a parameter-identifier for the region that 
is the formal-parameter-list closest-containing it, and its defining-point as the associated function-identifier 
for the region that is the block, if any, of which it is a formal-parameter.</p>
<p>NOTE -- 2 If the formal-parameter-list is contained in a procedural-parameter-specification 
or a functional-parameter- specification, there is no corresponding procedure-block or function-block.</p>
<h4><a name="6.6.3.2 Value parameters">6.6.3.2 Value parameters</a></h4>
<p>The formal-parameter and its associated variable-identifier shall denote 
the same variable. The formal-parameter shall possess the type denoted by the type-identifier of 
the value-parameterspecification. The type possessed by the formal-parameter shall be one that is permitted 
as the component-type of a file-type (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>). The actual-parameter (see 
<b><a href="#6.7.3 Function-designators">6.7.3</a></b> and <b><a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b>) shall be an expression whose value is assignment-compatible with the type possessed 
by the formal-parameter. The current value of the expression shall be attributed upon activation of 
the block to the variable that is denoted by the formal-parameter.</p>
<h4><a name="6.6.3.3 Variable parameters">6.6.3.3 Variable parameters</a></h4>
<p>The actual-parameter shall be a variable-access. The type possessed by the 
actual-parameters shall be the same as that denoted by the type-identifier of the variable-parameter-specification, 
and the formal-parameters shall also possess that type. The actual-parameter shall 
be accessed before the activation of the block, and this access shall establish a reference to the 
variable thereby accessed during the entire activation of the block ; the corresponding formal-parameter 
and its associated variable-identifier shall denote the referenced variable during the activation.</p>
<p>An actual variable parameter shall not denote a field that is the selector 
of a variant-part. An actual variable parameter shall not denote a component of a variable where that 
variable possesses a type that is designated packed.</p>
<h4><a name="6.6.3.4 Procedural parameters">6.6.3.4 Procedural parameters</a></h4>
<p>The actual-parameter (see <b><a href="#6.7.3 Function-designators">6.7.3</a></b> and <b><a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b>) shall be a procedure-identifier 
that has a definingpoint contained by the program-block. The formal-parameter-list, if any, closest-contained 
by the formal-parameter-section and the formal-parameter-list, if any, that defines 
the formal-parameters of the procedure denoted by the actual-parameter shall be congruous, or neither 
formal-parameter-list shall occur. The formal-parameter and its associated procedure-identifier 
shall denote the actualparameter during the entire activation of the block.</p>
<h4><a name="6.6.3.5 Functional parameters">6.6.3.5 Functional parameters</a></h4>
<p>The actual-parameter (see <b><a href="#6.7.3 Function-designators">6.7.3</a></b> and <b><a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b>) shall be a function-identifier 
that has a defining-point contained by the program-block. The formal-parameter-list, if any, closest-contained 
by the formalparameter-section and the formal-parameter-list, if any, that defines the formal-parameters 
of the function denoted by the actual-parameter shall be congruous, or neither formal-parameter-list 
shall occur. The result-type closest-contained by the formal-parameter-section 
shall denote the same type as the result type of the function. The formal-parameter and its associated 
function-identifier shall denote the actual-parameter during the entire activation of the block.</p>
<h4><a name="6.6.3.6 Parameter list congruity">6.6.3.6 Parameter list congruity</a></h4>
<p>Two formal-parameter-lists shall be congruous if they contain the same number 
of formal-parametersections and if the formal-parameter-sections in corresponding positions match. Two 
formalparameter-sections shall match if any of the following statements is true.</p>
<ul>
<p>a) They are both value-parameter-specifications containing the same number 
of parameters and the type-identifier in each value-parameter-specification denotes the same 
type.</p>
<p>b) They are both variable-parameter-specifications containing the same number 
of parameters and the type-identifier in each variable-parameter-specification denotes 
the same type.</p>
<p>c) They are both procedural-parameter-specifications and the formal-parameter-lists 
of the procedure-headings thereof are congruous.</p>
<p>d) They are both functional-parameter-specifications, the formal-parameter-lists 
of the functionheadings thereof are congruous, and the type-identifiers of the result-types of the 
functionheadings thereof denote the same type.</p>
<p><font color="red">e) They are either both value-conformant-array-specifications or both variable-conformant-arrayspecifications; 
and in both cases the conformant-array-parameter-specifications contain the 
same number of parameters and equivalent conformant-array-schemas. Two conformant-arrayschemas 
shall be equivalent if all of the following four statements are true.</font></p>
    <ul>
<p><font color="red">1) There is a single index-type-specification in each conformant-array-schema.</font></p>
<p><font color="red">2) The ordinal-type-identifier in each index-type-specification denotes the 
same type.</font></p>
<p><font color="red">3) Either the (component) conformant-array-schemas of the conformant-array-schemas 
are equivalent or the type-identifiers of the conformant-array-schemas denote 
the same type.</font></p>
<p><font color="red">4) Either both conformant-array-schemas are packed-conformant-array-schemas 
or both are unpacked-conformant-array-schemas.</font></p>
    </ul>
</ul>
<p><font color="red">NOTES</font></p>
<p><font color="red">1 The abbreviated conformant-array-schema and its corresponding full form 
are equivalent (see </font><b><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a></b><font color="red">).</font></p>
<p><font color="red">2 For the status of item e) above see </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> a</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> b</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> c</font></b><font color="red">), </font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> a</font></b><font color="red">), 
and </font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> b</font></b><font color="red">). </font></p>
<h4><a name="6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7 Conformant array parameters</font></a></h4>
<p><font color="red">NOTE -- For the status of this subclause see </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> a</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> b</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> c</font></b><font color="red">), </font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> a</font></b><font color="red">), and </font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> b</font></b><font color="red">).</font></p>
<h5><a name="6.6.3.7.1 General"><font color="red">6.6.3.7.1 General</font></a></h5>
<p><font color="red">The occurrence of an identifier in the identifier-list contained by a conformant-array-parameterspecification 
shall constitute its defining-point as a parameter-identifier for the region 
that is the formal-parameter-list closest-containing it and its defining-point as the 
associated variable-identifier for the region that is the block, if any, of which it is a formal-parameter. A variable-identifier so defined shall be designated a conformant-array-parameter.</font></p>
<p><font color="red">The occurrence of an identifier in an index-type-specification shall constitute 
its defining-point as a bound-identifier for the region that is the formal-parameter-list closest-containing 
it and for the region that is the block, if any, whose formal-parameters are specified by 
that formal-parameter-list.</font></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">formal-parameter-section &gt; conformant-array-parameter-specification .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">conformant-array-parameter-specification = value-conformant-array-specification</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                                         | variable-conformant-array-specification .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">value-conformant-array-specification = identifier-list ':' conformant-array-schema .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">variable-conformant-array-specification = 'var' identifier-list ':' conformant-array-schema .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">conformant-array-schema = packed-conformant-array-schema</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                        | unpacked-conformant-array-schema .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">packed-conformant-array-schema = 'packed' 'array' '[' index-type-specification ']'</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                                 'of' type-identifier .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">unpacked-conformant-array-schema =</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">               'array' '[' index-type-specification { ';' index-type-specification } ']'</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">               'of' ( type-identifier j conformant-array-schema ) .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">index-type-specification = identifier '..' identifier ' :' ordinal-type-identifier .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">factor &gt; bound-identifier .</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">bound-identifier = identifier .</font></pre>
</ul>
<p><font color="red">NOTE -- 1 There are also syntax rules for formal-parameter-section in </font><b><a href="#6.6.3.1 General"><font color="red">6.6.3.1</font></a></b><font color="red"> and for factor in </font><b><a href="#6.7.1 General"><font color="red">6.7.1</font></a></b><font color="red">.</font></p>
<p><font color="red">If a conformant-array-schema closest-contains a conformant-array-schema, 
then an abbreviated form of definition shall be permitted. In the abbreviated form, a single semicolon 
shall replace the sequence ] of array [ that occurs in the full form. The abbreviated form and the 
full form shall be equivalent.</font></p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i><font color="red">Examples:</font></i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">array [u..v : T1] of array [j..k : T2] of T3</font></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">array [u..v : T1 ; j..k : T2] of T3</font></pre>
</ul>
<p><font color="red">Within the activation of the block, applied occurrences of the first identifier 
of an index-typespecification shall denote the smallest value specified by the corresponding index-type 
(see </font><b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b><font color="red">) possessed by the actual-parameter, and applied occurrences of the second 
identifier of the indextype-specification shall denote the largest value specified by that index-type.</font></p>
<p><font color="red">NOTE -- 2 The object denoted by a bound-identifier is neither a constant nor 
a variable.</font></p>
<p><font color="red">The actual-parameters (see </font><b><a href="#6.7.3 Function-designators"><font color="red">6.7.3</font></a></b><font color="red"> and </font><b><a href="#6.8.2.3 Procedure-statements"><font color="red">6.8.2.3</font></a></b><font color="red">) corresponding to formal-parameters 
that occur in a single conformant-array-parameter-specification shall all possess the same 
type. The type possessed by the actual-parameters shall be conformable (see </font><b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b><font color="red">) with the conformant-array-schema, 
and the formal-parameters shall possess an array-type which shall be distinct 
from any other type and which shall have a component-type that shall be the fixed-component-type 
of the conformantarray-parameters defined in the conformant-array-parameter-specification and that 
shall have the index-types of the type possessed by the actual-parameters that correspond 
(see </font><b><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b><font color="red">) to the index-type-specifications contained by the conformant-array-schema contained 
by the conformantarray-parameter-specification. The type denoted by the type-identifier contained 
by the conformantarray-schema contained by a conformant-array-parameter-specification shall be designated 
the fixedcomponent-type of the conformant-array-parameters defined by that conformant-array-parameterspecification.</font></p>
<p><font color="red">NOTE -- 3 The type possessed by the formal-parameter cannot be a string-type 
(see 6.4.3.2) because it is not denoted by an array-type.</font></p>
<h5><a name="6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2 Value conformant arrays</font></a></h5>
<p><font color="red">The identifier-list in a value-conformant-array-specification shall be a 
list of value conformant arrays. Each actual-parameter corresponding to a value formal-parameter shall be 
an expression. The value of the expression shall be attributed before activation of the block to an 
auxiliary variable that the program does not otherwise contain. The type possessed by this variable 
shall be the same as that possessed by the expression. This variable shall be accessed before the 
activation of the block, and this access shall establish a reference to the variable thereby accessed 
during the entire activation of the block ; the corresponding formal-parameter and its associated variable-identifier 
shall represent the referenced variable during the activation. The fixed-component-type 
of a value conformant array shall be one that is permitted as the component-type of a file-type.</font></p>
<p><font color="red">If the actual-parameter contains an occurrence of a conformant-array-parameter, 
then for each occurrence of the conformant-array-parameter contained by the actual-parameter, 
either </font></p>
<ul>
<p><font color="red">a) the occurrence of the conformant-array-parameter shall be contained by 
a function-designator contained by the actual-parameter ; or</font></p>
<p><font color="red">b) the occurrence of the conformant-array-parameter shall be contained by 
an indexed-variablecontained by the actual-parameter, such that the type possessed by that indexed-variable 
is the fixed-component-type of the conformant-array-parameter.</font></p>
</ul>
<p><font color="red">NOTE -- This ensures that the type possessed by the expression and the auxiliary 
variable will always be known and that, as a consequence, the activation record of a procedure can 
be of a fixed size.</font></p>
<h5><a name="6.6.3.7.3 Variable conformant arrays"><font color="red">6.6.3.7.3 Variable conformant arrays</font></a></h5>
<p><font color="red">The identifier-list in a variable-conformant-array-specification shall be 
a list of variable conformant arrays. The actual-parameter shall be a variable-access. The actual-parameter 
shall be accessed before the activation of the block, and this access shall establish a reference 
to the variable thereby accessed during the entire activation of the block ; the corresponding formal-parameter 
and its associated variable-identifier shall denote the referenced variable during 
the activation.</font></p>
<p><font color="red">An actual-parameter shall not denote a component of a variable where that 
variable possesses a type that is designated packed.</font></p>
<h4><a name="6.6.3.8 Conformability"><font color="red">6.6.3.8 Conformability</font></a></h4>
<p><font color="red">NOTE -- 1 For the status of this subclause see </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> a</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> b</font></b><font color="red">), </font><b><a href="#5.1 Processors"><font color="red">5.1</font></a><font color="red"> c</font></b><font color="red">), 
</font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> a</font></b><font color="red">), and </font><b><a href="#5.2 Programs"><font color="red">5.2</font></a><font color="red"> b</font></b><font color="red">).</font></p>
<p><font color="red">Given a type denoted by an array-type closest-containing a single index-type 
and a conformantarray- schema closest-containing a single index-type-specification, then the index-type 
and the indextype- specification shall be designated as corresponding. Given two conformant-array-schemas 
closestcontaining a single index-type-specification, then the two index-type-specifications 
shall be designated as corresponding. Let T1 be an array-type with a single index-type and let 
T2 be the type denoted by the ordinal-type-identifier of the index-type-specification of a conformant-array-schema 
closestcontaining a single index-type-specification ; then T1 shall be conformable with the 
conformant-array-schema if all the following four statements are true.</font></p>
<ul>
<p><font color="red">a) The index-type of T1 is compatible with T2.</font></p>
<p><font color="red">b) The smallest and largest values specified by the index-type of T1 lie 
within the closed interval specified by T2.</font></p>
<p><font color="red">c) The component-type of T1 denotes the same type as that denoted by the 
type-identifier of the conformant-array-schema or is conformable to the conformant-array-schema 
in the conformantarray-schema.</font></p>
<p><font color="red">d) Either T1 is not designated packed and the conformant-array-schema is 
an unpacked-conformantarray-schema, or T1 is designated packed and the conformant-array-schema is a packedconformant-array-schema.</font></p>
</ul>
<p><font color="red">NOTE -- 2 The abbreviated and full forms of a conformant-array-schema are 
equivalent (see </font><b><a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a></b><font color="red">). The abbreviated and full forms of an array-type are equivalent (see </font><b><a href="#6.4.3.2 Array-types"><font color="red">6.4.3.2</font></a></b><font color="red">).</font></p>
<p><font color="red">At any place where the rule of conformability is used, it shall be an error 
if the smallest or largest value specified by the index-type of T1 lies outside the closed interval 
specified by T2.</font></p>
<h3><a name="6.6.4 Required procedures and functions">6.6.4 Required procedures and functions</a></h3>
<p>The required procedure-identifiers and function-identifiers and the corresponding 
required procedures and functions shall be as specified in <b><a href="#6.6.5 Required procedures">6.6.5</a></b>, <b><a href="#6.6.6 Required functions">6.6.6</a></b>, and <b><a href="#6.9 Input and output">6.9</a></b>.</p>
<p>NOTE -- Required procedures and functions do not necessarily follow the rules 
given elsewhere for procedures and functions.</p>
<h3><a name="6.6.5 Required procedures">6.6.5 Required procedures</a></h3>
<h4><a name="6.6.5.1 General">6.6.5.1 General</a></h4>
<p>The required procedures shall be file handling procedures, dynamic allocation 
procedures and transfer procedures.</p>
<h4><a name="6.6.5.2 File handling procedures">6.6.5.2 File handling procedures</a></h4>
<p>Except for the application of <b>rewrite</b> or <b>reset</b> to the program parameters 
denoted by <b>input</b> or <b>output</b>, the effects of applying each of the file handling procedures <b>rewrite</b>, 
<b>put</b>, <b>reset</b>, and <b>get</b> to a file-variable f shall be defined by pre-assertions and post-assertions 
about f, its components f.L, f.R, and f.M, and the associated buffer-variable f^. The use of the 
variable f0 within an assertion shall be considered to represent the state or value, as appropriate, of f 
prior to the operation, while f (within an assertion) shall denote the variable after the operation, and 
similarly for f0^ and f^.</p>
<p>It shall be an error if the stated pre-assertion does not hold immediately 
prior to any use of the defined operation. It shall be an error if any variable explicitly denoted 
in an assertion of equality is undefined. The post-assertion shall hold prior to the next subsequent 
access to the file, its components, or its associated buffer-variable. The post-assertions imply 
corresponding activities on the external entities, if any, to which the file-variables are bound. These 
activities, and the point at which they are actually performed, shall be implementation-defined.</p>
<p>NOTE -- In order to facilitate interactive terminal input and output, the 
procedure get (and other input procedures) should be performed at the latest opportunity, and the procedure 
put (and other output procedures) should be performed at the first opportunity. This technique 
has been called 'lazy I/O'.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">rewrite(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">pre-assertion : true.</p>
<p>post-assertion : (f.L = f.R = S( )) and (f.M = Generation) and (f^ is totally-undefined).</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">put(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">pre-assertion : (f0.M = Generation) and (f0.L is not undefined) and (f0.R = S( )) and 
    (f0^ is not undefined).</p>
<p>post-assertion : (f.M = Generation) and (f.L = (f0.L ~ S(f0^)) ) and (f.R 
= S( )) and (f^ is totally-undefined).</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">reset(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">pre-assertion : The components f0.L and f0.R are not undefined.</p>
<p>post-assertion : (f.L = S( )) and (f.R = (f0.L ~ f0.R ~X)) and (f.M = Inspection) and 
    (if f.R = S( ) then (ff is totally-undefined) else (ff = f.R.first)),</p>
<p>where, if f possesses the type denoted by the required type-identifier text 
and if f0.L ~ f0.R is not empty and if (f0.L ~ f0.R).last is not an end-of-line, then X shall 
be a sequence having an end-of-line component as its only component ; otherwise, X = S( ).</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">get(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">pre-assertion : (f0.M = Inspection) and (neither f0.L nor f0.R is undefined) 
and (f0.R &lt;&gt; S( )).</p>
<p>post-assertion : (f.M = Inspection) and (f.L = (f0.L ~ S(f0.R.first))) 
and (f.R = f0.R.rest) and (if f.R = S( ) then (ff is totally-undefined) else (ff= f.R.first)).</p>
</ul>
<p>When the file-variable f possesses a type other than that denoted by text, 
the required procedures read and write shall be defined as follows.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">read</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">Let f denote a file-variable and v l,...,vn denote variable-accesses (n&gt; 
=2) ; then the procedure-statement read(f,v l ,...,v n) shall access the file-variable and establish a reference 
to that filevariable for the remaining execution of the statement. The execution of the statement 
shall be equivalent to</p>
    <ul>
        <pre>begin read(ff,v l ) ; read(ff,v 2 ,...,v n) end</pre>
    </ul>
<p>where ff denotes the referenced file-variable.</p>
<p>Let f be a file-variable and v be a variable-access ; then the procedure-statement 
read(f,v) shall access the file-variable and establish a reference to that file-variable 
for the remaining execution of the statement. The execution of the statement shall be equivalent to</p>
    <ul>
        <pre>begin v := ff^; get(ff) end</pre>
    </ul>
<p>where ff denotes the referenced file-variable.</p>
<p>NOTE -- The variable-access is not a variable parameter. Consequently, it 
may be a component of a packed structure, and the value of the buffer-variable need only be assignment-compatible 
with it.</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">write</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">Let f denote a file-variable and e l,...,en denote expressions (n&gt; 
=2) ; then the procedurestatement write(f,e l ,...,e n ) shall access the file-variable and establish a 
reference to that file-variable for the remaining execution of the statement. The execution of 
the statement shall be equivalent to</p>
    <ul>
        <pre>begin write(ff,e l ) ; write(ff,e 2 ,...,e n) end</pre>
    </ul>
<p>where ff denotes the referenced file-variable.</p>
<p>Let f be a file-variable and e be an expression ; then the procedure-statement 
write(f,e) shall access the file-variable and establish a reference to that file-variable 
for the remaining execution of the statement. The execution of the write statement shall be equivalent 
to</p>
    <ul>
        <pre>begin ff^ := e ; put(ff) end</pre>
    </ul>
<p>where ff denotes the referenced file-variable.</p>
<p>NOTES</p>
<p>1 The required procedures <b>read</b>, <b>write</b>, <b>readln</b>, <b>writeln</b>, and <b>page</b>, as applied 
to textfiles, are described in <b><a href="#6.10 Programs">6.10</a></b>.</p>
<p>2 Since the definitions of read and write include the use of get and put, 
the implementation-defined aspects of their post-assertions also apply.</p>
<p>3 A consequence of the definition of read and write is that the non-file 
parameters are evaluated in a left-to-right order.</p>
</ul>
<h4><a name="6.6.5.3 Dynamic allocation procedures">6.6.5.3 Dynamic allocation procedures</a></h4>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">new(p)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">shall create a new variable that is totally-undefined, shall create a new 
identifying-value of the pointer-type associated with p, that identifies the new variable, and 
shall attribute this identifying-value to the variable denoted by the variable-access p. The 
created variable shall possess the type that is the domain-type of the pointer-type possessed by 
p.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">new(p,c l ,...,cn)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">shall create a new variable that is totally-undefined, shall create a new 
identifying-value of the pointer-type associated with p, that identifies the new variable, and 
shall attribute this identifying-value to the variable denoted by the variable-access p. The 
created variable shall possess the record-type that is the domain-type of the pointer-type possessed 
by p and shall have nested variants that correspond to the case-constants c l,...,cn. The case-constants shall be listed in order of increasing nesting of the variant-parts. Any variant 
not specified shall be at a deeper level of nesting than that specified by cn.</p>
<p>It shall be an error if a variant of a variant-part within the new variable 
is active and a different variant of the variant-part is one of the specified variants.</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">dispose(q)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">shall remove the identifying-value denoted by the expression q from the pointer-type 
of q. It shall be an error if the identifying-value had been created using the form 
new(p,c l ,...,cn).</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">dispose(q,kl ,...,km)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">shall remove the identifying-value denoted by the expression q from the pointer-type 
of q. The case-constants k 1,...,km shall be listed in order of increasing nesting 
of the variant-parts. It shall be an error unless the variable had been created using the form new(p,c 
1 ,...,cn ) and m is equal to n. It shall be an error if the variants in the variable identified 
by the pointer value of q are different from those specified by the values denoted by the case-constants 
k 1,...,km.</p>
</ul>
<p>NOTE -- The removal of an identifying-value from the pointer-type to which 
it belongs renders the identifiedvariable inaccessible (see <b><a href="#6.5.4 Identified-variables">6.5.4</a></b>) and makes undefined all variables and functions 
that have that value attributed (see <b><a href="#6.6.3.2 Value parameters">6.6.3.2</a></b> and <b><a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b>).</p>
<p>It shall be an error if q has a nil-value or is undefined.</p>
<p>It shall be an error if a variable created using the second form of new is 
accessed by the identifiedvariable of the variable-access of a factor, of an assignment-statement, or of an 
actual-parameter.</p>
<h4><a name="6.6.5.4 Transfer procedures">6.6.5.4 Transfer procedures</a></h4>
<p>In the statement pack(a,i,z) and in the statement unpack(z,a,i) the following 
shall hold : a and z shall be variable-accesses ; a shall possess an array-type not designated 
packed ; z shall possess an array-type designated packed ; the component-types of the types of a and 
z shall be the same ; and the value of the expression i shall be assignment-compatible with the index-type 
of the type of a.</p>
<p>Let j and k denote auxiliary variables that the program does not otherwise 
contain and that have the type that is the index-type of the type of z and a, respectively. Let u 
and v denote the smallest and largest values of the index-type of the type of z. Each of the statements 
pack(a,i,z) and unpack(z,a,i) shall establish references to the variables denoted by a and z for the remaining 
execution of the statements ; let aa and zz, respectively, denote the referenced variables 
within the following sentence. Then the statement pack(a,i,z) shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">k := i;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for j := u to v do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> zz[j] := aa[k];</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if j &lt;&gt; v then k := succ(k)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<p>and the statement unpack(z,a,i) shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">k := i;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for j := u to v do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> aa[k] := zz[j];</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if j &lt;&gt; v then k := succ(k)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<p>NOTE -- Errors will arise if the references cannot be established, if one 
or more of the values attributed to j is not assignment-compatible with the index-type of the type of a, or if 
an evaluated array component is undefined.</p>
<h3><a name="6.6.6 Required functions">6.6.6 Required functions</a></h3>
<h4><a name="6.6.6.1 General">6.6.6.1 General</a></h4>
<p>The required functions shall be arithmetic functions, transfer functions, 
ordinal functions, and Boolean functions.</p>
<h4><a name="6.6.6.2 Arithmetic functions">6.6.6.2 Arithmetic functions</a></h4>
<p>For the following arithmetic functions, the expression x shall be either 
of real-type or integer-type. For the functions abs and sqr, the type of the result shall be the same as 
the type of the parameter, x. For the remaining arithmetic functions, the result shall always be of 
real-type. The result shall be as shown in table 2.</p>
<h3 align="center" style="line-height:100%; margin-top:0; margin-bottom:0;">Table 2 -- Arithmetic function results</h3>
<table border="1" style="line-height:100%; margin-top:0; margin-bottom:0;">
    <tr>
        <td width="416">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Function</h3>
        </td>
        <td width="416">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Result</h3>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">abs(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">absolute value of x</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">sqr(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">square of x</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">It shall be an error if such a value does not exist.</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">sin(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">sine of x, where x is in radians</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">cos(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">cosine of x, where x is in radians</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">exp(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">base of natural logarithms raised to the power x</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">ln(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">natural logarithm of x, if x is greater than zero</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">It shall be an error if x is not greater than zero.</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">sqrt(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">non-negative square root of x, if x is not negative</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">It shall be an error if x is negative.</p>
        </td>
    </tr>
    <tr>
        <td width="416">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">arctan(x)</p>
        </td>
        <td width="416"><p style="line-height:100%; margin-top:0; margin-bottom:0;">principal value, in radians, of the arctangent of x</p>
        </td>
    </tr>
</table>
<h4><a name="6.6.6.3 Transfer functions">6.6.6.3 Transfer functions</a></h4>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">trunc(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of real-type, this function shall return 
a result of integertype. The value of trunc(x) shall be such that if x is positive or zero, then 
0 &lt;x-trunc(x) &lt; 1; otherwise, - 1&lt;x-trunc(x) &lt;0. It shall be an error if such a value 
does not exist.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
    <ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  trunc(3.5)  {yields 3}</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  trunc(-3.5) {yields -3}</pre>
    </ul>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">round(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of real-type, this function shall return 
a result of integertype. If x is positive or zero, round(x) shall be equivalent to trunc(x+0.5) 
; otherwise, round(x) shall be equivalent to trunc(x-0.5). It shall be an error if such a value 
does not exist.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
    <ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  round(3.5)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  fyields 4g</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  round(-3.5)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  fyields -4g</pre>
    </ul>
</ul>
<h4><a name="6.6.6.4 Ordinal functions">6.6.6.4 Ordinal functions</a></h4>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">ord(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of an ordinal-type, this function shall 
return a result of integer-type that shall be the ordinal number (see <b>6.4.2.2</b> and <b>6.4.2.3</b>) of the value of the expression x.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">chr(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of integer-type, this function shall 
return a result of chartype that shall be the value whose ordinal number is equal to the value of the 
expression x, if such a character value exists. It shall be an error if such a character 
value does not exist. For any value, ch, of char-type, it shall be true that</p>
    <ul>
<p>chr(ord(ch)) = ch</p>
    </ul>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">succ(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of an ordinal-type, this function shall 
return a result that shall be of the same type as that of the expression (see <b>6.7.1</b>). The function 
shall yield a value whose ordinal number is one greater than that of the expression x, if such 
a value exists. It shall be an error if such a value does not exist.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">pred(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of an ordinal-type, this function shall 
return a result that shall be of the same type as that of the expression (see <b>6.7.1</b>). The function 
shall yield a value whose ordinal number is one less than that of the expression x, if such a 
value exists. It shall be an error if such a value does not exist.</p>
</ul>
<h4><a name="6.6.6.5 Boolean functions">6.6.6.5 Boolean functions</a></h4>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">odd(x)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">From the expression x that shall be of integer-type, this function shall 
be equivalent to the expression</p>
    <ul>
<p>(abs(x) mod 2 = 1).</p>
    </ul>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">eof(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">The parameter f shall be a file-variable ; if the actual-parameter-list is 
omitted, the function shall be applied to the required textfile <b>input</b> (see <b><a href="#6.10 Programs">6.10</a></b>) and the program 
shall contain a program-parameter-list containing an identifier with the spelling input. When eof(f) is activated, it shall be an error if f is undefined ; otherwise, the function 
shall yield the valuetrue if f.R is the empty sequence (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>); otherwise, false.</p>
    <p style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">eoln(f)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">The parameter f shall be a textfile ; if the actual-parameter-list is omitted, 
the function shall be applied to the required textfile <b>input</b> (see 6.10) and the program shall 
contain a program-parameter-list containing an identifier with the spelling input. When eoln(f) 
is activated, it shall be an error if f is undefined or if eof(f) is true ; otherwise, the 
function shall yield the value true if f.R.first is an end-of-line component (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>) ; otherwise, 
false.</p>
</ul>
<h2><a name="6.7 Expressions">6.7 Expressions</a></h2>
<h3><a name="6.7.1 General">6.7.1 General</a></h3>
<p>An expression shall denote a value. The use of a variable-access as a factor 
shall denote the value, if any, attributed to the variable accessed thereby. When a factor 
is used, it shall be an error if the variable denoted by a variable-access of the factor is undefined. Operator precedences shall be according to four classes of operators as follows. The operator 
not shall have the highest precedence, followed by the multiplying-operators, then the adding-operators 
and signs, and finally, with the lowest precedence, the relational-operators. Sequences of two or 
more operators of the same precedence shall be left associative.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">expression = simple-expression [ relational-operator simple-expression ] .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">simple-expression = [ sign ] term { adding-operator term } .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">term = factor { multiplying-operator factor } .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">factor &gt; variable-access | unsigned-constant | function-designator</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">       | set-constructor | '(' expression ')' | 'not' factor .</pre>
</ul>
<p>NOTE -- 1 There is also a syntax rule for factor in <b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b>.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">unsigned-constant = unsigned-number | character-string | constant-identifier | 'nil' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">set-constructor = '[' [ member-designator { ',' member-designator } ] ']' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">member-designator = expression [ '..' expression ] .</pre>
</ul>
<p>Any factor whose type is S, where S is a subrange of T, shall be treated 
as if it were of type T. Similarly, any factor whose type is set of S shall be treated as if it 
were of the unpackedcanonical-set-of-T-type, and any factor whose type is packed set of S shall be treated 
as of the packed-canonical-set-of-T-type.</p>
<p>A set-constructor shall denote a value of a set-type. The set-constructor 
[ ] shall denote the value in every set-type that contains no members. A set-constructor containing 
one or more memberdesignators shall denote either a value of the unpacked-canonical-set-of-T-type or, if 
the contextso requires, the packed-canonical-set-of-T-type, where T is the type of every 
expression of eachmember-designator of the set-constructor. The type T shall be an ordinal-type. The value denotedby the set-constructor shall contain zero or more members, each of which 
shall be denoted by atleast one member-designator of the set-constructor.</p>
<p>The member-designator x, where x is an expression, shall denote the member 
that shall be the value of x. The member-designator x..y, where x and y are expressions, shall 
denote zero or more members that shall be the values of the base-type in the closed interval from the 
value of x to the value of y. The order of evaluation of the expressions of a member-designator shall be implementation-dependent. 
The order of evaluation of the member-designators of a set-constructor shall 
be implementation-dependent.</p>
<p>NOTES</p>
<p>2 The member-designator x..y denotes no members if the value of x is greater 
than the value of y.</p>
<p>3 The set-constructor [ ] does not have a single type, but assumes a suitable 
type to satisfy the assignmentcompatibility rules, or the compatibility rules for operators, if possible.</p>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> a) Factors :</pre>
<ul>
    <ul>
        <ul>
            <ul>
                <ul>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> 15</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> (x + y + z)</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> sin(x + y)</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> [red, c, green]</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> [1, 5, 10..19, 23]</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> not p</pre>
                </ul>
            </ul>
        </ul>
    </ul>
</ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> b) Terms :</pre>
<ul>
    <ul>
        <ul>
            <ul>
                <ul>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x * y</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> i / (1 - i)</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> (x &lt;= y) and (y &lt; z)</pre>
                </ul>
            </ul>
        </ul>
    </ul>
</ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> c) Simple Expressions:</pre>
<ul>
    <ul>
        <ul>
            <ul>
                <ul>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> p or q</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x + y</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> -x</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> hue1 + hue2</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> i * j + 1</pre>
                </ul>
            </ul>
        </ul>
    </ul>
</ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> d) Expressions :</pre>
<ul>
    <ul>
        <ul>
            <ul>
                <ul>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x = 1.5</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> p &lt;= q</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> p = q and r</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> (i &lt; j) = (j &lt; k)</pre>
                        <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> c in hue1</pre>
                </ul>
            </ul>
        </ul>
    </ul>
</ul>
<h3><a name="6.7.2 Operators">6.7.2 Operators</a></h3>
<h4><a name="6.7.2.1 General">6.7.2.1 General</a></h4>
<ul>
<p>multiplying-operator = '*' | '/' | 'div' | 'mod' | 'and'</p>
<p>adding-operator = '+' | '-' | 'or'.</p>
<p>relational-operator = '=' | '&lt;&gt; | '&lt;' | '&gt;' | '&lt;=' |&nbsp;'&gt;=' 
    | 'in'.</p>
</ul>
<p>A factor, a term, or a simple-expression shall be designated an operand. 
The order of evaluation of</p>
<h3 style="line-height:100%; margin-top:0; margin-bottom:0;" align="center">Table 3 | Dyadic arithmetic operations</h3>
<table style="line-height:100%; margin-top:0; margin-bottom:0;" border="1">
    <tr>
        <td width="215">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Operator</h3>
        </td>
        <td width="215">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Operation</h3>
        </td>
        <td width="215">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of operands</h3>
        </td>
        <td width="215">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of result</h3>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">+</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Addition</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type 
            or real type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Integer-type 
            if both operands are of integer-type, otherwise real-type</p>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">-</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Subtraction</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type 
            or real type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">*</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">multiplication</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type 
            or real type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">/</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Division</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type 
            or real type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">real-type</p>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">div</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Division 
            with truncation</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type</p>
        </td>
    </tr>
    <tr>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">mod</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Modulo</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type</p>
        </td>
        <td width="215">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type</p>
        </td>
    </tr>
</table>
<p>&nbsp;</p>
<h3 style="line-height:100%; margin-top:0; margin-bottom:0;" align="center">Table 4 | Monadic arithmetic operations</h3>
<table style="line-height:100%; margin-top:0; margin-bottom:0;" border="1">
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Operator</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Operation</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of operand</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of result</p>
        </td>
    </tr>
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">+</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Identity</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Integer-type</p>
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Real-type</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Integer-type</p>
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Real-type</p>
        </td>
    </tr>
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">-</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Sign-inversion</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Integer-type</p>
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Real-type</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Integer-type</p>
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Real-type</p>
        </td>
    </tr>
</table>
<p>the operands of a dyadic operator shall be implementation-dependent.</p>
<p>NOTE -- This means, for example, that the operands may be evaluated in textual 
order, or in reverse order, or in parallel, or they may not both be evaluated.</p>
<h4><a name="6.7.2.2 Arithmetic operators">6.7.2.2 Arithmetic operators</a></h4>
<p>The types of operands and results for dyadic and monadic operations shall 
be as shown in tables 3 and 4 respectively.</p>
<p>NOTE -- 1 The symbols +, -, and * are also used as set operators (see <b><a href="#6.7.2.4 Set operators">6.7.2.4</a></b>).</p>
<p>A term of the form x/y shall be an error if y is zero ; otherwise, the value 
of x/y shall be the result of dividing x by y.</p>
<p>A term of the form i div j shall be an error if j is zero ; otherwise, the 
value of i div j shall be such that</p>
<ul>
<p>abs(i) - abs(j) &lt; abs((i div j) * j) &lt; = abs(i)</p>
</ul>
<p>where the value shall be zero if abs(i) &lt; abs(j) ; otherwise, the sign 
of the value shall be positive if i and j have the same sign and negative if i and j have different signs.</p>
<p>A term of the form i mod j shall be an error if j is zero or negative ; otherwise, 
the value of i mod j shall be that value of (i-(k*j)) for integral k such that 0 &lt; = i mod 
j &lt; j.</p>
<h3 style="line-height:100%; margin-top:0; margin-bottom:0;" align="center">Table 5 | Set operations</h3>
<table style="line-height:100%; margin-top:0; margin-bottom:0;" border="1">
    <tr>
        <td width="216">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Operator</h3>
        </td>
        <td width="216">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Operation</h3>
        </td>
        <td width="216">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of operands</h3>
        </td>
        <td width="216">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of result</h3>
        </td>
    </tr>
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">+</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Set 
            union</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">The 
            same unpacked-canonical-set-of-T-type or packed-canonical-set-of-T-type 
            (see <b>6.7.1</b>)</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Same 
            as operands</p>
        </td>
    </tr>
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">-</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Set 
            difference</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
    </tr>
    <tr>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">*</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Set 
            intersection</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
        <td width="216">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&quot;&quot;</p>
        </td>
    </tr>
</table>
<p>NOTE -- 2 Only for i &gt;= 0 and j &gt; 0 does the relation (i div j) * j 
+ i mod j = i hold.</p>
<p>The required constant-identifier maxint shall denote an implementation-defined 
value of integertype. This value shall satisfy the following conditions.</p>
<ul>
<p>a) All integral values in the closed interval from -maxint to +maxint shall 
be values of the integer-type.</p>
<p>b) Any monadic operation performed on an integer value in this interval shall 
be correctly performed according to the mathematical rules for integer arithmetic.</p>
<p>c) Any dyadic integer operation on two integer values in this same interval 
shall be correctly performed according to the mathematical rules for integer arithmetic, provided 
that the result is also in this interval.</p>
<p>d) Any relational operation on two integer values in this same interval shall 
be correctly performed according to the mathematical rules for integer arithmetic.</p>
</ul>
<p>The results of integer-to-real conversion, of the real arithmetic operators 
and of the required real functions shall be approximations to the corresponding mathematical results. The accuracy of this approximation shall be implementation-defined.</p>
<p>&nbsp;It shall be an error if an integer operation or function is not performed 
according to the mathematical rules for integer arithmetic.</p>
<h4><a name="6.7.2.3 Boolean operators">6.7.2.3 Boolean operators</a></h4>
<p>Operands and results for Boolean operations shall be of Boolean-type. The 
Boolean operators or, and, and not shall denote respectively the logical operations of disjunction, 
conjunction, and negation.</p>
<ul>
<p>Boolean-expression = expression.</p>
</ul>
<p>A Boolean-expression shall be an expression that denotes a value of Boolean-type.</p>
<h4><a name="6.7.2.4 Set operators">6.7.2.4 Set operators</a></h4>
<p>The types of operands and results for set operations shall be as shown in 
table 5.</p>
<p>Where x denotes a value of the ordinal-type T and u and v are operands of 
a canonical-set-of-T-type, it shall be true for all x that</p>
<h3 style="line-height:100%; margin-top:0; margin-bottom:0;" align="center">Table 6 | Relational operations</h3>
<table style="line-height:100%; margin-top:0; margin-bottom:0;" border="1">
    <tr>
        <td width="290">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Operator</h3>
        </td>
        <td width="290">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of operands</h3>
        </td>
        <td width="290">
            <h3 style="line-height:100%; margin-top:0; margin-bottom:0;">Type 
            of result</h3>
        </td>
    </tr>
    <tr>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">= &lt;&gt;</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Any 
            simple-type, pointer-type, string-type, unpacked-canonical-set-of-T-type 
            or packed-canonical-set-of-T-type</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Boolean-type</p>
        </td>
    </tr>
    <tr>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&lt; 
            &gt;</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Any 
            simple-type or&nbsp;string-type</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Boolean-type</p>
        </td>
    </tr>
    <tr>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">&lt;= 
            &gt;=</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Any 
            simple-type, string-type, unpacked-canonical-set-of-T-type or packed-canonical-set-of-T-type</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Boolean-type</p>
        </td>
    </tr>
    <tr>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">in</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Left 
            operand: any ordinal-type T</p>
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Right 
            operand: the unpacked-canonical-set-of-T-type or packed canonical-set-of-T-type</p>
        </td>
        <td width="290">
            <p style="line-height:100%; margin-top:0; margin-bottom:0;">Boolean-type</p>
        </td>
    </tr>
</table>
<ul>
<p>-- x is a member of the value u+v if and only if it is a member of the value 
of u or a member of the value of v;</p>
<p>-- x is a member of the value u-v if and only if it is a member of the value 
of u and not a member of the value of v;</p>
<p>-- x is a member of the value u*v if and only if it is a member of the value 
of u and a member of the value of v.</p>
</ul>
<h4><a name="6.7.2.5 Relational operators">6.7.2.5 Relational operators</a></h4>
<p>The types of operands and results for relational operations shall be as shown 
in table 6.</p>
<p>The operands of =, &lt;&gt;, &lt;, &gt;, &gt;=, and &lt;= shall be of compatible 
types, or they shall be of the same unpacked-canonical-set-of-T-type or packed-canonical-set-of-T-type, 
or one operand shall be of real-type and the other shall be of integer-type.</p>
<p>The operators =, &lt;&gt;, &lt;, and &gt; shall stand for equal to, not equal 
to, less than, and greater than respectively.</p>
<p>Except when applied to sets, the operators &lt;= and &gt; = shall stand for 
less than or equal to and greater than or equal to respectively. Where u and v denote operands of a 
set-type, u &lt; = v shall denote the inclusion of u in v and u &gt; = v shall denote the inclusion 
of v in u.</p>
<p>NOTE -- Since the Boolean-type is an ordinal-type with false less than true, 
then if p and q are operands of Boolean-type, p = q denotes their equivalence and p &lt;= q means p implies 
q.</p>
<p>When the relational-operators = , &lt;&gt; , &lt; , &gt; , &lt; =, and &gt; 
= are used to compare operands of compatible string-types (see <b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>), they shall denote the lexicographic 
relations defined below. This lexicographic ordering shall impose a total ordering on values of a 
string-type.</p>
<p>If s1 and s2 are two values of compatible string-types and n denotes the 
number of components of the compatible string-types, then</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">s1 = s2 iff for all i in [1..n] : s1[i] = s2[i]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">s1 &lt; s2 iff there exists a p in [1..n]:</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">        (for all i in [1..p-1]:</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">         s1[i] = s2[i]) and s1[p] &lt; s2[p]</pre>
</ul>
<p>The definitions of operations &gt;, &lt;&gt;, &lt; =, and &gt; = are derived 
from the definitions of = and &lt;.</p>
<p>The operator in shall yield the value true if the value of the operand of 
ordinal-type is a member of the value of the set-type ; otherwise, it shall yield the value false.</p>
<h3><a name="6.7.3 Function-designators">6.7.3 Function-designators</a></h3>
<p>A function-designator shall specify the activation of the block of the function-block 
associated with the function-identifier of the function-designator and shall yield the 
value of the result of the activation upon completion of the algorithm of the activation ; it shall 
be an error if the result is undefined upon completion of the algorithm.</p>
<p>NOTE -- When a function activation is terminated by a goto-statement (see 
<b><a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b>), the algorithm of the activation does not complete (see <b><a href="#6.2.3.2">6.2.3.2</a></b> <b>a</b>)), and thus there is no error 
if the result of the activation is undefined.</p>
<p>If the function has any formal-parameters, there shall be an actual parameter-list 
in the functiondesignator. The actual-parameter-list shall be the list of actual-parameters that shall 
be bound to their corresponding formal-parameters defined in the function-declaration. The correspondence shall be established by the positions of the parameters in the lists of actual-parameters 
and formalparameters respectively. The number of actual-parameters shall be equal to the number 
of formalparameters. The types of the actual-parameters shall correspond to the types of the formalparameters 
as specified by <b><a href="#6.6.3 Parameters">6.6.3</a></b>. The order of evaluation, accessing, and binding 
of the actualparameters shall be implementation-dependent.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-designator = function-identifier [ actual-parameter-list ].</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">actual-parameter-list = '(' actual-parameter { ',' actual-parameter } ')'.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">actual-parameter = expression | variable-access | procedure-identifier</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                 | function-identifier.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">Sum(a, 63)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">GCD(147, k)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">sin(x + y)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">eof(f)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">ord(f^)</pre>
</ul>
<h2><a name="6.8 Statements">6.8 Statements</a></h2>
<h3><a name="6.8.1 General">6.8.1 General</a></h3>
<p>Statements shall denote algorithmic actions and shall be executable.</p>
<p>NOTE -- 1 A statement may be pre fixed by a label.</p>
<p>A label, if any, of a statement S shall be designated as pre fixing S. The 
label shall be permitted to occur in a goto-statement G (see <b><a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b>) if and only if any of the 
following three conditions is satisfied.</p>
<ul>
<p>a) S contains G.</p>
<p>b) S is a statement of a statement-sequence containing G.</p>
<p>c) S is a statement of the statement-sequence of the compound-statement of 
the statement-part of a block containing G.</p>
    <ul>
<p>statement = [ label ':' ] ( simple-statement j structured-statement ).</p>
    </ul>
</ul>
<p>NOTE -- 2 A goto-statement within a block may refer to a label in an enclosing 
block, provided that the label prefixes a statement at the outermost level of nesting of the block.</p>
<h3><a name="6.8.2 Simple-statements">6.8.2 Simple-statements</a></h3>
<h4><a name="6.8.2.1 General">6.8.2.1 General</a></h4>
<p>A simple-statement shall be a statement not containing a statement. An empty-statement 
shall contain no symbol and shall denote no action.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">simple-statement = empty-statement | assignment-statement</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                 | procedure-statement | goto-statement .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">empty-statement = .</pre>
</ul>
<h4><a name="6.8.2.2 Assignment-statements">6.8.2.2 Assignment-statements</a></h4>
<p>An assignment-statement shall attribute the value of the expression of the 
assignment-statement either to the variable denoted by the variable-access of the assignment-statement 
or to the activation result that is denoted by the function-identifier of the assignment-statement 
; the value shall be assignment-compatible with the type possessed, respectively, by the variable 
or by the activation result. The function-block associated (see <b><a href="#6.6.2 Function-declarations">6.6.2</a></b>) with the function-identifier 
of an assignment-statement shall contain the assignment-statement.</p>
<ul>
<p>assignment-statement = ( variable-access j function-identifier ) ' :=' expression.</p>
</ul>
<p>The variable-access shall establish a reference to the variable during the 
execution of the assignmentstatement. The order of establishing the reference to the variable and evaluating 
the expression shall be implementation-dependent.</p>
<p>The state of a variable or activation result when the variable or activation 
result does not have attributed to it a value specified by its type shall be designated undefined. 
If a variable possesses a structured-type, the state of the variable when every component of the variable 
is totally-undefined shall be designated <i>totally-undefined</i>. Totally-undefined shall be synonymous 
with undefined for an activation result or a variable that does not possess a structured-type.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">x := y + z</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p := (1 &lt;= i) and (i &lt; 100)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">i := sqr(k) - (i * j)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">hue1 := [blue, succ(c)]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p1&quot;.mother := true</pre>
</ul>
<h4><a name="6.8.2.3 Procedure-statements">6.8.2.3 Procedure-statements</a></h4>
<p>A procedure-statement shall specify the activation of the block of the procedure-block 
associated with the procedure-identifier of the procedure-statement. If the procedure has 
any formal-parameters, the procedure-statement shall contain an actual-parameter-list, which is 
the list of actual-parameters that shall be bound to their corresponding formal-parameters defined in the 
procedure-declaration. The correspondence shall be established by the positions of the parameters 
in the lists of actualparameters and formal-parameters respectively. The number of actual-parameters shall 
be equal to the number of formal-parameters. The types of the actual-parameters shall 
correspond to the typesof the formal-parameters as specified by <b><a href="#6.6.3 Parameters">6.6.3</a></b>.</p>
<p>The order of evaluation, accessing, and binding of the actual-parameters 
shall be implementationdependent.</p>
<p>The procedure-identifier in a procedure-statement containing a read-parameter-list 
shall denote the required procedure read ; the procedure-identifier in a procedure-statement 
containing a readln parameter-list shall denote the required procedure readln ; the procedure-identifier 
in a procedurestatement containing a write-parameter-list shall denote the required procedure write 
; the procedureidentifier in a procedure-statement containing a writeln-parameter-list shall denote 
the required procedure writeln.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-statement = procedure-identifier ( [ actual-parameter-list ]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                    | read-parameter-list | readln-parameter-list</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                    | write-parameter-list | writeln-parameter-list ) .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">printheading</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">transpose(a, n, m)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">bisect(fct, -1.0, +1.0, x)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">AddVectors(m[1], m[2], m[k])</pre>
</ul>
<p>NOTE -- The fourth example is not for level 0.</p>
<h4><a name="6.8.2.4 Goto-statements">6.8.2.4 Goto-statements</a></h4>
<p>A goto-statement shall indicate that further processing is to continue at 
the program-point denoted by the label in the goto-statement and shall cause the termination of all 
activations except</p>
<ul>
<p>a) the activation containing the program-point ; and</p>
<p>b) any activation containing the activation-point of an activation required 
by exceptions a) or b) not to be terminated.</p>
    <ul>
<p>goto-statement = 'goto' label .</p>
    </ul>
</ul>
<h3><a name="6.8.3 Structured-statements">6.8.3 Structured-statements</a></h3>
<h4><a name="6.8.3.1 General">6.8.3.1 General</a></h4>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">structured-statement = compound-statement | conditional-statement</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                     | repetitive-statement | with-statement .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">statement-sequence = statement { ';' statement } .</pre>
</ul>
<p>The execution of a statement-sequence shall specify the execution of the 
statements of the statementsequence in textual order, except as modified by execution of a goto-statement.</p>
<h4><a name="6.8.3.2 Compound-statements">6.8.3.2 Compound-statements</a></h4>
<p>A compound-statement shall specify execution of the statement-sequence of 
the compound-statement.</p>
<ul>
<p>compound-statement = 'begin' statement-sequence 'end' .</p>
</ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin z := x ; x := y ; y := z end</pre>
</ul>
<h4><a name="6.8.3.3 Conditional-statements">6.8.3.3 Conditional-statements</a></h4>
<ul>
<p>conditional-statement = if-statement | case-statement .</p>
</ul>
<h4><a name="6.8.3.4 If-statements">6.8.3.4 If-statements</a></h4>
<ul>
<p>if-statement = 'if' Boolean-expression 'then' statement [ else-part ] .</p>
<p>else-part = 'else' statement .</p>
</ul>
<p>If the Boolean-expression of the if-statement yields the value true, the 
statement of the if-statement shall be executed. If the Boolean-expression yields the value false, the 
statement of the if-statement shall not be executed, and the statement of the else-part, if any, shall 
be executed.</p>
<p>An if-statement without an else-part shall not be immediately followed by 
the token else.</p>
<p>NOTE -- An else-part is thus paired with the nearest preceding otherwise unpaired 
then.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if x &lt; 1.5 then z := x + y else z := 1.5</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if p1 &lt;&gt; nil then p1 := p1^.father</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  if j = 0 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    if i = 0 then writeln( ' indefinite ' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    else writeln( ' infinite ' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  else writeln( i / j )</pre>
</ul>
<h4><a name="6.8.3.5 Case-statements">6.8.3.5 Case-statements</a></h4>
<p>The values denoted by the case-constants of the case-constant-lists of the 
case-list-elements of a case-statement shall be distinct and of the same ordinal-type as the expression 
of the case-index of the case-statement. On execution of the case-statement the case-index 
shall be evaluated. That value shall then specify execution of the statement of the case-list-element 
closest-containing the case-constant denoting that value. One of the case-constants shall be equal 
to the value of the case-index upon entry to the case-statement ; otherwise, it shall be an error.</p>
<p>NOTE -- Case-constants are not the same as statement labels.</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">case-statement = 'case' case-index 'of' case-list-element</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">{ ';' case-list-element } [ ';' ] 'end' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">case-list-element = case-constant-list ':' statement .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">case-index = expression .</pre>
</ul>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">case operator of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  plus:  x := x</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  minus: x := x</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  times: x := x</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<h4><a name="6.8.3.6 Repetitive-statements">6.8.3.6 Repetitive-statements</a></h4>
<p>Repetitive-statements shall specify that certain statements are to be executed 
repeatedly.</p>
<ul>
<p>repetitive-statement = repeat-statement j while-statement j for-statement 
    .</p>
</ul>
<h4><a name="6.8.3.7 Repeat-statements">6.8.3.7 Repeat-statements</a></h4>
<ul>
<p>repeat-statement = 'repeat' statement-sequence 'until' Boolean-expression 
    .</p>
</ul>
<p>The statement-sequence of the repeat-statement shall be repeatedly executed, 
except as modified by the execution of a goto-statement, until the Boolean-expression of the repeat-statement 
yields the value true on completion of the statement-sequence. The statement-sequence 
shall be executed at least once, because the Boolean-expression is evaluated after execution of 
the statement-sequence.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Example:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">repeat</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> k := i mod j ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> i := j;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> j := k</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">until j = 0</pre>
</ul>
<h4><a name="6.8.3.8 While-statements">6.8.3.8 While-statements</a></h4>
<ul>
<p>while-statement = 'while' Boolean-expression 'do' statement.</p>
</ul>
<p>The while-statement</p>
<ul>
<p>while b do body</p>
</ul>
<p>shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if b then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> repeat</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   body</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> until not (b)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">while i &gt; 0 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin if odd(i) then z := z * x;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> i := i div 2;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x := sqr(x)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">while not eof(f) do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin process(f^) ; get(f)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
</ul>
<h4><a name="6.8.3.9 For-statements">6.8.3.9 For-statements</a></h4>
<p>The for-statement shall specify that the statement of the for-statement is 
to be repeatedly executed while a progression of values is attributed to a variable denoted by the 
control-variable of the forstatement. </p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for-statement = 'for' control-variable ':=' initial-value ( 'to' | 'downto' ) final-value</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                'do' statement .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">control-variable = entire-variable .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">initial-value = expression .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">final-value = expression .</pre>
</ul>
<p>The control-variable shall be an entire-variable whose identifi er is declared 
in the variable-declarationpart of the block closest-containing the for-statement. The control-variable 
shall possess an ordinal-type, and the initial-value and final-value shall be of a type compatible 
with this type. The initial-value and the final-value shall be assignment-compatible with the 
type possessed by the control-variable if the statement of the for-statement is executed. After 
a for-statement is executed, other than being left by a goto-statement, the control-variable shall be 
undefined. Neither a forstatement nor any procedure-and-function-declaration-part of the block that closest-contains 
a forstatement shall contain a statement threatening the variable denoted by the control-variable 
of the for-statement.</p>
<p>A statement S shall be designated as threatening a variable V if one or more 
of the following statements is true.</p>
<ul>
<p>a) S is an assignment-statement and V is denoted by the variable-access of 
S.</p>
<p>b) S contains an actual variable parameter that denotes V.</p>
<p>c) S is a procedure-statement that specifies the activation of the required 
procedure read or the required procedure readln, and V is denoted by variable-access of a read-parameter-list 
or readln-parameter-list of S.</p>
<p>d) S is a statement specified using an equivalent program fragment containing 
a statement threatening V.</p>
</ul>
<p>Apart from the restrictions imposed by these requirements, the for-statement</p>
<ul>
    <pre>for v := e1 to e2 do body</pre>
</ul>
<p>shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">temp1 := e1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">temp2 := e2;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if temp1 &lt;= temp2 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> v := temp1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> body;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> while v &lt;&gt; temp2 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   v := succ(v);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   body</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<p>and the for-statement</p>
<ul>
    <pre>for v := e1 downto e2 do body</pre>
</ul>
<p>shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">temp1 := e1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">temp2 := e2;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if temp1 &gt;= temp2 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> v := temp1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> body;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> while v &lt;&gt; temp2 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   v := pred(v);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   body</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end</pre>
</ul>
<p>where temp1 and temp2 denote auxiliary variables that the program does not 
otherwise contain, and that possess the type possessed by the variable v if that type is not 
a subrange-type ; otherwise the host-type of the type possessed by the variable v.</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;"><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for i := 2 to 63 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  if a[i] &gt; max then max := a[i]</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for i := 1 to 10 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for j := 1 to 10 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> x := 0;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> for k := 1 to 10 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  x := x + m1[i,k] * m2[k,j];</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> m[i,j] := x</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for i := 1 to 10 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for j := 1 to i - 1 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">m[i][j] := 0.0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">for c := blue downto red do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> q(c)</pre>
</ul>
<h4><a name="6.8.3.10 With-statements">6.8.3.10 With-statements</a></h4>
<ul>
<p>with-statement = 'with' record-variable-list 'do' statement.</p>
<p>record-variable-list = record-variable { ',' record-variable }</p>
<p>field-designator-identifier = identifier.</p>
</ul>
<p>A with-statement shall specify the execution of the statement of the with-statement. The occurrence of a record-variable as the only record-variable in the record-variable-list 
of a with-statement shall constitute the defining-point of each of the field-identifiers associated 
with components of the record-type possessed by the record-variable as a field-designator-identifier 
for the region that is the statement of the with-statement ; each applied occurrence of a field-designator-identifier 
shall denote that component of the record-variable that is associated with the field-identifier 
by the record-type. The record-variable shall be accessed before the statement of the with-statement 
is executed, and that access shall establish a reference to the variable during the entire 
execution of the statement of the with-statement.</p>
<p>The statement</p>
<ul>
    <pre>with v1,v2,...,vn do s</pre>
</ul>
<p>shall be equivalent to</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">with v1 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> with v2 do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> ...</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   with vn do s</pre>
</ul>
<p><i>Example:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">with date do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if month = 12 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin month := 1 ; year := year + 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> else month := month+1</pre>
</ul>
<p>has the same effect on the variable date as</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if date.month = 12 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin date.month := 1 ; date.year := date.year+1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">else date.month := date.month+1</pre>
</ul>
<h2><a name="6.9 Input and output">6.9 Input and output</a></h2>
<h3><a name="6.9.1 The procedure read">6.9.1 The procedure read</a></h3>
<p>The syntax of the parameter list of read when applied to a textfile shall 
be</p>
<ul>
<p>read-parameter-list = '(' [ file-variable ',' ] variable-access { ',' variable-access 
} ')' .</p>
</ul>
<p>If the file-variable is omitted, the procedure shall be applied to the required 
textfile input, and the program shall contain a program-parameter-list containing an identifier with 
the spelling input.</p>
<p>The requirements of this subclause shall apply for the procedure read when 
applied to a textfile; therein, f shall denote the textfile. The effects of applying read(f,v) 
to the textfile f shall be defined by pre-assertions and post-assertions within the requirements of <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b>. The pre-assertion of read(f,v) shall be the pre-assertion of get(f). Let t denote a sequence of components 
having the char-type ; let r, s, and u each denote a value of the sequence-type defined by the structure 
of the type denoted by text ; if u = S( ), then let t = S( ) ; otherwise, let u.first = end-of-line 
; let w = f0&quot; or w = f0.R.first, where the decision as to which shall be implementation-dependent ; and let 
r ~ s ~ t ~u = w ~ f0.R.rest. The post-assertion of read(f,v) shall be</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">(f.M = f0.M) and (f.L ~ f.R = f0.L ~ f0.R) and (f.R = t ~ u) and</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">(if f.R = S( ) then (f^ is totally-undefined) else (f^ = f.R.first)).</p>
<p>NOTE -- 1 The variable-access is not a variable parameter. Consequently, 
it may be a component of a packed structure, and the value of the buffer-variable need only be assignment-compatible 
with it.</p>
<p>a) For n&gt;=1, read(f,v1 ,...,vn ) shall access the textfile and establish 
a reference to that textfile for the remaining execution of the statement ; each of v1,...,vn shall be a variable-access 
possessing a typethat is the real-type, is a string-type, or is compatible with the char-type 
or with the integer-type. For n&gt;=2, the execution of read(f,v 1 ,...,vn ) shall be equivalent 
to</p>
<ul>
    <pre>begin read(ff,v 1 ) ; read(ff,v 2 ,...,v n) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>b) If v is a variable-access possessing the char-type (or subrange thereof), 
the execution of read(f,v) shall be equivalent to</p>
<ul>
    <pre>begin v := ff^ ; get(ff) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>NOTE -- 2 To satisfy the post-assertions of get and of read(f,v) requires 
r = S( ) and length(s) = 1.</p>
<p>c) If v is a variable-access possessing the integer-type (or subrange thereof), 
read(f,v) shall satisfy the following requirements. No component of s shall equal end-of-line. 
The components of r, if any, shall each, and (s ~ t ~ u).first shall not, equal either the char-type 
value space or end-of-line. Either s shall be empty or s shall, and s ~ S(t.first) shall not, form a signed-integer 
according to the syntax of <b><a href="#6.1.5 Numbers">6.1.5</a></b>. It shall be an error if s is empty. The value of the signed-integer 
thus formed shall be assignment-compatible with the type possessed by v and shall be attributed 
to v.</p>
<p>NOTE -- 3 The sequence r represents any spaces and end-of-lines to be skipped, 
and the sequence s represents the signed-integer to be read.</p>
<p>d) If v is a variable-access possessing the real-type, read(f,v) shall satisfy 
the following requirements. No component of s shall equal end-of-line. The components of r, if any, 
shall each, and (s ~t ~u).first shall not, equal either the char-type value space or end-of-line. Either 
s shall be empty or s shall, and s ~ S(t.first) shall not, form a signed-number according to the syntax 
of <b><a href="#6.1.5 Numbers">6.1.5</a></b>. It shall be an error if s is empty. The value denoted by the number thus formed shall be 
attributed to the variable v.</p>
<p>NOTE -- 4 The sequence r represents any spaces and end-of-lines to be skipped, 
and the sequence s represents the number to be read.</p>
<h3><a name="6.9.2 The procedure readln">6.9.2 The procedure readln</a></h3>
<p>The syntax of the parameter list of <b>readln</b> shall be</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">readln-parameter-list = [ '(' ( file-variable | variable-access )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        { ',' variable-access } ')' ] .</pre>
</ul>
<p>Readln shall only be applied to textfiles. If the file-variable or the entire 
readln-parameter-list is omitted, the procedure shall be applied to the required textfile input, and 
the program shall contain a program-parameter-list containing an identifier with the spelling input.</p>
<p>Readln(f,v 1 ,...,v n ) shall access the textfile and establish a reference 
to that textfile for the remaining execution of the statement. The execution of the statement shall be equivalent 
to</p>
<ul>
    <pre>begin read(ff,v 1 ,...,vn ) ; readln(ff) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>Readln(f) shall access the textfile and establish a reference to that textfile 
for the remaining execution of the statement. The execution of the statement shall be equivalent to</p>
<ul>
    <pre>begin while not eoln(ff) do get(ff) ; get(ff) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>NOTES</p>
<p>1 The effect of readln is to place the current file position just past the 
end of the current line in the textfile. Unless this is the end-of-file position, the current file position is therefore 
at the start of the next line.</p>
<p>2 Because the definition of readln makes use of get, the implementation-defined 
aspects of the post-assertion of get also apply (see <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b>).</p>
<h3><a name="6.9.3 The procedure write">6.9.3 The procedure write</a></h3>
<p>The syntax of the parameter list of write when applied to a textfile shall 
be</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">write-parameter-list = '(' [ file-variable ',' ] write-parameter</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                       { ',' write-parameter } ')' .</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">write-parameter = expression [ ':' expression [ ':' expression ] ] .</pre>
</ul>
<p>If the file-variable is omitted, the procedure shall be applied to the required 
textfile output, and the program shall contain a program-parameter-list containing an identifier with 
the spelling output. When write is applied to a textfile f, it shall be an error if f is undefined 
or f.M = Inspection (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>).</p>
<p>For n&gt;=1, write(f,p 1 ,...,p n ) shall access the textfile and establish 
a reference to that textfile for the remaining execution of the statement. For n &gt;=2, the execution of the 
statement shall be equivalent to</p>
<ul>
    <pre>begin write(ff,p 1 ) ; write(ff,p2 ,...,p n ) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>Write(f,p), where f denotes a textfile and p is a write-parameter, shall 
write a sequence of zero or more characters on the textfile f ; for each character c in the sequence, 
the equivalent of</p>
<ul>
    <pre>begin ff^ := c; put(ff) end</pre>
</ul>
<p>where ff denotes the referenced textfile, shall be applied to the textfile 
f. The sequence of characters written shall be a representation of the value of the first expression in 
the write-parameter p, as specified in the remainder of this subclause.</p>
<p>NOTE -- Because the de fi nition of write includes the use of put, the implementation-de 
fined aspects of the post-assertion of put also apply (see <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b>).</p>
<h4><a name="6.9.3.1 Write-parameters">6.9.3.1 Write-parameters</a></h4>
<p>A write-parameter shall have one of the following forms</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">e : TotalWidth : FracDigits</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">e : TotalWidth</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">e</p>
</ul>
<p>where e shall be an expression whose value is to be written on the file f 
and shall be of integertype, real-type, char-type, Boolean-type, or a string-type, and where TotalWidth 
and FracDigits shall be expressions of integer-type whose values shall be the field-width 
parameters. The values of TotalWidth and FracDigits shall be greater than or equal to one ; it shall 
be an error if either value is less than one.</p>
<p>Write(f,e) shall be equivalent to the form write(f,e : TotalWidth), using 
a default value for TotalWidth that depends on the type of e ; for integer-type, real-type, and Boolean-type, 
the default values shall be implementation-defined.</p>
<p>Write(f,e : TotalWidth : FracDigits) shall be applicable only if e is of 
real-type (see <b><a href="#6.9.3.4.2 The fixed-point representation">6.9.3.4.2</a></b>).</p>
<h4><a name="6.9.3.2 Char-type">6.9.3.2 Char-type</a></h4>
<p>If e is of char-type, the default value of TotalWidth shall be one. The 
representation written on the file f shall be</p>
<ul>
<p>(TotalWidth - 1) spaces, the character value of e.</p>
</ul>
<h4><a name="6.9.3.3 Integer-type">6.9.3.3 Integer-type</a></h4>
<p>If e is of integer-type, the decimal representation of the value of e shall 
be written on the file f. Assume a function</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function IntegerSize ( x : integer ) : integer ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> { returns the number of digits, z, such that</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  10 to the power (z - 1) &lt; abs(x) &lt; 10 to the power z }</pre>
</ul>
<p>and let IntDigits be the positive integer defined by</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if e = 0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">then IntDigits := 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">else IntDigits := IntegerSize(e);</pre>
</ul>
<p>then the representation shall consist of</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">a) if TotalWidth &gt; = IntDigits + 1:</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     (TotalWidth - IntDigits - 1) spaces,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     the sign character: '-' if e &lt; 0, otherwise a space,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     IntDigits digit-characters of the decimal representation of abs(e).</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">b) if TotalWidth &lt; IntDigits + 1:</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     if e &lt; 0 the sign character '- ',</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     IntDigits digit-characters of the decimal representation of abs(e).</pre>
</ul>
<h4><a name="6.9.3.4 Real-type">6.9.3.4 Real-type</a></h4>
<p>If e is of real-type, a decimal representation of the value of e, rounded 
to the specified number of significant figures or decimal places, shall be written on the file f.</p>
<h5><a name="6.9.3.4.1 The floating-point representation">6.9.3.4.1 The floating-point representation</a></h5>
<p>Write(f,e : TotalWidth) shall cause aoating-point representation of the value 
of e to be written. Assume functions</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function TenPower ( Int : integer ) : real ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> { Returns 10.0 raised to the power Int }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function RealSize ( y : real ) : integer ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> { Returns the value, z, such that TenPower(z - 1) &lt; abs(y) &lt;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   TenPower(z) }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">function Truncate ( y : real ; DecPlaces : integer ) : real ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> { Returns the value of y after truncation to DecPlaces decimal places }</pre>
</ul>
<p>let ExpDigits be an implementation-defined value representing the number 
of digit-characters written in an exponent;</p>
<p>let ActWidth be the positive integer defined by</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if TotalWidth &gt; = ExpDigits + 6</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  then ActWidth := TotalWidth</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  else ActWidth := ExpDigits + 6;</pre>
</ul>
<p>and let the non-negative number eWritten, the positive integer DecPlaces, 
and the integer ExpValue be defined by</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">DecPlaces := ActWidth - ExpDigits - 5;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if e = 0.0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   then begin eWritten := 0.0 ; ExpValue := 0 end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   else</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    eWritten := abs(e);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    ExpValue := RealSize ( eWritten ) - 1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    eWritten := eWritten / TenPower ( ExpValue );</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    eWritten := eWritten + 0.5 * TenPower ( -DecPlaces );</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    if eWritten &gt; = 10.0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">       eWritten := eWritten / 10.0;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">       ExpValue := ExpValue + 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    eWritten := Truncate ( eWritten, DecPlaces )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   end ;</pre>
</ul>
<p>then the floating-point representation of the value of e shall consist of</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the sign character</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   ( '-' if (e &lt; 0.0) and (eWritten &gt; 0.0), otherwise a space ),</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the leading digit-character of the decimal representation of eWritten,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the character '.' ,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the next DecPlaces digit-characters of the decimal representation of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   eWritten,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">an implementation-defined exponent character</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   (either 'e' or 'E'),</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the sign of ExpValue</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   ( '-' if ExpValue &lt; 0, otherwise '+' ),</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the ExpDigits digit-characters of the decimal representation of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   ExpValue (with leading zeros if the value requires them).</pre>
</ul>
<h5><a name="6.9.3.4.2 The fixed-point representation">6.9.3.4.2 The fixed-point representation</a></h5>
<p>Write(f,e : TotalWidth : FracDigits) shall cause a fixed-point representation 
of the value of e to be written. Assume the functions TenPower, RealSize, and Truncate described 
in <b><a href="#6.9.3.4.1 The floating-point representation">6.9.3.4.1</a></b>;</p>
<p>let eWritten be the non-negative number defined by</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if e = 0.0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> then eWritten := 0.0</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> else</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  eWritten := abs(e);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  eWritten := eWritten + 0.5 * TenPower ( - FracDigits );</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  eWritten := Truncate ( eWritten, FracDigits )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end;</pre>
</ul>
<p>let IntDigits be the positive integer defined by</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if RealSize ( eWritten ) &lt; 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> then IntDigits := 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> else IntDigits := RealSize ( eWritten );</pre>
</ul>
    <pre>and let MinNumChars be the positive integer defined by</pre>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">MinNumChars := IntDigits + FracDigits + 1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if (e &lt; 0.0) and (eWritten &gt; 0.0)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> then MinNumChars := MinNumChars + 1 ; {'-' required}</pre>
</ul>
<p>then the fixed-point representation of the value of e shall consist of</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if TotalWidth &gt; = MinNumChars,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    (TotalWidth - MinNumChars) spaces,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the character '-' if (e &lt; 0.0) and (eWritten &gt; 0.0),</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the first IntDigits digit-characters of the decimal representation of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    the value of eWritten,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the character '.',</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the next FracDigits digit-characters of the decimal representation of</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    the value of eWritten.</pre>
</ul>
<p>NOTE -- At least MinNumChars characters are written. If TotalWidth is less 
than this value, no initial spaces are written.</p>
<h4><a name="6.9.3.5 Boolean-type">6.9.3.5 Boolean-type</a></h4>
<p>If e is of Boolean-type, a representation of the word true or the word false 
(as appropriate to the value of e) shall be written on the file f. This shall be equivalent to writing 
the appropriate character-string ' True ' or ' False ' (see <b><a href="#6.9.3.6 String-types">6.9.3.6</a></b>), where the case of each letter is 
implementation-defined, with a field-width parameter of TotalWidth.</p>
<h4><a name="6.9.3.6 String-types">6.9.3.6 String-types</a></h4>
<p>If the type of e is a string-type with n components, the default value of 
TotalWidth shall be n. The representation shall consist of</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if TotalWidth &gt; n,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> (TotalWidth - n) spaces,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">the first through n-th characters of the value of e in that order.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">if 1 &lt;= TotalWidth &lt;= n,</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> the first through TotalWidth-th characters in that order.</pre>
</ul>
<h3><a name="6.9.4 The procedure writeln">6.9.4 The procedure writeln</a></h3>
<p>The syntax of the parameter list of writeln shall be</p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">writeln-parameter-list = [ '(' ( file-variable j write-parameter )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         { ',' write-parameter g ')' ] .</pre>
</ul>
<p>Writeln shall only be applied to textfiles. If the file-variable or the 
writeln-parameter-list is omitted, the procedure shall be applied to the required textfile output, and the program 
shall contain a program-parameter-list containing an identifier with the spelling output.</p>
<p>Writeln(f,p 1 ,...,p n ) shall access the textfile and establish a reference 
to that textfile for the remaining execution of the statement. The execution of the statement shall be equivalent 
to</p>
<ul>
    <pre>begin write(ff,p 1 ,...,pn) ; writeln(ff) end</pre>
</ul>
<p>where ff denotes the referenced textfile.</p>
<p>Writeln shall be defined by a pre-assertion and a post-assertion using the 
notation of <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b>.</p>
<p>pre-assertion : (f0 is not undefined) and (f0.M = Generation) and (f0.R 
= S( )).</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">post-assertion : (f.L = (f0.L ~ S(end-of-line))) and (f^ is totally-undefined)</p>
<ul>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">and (f.R = S( )) and (f.M = Generation),</p>
<p style="line-height:100%; margin-top:0; margin-bottom:0;">where S(e) is the sequence consisting solely of the end-of-line component 
defined in <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>.</p>
</ul>
<p>NOTE -- Writeln(f) terminates the partial line, if any, that is being generated. By the conventions of <b><a href="#6.6.5.2 File handling procedures">6.6.5.2</a></b> it is an error if the pre-assertion is not true prior to writeln(f).</p>
<h3><a name="6.9.5 The procedure page">6.9.5 The procedure page</a></h3>
<p>It shall be an error if the pre-assertion required for writeln(f) (see <b><a href="#6.9.4 The procedure writeln">6.9.4</a></b>) does not hold prior to the activation of page(f). If the actual-parameter-list is omitted, the 
procedure shall be applied to the required textfile output, and the program shall contain a program-parameter-list 
containing an identifier with the spelling output. Page(f) shall cause an implementation-defined 
effect on the textfile f, such that subsequent text written to f will be on a new page 
if the textfile is printed on a suitable device, shall perform an implicit writeln(f) if f.L is not empty 
and if f.L.last is not the endof-line component (see <b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>), and shall cause the buffer-variable f^ 
to become totally-undefined. The effect of inspecting a textfile to which the page procedure was applied 
during generation shall be implementation-dependent.</p>
<h2><a name="6.10 Programs">6.10 Programs</a></h2>
<ul>
<p>program = program-heading ' ;' program-block '.' .</p>
<p>program-heading = 'program' identifier [ '(' program-parameter-list ')'] 
     
    .</p>
<p>program-parameter-list = identifier-list .</p>
<p>program-block = block .</p>
</ul>
<p>The identifier of the program-heading shall be the program name. It shall 
have no significance within the program. The identifiers contained by the program-parameter-list 
shall be distinct and shall be designated program-parameters. Each program-parameter shall have 
a defining-point as a variable-identifier for the region that is the program-block. The binding 
of the variables denoted by the program-parameters to entities external to the program shall be implementation-dependent, 
except if the variable possesses a file-type in which case the binding shall 
be implementation-defined.</p>
<p>NOTE -- The external representation of such external entities is not defined 
by this International Standard.</p>
<p>The execution of any action, operation, or function, defined within clause 
6 to operate on a variable, shall be an error if the variable is a program-parameter and, as a result 
of the binding of the program-parameter, the execution cannot be completed as defined.</p>
<p>The occurrence of the required identifier input or output as a program-parameter 
shall constitute its defining-point for the region that is the program-block as a variable-identifier 
of the required type denoted by the required type-identifier text. Such occurrence of the identifier 
input shall cause the post-assertions of reset to hold, and of output, the post-assertions 
of rewrite to hold, prior to the first access to the textfile or its associated buffer-variable. The 
effect of the application of the required procedure reset or the required procedure rewrite to either 
of these textfiles shall be implementation-defined.</p>
<p><i>Examples:</i></p>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">program copy (f, g);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var f, g : file of real;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin reset(f) ; rewrite(g);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">     while not eof(f) do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">       begin g&quot; := f^ ; get(f) ; put(g)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">       end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">program copytext (input, output);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> {This program copies the characters and line structure of the textfile</pre>
</ul>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> input to the textfile output. g</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> var ch : char;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    while not eof do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      while not eoln do</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">        begin read(ch) ; write(ch)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">        end;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">      readln; writeln</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end.</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">program t6p6p3p4 (output);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">var globalone, globaltwo : integer;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure dummy ;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">writeln( ' fail4 ' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end { of dummy 1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure p (procedure f(procedure ff ; procedure gg) ; procedure g);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> var localtop : integer;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> procedure r;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  begin { r }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  if globalone = 1 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   if (globaltwo &lt;&gt;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    writeln( ' fail1' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  else if globalone = 2 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   if (globaltwo &lt;&gt; 2) or (localtop &lt;&gt; 2) then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    writeln( ' fail2 ' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   else</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">    writeln( ' pass ' )</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   end</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  else</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">   writeln( ' fail3 ' );</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  globalone := globalone + 1</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  end { of r ~;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin { of p }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> globaltwo := globaltwo + 1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> localtop := globaltwo;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> if globaltwo = 1 then</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  p(f, r)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> else</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">  f(g, r)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end { of p};</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure q (procedure f ; procedure g);</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> begin</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> f;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> g</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;"> end { of q};</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">begin { of t6p6p3p4 }</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">globalone := 1;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">globaltwo := 0;</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">p(q, dummy)</pre>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">end. { of t6p6p3p4 }</pre>
</ul>
<h1 align="center"><a name="Annex A">Annex A</a></h1>
<p align="center">(Informative)</p>
<h2 align="center">Collected syntax</h2>
<p>The nonterminal symbols pointer-type, program, signed-number, simple-type, 
special-symbol, and structured-type are only referenced by the semantics and are not used in 
the right-hand-side of any production. The nonterminal symbol program is the start symbol of the grammar.</p>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.7.3 Function-designators">6.7.3</a></b>       actual-parameter = expression | variable-access | procedure-identifier</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                             | function-identifier.</pre>
<pre><a href="#6.7.3 Function-designators"><b>6.7.3</b></a>       actual-parameter-list = '(' actual-parameter { ',' actual-parameter } ')' .</pre>
<pre><a href="#6.7.2.1 General"><b>6.7.2.1</b></a>     adding-operator = '+' | '-' | 'or' .</pre>
<pre><b><a href="#6.1.7 Character-strings">6.1.7</a></b>       apostrophe-image = '&quot;' .</pre>
<pre><b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>     array-type = 'array' '[' index-type { ',' index-type } ']' 'of' component-type .</pre>
<pre><b><a href="#6.5.3.2 Indexed-variables">6.5.3.2</a></b>     array-variable = variable-access .</pre>
<pre><b><a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b>     assignment-statement = ( variable-access | function-identifier ) ':=' expression .</pre>
<pre><b><a href="#6.4.3.4 Set-types">6.4.3.4</a></b>     base-type = ordinal-type .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.2.1 Blocks">6.2.1</a></b>       block = label-declaration-part constant-definition-part type-definition-part</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                    variable-declaration-part procedure-and-function-declaration-part</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                    statement-part .</pre>
<pre><b><a href="#6.7.2.3 Boolean operators">6.7.2.3</a></b>     Boolean-expression = expression .</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   bound-identifier = identifier .</font></pre>
<pre><b><a href="#6.5.5 Buffer-variables">6.5.5</a></b>       buffer-variable = file-variable '&quot;' .</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     case-constant = constant .</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     case-constant-list = case-constant { ',' case-constant } .</pre>
<pre><b><a href="#6.8.3.5 Case-statements">6.8.3.5</a></b>     case-index = expression .</pre>
<pre><b><a href="#6.8.3.5 Case-statements">6.8.3.5</a></b>     case-list-element = case-constant-list ':' statement .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.8.3.5 Case-statements">6.8.3.5</a></b>     case-statement = 'case' case-index 'of' case-list-element</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                             { ';' case-list-element } [ ';' ] 'end' .</pre>
<pre><b><a href="#6.1.7 Character-strings">6.1.7</a></b>       character-string = ''' string-element { string-element } '''</pre>
<pre><b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>     component-type = type-denoter .</pre>
<pre><b><a href="#6.5.3.1 General">6.5.3.1</a></b>     component-variable = indexed-variable | field-designator.</pre>
<pre><b><a href="#6.8.3.2 Compound-statements">6.8.3.2</a></b>     compound-statement = 'begin' statement-sequence 'end'.</pre>
<pre><b><a href="#6.8.3.3 Conditional-statements">6.8.3.3</a></b>     conditional-statement = if-statement | case-statement.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   conformant-array-parameter-specification = value-conformant-array-specification</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                                                     | variable-conformant-array-specification.</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">&nbsp;</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   conformant-array-schema = packed-conformant-array-schema</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                                    | unpacked-conformant-array-schema.</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.3 Constant-definitions">6.3</a></b>         constant = [ sign ] ( unsigned-number | constant-identifier )</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                     | character-string.</pre>
<pre><b><a href="#6.3 Constant-definitions">6.3</a></b>         constant-definition = identifier '=' constant.</pre>
<pre><b><a href="#6.2.1 Blocks">6.2.1</a></b>       constant-definition-part = [ 'const' constant-definition ';' { constant-definition ';' } ] .</pre>
<pre><b><a href="#6.3 Constant-definitions">6.3</a></b>         constant-identifier = identifier .</pre>
<pre><b><a href="#6.8.3.9 For-statements">6.8.3.9</a></b>     control-variable = entire-variable .</pre>
<pre><b><a href="#6.1.1 General">6.1.1</a></b>       digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' .</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       digit-sequence = digit { digit } .</pre>
<pre><b><a href="#6.1.4 Directives">6.1.4</a></b>       directive = letter { letter | digit }.</pre>
<pre><b><a href="#6.4.4 Pointer-types">6.4.4</a></b>       domain-type = type-identifier.</pre>
<pre><b><a href="#6.8.3.4 If-statements">6.8.3.4</a></b>     else-part = 'else' statement.</pre>
<pre><b><a href="#6.8.2.1 General">6.8.2.1</a></b>     empty-statement =.</pre>
<pre><b><a href="#6.5.2 Entire-variables">6.5.2</a></b>       entire-variable = variable-identifier.</pre>
<pre><b><a href="#6.4.2.3 Enumerated-types">6.4.2.3</a></b>     enumerated-type = '(' identifier-list ')'.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       expression = simple-expression [ relational-operator simple-expression ].</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   factor &gt; bound-identifier.</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.7.1 General">6.7.1</a></b>       factor &gt; variable-access | unsigned-constant | function-designator</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                   | set-constructor | '(' expression ')' | 'not' factor.</pre>
<pre><b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>     field-designator = record-variable '.' field-specifier | field-designator-identifier.</pre>
<pre><b><a href="#6.8.3.10 With-statements">6.8.3.10</a></b>    field-designator-identifier = identifier.</pre>
<pre><b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>     field-identifier = identifier.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     field-list = [ ( fixed-part [ ';' variant-part ] | variant-part ) [ ';' ] ].</pre>
<pre><b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>     field-specifier = field-identifier.</pre>
<pre><b><a href="#6.4.3.5 File-types">6.4.3.5</a></b>     file-type = 'file' 'of' component-type.</pre>
<pre><b><a href="#6.5.5 Buffer-variables">6.5.5</a></b>       file-variable = variable-access.</pre>
<pre><b><a href="#6.8.3.9 For-statements">6.8.3.9</a></b>     final-value = expression.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     fixed-part = record-section { ';' record-section } .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.8.3.9 For-statements">6.8.3.9</a></b>     for-statement = 'for' control-variable ':=' initial-value ( 'to' | 'downto' ) final-value</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                            'do' statement.</pre>
<pre><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     formal-parameter-list = '(' formal-parameter-section { ';' formal-parameter-section } ')' .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     formal-parameter-section &gt; value-parameter-specification</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                     | variable-parameter-specification</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                     | procedural-parameter-specification</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                     | functional-parameter-specification.</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   formal-parameter-section &gt; conformant-array-parameter-specification.</font></pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       fractional-part = digit-sequence.</pre>
<pre><b><a href="#6.6.2 Function-declarations">6.6.2</a></b><a href="#6.6.2 Function-declarations"> </a>      function-block = block.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.2 Function-declarations">6.6.2</a></b>       function-declaration = function-heading ';'directive</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                 | function-identification ';' function-block</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                 | function-heading ';' function-block.</pre>
<pre><b><a href="#6.7.3 Function-designators">6.7.3</a></b>       function-designator = function-identifier [ actual-parameter-list ].</pre>
<pre><b><a href="#6.6.2 Function-declarations">6.6.2</a></b>       function-heading = 'function' identifier [ formal-parameter-list ] ':' result-type.</pre>
<pre><b><a href="#6.6.2 Function-declarations">6.6.2</a></b>       function-identification = 'function' function-identifier.</pre>
<pre><b><a href="#6.6.2 Function-declarations">6.6.2</a></b>       function-identifier = identifier.</pre>
<pre><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     functional-parameter-specification = function-heading.</pre>
<pre><b><a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b>     goto-statement = 'goto' label.</pre>
<pre><b><a href="#6.5.4 Identified-variables">6.5.4</a></b>       identified-variable = pointer-variable '&quot;'.</pre>
<pre><b><a href="#6.1.3 Identifiers">6.1.3</a></b>       identifier = letter { letter | digit }.</pre>
<pre><b><a href="#6.4.2.3 Enumerated-types">6.4.2.3</a></b>     identifier-list = identifier { ',' identifier }.</pre>
<pre><b><a href="#6.8.3.4 If-statements">6.8.3.4</a></b>     if-statement = 'if' Boolean-expression 'then' statement [ else-part ].</pre>
<pre><b><a href="#6.5.3.2 Indexed-variables">6.5.3.2</a></b>     index-expression = expression.</pre>
<pre><b><a href="#6.4.3.2 Array-types">6.4.3.2</a></b>     index-type = ordinal-type.</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   index-type-specification = identifier '..' identifier ':' ordinal-type-identifier.</font></pre>
<pre><b><a href="#6.5.3.2 Indexed-variables">6.5.3.2</a></b>     indexed-variable = array-variable '[' index-expression, { ',' index-expression } ']' .</pre>
<pre><b><a href="#6.8.3.9 For-statements">6.8.3.9</a></b>     initial-value = expression.</pre>
<pre><b><a href="#6.1.6 Labels">6.1.6</a></b>       label = digit-sequence.</pre>
<pre><b><a href="#6.2.1 Blocks">6.2.1</a></b>       label-declaration-part = [ 'label' label { ',' label } ';' ] .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.1.1 General">6.1.1</a></b>       letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                   | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                   | 'u' | 'v' | 'w' | 'x' | 'y' | 'z'.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       member-designator = expression [ '..' expression ].</pre>
<pre><b><a href="#6.7.2.1 General">6.7.2.1</a></b>     multiplying-operator = '*' | '/' | 'div' | 'mod' | 'and'.</pre>
<pre><b><a href="#6.4.2.1 General">6.4.2.1</a></b>     new-ordinal-type = enumerated-type | subrange-type.</pre>
<pre><b><a href="#6.4.4 Pointer-types">6.4.4</a></b><a href="#6.4.4 Pointer-types"> </a>      new-pointer-type = '^' domain-type.</pre>
<pre><b><a href="#6.4.3.1 General">6.4.3.1</a></b>     new-structured-type = [ 'packed' ] unpacked-structured-type.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       new-type = new-ordinal-type | new-structured-type | new-pointer-type.</pre>
<pre><b><a href="#6.4.2.1 General">6.4.2.1</a></b>     ordinal-type = new-ordinal-type | ordinal-type-identifier.</pre>
<pre><b><a href="#6.4.2.1 General">6.4.2.1</a></b>     ordinal-type-identifier = type-identifier.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   packed-conformant-array-schema = 'packed' 'array' '[' index-type-specification ']'</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                                             'of' type-identifier.</font></pre>
<pre><b><a href="#6.4.4 Pointer-types">6.4.4</a></b>       pointer-type = new-pointer-type | pointer-type-identifier.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       pointer-type-identifier = type-identifier.</pre>
<pre><b><a href="#6.5.4 Identified-variables">6.5.4</a></b>       pointer-variable = variable-access.</pre>
<pre><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     procedural-parameter-specification = procedure-heading.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.2.1 Blocks">6.2.1</a></b>       procedure-and-function-declaration-part = { ( procedure-declaration</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                                        | function-declaration ) ';' } .</pre>
<pre><b><a href="#6.6.1 Procedure-declarations">6.6.1</a> </b>      procedure-block = block.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b>       procedure-declaration = procedure-heading ';' directive</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                  | procedure-identification ';' procedure-block</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                  | procedure-heading ';' procedure-block .</pre>
<pre><b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b>       procedure-heading = 'procedure' identifier [ formal-parameter-list ].</pre>
<pre><b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b>       procedure-identification = 'procedure' procedure-identifier.</pre>
<pre><b><a href="#6.6.1 Procedure-declarations">6.6.1</a></b>       procedure-identifier = identifier.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b>     procedure-statement = procedure-identifier ( [ actual-parameter-list ]</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                  | read-parameter-list | readln-parameter-list</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                  | write-parameter-list | writeln-parameter-list ) .</pre>
<pre><b><a href="#6.10 Programs">6.10</a></b>        program = program-heading ';' program-block '.'.</pre>
<pre><b><a href="#6.10 Programs">6.10</a></b>        program-block = block.</pre>
<pre><b><a href="#6.10 Programs">6.10</a></b>        program-heading = 'program' identifier [ '(' program-parameter-list ')' ] .</pre>
<pre><b><a href="#6.10 Programs">6.10</a></b>        program-parameter-list = identifier-list.</pre>
<pre><b><a href="#6.9.1 The procedure read">6.9.1</a></b>       read-parameter-list = '(' [ file-variable ',' ] variable-access { ',' variable-access } ')' .</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.9.2 The procedure readln">6.9.2</a></b>       readln-parameter-list = [ '(' ( file-variable | variable-access )</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                    { ',' variable-access } ')' ].</pre>
<pre><b><a href="#6.4.2.1 General">6.4.2.1</a></b>     real-type-identifier = type-identifier.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     record-section = identifier-list ':' type-denoter.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     record-type = 'record' field-list 'end'.</pre>
<pre><b><a href="#6.5.3.3 Field-designators">6.5.3.3</a></b>     record-variable = variable-access.</pre>
<pre><b><a href="#6.8.3.10 With-statements">6.8.3.10</a></b>    record-variable-list = record-variable { ',' record-variable }.</pre>
<pre><b><a href="#6.7.2.1 General">6.7.2.1</a></b>     relational-operator = '=' | '&lt;&gt;' | '&lt;' | '&gt;' | '&lt;=' | '&gt;=' | 'in'.</pre>
<pre><b><a href="#6.8.3.7 Repeat-statements">6.8.3.7</a></b>     repeat-statement = 'repeat' statement-sequence 'until' Boolean-expression.</pre>
<pre><b><a href="#6.8.3.6 Repetitive-statements">6.8.3.6</a></b>     repetitive-statement = repeat-statement | while-statement | for-statement.</pre>
<pre><b><a href="#6.6.2 Function-declarations">6.6.2</a></b>       result-type = simple-type-identifier | pointer-type-identifier.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       scale-factor = [ sign ] digit-sequence.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       set-constructor = '[' [ member-designator { ',' member-designator } ] ']'.</pre>
<pre><b><a href="#6.4.3.4 Set-types">6.4.3.4</a></b>     set-type = 'set' 'of' base-type.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       sign = '+' | '-'.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       signed-integer = [ sign ] unsigned-integer.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       signed-number = signed-integer | signed-real.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       signed-real = [ sign ] unsigned-real.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       simple-expression = [ sign ] term { adding-operator term }.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.8.2.1 General">6.8.2.1</a></b>     simple-statement = empty-statement | assignment-statement</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                             | procedure-statement | goto-statement.</pre>
<pre><b><a href="#6.4.2.1 General">6.4.2.1</a></b>     simple-type = ordinal-type | real-type-identifier.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       simple-type-identifier = type-identifier.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.1.2 Special-symbols">6.1.2</a></b>       special-symbol = '+' | '~' | '*' | '/' | '=' | '&lt;' | '&gt;' | '[' | ']'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                           | '.' | ',' | ':' |' ;' | '&quot;' | '(' | ')'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                           | '&lt;&gt;' | '&lt;=' | '&gt;=' | ' :=' | '..' | word-symbol</pre>
<pre><b><a href="#6.8.1 General">6.8.1</a></b>       statement = [ label ' :' ] ( simple-statement | structured-statement ).</pre>
<pre><b><a href="#6.2.1 Blocks">6.2.1</a></b>       statement-part = compound-statement.</pre>
<pre><b><a href="#6.8.3.1 General">6.8.3.1</a></b>     statement-sequence = statement { ';' statement }.</pre>
<pre><b><a href="#6.1.7 Character-strings">6.1.7</a></b>       string-character = one-of-a-set-of-implementation-defined-characters.</pre>
<pre><b><a href="#6.1.7 Character-strings">6.1.7</a></b>       string-element = apostrophe-image | string-character.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.8.3.1 General">6.8.3.1</a></b>     structured-statement = compound-statement | conditional-statement</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                 | repetitive-statement | with-statement.</pre>
<pre><b><a href="#6.4.3.1 General">6.4.3.1</a></b>     structured-type = new-structured-type | structured-type-identifier.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       structured-type-identifier = type-identifier.</pre>
<pre><b><a href="#6.4.2.4 Subrange-types">6.4.2.4</a></b>     subrange-type = constant '..' constant.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     tag-field = identifier.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     tag-type = ordinal-type-identifier.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       term = factor { multiplying-operator factor }.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       type-definition = identifier '=' type-denoter.</pre>
<pre><b><a href="#6.2.1 Blocks">6.2.1</a></b>       type-definition-part = [ 'type' type-definition ' ;' { type-definition ';' } ] .</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       type-denoter = type-identifier | new-type.</pre>
<pre><b><a href="#6.4.1 General">6.4.1</a></b>       type-identifier = identifier.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   unpacked-conformant-array-schema =</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                 'array' '[' index-type-specification { ';' index-type-specification } ']'</font></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">                 'of' ( type-identifier | conformant-array-schema ).</font></pre>
<pre><b><a href="#6.4.3.1 General">6.4.3.1</a></b>     unpacked-structured-type = array-type | record-type | set-type | file-type.</pre>
<pre><b><a href="#6.7.1 General">6.7.1</a></b>       unsigned-constant = unsigned-number | character-string | constant-identifier | 'nil'.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       unsigned-integer = digit-sequence.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       unsigned-number = unsigned-integer | unsigned-real.</pre>
<pre><b><a href="#6.1.5 Numbers">6.1.5</a></b>       unsigned-real = digit-sequence '.' fractional-part [ 'e' scale-factor ]</pre>
<pre>                          | digit-sequence 'e' scale-factor.</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   value-conformant-array-specification = identifier-list ':' conformant-array-schema.</font></pre>
<pre><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     value-parameter-specification = identifier-list ':' type-identifier.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.5.1 Variable-declarations">6.5.1</a></b>       variable-access = entire-variable | component-variable | identified-variable</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                            | buffer-variable.</pre>
<pre><b><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b><font color="red">   variable-conformant-array-specification = 'var' identifier-list ':' conformant-array-schema.</font></pre>
<pre><b><a href="#6.5.1 Variable-declarations">6.5.1</a></b>       variable-declaration = identifier-list ':' type-denoter.</pre>
<pre><b><a href="#6.2.1 Blocks">6.2.1</a></b>       variable-declaration-part = [ 'var' variable-declaration ' ;' { variable-declaration ';' } ] .</pre>
<pre><b><a href="#6.5.2 Entire-variables">6.5.2</a></b>       variable-identifier = identifier.</pre>
<pre><b><a href="#6.6.3.1 General">6.6.3.1</a></b>     variable-parameter-specification = 'var' identifier-list ':' type-identifier.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     variant = case-constant-list ':' '(' field-list ')'.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     variant-part = 'case' variant-selector 'of' variant { ';' variant }.</pre>
<pre><b><a href="#6.4.3.3 Record-types">6.4.3.3</a></b>     variant-selector = [ tag-field ':' ] tag-type.</pre>
<pre><b><a href="#6.8.3.8 While-statements">6.8.3.8</a></b>     while-statement = 'while' Boolean-expression 'do' statement.</pre>
<pre><b><a href="#6.8.3.10 With-statements">6.8.3.10</a></b>    with-statement = 'with' record-variable-list 'do' statement.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.1.2 Special-symbols">6.1.2</a></b>       word-symbol = 'and' | 'array' | 'begin' | 'case' | 'const' | 'div'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        | 'do' | 'downto' | 'else' | 'end' | 'file' | 'for'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        | 'function' | 'goto' | 'if' | 'in' | 'label' | 'mod'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        | 'nil' | 'not' | 'of' | 'or' | 'packed' | 'procedure'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        | 'program' | 'record' | 'repeat' | 'set' | 'then'</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                        | 'to' | 'type' | 'until' | 'var' | 'while' | 'with'.</pre>
<pre><b><a href="#6.9.3 The procedure write">6.9.3</a></b>       write-parameter = expression [ ':' expression [ ':' expression ] ].</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.9.3 The procedure write">6.9.3</a></b>       write-parameter-list = '(' [ file-variable ',' ] write-parameter</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                   { ',' write-parameter } ')'.</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">&nbsp;</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><a href="#6.9.4 The procedure writeln">6.9.4</a></b>       writeln-parameter-list = [ '(' ( file-variable | write-parameter )</pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                                     { ',' write-parameter } ')' ].</pre>
<h1 align="center"><a name="Annex B">Annex B</a></h1>
<p align="center">(Informative)</p>
<h2 align="center">Cross-references</h2>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">access                   <a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a><b>       </b><a href="#6.5.3.1 General"><b>6.5.3.1</b></a><b>    </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>       </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>    </b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a><b>   </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>    </b><a href="#6.8.2.2 Assignment-statements"><b>6.8.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.8.3.10 With-statements"><b>6.8.3.10</b></a><b>    </b><a href="#6.10 Programs"><b>6.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">actual &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       &nbsp;<a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>     </b><a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a><b>    </b><a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a></pre>
<ul>
    <pre style="line-height:100%; margin-top:0; margin-bottom:0;">                    <a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>       </b><a href="#6.8.2.3 Procedure-statements"><b>6.8.2.3</b></a><b>    </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a></pre>
</ul>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">actual-parameter         <a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>     </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>    </b><a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a><b>     </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a><b><font color="red">  </font></b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a><b>   </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a><b>    </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">actual-parameter-list    <a href="#6.6.6.5 Boolean functions"><b>6.6.6.5</b></a><b>     </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>      </b><a href="#6.8.2.3 Procedure-statements"><b>6.8.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.9.5 The procedure page"><b>6.9.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">array-type               <a href="#6.4.3.1 General"><b>6.4.3.1</b></a><b>     </b><a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a><b>    </b><a href="#6.5.3.2 Indexed-variables"><b>6.5.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a><b>   </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">assignment-compatible    <a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a><b>       </b><a href="#6.5.3.2 Indexed-variables"><b>6.5.3.2</b></a><b>    </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>     </b><a href="#6.6.5.4 Transfer procedures"><b>6.6.5.4</b></a><b>    </b><a href="#6.8.2.2 Assignment-statements"><b>6.8.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a><b>     </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">assignment-statement     <a href="#6.2.3.3"><b>6.2.3.3</b></a><b>     </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a><b>      </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.8.2.1 General"><b>6.8.2.1</b></a><b>     </b><a href="#6.8.2.2 Assignment-statements"><b>6.8.2.2</b></a><b>    </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">base-type                <a href="#6.4.3.4 Set-types"><b>6.4.3.4</b></a><b>     </b><a href="#6.4.5 Compatible types"><b>6.4.5</b></a><b>      </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.7.1 General"><b>6.7.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">block                    <a href="#6.2.1 Blocks"><b>6.2.1</b></a><b>       </b><a href="#6.2.3.1"><b>6.2.3.1</b></a><b>    </b><a href="#6.2.3.2"><b>6.2.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.2.3.3"><b>6.2.3.3</b></a><b>     </b><a href="#6.2.3.4"><b>6.2.3.4</b></a><b>    </b><a href="#6.3 Constant-definitions"><b>6.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.4.1 General"><b>6.4.1</b></a><b>       </b><a href="#6.4.2.3 Enumerated-types"><b>6.4.2.3</b></a><b>    </b><a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.1 Procedure-declarations"><b>6.6.1</b></a><b>       </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a><b>      </b><a href="#6.6.3.1 General"><b>6.6.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>     </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>    </b><a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a><b>     </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a><b><font color="red">  </font></b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a><b>   </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>      </b><a href="#6.8.1 General"><b>6.8.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.2.3 Procedure-statements"><b>6.8.2.3</b></a><b>     </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a><b>    </b><a href="#6.10 Programs"><b>6.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">body                     <a href="#6.6.1 Procedure-declarations"><b>6.6.1</b></a><b>       </b><a href="#6.8.3.8 While-statements"><b>6.8.3.8</b></a><b>    </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">boolean-expression       <a href="#6.7.2.3 Boolean operators"><b>6.7.2.3</b></a><b>     </b><a href="#6.8.3.4 If-statements"><b>6.8.3.4</b></a><b>    </b><a href="#6.8.3.7 Repeat-statements"><b>6.8.3.7</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.8 While-statements"><b>6.8.3.8</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">boolean-type             <a href="#6.4.2.2 Required simple-types"><b>6.4.2.2</b></a><b>     </b><a href="#6.7.2.3 Boolean operators"><b>6.7.2.3</b></a><b>    </b><a href="#6.7.2.5 Relational operators"><b>6.7.2.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.1 General"><b>6.9.3.1</b></a><b>     </b><a href="#6.8.3.5 Case-statements"><b>6.9.3.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">buffer-variable          <a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a><b>       </b><a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>      </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>       </b><a href="#6.9.3 The procedure write"><b>6.9.3</b></a><b>      </b><a href="#6.9.5 The procedure page"><b>6.9.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.10 Programs"><b>6.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">case-constants           <a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a><b>    </b><a href="#6.9.3.5 Boolean-type"><b>6.8.3.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">char-type                <a href="#6.1.7 Character-strings"><b>6.1.7</b></a><b>       </b><a href="#6.4.2.2 Required simple-types"><b>6.4.2.2</b></a><b>    </b><a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>     </b><a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>      </b><a href="#6.6.6.4 Ordinal functions"><b>6.6.6.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>       </b><a href="#6.9.3.1 Write-parameters"><b>6.9.3.1</b></a><b>    </b><a href="#6.9.3.2 Char-type"><b>6.9.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">character                <a href="#6.1.7 Character-strings"><b>6.1.7</b></a><b>       </b><a href="#6.1.9 Lexical alternatives"><b>6.1.9</b></a><b>      </b><a href="#6.4.2.2 Required simple-types"><b>6.4.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.6.4 Ordinal functions"><b>6.6.6.4</b></a><b>     </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>      </b><a href="#6.9.3.2 Char-type"><b>6.9.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.3.3 Integer-type"><b>6.9.3.3</b></a><b>     </b><a href="#6.9.3.4.1 The floating-point representation"><b>6.9.3.4.1</b></a><b>  </b><a href="#6.9.3.4.2 The fixed-point representation"><b>6.9.3.4.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">character-string         <a href="#6.1.1 General"><b>6.1.1</b></a><b>       </b><a href="#6.1.7 Character-strings"><b>6.1.7</b></a><b>      </b><a href="#6.1.8 Token separators"><b>6.1.8</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.3 Constant-definitions"><b>6.3</b></a><b>         </b><a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a><b>    </b><a href="#6.7.1 General"><b>6.7.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">closed                   <a href="#6.1.5 Numbers"><b>6.1.5</b></a><b>       </b><a href="#6.1.6 Labels"><b>6.1.6</b></a><b>      </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a><b>     </b><a href="#6.7.1 General"><b>6.7.1</b></a><b>      </b><a href="#6.7.2.2 Arithmetic operators"><b>6.7.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">compatible               <a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.4.5 Compatible types"><b>6.4.5</b></a><b>      </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.7 Example of a type-definition-part"><b>6.4.7</b></a><b>       </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a><b>    </b><a href="#6.7.2.5 Relational operators"><b>6.7.2.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">component                <a href="#6.4.3.1 General"><b>6.4.3.1</b></a><b>     </b><a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a><b>    </b><a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>     </b><a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a><b>      </b><a href="#6.5.3.1 General"><b>6.5.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.5.3.2 Indexed-variables"><b>6.5.3.2</b></a><b>     </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a><b>    </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>     </b><a href="#6.6.3.6 Parameter list congruity"><b>6.6.3.6</b></a><b>    </b><a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>     </b><a href="#6.6.6.5 Boolean functions"><b>6.6.6.5</b></a><b>    </b><a href="#6.8.2.2 Assignment-statements"><b>6.8.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.10 With-statements"><b>6.8.3.10</b></a><b>    </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>      </b><a href="#6.9.4 The procedure writeln"><b>6.9.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.5 The procedure page"><b>6.9.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">component-type           <a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a><b>     </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>    </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>       </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>    </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">components               <a href="#6.1.7 Character-strings"><b>6.1.7</b></a><b>       </b><a href="#6.4.3.1 General"><b>6.4.3.1</b></a><b>    </b><a href="#6.4.3.2 Array-types"><b>6.4.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>    </b><a href="#6.4.5 Compatible types"><b>6.4.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a><b>     </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>    </b><a href="#6.8.3.10 With-statements"><b>6.8.3.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.3.6 String-types"><b>6.9.3.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">compound-statement       <a href="#6.2.1 Blocks"><b>6.2.1</b></a><b>       </b><a href="#6.8.1 General"><b>6.8.1</b></a><b>      </b><a href="#6.8.3.1 General"><b>6.8.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.2 Compound-statements"><b>6.8.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><font color="red">conformant-array-schema  </font><a href="#6.6.3.6 Parameter list congruity"><font color="red"><b>6.6.3.6</b></font></a><font color="red"><b>     </b></font><a href="#6.6.3.7.1 General"><font color="red"><b>6.6.3.7.1</b></font></a><font color="red"><b>  </b></font><a href="#6.6.3.8 Conformability"><font color="red"><b>6.6.3.8</b></font></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">congruous                <a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a><b>     </b><a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a><b>    </b><a href="#6.6.3.6 Parameter list congruity"><b>6.6.3.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">constant                 <a href="#6.3 Constant-definitions"><b>6.3</b></a><b>         </b><a href="#6.4.2.4 Subrange-types"><b>6.4.2.4</b></a><b>    </b><a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.2 Function-declarations"><b>6.6.2</b></a><b>       </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">corresponding            <a href="#1.2"><b>1.2</b></a><b>         </b><a href="#4 Definitional conventions"><b>4</b></a><b>          </b><a href="#6.1.4 Directives"><b>6.1.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.1.9 Lexical alternatives"><b>6.1.9</b></a><b>       </b><a href="#6.2.3.2"><b>6.2.3.2</b></a><b>    </b><a href="#6.2.3.3"><b>6.2.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.1 General"><b>6.4.1</b></a><b>       </b><a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>    </b><a href="#6.5.4 Identified-variables"><b>6.5.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.1 General"><b>6.6.3.1</b></a><b>     </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a><b>    </b><a href="#6.6.3.6 Parameter list congruity"><b>6.6.3.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a><b><font color="red">   </font></b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a><b><font color="red">  </font></b><a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a><b>     6.6.4.1    </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.7.2.2 Arithmetic operators"><b>6.7.2.2</b></a><b>     </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>      </b><a href="#6.8.2.3 Procedure-statements"><b>6.8.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">defining-point           <a href="#6.2.1 Blocks"><b>6.2.1</b></a><b>       </b><a href="#6.2.2.1"><b>6.2.2.1</b></a><b>    </b><a href="#6.2.2.2"><b>6.2.2.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.2.2.3"><b>6.2.2.3</b></a><b>     </b><a href="#6.2.2.4"><b>6.2.2.4</b></a><b>    </b><a href="#6.2.2.5"><b>6.2.2.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.2.2.7"><b>6.2.2.7</b></a><b>     </b><a href="#6.2.2.8"><b>6.2.2.8</b></a><b>    </b><a href="#6.2.2.9"><b>6.2.2.9</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.2.2.11"><b>6.2.2.11</b></a><b>    </b><a href="#6.2.3.1"><b>6.2.3.1</b></a><b>    </b><a href="#6.2.3.2"><b>6.2.3.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.3 Constant-definitions"><b>6.3</b></a><b>         </b><a href="#6.4.1 General"><b>6.4.1</b></a><b>      </b><a href="#6.4.2.3 Enumerated-types"><b>6.4.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a><b>      </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.1 Procedure-declarations"><b>6.6.1</b></a><b>       </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a><b>      </b><a href="#6.6.3.1 General"><b>6.6.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a><b>     </b><a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a><b>    </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.10 With-statements"><b>6.8.3.10</b></a><b>    </b><a href="#6.10 Programs"><b>6.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">definition               <a href="#3.1 Error"><b>3.1</b></a><b>         </b><a href="#4 Definitional conventions"><b>4</b></a><b>          </b><a href="#5.1 Processors"><b>5.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>     </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">directive                <a href="#6.1.4 Directives"><b>6.1.4</b></a><b>       </b><a href="#6.6.1 Procedure-declarations"><b>6.6.1</b></a><b>      </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">entire-variable          <a href="#6.5.1 Variable-declarations"><b>6.5.1</b></a><b>       </b><a href="#6.5.2 Entire-variables"><b>6.5.2</b></a><b>      </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">enumerated-type          <a href="#6.4.2.1 General"><b>6.4.2.1</b></a><b>     </b><a href="#6.4.2.3 Enumerated-types"><b>6.4.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">error                    <a href="#3.1 Error"><b>3.1</b></a><b>         </b><a href="#3.2 Extension"><b>3.2</b></a><b>        </b><a href="#5.1 Processors"><b>5.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a><b>       </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a><b>    </b><a href="#6.5.4 Identified-variables"><b>6.5.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>       </b><a href="#6.6.3.8 Conformability"><b><font color="red">6.6.3.8</font></b></a><b>    </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a><b>     </b><a href="#6.6.6.2 Arithmetic functions"><b>6.6.6.2</b></a><b>    </b><a href="#6.6.6.3 Transfer functions"><b>6.6.6.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.6.4 Ordinal functions"><b>6.6.6.4</b></a><b>     </b><a href="#6.6.6.5 Boolean functions"><b>6.6.6.5</b></a><b>    </b><a href="#6.7.1 General"><b>6.7.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.7.2.2 Arithmetic operators"><b>6.7.2.2</b></a><b>     </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>      </b><a href="#6.8.3.5 Case-statements"><b>6.8.3.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>       </b><a href="#6.9.3 The procedure write"><b>6.9.3</b></a><b>      </b><a href="#6.9.3.1 Write-parameters"><b>6.9.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.9.4 The procedure writeln"><b>6.9.4</b></a><b>       </b><a href="#6.9.5 The procedure page"><b>6.9.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">expression               <a href="#6.5.3.2 Indexed-variables"><b>6.5.3.2</b></a><b>     </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>    </b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>     </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a><b>    </b><a href="#6.6.5.4 Transfer procedures"><b>6.6.5.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.6.2 Arithmetic functions"><b>6.6.6.2</b></a><b>     </b><a href="#6.6.6.3 Transfer functions"><b>6.6.6.3</b></a><b>    </b><a href="#6.6.6.4 Ordinal functions"><b>6.6.6.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.6.5 Boolean functions"><b>6.6.6.5</b></a><b>     </b><a href="#6.7.1 General"><b>6.7.1</b></a><b>      </b><a href="#6.7.2.3 Boolean operators"><b>6.7.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a><b>       </b><a href="#6.8.2.2 Assignment-statements"><b>6.8.2.2</b></a><b>    </b><a href="#6.8.3.5 Case-statements"><b>6.8.3.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.3.9 For-statements"><b>6.8.3.9</b></a><b>     </b><a href="#6.9.3 The procedure write"><b>6.9.3</b></a><b>      </b><a href="#6.9.3.1 Write-parameters"><b>6.9.3.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">factor                   <a href="#6.1.5 Numbers"><b>6.1.5</b></a><b>       </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a><b>  </b><a href="#6.6.5.3 Dynamic allocation procedures"><b>6.6.5.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.7.1 General"><b>6.7.1</b></a><b>       </b><a href="#6.7.2.1 General"><b>6.7.2.1</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">field                    <a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a><b>    </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">field-designator         <a href="#6.2.2.6"><b>6.2.2.6</b></a><b>     </b><a href="#6.5.3.1 General"><b>6.5.3.1</b></a><b>    </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">field-identifier         <a href="#6.4.3.3 Record-types"><b>6.4.3.3</b></a><b>     </b><a href="#6.5.3.3 Field-designators"><b>6.5.3.3</b></a><b>    </b><a href="#6.8.3.10 With-statements"><b>6.8.3.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">file-type                <a href="#6.4.3.1 General"><b>6.4.3.1</b></a><b>     </b><a href="#6.4.3.5 File-types"><b>6.4.3.5</b></a><b>    </b><a href="#6.4.6 Assignment-compatibility"><b>6.4.6</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>       </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>    </b><a href="#6.10 Programs"><b>6.10</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">file-variable            <a href="#6.5.5 Buffer-variables"><b>6.5.5</b></a><b>       </b><a href="#6.6.5.2 File handling procedures"><b>6.6.5.2</b></a><b>    </b><a href="#6.6.6.5 Boolean functions"><b>6.6.6.5</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.9.1 The procedure read"><b>6.9.1</b></a><b>       </b><a href="#6.9.2 The procedure readln"><b>6.9.2</b></a><b>      </b><a href="#6.9.3 The procedure write"><b>6.9.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.9.4 The procedure writeln"><b>6.9.4</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">formal                   <a href="#6.2.3.2"><b>6.2.3.2</b></a><b>     </b><a href="#6.6.1 Procedure-declarations"><b>6.6.1</b></a><b>      </b><a href="#6.6.2 Function-declarations"><b>6.6.2</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">                         <a href="#6.6.3.1 General"><b>6.6.3.1</b></a><b>     </b><a href="#6.6.3.2 Value parameters"><b>6.6.3.2</b></a><b>    </b><a href="#6.6.3.3 Variable parameters"><b>6.6.3.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.4 Procedural parameters"><b>6.6.3.4</b></a><b>     </b><a href="#6.6.3.5 Functional parameters"><b>6.6.3.5</b></a><b>    </b><a href="#6.6.3.7.1 General"><b><font color="red">6.6.3.7.1</font></b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.6.3.7.2 Value conformant arrays"><b><font color="red">6.6.3.7.2</font></b></a><b><font color="red">   </font></b><a href="#6.6.3.7.3 Variable conformant arrays"><b><font color="red">6.6.3.7.3</font></b></a><b>  </b><a href="#6.7.3 Function-designators"><b>6.7.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         </b><a href="#6.8.2.3 Procedure-statements"><b>6.8.2.3</b></a></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">formal-parameter-list    <b><a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.2 Function-declarations">6.6.2</a>      <a href="#6.6.3.1 General">6.6.3.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.4 Procedural parameters">6.6.3.4</a>     <a href="#6.4.3.5 File-types">6.6.3.5</a>    <a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">function                 <b><a href="#6.1.2 Special-symbols">6.1.2</a>       <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.3.5 File-types">6.4.3.5</a>     <a href="#6.6 Procedure and function declarations">6.6</a>        <a href="#6.6.1 Procedure-declarations">6.6.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2 Scopes">6.6.2</a>       <a href="#6.6.3.5 Functional parameters">6.6.3.5</a>    <a href="#6.6.6.3 Transfer functions">6.6.6.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.6.4 Ordinal functions">6.6.6.4</a>     <a href="#6.6.6.5 Boolean functions">6.6.6.5</a>    <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.3 Function-designators">6.7.3</a>       <a href="#6.9.3.3 Integer-type">6.9.3.3</a>    <a href="#6.9.3.4.1 The floating-point representation">6.9.3.4.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.3.4.2 The fixed-point representation">6.9.3.4.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-block           <b><a href="#6.1.4 Directives">6.1.4</a>       <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.2 Function-declarations">6.6.2</a>       <a href="#6.6.3.1 General">6.6.3.1</a>    <a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-declaration     <b><a href="#6.1.4 Directives">6.1.4</a>       <a href="#6.2.1 Blocks">6.2.1</a>      <a href="#6.6.2 Function-declarations">6.6.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.3 Function-designators">6.7.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-designator      <b><a href="#6.2.3.4">6.2.3.4</a>     <a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a>  <a href="#6.7.1 General">6.7.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.3 Function-designators">6.7.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">function-identifier      <b><a href="#6.2.3.1">6.2.3.1</a>     <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.2 Function-declarations">6.6.2</a>       <a href="#6.6.3.1 General">6.6.3.1</a>    <a href="#6.6.3.5 Functional parameters">6.6.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.3 Function-designators">6.7.3</a>       <a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">goto-statement           <b><a href="#6.8.1 General">6.8.1</a>       <a href="#6.8.2.1 General">6.8.2.1</a>    <a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.3.1 General">6.8.3.1</a>     <a href="#6.8.3.7 Repeat-statements">6.8.3.7</a>    <a href="#6.8.3.9 For-statements">6.8.3.9</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">identifier               <b><a href="#4 Definitional conventions">4</a>           <a href="#6.1.3 Identifiers">6.1.3</a>      <a href="#6.2.2.1">6.2.2.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2.5">6.2.2.5</a>     <a href="#6.2.2.7">6.2.2.7</a>    <a href="#6.2.2.8">6.2.2.8</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2.9">6.2.2.9</a>     <a href="#6.2.2.11">6.2.2.11</a>   <a href="#6.3 Constant-definitions">6.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.1 General">6.4.1</a>       <a href="#6.4.2.3 Enumerated-types">6.4.2.3</a>    <a href="#6.4.3.3 Record-types">6.4.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.5.1 Variable-declarations">6.5.1</a>       <a href="#6.5.2 Entire-variables">6.5.2</a>      <a href="#6.5.3.3 Field-designators">6.5.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.2 Function-declarations">6.6.2</a>      <a href="#6.6.3.1 General">6.6.3.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a><font color="red">   </font><a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a>  <a href="#6.8.3.9 For-statements">6.8.3.9</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.3.10 With-statements">6.8.3.10</a>    <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">identifier-list          <b><a href="#6.4.2.3 Enumerated-types">6.4.2.3</a>     <a href="#6.4.3.3 Record-types">6.4.3.3</a>    <a href="#6.5.1 Variable-declarations">6.5.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.1 General">6.6.3.1</a>     <a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a><font color="red">  </font><a href="#6.6.3.7.3 Variable conformant arrays"><font color="red">6.6.3.7.3</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">implementation-defined   <b><a href="#3.1 Error">3.1</a>         <a href="#3.3 Implementation-defined">3.3</a>        <a href="#5.1 Processors">5.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#5.2 Programs">5.2</a>         <a href="#6.1.7 Character-strings">6.1.7</a>      <a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.5.2 File handling procedures">6.6.5.2</a>     <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>    <a href="#6.9.3.1 Write-parameters">6.9.3.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.3.4.1 The floating-point representation">6.9.3.4.1</a>   <a href="#6.9.3.5 Boolean-type">6.9.3.5</a>    <a href="#6.9.5 The procedure page">6.9.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">implementation-dependent <b><a href="#3.2 Extension">3.2</a>         <a href="#3.4 Implementation-dependent">3.4</a>        <a href="#5.1 Processors">5.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#5.2 Programs">5.2</a>         <a href="#6.5.3.2 Indexed-variables">6.5.3.2</a>    <a href="#6.7.1 General">6.7.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.2.1 General">6.7.2.1</a>     <a href="#6.7.3 Function-designators">6.7.3</a>      <a href="#6.8.2.2 Assignment-statements">6.8.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a>     <a href="#6.9.5 The procedure page">6.9.5</a>      <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">index-type               <b><a href="#6.4.3.2 Array-types">6.4.3.2</a>     <a href="#6.6.3.2 Value parameters">6.5.3.2</a>    <a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">indexed-variable         <b><a href="#6.5.3.1 General">6.5.3.1</a>     <a href="#6.5.3.2 Indexed-variables">6.5.3.2</a>    <a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">integer-type             <b><a href="#6.1.5 Numbers">6.1.5</a>       <a href="#6.3 Constant-definitions">6.3</a>        <a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.2.3 Enumerated-types">6.4.2.3</a>     <a href="#6.4.6 Assignment-compatibility">6.4.6</a>      <a href="#6.6.6.2 Arithmetic functions">6.6.6.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.6.3 Transfer functions">6.6.6.3</a>     <a href="#6.6.6.4 Ordinal functions">6.6.6.4</a>    <a href="#6.6.6.5 Boolean functions">6.6.6.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>     <a href="#6.7.2.5 Relational operators">6.7.2.5</a>    <a href="#6.9.1 The procedure read">6.9.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.3.1 Write-parameters">6.9.3.1</a>     <a href="#6.9.3.3 Integer-type">6.9.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">label                    <b><a href="#6.1.2 Special-symbols">6.1.2</a>       <a href="#6.1.6 Labels">6.1.6</a>      <a href="#6.2.1 Blocks">6.2.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2.1">6.2.2.1</a>     <a href="#6.2.2.5">6.2.2.5</a>    <a href="#6.2.2.7">6.2.2.7</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2.8">6.2.2.8</a>     <a href="#6.2.2.9">6.2.2.9</a>    <a href="#6.2.2.11">6.2.2.11</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.3.2">6.2.3.2</a>     <a href="#6.2.3.3">6.2.3.3</a>    <a href="#6.8.1 General">6.8.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.2.4 Goto-statements">6.8.2.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">member                   <b><a href="#6.4.6 Assignment-compatibility">6.4.6</a>       <a href="#6.7.1 General">6.7.1</a>      <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">note                     <b><a href="#3 Definitions">3</a>           <a href="#3.1 Error">3.1</a>        <a href="#3.5 Processor">3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#5 Compliance">5</a>           <a href="#5.1 Processors">5.1</a>        <a href="#5.2 Programs">5.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.1 Lexical tokens">6.1</a>         <a href="#6.1.4 Directives">6.1.4</a>      <a href="#6.1.7 Character-strings">6.1.7</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.1.9 Lexical alternatives">6.1.9</a>       <a href="#6.2.2.8">6.2.2.8</a>    <a href="#6.2.2.10">6.2.2.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.2.2.11">6.2.2.11</a>    <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.2.2 Required simple-types">6.4.2.2</a>     <a href="#6.4.3.1 General">6.4.3.1</a>    <a href="#6.4.3.2 Array-types">6.4.3.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.3.3 Record-types">6.4.3.3</a>     <a href="#6.4.3.4 Set-types">6.4.3.4</a>    <a href="#6.4.3.5 File-types">6.4.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.4 Pointer-types">6.4.4</a>       <a href="#6.4.7 Example of a type-definition-part">6.4.7</a>      <a href="#6.5.1 Variable-declarations">6.5.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.5.3.2 Indexed-variables">6.5.3.2</a>     <a href="#6.5.3.3 Field-designators">6.5.3.3</a>    <a href="#6.5.4 Identified-variables">6.5.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.1 General">6.6.3.1</a>     <a href="#6.6.3.7 Conformant array parameters"><font color="red">6.6.3.7</font></a><font color="red">    </font><a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><font color="red">                         </font><a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a>  <font color="red"> </font><a href="#6.6.3.8 Conformability"><font color="red">6.6.3.8</font></a>    6.6.4.1</b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.5.2 File handling procedures">6.6.5.2</a>     <a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a>    <a href="#6.7.1 General">6.7.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.2.1 General">6.7.2.1</a>     <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>    <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.1 General">6.8.1</a>       <a href="#6.8.3.4 If-statements">6.8.3.4</a>    <a href="#6.8.3.5 Case-statements">6.8.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.1 The procedure read">6.9.1</a>       <a href="#6.9.2 The procedure readln">6.9.2</a>      <a href="#6.9.3.4.2 The fixed-point representation">6.9.3.4.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.4 The procedure writeln">6.9.4</a>       <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">number                   <b><a href="#5.1 Processors">5.1</a>         <a href="#6.1.7 Character-strings">6.1.7</a>      <a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.2.3 Enumerated-types">6.4.2.3</a>     <a href="#6.4.3.2 Array-types">6.4.3.2</a>    <a href="#6.4.5 Compatible types">6.4.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.6 Parameter list congruity">6.6.3.6</a>     <a href="#6.6.6.4 Ordinal functions">6.6.6.4</a>    <a href="#6.7.3 Function-designators">6.7.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a>     <a href="#6.9.1 The procedure read">6.9.1</a>      <a href="#6.9.3.3 Integer-type">6.9.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.3.4 Real-type">6.9.3.4</a>     <a href="#6.9.3.4.1 The floating-point representation">6.9.3.4.1</a>  <a href="#6.9.3.4.2 The fixed-point representation">6.9.3.4.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">operand                  <b><a href="#6.7.2.1 General">6.7.2.1</a>     <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>    <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">operator                 <b><a href="#6.5.1 Variable-declarations">6.5.1</a>       <a href="#6.7.1 General">6.7.1</a>      <a href="#6.7.2.1 General">6.7.2.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>     <a href="#6.7.2.4 Set operators">6.7.2.4</a>    <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.3.5 Case-statements">6.8.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">ordinal                  <b><a href="#6.4.2.1 General">6.4.2.1</a>     <a href="#6.4.2.2 Required simple-types">6.4.2.2</a>    <a href="#6.4.2.3 Enumerated-types">6.4.2.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.6.1 General">6.6.6.1</a>     <a href="#6.6.6.4 Ordinal functions">6.6.6.4</a>    <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">ordinal-type             <b><a href="#6.4.2.1 General">6.4.2.1</a>     <a href="#6.4.2.4 Subrange-types">6.4.2.4</a>    <a href="#6.4.3.2 Array-types">6.4.3.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.3.3 Record-types">6.4.3.3</a>     <a href="#6.4.3.4 Set-types">6.4.3.4</a>    <a href="#6.6.6.4 Ordinal functions">6.6.6.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.1 General">6.7.1</a>       <a href="#6.7.2.5 Relational operators">6.7.2.5</a>    <a href="#6.8.3.5 Case-statements">6.8.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.3.9 For-statements">6.8.3.9</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">parameter                <b><a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.3.1 General">6.6.3.1</a>    <a href="#6.6.3.2 Value parameters">6.6.3.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.3 Variable parameters">6.6.3.3</a>     <a href="#6.6.3.4 Procedural parameters">6.6.3.4</a>    <a href="#6.6.3.5 Functional parameters">6.6.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.3.6 Parameter list congruity">6.6.3.6</a>     <a href="#6.6.3.7.1 General"><font color="red">6.6.3.7.1</font></a><font color="red">  </font><a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b><font color="red">                         </font><a href="#6.6.3.7.3 Variable conformant arrays"><font color="red">6.6.3.7.3</font></a>   <a href="#6.6.5.2 File handling procedures">6.6.5.2</a>    <a href="#6.6.6.2 Arithmetic functions">6.6.6.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.6.5 Boolean functions">6.6.6.5</a>     <a href="#6.8.3.9 For-statements">6.8.3.9</a>    <a href="#6.9.1 The procedure read">6.9.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.2 The procedure readln">6.9.2</a>       <a href="#6.9.3 The procedure write">6.9.3</a>      <a href="#6.9.3.5 Boolean-type">6.9.3.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.4 The procedure writeln">6.9.4</a>       <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">pointer                  <b><a href="#6.4.1 General">6.4.1</a>       <a href="#6.5.1 Variable-declarations">6.5.1</a>      <a href="#6.7.2.5 Relational operators">6.7.2.5</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">pointer-type             <b><a href="#6.4.4 Pointer-types">6.4.4</a>       <a href="#6.5.4 Identified-variables">6.5.4</a>      <a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure                <b><a href="#6.1.2 Special-symbols">6.1.2</a>       <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.4 Pointer-types">6.4.4</a>       <a href="#6.5.4 Identified-variables">6.5.4</a>      <a href="#6.6 Procedure and function declarations">6.6</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.3.4 Procedural parameters">6.6.3.4</a>    <a href="#6.6.3.7.2 Value conformant arrays"><font color="red">6.6.3.7.2</font></a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a>     <a href="#6.8.3.9 For-statements">6.8.3.9</a>    <a href="#6.9.1 The procedure read">6.9.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.2 The procedure readln">6.9.2</a>       <a href="#6.9.3 The procedure write">6.9.3</a>      <a href="#6.9.4 The procedure writeln">6.9.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.5 The procedure page">6.9.5</a>       <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-block          <b><a href="#6.1.4 Directives">6.1.4</a>       <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.3.1 General">6.6.3.1</a>    <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-declaration    <b><a href="#6.1.4 Directives">6.1.4</a>       <a href="#6.2.1 Blocks">6.2.1</a>      <a href="#6.6.1 Procedure-declarations">6.6.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-identifier     <b><a href="#6.2.3.1">6.2.3.1</a>     <a href="#6.2.3.2">6.2.3.2</a>    <a href="#6.2.3.3">6.2.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.1 Procedure-declarations">6.6.1</a>       <a href="#6.6.3.1 General">6.6.3.1</a>    <a href="#6.6.3.4 Procedural parameters">6.6.3.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.3 Function-designators">6.7.3</a>       <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">procedure-statement      <b><a href="#6.2.3.4">6.2.3.4</a>     <a href="#6.8.2.1 General">6.8.2.1</a>    <a href="#6.8.2.3 Procedure-statements">6.8.2.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.8.3.9 For-statements">6.8.3.9</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">program-parameters       <b><a href="#6.2.3.5">6.2.3.5</a>     <a href="#6.10 Programs">6.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">real-type                <b><a href="#6.1.5 Numbers">6.1.5</a>       <a href="#6.3 Constant-definitions">6.3</a>        <a href="#6.4.2.2 Required simple-types">6.4.2.2</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.4.6 Assignment-compatibility">6.4.6</a>       <a href="#6.6.6.2 Arithmetic functions">6.6.6.2</a>    <a href="#6.6.6.3 Transfer functions">6.6.6.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.7.2.2 Arithmetic operators">6.7.2.2</a>     <a href="#6.7.2.5 Relational operators">6.7.2.5</a>    <a href="#6.9.1 The procedure read">6.9.1</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.9.3.1 Write-parameters">6.9.3.1</a>     <a href="#6.9.3.4 Real-type">6.9.3.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">record-type              <b><a href="#6.4.3.1 General">6.4.3.1</a>     <a href="#6.4.3.3 Record-types">6.4.3.3</a>    <a href="#6.5.3.3 Field-designators">6.5.3.3</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;"><b>                         <a href="#6.6.5.3 Dynamic allocation procedures">6.6.5.3</a>     <a href="#6.8.3.10 With-statements">6.8.3.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">record-variable          <b><a href="#6.4.3.3 Record-types">6.4.3.3</a>     <a href="#6.6.3.3 Variable parameters">6.5.3.3</a>    <a href="#6.8.3.10 With-statements">6.8.3.10</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">reference                <b><a href="#6.5.3.1 General">6.5.3.1</a>     <a href="#6.5.3.3 Field-designators">6.5.3.3</a>    <a href="#6.5.4 Identified-variables">6.5.4</a></b></pre>
<pre style="line-height:100%; margin-top:0; margin-bottom:0;">