IBM Buch

Verwaltung und Programmierung für OS/400

Übergeben von Parametern an Programme

Es gibt zwei Möglichkeiten, Informationen an ein Programm zu übergeben, das durch die SYSTEM-Sprachumgebung (DTW_SYSTEM) aufgerufen wird: direkt und indirekt.

Direkt
Sie übergeben Parameter direkt beim Aufruf des Programms. Beispiel:
%DEFINE INPARM1 = "SWITCH1"
                           
%FUNCTION(DTW_SYSTEM) sys1() {
 %EXEC{
  /QSYS.LIB/NETDATA.LIB/RPGCALL1.PGM  ('$(INPARM1)'  'literalstring')
 %}
%}

Die Net.Data-Variable INPARM1 wird mit einem Verweis versehen und an das Programm übergeben. Die Parameter werden dem Programm auf die gleiche Weise übergeben wie bei einem Aufruf des Programms von der Befehlszeile aus. 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).

Indirekt

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 7 beschrieben werden, aktualisiert:

Tabelle 7. Umgebungsvariablen-APIs
ILE-Programmiersprache Verwenden Sie zum Abrufen... Verwenden Sie zum Festlegen...
C, C++ getenv() putenv()
CL(1), RPG, COBOL QtmhGetEnv()(2) QtmhPutEnv()(3)

  1. Beginnend mit OS/400 V3R7 können Sie auch die CL-Befehle CHGENVVAR und ADDENVVAR verwenden, um eine Umgebungsvariable festzulegen.

  2. QtmhGetEnv() ist im Lieferumfang von IBM TCP/IP Connectivity Utilities/400 enthalten.

  3. QtmhPutEnv() war ursprünglich nicht im Lieferumfang von IBM TCP/IP ConnectivityUtilities/400 für V3R2 und V3R7 enthalten. Es wurde später hinzugefügt und ist als V3R2-PTF 5763TC1-SF40953 oder V3R7-PTF 5716TC1-SF40954 erhältlich.

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.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]