У мові Паскаль передбачена можливість задавати типи даних, визначені користувачем (програмістом): перелічувальний тип і обмежений тип (або тип-діапазон).
Перечіслімий тип дозволяють задавати деяку довільну, упорядковану на розсуд програміста, послідовність, елементи якої є значеннями змінних. Наприклад, в програмі необхідно встановити відповідність між числами та назвами днів тижня або задати впорядковану послідовність родинних зв'язків по чоловічій лінії. Для цього зручно оголосити перелічуваних типи:
Name_day = (понеділок, вівторок, середа, четвер, п'ятниця, субота, неділя);
Rod_m = (прадід, дід, батько, син, онук, правнук);
Тоді оголошені змінні
Rodstv1, Rodstv2: Rod_m;
day: = середовище; rodstv1: = батько; rodstv2: = прадід;
Між значеннями перечислимого типу і порядковими номерами цих значень встановлюється наступне відповідність: першому значенню присвоюється номер 0, другому значенню - 1 і т.д. Максимальна кількість значень перечислимого типу одно 255. Тому до змінних перечислимого типу застосовні функції визначення попереднього і наступного елемента. Наприклад, при виконанні операторів rodstv1: = pred (син); rodstv2: = succ (син); змінні отримують значення rodstv1 = батько; rodstv2 = онук.
Примітка. Вирази Pred (понеділок), Succ (неділя), pred (прадід), succ (правнук) не коректні, так як в списку значень перечислимого типу для перших елементів не визначені попередники, а для останніх елементів не визначені послідовники, і застосування цих виразів в операторах викличе при виконанні програми повідомлення про помилку.
ТИП-ДІАПАЗОН задає підмножина свого базового типу, в якості якого може виступати будь-який порядковий тип, крім типу-діапазону. наприклад:
Тут тип Т1 визначає обмежений діапазон цілих чисел - від 0 до 9, роздільником кордонів діапазону є дві точки. Типи Т2 і Т3 визначають обмежені набори символів, тому тут і цифри сприймаються програмою як символи і вони також як і букви повинні полягати в апострофи.