Standard Pascal, Extended Pascal
Prozedurale Datentypen sind nicht vorhanden.
Dies stellt keine wesentliche Einschränkung dar:
Zur Formulierung von Algorithmen, in denen Unterprogramme als Parameter
auftreten, genügen prozedurale
Parameter.
Dies stellt eine weniger flexiblere, aber dafür auch weniger
fehleranfällige Lösung dar.
Turbo Pascal
Turbo Pascal ermöglicht es mit Hilfe der Prozedurtypen, Prozeduren und Funktionen wie Größen zu behandeln, die Variablen zugewiesen und als Parameter übergeben werden können.
Die Deklaration eines Prozedurtyps gibt die Parameter und, bei einer Funktion, den Ergebnistyp an. Die Syntax einer Prozedurtyp-Deklaration ist dieselbe wie die eines Prozedur- oder Funktionskopfs, nur daß dabei der Bezeichner hinter PROCEDURE oder FUNCTION weggelassen wird.
Beispiele:
TYPE proc = PROCEDURE;
swap_proc = PROCEDURE(VAR x, y: INTEGER);
str_proc = PROCEDURE(s: STRING);
math_func = FUNCTION(x: REAL): REAL;
device_func = FUNCTION(VAR f: TEXT): INTEGER;
max_func = FUNCTION(a, b: REAL; f: math_func): REAL;
Die Namen der Parameter in einer Prozedurtyp-Deklaration haben keinerlei
Bedeutung. Eine Prozedurvariable muß solche Prozeduren oder Funktionen referenzieren, die zuweisungskompatibel zum Typ der Konstanten sind.
Beispiel:
TYPE error_proc = PROCEDURE(errorcode: INTEGER); { Prozedurtyp }
PROCEDURE default_error(errorcode: INTEGER); { Prozedur- }
BEGIN { vereinbarung }
Writeln('Fehler ', errorcode, '.');
END;
CONST error_handler: error_proc = default_error; { Prozedurvariable ! }