Hallo zusammen,

ich habe ein SQLRPGLE mit Folgendem Input:
Code:
dcl-ds inputDS qualified;
  dcl-ds Messages dim(20);
   Text char(150);
   Rank zoned(2);
  end-ds;
  Record likeds(record);
 end-ds;
Jetzt möchte ich dazu eine Procedure schreiben, die den Aufruf übernimmt.
Nun steh ich vor zwei Problemen:

Problem A:
Record ist ist eine Datei. Kann ich bei SQL auch einen Verweis auf die Tabelle angeben, oder muss ich jedes Feld einzeln aufführen?
(Das wäre hilfreich, falls die Datei erweitert wird und die Procedure neu gewandelt werden muss).

Problem B:
Wie definiere ich das Array als Input?
Mein Versuch war:

Zuerst:
Code:
create type Messages_arr as VARCHAR(100) array[20]
Dann:
Code:
create or replace procedure qtemp.try
( in Messages Messages_arr)
language rpgle
specific qtemp.try
not deterministic
modifies sql DATA 
called on null INPUT 
external name 'MYLIB.MYPROG'
parameter style general with nulls
Mein Fehler ist:
Die verwendete Bereichsart ist im angegebenen Kontext nicht zulässig.Bereichsarten können nur zu folgenden Zwecken benutzt werden: -- Als Argument einer SQL-Skalarfunktion oder einer SQL- oder JAVA-Prozedur.
-- Für eine SQL-Variable, die in einer SQL-Prozedur oder in einer SQL-Skalarfunktion deklariert ist.
-- In einer CAST-Spezifikation in einer SQL-Prozedur oder in einer SQL-Skalarfunktion.
Die Datenart der Bereichsart, die beim Aufruf einer Routine verwendet wird, muss mit der Datenart des Bereichs übereinstimmen, die beim Erstellen der Routine verwendet wurde.
Fehlerbeseitigung: Verweis auf Bereichsart entfernen.
Wurde die Datenart nach der Erstellung der Routine geändert, die Routine erneut erstellen, sodass sie die neue Definition verwendet.
Anschließend die Anforderung wiederholen.
Bedeutet diese, dass es wegen Language RPGLE nicht funktioniert?

Hat jemand einen Lösungsvorschlag?

Vielen Dank!