S-Prozeduren bestehen aus einem Prozedurkopf und Prozedurrumpf. In beiden Teilen können logisch zusammengehörige Blöcke definiert werden. Der erste Satz einer S-Prozedur muss ein Kommando sein.
Der Prozedurkopf beginnt in der Regel mit dem Kommando SET-PROCEDURE-OPTIONS, mit dem die Prozedureigenschaften festgelegt werden. Ohne explizite Vereinbarung gelten implizit die Voreinstellungen dieses Kommandos. Nach den Prozedureigenschaften können mit dem Kommando DECLARE-PARAMETER symbolische Parameter vereinbart werden, die bei Ablauf durch den Inhalt der gleichnamigen S-Variablen ersetzt werden.
Die Abarbeitung der Kommandos, SDF-Anweisungen und Eingabedaten endet mit dem Kommando CANCEL- oder EXIT-PROCEDURE bzw. mit dem letzten Satz. Tritt ein Fehler auf, wird die SDF-P-Fehlerbehandlung ausgelöst (siehe Abschnitt „Blockorientierte Fehlerbehandlung").
Kompilierte Prozeduren
Es sind zwei verschiedene Prozedur-Formate möglich:
Quellprozedur
Die S-Prozedur liegt in der ursprünglichen Textform vor. Volle SDF-P-Funktionalität kann nur verwendet werden, wenn bei Aufruf der Prozedur das kostenpflichtige Subsystem SDF-P geladen ist. In Bibliotheken sollte für Quell-Prozeduren der Elementtyp J verwendet werden. (Wenn das kostenpflichtige Subsystem SDF-P nicht geladen ist, werden alle SDF-P-Kommandos in Quell-Prozeduren syntaktisch analysiert - mit Ausnahme von kostenpflichtigen Kontrollflusskommandos und dem Kommando COMPILE-PROCEDURE. Erst zur Ausführungszeit werden sämtliche kostenpflichtigen Kommandos und Funktionen zurückgewiesen.)Objektprozedur
Eine Quellprozedur kann mit dem Kommando COMPILE-PROCEDURE in ein Zwischenformat kompiliert werden. Das Kommando COMPILE-PROCEDURE ist Bestandteil des kostenpflichtigen Subsystems SDF-P. Die Objektprozedur kann, unabhängig von der Verfügbarkeit des Subsystems SDF-P, die volle SDF-P-Funktionalität nutzen (mit Ausnahme des Kommandos COMPILE-PROCEDURE). In Bibliotheken sollte für Objektprozeduren der Elementtyp SYSJ verwendet werden (Default-Wert bei COMPILE-PROCEDURE).