In molti casi, il programmatore deve ricorrere a tipi di dato non predefiniti, in questo caso, basta ricorrere a una dichiarazione di tipo, con la parola riservata type. La sintassi è la seguente:
type nome:(elemento_1, elemento_2, elemento_N...)
dove elemento_1, elemento_2, elemento_N sono tutti i valori che possono assumere tutte le variabili di tipo di dato nome. Per dichiarare una variabile di tipo nome si usa la sintassi:
var nome_variabile: nome;
Esempio:
type giorni:(lun, mar, mer, gio, ven, sab, dom);
dichiariamo due variabili di tipo giorni:
var oggi, dopodomani : giorni;
Se durante il programma assegniamo i seguenti valori:
oggi:= mar; dopodomani: gio;
avremo che l'istruzione:
write(dopodomani);
scrive sullo schermo gio; l'espressione:
dopodomani > oggi;
restituirà true, in quanto gio nella dichiarazione del tipo giorni si trova dopo mar quindi l'espressione:
oggi > dopodomani;
restituirà false, per lo stesso motivo descritto sopra.