# Standard Pascal

│
**العربية (ar)** │
**Deutsch (de)** │
**English (en)** │
**español (es)** │
**suomi (fi)** │
**français (fr)** │
**Bahasa Indonesia (id)** │
**日本語 (ja)** │
**português (pt)** │
**русский (ru)** │
**中文（中国大陆） (zh_CN)** │

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:

`and`

`array`

`begin`

`case`

`const`

`div`

`do`

`downto`

`else`

`end`

`file`

`for`

`function`

`goto`

`if`

`in`

`label`

`mod`

`nil`

`not`

`of`

`or`

`packed`

`procedure`

`program`

`record`

`repeat`

`set`

`then`

`to`

`type`

`until`

`var`

`while`

`with`

## Symbols

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

- + (plus)
- - (minus)
- * (asterisk)
- / (slash)
- = (equal)
- < (less than)
- > (greater than)
- [
- ]
- . (period)
- , (comma)
- : (colon)
- ; (semicolon)
- ↑
- (
- )
- <> (not equal)
- <=
- >=
- := (named becomes)
- ..

## 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) | |

read | Read from a text file or stdin into a variable |

readln | Read from a text file into variable and goto next line |

reset(f) | Open file for reading |

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:

integer · smallint · longint · real · boolean · string · char · byte

## 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.

## External links

- Standard Pascal, reference information about the ANSI ISO 7185 standard.
- ISO 7185:1990, official normative version of the Pascal standard.
- ISO/IEC 10206:1991: Extended Pascal standard