Der FUNCTION-Block enthält die Deklarationen für Funktionen, die von den HTML-Blöcken aufgerufen werden. Funktionen werden von Sprachumgebungen verarbeitet und können Programme, SQL-Abfragen oder gespeicherte Prozeduren ausführen.
Das folgende Beispiel zeigt zwei FUNCTION-Blöcke, die einen Funktionsaufruf an ein externes REXX-Programm und einen Funktionsaufruf an eine in der Makrodatei enthaltene Funktion definieren.
%{ ********************** FUNCTION Block **********************************%} %FUNCTION(DTW_REXX) rexx1 (IN input) returns(result) { <-- Diese Funktion akzeptiert einen Parameter und gibt ein Ergebnis zurück, das den zugeordneten Funktionsaufruf ersetzt. %EXEC{ompsamp.cmd %} <-- Diese Funktion führt das externe REXX-Programm "ompsamp.cmd" aus. %} %FUNCTION(DTW_REXX) today () RETURNS(result) { result = date() <-- Die einzelne Quellenanweisung für diese Funktion befindet sich inline. %}
Der erste FUNCTION-Block rexx1 ist eine Deklaration einer REXX-Funktion, die ihrerseits ein externes REXX-Programm namens ompsamp.cmd ausführt. Von dieser Funktion wird eine Eingabevariable input entgegengenommen und automatisch an den externen REXX-Befehl übergeben. Der REXX-Befehl liefert ebenfalls eine Variable namens result. Der Inhalt der Variablen result im REXX-Befehl tritt an die Stelle der im OUTPUT-Block enthaltenen aufrufenden Funktion @rexx1(). Auf die Variablen input und result kann das REXX-Programm, wie im Quellencode für ompsamp.cmd gezeigt wird, direkt zugreifen:
/* REXX */ result = 'The REXX program received "'input'" from the macro.'
Der Code in dieser Funktion wiederholt die an sie übergebenen Daten. Sie können den Ergebnistext nach Belieben formatieren, indem Sie den anfordernden Funktionsaufruf @rexx1() zwischen normale HTML-Befehle (wie z. B. <b> oder <em>) setzen. Anstatt die Variable result zu verwenden, hätte das REXX-Programm auch HTML-Befehle mit Hilfe der REXX-Anweisung SAY in die Standardausgabe schreiben können.
Der zweite Block, today, verweist ebenfalls auf ein REXX-Programm. In diesem Fall befindet sich das gesamte REXX-Programm (eine ganze Zeile) selbst innerhalb der Funktionsdeklaration. Ein externes Programm ist nicht erforderlich. Inline-Programme sind für REXX- und Perl-Funktionen zulässig, da sie interpretierte Sprachen sind, die syntaktisch analysiert und dynamisch ausgeführt werden können. Inline-Programme bieten den Vorteil der Einfachheit, da sie keine separat zu verwaltende Programmdatei erfordern. Die erste REXX-Funktion hätte ebenfalls inline angelegt werden können.