Dieser Abschnitt beschreibt in alphabetischer Reihenfolge die ZOC-Erweiterungen
zur REXX-Sprache. Alternativ gibt es auch eine
Liste von ZOC-REXX Befehle nach Kategorien
REXX ist ansich eine vollständige Programmiersprache mit Variablen,
Schleifen usw. (siehe REXX-Sprachelemente).
Dieser Grundumfang wird von ZOC durch die untenstehenden Befehle für die
Terminalemulation erweitert.
Der Übersichtlichkeit halber werden in den unten folgenden Beispielen die
REXX Sprachelemente in Großschrift verwendet, z.B. CALL, IF,
SAY. ZOC-Erweiterungen werden 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. antwort= ZocAsk("Ihr Name?")).
Grundsätzlich gibt es zwei Arten von ZOC-Befehle: Befehle, die
einen Wert zurückgeben und Befehle, die keinen Wert
zurückgeben.
Allerdings ist es möglich, Funktionen (also Befehle mit Rückgabewert)
wie Prozeduren aufzurufen, wenn der Rückgabewert nicht von Interesse ist.
Daher sind z.B. sowohl die Aufrufe CALL ZocDownload "ZMODEM", "DATENORDNER"
als auch error= ZocDownload("ZMODEM", "DATENORDNER")
erlaubt. Zusätzlich erlaubt die ZOC-REXX Implementierung sogar
die folgende Variante: CALL ZocDownload("ZMODEM", "SOMEFOLDER")
In der nachfolgenden alphabetisch sortierten Befehlsliste sind diejenigen ZOC-Erweiterungen,
die signifikante Rückgabewerte haben, dadurch gekennzeichnet, dass sie in den Syntax-Beispielen
in Funktionsform (mit Klammern) geschrieben sind.
| |
ZocAsk([<titel> [, <vorgabe>]]) |
|
Öffnet ein Texteingabefenster und liest Text vom Benutzer ein.
Bei Angabe eines Arguments <vorgabe> wird das Eingabefeld mit diesem Text vorbelegt.
Beispiel:
answer= ZocAsk("Das beste Terminal?", "ZOC")
IF answer= "ZOC" THEN …
Siehe auch: ZocDialog, ZocAskPassword, ZocAskFilename, ZocAskFoldername, ZocRequest, ZocRequestList
|
ZocAskPassword([<titel>]) |
|
Ähnlich dem Befehl ZocAsk, dient jedoch zur Kennworteingabe, d.h. eingegebenen Zeichen
werden nur als Platzhalter angezeigt. Außerdem kann das Feld nicht vorbelegt werden.
Beispiel:
pw= ZocAskPassword("Ihr Passwort?")
IF pw=="geheim" THEN …
Siehe auch: ZocAsk, ZocDialog, ZocAskFilename, ZocRequest, ZocRequestList
|
ZocAskFilename(<titel> [, <vorgabe>]) |
|
Öffnet einen Dateiauswahldialog und liefert den ausgewählten Dateinamen zurück.
Bei Abbruch des Dialogs wird der Text ##CANCEL## zurückgeliefert.
Beispiel:
file= ZocAskFilename("Welche Datei übertragen?", "*.ZIP")
IF file\="##CANCEL##" THEN DO
CALL ZocUpload "ZMODEM", file
END
Siehe auch: ZocAsk, ZocDialog, ZocFilename, ZocAskFilenames, ZocAskFoldername, ZocListFiles, ZocMessageBox, ZocRequest, ZocRequestList
|
ZocAskFilenames(<title> [, <vorgabe> [, <trennzeichen>]]) |
|
Öffnet einen Dateidialog und liefert die Liste der selektieren Dateinamen
zurück. Die <vorgabe> kann einen Ordner oder eine vorselektierte Datei angeben.
Bei Abbruch des Dialogs wird der Text ##CANCEL## zurückgeliefert.
Die Namen können per REXX Funktion ZocString("WORD", idx) aus der
Liste extrahiert werden. Falls Sie Dateinamen erwarten, die Leerzeichen im
Namen haben, muss ein anderes Trennzeichen angegeben werden. Die Namen können
dann stattdessen mittels der Funktion ZocString("PART", …)
aus der Liste geholt werden.
Beispiel:
files= ZocAskFilenames("Welche Dateien bearbeiten?", "*.ZIP", "|")
anzahl= ZocString("PARTCOUNT", files, "|")
DO i=1 TO anzahl
name= ZocString("PART", files, i, "|")
SAY i||". NAME= "||name
END
Siehe auch: ZocAsk, ZocFilename, ZocAskFilename, ZocAskFoldername, ZocListFiles, ZocMessageBox, ZocRequest, ZocRequestList
|
ZocAskFoldername(<titel> [, <vorgabe>]) |
|
Öffnet einen Dialog zur Auswahl eines Ordners und liefert den gewählten Namen zurück.
Die optionale <vorgabe> ist ein Ordner, der beim Anzeigen des Dialogs vorselektiert ist.
Bei Abbruch des Dialogs wird der Text ##CANCEL## zurückgeliefert.
Beispiel:
folder= ZocAskFoldername("Select Folder")
IF folder\="##CANCEL##" THEN DO
SAY folder
END
Siehe auch: ZocFilename, ZocAskFilename, ZocAskFilenames, ZocListFiles
|
ZocBeep <n> |
|
Erzeugt n Signaltöne.
Beispiel:
CALL ZocBeep 2
|
ZocClipboard <kommando> [, <zeichenkette>] |
|
Führt eine Funktion der folgenden Funktion der Zwischenablage aus.
| |
READ |
|
Liefert den Inhalt der Zwischenablage
|
WRITE |
|
Schreibt den Wert des zweiten Parameters in die Zwischenablage
|
Beispiel:
clip= ZocClipboard("READ")
newclip= clip||ZocCtrlString("^M^J Zoc war hier!")
CALL ZocClipboard "WRITE", newclip
|
ZocClearScreen |
|
Löscht den Bildschirm und setzt die momentan aktive Emulation in den Ursprungszustand zurück.
Beispiel:
CALL ZocClearScreen
|
ZocCommand <funktion> |
|
Führt eine ZOC-interne Funktion aus. Gültige Werte für <funktion> sind:
| |
CLS |
|
Bildschirm löschen.
|
CLEARSCROLLBACK |
|
Inhalt des Scroll-Back Puffers löschen.
|
CANCELCONNECT |
|
Momentan laufenden Verbindungsaufbau abbrechen.
|
DISCONNECT |
|
Aktuelle Verbindung unterbrechen.
|
LOADGLOBALCOLORS |
|
Lädt die globale Farbtabelle aus einer Datei.
|
SAVEPROGRAMSETTINGS |
|
Speichert mit ZocSetProgramOption gemachte Änderungen permanent ab.
|
SAVESESSIONPROFILE |
|
Speichert Änderungen am Verbindungsprofil (durch ZocSetSessionOption) in die Datei.
|
SENDBREAK |
|
Sendet ein Break-Signal an das Modem (nur mit Verbindungstyp Serial/Modem).
|
SETMARKEDAREA |
|
Markiert einen Bildschirmbereich. Nach dem Funktionsnamen folgt entweder das Wort
BLOCK oder STREAM und danach die Koordinaten x1,y1 und x2,y2.
|
Beispiel:
CALL ZocCommand "SAVESESSIONPROFILE"
Beispiel:
CALL ZocCommand "SETMARKEDAREA", "BLOCK", 0,0, 1,79
Siehe auch: ZocMenuEvent
|
ZocConnect [<gegenstelle>] |
|
Baut einer Verbindung zur angegebene Gegenstelle auf. Ist der Parameter nicht angegeben,
erscheint ein Eingabefenster. Als Verbindungstyp dient entweder die aktuell im
Verbindungsprofil eingestellte Verbindungstyp, bzw. kann dieser mittels des Befehls
ZocSetDevice festgelegt werden.
Hinweis: Bei SSH-Verbindungen kann die Login-Information in der folgenden
Form mitgegeben werden: CALL ZocConnect "user:pass@ssh.somedomain.com".
Falls nötig können Sie auch den Namen einer Schlüsseldatei mit Doppelpunkt getrennt
hinter dem Kennwort angeben:
CALL ZocConnect "user:pass:id_rsa@ssh.somedomain.com".
Beispiel:
CALL ZocSetDevice "Secure Shell"
CALL ZocConnect "harry:alohomora@192.168.1.1:10022"
Beispiel:
CALL ZocSetDevice "Telnet"
CALL ZocConnect "server.hogwarts.edu"
Call ZocTimeout 20
x= ZocWait("Login:")
IF x=640 THEN SIGNAL waitfailed /* login-prompt kam nicht */
CALL ZocSend "harry^M"
x= ZocWait("Password:")
IF x=640 THEN SIGNAL waitfailed /* password-prompt kam nicht */
CALL ZocSend "alohomora^M"
/* here we are logged in */
waitfailed:
EXIT
Siehe auch: ZocConnectHostdirEntry, ZocSetDevice, ZocDisconnect, ZocGetInfo("ONLINE")
|
ZocConnectHostdirEntry <name> |
|
Stellt eine Verbindung über einen Eintrag im Adressbuch an (der Eintrag
sollte nicht mit einer AutoLogin REXX-Datei verknüpft sein).
Beispiel:
CALL ZocConnectHostdirEntry "ZOC-Support-Mailbox"
Siehe auch: ZocConnect, ZocDisconnect, ZocGetInfo("ONLINE")
|
ZocCtrlString(<text>) |
|
Diese Funktion konvertiert eine Zeichenkette die Control-Codes enthält in eine
Zeichenkette, bei der die Steuerzeichen durch
ihre eigentlichen Werte/Bytes ersetzt sind.
Beispiel:
crlf= ZocCtrlString("^M^J") /* crlf wird hex"0D0A" */
Siehe auch: ZocString
|
ZocDdeClient([<kanal>,] <unterkommando> [, <parameter>] |
|
Diese Funktion kann dazu verwendet werden, um mit anderer Software über DDE
(Dynamic Data Exchange) zu interagieren. MS-Excel unterstützt z.B. DDE und
der DDE-Client kann dazu verwendet werden, um zum Beispiel Daten aus einem
Excel Arbeitsblatt abzufragen.
Mögliche <unterkommandos> sind:
| |
INIT |
|
Initialisiert eine DDE Verbindung. INIT folgen zwei Parameter: "DDE-Server" und "Topic".
INIT liefert entweder ##ERROR## zurück, oder eine Kanalnummer für nachfolgende Befehle.
|
EXECUTE |
|
Führt eine Serverfunktion aus. Auf EXECUTE folgt ein Parameter: "Execution-Command" (z.B. ein Excel Befehl).
|
REQUEST |
|
Ruft Daten vom Server ab. REQEUST folgt ein Parameter: "Data-Address" (z.B. eine Excel-Zelle oder ein Bereich).
|
CLOSE |
|
Schließt einen geöffneten DDE-Kanal.
|
Beispiel:
chan= ZocDdeClient("INIT", "EXCEL", "Tabelle1")
SAY "INIT: channel= "||chan
IF chan\="##ERROR##" THEN DO
data= ZocDdeClient(chan, "REQUEST", "Z1S1")
SAY "REQUEST-DATA: "||data
CALL ZocDdeClient chan, "CLOSE"
END
EXIT
|
ZocDelay [<dauer>] |
|
Wartet die angegebene <dauer> in Sekunden oder 200 Millisekunden (falls kein Parameter
angegeben wurde).
Bruchteile von Sekunden können mit Dezimalpunkt (nicht Komma) dargestellt werden.
Beispiel:
CALL ZocDelay 4.8
|
ZocDeviceControl <string> |
|
Dieser Befehl gibt ein Kommando an eines der ZOC Kommunikationsgeräte um
dort spezielle Funktionen auszuführen (z.B. Abfrage der Signale am COM-Port
bei Verbindungstyp Serial/Modem).
Mögliche Funktionen der einzelnen Kommunikationsmethoden sind unter Verbindungsmethoden beschrieben.
Beispiel:
state= ZocDeviceControl("GETRS232SIGNALS")
Siehe auch: ZocSetDevice
|
ZocDialog <subcommand> [, <parameter>] |
|
Führt eine Dialog-Funktion aus:
| |
LOAD |
|
Lädt ein benutzerdefiniertes Dialogfenster. Der zweite Parameter ist eine Kombination
aus Dialognamen und dem Dateinamen der Dialog-Vorlage-Datei (der Dateiname muss entweder
den kompletten Dateipfad enthalten, oder die Datei muss sich im Verzeichnis befinden, in dem
sich das laufende Script befindet).
|
SHOW |
|
Zeigt ein benutzerdefiniertes (vorher geladenes) Dialogfenster an. Optional kann ein
zweiter Parameter wie bei LOAD angegeben werden, in dem Fall beinhaltet der SHOW
Befehl das Laden, d.h. es muss vorher kein gesonderter LOAD Befehl verwendet werden.
|
GET |
|
Liefert den Wert eines Dialog-Elements zurück (z.B. den Text, der vom Benutzer in ein Eingabefeld
geschrieben wurde, oder den Zustand einer Checkbox oder eines Radiobuttons).
|
SET |
|
Setzt den Startwert eines Dialog-Elements (z.B. den Text, der dem Benutzer in einem Eingabefeld
angezeigt wird oder die Beschriftung. Bei einer Checkbox oder einem Radiobutton kann mit den Werten
"##ON##" oder "##OFF##" auch der Anfangszustand (aktiviert/deaktiviert) gesetzt werden).
|
Detaillierte Informationen zur Erstellung von Dialog-Vorlagen finden Sie unter
ZocDialog-Vorlagen.
Beispiel:
dlgrc= ZocDialog("SHOW", "MAIN@test.dlg")
IF dlgrc=="##OK##" THEN DO
name= ZocDialog("GET", "ED1")
SAY "Hallo "||name
SAY ZocDialog("GET", "CB1")
SAY ZocDialog("GET", "P1")
SAY ZocDialog("GET", "P2")
END
Beispiel:
dlgrc= ZocDialog("LOAD", "MAIN@test.dlg")
SAY "Dialog load result: "||dlgrc
CALL ZocDialog "SET", "ED1", "Test"
CALL ZocDialog "SET", "CB1", "1"
CALL ZocDialog "SET", "DD1", "Red"
CALL ZocDialog "SET", "DD2", "Apple|Orange|Grape"
CALL ZocDialog "SET", "DD2", "Orange"
dlgrc= ZocDialog("SHOW")
IF dlgrc=="##OK##" THEN DO
/* ergebnisse bearbeiten */
END
Siehe auch: ZocAsk, ZocAskPassword, ZocMessageBox, ZocRequest, ZocRequestList
|
ZocDisconnect |
|
Beendet die momentane Verbindung. Identisch mit ZocCommand "DISCONNECT".
Beispiel:
CALL ZocDisconnect
Siehe auch: ZocConnect, ZocConnectHostdirEntry
|
ZocDownload(<protokoll>[:<optionen>], <datei oder verz>) |
|
Datei-Download einer oder mehrerer Dateien unter Verwendung eines Protokolls.
Der erste Parameter ist der Name des Übertragungs-Protokolls wie in der Liste bei
Optionen→Verbindungsprofil→Dateitransfer.
Der zweite Parameter kann einen Dateinamen oder Pfad zum Speichern der
empfangenen Dateien enthalten (siehe Hinweis unten).
Der Parameter <optionen> ist beim Befehl ZocUpload ausführlich erklärt.
Diese Funktion liefert je nach Erfolg oder Fehler die Zeichenkette
##OK## oder ##ERROR##
zurück.
Beispiel:
CALL ZocSetSessionOption "TransferAutoStart=no"
ret= ZocDownload("ZMODEM", "C:\ZOC\INFILES")
IF ret=="##ERROR##" THEN DO
CALL ZocBeep 5
SAY "Download fehlgeschlagen."
END
Hinweis: Der zweite Parameter hängt von der Art des Transfers ab:
XMODEM: Lokaler Dateiname (Zieldatei).
YMODEM: Lokaler Ordner (Zielordner).
ZMODEM: Lokaler Ordner (Zielordner).
SCP: Entfernter Dateiname (Quelldatei), z.B. /var/log/somefile.txt
Hinweis: Wenn in den Transfer-Optionen die Funktion Autostart
eingeschaltet ist und die Gegenstelle den Transfer startet, noch bevor
ZOC-REXX den ZocDownload-Befehl verarbeitet, öffnen sich zwei Download-Fenster.
Es muss deshalb sichergestellt sein, dass ZocDownload ausgeführt wird bevor die
Gegenstelle anfängt zu senden, oder dass die Autostart-Option ausgeschaltet ist.
Hinweis: Falls die Datei einen Namen hat, der in
Optionen→Verbindungsprofil→Dateibehandlung zur
Speicherung im alternativen Download-Verzeichnis vorgesehen ist, wird der
Verzeichnis-Parameter ignoriert.
Siehe auch: ZocUpload
|
ZocDoString(<aktionscode>) |
|
Übergibt einen Aktionscode zur Ausführung an ZOC.
Sie können eine solche Zeichenkette erstellen, indem Sie unter
Optionen→Tastaturprofile temporär eine Taste
mittels des dortigen Aktions-Assistenten belegen und danach den dort erzeugten
Wert kopieren.
Beispiel:
CALL ZocDoString "^EXEC=notepad.exe"
Siehe auch: ZocMenuEvent, ZocShell, ZocSendEmulationKey
|
ZocEventSemaphore(<unterkommando>[, <signal-id>]) |
|
Diese Funktion kann verwendet werden, um Signale zwischen gleichzeitig laufenden
REXX Skripen auszutauschen, bzw. diese zu synchronisieren. Sie bietet einen
Signal-Mechanismus mit insgesamt 16 Signalen, auf die andere Skripte warten können.
Mögliche Werte für <unterkommando> sind:
| |
RESET |
|
Setzt den Signalisierungszustand des eigenen Skripts zurück.
|
FIRE |
|
Schickt ein Signal an alle Skripte.
|
TEST |
|
Liefert die Anzahl der Signale, seit dem letzten Reset.
|
WAIT |
|
Wartet auf ein Signal.
Wenn seit dem letzten Reset bereits mind. ein Signal eingetroffen is,
kommt die Funktion sofort zurück und liefert den Signalzähler (max 255)
und setzt das Signal zurück.
Ansonsten wartet die Funktion, bis entweder ein Signal
eintrifft, oder bis das Timeout abläuft (siehe ZocTimeout, in diesem Fall ist
der Returncode 640).
|
<signal-id> |
|
Eine optionale Nummer [1..15] um ein alternatives Signal zu verwenden
(Standard ist 0).
|
Beispiel:
Call ZocEventSemaphore "RESET"
/* do some work */
…
/* Warte auf Signal (FIRE) von anderem Script */
ret= ZocEventSemaphore("WAIT")
IF ret\=640 THEN DO
/* Signal erhalten */
END
Siehe auch: ZocTimeout, ZocWait, ZocGlobalStore
|
ZocFilename(<befehl>[, <options>]) |
|
Diese Gruppe von Funktionen bietet Dateinamensoperationen.
| |
COMBINE <path>[, <path2>], <file> |
|
Kombiniert die Namensteile zu einem
Dateinamen. Falls <file> bereits ein voll qualifizierter Dateiname ist,
wird <path> und ggf. <path2> ignoriert.
|
EXISTS. <dateiname> |
|
Liefert ##YES## bzw. ##NO##, je nachdem ob die Datei existiert.
|
GETFILE, <dateiname> |
|
Liefert nur den Dateinamensteil eines Dateinamens.
|
GETPATH, <dateiname> |
|
Liefert nur den Verzeichnisteil eines Dateinamens.
|
GETVOLUMELABEL, <laufwerk> |
|
Liefert die Bezeichnung eines Laufwerks, z.B. "C:" (nur Windows).
|
GETSIZE, <dateiname> |
|
Liefert die Größe einer Datei.
|
ISFOLDER <pfadname> |
|
Liefert ##YES## oder ##NO##, je nachdem ob der angegebene Pfad ein Ordner oder eine Datei ist.
|
RESOLVE, <string> |
|
Löst eine der speziellen ZOC Dateinamensvariablen wie
%ZOCFILES% auf (die anderen ZocFilename Funktionen tun dies automatisch).
|
WRITEACCESS <dateiname> |
|
Liefert ##YES## oder ##NO##, je nachdem ob Schreibrechte für die Datei bestehen.
|
Beispiel:
workdir= ZocGetInfo("WORKDIR")
datadir= ZocFilename("RESOLVE", "%ZOCFILES%");
fullfile= ZocAskFilename("Choose File", workdir)
file= ZocFilename("GETFILE", fullfile)
path= ZocFilename("GETPATH", fullfile)
file2= file||".tmp"
target= ZocFilename("COMBINE", path, file2)
IF ZocFilename("EXISTS", target)=="##YES##" THEN DO
CALL ZocMessageBox "Can't overwrite file "||file2
EXIT
END
|
ZocFileCopy(<dateiname>, <ziel>) |
|
Kopiert eine Datei an einen anderen Ort. Ziel kann entweder ein Ordner oder Dateiname
sein kann (Wildcards wie * oder ? werden nicht unterstützt, siehe ggf.
ZocListFiles).
Beispiel:
CALL ZocFileCopy "Z:\SALES.DAT", "Z:\SALES.BAK"
ok= ZocFileCopy("C:\DATA\USERFILE.TMP", "C:\BACKUP")
IF ok\="##OK##" THEN EXIT
Siehe auch: ZocFilename, ZocFileDelete, ZocFileRename, ZocListFiles, ZocShell
|
ZocFileDelete(<dateiname>) |
|
Löscht eine Datei. Der Dateiname darf keine Jokerzeichen (* oder ? )
enthalten (siehe ggf. ZocListFiles).
Rückgabewerte sind ##OK## oder ##ERROR##
Beispiel:
ok= ZocFileDelete("C:\DATA\USERFILE.TMP")
IF ok\="##OK##" THEN EXIT
filename= ZocFilename("COMBINE", "%ZOCFILES%", "rexx.log")
CALL ZocFileDelete filename
Siehe auch: ZocFilename, ZocFileRename, ZocFileCopy, ZocListFiles, ZocShell
|
ZocFileRename(<oldname>, <newname>) |
|
Benennt eine Datei um. Die umbenannte Datei befindet sich im selben Verzeichnis wie die ursprüngliche Datei.
Dateinamen dürfen keine Jokerzeichen (* oder ?) enthalten (siehe ggf. ZocListFiles).
Rückgabewerte sind ##OK## oder ##ERROR##
Beispiel:
ret= ZocFileRename("C:\DATA\USERFILE.TMP", "C:\DATA\USERFILE.TXT")
Siehe auch: ZocFilename, ZocFileDelete, ZocFileCopy, ZocListFiles, ZocShell
|
ZocGetHostEntry(<name>, <schlüsselwort>) |
|
Liefert die Zeichenkette für eine Einstellung eines Adressbucheintrags im Schlüsselwort-Wert
Format (siehe hierzu auch die Befehle ZocSetHostEntry oder ZocSetSessionOption) .
Beispiel:
pair= ZocGetHostEntry("ZOC-Support-Mailbox", "connectto")
PARSE VALUE pair WITH key'="'val'"'
CALL ZocConnect val
|
ZocGetInfo(<detail>) |
|
Abhängig vom Parameter, liefert diese Funktion eine entsprechende Information über
die Systemumgebung und über den internen Zustand von ZOC.
| |
COMPUTERNAME |
|
Der Name des Rechners auf dem ZOC läuft.
|
CONNECTEDTO |
|
Der Host oder die Telefonnummer mit der wir verbunden sind.
|
CURRENTDEVICE |
|
The name of the currently active communication method, e.g. Telnet.
|
CURRENTEMULATION |
|
The name of the currently active emulation, e.g. Xterm.
|
CURRENTLOGFILENAME |
|
Aktueller Dateiname für das Log (ohne Pfad).
|
CURRENTSCRIPTNAME |
|
Dateiname und Pfad des Hauptskripts das momentan läuft (Unterskripte die
mit CALL aufgerufen wurden, werden von diesem Befehl nicht zurückgemeldet).
|
CURRENTSESSIONPROFILENAME |
|
Der Dateiname und Pfad des aktuellen Verbindungsprofils.
|
CURSOR-X |
|
Die X-Position des Cursors am Bildschirm (beginnend mit 0).
|
CURSOR-Y |
|
Die Y-Position des Cursors am Bildschirm (beginnend mit 0).
|
DESKTOPSIZE |
|
Die Nettogröße des Windows/macOS Desktop in Pixel (ohne Taskbar, Dock, etc.)
|
DOWNLOADDIR |
|
Das Laufwerk und Verzeichnis für Downloads.
|
EXEDIR |
|
Das Verzeichnis, in dem ZOC installiert ist.
|
LASTDOWNLOADEDFILE |
|
Name und Ordner der letzten Datei die gedownloaded wurde.
|
MARKEDAREA |
|
Die Start/End Position und Mode der Bildschirmmarkierung in der Form x1,y1,x2,y2,mode
(Positionen starten bei Null) oder der Text ##NONE##.
|
ONLINE |
|
Information, ob momentan eine Verbindung besteht:
##YES##, ##NO##, ##UNKNOWN##.
|
OSYS |
|
Information über das aktuelle Betriebssystem, z.B. Windows 10.
|
OWNIP |
|
Die IP-V4 Adresse des Computers im lokalen LAN oderr WLAN.
|
PROCESSID |
|
Die Prozess-ID, die das Betriebssystem ZOC zugeteilt hat.
|
SCREENHEIGHT |
|
Höhe (Anzahl Zeilen) des Terminal-Fensters.
|
SCREENWIDTH |
|
Breite (Anzahl Zeichen pro Zeile) des Terminal-Fensters.
|
TRANSFER |
|
Information, ob momentan eine Dateiübertragung läuft:
##YES##, ##NO##.
|
TN3270FIELDATTR x y |
|
Die TN3270 Feldattribute und EA-Farben an einer gegebenen Stelle am Bildschirm
(x,y sind nullbasierte Zahlen). Ergebnis in der Form Attr Foreground Background Flags ….
|
UPLOADDIR |
|
Das Laufwerk und Verzeichnis für Uploads.
|
USERID |
|
Die User-ID des aktuellen Windows-Benutzers.
|
VERSION |
|
Die ZOC-Versionsnummer, z.B. 7.24
|
VERSIONEX |
|
Die ZOC-Versionsnummer incl. Beta-Version (falls vorhanden), z.B. 7.24b
|
WINPOS |
|
Position und Größe des ZOC-Fensters (in Pixel).
|
WORKDIR |
|
Das Arbeitsverzeichnis, in dem Optionen usw. gespeichert
werden.
|
Beispiel:
ver= ZocGetInfo("VERSIONEX")
SAY "ZOC "||ver
CALL ZocTimeout 30
timeout= ZocWait("Passwort")
IF timeout=640 | ZocGetInfo("ONLINE")<>"##YES##" THEN DO
SIGNAL PANIC /* Verbindungsabbruch */
END
|
ZocGetProgramOption(<schlüsselwort>) |
|
Liefert die Zeichenkette für eine ZOC-Einstellung im Schlüsselwort-Wert Format
(Details zu diesem Format in der Beschreibung des Befehls ZocGetSessionOption
und ZocSetProgramOption).
Beispiel:
pair= ZocGetProgramOption("DisconEndProg")
PARSE VALUE pair WITH key"="value
IF value=="yes" THEN DO
SAY "ZOC wird nach dieser Verbindung beendet."
END
Siehe auch: ZocGetProgramOption, ZocGetSessionOption, ZocSetProgramOption
|
ZocGetScreen(<x>,<y>,<länge>) |
|
Diese Funktion kann verwendet werden, um Zeichen auszulesen, die aktuell auf
dem ZOC-Bildschirm angezeigt werden. Die Funktion liefert <länge>
Zeichen ab der Bildschirmposition <x>,<y> (0,0 = links/oben) zurück
und springt ohne Anhängen von CR oder LF automatisch in nächste Zeilen.
Alternativ gibt es einige Abkürzungen für häufige Kombinationen von x,y und Länge:
ALL: Der gesamte Bildschirm (d.h. von Position 0/0 in der Länge SCREENWIDTH*SCREENHEIGHT)
LEFTOFCURSOR: Der Text links vom Cursor (Position= 0/CURSOR-Y, Länge= CURSOR-X)
CURRENTLINE: Die ganze Zeile in der der Cursor steht (Position= 0/CURSOR-Y, Länge= SCREENWDITH)
Beispiel:
curline= ZocGetScreen("LEFTOFCURSOR")
SAY "^M"
SAY "Der Text links vom Cursor war: "||curline
Beispiel:
width= ZocGetInfo("SCREENWIDTH")
posy= ZocGetInfo("CURSOR-Y")
data= ZocGetScreen(0,0, posy*width)
IF POS("A", data)=0 THEN DO
SAY "Der Bildschirmabschnitt über dem Cursor enthält kein 'A'."
END
Beispiel:
cx= ZocGetInfo("SCREENWIDTH")
cy= ZocGetInfo("SCREENHEIGHT")
-- Schleife über alle Zeilen am Bildschirm
DO y= 0 TO cy-1
line= ZocGetScreen(0,y, cx)
-- Prüfe jede Zeile auf den Text "**SUCCESS**"
IF POS("**SUCCESS**", line)>=1 THEN DO
Call ZocMessageBox "**SUCCESS* gefunden in Zeile "||y
END
END
Siehe auch: ZocGetInfo("CURSOR-X"), ZocGetInfo("CURSOR-Y"), ZocGetInfo("SCREENWIDTH"), ZocGetInfo("SCREENHEIGHT")
|
ZocGetSessionOption(<schlüsselwort>) |
|
Liefert die Zeichenkette Schlüsselwort-Wert für eine ZOC-Einstellung aus
dem Verbindungsprofil (weitere Details hierzu beim Befehl ZocSetSessionOption).
Beispiel:
pair= ZocGetSessionOption("Beep")
PARSE VALUE pair WITH key"="value
IF value=="no" THEN DO
SAY "Die Option Beep ist ausgeschaltet"
END
Beispiel:
pair= ZocGetSessionOption("EnqString")
PARSE VALUE pair WITH key'="'value'"'
SAY "Die eingestellte Enquire-Antwort lautet: "||value
Siehe auch: ZocGetProgramOption, ZocSetSessionOption, ZocSetProgramOption
|
ZocGlobalStore(<unterkommando>[, <options>]) |
|
Diese Gruppe von Befehlen erlaubt es, Werte über das Schließen und Neustarten
von ZOC hinweg permanent zu speichern. Hierzu dient intern eine Datei als Datenpool.
Die möglichen Operationen basieren auf den folgenden Unterbefehlen:
| |
SELECT <name> |
|
Wählt einen neuen Datenpool. Alle Namen, außer dem speziellen Namen
VOLATILE, werden zur Bildung eines
Dateinamens in der Form <name>Global.ini verwendet und er kann auch eine
Pfadangabe enthalten, z.B. C:\data\MyTestPool (daraus wird dann
auch die Datei MyTestPoolGlobal.ini).
Der Name VOLATILE dagegen wählt einen speziellen Datenpool an, der nur im Speicher
gehalten wird und auf den alle ZOC Skripte Zugriff haben. Er verliert jedoch seine Werte,
sobald das letzte ZOC-Fenster geschlossen wird.
|
INIT |
|
Alle Werte im Datenpool löschen
|
GET <name> |
|
Den Wert einer bestimmten Variable im Pool auslesen.
|
SET <name>, <value> |
|
Einen Wert unter bestimmtem Namen speichern. Gibt ##OK## oder einen Fehler zurück (s.u.).
|
PUT <name>, <value> |
|
Identisch mit SET.
|
Konkurrierender Zugriff auf den Datenpool wird mit einer Lock-Datei abgesichert.
Dies funktioniert auch über mehrere Computer hinweg, wenn der Datenpool auf einem
Netzwerklaufwerk liegt. Rückgabewerte für die Befehle GET, SET und
PUT sind ##OK##, ##LOCKERROR## und ##FILEERROR##.
Diese geben z.B. Aufschluss darüber, ob z.B. eine Schreiboperation erfolgreich war.
Beispiel:
CALL ZocGlobalStore "SELECT", "PermStore"
x= ZocGlobalStore("GET", "LASTX")
…
CALL ZocGlobalStore "SET", "LASTX", x
ret= ZocGlobalStore("SET", "VAL", "OK")
IF ret\="##OK##" THEN SAY "Could not set value"
|
ZocKeyboard(<befehl>[, <timeout>]) |
|
Diese Funktion erlaubt es einem REXX-Skript, Tastatureingaben in das
Terminalfenster abzufragen. Es existieren die Unterbefehle
LOCK, UNLOCK und GETNEXTKEY.
| |
LOCK |
|
Sperrt die Tastatur und verhindert Eingaben durch den Benutzer.
|
UNLOCK |
|
Entsperrt die Tastatur.
|
GETNEXTKEY |
|
Wartet auf den nächsten Tastendruck.
Hierbei kann zusätzlich ein Timeout in Sekunden angegeben werden).
GETNEXTKEY liefert eine Zeichenkette in der Form
char|scancode|shift|ctrl|alt zurück.
char: Eine Zwei-Byte Hexnummer, die den ASCII-Code des eingegebenen
Zeichens repräsentiert.
scancode: Der physikalische Scancode, der
von der Tastatur zurückgeliefert wird (anhand diesem Code können Tasten
wie Pos1, Entf, F1, F2 usw. abgefragt werden).
shift, ctrl und
alt liefern entweder 0 oder 1 zurück, je nachdem,
ob die jeweilige Taste zusammen mit der abgefragten Taste gedrückt wurde.
|
Das nachfolgende Beispiel zeigt, wie das Ergebnis von ZocKeyboard() in seine
einzelnen Werte aufgeteilt werden kann und gibt die Ergebnisse auf dem
Bildschirm aus.
Beispiel:
CALL ZocKeyboard "UNLOCK"
ret= ZocKeyboard("GETNEXTKEY")
PARSE VALUE ret WITH hexkey"|"scan"|"shift"|"ctrl"|"alt
key= X2C(hexkey)
SAY "Sie haben folgende Taste gedrückt hex/key: "hexkey"/"key
SAY "Scan Code: "scan
SAY "Shift/Ctrl/Alt Status: "shift"/"ctrl"/"alt
|
ZocLastLine() |
|
Diese Funktion liefert die aktuelle Textzeile, die beim letzten
ZocWait/ZocWaitMux/ZocWaitLine Befehl aufgelaufen ist (eine Alternative
zu ZocLastLine ist die Funktion ZocReceiveBuf).
Beispiel:
CALL ZocSend "ATZ^M"
timeout= ZocWaitMux("OK", "ERROR")
IF (timeout\=640) THEN DO
IF ZocLastLine()\="OK" THEN SIGNAL error
CALL ZocConnect "555 3456"
END
Hinweis: In vielen Fällen wird stattdessen die Verwendung ZocReceiveBuf die flexiblere Lösung darstellen.
Siehe auch: Das Beispiel bei ZocWaitLine
|
ZocListFiles(<verz\maske> [, <trennzeichen>]) |
|
Die ZocListFiles Funktion liefert die Namen der Dateien, die in einem Verzeichnis
gespeichert sind, entsprechend einer Maske aus DOS Jokerzeichen (z.B.
"c:\data\*.*"). Die Funktion liefert eine Zeichenkette, die die
Anzahl der Dateien und die einzelnen Dateinamen, jeweils durch ein Leerzeichen
getrennt, enthält, z.B. "3 download.zip sales.txt foobar.fil".
Dann kann mit Hilfe der REXX WORD Funktion einfach auf die einzelnen
Namen zugegriffen werden (siehe Beispiel).
Falls Dateinamen selbst Leerzeichen enthalten, kann ein anderes Trennzeichen für
die Liste der Dateinamen benutzt werden, z.B. würde die Funktion mit Trennzeichen "|"
das Ergebnis "3 download.zip|sales.txt|foobar.fil" liefern.
In diesem Fall kann die Zerlegung dann durch die Funktion
ZocString("PART", purelist, i, "|") erfolgen.
Hinweis: Die Anzahl der Dateinamen ist auf 128 begrenzt, die max.
Länge der Zeichenkette auf 4096 Bytes.
Beispiel:
files= ZocListFiles("C:\TEMP\*")
howmany= WORD(files, 1)
SAY "Anz. Dateien:" howmany
purelist= SUBSTR(files, LENGTH(howmany)+2)
DO i=1 TO howmany
SAY "Datei " i "=" WORD(purelist, i)
END
Siehe auch: ZocFilename, ZocGetFilename, ZocGetFilenames, ZocGetFolderName, ZocString
|
ZocLoadKeyboardProfile [<keyfile>] |
|
Lädt und aktiviert ein Tastaturprofil aus der entsprechenden Datei (*.zky).
Beispiel:
CALL ZocLoadKeyboardProfile "Alternate.zky"
|
ZocLoadSessionProfile <optsdatei> |
|
Lädt und aktiviert ein Verbindungsprofilprofil aus der entsprechenden Datei (*.zoc).
Beispiel:
CALL ZocLoadSessionProfile "vt102opt.zoc"
|
ZocLoadTranslationProfile [<keyfile>] |
|
Lädt und aktiviert ein Zeichenübersetzungstabelle aus der entsprechenden Datei (*.ztr).
Beispiel:
CALL ZocLoadTranslationProfile "7bitGerman.ztr"
|
ZocMath(<funktion>, <argument>[, <argument2>]) |
|
ZocMath berechnet die mathematische Funktion des zweiten Arguments.
Gültige Funktionen sind
sin, cos, tan,
asin, acos,
sqrt,
todeg, torad,
bitand, bitor, bitxor.
Beispiel:
angle = 270
anglerad = ZocMath("torad", angle)
sinresult = ZocMath("sin", anglerad)
lowbits = ZocMath("bitand", 175, 15)
hibits = ZocMath("bitand", X2D(A5), X2D(F0))
|
ZocMenuEvent <menütext> [, <datei>] |
|
Führt einen Befehl aus dem ZOC-Menü aus. Der <menütext> ist der
Text wie im ZOC-Menü angezeigt, <datei> ist ein optionaler Dateiname,
den manche Menübefehle übernehmen, statt den Benutzer nach einer
Datei zu fragen.
Beispiel:
CALL ZocMenuEvent "Einfügen (kein Zeilenwechsel)"
CALL ZocMenuEvent "REXX Skript bearbeiten", "test.zrx"
|
ZocMessageBox(<text> [, <modus>]) |
|
Öffnet ein Nachrichtenfenster mit dem angegebenen Text (^M
im Text erzeugt einen Zeilenwechsel).
Normalerweise wird ein Info-Fenster mit einem OK-Knopf (Modus 0) angezeigt.
Modus 1 zeigt ein Fehler-Fenster mit einem OK-Knopf. Modus 2 zeigt eine
Nachricht mit einem JA und NEIN-Knopf.
Der Rückgabewert ist entweder ##OK##, ##YES## oder
##NO##.
Beispiel:
CALL ZocMessageBox "Verbindung fehlgeschlagen!", 1
ret= ZocMessageBox("Fehler beim Speichern.^M^MNochmal versuchen?", 2)
IF ret=="##YES##" THEN DO
…
END
Siehe auch: ZocAsk, ZocDialog, ZocAskFilename, ZocAskFoldername, ZocRequest, ZocRequestList
|
ZocNotify <text> [, <dauer>] |
|
Zeigt eine Nachricht in einem kleinen Infofester in der Mitte des Bildschirms an.
Der zweite Parameter bestimmt ggf. die Zeit die das Fenster sichtbar ist
(in Millisekunden).
Beispiel:
CALL ZocNotify "Hello World!", 1500
|
ZocPlaySound <datei> |
|
Spielt eine .WAV Datei ab.
Beispiel:
CALL ZocPlaySound "dingdong.wav"
|
ZocReceiveBuf(<puffergröße>) |
|
Diese Funktion sammelt Teile der während einer Verbindung empfangenen Daten in
einem Puffer und liefert den vorherigen Inhalt (falls vorhanden) als Zeichenkette
zurück.
Normalerweise hat der Puffer die Größe Null, d.h. es werden keine Daten
gesammelt. Um eine Datensammlung zu starten, muss die Funktion mit einer
beliebigen Puffergröße aufgerufen werden. Danach werden die empfangenen
Daten im Puffer gespeichert, bis entweder der Puffer voll ist oder bis die
Funktion das nächste Mal aufgerufen wird. Der Folgeaufruf liefert den
Pufferinhalt, löscht ihn und setzt ihn auf eine neue Größe.
Eine Aufrufsequenz der Funktion ZocReveiceBuf() am Beispiel
einer Datenbankabfrage könnte etwa so aussehen:
Beispiel:
/* Puffergröße auf 256 Byte setzen */
CALL ZocTimeout 60
CALL ZocReceiveBuf 256
CALL ZocSend "lesen inhalt^M"
CALL ZocWait "Eingabe>"
/* die empfangenen Daten in Variable 'inhalt' schieben */
/* und den Puffer für Detail neu initialisieren */
inhalt= ZOCRECEIVEBUF(4096)
CALL ZocSend "lesen detail^M"
CALL ZocWait "Eingabe>"
/* die empfangenen Daten in Varaible 'detail' speichern */
/* und den Puffer auf Null setzen */
detail= ZocReceiveBuf(0)
/* Hinweis: An diesem Punkt beginnen beide Zeichenketten
(inhalt und detail) immer mit dem Wort "lesen" und enden mit
den Zeichen "Eingabe>". */
Beispiel:
/* Remote-Umgebungsvariablen lesen und den TERM= Wert extrahieren */
Call ZocReceiveBuf 2048
Call ZocSend "set^M"
/* auf das aktuelle (!) Prompt warten */
Call ZocWait "PROMPT: ~username$"
data= ZocReceiveBuf(0)
/* Google kennt weitere Details zu "REXX PARSE COMMAND" und
den PARSE-Befehl, der hier zum Extrahieren der Daten verwendet wird */
PARSE VALUE data WITH ."TERM="term .
SAY "Der TERM Wert der Gegenstelle ist " term
Hinweis: Per DDE muss der Befehl unbedingt per DdeRequest und
nicht per DdeExecute ausgeführt werden.
Siehe auch: ZocLastLine, ZocWait, ZocWaitLine, ZocWaitForSeq, ZocString("LINE" …)
|
ZocRegistry(<befehl>[, <options>]) |
|
Diese Gruppe von Funktionen erlaubt den Zugriff auf die Windows-Registry.
| |
OPEN <basekey>, <name> |
|
Gibt einen <hkey> Handle zum Zugriff auf einen
Teil der Registry zurück oder im Fehlerfall "##ERROR##". Der <basekey> kann
entweder HKEY_CURRENT_USER oder HKEY_LOCAL_MACHINE sein.
OPEN liefert einen so genannten hkey als Returnwert, der dann für Schreiben und Lesen
in diesem Teil der Registry verwendet werden kann.
|
WRITE <hkey>, <value>, <data> |
|
Schreibt <data> in den mit <hkey>
angegebenen Teil der Registry. Falls <data> im Format "DWORD:nnnn" angegeben wird,
wird der darin angegeben Dezimalwert nnnn dezimal als REG_DWORD eingetragen. Falls <data>
im die Form "BINARY:xxxxxx…" hat, wird die darin angegeben Hex-Zeichenkette
in Bytes umgewandelt und als REG_BINARY eingetragen. Ansonsten wird <data> als Typ REG_SZ
(Zeichenkette) gespeichert.
|
READ <hkey>, <value> |
|
Liest einen Wert aus dem <hkey>-Teil der Registry.
Falls der Wert dort als REG_DWORD gespeichert ist, wird "DWORD:nnnn" zurückgeliefert.
Beim Typ REG_BINARY wird das Ergebnis in der Form "BINARY:xxxx…" angegeben (xxxx ist
dabei eine Folge von Hex-Ziffern, die z.B. mit X2C in Bytes zurückverwandelt werden kann).
Für Typ REG_SZ liefert die Funktion die in der Registry gespeicherte Zeichenkette.
|
ENUM <hkey>, <n> |
|
Liefert den <n>. Namen aus <hkey>.
|
TEST <hkey>, <value> |
|
Diese Funktion prüft, ob der angegebene Wert existiert und
liefert entweder ##ERROR##, oder eine Zeichenkette in der Form ##OK## TYPE nt LENGTH nl,
bei der nt und nl dezimale Werte sind, die den Typ und die Länge des Registry-Eintrags angeben.
|
CLOSE <hkey> |
|
Beendet den Zugriff auf <hkey>.
|
Beispiel:
hk= ZocRegistry("OPEN", "HKEY_CURRENT_USER", "Software\Emtec\ZOC8")
if hk=="##ERROR##" THEN EXIT
CALL ZocRegistry "WRITE", hk, "Test01", "Hello World"
CALL ZocRegistry "WRITE", hk, "Test02", "DWORD:1"
CALL ZocRegistry "WRITE", hk, "Test03", "BINARY:5A4F43"
SAY ZocRegistry("TEST", hk, "%ZOC%")
homepath= ZocRegistry("READ", hk, "%ZOC%");
SAY "ZOC installed in "||homepath
i= 0
DO FOREVER
x= ZocRegistry("ENUM", hk, i);
if x=="##ERROR##" THEN LEAVE
i= i+1
SAY x
END
CALL ZocRegistry "CLOSE", hk
EXIT
|
ZocRequest(<titel>, <opt1> [, <opt2> [, <opt3>]]) |
|
Öffnet einen Dialog mit mehreren Knöpfen und liefert eine Zeichenkette mit
dem Namen des ausgewählten Knopfes zurück.
Beispiel:
answer= ZocRequest("Was möchten Sie?", "Milch", "Honig")
IF answer=="Milch" THEN DO
…
END
Siehe auch: ZocAsk, ZocDialog, ZocAskFilename, ZocRequestList
|
ZocRequestList(<title>, <opt1> [, …]]) |
|
Öffnet ein Fenster mit einer Liste von Werten und gibt den
Index der Auswahl (oder -1 für Abbruch) zurück. Falls nur eine
Option übergeben wird, wird diese als Liste von Optionen, die durch
senkrechte Striche getrennt sind, interpretiert.
Beispiel:
answer= ZocRequestList("Bitte wählen!", "Bier", "Wein", "Whiskey", "Schnaps")
IF answer=3 THEN DO
…
END
answer= ZocRequestList("Bitte wählen!", "Bier|Wein|Whiskey|Schnaps")
IF answer=3 THEN DO
…
END
Siehe auch: ZocAsk, ZocDialog, ZocAskFilename, ZocRequest, ZocRequestList
|
ZocRespond <text1> [, <text2>] |
|
Sendet automatisch text2, wenn während der Bearbeitung von ZocDelay oder
ZocWait Befehlen der Text text1 empfangen wird.
Maximal 64 ZocRespond Befehle können zur gleichen Zeit aktiv sein. <text1> darf
weder CR noch LF enthalten.
Wird nur text1 angegeben und kein zweiter Parameter, oder ist der zweite
Parameter leer, so wird ein bestehender ZocRespond für text1 gelöscht. Wenn
text1 leer ist (""), werden alle ZocRespond Einträge gelöscht.
Beispiel:
/* Auf 'Befehl' warten und alle Abfragen dazwischen mit Enter bestätigen */
CALL ZocRespond "Enter", "^M"
CALL ZocRespond "Mehr", "^M"
timeout= ZocWait("Eingabe>")
/* Responder löschen */
CALL ZocRespond "Enter"
CALL ZocRespond "Mehr"
Das obige Beispiel wartet, bis der Text Eingabe> empfangen wird.
Während der Wartezeit werden alle Enter und Mehr Abfragen
automatisch mit Enter beantwortet. Nach dem Empfang von "Befehl" werden die
Respond-Befehle wieder gelöscht.
|
ZocSaveSessionProfile [<dateiname>] |
|
Speichert die aktuellen Einstellungen des Verbindungsprofils (siehe
Optionen→Verbindungsprofil) in einer Datei. Wenn kein
Dateiname angegeben wird, öffnet ZOC ein Dateiauswahlfenster.
Beispiel:
CALL ZocSetSessionOption "JumpScroll=3"
CALL ZocSaveSessionProfile "Fastscroll.zoc"
|
ZocSend <text> |
|
Sendet den angegebenen Text zur Gegenstelle.
Die Zeichen werden hierzu programmintern wie eine Folge von Tastendrücken verarbeitet.
Die Verzögerung hierbei wird durch die Text-Sende Optionen in
Optionen→Verbindungsprofil→Text Senden
gesteuert. Falls Sie schnelleren direkteren Versand der Daten benötigen, können Sie
ZocSendRaw benutzen.
Außerdem werden in nahezu allen Emulationen wie ^M automatisch in die üblichen
echten Werte umgewandelt (siehe Steuerzeichen). Ausnahmen sind die
TN3270/5250 Emulationen, dort gilt ^M als Newline/FieldExit, ^I als Tab
und ^Z als Datenfreigabe/Enter.
Beispiel:
CALL ZocSend "JOE USER^M" /* send JOE USER<enter>*/
Beispiel:
/* Unix login Sequence */
CALL ZocWait "login:"
CALL ZocSend "harry^M"
CALL ZocWait "password:"
CALL ZocSend "alohomora^M"
Beispiel:
/* 3270/5250 example */
Call ZocSetCursorPos 12,4
CALL ZocSend "Freddie"
CALL ZocSendEmulationKey "NewLine"
CALL ZocSend "Elm Street"
CALL ZocSendEmulationKey "Enter"
/* 3270/5250 same as above, using
emulation specific control codes */
CALL ZocSend "Freddie^MElm Street^Z"
|
ZocSendEmulationKey <tastenbezeichnung> |
|
Simuliert das Drücken einer Sondertaste der Emulation, z.B. senden der
Taste F17 der VT220 Emulation oder senden der Attn unter TN3270.
Erlaubte Werte und deren tatsächliche Funktion hängen von der momentan aktiven Terminalemulation ab.
Die Tastenbezeichnungen selbst sind im Anhang unter
Tastenbezeichnungen nach Emulation
gruppiert aufgelistet.
Beispiel:
CALL ZocSetEmulation "VT100"
CALL ZocSendEmulationKey "PF1"
|
ZocSendRaw <daten> |
|
Dieses Kommando verschickt die angegeben Daten ohne sie irgendwie
zu interpretieren (d.h. ohne sie z.B. auf Steuercodes wie ^M zu
untersuchen). Für die Umwandlung von Steuercodes müssen stattdessen
die REXX Zeichenkettenfunktionen wie z.B. X2C(0D) oder
ZocCtrlString("^M") verwendet werden.
Mit ZocSendRaw können daher jegliche binäre Daten verschickt werden,
z.B. hex 42 01 00 05 41 43.
Beispiel:
CALL ZocSendRaw "Login"||X2C(0d) /* Login<enter> */
/* Dreimal das gleiche Ergebnis: */
CALL ZocSendRaw X2C(420100054143)
CALL ZocSendRaw "B"||X2C(01)||X2C(00)||X2C(05)||"AC"
CALL ZocSendRaw ZocCtrlString("B^A^@^EAC")
Siehe auch: ZocSend, ZocSendEmulationKey, ZocCtrlString
|
ZocSessionTab(<unterkommando>, <parameter>) |
|
Diese Funktion erlaubt es, die Registerblätter mit Verbindungen zu manipulieren.
Der <unterkommando> Parameter legt die durchzuführende Operation fest, die weiteren
Parameter hängen vom Unterkommando ab:
| |
CLOSEATEXIT |
|
Schließt das aktuelle Registerblatt sobald das Skript beendet ist.
Beispiel: CALL ZocSessionTab "CLOSEATEXIT"
|
CLOSETAB |
|
Schließt das Registerblatt mit dem angegebenen Index (0 für das Blatt ganz links, -1 für das aktive).
Beispiel: CALL ZocSessionTab "CLOSETAB", 2
|
GETCOUNT |
|
Liefert die Anzahl der Registerblätter mit Verbindungen.
Beispiel: howmany= ZocSessionTab("GETCOUNT")
|
GETCURRENTINDEX |
|
Liefert den index des Registerblatts, in dem das Skript läuft.
Beispiel: myidx= ZocSessionTab("GETCURRENTINDEX")
|
GETTINDEXBYNAME, <name> |
|
Liefert den Index des ersten Registerblatts, das den angegebenen Namen hat, oder -1 für keines.
Beispiel: srvidx= ZocSessionTab("GETINDEXBYNAME", "My Server")
|
GETNAME, <index> |
|
Liefert den Name des Registerblattes mit dem gegebenen Index (0 für das Blatt ganz links).
Ein Index von -1 bezieht sich auf das Registerblatt in dem das Skript läuft.
Beispiel: name= ZocSessionTab("GETNAME", -1)
|
ISCONNECTED, <index> |
|
Liefert als Ergebnis ##YES## oder ##NO## je nachdem ob das Registerblatt
mit dem angegebenen Index momentan mit einer Gegenstelle verbunden ist.
Beispiel: yesno= ZocSessionTab("ISCONNECTED", 2)
|
NEWSESSION, <titel>, <aktiv>, <verbindungsprofil>[, <verbindung>, <skript>] |
|
Erstellt eine neue Session und liefert den neuen Session-Index zurück.
Parameters:
<titel>: Eine Zeichenkette mit dem Namen für das neue Registerblatt.
<aktiv>: 1 oder 0, je nachdem ob das neue Blatt in den Vordergrund geholt werden soll oder nicht.
<verbindungsprofil>: Name eines Session-Profils (z.B. MyProfile.zoc) oder ##NULL## für Standard.
<verbindung>: Eine Zeichenkette für den Verbindungsaufbaue wie beim /CONNECT-Kommandozeilenparameter beschrieben
oder der Text CALL: gefolgt vom Namen eines Eintrags aus dem Adressbuch oder ##NULL## (keine Verbindung).
<skript>: Der Name eines REXX-Skripts das im neuen Registerblatt ausgeführt werden soll.
Beispiel:
idx1= ZocSessionTab("NEWSESSION", "Test", 1, "##NULL##", "CALL:Mein Server")
idx2= ZocSessionTab("NEWSESSION", "Test2", 0, "SSHProfil.zoc", "SSH!Harry:alohomora@ssh.hogwarts.edu")
idx3= ZocSessionTab("NEWSESSION", "Test3", 1, "##NULL##", "##NULL##", "test.zrx")
CALL ZocSessionTab "SETCOLOR", idx3, 5
idx4= ZocSessionTab("NEWSESSION", "Test4", 1, "Standard.zoc", "TELNET!smtp.hogwarts.edu:25", "test.zrx")
|
MENUEVENT, <index>, <menü> |
|
Sendet Text an die Verbindung mit dem angegeben Index
(siehe die Beschreibung für <index> bei GETNAME). Der Parameter <menü> entspricht dem Befehl ZocMenuEvent.
Beispiel: CALL ZocSessionTab "MENUEVENT", 2, "Verbindung beenden"
|
RUNSCRIPT, <index>, <title> |
|
Startet ein Skript im mit <index> angegeben Registerblatt
(siehe die Beschreibung für <index> bei GETNAME). Beachten Sie, dass in dem Registerblatt nicht
bereits kein Skript laufen sollte (das heißt auch, dass RUNSCRIPT für das aktuelle Blatt in dem der
Befehl selbst ausgeführt wird, keinen Sinn macht).
Beispiel: CALL ZocSessionTab "RUNSCRIPT", 2, "configure.zrx"
|
SEND, <index>, <text> |
|
Sendet Text an die Verbindung mit dem angegeben Index
(siehe die Beschreibung für <index> bei GETNAME).
Beispiel: CALL ZocSessionTab "SEND", 2, "exit^M"
|
SETBLINKING, <index>, <blinkflag> |
|
Aktiviert oder deaktiviert das Blinken für das Register
mit dem angegebenen Index (siehe die Beschreibung für <index> bei GETNAME).
Das <blinkflag> ist entweder 1 oder 0.
Beispiel: CALL ZocSessionTab "BLINKING", -1, 1
|
SETCOLOR, <index>, <color> |
|
Setzt die Farbe für das Register mit dem angegebenen Index
(siehe die Beschreibung für <index> bei GETNAME).
Die Farbe ist eine Nummer von 0 - 7.
Beispiel: CALL ZocSessionTab "SETCOLOR", -1, 4
|
SETNAME, <index>, <title> |
|
Setzt den Titel für das Register mit dem angegebenen Index
(siehe die Beschreibung für <index> bei GETNAME).
Beispiel: CALL ZocSessionTab "SETNAME", -1, "This Session"
|
SWITCHTO, <index> |
|
Aktiviert das Register mit dem angegebenen Index
(siehe die Beschreibung für <index> bei GETNAME).
Beispiel: CALL ZocSessionTab "SWITCHTO", 2
|
Beispiel:
/* ZocSessionTab sample: send a text to all tabs */
text= ZocAsk("Command to send to all other tabs:")
IF text\="##CANCEL##" THEN DO
n= ZocSessionTabs("GETCOUNT")
c= ZocSessionTabs("GETCURRENTINDEX")
SAY n
DO i=0 TO n-1
IF i==c THEN ITERATE
name= ZocSessionTabs("GETNAME", i)
CALL ZocSessionTabs "SEND", i, text||"^M"
SAY "Sent "||text||" to "||name
END
END
|
ZocSetAuditLogname <dateiname> |
|
Legt den Namen für die Audit-Logdatei fest. Das Audit-Log ist ein
Protokoll der Kommunikation, das nicht vom Benutzer abgeschaltet
werden kann; siehe auch den Eintrag in der ADMIN.INI Datei.
Mit "" (leere Zeichenkette) als Dateiname wird die Protokollierung
deaktiviert.
|
ZocSetAutoAccept 1|0 |
|
Schaltet die automatische Annahme von eingehenden Verbindungen ein oder aus,
vorausgesetzt die aktive Kommunikationsmethode unterstützt dies.
Beispiel:
CALL ZocSetDevice "Telnet"
CALL ZocSetAutoAccept 1 /* accept calls */
|
ZocSetCursorPos <zeile>, <spalte> |
|
Dieser Befehl bewegt den Cursor auf dem Bildschirm in einer TN3270 Emulation an
die angegebene Zeile und Spalte (die Position links oben hat die Adresse 1/1).
Beispiel:
CALL ZocSetCursorPos 1,15
Call ZocSendEmulationKey "Enter"
|
ZocSetDevice <name> [,<verbindungstyp-parameter>] |
|
Wechselt die Verbindungsmethode (Verbindungstyp). Als Name kann eine der in
Verbindungsprofil→Verbindungstyp verfügbaren
Methoden angegeben werden.
Der optionale Verbindungstyp-Parameter
ist ein Text, der die Einstellungen enthält, mit denen der Verbindungstyp geöffnet
werden soll, z.B. bei Telnet die CR/NUL Einstellungen, usw. Die Funktion
ZocSetDeviceOpts beschreibt, wie gültige Verbindungstyp-Parameter
abgefragt werden können. Falls keine Parameter angegeben werden,
werden die in der Methode eingestellten Optionen des momentan aktiven
Verbindungsprofils verwendet.
Beispiel:
CALL ZocSetDevice "TELNET"
CALL ZocConnect "bbs.channel1.com"
Beispiel:
CALL ZocSetDevice "SERIAL/MODEM", "[1]COM3:57600-8N1|9|350"
|
ZocSetDeviceOpts <parameter-string> |
|
Dies ist eine sehr fortgeschrittene Funktion, die erlaubt, Einstellungen für die
Verbindungsmethode (Verbindungstyp) direkt von REXX aus zu ändern. Allerdings ist der Parametertext
für Verbindungsmethoden nicht standardisiert, d.h. um den entsprechenden Parametertext zu finden,
müssen die entsprechenden Optionen zunächst manuell im Dialog eingestellt und der
den Optionen entsprechende Parametertext dann abgefragt werden.
Angenommen, es soll eine Modem-Verbindung auf COM3, mit 57600 Baud,
RTS/CTS, gültigem Carrier und einer Break-Zeit von 350ms gestartet werden.
1. Nach Optionen→Verbindungsprofil→Verbindungstyp gehen und unter Serial/Modem
diese Option einstellen
2. Das Verbindungsprofil-Fenster schließen
3. Shift+Strg+F10 drücken
4. Der Parametertext wird als "Device-Options" ausgegeben, in diesem Fall
[1]COM3:57600-8N1|9|350.
5. Dieser Text kann als Parameter-String für ZocSetDeviceOpts verwendet werden.
Beispiel:
/* Serielle Parameters setzen:
COM3, 57600-8N1, RTS/CTS, Valid-CD, 350ms-Break */
CALL ZocSetDeviceOpts "[1]COM3:57600-8N1|9|350"
Beispiel:
/* Telnet auswählen und Optionen auf
"Mit lokalem echo starten" setzen */
CALL ZocSetDevice "TELNET"
CALL ZocSetDeviceOpts "[3]12"
|
ZocSetEmulation <emulationname>[, <emuparm-string>] |
|
Mit dem Befehl ZocSetEmulation kann skriptgesteuert eine andere Emulation
aktiviert werden. Als Parameter kommen alle Namen in Frage, die im Verbindungsprofil
als Emulation angezeigt werden, z.B. VT220, TN3270, etc.
Beispiel:
CALL ZocSetEmulation "Xterm"
|
ZocSetHostEntry "name", "<schlüsselwort>=<wert>" |
|
Setzt einen neuen Wert in einen Adressbucheintrag. Alle möglichen
Kombinationen für die Schlüsselworte können Sie sehen, wenn Sie
die Datei HostDirectory.zhd im ZOC Datenordner in einen
Editor laden.
Wenn im zweiten Parameter statt Schlüsselwort und Wert die Zeichenkette
"##NEW##" angegeben wird, erstell der Befehl einen neuen leeren Adressbucheintrag
mit diesem Namen (falls noch keiner existiert).
Beispiel:
CALL ZocSetHostEntry "ZOC-Support-Mailbox", "emulation=1"
pair= ZocSetHostEntry("ZOC-Support-Mailbox", "calls")
PARSE VALUE pair WITH key"="value
value= value+1
CALL ZocSetHostEntry "ZOC-Support-Mailbox", "calls="||value
/* Hinweis: Anführungszeichen unten beachten! */
value= "3781302"
CALL ZocSetHostEntry "ZOC Support BBS", 'connectto="3781302"'
CALL ZocSetHostEntry "ZOC Support BBS", 'connectto="'||value||'"'
Beispiel:
name= "My Router"
Call ZocSetHostEntry name, "##NEW##"
Call ZocSetHostEntry name, 'connectto="192.168.1.1"'
Call ZocSetHostEntry name, 'username="root"'
Call ZocSetHostEntry name, "deviceid=9"
Call ZocSetHostEntry name, "emulationid=3"
Siehe auch: ZocSetSessionOption, ZocGetHostEntry
|
ZocSetLogfileName <name> |
|
Ändert den Namen der Logdatei für die aktuelle Session.
Beispiel:
CALL ZocSetLogfileName "Heute.log"
|
ZocSetLogging 0|1 [, 1] |
|
Schaltet die Protokollierung der eingehenden Daten in einer Datei ein oder aus.
Wenn ein zweiter Parameter mit Wert 1 angegeben wird, wird das kleine
Statusfenster in der Mitte des Bildschirms unterdrückt.
Beispiel:
CALL ZocSetLogging 1
|
ZocSetMode <key>, <wert> |
|
Dieser Befehl erlaubt es bestimmte Verarbeitungen im REXX Prozessor
zu beeinflussen. Folgende key-Werte werden unterstützt:
| |
SAY |
|
Ein Wert von RAW steuert, dass der SAY Befehl Steuercodes
wie ^M nicht auflöst. COOKED schaltet zurück auf das Standardverhalten.
Beispiel:
CALL ZocSetMode "SAY", "RAW"
|
RESPOND |
|
Ein Wert von RAW steuert, dass der ZocRespond Befehl
Steuercodes Codes wie ^M nicht auflöst (für beide ZocRespond-Parameter).
Beispiel:
CALL ZocSetMode "RESPOND", "RAW"
|
|
ZocSetProgramOption "<schlüsselwort>=<wert>" |
|
Dieser Befehl ändert eine Einstellung aus dem Fenster Optionen→Programmeinstellungen
von ZOC (ZocSetSessionOption verändert stattdessen eine Einstellung aus einem Verbindungsprofil).
Die Funktion arbeitet wie ZocSetSessionOption, allerdings basiert sie auf Wertepaaren aus
der Datei Standard.zfg. Die Schlüsselnamen dort sind auch im wesentlichen selbsterklärend oder
sie können die Funktion zur Aufzeichnung eines REXX-Scripts aktivieren, die Änderung in den Programmeinstellungen
vornehmen und sich dann das aufgezeichnete Skript ansehen..
Beispiel:
CALL ZocSetProgramOption "SafAskClrCapt=yes"
CALL ZocSetProgramOption 'SkriptPath="ZocREXX"' /* Anführungszeichen beachten */
CALL ZocSetProgramOption 'SkriptPath="'||pathvar||'"' /* Anführungszeichen beachten */
Siehe auch: ZocCommand("SAVEPROGRAMSETTINGS"), ZocGetProgramOption, ZocGetSessionOption, ZocSetSessionOption
|
ZocSetSessionOption "<schlüsselwort>=<wert>" |
|
Setzt eine beliebige ZOC-Option aus dem Fenster Optionen→Verbindungsprofil
anhand eines Schlüsselwort-Wert Paares. Die möglichen Wertepaare
sind in der Datei Standard.zoc (und allen anderen Verbindungsprofildateien)
enthalten und stellen die jeweilige Konfiguration dar.
Um herauszufinden, welche Option zu welchem Schlüsselwort gehört, genügt
es, die entsprechenden Einstellungen in Verbindungsprofildialog von ZOC vorzunehmen,
abzuspeichern und die veränderte Schlüsselwort-Wert Zeile zu suchen. Alternativ können
Sie auch die Funktion zur Aufzeichnung eines REXX-Scripts aktivieren, die Änderung am
Verbindungsprofil vornehmen und sich dann das aufgezeichnete Skript ansehen.
Beispiel:
CALL ZocSetSessionOption "Beep=no"
CALL ZocSetSessionOption "JumpScroll=3"
CALL ZocSetSessionOption "ShowChat=no"
CALL ZocSetSessionOption 'MdmIni="ATZ^M"' /* Anführungszeichen beachten */
CALL ZocSetSessionOption 'TransAutoRemove="'||valvar||'"' /* Anführungszeichen beachten */
Hinweis: ZocSetSessionOption/ZocGetSessionOption funktioniert nur für Optionen
aus Optionen→Verbindungsprofil. Einträge aus den Programmeinstellungen können stattdessen
mit ZocSetProgramOption bearbeitet werden.
Siehe auch: ZocCommand("SAVESESSIONPROFILE"), ZocSaveSessionProfile,
ZocGetProgramOption, ZocSetProgramOption, ZocGetSessionOption
|
ZocSetTimer <hh:mm:ss> |
|
Setzt den Timer auf den angegebenen Wert. Mit einer leeren Zeichenkette als
Parameter, wird als Ergebnis die Zeit des Timers in Sekunden zurückgeliefert.
Ein Aufruf der Funktion mit Parameter "STOP" hält den Timer an und
"RESUME" zählt einen angehaltenen Timer weiter.
Beispiel:
CALL ZocSetTimer "00:00:20"
|
ZocSetUnattended 0|1 |
|
Schaltet den Modus für unbeaufsichtigten Betrieb ein oder aus
(siehe Kommandozeilen-Parameter /U).
Beispiel:
CALL ZocSetUnattended 1
|
ZocShell <befehl>, [<anzeigemodus>] |
|
Führt ein Programm per cmd.exe /c <command> (Windows) oder /bin/bash -c "<command>" (macOS).
Dieser Befehl ist ähnlich dem REXX-Befehl ADDRESS CMD "<befehl>" und erlaubt im Prinzip die Ausführung
eines jeden Befehls, der auch im Shell-Fenster des Betriebssystems eingegeben werden kann.
Der optionale Parameter für den Anzeigemodus steuert, wie das zugehörige schwarze Shell-Fenster (nur Windows)
angezeigt werden soll: 0= normal, 1= versteckt, 2= minimiert, 3= maximiert.
Beispiel:
CALL ZocShell "DEL FILE.TMP"
CALL ZocShell "touch /tmp/file.lck", 1
Siehe auch: ZocShellExec, ZocShellOpen, ZocFileDelete, ZocFileRename
|
ZocShellExec <command> [, <viewmode>] |
|
Übergibt ein Programm zur direkten Ausführung an das Betriebssystem
(d.h. ohne den Interpreter des schwarze Shell-Fensters). Dies funktioniert unter
Windows nur für .exe und .com Programme, nicht jedoch für .cmd-Dateien und interne
Befehle wie DIR, REN, DEL, etc. (hierfür kann alternativ ZocShell
verwendet werden).
Der optionale Anzeige-Parameter steuert, wie das Fenster des Programms
angezeigt werden soll: 0= normal, 1= versteckt, 2= minimiert, 3= maximiert.
Beispiel:
CALL ZocShellExec 'notepad.exe "neuer.txt"'
Siehe auch: ZocShell, ZocShellOpen
|
ZocShellOpen <dateiname> |
|
Übergibt eine Datei zum Öffnen an das Betriebssystem. Diese Funktion entspricht
in etwa dem Doppelklick auf einer Datei und öffnet die Datei mit dem Programm, das
im Betriebssystem für diesen Dateityp registriert ist (z.B. einen PDF-Viewer für
PDF-Dateien oder Notepad für TXT-Dateien).
Alternativ kann statt eines Dateinamens auch ein URL angegeben werden.
Beispiel:
CALL ZocShellOpen 'C:\DOWNLOADS\Report.pdf'
Beispiel:
CALL ZocShellOpen 'https://www.emtec.com/'
Siehe auch: ZocShell, ZocShellExec
|
ZocString(<unterkommando>, <inputstring>, <p1> [, <p2>]) |
|
Diese Funktion bearbeitet oder analysiert Zeichenketten entsprechend des Unterkommandos
sowie der weiteren Parameter und liefert ein darauf basierendes Ergebnis zurück.
Unterkommandos:
| |
LINE |
|
Liefert das <p1>te Element von <inputstring> das durch ein Linefeed (hex 0A) getrennt ist
(umgangssprachlich gesagt ist das die <p1>te Zeile). Vom Ergebnis werden am Anfang und Ende ggf.
vorhandene Carriage-Return (hex 0D) entfernt. Diese Funktion ist hilfreich um mehrzeilige
Ergebnisse von ZocReceiveBuf zu zerlegen, z.B. liefert
name= ZocString("LINE", recdata, 4) die vierte Zeile aus der Variable recdata.
|
LINECOUNT |
|
Anzahl der Element für LINE.
|
LOAD |
|
Liefert den Inhalt der Datei mit Namen <inputstring> zurück (Die Datei wird im Textmodus geladen,
Zeilenenden werden zu LF (hex 0A) konvertiert). Das LINE Unterkommando von ZocString kann verwenden werden,
um Zeilen aus der zurückgelieferten Zeichenkette zu extrahieren.
|
SAVE |
|
Speichert den Inhalt der Zeichenkette <p1> in eine Datei mit Namen <inputstring> (Die Datei wird
als Textdatei gespeichert, LF Zeilenenden werden unter Windows zu CR/LF konvertiert).
|
MIME-ENCODE |
|
Konvertiert <inputstring> nach base-64/MIME.
|
MIME-DECODE |
|
Konvertiert <inputstring> zurück aus base-64/MIME.
|
UTF8-ENCODE |
|
Konvertiert <inputstring> von 8-Bit Zeichen nach UTF8.
|
UTF8-DECODE |
|
Konvertiert <inputstring> von einem UTF8-String in eine 8-bit Zeichenkette.
|
AES256-ENCRYPT |
|
Verschlüsselt den String <p1> mit dem Kennwort aus <inputstring>. Das Ergebnis ist
eine Zeichenkete im MIME-Format.
|
AES256-DECRYPT |
|
Entschlüsselt den String aus <p1> (MIME-Format) mit dem Kennwort aus <inputstring>.
|
PART |
|
Holt den <p1>ten Teil von <inputstring> der durch das Zeichen <p2> getrennt ist, z.B.
liefert name= ZocString("PART", "Anne|Charly|Joe", 2, "|") den String "Charly".
|
PARTCOUNT |
|
Liefert die Anzahl der durch <p1> getrennten Teile von <inputstring>,
z.B. wird count= ZocString("PARTCOUNT", "Anne|Charly|Joe", "|")
den Wert 3 liefern.
|
REPLACE |
|
Liefert eine Kopie von <inputstring> in der alle <p1> durch <p2> ersetzt sind,
z.B. besser= ZocString("REPLACE", str, "HyperTerminal", "ZOC")
|
REMOVE |
|
Liefert eine Kopie von <inputstring> in der der String <p1> entfernt wurde,
z.B. besser= ZocString("REMOVE", str, "HyperTerminal")
|
REMOVECHARS |
|
Liefert eine Kopie von <inputstring> in der alle Zeichen von <p1>
entfernt wurden, z.B. löscht
str= ZocString("REMOVECHARS", str, "0123456789"||X2C(09))
alle Ziffern und Tab-Zeichen aus der Variable str.
|
TAB |
|
Gibt das <p1>te Element von <inputstring> zurück, das durch ein Tab-Zeichen getrennt ist,
z.B. spalte2= ZocString("TAB", tabbed_data, 2).
|
TABCOUNT |
|
Anzahl der durch Tab-zeichen getrennten Elemente im <inputstring>.
|
WORD |
|
Gibt das <p1>te Element von <inputstring> zurück, das durch ein Leerzeichen getrennt ist,
z.B. bringt name= ZocString("WORD", "The quick brown fox", 3) als Ergebnis "brown".
|
WORDCOUNT |
|
Anzahl der WORD Elemente im <inputstring>.
|
Beispiel:
CALL ZocReceiveBuf 1024
CALL ZocSend "ps -a^M"
CALL ZocWait "$" /* prompt after command output */
data= ZocReceiveBuf(0)
/* Anzeige der Befehlsausgabe Zeile fuer Zeile
(jedoch ohne das Echo in der die ersten) */
howmany= ZocString("LINECOUNT", data)
DO i=2 TO howmany
SAY ZocString("LINE", data, i)
END
Beispiel:
key= "Secret.740.$%&"
n= ZocString("AES256-ENCRYPT", key, "Hello World!")
SAY "Encoded: "||n
n2= ZocString("AES256-DECRYPT", key, n)
SAY "Decoded: "||n2
Siehe auch: ZocCtrlString
|
ZocSuppressOutput 0|1 |
|
Schaltet die Unterdrückung der Bildschirmausgabe ein oder aus. Dieser
Befehl erlaubt das Senden/Empfangen von Daten ohne Bildschirmausgabe.
Das Mitprotokollieren in den Puffer sowie in die Logdatei wird ebenfalls
unterdrückt.
Das Unterdrücken der Bildschirmausgabe wird automatisch zurückgesetzt,
wenn das Skript oder die Verbindung beendet ist.
|
ZocSyncTime <ms> |
|
Da REXX in einem eigenen Thread ausgeführt wird, kann es vorkommen, dass
eingehende Daten schneller ankommen als sie vom REXX-Programm verarbeitet
werden können, d.h. es ist möglich, dass Text, auf den ein REXX-Programm
wartet, von ZOC bereits empfangen wurde, bevor REXX den ZocWait Befehl
erreicht.
Ein typisches Beispiel für diese Problematik ist eine Schleife, um alle
ankommenden Textzeilen anzuzeigen.
Beispiel:
DO FOREVER
timeout= ZocWaitLine()
IF timeout\=640 THEN DO
zeile= ZocLastLine()
/* Zeile wird hier verarbeitet */
END
END
Im obigen Beispiel empfängt ZOC möglicherweise bereits wieder Text,
während das REXX-Programm die Zeile noch verarbeitet und noch bevor
es bereit ist für den nächste ZocWaitLine Befehl.
Um das zu verhindern, wartet ZOC nach gefundenem Text bis eine definierte
Zeit (die Sync-Zeit) verstrichen ist, oder bis REXX ein weiteres
Kommando ausführt das mit dem Hauptfenster interagiert (z.B. ZocSend,
ZocWait, etc. sowie auch SAY, TRACE usw. weil auch diese in dem Hauptfenster
Ausgaben machen).
Sollten diese 250ms zu kurz für das jeweilige REXX-Programm sein, kann
diese Wartezeit mit ZocSynctime erhöht werden.
Wichtig: Da aber auch bei höherer Synchronisationszeit ein Befehl
(etwa ZocWrite oder SAY) den Empfang weiterlaufen lassen kann, ist es
empfehlenswert, die Daten zunächst nur zu sammeln und unnötige weitere
Befehle zuvermeiden und erst danach in einem zweiten Schritt die Daten zu
verarbeiten (Beim Befehl ZocWaitLine finden Sie ein Beispiel
wie das aussehen kann). Alternativ können Sie statt mehrerer Wait-Befehle
auch den Befehl ZocReceiveBuf verwenden um die Daten auf
einmal abzugreifen (siehe das Beispiel dort).
Siehe auch: ZocWait, ZocWaitIdle, ZocWaitLine, ZocWaitMux, ZocReceiveBuf, ZocLastLine
|
ZocTerminate [<return-code>] |
|
Schließt das Fenster und beendet ZOC nachdem das REXX-Programm vollständig
ausgeführt und beendet wurde. Normalerweise folgt dem Befehl ZocTerminate deshalb
der REXX-Befehl EXIT.
Wenn der Return-Code Parameter angegeben wird, gibt ZOC
diesen Wert an das Betriebssystem oder an das aufrufende Programm zurück.
Beispiel:
CALL ZocTerminate
EXIT
|
ZocTimeout <sek> |
|
Setzt die Timeout-Zeit für ZocWait/ZocWaitMux/ZocWaitLine/ZocEventSemaphore.
Beispiel:
/* ZocWait warted max. 30 Sek. auf Ergebnis und gibt danach auf */
CALL ZocTimeout 30
/* Warte bis Gegenstelle 'ready' sendet, oder bis die max. Timeout-Zeit erreicht ist */
ret= ZocWait("ready")
IF ret\=640 THEN SAY "Gegenstelle bereit!"
ELSE SAY "System war nicht innerhalb 30 Sek. bereit"
Siehe auch: ZocWait, ZocWaitIdle, ZocWaitLine, ZocWaitMux, ZocEventSemaphore, ZocSyncTime
|
ZocUpload <protokoll>[:<optionen>], <dateiname> |
|
Startet den Upload der Datei mit dem angegebenen File-Transfer Protokoll.
Enthält <dateiname> keinen Pfad, wird die Datei aus dem Upload-Ordner bzw. Text-Upload-Ordner gelesen.
Ist der Pfad relativ, basiert er auf dem Programmverzeichnis von ZOC oder auf dem
Upload-Ordner.
Bei Transferprotokollen die die Übertragung mehrerer Dateien erlauben (Ymodem, Zmodem),
kann der Parameter für den Dateinamen auch Namensmuster enthalten. Außerdem können
mehrere Dateiname angegeben werden, indem die Namen durch das Pipe-Symbol (vertikaler
Strich) getrennt werden: *.pdf|somefile.txt
Der Protokollname ist ASCII, BINARY oder einer der unter
Optionen→Verbindungsprofil→Dateitransfer
aufgeführten Protokolle, z.B. Zmodem oder Kermit.
Je nach Erfolg des Transfers, wird ##OK## oder ##ERROR## zurückgeliefert.
Beispiel:
CALL ZocUpload "ZMODEM", "ZOCBBS.REP"
sendet ZOCBBS.REP aus dem Upload-Ordner per Zmodem-Protokoll an die Gegenstelle.
Beispiel:
success= ZocUpload("XMODEM", "ZOC.ZIP")
sendet ZOC.ZIP (aus dem Uploadpfad) per Xmodem-Protokoll und fragt den
Rückgabewert (##OK## oder ##ERROR##) ab.
Beispiel:
CALL ZocUpload "ASCII", "commands.txt" sendet die Datei
commands.txt mit den momentan im Verbindungsprofil definierten Einstellungen
für den Text-Transfer.
Beispiel:
CALL ZocUpload "ASCII:CRONLY+10", "\FAR\AWAY\LIST.TXT"
sendet LIST.TXT per ASCII-Transfer mit Zeilenende nur-CR und einer
ASCII-Verzögerung von 10 ms.
Beispiel:
CALL ZocUpload "ASCII:1+3", "HERE\SOME.DATA"
sendet die Datei SOME.DATA per ASCII-Transfer mit CR/LF-Übersetzung und
einer ASCII-Verzögerung von 3ms.
Beispiel:
CALL ZocUpload "BINARY", "CNC-CONTROL.DAT"
überträgt den Inhalt der Datei ohne Umsetzung oder Übertragungsprotokoll.
Transfer Optionen
Mit Ausnahme des IND$FILE Protokolls (siehe unten), werden
die optionalen Einstellungen zur Konfiguration der Transferprotokolle
durch eine Zeichenkette hinter dem Namen des Protokolls angegeben.
Passende Werte können erzeugt werden, indem die gewünschten Optionen
unter Optionen→Verbindungsprofil→Dateitransfer
eingestellt und mittels Shift+Strg+F10 in das Skript übernommen werden.
Beispiel: Es soll ein Xmodem-Transfer mit CRC und 1KB-Blöcken
eingestellt werden. Hierzu gehen Sie folgendermaßen vor:
1. Optionen→Verbindungsprofil→Dateitransfer
aufrufen, Xmodem wählen und diese Optionen aktivieren.
2. Das Verbindungsprofil-Fenster schließen (Speichern-Knopf)
3. Shift+Strg+F10 drücken
4. Der Parametertext wird im Status-Report als "Transfer-Options" ausgegeben,
in diesem Fall "[0]kc".
5. Der REXX Befehl lautet dann CALL ZocUpload "XMODEM:[0]kc", "datafile.zip"
(bei den Transfer-Optionen wird hierbei zwischen Groß- und Kleinschreibung
unterschieden).
Transfer Optionen ASCII
Beim Dateitransfer im ASCII-Modus (gleichbedeutend mit Dateitransfer→Sende Textdatei) hat der
Einstellungsparameter das Format "mode+chardelay+linedelay", wobei 'mode' als Nummer oder Text angibt,
wie das Zeilenende konvertiert werden soll (ASIS= 0, CRLF= 1, CRONLY= 2, LFONLY= 3), und 'chardelay' die
Sende-Verzögerung pro Zeichen angibt. Gültige Beispiele sind z.B. 2+5+100 oder CRONLY+5+100
(CR only mit 5 Millisekunden Sende-Verzögerung pro Zeichen und einer zusätzlichen Verzögerung von 100 ms
am Ende jeder Zeile).
Transfer Optionen BINARY
Beim Dateitransfer im BINARY-Modus (gleichbedeutend mit Dateitransfer→Sende Binärdatei) kann der
Einstellungsparameter eine Zahl sein, die die Verzögerung pro Zeichen in Millisekunden angibt (sonst
wird die Verzögerung für Text-Senden aus dem Verbindungsprofil verwendet).
Transfer Optionen IND$FILE
Was die Transfer-Optionen angeht, ist das IND$FILE Protokoll ist eine Ausnahme.
Der Optionen-Parameter für IND$FILE enthält statt der oben beschriebenen Parameter das
Kommando das am Host für den Transfer ausgeführt werden soll, z.B.:
CALL ZocUpload "IND$FILE:TSO IND$FILE PUT 'userid.projects.asm(report)' ASCII CRLF", "report.asm"
Siehe auch: ZocDownload
|
ZocWait(<text>) |
|
Wartet auf den angegebenen Text. Bei Timeout-Überschreitung
(siehe ZocTimeout) wird der Wert 640 zurückgeliefert.
Beispiel:
CALL ZocTimeout 20
timeout= ZocWait("Passwort")
IF timeout=640 THEN SAY "Keine Passwort-Aufforderung innerhalb 20 Sek"
ELSE CALL ZocSend "geheim^M"
Beispiel:
CALL ZocTimeout 10
timeout= ZocWait("Befehl eingeben>")
IF timeout=640 THEN SIGNAL the_end
CALL ZocSend "FIREWALL AKTIVIEREN^M"
timeout= ZocWait("Befehl eingeben>")
IF timeout=640 THEN SIGNAL the_end
CALL ZocSend "IPFILTER AKTIVIEREN^M"
timeout= ZocWait("Befehl eingeben>")
IF timeout=640 THEN SIGNAL the_end
SAY "Firewall und Ip-Filter wurden aktiviert!"
the_end:
Call ZocDisconnct
EXIT
Hinweis: Eventuelle Emulations-Steuercodes werden aus dem
Datenstrom gefiltert und behindern den ZocWait-Befehl nicht
(siehe ZocWaitForSeq).
Hinweis: Falls Sie ZocWait von einer DDE Applikation aus aufrufen
muss dies via Request und nicht via Execute geschehen.
Hinweis: In Verbindung mit den TN3270 und TN5250 Emulationen kann nur auf
das Zeichen ^Z gewartet werden, das in diesen Emulationen als
Indikator dafür dient, dass das Terminal wieder eingabebereit ist.
Siehe auch: ZocTimeout, ZocWaitIdle, ZocWaitLine, ZocWaitMux, ZocSyncTime
|
ZocWaitForSeq 1|0|"on"|"off" |
|
Normalerweise filtert ZOC Steuercodes für die Terminalemulation aus dem
Datenstrom, der für ZocWait verwendet wird. Mit diesem Befehl kann das
Warten auf Steuersequenzen ein- oder ausgeschaltet werden.
Dieser Schalter
kontrolliert auch, ob ZocReceiveBuf solche Steuercodes mitprotokolliert
oder nicht.
Beispiel:
esc= ZocCtrlString("^[")
/* wait for VT220 color reset */
CALL ZocWaitForSeq "On"
Call ZocWait esc||"[0m"
Siehe auch: ZocWait, ZocWaiMux, ZocReceiveBuf
|
ZocWaitIdle(<time>) |
|
Dieser Befehl wartet auf eine Übertragungspause der angegebenen Länge, d.h. auf eine
Zeit, in der die Gegenstelle keine Daten sendet. Falls keine solche Pause auftritt
wird der Befehl nach der mit ZocTimeout gesetzten Zeit mit Returnwert 640 abgebrochen.
Beispiel:
CALL ZocTimeout 60
timeout= ZocWaitIdle(2.5)
IF timeout=640 THEN SAY "Gegenstelle sendete 60 Sek. ständig Daten"
ELSE SAY "Endlich Ruhe! (2.5 Sekunden ohne Datenempfang)"
Siehe auch: ZocWait, ZocWaitLine, ZocWaitIdle, ZocWaitMux, ZocWaitNumChars, ZocTimeout, ZocSyncTime
|
ZocWaitLine() |
|
Wartet auf die nächste nichtleere empfangene Zeile (zum Warten auf eine
evtl. auch leere Zeile kann EXMLPL(ZocWait "^M") verwendet werden).
Der zwischenzeitlich empfangene Text kann über die Funktion
ZocLastLine bzw. über ZocReceiveBuf abgefragt werden.
Bei Timeout-Überschreitung liefert ZocWaitLine den Wert 640 zurück.
Hinweis: Da REXX Prozeduren in einem eigenen Thread laufen,
ist es speziell in Schleifen möglich, dass Zeilen übersehen werden, wenn
viel Text schnell empfangen wird (siehe auch ZocSynctime). Deshalb sollten
solche Schleifen mit ZocWaitLine sehr kompakt gehalten sein und die Daten
nur sammeln um sie dann erst nach dem Empfang verarbeiten (siehe zweites Beispiel).
Beispiel:
rc= ZocWaitLine()
IF (rc\=640) & (ZocLastLine()="CONNECT") THEN …
Beispiel:
/* Einen befehl schicken, der einige Zeilen an Output produziert */
CALL ZocSend 'dig emtec.com && echo "<<END>>"^M'
/* Nun zuerst die Daten komplett sammeln */
n= 0
DO FOREVER
timeout= ZocWaitLine()
/* Schleifenende wenn keine Daten empfangen */
IF timeout=640 THEN LEAVE
line= ZocLastLine()
/* Zeile mit Endebedingung gefunden? */
IF line=="<<END>>" THEN LEAVE
/* Zeile nur in Array speichern, dann weiter mit nächster */
n= n+1
data.n= line
data.0= n
END
/* Nun im 2ten Durchgang alle Zeilen im Array abarbeiten */
DO i= 1 TO data.0
line= data.i
/* 'line' kann hier in Ruhe verarbeitet werden
ohne ggf. Daten zu verpassen */
END
Siehe auch: ZocWait, ZocWaiMux, ZocWaitIdle, ZocWaitNumChars, ZocTimeout, ZocSyncTime
|
ZocWaitMux(<text0> [, <text1> …]) |
|
Wartet auf einen von mehreren Texten in den Empfangsdaten. Die Bedingung ist
erfüllt, wenn einer der Texte im Empfang gefunden wurde. Die Rückgabewert
gibt Aufschluss darüber, welcher der Texte gefunden wurde (0, 1, 2, …) bzw.
ob ein Timeout aufgetreten ist (640).
Hinweis: Alle Texte zusammen dürfen eine Länge von 4096 Zeichen
nicht überschreiten.
Beispiel:
CALL ZocTimeout 45
ret= ZocWaitMux("Mail eingetroffen", "Hauptmenü")
SELECT
WHEN ret=0 THEN CALL handle_maildownload
WHEN ret=1 THEN LEAVE
OTHERWISE SIGNAL handle_error
END
Siehe auch: ZocWait, ZocWaitLine, ZocWaitIdle, ZocWaitNumChars,
ZocTimeout, ZocSyncTime
|
ZocWaitNumChars(<n>) |
|
Wartet auf eine spezifische Anzahl von empfangenen Zeichen. Es handelt sich hierbei
um jede Art von Zeichen, also auch Zeilenwechsel oder Steuerzeichen werden gezählt. Um
abzufragen, welche Zeichen empfangen wurden, muss vor dem Aufruf von ZocWaitNumChars
ein Empfangspuffer (siehe ZocReceiveBuf) eingerichtet, und dessen Inhalt
ausgelesen werden, nachdem ZocWaitNumChars zurückgekehrt ist.
Wenn weniger als die angeforderte Anzahl von Zeichen innerhalb des Timeouts (siehe
ZocTimeout) empfangen wurden, liefert die Funktion den Wert 640 zurück.
Beispiel:
CALL ZocTimeout 45
CALL ZocReceiveBuf 100
ret= ZocWaitNumChars(5)
IF ret\=640 THEN DO
data= ZocReceiveBuf(0)
END
Siehe auch: ZocReceiveBuf, ZocWait, ZocWaitIdle, ZocWaitLine,
ZocTimeout, ZocSyncTime
|
ZocWindowState(MINIMIZE|MAXIMIZE|RESTORE|ACTIVATE|MOVE:x,y|QUERY) |
|
Setzt den Status des Hauptfensters von ZOC auf den übergebenen Status (bzw.
verschiebt das Fenster bei MOVE:x,y).
Als Funktion aufgerufen wird der neue Fensterstatus zurückgeliefert
Wird als Parametern QUERY übergeben, so wird nur der aktuelle Status
des Fensters (MINIMIZED, MAXIMIZED, RESTORED)
zurückgeliefert (bitte jeweils das D am Ende beachten).
Beispiel:
now= ZocWindowState("QUERY")
if now\="MINIMIZED" THEN DO
CALL ZocWindowState "MINIMIZE"
end
|
ZocWrite <text> |
|
Schreibt einen Text auf den Bildschirm. Dieser Befehl ist dem REXX-Befehl
SAY sehr ähnlich, im Gegensatz zu SAY wird der Cursor aber nach der Textausgabe
nicht auf die nächste Zeile gesetzt. Außerdem versteht ZocWrite Steuerzeichen
wie ^M (Enter) oder ^[ (ESC).
Beispiel:
CALL ZocWrite "Hello ^[[1m World^[[0m"
|
ZocWriteln <text> |
|
Schreibt einen Text auf den Bildschirm und setzt den Cursor auf die nächste
Zeile. Dieser Befehl ist mit SAY identisch, löst aber zusätzlich Steuerzeichen
wie ^M auf.
Beispiel:
CALL ZocWriteln "Hello ^M^J World"
SAY "Hello"||X2C(0D)||X2C(0A)||"World"
|