Die ersten fünf Zeilen im letzten Beispiel bilden den Prozedurkopf. Er beginnt mit dem Kommando SET-PROCEDURE-OPTIONS, in dem globale Festlegungen über das Prozedurformat getroffen und wichtige Prozedureigenschaften voreingestellt werden. Einige dieser Prozedureigenschaften können im weiteren Verlauf der Prozedur noch durch das Kommando MODIFY-PROCEDURE-OPTIONS dynamisch geändert werden. Die Angabe IMPLICIT-DECLARATIONS=*NO verhindert, dass Variablen (unbeabsichtigt) allein dadurch entstehen, dass ihnen ein Wert zugewiesen wird. Damit lassen sich Schreibfehler in Variablennamen besser erkennen.
Deklaration von Prozedurparametern
Prozedurparameter sind spezielle Variablen, denen beim Aufruf der Prozedur, beispielsweise durch das Kommando CALL-PROCEDURE, veränderliche Werte zugewiesen werden können. Ihre Deklaration ist ebenfalls Bestandteil des Prozedurkopfs: DECLARE-PARAMETER-Kommandos vereinbaren für jeden Prozedurparameter den Namen, einen Typ, den Defaultwert und die Art der Wertübergabe. Wenn mehrere DECLARE-PARAMETER-Kommandos vorhanden sind, müssen sie zwischen BEGIN- und END-PARAMETER-DECLARATION eingeschlossen werden.
Die Beispielprozedur deklariert die beiden Parameter DATEI und ANZAHL-ZEILEN. Letzterer kann nur ganzzahlige Werte annehmem (TYPE=*INTEGER); wenn er beim Aufruf der Prozedur nicht mit einem aktuellen Wert versorgt wird, gilt die Vorbelegung (INITIAL-VALUE) mit dem Wert 10. Dem Parameter DATEI hingegen muss beim Aufruf eine Zeichenfolge (TYPE=*STRING) zugewiesen werden, da kein INITIAL-VALUE vorhanden ist.
Beim Aufruf der Prozedur können die aktuellen Parameterwerte den Parametervariablen zugeordnet werden, indem (beispielsweise im Kommando CALL-PROCEDURE) die Werte in der Reihenfolge der Parameterdeklarationen spezifiziert werden. Alternativ kann die Zuordnung auch über die Parameternamen erfolgen, wobei Abkürzungen erlaubt sind, solange die Eindeutigkeit gewahrt bleibt:
/CALL-PROCEDURE P.SHOW-TAIL,(DATEI=PROTO.L,ANZAHL-ZEILEN=20) /CALL-PROCEDURE P.SHOW-TAIL,(PROTO.L,20) /CALL-PROCEDURE P.SHOW-TAIL,(A-Z=20,D=PROTO.L) /CALL-PROCEDURE P.SHOW-TAIL,(PROTO.L)
Die ersten drei Kommandos sind gleichwertig, da DATEI der erste und ANZAHL-ZEILEN der zweite deklarierte Parameter ist und D bzw. A-Z gültige Abkürzungen für die Parameternamen darstellen. Im letzten Aufruf wird für ANZAHL-ZEILEN der Standardwert (INITIAL-VALUE) von 10 angenommen, da kein Wert für diesen Parameter spezifiziert wurde.
Wenn bei der Parameterübergabe oder bei der Verarbeitung des Prozedurkopfes ein Fehler auftritt, wird mit der Ausführung der Prozedur gar nicht erst begonnen. Ein solcher Fehler kann nur vom Aufrufer, nicht von der gerufenen Prozedur behandelt werden. Dies gilt auch für den Fall, dass ein Prozedurparameter weder durch explizite Angabe im Aufrufkommando noch durch einen INITIAL-VALUE einen Wert erhält.
Alle Kommandos zur Parameterdeklaration können entfallen, wenn eine Prozedur keine Parameter erwartet. Ebenso kann auf das Kommando SET-PROCEDURE-OPTIONS verzichtet werden, wenn die voreingestellten Werte gelten sollen, sodass der Prozedurkopf im einfachsten Fall gar nicht vorhanden zu sein braucht.