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

ANHANG → ZOC REXX-Befehle/Funktionen (alphabetisch)

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?")).

 

Aufruf von ZOC-Erweiterungen

Die Namen der ZOC-Erweiterungen beginnen immer mit Zoc. Sie gleichen internen Prozeduren/Funktionen und für die meisten davon müssen ein oder mehrere Argumente angegeben werden.

Grundsätzlich gibt es zwei Arten von ZOC-Befehle: Befehle, die einen Wert zurückgeben und Befehle, die keinen Wert zurückgeben.

  • ZOC-Befehle, die keinen Wert zurückliefern, werden wie Prozeduren
  • aufgerufen:
    CALL <befehlsname> <argumente>, z.B. CALL ZocDelay 2.5.
  • Funktionen werden anhand der Funktions-Syntax aufgerufen:
  • <ergebnis-var>= <befehlsname>(<argumente>), z.B. antwort= ZocAsk("Ihr Name?")

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")

 

 

ZOC REXX Erweiterungen

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"
 

 

Funktionen zur Kompatibilität mit älteren ZOC Versionen

       
ZocAutoConnect
 

Ersetzt durch ZocConnectHostdirEntry.

ZocAskP
 

Umbenannt in ZocAskPassword.

ZocGetFilename(s)
 

Umbenannt in ZocAskFilename und ZocAskFilesnames.

ZocGetFolderName
 

Umbenannt in ZocAskFolderName.

ZocBaud
 

Ersetzt durch ZocSetDeviceOpts, z.B.: Call ZocSetDeviceOpts "[1]38400-8N1".

ZocCaptClr
 

Ersetzt durch ZocCommand("CLEARSCROLLBACK").

ZocCarrier
 

Ersetzt durch ZocGetInfo("ONLINE").

ZocCls
 

Umbennant in ZocClearScreen.

ZocCursor
 

Ersetzt durch ZocGetInfo("CURSOR-X") und ZocGetInfo("CURSOR-Y").

ZocDial()
 

Umbenannt in ZocConnect.

ZocEndZoc()
 

Ersetzt durch ZocTerminate.

ZocExec
 

Umbenannt in ZocShellExec.

ZocGetLine
 

Umbenannt in ZocWaitLine.

ZocGetOption
 

Umbenannt in ZocGetSessionOption.

ZocGetPhonebk
 

Umbenannt in ZocGetHostEntry.

ZocGlobal
 

Umbenannt in ZocGlobalStore.

ZocLockKeyboard
 

Ersetzt durch ZocKeyboard("LOCK") und ZocKeyboard("UNLOCK").

ZocLoadOpts
 

Umbenannt in ZocLoadSessionProfile.

ZocLoadKeyfile
 

Umbenannt in ZocLoadKeyboardProfile.

ZocLogging
 

Umbenannt in ZocSetLogging.

ZocLogname
 

Umbenannt in ZocSetLogfileName.

ZocRestimer
 

Ersetzt durch ZocSetTimer("00:00:00").

ZocSaveOpts
 

Ersetzt durch ZocSaveSessionProfile.

ZocScreen
 

Ersetzt durch ZocGetScreen.

ZocSendBreak
 

Ersetzt durch ZocCommand("SENDBREAK").

ZocSendKey <nummer>
 

Bitte verwenden Sie stattdessen ZocGetSessionOption und ZocSend.

ZocSetDevParm
 

Umbenannt in ZocSetDeviceOpts.

ZocSetDlPath
 

Bitte verwenden Sie stattdessen CALL ZocSetProgramOption "DownloadPath=<path>".

ZocSetEmu
 

Bitte verwenden Sie stattdessen CALL ZocSetSessionOption "ActiveEmulation=<emu-id>" oder ZocSetEmulation.

ZocSetHost
 

Bitte verwenden Sie stattdessen CALL ZocSetSessionOption "Host=yes|no".

ZocSetPhonebk
 

Umbenannt in ZocSetHostEntry.

ZocSetOption
 

Umbenannt in ZocSetSessionOption.

 

 
← Zurück zu ANHANG

 

Downloads
Orders
Contact
Support
Terms of Use
Privacy Policy