Отличия от обычного Паскаля
- Изменилась структура модуля - появился раздел declaration, раздел interface превратился в список имён.
- В разделах declaration и implementation установлена строгая последовательность объявлений - сначала константы, затем переменные, затем подпрограммы.
- Исчезли опережающие объявления подпрограмм - многопроходный транслятор избавил от этой необходимости. Каждая подпрограмма объявляется один раз.
- Нельзя указывать в объявлениях переменных и параметров несколько имён через запятую, т.е. конструкция вида
var A, B, C :Integer;
запрещена, то же и с параметрами.
- Вместо множества простых типов данных - всего три - Boolean, Integer, Real, все неопределённого размера. Явно указать размер, например объявив Extended или LongInt переменную нельзя.
- Массивы стали динамическими, с переменными верхними и нижними границами. Объявлять статические массивы невозможно.
- Можно объявлять только скалярные константы.
- В инициализаторах констант нельзя использовать функции.
- Имена параметров подпрограмм и локальных переменных не могут совпадать с глобальными именами.
- Возврат значения функции происходит только через переменную Result.
- Функция не может возвращать массивы.
- Появился новый оператор - SetBounds.
- Вызов функции/подпрограммы должен содержать круглые скобки, даже если у функции нет параметров.
- Не поддерживается научный (экспоненциальный) способ записи числа.
- Запрещены побитовые операции.
- По ссылке на скалярную переменную можно передавать только скалярные переменные, но не элементы массивов того же типа.