Es gibt zwei Möglichkeiten, Informationen an ein Programm zu übergeben, das durch die SYSTEM-Sprachumgebung (DTW_SYSTEM) aufgerufen wird: direkt und indirekt.
%DEFINE INPARM1 = "SWITCH1"
%function(DTW_SYSTEM) sys1() {
%EXEC{
/QSYS.LIB/NETDATA.LIB/RPGCALL1.PGM
('$(INPARM1)' 'LITERALSTRING')
%}
%}
Der Verweis auf die Net.Data-Variable INPARM1 wird aufgehoben, und die Variable wird an das Programm übergeben. Die Parameter werden dem Programm auf gleiche Weise übergeben wie bei einem Aufruf des Programms über die Anzeige zur Befehlseingabe (Command Entry). Die Parameter, die dem Programm mit dieser Methode übergeben werden, werden als Eingabeparameter behandelt (die dem Programm übergebenen Parameter können vom Programm verwendet und bearbeitet werden, Änderungen an den Parametern werden jedoch nicht zurück an Net.Data übertragen).
Sie übergeben Parameter indirekt, indem Sie Umgebungsvariablen verwenden. Umgebungsvariablen sind Zeichenfolgen im Format "name=value", die in einem Umgebungsbereich außerhalb des Programms gespeichert werden. Die Zeichenfolgen werden in einem temporärem Speicherplatz gespeichert, der dem Prozeß zugeordnet wird.
Wenn eine Funktion der Sprachumgebung DTW_SYSTEM aufgerufen wird, werden Eingabeparameter (IN) oder Eingabe-/Ausgabeparameter (INOUT) der Funktion von der Sprachumgebung im Umgebungsbereich gespeichert, bevor die Anweisung im %EXEC-Block ausgeführt wird. Nach erfolgreicher Ausführung der Anweisung ermittelt die Sprachumgebung DTW_SYSTEM, ob es OUT- oder INOUT-Funktionsparameter gibt. Trifft dies zu, ruft die Sprachumgebung den Wert, der dem Funktionsparameter entspricht, aus dem Umgebungsbereich ab und aktualisiert den Funktionsparameterwert mit dem neuen Wert. Wenn Net.Data die Steuerung erhält, aktualisiert es alle OUT- oder INOUT-Parameter mit den neuen, aus der Sprachumgebung DTW_SYSTEM erhaltenen Werten.
Umgebungsvariablen werden mit den APIs, die in Tabelle 3 beschrieben werden, aktualisiert:
Tabelle 3. Umgebungsvariablen-APIs
| ILE-Programmiersprache | Verwenden Sie zum Abrufen... | Verwenden Sie zum Festlegen... |
|---|---|---|
| C, C++ | getenv() | putenv() |
| CL(1), RPG, COBOL | QtmhGetEnv()(2) | QtmhPutEnv()(3) |
| ||
Sie können Net.Data-Tabellen an ein Programm übergeben, das von der SYSTEM-Sprachumgebung aufgerufen wird. Das Programm greift auf die Werte eines Net.Data-Makrotabellenparameters anhand der Net.Data-Namen dieser Werte zu. Die Spaltenüberschriften und Feldwerte sind in Variablen enthalten, die mit dem Tabellennamen und der Spaltennummer angegeben werden. Zum Beispiel sind in der Tabelle myTable die Spaltenüberschriften myTable_N_j und die Feldwerte myTable_N.i_j, wobei i die Zeilennummer und j die Spaltennummer ist. Die Anzahl der Zeilen in der Tabelle ist myTable_ROWS, die Anzahl der Spalten myTable_ COLS.
Es ist nicht empfehlenswert, Tabellen mit vielen Zeilen zu übergeben, weil die Anzahl der Umgebungsvariablen für den Prozeß beschränkt ist.