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: 
 Detaillierte Informationen zur Erstellung von Dialog-Vorlagen finden Sie unter 
ZocDialog-Vorlagen.|  |  |  | 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). 
 | 
 
 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, das Profil abspeichern 
und danach den dort erzeugten Wert aus der Verbindungsprofildatei 
(z.B. Standard.zky) 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 Name des Eintrags im Adressbuch, oder Hostname oder die Telefonnummer mit der wir verbunden sind. 
 |  | CONNECTEDTORAW |  |  | 
Der Inhalt des "Verbinden mit" Feldes, mit dem die aktuelle Verbindung aufgebaut wurde (z.B. linux.hogwarts.com). 
 |  | CONNECTEDTOIP |  |  | 
Bei IP-basierten Verbindungen, die IP Adresse der Gegenstelle (auch wenn die Verbindung über DNS Namen aufgebaut wurde). 
 |  | 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.) 
 |  | DOMAINNAME |  |  | 
Der Name der Domäne oder Arbeitsgruppe in der dieser Computer angemeldet ist. 
 |  | 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##. Sie können das Ergebnis mit 
PARSE VALUE res WITH x1","y1","x2","y2","mode) in einzelne Variablen übertragen. 
 |  | 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 oder WLAN. 
 |  | OWNIPS |  |  | 
Eine Liste all IP Adressen des lokalen Computers. 
 |  | 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. 
 |  | USERNAME |  |  | 
Der Anmeldename bzw Userid des aktuell angemeldeten Benutzers. 
 |  | USERID |  |  | 
(wie USERNAME) 
 |  | 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: 
 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.|  |  |  | 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. 
 | 
  
 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. 
 Das nachfolgende Beispiel zeigt, wie das Ergebnis von ZocKeyboard() in seine 
einzelnen Werte aufgeteilt werden kann und gibt die Ergebnisse auf dem 
Bildschirm aus.|  |  |  | 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.
  
 | 
 
 
 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 = 270anglerad = 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!", 1ret= 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 
 | 
| ZocPing(<ip-or-hostname>, <timeout>) | 
|  |  
Sendet eine ICMP-Anfrage (ping) an den angegebenen Host und kehrt zurück, wenn er entweder eine Antwort 
erhält, oder wenn das Timeout (in Millisekunden) abgelaufen ist. Der Befehl gibt entweder die Zeichenfolge 
##ERROR## oder die Roundtrip-Zeit in Millisekunden zurück. 
 Beispiel:
  
pingrc= ZocPing("www.emtec.com", 2500)IF pingrc\="##ERROR##" THEN SAY "Received reply within "||pingrc||" ms"
 
 
 | 
| 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\ZOC9")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
 
 
 |  | WRITE, <index>, <text> |  |  | 
Schreibt Text auf den Bildschirm der Session mit dem angegebenen 
Index (ähnlich als würde man den ZocWrite-Befehl in diesem Tab verwenden). 
 Beispiel:  CALL ZocSessionTab "WRITE", 1, "Fortschritt 10%^M"
 
 | 
 
 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,15Call 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
 
 
 | 
| ZocSetScriptOutputDestination "DEFAULT|DATASTREAMBROWSER|FILE:<filename>" | 
|  |  
Dieser Befehl leitet die Ausgabe von REXX Befehlen vom Bildschirm (DEFAULT) 
entweder in das Datenstromfenster (Anzeigen-Menü) oder in eine Datei um. 
Dies betrifft Ausgaben der REXX Befehle SAY und TRACE. Ausgaben 
von ZocWrite erscheinen weiterhin im Terminal-Bereich. 
 Beispiel:
  
CALL ZocSetScriptOutputDestination "DATASTREAMBROWSER" 
 Siehe auch:  ZocWrite, ZocWriteln
 
 | 
| 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 1024CALL 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 FOREVERtimeout= 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 ZocTerminateEXIT
 
 
 | 
| 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 ASCIIBeim 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 BINARYBeim 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$FILEWas 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 20timeout= 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 60timeout= 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 45ret= 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 45CALL 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" 
 Siehe auch:  ZocSetScriptOutputDestination
 
 | 
| ZocWriteln <text> | 
|  |  
Schreibt einen Text auf den Bildschirm und setzt den Cursor auf die nächste 
Zeile. Dieser Befehl ist ähnlich dem SAY Befehl, löst aber zusätzlich 
Steuerzeichen wie ^M auf. 
 Beispiel:
  
CALL ZocWriteln "Hello ^M^J World"SAY "Hello"||X2C(0D)||X2C(0A)||"World"
 
 
 Siehe auch:  ZocSetScriptOutputDestination
 |