Home Page
        Bestellung     Downloads     Support     Kontakt     English
ZOC Terminal ist ein professioneller SSH Client und Terminal-Emulator für Windows und macOS.
ZOC Online Hilfe Thema:

Die Programmierung von ZOC (REXX/DDE) → Einführung in REXX

 

Über REXX und ZOC

Die von ZOC verwendete Skriptsprache REXX hat eine lange Tradition, speziell in der IBM-Welt. Die Sprache ist einfach aber vielseitig und bietet alle Elemente einer Programmiersprache, notwendig sind um Programme von einfacher bis mittlerer Komplexität zu schreiben (Variablen, Schleifen, Dateibehandlung, Prozeduren, usw.). Es gibt sogar eine objektorientierte Variante von REXX.

Die Programmierbarkeit von ZOC entsteht durch einer Kombination aus der Sprache REXX und ZOC-spezifischen Erweiterungen. Da REXX selbst bereits eine etablierte Skriptsprache ist, nutzt ZOC diese als Fundament und baut darauf mit eigenen Funktionen zur Terminalemulation und Kommunikation auf. Diese Erweiterungen heben sich vom normalen Sprachumfang ab, indem Sie immer mit dem Namen Zoc beginnen, z.B. ZocConnect.


 
Hinweis: Die in ZOC verwendete REXX Interpreter ist REGINA REXX (https://regina-rexx.sourceforge.net/). Falls Sie eine andere REXX-Implementierung bevorzugen (z.B. OOREXX), können Sie diese unter Optionen→Programmeinstellungen→Spezielle Dateien→Alternative REXX-DLL konfigurieren.

 

 

ZOC REXX lernen

Nachfolgend finden Sie einen groben Einblick in die REXX Programmierung. Nachdem Sie diesen Überblick gelesen haben, sollten Sie einen Blick auf die Themen REXX Sprachelemente und ZOC-REXX Befehle werfen. Diese decken den notwendigen Sprachumfang für den größten Teil aller anfallenden Aufgaben ab.

Abgesehen davon befindet sich im Ordner Eigene Dateien→ZOC8 Dateien→Rexx das Archiv ZocScriptingSamples.zip mit deutschsprachigen Schritt-für-Schritt Beispielen. Darüberhinaus gibt es weitere REXX Online Dokumentation auf der EmTec-Webseite.

Sollten Sie REXX auf einem komplexeren Level verwenden wollen, sollten Sie den Text ZOC REXX Reference (PDF, engl) ansehen, den Sie auch im o.g. Ordner oder auf der Webseite finden.

 

 

Ein erstes Beispiel

Die ZOC-REXX Versionen des berühmten Hello-World Programms sehen so aus:
 

/* REXX */
-- "Hello World" am ZOC Bildschirm ausgeben
SAY "Hello World"

 
/* REXX */
-- "Hello World" zur Gegenstelle senden
CALL ZocSend "Hello World"

 
/* REXX */
-- Die Gegenstelle "Hello World" ausgeben lassen
CALL ZocSend "echo 'Hello World!'^M"

 

Grundsätzliches

Alle REXX-Programme beginnen in der Regel mit einem Kommentar. REXX sieht jeden Text, der zwischen /* und */ steht, also Kommentar an. Folglich sollte die erste Zeile eines REXX-Programms in etwa so aussehen: /* REXX */. Zusätzlich zu dieser Form von Kommentaren kennt REXX noch Kommentare bis zum Ende der Zeile, die durch -- eingeleitet werden (siehe die Beispiele oben).

REXX kennt Standard- und Erweiterungsbefehle. Beispiele für REXX Standardbefehle sind SAY, IF, DO, END. ZOC-Erweiterungsbefehle sind zum Beispiel ZocConnect, ZocSend, ZocDisconnect.

Der Übersichtlichkeit halber werden die nativen REXX Sprachelemente in Großschrift verwendet, z.B. CALL, IF, SAY. ZOC-Erweiterungen werden dagegen in CamelCase angegeben, z.B. ZocAsk, ZocWrite. Namen die im Programm vom Benutzer selbst vergeben werden (z.B. Variablen, Prozeduren, etc.), stehen in Kleinbuchstaben, z.B. ergebnis= 10*eingabe.

 

 

Wie werden die verschiedenen Befehlstypen angesprochen

       
Standardbefehle
 

Standardbefehle werden durch Namen und ggf. Argumente angegeben (alle unten stehenden Wörter in Großbuchstaben sind Standard-REXX Befehle):
 

IF rc=640 THEN DO
    SAY "Anruf fehlgeschlagen!"
    SIGNAL done
END
ELSE DO
    SAY "Success!"
END

ZOC-Befehle
 

ZOC-Befehle werden als eine Art REXX-Unterfunktion aufgerufen und ausgeführt. Es gibt sie im Prinzip in zwei Formen:

Befehle, die keine Rückgabewert liefern (oder wenn Sie diesen nicht benötigen), werden durch CALL zusammen mit dem ZOC-Befehl und den benötigten, durch Komma getrennten, Argumenten aufgerufen. Befehle, die Rückgabewerte liefern, übergeben die Liste aller Argumente, in Klammern eingeschlossen, hinter dem Befehlsnamen.
 

/* Zwei Befehle ohne Rückgabewert: */
CALL ZocBeep 2
CALL ZocConnect "sss.hogwarts.edu"
    
/* Ein Befehl mit Rückgabewert: */
answer= ZocAsk("Wie ist Ihr Name")
 

 

 

Ein kleines Beispiel

Eine häufige Anwendung für REXX-Programme ist das Einloggen und die automatische Ausführung von Befehlen.

Einfache Login-Prozeduren können zwar auch ohne REXX Skript direkt im jeweiligen Eintrag des Adressbuchs als AutoLogin angegeben werden (siehe Adressbucheinträge ändern), deren Möglichkeiten sind jedoch auf sehr simple Abläufe begrenzt.

Das nachfolgende REXX Beispiel ist dagegen etwas komplexer. Es baut eine SSH Verbindung zu einem Rechner auf, führt dort den mail Befehl aus um zu sehen ob neue Email vorliegt, meldet sich wieder ab und zeigt ggf. eine Meldung.
 

    
/*REXX*/
    
-- variablen mit host und logininformationen
hostip= "users.hogwarts.edu"
username= "harryp"
password= "alohomora"
    
-- ssh verbindung aufbauen
CALL ZocSetDevice "Secure Shell"
CALL ZocConnect username":"password"@"hostip
    
-- falls der rechner antwortet, sollten wir innerhalb
-- von wenigen sekunden den text "last login" sehen
-- (resultat von 640 beim wait-befehl bedeutet timeout)
CALL ZocTimeout 10
x= ZocWait("Last login")
IF x\=640 THEN DO
    -- erfolgreich angemeldet, auf prompt warten
    CALL ZocWait "$"
    
    -- sende den befehl 'mail'
    CALL ZocSend "mail^M"
    
    -- das echo des mail-befehls ueberspringen
    CALL ZocWaitline
    
    -- die naechste zeile die kommt, ist die ausgabe
    -- von 'mail' (z.b. 'no mail for harryp')
    CALL ZocWaitline
    themail= ZocLastline()
    
    -- abmelden und verbindungsabbau
    CALL ZocSend "exit^M"
    CALL ZocDelay 1
    CALL ZocDisconnect
    
    
    /* wenn die antwort nicht mit "No mail" anfaengt,
     wird eine Meldung fuer den Benutzer angezeigt */
    IF LEFT(themail,7)\="No mail" THEN DO
        CALL ZocMsgBox themail
    END
END
    

 
Hinweis: Weitere Beispiele finden Sie im ZocScriptingSamples.zip Archiv.

 

 

Was nun?

Nach diesem Überblick ist der nächste Schritt die Übersicht über die REXX Sprachelemente.

 
← Zurück zu Die Programmierung von ZOC (REXX/DDE)

 

Downloads
Orders
Contact
Support
Terms of Use
Privacy Policy