Ein Unterprogramm ist ein Verarbeitungsblock, der zwischen den Anweisungen FORM und ENDFORM eingeschlossen ist:
FORM subr [USING p1 TYPE type
p2 LIKE field
...
VALUE(p3) TYPE type
VALUE(p4) LIKE field
... ]
[CHANGING { {VALUE(p1)}|{p1 [{TYPE type}|{LIKE field}]}
{VALUE(p2)}|{p2 [{TYPE type}|{LIKE field}]}
... } ]
...
ENDFORM.
subrist der Name des Unterprogramms. Die optionalen Zusätze USING und CHANGING definieren die Parameterschnittstelle. Wie alle Verarbeitungsblöcke können Unterprogramme nicht geschachtelt werden. Es empfiehlt sich insbesondere bei ausführbaren Programmen die Definition aller Unterprogramme am Ende des Programmtextes anzuordnen, damit nicht versehentlich unausführbare Anweisungen dadurch entstehen, dass ein Unterprogramm einen Ereignisblock an der falschen Stelle abschließt.
Globale Daten des Rahmenprogramms