# Standard Pascal

In 1974, the creator of the Pascal language, Niklaus Wirth wrote a book with Kathleen Jensen, titled Pascal User Manual and Report published by Springer-Verlag. This book became a de-facto standard for the Pascal language. In 1983 the International Standards Organization (ISO) formalized the de-facto standard as ISO 7185:1983. In 1990 ISO released an updated version - ISO 7185:1990 - that didn't introduce any new concepts, but cleared up ambiguities and corrected errors that were in the earlier version. The ISO 7185 standard is referred to as Standard Pascal. The standard defines the minimum level that a Pascal compiler must support in order to be a true compiler of the Pascal language.

## Reserved Words

The following are the standard keywords (referred to as word-symbols in the ISO 7185) that all compilers must support:

## Symbols

The following symbols (which the standard refers to as special-symbols) are also part of the language:

## Functions

All of the functions defined by Standard Pascal are implemented in Free Pascal in the System unit of the standard Runtime Library.

### Arithmetic Functions

Function Description
abs(x) Calculate the absolute value of x
arctan(x) arctan returns the arctangent of x, which can be any Real type. The resulting angle is in radial units.
cos(x) Calculate cosine of angle x (radians)
exp(x) Exp returns the exponent of x, i.e. the number e to the power x
ln(x) returns the natural logarithm of the Real parameter x. x must be positive.
sin(x) Calculate the sine of angle x (radians)
sqr(x) Calculate the square of x
sqrt(x) Calculate the square root of x. x must be positive.

### Transfer Functions

Function Description
round(x) Round floating point value to nearest integer number and return as integer.
trunc(x) Truncate floating point x value and return as integer.

### Ordinal Functions

Function Description
chr(x) Convert byte value to a character value
ord(x) Return ordinal value of an ordinal type.
pred(x) Return previous element for an ordinal type.
succ(x) Return next element of ordinal type.

### Boolean Functions

Function Description
eof(f) Check for end of file f
eoln(f) Check for end of line on textfile f
odd(x) Is a x odd or even ?

## Procedures

Procedures defined by Standard Pascal are implemented in Free Pascal in the System unit of the standard Runtime Library.

### File handling procedures

Procedure Description
get(f)
page()
put(f)
readln Read from a text file into variable and goto next line
rewrite(f) Open file for writing
write Write variable or literal string to a text file or stdout
writeln Write variable or literal string to a text file or stdout and append newline

### Dynamic allocation procedures

Procedure Description
dispose(q) Release the memory pointed to by q, which was allocated with a call to New.
dispose(q,k1...kn)
new(p) New allocates a new instance of the type pointed to by p, and puts the address in p.
new(p,c1...cn)

### Transfer procedures

Procedure Description
pack() Create packed array from normal array
unpack() Create unpacked array from packed array

## Extensions

There are additional keywords which are not technically part of the Standard Pascal language but are used by FPC either for additional functionality such as for implementing objects, compatibility with the error recovery concepts exposed by C++, or to provide compatibility with Borland Pascal and earlier Pascal compilers. These keywords include:

implementation · finally · try · unit.

## Types

There are the standard types:

## Modes supported by Free Pascal

Free Pascal supports ISO 7185 Standard Pascal with the compiler mode command line option -Miso or with the source code compiler directive {\$mode ISO}. Support of ISO 7185 started with version 3.0.0. It is planned to have a mode support ISO/IEC 10206 Extended Pascal in future versions of Free Pascal.