Bedenke aber, dass du zwar 256 Parameter definieren kannst, aber spätestens mein Aufrufen bekommt man ein Zählproblem.
Seit V5R4 1024 Parameter für Stored Procedures, für UDFs bis Release 7.1 TR 9 bzw. Release 7.2 TR1 90 Parameter - seit Release 7.1 TR10 bzw. Release 7.2 TR2 1024 Parameter!
Seit Release 7.1 TR8 bzw. Release 7.2 können für Parameter, die an Stored Procedures übergeben werden Default-Werte festgelegt werden, beim Aufruf der Stored Procedure können die Parameter benannt und den benannten Parametern ein Wert zugewiesen werden. Nicht übergebene Parameter werden durch die Default-Werte ersetzt.
Für UD(T)Fs wurde dieser Mechanismus (Default-Werte und Parameter-Argumenten-Liste) erst mit dem letzten TR eingeführt.

Beim Aufruf von Programmen muss man berücksichtigen, dass ein Programm keinen Rückgabe-Wert, sondern allenfalls Ein-/Ausgabe-Parameter hat. Gleiches gilt für Prozeduren, die keinen Rückgabe-Wert besitzen und über einen verbundenen CALL (CallB oder mit Prototyp CALLP) aufgerufen werden.
Programme werden i.d.R. als Stored Procedures (CREATE PROCEDURE) registriert und mit dem SQL-Befehl CALL aufgerufen.
SQL kann keine Datenstrukturen verarbeiten, der entsprechende Parameter kann allenfalls als alphanumerischer String definiert, befüllt und übergeben werden.

Wie Baldur bereits gesagt hat, kann eine Wrapper-Funktion um das Programm bzw. die Prozedur ohne Rückgabe-Wert gebildet werden, in der der Ausgabe-Parameter als Rückgabewert definiert ist.

Mit UDTFs (User Defined Table Functions) kann zwar eine Tabelle von Rückgabe-Werten definiert werden, mit einem einfachen Registrieren eines Programms ist es jedoch nicht getan. Programme, die als UDTFs registriert werden, werden vom Datenbanken-Manager über Call-Back-Processing mindestens 3 Mal (OPEN, FETCH, CLOSE) aufgerufen und erfordern Parameter-Style DB2SQL. Abhängig vom Call-Type müssen im Programm unterschiedliche Aktionen ausgeführt werden.

Birgitta