PDA

View Full Version : CL-Befehle in REXX/400



Ziegler
24-05-04, 18:05
Hallo liebe Kollegen von der AS/400-Zunft,

nachdem ich mich nun (als AS/400-Neuling) durch die
Grundlagen gekaempft habe, habe ich mich nun der Programmierung zugewandt und als Einstieg den REXX/400-Interpreter gewaehlt.
Dabei bin ich bereits nach ca. 5 Zeilen auf das erste Problem gestossen. Mein kleines Einstiegsprogramm sieht ungefaehr so aus:

/* REXX-Test */
say 'My first REXX program...'
address command
'SNDMSG MSG(Hello operator...) TOUSR(*SYSOPR)'
say 'Press any key to continue...'
pull .
exit
---------------------------------------------------------
Das Problem liegt bei dem CL-Befehl SNDMSG.
Ich bekomme immer einen RC von 'CPF0001' zurueck!
Die Nachrichten-Beschreibung sagt dazu lapidar 'Fehler in Befehl &1 gefunden'.
Der Befehl ist syntaktisch okay, ich habe ihn auch in dieser Form von der Kommandozeile ausgefuehrt.
Die Syntax im Programm entspricht auch der Beschreibung in der REXX-Referenz zur Ausfuehrung von Befehlen des jeweiligen Environments.

Was mache ich falsch?

Gruss

Reiner Ziegler

PS.: Kennt jemand noch andere Literatur ueber REXX/400 (ich habe nur die "Programmers Guide" und "Reference" gefunden)? Mich wuerde zum Beispiel interessieren, ob es moeglich ist, aus REXX heraus API-Funktionen auszufuehren (Socket-API).

Fuerchau
24-05-04, 18:31
Schau dir die Syntax von CL-Befehlen genauer an. Texte müssen in einfache Hochkomma gesetzt werden:

"SNDMSG MSG('Hello operator...') TOUSR(*SYSOPR)"

Alternativ auch:

Msg = 'Hello operator...'
'SNDMSG MSG(&Msg) TOUSR(*SYSOPR)'

Alle Programme, die direkt aufgerufen werden können, können auch von REXX verwendet werden.
Bei den Übergabe-Parametern ist das Problem allerdings die Art der Variablen (Strukturen, gepackte Felder, usw.). Diese muss man meist per Hex-Funktionen zusammen setzen.

Was die Socket-Funktionen angeht, so sind das C-Funktionen und keine Programme, daher von REXX nicht einsetzbar.

Allerdings wird von REXX sehr komfortabel SQL unterstützt.

Ziegler
24-05-04, 19:36
Hallo,

vielen Dank fuer die Loesung!
Die Variante mit den (einfachen) Hochkommas hatte ich auch schon probiert. Was ich allerdings NICHt probiert hatte, war den gesamten Environment-Befehl in DOPPELTE Hochkommas einzuschliessen!

Danke und Gruss

Reiner Ziegler