ZOC
Getting Started

Help for Datacom Novices

Experienced Users (new to ZOC)

Starting ZOC (Command Line Parameters and Environment)

Command Line Parameters

The ZOC.CFG File

Working Directory/Network

Environment Variables

Startup REXX Programs

Screen Elements

Menu

Toolbar

Custom Button Bar

Main Window

Chat Field

Status Line

Menu Overview

Device Menu

Logging Menu

Cliptext Menu

Transfer Menu

Misc Menu

Options Menu

Phone Book

Changing a Phone Book Entry

The AutoDial Feature

Importing other Phone Books

Other Functions

Browse Window

File Transfer Window

File Transfer Game

MINIHOST

Customizing ZOC

Help for Global Options

Defining Directory and File Names

Setting up the Tool Bar

Redefining the Keyboard

Redefining One Key

Translation of Inbound/Outbound Characters

Setting up the Phone Cost Description

Setting up the Phone Book/Dialling Options

Option Sets

Device Options

Terminal Options

Logging Options

Emulation Options

File Transfer Options

Creating a Modem Init String

Modem Options

F-Key Macro Definition

Definition of the AutoMacros

Definition of the Custom Button Bar

Definition of the AutoReplies

Window Definition

Safety Options

Input/Output Devices

About the Serial/Modem Device

About the ISDN Device

About the Telnet Device

About the Named-Pipe Device

About the Windows-Modem Device (Win95/NT only)

Programming ZOC

Introduction to REXX

Introduction to DDE

Updates, Author, Email, Orders, ...

Special Offer: Companion Discount

Where/How to Order

Bulk Orders

Getting Support

Contacting EmTec

Contacting Enterprise Alternatives

The ZOC Mailing List

Places to Find Updates

A few Words about the Evaluation Version of ZOC

ZOC Versions

APPENDIX

Features You Might Have Missed

Function Shortcuts

VT102/VT220 Special Keys

Special Codes

Control Codes

Power Codes

REXX, Common Problems, Credits

REXX Reference

ZOC-REXX Commands/Functions

Common Questions (How-To Guide)

Common Problems and Questions (Trouble Shooting Guide)

Credits


Getting Started

Before using ZOC you should browse through one of the following help topics (according to your datacom knowledge).
Novice (new to datacom)
Experienced (new to ZOC)

Other topics:
ZOC command line
Orders/Updates/Author
Common problems
Features you might have missed

Display of this window at startup time can be turned off in the Options->Settings->Window menu.


Help for Datacom Novices

If you never used a datacom program, it is highly recommended to order and read the printed documentation for ZOC. It contains a users guide with an introduction to datacom and explains a lot of the technical terms. You should work through the tutorial there.

If you don't have a printed manual (it can be ordered from the distribution/registration sites), you can print this help file (from the help window's print button). Proceed as described in the topic for Experienced Users but make sure you read the according help topics carefully.

After you made your first call, you should make yourself familiar with other ZOC functions and options. You will find many new things that seem to be useless at first sight, but if you read about them, you will remember them later when they might come handy.

The help file contains a complete Menu Function and Options reference. Showing the Contents of the help file might be useful as well.


Experienced Users (new to ZOC)

If you never used ZOC before, you should proceed as follows:

1.
First, read the help topic about the Screen Elements. Don't miss the section about the main window (about clipping text with the mouse).   The elements of the status, tool and user bar have tool tips associated with them.  Just park the mouse on them for about 2 seconds and a short description will appear.  This is especially handy for the LEDs in the status bar.

2.
Then, customize the options in the modem section (make sure you read the help pages there because, compared to other programs, ZOC does some things in a slightly different way) and make sure you use a modem init string you already used successfully in another comm program (don't forget to append ^M to it).  Then set the serial parameters (checking the settings from your other comm program might help a lot) and customize your window.
Then save the options to disk.

3.
Next, you should open the phone book and create a new entry for your favorite bbs or host.  Don't miss the help topic for the AutoLogin feature (at present it is unique to ZOC and can make things a LOT easier). Everything else is more or less similar to other comm programs.
Before calling that host, you should set the options for the phone book (use the Options button in the main window of the phone book, or phone book options from the Options->Global Menu) to customize ZOC's dialing features.

4.
Make a call and check if everything works. If not, try to find the problem (compare your settings with those of the comm program that worked for you so far).  The Help->Common-Problems sections might be helpful.

5.
If everything works you should make yourself familiar with other ZOC functions and options.  You will find many that are similar to the comm program you already used, but there will be a lot of new things as well. You will find a list of the highlights in the file FEATURES.DOC in your ZOC directory.
The help file contains a complete Menu Function and Options reference. Showing the Contents of the help file might be useful as well.


Starting ZOC (Command Line Parameters and Environment)

Topics in this section:

o	Command Line Parameters

o	The ZOC.CFG file

o	Working Directory/Network

o	Environment Variables

o	Startup REXX Programs


Command Line Parameters

There are a lot of parameters that can be specified in the command line, in the icon's parameter field or in the ZOC.CFG File.

ZOC [/C] [/DEV:<device>] [/FEELX] [/MIN] [/MAX] [/NONEWS_9.99] [/NOEXCEPTION] [/NUMLOCK:n] [/O:<options file>] [/P:<host name>] [/PF:<phone book file>] [/POS:<x>,<y>,<width>,<height>] [/Q] [/RESTRICT:n] [/S:<scriptfile>] [/TELNET:<host>] [/U] [/WD:<workdir>]

/C
OS/2 only: This option specifies that you want ZOC to open the COM port in shared (cooperative) mode. This way other programs can access the COM port together with ZOC (but only if they open it in shared mode as well, which OS/2-MDOS and WINOS2 programs don't).

/DEV
You can use this option to tell ZOC to activate a specific device at startup.  Supply the name of the device as shown in Options->Device, eg. ZOC /DEV:TELNET
If necessary, you can append device-parameters (as described in the ZocSetDevParm REXX command) to the device name, separated by an @ character: ZOC "/DEV:SERIAL/MODEM@COM3:57600-8N1|9|350" (please be aware that strings which contain the bar character must be enclosed in quotes).

/FEELX
Some X-Windows like mouse utilities seem to confuse ZOC's text cursor handling, resulting in the fact, that the cursor just disappears.  Setting this option makes ZOC more robust in this regard (the drawback is that the cursor will stay on when the ZOC window is inactive).

/MIN
Start ZOC with the window minimized.

/MAX
Start ZOC with the window maximized.

/NOEXCEPTION
OS/2 only: Suppress the OS/2-exception dialog that appears in case of hard errors (OS/2 version only).

/NONEWS_X.XX
Suppress the display of the news text in ZOC's terminal window at startup (replace X.XX with the current version number).

/NUMLOCK:n
You can use this option if you want to start ZOC with the NumLock key set to on (n=1) or off (n=0).

/O
With this option, you can tell ZOC to load an options file at start time (normally OPTIONS\STANDARD.ZOC is used). This can be useful if you have more than one modem and different setups for these. A path should be specified, e.g. ZOC /O:OPTIONS\COM2OPTS.ZOC

/P
This is a name of a host from the phone book to be called after startup.

/PF
This is an alternate name of a phone book to load.  The startup default is PHONEBK.

/POS
The /POS parameter allows to control where and how large the ZOC window will open.  x/y are screen pixels from the upper left corner, width/height are the width and height of the window.  Upon startup, ZOC can modify the width/height values according to the window-options (eg. to snap to the best matching font size).

/Q
This option suppresses the introduction window while loading ZOC (quiet start).

/RESTRICT:n
This option allows you to restrict access to certain parts of ZOC (for example if you use ZOC in an pre customized environment). The number after the option controls which parts are disabled and is the sum of any of the following:

1=no access to options
2=no access to phone book
4=disable main popup menu

/S
With this option, you can tell ZOC to process a REXX program or a scriptfile after start. A path should be specified, e.g. ZOC /S:SCRIPT\NIGHTCALL (please also check the /U parameter below).  If the REXX program expects a parameter, you could call it like this: ZOC "/S:SCRIPT\FOO BAR".

/TELNET
This option tells ZOC to connect to a telnet host right after starting up, eg. ZOC /TELNET:bbs.channel1.com  It is possible to put a space character between the colon and the host name.  This allows to use ZOC as a telnet client in Netscape navigator (supply ZOC /TELNET: as the telnet application in Netscape Navigator's options).

/U
This option specifies unattended mode. In unattended mode ZOC opens no requesters (like 'Are you sure') but uses them their default answer. This way the program won't hang if you run it in the middle of the night to fetch your mail and something unforeseen happens.

/WD
This option specifies the working directory.  This is similar to the working directory in the program icon, but by specifying the working directory with this option doesn't require to add the ZOC directory to CONFIG.SYS's LIBPATH (see below).


The ZOC.CFG File

The wealth of command line options can make starting ZOC a tedious thing.  If you want some of the parameters to be always provided, you can create a file named ZOC.CFG with an editor and enter one command line option per line, eg.:

/NUMLOCK:1
/NOEXCEPTION
/RESTRICT:3

The ZOC.CFG file is read from the same directory where ZOC.EXE is stored.  Options mix with options given from the command line, that is, options that have a no value (ie. are not followed by a colon) are set if they are provided from the command line or the ZOC.CFG file.  With options that have values, the command line settings take precedence.


Working Directory/Network

If you specify a working directory (see /WD: command line parameter) other than the directory where ZOC.EXE resides, it is necessary that a subdirectory named OPTIONS exists there.

In this case ZOC loads all user configurable files from the working directory or the OPTIONS subdirectory.  This way ZOC can be run from a write protected network drive or different people can use ZOC on one machine (by using the same EXE file but specify different /WD settings).

However, if you use the Working-Directory setting in the program icon instead of ZOC's /WD: parameter, you will need to add the ZOC directory to the LIBPATH (OS/2) or PATH (Windows NT/95) entry in CONFIG.SYS or to the PATH setting in Windows-NT.

To run ZOC from a network server, set the working directory in the ZOC icon to the network drive and supply /WD:<local-dir> in the parameter field. Please check LICENSE.DOC for legal restrictions.

Additionally you need to contact EmTec and request a document describing how to store the registration keys on the file server instead of the local machines.

If you want to use a modem on a server, please check the EmTec web site for a link to the modem sharing product Stomper.


Environment Variables

ZOC uses the TZ environment variable to correct the file date transmitted by Zmodem.

Zmodem was developed with Unix in mind, where time stamps (file date/time) are always stored in Greenwich time and where local time is calculated by the dir command.  This way a file always carries the correct local time, even if shipped on disk around the globe.  However, the HPFS file system knows nothing about the time zones which are still part of Zmodem. Most OS/2 or MS-DOS systems emulate the time zone in one way or anothor, mostly by using Eastern Standard Time (5 hours west of Greenwich) as a default; files received from such senders get the correct time when received by ZOC. However, some hosts use other time zones. If you want to adapt your time zone setting to such hosts, you should add the TZ environment variable to your CONFIG.SYS.

To do this use SET TZ=<SSS><N><DDD> where <SSS> is a 3-char standard time code, <N> is the time difference from Greenwich and <DDD> is a 3-char daylight saving time code, e.g. use SET TZ=EST5EDT for Eastern Standard Time (which is the default) or TZ=CET2CDT for Central European Time.


Startup REXX Programs

There are two REXX programs that are started when you run ZOC. The first one is SCRIPT\ZOCEVENT.ZRX (it is also executed when ZOC closes) and it is intended to stop or restart a fax program's (e.g. FaxWorks') auto receive feature.  See the file SCRIPT\ZOCEVENT.DOC for more details.

The other REXX program is called SCRIPT\STARTUP.ZRX and is run after ZOC has been initialized.  You can use it to call a BBS every time you start ZOC or print startup greetings or things like that.


Screen Elements

The elements of the screen are:

o	Menu

o	Toolbar

o	Custom Button Bar

o	Main Window

o	Chat Field

o	Status line


Menu

The menu lets you select most of the ZOC functions (for a description of the particular functions see Menu Overview).


Toolbar

The toolbar offers icons for most of the functions in ZOC.

You will see a description for each icon, if you move the mouse over it and wait two seconds.

You can Customize the Toolbar from the Options Menu or by clicking with the right mouse button on empty space in the toolbar.


Custom Button Bar

The custom button bar is located beneath the toolbar and offers buttons that can be defined in Button Options of the Options Menu to start REXX programs or send text.

In the button options you can assign labels for the buttons and if you move the mouse to a button and wait a second, the full text (or action code) of the button will be shown.


Main Window

The main window displays the received text.

You can bring up a popup menu by clicking the right mouse over the main window.

You can mark text with the left mousebutton (this is called stream mode).

If you hold the Alt key pressed while marking text, the selection will be made in block mode rather than in stream mode (block mode lets you select arbitrary rectangular areas on the screen, stream mode is line orientated).

If you hold the Ctrl key pressed while doing the selection, the text will be appended to the text that already is in the clipboard rather than overwriting it.

The marked text is copied into the clipboard and can be accessed from the functions Send, Send without CRs, Send quoted, Send CIS-quoted, Print and Edit in the Cliptext Menu and with some key shortcuts.


Chat Field

The chat field is an entry field into which you can enter text.  The text is not sent until you press enter.  This is helpful if you are in an online conference or if you use a remote shell that does not provide command editing and history.

The chat field can be activated from Window Options or by pressing Alt+C or by pressing the Scroll-Lock key (the latter, only if defined accordingly in Terminal Options).

If the cursor is in the chat field, you can discard it by pressing ESC or Scroll-Lock key.  With the chat line open Alt+C will toggle the cursor between the main window and the chat line.

You can use arrow keys to retrieve the last few lines you typed (this works like the command history in an OS/2 or Windows shell).


Status Line

The status line provides information about and access to some options (if, because of a small font, your ZOC window is not wide enough, some of the information will not be available).

Using the right mouse button in the status line brings up a popup menu that gives access to all options dialogs (OS/2 version only).

Placing the mouse on one of the status line elements (fields or LEDs) for about two seconds will show a short description.

Device Parameters
This button displays the currently set line speed and parameters. Clicking on the field with the left mouse button brings up the Device Options dialog.  There you will be able to select and configure the I/O devices.

Transfer Protocol
This button displays the currently set file transfer protocol. Clicking on the field brings up the Transfer Options dialog where you can select and configure transfer protocols.

Emulation
This button displays the current terminal emulation. Clicking on the button brings up the Emulation Options dialog which will let you choose from the list of available emulations.

Timer
This button displays the timer. The value depends on the currently set mode (see Cost Description and Window Options).
A lowercase letter a-j means that a timer unit is selected and that the timer was stopped. A capital letter indicates that the timer is running. The digit (from 1-6) after the letter indicates that the so numbered description field for that distance zone is currently used.
A click on the button brings up the Timer Options dialog.

LEDs
The four LEDs in the status line provide two services:
If they turn green, your host has requested the VT102 LED service and sets the LEDs according to the application you run. The LEDs will stay green until you change the emulation or clear the screen from the Misc Menu.
If they are red they display additional status information:

LED 1
ON: Modem Carrier Detect
OFF: No Carrier.

LED 2
Bright Red: Script running.
Blue: Doorway mode active.
Pink: Autologin running.
Green: Learning REXX or AutoLogin.

LED 3/4
Modem receive-data and send-data. They can be turned off in the Window Options.

Logfile
This checkmark displays the name of the logfile and opens or closes it.

Online Time
This shows how long you are (or have been) connected to a host.

Window Size
This shows the size of the window (columns x rows).


Menu Overview

The menu provides some submenus which give you access to ZOC's functions:

o	DEVICE

o	LOGGING

o	CLIPTEXT

o	TRANSFER

o	MISC

o	OPTIONS


Device Menu

The device menu manages all necessary functions to maintain the modem or other devices (like Telnet or ISDN) and to connect to a host. Additionally, a list of selected phone book entries can be dialled directly from this menu.

The functions here will be explained in regard to modem connections. If you are using other devices, similar functions will be performed (e.g. telnet hosts are called by entering a host name or internet address instead of a phone number).  Special details can be found in the help text to the devices.

Additionally some device dependent function may appear in this menu (like Telnets Are you there). They are described in the device's help text as well).

Initialize
This function sends the init string defined in the Modem Options to the modem to set it to a defined state. It will do this regardless of the current carrier detect state.

Manual Call
This function opens a window to enter a phone number or a connection address (e.g. the name of a telnet host).  This number is then dialed using the dial string (see Modem Options) you specify in the window as well. If the number is busy or cannot be reached for any reason, ZOC will redial it using the options specified in the Phone Book Options.

Disconnect
Disconnects the line using the hangup method defined in Modem Options.

Send Break
Pulls the data pin of the modem low for a given time (see Modem Options).  This is called 'sending a break'.  Some systems use this to stop the current operation.

Device Dependent Functions
The device dependent functions are described in the input/output devices section of the help file.

Accept Calls
This function enables/disables the auto answer mode of your modem using the commands you set up in Modem Options.  In auto answer mode the modem will automatically pick up the phone when the phone rings and will try to establish a data connection with the calling modem (of course this is not a good idea when you expect voice calls). Accept calls performs a similar functions for the other devices (eg. by creating an telnet socket for incoming calls, etc.).

Phone Book
The phone book is a dialog to maintain your personal dialing directory or to connect to one or more numbers from it (see Phone Book).

Call Next
If you select more than one host to call in the phone book, ZOC will connect to the first of them that is available.  After finishing the call you can select this function to try to reach the next available host.

Stop AutoLogin
This function aborts automatic login initiated from a phone book entry (see Changing Phone Book Entries).  AutoLogins are indicated by the 2nd LED in the status line being pink.

Call XXXX
At the end of the device menu appear those entries from the phone book that have the Menu Access option enabled (see Changing Phone Book Entries). This is handy for hosts which you call often.


Logging Menu

ZOC maintains four different logging methods. One is logging to a memory buffer, (called Capture) so you can review data that scrolled off the screen during a session.  Another is the logfile that logs all incoming data permanently to a file on the hard disk.  Yet another is redirecting all incoming data directly to the printer.  The last one, the call log, logs time, duration, cost and file transfers of your calls to a file (see Call Log).

The Logging Menu controls the capture, logfile and printer logging.

Browse Capture
This function shows the contents of the capture (for more information see Browse Window). in an extra window.  You can keep this window open while you work with ZOC, thus being able to easily skip back and forth between the current session and, for example, a message that scrolled off the screen.

Clear Capture
Clears the capture buffer. This function is affected by the Safety Options.

Load Capture
Loads a file from disk to the end of the capture buffer.

Edit Capture
Starts the editor defined in Directories with the contents of the capture buffer. After you leave the editor, the modified contents will be moved back into capture buffer.

Note: This functions closes the browse window if it is open.

Print Capture
Sends the entire contents of the view buffer to the printer (also available from the Toolbar). Of course this can result in a lot of printing.

Set Log Name
Set the name of the current logfile. The name can be automatically selected from the phone book when connecting to a host (when starting ZOC the logfile gets its name from Capture Options). You may use special placeholders for the name as described in the Capture Options and the Code Section of the appendix.

Default Log Name
This sets the logfile to the file defined in Capture Options.

Log active
This function changes the toggles the status of logging between on and off.  This can also be achieved by clicking on the capture name in the Status Line and can be done remotely if your host supports the DC2/DC4 logging protocol (see Capture Options).

Delete Log Files
Since you can build log file names that contain the current date you might end up with a lot of log files. Using this function lets you delete logfiles you do not need any more.   Selecting this function will open a file requester in which you can select one or more files which will be deleted if you press OK.

Log to printer
Sometimes it is handy to have part of a session sent to the printer. This is possible by enabling this function before receiving the data (e.g. before reading a mail).
Additionally it is possible to print already received text, by opening the capture window (see Logging Menu), marking the text with the mouse (to copy it to the clipboard). and printing the contents of the clipboard from the Cliptext Menu.


Cliptext Menu

Cliptext is text that is stored in the clipboard of the WPS.  Normally it is copied from a ZOC screen by marking characters with the left mouse button (this can be combined with the Alt key), but it can be copied or cut from an editor or any other program as well.

Mark
This function is just an info message of how to put text from screen into the clipboard.

Copy Window
This function copies the entire contents of the ZOC text window into the clipboard.

Send
This function takes text from the clipboard and sends it to the modem.  The sending is done like an ascii upload and the delay and CR/LF translation from Ascii Upload Options are used.

Send (no CRs)
Takes text from the clipboard and sends it to the modem.  Carriage Returns are ignored and a Space is sent instead.  This function is affected by the Ascii Options in the Transfer Options window.
Imagine the following case: You searched a host for files with the keyword TERM and the host gave you a list of filenames - one in each line. To download all files, you could mark the list with a box (left mouse button while pressing the Alt key) and send them with a space between them when the host asks for the filenames to download.

Send quoted
Text from the clipboard is sent.  Each line is preceded by > to indicate a quotation.  If you press the shift key while selecting this function, ZOC will reformat the text to fit into the line before sending it.  The function is also available from the Toolbar and is affected by the Ascii Upload Options in the Transfer Options window and 'Quote always smart' in the Terminal Options window.

Note: If you hold the shift key pressed while selecting this function, the text will be reformatted to fit a given width.

Send CIS-quoted
The quoting style of the Send Quoted function is used widely across the networks.  However, on CompuServe most people quote text by starting the quotation with >> and ending it with <<.
This function works the same as Send Quoted but uses the CompuServe quotation style.

Note: If you hold the shift key pressed while selecting this function, the text will be reformatted to fit a given width.

Edit
Calls the system editor (see Directory Options) with the contents of the clipboard.  After saving, the new contents is written back into the clipboard.

Print
Sends the contents of the clipboard to the printer (the printer port is defined in Directory Options).


Transfer Menu

The transfer menu allows you to send files to the host or receive them from it.

Upload
Sending a file to a host is called an Upload.  To do this the sender and receiver use certain methods called Transfer Protocols.  The upload function sends a file to the host using the currently active protocol (see Transfer Options).

Download
Receiving a binary file from a host is called a Download.  The same transfer protocols are used as for uploads.  Downloads are affected by the Transfer Options.

ASCII Send
This functions takes text from a file and sends it to the modem without using a file transfer protocol.  Roughly spoken, an ascii upload is the same as typing text very fast.  This way you can prepare messages using an editor before you call a host and then send the file with this function when the host asks you to type your message.

Note: If the host loses characters in this process, you can specify a delay for each character in the Transfer Options window.

Transfer Shell (OS/2 only)
Transfer shell launches a command processor from which you can start command line based external protocols that can accept a file handle for the com port.  The handle of the communications port is given in the environment variable ZOCHFC.

Example:
CKERMIT -l %ZOCHFC% -r

Transfer Shells are available from REXX programs (see REXX command list), F-Keys, User Buttons and AutoReplies as well (see Special Codes).  To start an external protocol like M2ZMODEM from a macro key, you would define it as

Example:
^XFER=M2ZMODEM -u %ZOCHFC% -r .\DOWNLOADS

If you map that to an AutoReply, (instead of a F-Key) you could even have it started automatically.

Transfer DOS-Shell
A transfer DOS-Shell lets you start a DOS command processor from which you could run external protocols.  This is a rather tricky feature, because DOS programs cannot share the COM port with OS/2 or Windows programs.  To run them anyway, ZOC has to release the COM device, which clears the DTR signal on the serial port, whereupon modems normally hang up.  To prevent this, ZOC has to send a special command string (see Modem Options) to make the modem ignore the DTR signal.  ZOC offers a default string that should work with most but probably not with all modems.
When you start a Transfer-DOS-Shell, you will see ZOC sending the modem control command to disable DTR detection, then a shell will pop up.  In this shell you will be able to manually type a command to start an external file transfer protocol.  After the transfer has been completed, type exit to close the shell window.  Then ZOC will enable the modem's DTR detection again.
Transfer DOS-Shells are available from REXX programs (see REXX command list), F-Keys, User Buttons and AutoReplies as well (see Special Codes).  To start an external DOS protocol like DSZ from a macro key, you would define it as

Example:
^DOSXFER=\DOSCOMM\DSZ\DSZ port 1 rb

Note: OS/2 only: However, if possible, you should use OS/2 protocols (like CKERMIT, P or M2ZMODEM) because DOS communication protocols eat a LOT of CPU power when running under OS/2.


Misc Menu

Start REXX
Starts a REXX program.  REXX is something like a batch programs for ZOC, which lets you process specific tasks automatically (see ZOC Automation).

Stop REXX
Stops a currently running REXX.

Edit REXX
Call the editor to modify a REXX file manually.

Learn REXX
Most of the time REXX is used automate logins.  Writing these is a rather tedious and boring task that can, for the most part, be done automatically.  If you select this function before calling a host, ZOC will monitor the login process and create a REXX program that handles the login automatically.

Note: The program will only contain the code necessary for the log in.  It will not contain commands to call that host (which is normally done from the phone book and not from script).

Stop Learning
After you enabled script learning and logged into a host you tell ZOC to stop the learning process.  ZOC will ask you for a name and store the script accordingly.  The name you use can later be entered into the REXX field of a phone book entry (see Changing Phone Book Entries).  Then ZOC will execute it to log you in after having established a connection to that host.

Lock Macros
Lock the macro keys to prevent unauthorized use (see Safety Options).

Unlock Macros
Unlock the macro keys again.  If defined, the password from Safety Options is required.

Reset Timer
Reset the timer in the status line which displays the time or cost of your current call.

Hold Timer
Stop the timer in the status line which displays the time or cost of your current call.

Release Timer
Restart the timer in the status line which displays the time or cost of your current call.

Set Timer
Set the timer to a specific value.

Clear Screen
This functions just clears the terminal screen and resets the LEDs in the Status Line back to red.

Print Screen
This function lets you print the contents of the terminal window (in raw ASCII mode).

Save Screen
Saves the contents of the terminal window to the file defined in Global Directory Options.  If the file already exists, the text will be appended.

Snippets
ZOC monitors your input data stream for filenames, fido node numbers, CompuServe user IDs and Internet addresses and collects them in a little window that floats aside the ZOC window.   Using this function you can show or hide the Snippets Window.  When it is showing, you can send one of the collected items by double clicking it with the mouse.

Note: This feature needs a bit of CPU power, so if you don't need it or don't have fast machine you should disable it in the Window Options.  A good compromise is to hide the window most of the time (thus monitoring the input stream but saving the CPU power to update the window) and to show it (using the Alt+. key combination) when it is needed.

Note: You can change the font of the Snippets window by dragging a font from the System->Setup->Fonts folder of the WPS and dropping it above the Snippets window.

Split Chat
The split chat function splits the screen horizontally and shows text you type in the lower half while displaying text you receive in the upper. This is handy if you want to chat with someone who called you by modem.

Note: You should not use this function while accessing a remote host.

Editor
Call the editor defined in the Directory Options.

Command Shell
Call the shell defined in the Directory Options.


Options Menu

The options menu is used to define the characteristics of ZOC.

There are basically two kinds of options: global options and option sets.

The global options (like directory or sound file names) remain the same for all the hosts you call, while options from the options sets (like the settings of the macro keys or character translation) will very likely change from host to host.  Different option sets can be stored in files an can be retrieved when calling a host.  There is one special option set named STANDARD.ZOC which is used when you start ZOC.

Global
Display a submenu to jump to one of the global option definition dialogs (see Global Options).

Settings
Opens a settings notebook to define all kind of options (see Options Notebook).

Jump to
Display a submenu to jump to a specific page in the options booklet.

Window Elements
This shows a submenu in which you can check the window elements for ZOC's main window.  This is the same as the window elements box in the window page of the options notebook).

Load Options
Load a set of options.

Save Options
Save the current set of options to disk.

Save As
Save an options set in a file with a different name.  If saved as STANDARD.ZOC, it will be loaded automatically when ZOC is started.

Reset Options
Reset the current options set to the default state.


Phone Book

The phone book acts as a personal dial directory for numbers you call with your modem.

It is subdivided into four sections (default, 1st, 2nd and 3rd alternate) which means, that you practically have four different phone books which can be indivitually named in the Phone Book Options dialog from the Options button in the main window or from the Options->Global menu.

The main window lets you select one or more hosts to call and gives you functions like Delete or Edit that are necessary to maintain the list.

In the phone book list, entries which are defined to be called regularly are marked with a checkmark if they were called recently; if they are marked with a yellow flash they are due for calling.

Dial
Connects to one or more selected entries. If you select more than one entry (to do this, hold the Ctrl key pressed while you click on one entry after the other with the mouse) ZOC will connect to the first that is available and store the others in an internal dial queue so you can call them later (using the Call Next operation from the Device Menu).

Due
Selects all entries which are due for calling (marked with a little yellow flash in front of the phone number). ZOC determines the entries that are due for calling by looking at the date of the last call and the 'Call after xx days' field from the edit window.

Edit
Changes the data of the selected entry (check Changing a Phone Book Entry for details).

New
Creates and edit a new entry in this section of the phone book.

Clone
Creates and copy of the selected entry and opens the edit window.

Delete
Deletes one or more entries from phone book.

Print
Prints the selected entries.

Import
Imports phone books from other comm programs.

Options
Show the phone book options (this is the same as calling the phone book options from the options menu). See Phone Book Options.


Changing a Phone Book Entry

CALL

Name
A name for the entry. For multi port hosts, you should use names that are equal in the first six characters (e.g. AVALON-1, AVALON-2 ...). ZOC will maintain call dates, call counter etc. for all ports of the host instead of updating only the one that was called.

Connect to
The phone number of the host or, if you are making a non-modem connection, a string (e.g. an internet address and port number) that represents the service you want to call.  You can use one or more of the phone book macros in this field to make calling more flexible (see Phone Book Options).

Call every XX days
If ZOC finds a carrier detect signal after calling a host, it will update the date of last call for the called entries (and all others that are equal to the one that was called in the first six characters of the name, thus managing multi-line hosts correctly, see Name-field above).
If you want to call a host regularly (say once a week) you can enter the number of days here after which ZOC should remind you (by showing a symbol in front of the phone number in the main window) that it is time to call that host again.

Group call
If you call hosts that have multiple phone numbers you should create one entry for each phone number and name them in a way that the first six characters of the entries are the same (see above).
If you don't want to select all these entries to call that host you should enable the group call option for one (or all) of them. This way ZOC tries the other lines as well to connect to the host.

Device
This field lets you specify a device (and related device-settings) to be used to make the call.  The device settings window will vary with the devices you use.  If you select "<DEFAULT>", the phone book entry will use the device that is currently active, or that is active after the options file (see below) was loaded (if one was loaded).

Device-Options
If you select a device other than "<DEFAULT>", you will be able to configure that device, eg. you can set different TELNET options for different hosts in the internet.

Prefix
If you are using the SERIAL/MODEM device, you can select a dial command (from the Modem Options) to be used to dial the phone number.

Cost
If you set up the Phone Cost Description you can specify the distance zone to be used to calculate the phone cost for calls to this host.

Section
Select the phone book section to store this entry to.  The sections can be individually named in Phone Book Options.

Sort first
The phone book is sorted according to the Phone Book Options but you might have entries that you want on top of the list regardless of their name, last call or whatever it is you use to sort the list. This option will send the entry to the top of the list.

Menu access
Select this if you want the host to be accessible from the device menu. Insert a tilde before a character in the name (e.g. ~ZOC InfoBBS), to create a shortcut for the menu item.

OPTIONS

Options file
Select the name of an options file to be loaded (e.g. COMPUSRV.ZOC) before the phone book entry is called.
This way you can have entirely different options for different hosts. New options files can be created with the Save-As command in the Options menu.
After the file was loaded, the device, emulation and file transfer protocol will be set (see below).
If the phone book entry does not rely on settings in an external options file, you can select "<DEFAULT>" which means that the phone book entry will be called with whatever options are set when you dial.  The options listed below (translation, keyboard etc.) will be set anyway.

Translation
Select a character translation table (created from the Global->Translation dialog) to be used when calling the host.

Keyboard
Select a key map (created from the Global->Keymap dialog) to be used when calling the host.

Emulation
Select an emulation to use after loading the options file but before calling the host.

Protocol
Select a protocol to set after loading the options file but before calling the host.

Logfile
This is a name to be used for logging the session. Special placeholders (for date or time) can be used as described in Capture Options.

Download/Upload Path
This is the name into which downloaded files are stored (or uploaded files are taken from). This setting overwrites the value in Options->Global->Directories (which is restored at the end of the session only, if 'Load standard options after disconnect' is enabled in Dialling Options).

LOGIN

Password
You can add a password for the host here. If you connect to the host you can send the password by defining a macro key as ^& (or by sending ^& from a REXX script).
That is, if your F12 key is set to the text ^&, you can answer the password prompt of the host by pressing F12 (see Macro Keys).
However, it is more convenient to let the AutoLogin feature (see below) handle the entire login.
The password field will not show the entered password.  If you find that unnecessary, you can make it readable in the phone book options dialog.
The password can be used only once per session to avoid giving it away by acidentally pressing the wrong F-key or user button in an online chat.

Username
You can set a username for the BBS here.  You can access the username by mapping ^% to a button or function macro key (this is similar to the password field).

IEMSI
Many bulletin board systems offer a method called IEMSI to automate the login procedure.
Using this method you can provide your name in the IEMSI options window and set the password field to the password you use to log into that host. Additionally you can specify some options that are used by host.
During the login the host will send the IEMSI request (**IEMSI_IRQ; not to be mixed up with the **EMSI_REQ that is used for FIDO mailer software) to which ZOC responds by sending your user name and password to the host. If everything goes well, the host will let you in at once and show (or skip) news, new mail and new files as selected in the IEMSI options window.
If you leave the name field empty, ZOC will use the name supplied in the Modem Options.

Note: This button is only available if you entered a password for this host.

AutoLogin
This field contains a sequence of events (either wait (W) or send (S) events) that logs you into the host automatically. Since most logins can be handled in a form like 'wait for this, then send that' ZOC offers a method to do exactly this without having to deal with REXX programming.
To send special keys like Enter or ESC you can use control codes as described in the Appendix.

S0=...
If defined, S0 is sent unconditionally after a carrier signal was detected. It can be used to raise the attention of the host.

Wn/Sn=...
Define pairs of words to wait for and to reply then. Text to wait for is listed as W1, W2 ..., the corresponding text to be sent is given as S1, S2 ... (see example below).

Note:
the W and S characters must not be lowercase letters

Example:

W1=Esc|S1=^[|W2=Name|S2=Zaphod^M|W3=Password|S3=HeartOfGold^M

 This example means: To log in, first wait until the host sends the characters Esc, then send the ESC character to the host. After that wait until the host sends Name, and send Zaphod<Enter> back. Then wait for the text Password and send the text HeartOfGold<Enter>.

Note: You don't have to write such AutoLogin sequences yourself, since you can tell ZOC to learn it by watching you the next time you call this host.

REXX Program
The name of a REXX file to be executed after the dialer has made a connection to the given phone number (for REXX programs the argument will be supplied in ARG(1)).
Such a script could be used to log you into the host automatically. However, for simple login procedures (like sending user name and password), the AutoLogin feature or IEMSI (both described below) are more handy.

Note: IEMSI is only available if you enter a password.

INFO

Memo
This first line of the memo stores a short note about the host. You might want to enter the name of the sysop or other info about the host here (for passwords you should use the AutoLogin feature or the password field).
If this field is not empty, it will be displayed in the phone book main window. If you don't like this, begin the memo with a space character; in this case, the main window will still show the number of calls instead of the memo.
The other fields are maintained by ZOC and cannot be modified.


The AutoDial Feature

When you selected one or more entries from the phone book or choose Manual Call from the Device Menu the AutoDial window will pop up. It will try to connect you successfully to the number(s) you selected. If a number is busy it will try the next in the list (if more than one was selected) or retry the number. To do that, AutoDial will use the values you set in Phone Book Options to define the maximum number of retries and the time between attempts to call the same number (see note about redial delay in Phone Book Options).

During AutoDial you can control the operation using four buttons:

Cancel
Abort calling.

Redial Now
If AutoDial waits to call the next number you can skip the delay and redial at once.

Skip This
This function skips the call to a number and proceeds with the next in the list. The skipped number will be called later.

Drop This
This function cancels the attempt to call a number and proceeds with the next in the list.  The cancelled number will be removed from the dialing list.

A special feature is that the window switches between a small and a large version if you click on the minimize/maximize button in the upper right corner of the window.


Importing other Phone Books

ZOC is able to read and convert phone books of a few popuplar comm packages (like Telix for DOS and Windows, Telemate for DOS and Windows, etc.). To do this, select the type of phone book, the section of the ZOC phone book to which you want to import the entries and the file to import.  Then press the OK button.

If you like to develop a converter for another program, please contact EmTec for details.  Speaking of this, I'd like to thank Siegfried Bauer for rewriting and improving the Telix/Win converter.


Other Functions

o	Browse Window

o	File Transfer Window

o	File Transfer Game


Browse Window

The browse window lets you scroll back through the text you received since starting ZOC (or since clearing the capture buffer).

You can mark text with the mouse (thus putting it into the clipboard) or search for text by pressing the F(ind) key.


File Transfer Window

The transfer window consists of the following parts:

Name
The name of the file to be transferred (not available in Xmodem downloads).

Size
The size of the file to be transferred (not available in Xmodem downloads).

Transmitted
The number of bytes sent or received so far (the net value without control bytes like checksum).

Time
The duration of the transfer so far and the projected time to go (only available if the file size is available).

Speed
The avarage net number of characters sent or received so far. This should be about a tenth of the connect speed (e.g. 960 cps at 9600 bps).

Skip
This button is available in Zmodem only and skips the current file.

Note: The skip option might not work with all Zmodem implementations.

Game
During large file transfers you might find the time to play a little game

Disconnect after transfer
If set, ZOC will disconnect from the remote host after the file transfer

Note: Please be careful, ZOC will not properly logoff from your host, but it will merely hangup instead. Not all hosts (or sysops) like this.

Delete file after transfer
This checkmark makes ZOC delete the file after the transfer. Files are only deleted if they were transferred without error and file transfer was not aborted by the user.


File Transfer Game

Finding out how the game works is part of the fun, therefore only so much shall be revealed:

o	Use the right and the left mouse buttons

o	The more fields you vaporize in one move the higher your score

o	Plan your moves carefully


MINIHOST

Together with ZOC comes a MINIHOST program (implemented in ZOC's REXX script language).  It offers a simple file exchange host.  A typical use for it could be leaving it running on your home machine while you are away to the office, to make sure that you can download files from the home machine during the day if the need arises.  Or you could use it to allow a friend to upload a report for review or whatever. Of course, the host program leaves much open (things like leaving messages etc.) but is partly designed as a complex example for REXX programming and partly as a point to start your own development. In any case, if you want to run a full fledged BBS it is highly recommended that you use a real BBS program.

By default, MINIHOST can be started from the user button bar, but you can also start MINIHOST.ZRX via Start-REXX function from the Misc menu. The program will come up with the question if you want to test it locally or not (ie. if you want to offer a connection via modem).  Then it waits for a connection and asks for username and password.  ADMIN/SECRET and GUEST/GUEST are predefined values.

To allow other users access to your machine, you must edit the MINIHOST.ZRX file (use Edit-REXX from the Misc menu) and modify the user entries in the upper part of the program.  For each user you can select a username, a password, a home directory and a mode.  Mode 0 restricts access to the assigned home directory (which you need to create) on the drive that is defined on top of the userlist, while mode 1 allows access to all disks.


Customizing ZOC

Besides the ZOC.CFG file there are basically two sets of options: Global Options and Option Sets.

Global options hardly change once you defined them, while it is very likely that the options from options sets will differ with different hosts you use. Therefore there is only one set of global options but you can have as many options sets (containing the other options) as you like.


Help for Global Options

Global options (as opposed to the options from the Options Sets) are valid for all connections you make. They contain options that, once they are set, hardly change at all.

Global options are

o	Directory and File Names

o	Tool Bar Icons

o	Keyboard Redefinition

o	Phone Cost Description

o	Phone Book/Dialling Options

o	Character Translation


Defining Directory and File Names

The names defined here are the default directories and file names that are used in file selection windows or special functions.

DIRECTORIES

Download
The directory where downloaded files will normally be stored.

Alt Downl.
This field defines a directory into which special files are downloaded. The file extensions of the files to be put into this directory are defined in the transfer section of the options notebook. This directory is mostly used to receive mail packets for popular offline mail readers like BlueWave or Kurt Westerfeld's KWQ (which is an excellent shareware product, highly recommended).

Upload
The directory from which uploaded files are taken if no explicit path is supplied in the file name.

Ascii-Upl.
The directory from which the Transfer->ASCII Upload function takes the files.

Logging
The Loggin->Log-File feature stores the logs here.

Logging MB max
If this value is greater than zero, upon exiting the program, ZOC checks the amount of data in the Capture Path and issues a warning if it exceeds the maximum value set here.

Scripts
The directory where REXX files are searched by default.

Options
The directory where the ZOC options sets are stored.

REXX-FILES

ZOC Event
The File selected here will be called when ZOC is started, when it terminates and when a device is changed.  This is useful to turn off a Fax receive program before running ZOC or have other programs free a certain device before ZOC accesses it.
You'll find the technical details in the sample file ZOCEVENT.ZRX and ZOCEVENT.DOC in the script directory.

File Transfer
Here you can select which REXX script is called before a file transfer begins and after a file transfer was completed.  The REXX script can modify the file name before the file is actually written to disk, which can be useful if you want to implement a complex file storage scheme (eg. if ZIP files are uploaded from different directories than other files or if you have special download directories for ZIP files, mail files and pictures) or if you want to automatically run an file compression utility before uploading certain files (and upload the compressed file instead).  Additionally you could automatically unpack all downloaded ZIP files or decrypt incoming PGP files etc.
You'll find the technical details in the sample file ZOCXFER.ZRX and ZOCXFER.DOC in the script directory.

SOUND-FILES
These are sounds to be played to indicate certain events (under OS/2 the multimedia kit must be installed for this). File names should be entered with full path.

EXE/LOG

Editor
This defines the editor to be used when calling the Cliptext Edit function from the Cliptext menu, or when calling the Edit function from the Misc menu.

Note: If you set this field to the string "<DEFAULT>" (without the quotes) ZOC will use E.EXE (for OS/2) or NOTEPAD.EXE (for Windows).

Shell
Shell defines a shell to be opened, when calling the Command Shell function in the Misc or Transfer menu. This shell is also called with the /C parameter if you issue a SHELL command from within a ZOC script.

Note: If you set this field to "<DEFAULT>" (without the quotes) ZOC will use CMD.EXE (for OS/2 and Windows) or COMMAND.COM (for Windows 95).

Call Log
This file is a file to which ZOC logs calls to BBSs (C+/C- means connect/disconnect) and file transfers (DL means download, UL means upload). However, the call log is maintained only, if you have 'Valid CD signal' enabled (see Device Options).  If no path is specified, the call log is stored in the working directory.

Save Scr
This field defines the name of the file, into which the Misc->Save-Screen function will save the contents of the terminal window.

PRINTER
Here you can either select an installed printer or printer port (eg. LPT1) to which output is sent when you use one of the printing functions.

Note: If you select a printer port, the text is sent to the printer directly.  This can be necessary in special cases, but will not always work (eg. with PostScript printers).


Setting up the Tool Bar

The toolbar makes functions easily accessible by offering icons for them.

To customize the toolbar you can select/deselect icons from a list by clicking on them with the mouse.  Those entries in the list that are drawn with dark background will be shown in the toolbar (if the window is wide enough).

Additionally (depending on screen resolution and your personal taste) you can select if you want the icons in the toolbar to be large or small and if you want them to be packed tightly or not.


Redefining the Keyboard

Generally ZOC produces the correct codes and functions for all keys on the keyboard.  If you need customizable keys, you should use the f-keys (available in the macros section of the options booklet).

However, in special cases it might be necessary to be able to redefine other keys.

Warning:: It is not recommended to redefine key combinations that are already covered by ZOC (like the arrow keys).  The global keyboard remapping circumvents ZOC's normal key processing and menu shortcuts and might thus interfere with normal operation.

To redefine a key, first select the key qualifiers (Shift, Ctrl, Alt, Num Lock, Scroll Lock), then click on a key to bring up the key redefinition window.  Alternately, in most cases it is possible to just press the key combination that you want to redefine.

The NumLock qualifier has three states.  If you set it to greyed, the NumLock state will be ignored, ie. you can redefine a key with no regard to the NumLock state (otherwise the redefinition is NumLock-sensitive).

Using the Load and Save-As functions, you can create and manage multiple key maps which can be assigned to phone book entries in the phone book's edit dialog.


Redefining One Key

After you selected a key to be redefined in the keyboard redefinition window, a small window appears into which you can type the new value that is sent if you press that key together with the selected combination of key qualifiers (e.g. Alt+Ctrl+Z). Alternately you can map an action to that key combination. The most convnient way to do this is to press the button with the flash symbol next to the entry field.


Translation of Inbound/Outbound Characters

Users in countries that do not use the US-Ascii character set, often end up with the problem that the codes of characters that are sent by the host do not match the codes used by the terminal program and/or operating system.

This dialog lets you define the translation of the codes of received and sent characters or reset these tables to their default (non translating) state.

Note: The translations are only active if the Translate Character option is enabled in the Terminal Options.

Assumed your host sends (and needs to receive) the character '78 instead of the German letter Ä (as some hosts in Germany do) and you have the letter Ä on your keyboard.  In this case you would change the code 123 of the receive table to 142 ('123 '78 -> 142 Ä' would appear in the window) to translate the incoming character correctly to your screen and you would convert code 142 of the send table to 123 to send the code the host expects if the you press the Ä-key.

Using the Load and Save-As functions, you can create and manage multiple translation tables which can be assigned to phone book entries in the phone book's edit dialog.

Note: Before building a translation table, you should check if the character codes used by your host are already supported as a codepage (see national support).


Setting up the Phone Cost Description

Introduction

To make ZOC monitor your phone charges you need to describe how the cost is calculated based on the duration, time of day and distance of a call.

First you setup up days and times of day that are of interest for the calculation.  In most countries it is cheaper to make calls in the evening and on weekends than it is during working hours from Monday to Friday. So, you will probably end up with three blocks of time like 08:00:00-17:59:59 Mo-Fr, 18:00:00-07:59:59 Mo-Fr and 00:00:00-23:59:59 Sa/Su.

If, like in Germany, some calls don't depend on the time of day, you would need an additional entry to covers these: 00:00:00-23:59:59 Mo-Fr/Sa/Su.

Next, in the Cost section of the dialog, you would give names like local, near, far, intl. to the distance zones in the field after the distance zone letters (A-J).

Then you would describe what a call costs at any time of day in the form <cents>/<seconds>@<time of day> (speak cents per second at time of day) for each distance zone.  For example, if your telephone company charges 6 cents per minute during working hours and 3 cents per minute during evening hours and weekends, you would enter 6/60@T1, 3/60@T2 and 3/60@T3 in the fields after the distance zone description.

Note: There is an important difference between defining 0.1 cent per one second and 6 cents per sixty seconds.  In the former case you will be billed exactly 0.1 cent per second, in the latter you will be billed 6 cents at the beginning of every minute (the minute is called a time-unit). This way you get 18 cents for a 2 minutes 10 seconds call instead of 13 cents (as in the first case).

If all this is done correctly you can go to the phone book and edit the entries to assign distance zones to them.  After you call such an entry, ZOC will show you the cost of the call in the Status Line, sum it up in the phone book entries memo field (see changing phone book entries) and log it to the call log file (see Directory Options).

Advanced Cost

In some countries you have to pay some basic fee for the connection to be made, or the first minute is more expensive than later ones.

This can be handled by ZOC's cost management by defining a cost like <initial-cents>/<initial-seconds>+<cents>/<seconds>@<time of day>.  If, for example, the first minute of communication costs 15 cents and every later minute costs 12 cents you would set it up as 15/60+12/60@T1

This feature can also be used, to make the cost management more acurate. ZOC starts the timer when the remote carrier signal is detected.  This might be a few seconds after the actual connection was made.  If you have to pay 12 cents for a minute of communication and your modem detects the remote carrier about 10 seconds after the remote modem picked up, you could compensate this delay by defining the cost as 12/50+12/60@T1.

However, for this special case, it would be better to use the 'Time for modem connect' option in the Misc page of the phone cost settings (see further down in this text).

Symmetric Morning/Evening Time Blocks

Many countries' phone companies are charging the same amount of money for calls in the morning and evening, e.g. a phone company might charge 12 cents per minute from 5AM to 8AM and 6PM to 9PM.  In this case you would define two time blocks (e.g. T1 and T2).  However, these could be referenced from one cost field like in 12/60@T1,T2. The same is possible for advanced phone cost entries as in 12/50+12/60@T1,T2

Active Cost The active cost page shows the letter of that phone cost description which is currently in use.

Special Days

To make ZOC's phone cost calculation even more accurate, you can define a list of days (normally holidays) which should be considered as a sunday (because most phone companies treat holidays like sundays).

To do this, you enter a list of dates each in one line.  If you want, you may add a comment after a space or TAB character.  If you set the year to 9999, the date matches every year (otherwise it is only used in that very year).  Lines beginning with a slash (/), number sign (#) or semicolon are treated as comments.

IMPORTANT:: You have to use ISO date format: yyyy-mm-dd! (sorry, this is necessary to exchange fee files without problems.)

A part of the list for Germany might look like this:

9999-1-1     New Year (every year)
9999-10-3    German Reunion Day (every year)
; christmas (every year)
9999-12-25
9999-12-26

96-4-8       Easter Monday '96
1997-3-31    Easter Monday '97
1998-4-13    Easter Monday '98

Jewish Week

This switch makes ZOC treat Fridays like Saturdays and Saturdays like Sundays to allow correct phone cost processing in Israel.

Time for modem-connects

This option allows to define the average delay that occurs after a remote modem picked up the call but before the local modem reports that a connection was established.  If a Carrier Detect signal is reported from the modem (and only from the modem), then the timer will not be reset to zero but to the value that is set here.


Setting up the Phone Book/Dialling Options

The phone book options control the working of the phone book and of the AutoDialler.

DIALLER
The auto dialler is used when you select the dial function from the Phone Book or from the Device Menu. It tries to connect you to a given number and retries several times if it fails.  You can specify the maximum number of retries and the time between trials of the same number.  If, for example, you set the time between attempts to 10 seconds and select three entries from the phone book to be called, and if the call to all of them fails, the first one will be called immediately after the third since trying the second and the third will very likely need more 10 seconds.
Some countries require some time to pass before the next number can be dialled.  So ZOC lets you define the minimum time between tries to call any number.
Additionally you can define a string to be used as a prefix for calls via Modem/Serial or ISDN device.  This is useful if you have to dial 0 or 9 to get a dial tone.  If you need the prefix only for the Modem/Serial device, you can use the modem dial commands (see Modem Options) or the phone number macros (see below) for this purpose.

DISCONNECT

Clear Screen
This options will tell ZOC to clear the screen and reset the screen colors after you disconnected.

Show Phone Book
If this option is enabled, ZOC will show phone book after you disconnected from an online service (but only if there are no more entries left in the dialing queue).

Load standard options
If this option is enabled (which is recommended) ZOC loads the default option set after you disconnect from a host session. This way you will have the standard options always active, even after calling a host that uses unusual options (e.g. a slow transfer speed).

Do not ask to dial next
If you disconnect from a service (and if there is still an item in the dial queue), ZOC can either try to connect to the next service automatically or after promting you if you want it to.

IEMSI-DEFAULTS
Some BBSs support a method to log in automatically that is called IEMSI (you can tell if a BBS supports IEMSI from the **EMSI_IRQ it sends before asking for your name (not to be confused with **EMSI_REQ used by mailer software)). The IEMSI options are specified for each phone book entry (and are discussed in Changing Phone Book Entries), the IEMSI options specified here are the defaults that are used if you create a new phone book entry.

DIALOG

Show phone book after program start
If enabled ZOC will open the phone book directly after being started.

Multiple selection without Ctrl key
Normally you have to hold the control key down to select several non contiguous entries from the list (which is the way how it is done across the OS/2 Workplace Shell and Windows).  This options changes that behaviour so that you can select multiple entries by just clicking on them.

Small AutoDial window
You can choose between a large and a small window that shows the progress and details while dialing.  The large window (naturally) covers more screen while the smaller one might not fully display long messages or phone numbers (which is just a cosmetic problem).

Note: You can switch between the larger and the smaller window while dialing by clicking the minimize/maximize buttons in the upper right corner of the dialing window.

Multi-Line-BBS Significance
ZOC is able to handle Multi-Line-BBSs if the multiple lines have entries in the phone book which's names are equal in the first six characters (default).  With this option you can turn this feature on or off or increase or decrease the number of characters after which ZOC will treat phone book entries as belonging to the same host.

Password field unreadable
Here you can decide if the password field is readable or unreadable (when editing phone book entries).

Sort order
Select a sort criteria to control the order in which the hosts are presented in the main window of the phone book.

Font for List
Here you can select a font for the list of hosts in the phone book. Enter the font selection in the form <font size>.<font name> and do not add space characters between the size and the name.
Examples: 10.Helv, 8.Fancy Font, 12.Chinese

DIAL-MACROS
The phone book offers four special macros for use with telephone numbers. When you use the strings $1, $2, $3 or $4 somewhere in a telephone number (or other device's equivalent) ZOC replaces the string with the text defined in the Macros dialog.
Eg. if you are using calling card numbers for some entries in your phone book, you could define $1 as 1234 5678 9012 3456 and insert $1 into your phone number whereever the calling card number should appear.

Note: These macros are strictly for use with telephone numbers in the phone book.  They do not work if you use them in modem strings, function keys, etc.

Note: In many cases similar results can be achieved by the use of different dialing strings (see Modem Options).

SECTIONS
You can define your own names for the four sections of the phone book.


Option Sets

This booklet contains all options.  Select a tab with the mouse to open the according dialog.

Available tabs are: Device, Terminal, Logging, Emulation, Transfer, Modem, F-Macros, AutoMacros, Custom Buttons, AutoReply, Window, Safety.


Device Options

This window is used to define serial parameters or their equivalents for other input/output devices.  It can be opened via menu or by clicking on the transfer speed button in the status line.

I/O Device
You specify the device which ZOC should use to make a connection.  ZOC accesses devices through special device-DLLs (Dynamic Link Libraries) which are part of the ZOC package.  Help for these is available in a special part of this help text (see devices or, in case of the ISDN device, from the help button in the device options window).
Additionally you can select that ZOC should release the device when the window is minimized to let you use a FAX program or another communications program (alas!) without having to close ZOC.
The 'No Statistics' switch suppresses the output of the session statistics (number of chars transferred etc.) at the end of an online session.

Serial/Modem Options
This list describes the options for the Serial/Modem device.  The descriptions for the options of the other devices are located in the devices section of this help text.

Com-Port
Enter the name of the communications port in this entry field.  This is either a string like COM1 (with no space between COM and 1) or, if you are using a COM port on an OS/2 network server, a string in the form \\<server>\<resource> (in which case you might want to adapt CHARTIME and CHARWAIT in \IBMLAN\IBMLAN.INI as well (ask your administrator for details)).  For using remote COM-ports in a Windows Network, a modem sharing tool (like Stomper, see links on EmTec's WWW site) is necessary.

Serial Options
In this section you define how data is transferred between your computer and the modem (which is not necessarily the same way the modem uses to transfer data across the telephone line).  You have to select a speed (bits per second), the number of databits, a parity mode (none, even, odd, mark or space) and the number of stop bits.
What you use depends mostly on your host (and, of course, on your modem limits).
These settings are often given (e.g. in instructions of how to call a host) in an abbreviated version, like 38400-8N1 (38400 bits per second, 8 data bits, no parity, one stop bit).

Note: If you have a modem with data compression (MNP5 or V.42) you should use a speed that is higher than the actual speed your modem supports.  Today 14,400 bps modems are very popular.  These use online data compression which allows them to transfer actually more than the theoretical maximum of 1440 bytes per second.  To take advantage of this, you should access these modems with 19,200 or 38,400 bps.

RTS/CTS handshake
If enabled, ZOC uses RTS/CTS hardware handshake for communication with your modem.
RTS/CTS is used to control the flow of data between the computer and the modem and provides a way for both to prevent the other from sending data.
This is essential for file transfers when the speed of the modem to modem connection is different from the modem to computer connection (which is true for MNP5 of V.42 modems).  It is also essential in a multitasking environment where the processor might have other things to do when data arrives.
Thus, it is highly recommended to have this option enabled.  However, the modem needs to support it as well, so check your modem manual for the proper modem command to "enable bi-directional RTS/CTS hardware flow control" for use in the modem init string (see Modem Options).

DSR handshake
This DSR/DTR handshake is somewhat similar to RTS/CTS as it is a handshake method as well.  It does not control the data flow, but the general availability of the modem and computer (i.e. if these are turned on).
If enabled, ZOC monitors the DSR signal for communication with the modem. This option should only be enabled if your modem and your cable properly provide the DSR signal.  Otherwise ZOC will be blocked.

XON/XOFF
If enabled, ZOC uses the Xon/Xoff software handshake for communication (which is yet another method to control the data stream).  It uses special characters to hold/release the sender.  This method is inferior to RTS/CTS handshaking and should only be used if necessary.

Valid CD signal
If your modem supports the Carrier Detect (CD) signal (most modems will do this if you add AT&C1 to the modem init string in the Modem Options), you should enable this option (which is highly recommended).
ZOC uses the CD signal to control the connection timer and phone cost calculation as well as to write a calling log to the file defined in Path Options.

Break signal duration
The duration that is used for sending a break signal (some hosts use this to break an operation) when pressing Ctrl+End.  It is given in milliseconds and typically ranges from 250 to 400 ms.

Timeout Control
These options control what should happen if no characters have been sent or received for a certain time.
After a timeout occurred you can have ZOC send something to your host to prevent disconnection.  In this case it is a good idea to use a string that does not invoke any unwanted action (like paging the sysop for a chat), but something neutral like ^M (enter), ^! (break signal) or * (which jumps to the main menu on some hosts).
If you don't like this, you can have ZOC hangup after a timeout.
If you do not want any timeout control at all, set the time to zero.


Terminal Options

This window is used to define general terminal characteristics.  It can be opened from the menu or by double clicking the space between the buttons in the status line.

TERMINAL

Incoming CR -> CR/LF
This options ensures, that each incoming Carriage Return is followed by a Line Feed.  Use this if received text is printed over and over in the same line without advancing to the next or if the text is printed like a stairway with the cursor moving down at the end of the line but not moving to the left edge.

Strip high bit
If enabled, all characters in the terminal window are printed with 7 bits. This can be used if you receive graphical characters where text should appear (of course, this does not help if bursts of noise from the phone line send garbage to your screen).

Show ctrl chars
Show received control-codes as plain text (e.g. ^I for TAB) instead of using them.  This is used mostly for problem determination.

Show hex dump
This options shows incoming characters as hexadecimal values.  It is intended for problem determination only.

Destructive backspace
This options erases characters from the screen if a backspace is received (instead of just moving the cursor back one step).

Local echo
Print all manually typed characters to the terminal window (normally the host sends all typed characters back to display them).  This option should be used if you use a half duplex connection (which are pretty rare these days) or if you type to a host that does not provide an host echo (e.g. if you called a friend's computer who uses a terminal program as well; however, in this case you are better off with the Split Chat from the Misc Menu).

Echo CR only
This option makes ZOC echo only a Carriage-Return when the Enter key is pressed (normally a Line-Feed is echoed as well).

Send echo
Loop back all incoming characters to the originator.

Warning:: This may result in an endless loop if the originator also sends an echo, which is true for most modems and hosts.
You can use this, if a friend called you with his modem.

Translate characters
If you call a host that uses a different character set than your computer, it is possible to have ZOC translate these into your native character set (see translation).  The translation can be disabled using this option.

Beep
This option controls what to do for a beep.  Choices are ignore (unchecked), acoustic (checked) or visual (shaded).

CLIPBOARD SENDING

Width
Reformatting for smart quoting will be done in a way that no line is longer than the number of characters specified here.

Always reformat
If selected, the Send-Quoted function from the Cliptext Menu will always try to reformat the text before sending it.  When disabled, reformatting is still available by holding the shift key pressed.

Indent quoting
If this option is checked, quoted texts will be indented by one space (eg. to prevent CompuServe from reformatting the text).  This option is ignored when quoting in CompuServe-style.

Do not add CR
Checking this option will keep the cursor in the line where the pasted or quoted text ends (normally it will skip to the next).

Always send quick
Selecting this option will always send marked text at once if only one line is marked on the screen.  Otherwise the text will be sent at once, if you hold the Shift key pressed while doing a one-line selection.

SCROLL-LOCK KEY ACTION
This option lets you map events to the scroll lock key.

Ignore Scroll Lock
ZOC ignores the scroll lock state of the keyboard.

Activate chat field
Pressing the Scroll Lock key toggles the chat field (see Window Options and Screen Elements).

Toggle doorway mode
Pressing the Scroll Lock key toggles the keyboard Doorway mode. (Doorway mode is a mode in which special key codes are used. It is required by remote control software like RemoteBBS or OS2YOU).


Logging Options

This window is used to define capture parameters.

Default name
When you start ZOC, the name defined here will be used as a default name for the logfile.  You may use special place holders in the name to be substituted by ZOC with values like the current month to create dynamic names (see Special Codes in the appendix). The file will be placed in the log directory set in Path Options unless you supply a path with the name.

Now active
Enable saving incoming data in the logfile.  This is the same as the checkmark near the log file name in the status line or the Active entry in the Logging menu.

Append if File Exists
If logging is activated, data is appended to a existing file rather than overwriting it when you start logging.

Log Session Headers
Session headers are a few lines of information which are inserted into your capture and log file when connecting to a host.  This can only be done if you have a valid Carrier Detect signal (see Device Options).

DC2/DC4 control
Some hosts (i.e. CompuServe's mail system) are able to remotely control your logging by sending DC2 and DC4 characters (the check mark in the status line will turn gray if the hosts suspends logging for you).  This can be disabled.

Size
Define the size of the memory buffer to hold data for reviewing sessions.


Emulation Options

This window is used to set the emulation.  It can be opened via menu or by clicking on the emulation button in the status line.

Available emulations are:

ANSI
The ANSI Emulation is mostly used in BBSs.  It's main feature is that it uses the IBM-PC graphic character set and allows to display text in different colors.  For compatibility with the FIDO ANSI-BBS standard, it also supports all VT102 control codes.

AVATAR/0+
The AVATAR emulation was developed from the people on the FIDO net and is used mostly on FIDO-BBSs as a faster replacement for ANSI.  Avatar/0+ is an improvement to the original Avatar/0 standard.

TTY
This emulates a teletype style output.  All characters are printed except CR, LF and TAB.

VT100/VT102
VT102 is mostly used in Unix environments and is compatible with the (slightly inferior) VT100 standard.  VT102 is a good all purpose choice, if you neither need nor want strict keyboard compliance with the original DEC terminal (most hosts are only using the screen controls anyway).

VT52
VT52 is a very old standard from DEC and is hardly used anymore.  It is not upward compatible with VT100, VT102 and VT220.

VT220
VT220 Terminals are a major improvement over VT102.  They have an extended PC-Style keyboard and support national character sets.
ZOC implements the DEC-VT220 rather strictly, which means that you lose access to your F-Macro definitions (because the row of function keys is used to emulate VT200's PF1-PF4 and F4-F20 (see APPENDIX) and that the VT220 character sets are used instead of OS/2's or Windows' character code pages).
If this is a problem for you, you should use ZOC's VT102 instead.  It understands all the VT220 screen control codes, but lets you access your F-Keys and uses your codepage setting.
Unlike most other terminal programs, ZOC's VT220 keyboard is not implemented by means of the keyboard remapping feature but is hardwired within the emulation module.  However, it can be bypassed by keyboard remapping.

CEPT
The CEPT emulation can be used to call the German T-Online service (formerly called BTX or DATEX-J) and probably other CEPT based services as well (like Prestel).  For further details, please check the CEPT topic in Common Questions.

Note: The CEPT emulation overrides the F-keys F6 (reveal), F7 (tia), F8 (DCT), F9 (INI) and F10 (TER).

QNX
Also available (but not included in the ZOC package) is an emulation for use with the QNX 4.2x real time operating system.  It was developed by Ingenieurbuero Jurk in Mannheim, Germany.  Mr. Jurk can be contacted as tjurk@mannheim.regio-info.de or FAX +49 621-77095-31

Swap DEL and backspace key
If you enable the this option, a backspace is sent when the DEL key is pressed and vice versa (VT102 mode only).

Note: In VT220 mode this option affects the Backspace key only: A VT220 terminal normally sends the DEL code when the backspace key is pressed, hence ZOC sends DEL when the swap option is NOT enabled. If you enable this option, ZOC will send a backspace when the backspace key is pressed, which is non-normal behaviour for a VT220 terminal.

Discard codes
Screen control for ANSI and VT102/220 is done by sending special control codes. Logging of these control codes in the capture/log file should be disabled since it makes reading of these rather hard.
This option is unavailable during TTY emulation.

Disable VT102 key pad
In VT102 mode the numeric key pad is used as a replacement for VT102 auxiliary keypad (see VT102-keyboard).  This can be problematic if you are using the cursor keys in the numeric keypad instead of the gray cursor keys.  Enable this option, if you want to use the cursor keys in the numeric keypad and if your remote application does not use the VT102 keypad.
See APPENDIX for a description of the keypad.
It is not possible to disable the keypad in VT220 emulation.
This option is meaningless during ANSI and TTY emulation.

Allow colors in VTxxx
Normally ZOC does not support color codes in VT100/VT102/VT220 mode because native DEC VT terminals do not support these.  If you have an application that sends these codes in VT mode, you can enable this option, but wrong screen colors might occur in complex screens (especially in conjunction with inverse colors).

Print Job Merging
When printing to the local terminal printer (via VT102 codes) some programs send start/stop printing codes for every line, causing the OS/2 or Windows spooler to print every line onto a single page.  This option controls the timeout (in seconds) ZOC uses to merge subsequent printing jobs into one (0 disables this feature).
This option is only available during VTxxx emulations.


File Transfer Options

These settings define the characteristics of file transfers. They are accessed via the Options/Settings notebook or by clicking the file transfer protocol button in the status line.

PROTOCOL
Select X- Y- or Zmodem protocol or any of the other protocols offered here.

Note: Some systems falsely offer protocols named Ymodem and Ymodem batch, which really are Xmodem with Block-1024 for Ymodem and Ymodem for Ymodem-Batch.

Note: You do not need to select the Compuserve-B+ or CEPT/Telesoftware protocol because these are invoked automatically).

IF FILE EXISTS
Select what you want to do if you try to download a file that already exists in your system's download directory.  You can choose different actions in case the in coming file has a modification date that is older, same or newer than the existing one, or if the incoming file has no modification date at all (eg. when transferred with Xmodem).  Additionally you can specify if you want the old (existing) or the new (incoming file) renamed (if rename is chosen somewhere).

SPECIAL FILE EXTENSIONS
ZOC lets you list extensions of files that should be downloaded to an alternate directory (see Directory Options) and files that should be deleted after they are uploaded successfully.
The extensions may contain the * and ? wildcard characters and need to be separated by vertical bars (without space characters) like this: GIF|Q*|MO?|TU?

Note: Just specify file extensions, no full file names like like *.GIF|ABC.DOC

Note: If you want to implement a more complex scheme, you can use the a REXX file (see Global Directory Options).

XMODEM
These options only apply when the Xmodem protocol is selected.

CRC on
CRC is controlled by the receiver of a file.  CRC can be used instead of the less reliable Xmodem checksums.

Blocksize 1024
With this option Xmodem uses blocks of 1024 instead of 128 bytes.  Some systems falsely call this Ymodem.  The block size is controlled by the sender.

Chop pads
If enabled, ZOC tries to remove padding bytes at the end when receiving a file.

ZMODEM

Upload File Management
These options apply only to uploads.  They are only effective, if the receiver is able and willing to handle them, so they may or may not have an effect on an actual file transfer, depeding on the receiver's Zmodem implementation (they work best when used to send files to Omen Technology's RZ or DSZ, which is available on various platforms including Unix, VMS and MS-DOS).
You can specify that you want the receiver to convert carriage returns and line feed according to it's platform and you can suggest what the receiver should do if a file aready exists on it's  machine.  Options are to use the receiver's default action, to always overwrite files, to overwrite files if their file date is older, to resume an aborted file transfer or append the data to the existing files (the corresponding Unix SZ options are -p, -y, -n, -r, -+).

ASCII
The ASCII options are used when it is necessary to do an end-of-line character translation between different operating systems.  It is useful when transferring text file, but has disastrous results when applying to binary data like ZIP files or executables.

Ignore time stamp
Select this option, if you want received files to be marked with the date/time of download, instead of being marked with the time stamp the file carried on the file system of the sender.

KERMIT
These options are for use with the Kermit file transfer protocol. Normally the standard values should work fine (press the Reset button to set these).  The block size can be any number from 80 to 9024. If you are working in an environment that allows only 7bit transmissions, uncheck the 8bit option.

ASCII-UPLOAD/CLIPBOARD SENDING
These options are used for ASCII-Uploads and for pasting from the clipboard.

AsIs/CR+LF/CR/LF
Sets the way end of line characters are transmitted to the remote machine. When set to AsIs, characters will be sent as they appear in the file, otherwise either only CR or LF or both is sent.

Delay
Sets the time (in milliseconds) to wait after sending a character and after each line.  This is useful if the host cannot keep up with fast input (eg. in online editors).

Note: The line delay is send in addition to the character delay.  If the character delay is zero, the line delay is ignored.

MISCELLANEOUS

Time critical
Enabling this options boosts ZOC's priority during file transfers, which might help to increase transfer throughput and reduce transfer errors in some very special cases.

Warning:: This will very likely impair the performance of other tasks.

Start picture viewers
ZOC is able to show pictures while downloading them.  For this purpose the file SHOWEM.DLL are provided in your ZOC directory.  If you don't like this feature, it can be disabled.

Guess Upload File Name
If this option is enabled, ZOC will try to guess the name of the file to be uploaded and will offer that name in the upload file requester.

Auto transfer
If enabled, ZOC starts transfers automatically.


Creating a Modem Init String

It sometimes is not easy to find the proper modem init string.  Some comm programs offer modem databases but with new modems coming to the market almost every day it is hard to ensure correctness of these.

On the other side, it is not very hard to dig the correct commands from the modem manual if one knows what to look for.

Modems with data compression have a rather tricky setup, but since modem manufacturers don't want to spend all their profits on customer support, almost all of these modems have two factory profiles: Data compression enabled and disabled.

These profiles can be activated by using rather simple commands (probably AT&F), so it is very likely that all you have to do, is to check your modem manual for factory profile command and use that as the modem init string, e.g. AT&F^M (if you use data compression make sure you have RTS/CTS and a high-speed enabled in the Device Options).  If AT&F does not work, try AT&F1

If you are using OS/2 Warp and if you have the Internet access kit installed, you will have a modem list on your harddrive in the file C:\TCPIP\ETC\MODEM.LST.  If you find your modem there, you can use the second init string listed there and add &F after the AT, e.g. if your modem is listed as

USRobotics 33600 Courier     AT&F    AT&D2&C1X4V1Q0S7=70&M4&B1&H1&R2

you can use AT&F&D2&C1X4V1Q0S7=70&M4&B1&H1&R2 as your init string.


Modem Options

This window is used to define the strings ZOC uses to communicate with your modem.  These strings may contain control characters (e.g. ^M, see Special Codes), the tilde (~, which is a delay of 1/3 sec) and ^# to be substituted with a phone number.

Initialization
This is a list of modem commands to set the modem to a defined state before using it.  You should be aware that ZOC (unlike some other programs) requires a ^M at the end of the initialization string.
If you don't know what to use for the initialization string, please try either AT&F or AT&F1 or check the Modem Init section of this help file for advice.
Depending on your setup, you might want to send the initialization string every time you load an options file (thus having different options files for different modem configurations).
Normally ZOC does not send an init sequence if it finds a carrier detect signal from the modem (to prevent a modem reset while you are online). However, some modems provide a CD signal after power on.  In this case you should enable this option (and add AT&C1 to the modem init string to tell the modem to provide a real carrier detect signal).

Dialling
ZOC lets you set up four dial commands for calling different types of numbers (i.e. using a credit card number to make long distance calls).  You can select the dial command to be used from the Phone Book and when dialing manually (from the Device Menu).
To dial via modem a comm program has to send a dial command and the phone number to the modem and has to complete this command by sending ^M.  The dial commands are ATDT for tone dialing, ATDP for pulse dialing and ATDI for Zyxel ISDN modems.  This means that for the dialing fields you use the appropriate dial command, append the string ^#  (which is replaced with the telephone number) and ^M  This means that a standard dial command would look like ATDT^#^M (meaning that  ATDT, then the phone number and then enter is sent).  If you wanted to set the modem to ignore the dial tone and send a zero before the telephone number to get an outside line, you could use ATX3DT 0,^#^M  instead (X3 would prevent the modem from waiting for a dial tone and 0, would send a zero and make a pause before dialing the phone number).
If you want to issue a modem command before dialing you should add some tilde characters between the modem and the dial command (like in ATZ^M~~~ATDT ^#^M) to give the modem time to process the former.

Hangup
ZOC supports two methods of telling a modem to hang up.  Using the DTR signal of the com port is the superior of the two.  If you disable it, ZOC will use the ATH command.

Auto answer
Here you supply two modem commands to enable and disable the modem's auto answer mode.  These are ATS0=1^M and ATS0=0^M for basically all modems.

AutoDial Control
Here you provide ZOC with the responses the modem (or other devices) send when making or failing to make a connection.
These are used by ZOC to determine if a connection was made, if ZOC shall redial or drop a called phone book entry or if the dialing shall be aborted at all (e.g. because of an incoming call).
The modem responses have to be separated by a vertical bar (|) without spaces like CARRIER|CONNECT.

DTR Control for DOS-Transfer
These are two special modem control commands which are needed to give DOS programs access to a ZOC session (see Transfer DOS-Shell). These commands need to switch the modem's DTR action from hangup to ingore and vice versa while being online.  By default this is achived, by sending the modem's escape string with a pause of 1.3 seconds (+++~~~~), then sending the modem command to set DTR action and giving the modem time to OK (ATDx^M~~). After that the modem is switched back to online operation (ATO^M). These commands may vary with some modems brands; if they don't work with your's, please check your modem manual for equivalent commands.

Note: This page of the options booklet may be protected by a password (see Safety Options) since some people store card call numbers in the dial prefixes.


F-Key Macro Definition

It is possible to map text or REXX file execution onto the F4-F12 or Shift+F1-F12 keys (F1-F4 are not available, since they are used in VT102 and to provide help; if you need to define F1-F4 anyway, it is possible to redefine them using Global Keyboard Remapping which always takes precedence over this function).

In VT220 mode, the whole set of function keys is used for the VT220 emulation.

The execution of a REXX file can be mapped onto a function key by defining the key as ^RUN=<scriptname> (e.g. ^RUN=MY_SCRIPT).

If you use the special code of ^& in a macro key, ^& will be substituted with the value of the password field of a phone book entry after you successfully connected to that host via the phone book (see phone book entries).  Additionally there are special codes for date and time of day.  Check Special Codes in the appendix for a complete list.

Note: This page of the options booklet may be protected by a password (see Safety Options).


Definition of the AutoMacros

Besides the function key macros ZOC provides so called Auto-Macros.  The idea of AutoMacros is borrowed from text processing where (at least in good programs) the feature is called Auto-Correct or Auto-Text.

You can think of AutoMacros as abbreviations.  Whenever ZOC finds that you typed some text that is found in the abbreviations, ZOC will replace it with the full text you provide here.  This is done by sending backspace characters to delete the abbreviation (if necessary) and then sending the full text (if the abbreviation and the full text begin with the same characters  ZOC will only backspace the part at the end that differs, like Datcom and Datacommunication).

To avoid erroneous replacement of characters that belong to a word, abbreviations are matched case sensitive and replaced only if there is a non alphanumeric character typed before and after the text.  So, if you defined Com as an abbreviation it will be replaced if you type Data-Com_ or Com-Port, but not if you type The Com1-Port or DataCom_.

Besides correction of typing errors there are many other uses for this feature in a terminal application.

o	Abbreviations for commonly used phrases like Ttyl being replaced with Talk to you later

o	Abbreviations for logins like replacing MS with Markus Schmidt^Msecret (to send user name and password at login prompts).

o	Abbreviations for commands when using a shell on a UNIX or VAX host. (e.g. using lo instead of logout).

o	Nicknames for email addresses (like replacing ms@ with m.schmidt@msn.rmi.de).

Note: This feature is disabled during REXX execution and during AutoLogin and Learn mode.

Note: You can enter text into a Full Text field only if the corresponding Abbreviation field is non empty.

Note: This feature is similar to the AutoReplies and some results can be achieved by using both methods.  However there are one important difference: AutoReplies monitor the incoming data stream (sent by the host), AutoMacros watch the keystrokes from the keyboard.

Note: It is a good idea to append a period or an exclamation mark to the abbreviation text (like MS. or lo!) to make it really unique.  This way inadvertent invocation of the full text will be highly unlikely.


Definition of the Custom Button Bar

Below the tool bar reside a group of user defined buttons that can be specified here.  You can set the value to be sent when the button is clicked with the mouse as well as a short text to describe the button (which is shown inside the button in the custom button bar).

It is possible to use the button for script execution, as well as for sending text (that may contain control codes), a password or the value of a function key.

Please check Special Codes in the appendix for a complete list.

Note: This page may be protected by a password (see Safety Options).


Definition of the AutoReplies

Auto replies provide a way to automatically send text or invoke REXX programs (or other magic) whenever a group of specific characters is received.

To do this, you just enter the text that invokes the action in the Incoming-Text field and provide some text or a REXX name (preceded by ^RUN=, see Special Codes) in the Action field.

This feature can be used to

o	Automate logins: You could automatically send your username and password (or ^&, see Special Codes) when receiving the text User name?

o	Skip birthday checks: Some hosts ask for your date of birth now and then to make sure no one else uses your account.  Using AutoReplies you can provide the date automatically when receiving the prompt.

o	Reading mail: When you receive the You have mail notification from your unix host, you could start your mail reader by replying ELM^M.

Warning:: You should make sure that the text you are looking for really is unique.  It is better to wait for the text --More-- than it is to wait for More to automatically answer such prompts.

Note: This feature is disabled during REXX and script execution and during AutoLogin and Learn mode.

Note: You can enter text into an Action field only if the corresponding Incoming Text field is non empty.

Note: This feature is a bit similar to the AutoMacros, please check the note about the differences provided there.


Window Definition

SCREEN ELEMENTS

Initial Help
Here you can turn off the help window that appears when you start ZOC.

Menu
Since ZOC shows a popup-menu when you click the right mouse button in the main window, you can disable the permanent menu below the title bar.

Tool bar
Here you can turn the toolbar on or off.

Custom button bar
Here you can turn the strip with custom buttons that appears below the toolbar on or off.

Chat field
Here you can turn off the chat field (see screen elements). The chat field is an input field above the status line that lets you type, edit and retrieve earlier typed text.  The text is sent to the host when you press enter.  This is useful if you join an online conference with many people or if you work with a shell on the remote host that does not provide command editing or a command history.
The chat field can be turned on and off with the Scroll-Lock key as well if you defined this in terminal options, or by pressing Alt+C.

Note: To chat with a friend who called you, it is better to use the Split Chat feature from the Misc Menu.

Status line
Here you can select, if you want to see the status line.

Snippets
ZOC monitors your input data stream for filenames, fido node numbers, CompuServe user IDs and Internet user IDs and collects them in a little window that floats aside the ZOC window (see Misc Menu).  With this option you can hide (grayed) or show (checked) the window or turn this feature off (unchecked) to save CPU load.

Note: Under OS/2 you can change the font of the Snippets window by dragging a font from the System->Setup->Fonts folder of OS/2 and dropping it above the Snippets window.

WINDOW SIZE
You can select the window size here (columns by rows).

WINDOW (FONT/COLOR/HANDLING)

Font
Select a font size for the terminal window from the list.

Hide while dialing
If you don't want the large ZOC window around while dialing you can select this option.  In this case ZOC will hide while dialing, just leaving the small dial progress window on the screen, and come back after it made a connection (or failed to do so).

To front when carrier detect
If set, the main window of ZOC will come to the top of all windows if the modem carrier detect signal is switched on (as it is when connecting to your host).  This way you can have ZOC dial in the background and jump in if a connection was made.

Minimize during file transfer
If you don't want the large ZOC window around during a file transfer is going on, this options minimizes the ZOC's main window after starting the transfer.

To front after file transfer
If set, the main window of ZOC will come to the top of the desktop after a file transfer has been completed.  This way you can put ZOC aside to do other work during a file transfer without missing the transfer's end.

Size font with window
This option will change the font size when you change the window size.  This way you will always see all the text in the window while retaining the logical terminal size eg. (80x24).

Change size with window
This option will, when the ZOC window is sized, keep the font but change the logical size of the terminal window (eg. from 80x24 to 87x32).

Add scrollbars
This option will keep the font and logical terminal size.  This will prevent the ZOC window from becoming larger.  If the window becomes smaller, scrollbars will be added to allow access to the invisible parts of the terminal window.

Note: The scrollbars added can not be used to review text that scrolled off the terminal window.  Use the Browse function in the Logging menu instead.

BROWSE WINDOW FONT
Select a font size for the browse window (that shows the capture buffer).

NATIONAL SUPPORT

OS/2:  If your host sends a character set that is supported by an IBM code page you can specify it here.

Windows:  ZOC for Windows only supports two code pages: 437 for the DOS/IBM character set (which is mostly used in DOS based BBSs) and codepage 850 for the Windows-ANSI character set (which is identical to the character set used in MS-Windows and DEC VT220, but which is different from DOS's codepage 850).

SCROLL JUMPS
While offering superior ease of use, graphical user interfaces like Windows or the OS/2 WPS have to handle far greater amounts of memory to maintain their displays than text based user interfaces have (e.g. a character in a text mode application is stored in two bytes while a 8 by 14 character on a 256 color screen uses 104 bytes).
This results in rather high CPU load, especially when scrolling.  Because of this, ZOC is only able to write text to the screen with about 9600 bps if the text appears at the bottom of the window and it's necessary to scroll up.  However, you can allow ZOC to delays scrolling until a few lines (e.g. five) of text have arrived.  This way ZOC saves CPU cycles (since it needs to move the image only one instead of five times and since it does not make a difference how far it is moved). Obviously output speed benefits from this (while the scrolling appears rather "jumpy" instead of smooth).  The farther the jumps you select (normally flea jumps should be enough) the more lines ZOC will collect before actually scrolling and the faster output will be.

SHOW TIMER AS

This option controls the display of the phone cost in the status line. Money
Show the time elapsed since connecting to a host (or resetting the timer) as a money value (according to the Cost Setup).

Fraction
Show how many cost units are used so far.

Online time
Show the time elapsed since connecting to a host.

MISCELLANEOUS

Disable RD/SD LEDs
Here you can turn off the (maybe annoying and, more important, processor time consuming) flashing of the third and fourth LED in the Status Line that emulate the modem receive-data and send-data LEDs.  If the checkmark is in indefinite state (shaded) the LEDs will be enabled during text output but disabled during file transfer (which is highly recommended unless your computer is a real killer machine).

Big cursor
Enabling this option makes the cursor in the main window larger.

Blinking cursor
Enabling this option makes the cursor in the main window blink (however, this costs a bit cpu power).

No click-send
Normally ZOC sends characters to the host, when you click them with the mouse (which can be useful for menu driven hosts).  This option disables the click-send function.

Note: Other functions that define mouse- and clipboard interaction can be found in the Terminal part of the options.

No easter eggs
On some days ZOC welcomes you with a special message (mostly related to holidays).  If you think that this is inappropriate, please disable the greetings with this messagge.


Safety Options

Define if you want to be warned before performing "dangerous" operations or if you want to protect the setting of the macro keys and custom buttons.

Confirm ...
This should be self explanatory.

Warning if high-speed without RTS/CTS
The RTS/CTS handshaking method provides reliable control of the data flow between the PC and the modem.  If you use high transfer speeds without RTS/CTS handshake you will very likely encounter transmission errors. Enabling this option gives you a warning if you select more than 4800 baud without selecting RTS/CTS as well.

Save options at end of program
Here you can select if you want to save options automatically when you leave the program.

Safety for...
Here you can select various parts of the program that are likely to contain confidential information and which should be protected by a password.

Password
:caution. The password is case sensitive. However, all this is far from industrial strength protection. It just gives you protection against casual attempts to gain access to your data (eg. when using ZOC on a computer fair) :ecaution.


Input/Output Devices

ZOC supports a list of I/O devices over which you can communicate. Here is a list of the devices and their explanations regarding options, usage, etc.

Serial/Modem
ISDN

Telnet
Named Pipe
Windows-Modems


About the Serial/Modem Device

The Serial/Modem device allows access to modems or other serial devices which are hooked a serial port of your machine (eg. COM2) or accessed through an OS/2-LAN (eg. \\SERVER\MODEM). Sharing of modems on a Windows network is not possible unless you have a modem sharing program like Stomper (see the EmTec web site for a link).

All the details about the modem device are found in the ZOC help, since the Serial/Modem device is ZOC's default device.


About the ISDN Device

The ISDN device controls ISDN boards directly through the manufacturer's CAPI 1.1 (OS/2 only) or CAPI 2.0 driver interface.  The device list will show the ISDN device only if such drivers are correctly installed on your system (information regarding the CAPI drivers and problems can be found in the file ISDN.DOC in the ZOC directory).

If you need help regarding the use of ISDN device, please select the help button in the ISDN Device Options window.


About the Telnet Device

The telnet device allows telnet access to remote hosts via IBM's or Microsoft's TCP/IP product or OS/2-Warp's Internet Access Kit.

To make a connection to a host you provide the host's name or internet address instead of a phone number.  ZOC will try to connect to the host using a slip/PPP connection (you have to have an already active connection).

Example:
bbs.channel1.com

You will be connected to the standard telnet port (23) of the remote host. If you want to connect to another port, you may provide the port number or service name after the host name or address separated by a colon or space.

Example:
foobar.somewhere.net 25
 or

Example:
foobar.somewhere.net:25
 or

Example:
foobar.somewhere.net smtp

If you get an NO RESPONSE error you can try to put an * (asterisk) in front of the host name (or address).  This way ZOC will not try to ping the host before making the call (this will help for hosts that take very long to respond).

Example:
*slowhost.leisure.net

The following options are available for telnet sessions:

Always send CR/NUL
Enable this option if your host requires a NUL character sent after a CR character if the CR character isn't followed by a LF character.

Host sends CR/NUL in binary mode
Try to enable this option if binary file transfers (eg. Xmodem) through telnet connections fail.

Start session with local echo on
If this option is enabled, ZOC will use local echo (which is faster than remote echo) when the session starts.  However, during the login process this option is often overridden (ie. changed back to remote echo) by the remote host.

Start session in binary mode
If enabled, ZOC will try to negotiate a binary session.  This is sometimes necessary for file transfers.

Do not disconnect on error
If a transmission error occurs, ZOC normally closes the connection.  With this option checked, ZOC will keep the connection alive.
:PT(GLOBAL OPTIONS).

Do not ping host
Normally ZOC tries to PING the host to determine if it is active before making the actual call.  On systems (like TIA) that do not support PING, this will let the call fail (error NO RESPONSE).  In this case, enabling this option should help.

Do not lookup hostnames from IP
If you connect to a host by using it's IP ZOC normally looks up the host name.  You can turn this off, if you do not want this (eg. because your name server costs money).

The telnet device adds three functions to ZOC's device menu.

Are you there?
This functions tries to trigger a response from the remote host (usually something like [YES]) to find out you are still connected to the host.

Interrupt Process
This function aborts the program that currently runs on the remote host. It is similar to pressing Ctrl+Break locally.

Abort Output
This function aborts output from the remote host (eg. when accidentally showing a large text file).


About the Named-Pipe Device

The named pipe lets you access applications that provide a character based named pipe on your local machine or on a network server.  An example for such an application is OS2YOU (a remote-pc program).

To connect to a named pipe, make a manual or phone book call and provide the name of the pipe as a phone number.

To connect to a pipe on your local machine use \PIPE\<name>, eg. \PIPE\OS2YOU  To connect to a pipe on a LAN server use \\<server>\PIPE\<name>, eg. \\ZAPHOD\PIPE\OS2YOU

If you set the pipe to accept incoming calls (device menu), the caller must connect to \PIPE\ZOC


About the Windows-Modem Device (Win95/NT only)

This device allows you to use the modems drivers that are installed in your Windows 95 or NT control panel (so called Telephony API or TAPI modems).  ZOC's Windows-Modem option dialog shows a list of all installed modems in your system from which you can select the one you want to use.

If you own an ISDN board, you will probably also find ISDN style modems in this list.  If you have problems with these, you will find some helpful information in the common problems/questions section of this text.


Programming ZOC

There are two methods of automating ZOC:

REXX Programming
Dynamic Data Exchange


Introduction to REXX

About REXX

The ZOC scripting language REXX has a long tradition, especially in the IBM world.  It is a rather simple but powerful language that is available on many platforms (OS/2, DOS, Windows 3.xx, Windows-NT, Amiga, IBM/390). One great benefit is the fact that it is a highly standardized interpreter language; hence programs written in REXX can run on any platform that offers a REXX implementation. The ZOC-REXX implementation for the Win32 platform is licensed from Enterprise Alternatives,Inc.  Their full product Enterprise REXX is fully compatible to IBM's OS/2 REXX implementation and the full product is available (and highly recommended) for all Windows platforms, including command line scripting as a batch file replacement. You can find details about contacting Enterprise Alternatives in ZOC's product info dialog and in the Contacting Enterprise Alternatives section of the Help text.

Learning REXX

Below you will find a introduction to the very basics of REXX.  You should read these topics and then continue either by reading REXX Reference and ZOC-REXX Commands or the printed ZOC-manual (see Help-Menu->Order-Form). Aside from that, you will find working samples in the SCRIPT\RXSAMPLE directory and you could take a look at the MINIHOST.ZRX program in the SCRIPT directory.  And, last but not least, searching the World-Wide-Web for the keyword REXX (eg. by use of Yahoo or WebCrawler or by checking the links page at www.emtec.com) will lead you to a wealth of sources for REXX related information, including command references and tutorials.

If you want to use REXX on a sophisticated level, you can download the full REXX scripting help files from the ZOC BBS or Web page (see Where to get Updates).  These help files belong to Enterprise REXX which was licensed from is and is (C) by Enterprise Alternatives, Inc.  The filename is WREXXHLP.ZIP

General Issues

First of all, all REXX programs must begin with a comment.  REXX treats any text that is written between /* and */ as a comment.  This means that the first line in all REXX programs looks like this: /* REXX */

REXX knows native and non-native commands and functions.  Native commands are processed by the REXX interpreter itself, while non-native commands are passed to outside interpreters (so called adressees), three of which are CMD.EXE (under OS/2 and NT), COMMAND.COM (under DOS and Windows-95) and ZOC.EXE.  Examples for native commands are SAY, IF, DO, END.  Non-native commands are DEL, BACKUP, ZocAutodial, ZocHangup.  The list of ZOC commands can be found in ZOC-REXX Commands in the appendix.

How to Use Different Types of Commands

Native Commands
You can use native commands by writing the command name and the arguments like this:

/* REXX */
IF rc=640 THEN DO
    SAY "CALL FAILED"
END

ZOC-Commands
ZOC-commands are executed by means of REXX's subroutine call mechanismn. (Another style is still available for compatibility with elder ZOC versions, but the call style is more consistent with the REXX syntax and easier to use.)
For commands that do not return a result, this means that you use the CALL command with the name of the ZOC-command and the required arguments separated by commas.   In case of commands that do return a value, you use an assignment and supply the argument list enclosed in brackets after the command name:

/* REXX */

/* two commands without return values: */
CALL ZocBeep 2
CALL ZocDial "555 6542"

/* a command that returns a value: */
answer= ZocAsk("What is your name")

Operating System Commands
System commands are sent to the operating system via REXX's native ADDRESS CMD command or via call to ZOC's ZocShell command:

/* REXX */
ADDRESS CMD "DEL FILE.TMP"
CALL ZocShell "DEL FILE.TMP"

Command Placement

In REXX programs, each command is normally written in it's own line. But more commands can share a line if they are separated by a semicolon. Commands can be continued in the next line if the last character in the line is an extra comma:

/* REXX */
SAY "Hello "; SAY "World"
SAY 4*5 + ,
    3*6

This works for native commands and for ZOC-commands.

Tracing

To find find errors in your REXX program (or to watch the program execution) you can insert a TRACE A command into your REXX program (normally this is done right after the initial comment). After that, the REXX interpreter will show you each step in the program as it executes it. TRACE I will show very detailed tracing and TRACE O turns tracing off.

Screen Input/Output

ZOC supports the REXX PULL and SAY commands which are redirected to the ZOC window.  However, texts printed using SAY are not scanned for control characters (like ^M) while texts printed with the ZOC commands ZocWrite and ZocWriteln are.

Further Topics

More detailed REXX programming topics like decisions, loops, operators, subroutines, etc. are covered in the REXX Reference in the appendix.

A Small Example

Most of the time you will use REXX to log into a host and do things automatically for you.  Simple logins can be stored directly in the phone book (see Changing Phone Book Entries) and can be recorded automatically.

The example below calls a host and shows how to use REXX with ZOC. More samples can be found in ZOC's script directory.

/* REXX script to dial (and retry) a phone number */

/* Ask user what number should be dialled */
number= ZocAsk("What number shall I dial?")

/* dial the number if it was non empty and if user
   did not press the ESC key */

IF number"" & number"##CANCEL##" THEN DO
   /* redial 5 times max. */
   DO TRY=1 TO 5

      SAY "Try #" TRY

      CALL ZocDial number

      /* wait for answer within 60 seconds */
      CALL ZocTimeout 60

      /* scan the next 6 lines for something interesting */
      DO LINE=1 TO 6
         /* receive next line of text */
         timeout= ZocGetLine()

         /* if timed out, end script with error */
         IF timeout=640 THEN SIGNAL ERROR

         /* if BUSY was received, try again (leave inner loop) */
         IF ZOCLASTLINE()="BUSY" THEN LEAVE LINE

         /* if NO CARRIER was received, end with error */
         IF ZOCLASTLINE()="NO CARRIER" THEN DO
            SAY "Error!"
            LEAVE TRY    /* leave outer loop (DO TRY=1 ...) */
         END

         /* if CARRIER or CONNECT was received, everythings ok */
         IF LEFT(ZOCLASTLINE(),7)="CONNECT" | ,
             LEFT(ZOCLASTLINE(),7)="CARRIER" THEN DO
            CALL ZocBeep 3  /* page user */
            LEAVE TRY    /* leave outer loop */
         END

      END LINE

      CALL ZOCDELAY 30 /* wait 30 seconds to dial next */

   END TRY

END /* IF */


Introduction to DDE

The Dynamic Data Exchange method (DDE) allows other programs to execute ZOC-commands remotely.  While REXX Programs must run under control of ZOC, it is possible to let separate applications (eg. ones written in C++) send requests to ZOC for processing.

In this introduction it is assumed that the reader knows about the basic concepts of DDE.  The topics below deal only with implementation specific details.

A more detailed description and a C sample application can be requested from EmTec.

Sessions/Topics
ZOC will accept only one session at a time.  The application identifier is ZOC and ZOC responds to the topics COMM and COMM-DEBUG (the difference is, that the latter logs DDE events in the ZOC window to help debugging).  ZOC does not respond to general DDE-requests (ones that do not specify app or topic).

Sending Commands
You can send commands to ZOC either via DDE_EXECUTE (data field) or DDE_REQUEST (item field).  DDE_EXECUTE always responds with an DDE_ACK message with a numeric return code in the AppRc field.  DDE_REQUEST always sends an DDE_DATA packet (even in case of error) with a result or the string ##ERROR## in the data field.  The DDE_DATA must not be acknowledged.  Under Windows the data handle must be freed by the receiver.

Serialization
Commands must be strictly sent on a command-reply basis.  ZOC does not handle nested commands (eg. sending another command while a ZocWait command is pending).

Command Format
DDE_EXECUTE and DDE_REQUEST accept the same form of commands.  (They differ in the fact, that EXECUTE cannot be used to retrieve return values from functions).  The commands must be zero terminated (C-style strings).
ZOC does not handle commands enclosed in square brackets (as recommended in the Microsoft DDE specification) and it does not handle multiple commands per message.  Unicode is not supported.
A command can be sent in the form <command> <arguments> or <command>(<arguments>).  The arguments can be separated by blank or comma.  However, the recommended style is with brackets and comma. String should be placed between quotation marks but it is legal to send them without if they do not contain special characters.
Here is a list of valid command strings.  For backward compatibility it is legal to omit the letters ZOC at the beginning of the command words.

ZocBeep(2)
ZocMsgBox("Hello World!", 2)
ZocNotify('File "FOOBAR.DATA" not found!')

ZocRequest "How's life?" "Fine" "Not Bad"
Notify Error
Beep 2

List of Commands
Via DDE you can use the same set of commands/functions as in REXX.  The list can be found in the ZOC-Command Reference in the appendix.

Example
The following code is a small example of how to start a DDE connection via Microsoft Access Basic, to initialize the modem and check if it returns "OK".

ZocDDE = DDEInitiate("ZOC", "Comm-Debug")
DDEExecute ZocDDE, "ZocCls"
DDEExecute ZocDDE, "ZocTimeout(60)"
DDEExecute ZocDDE, "ZocSend('ATZ^M')"
rc = DDERequest(ZocDDE, "ZocWait('OK')")
Debug.Print rc
DDETerminate ZocDDE


Updates, Author, Email, Orders, ...

The subtopics in this section are

o	Special Offer: Companion Discount

o	Orders and Payment

o	Bulk Orders

o	How to get Support

o	How to Contact EmTec

o	How to Contact Enterprise Alternatives

o	Where to get Updates

o	Versions of ZOC

o	The ZOC Mailing List

o	A Word about our Evaluation Version


Special Offer: Companion Discount

This ZOC version offers a special 25% discount for two individuals ordering together (i.e. each of them only pays 75% of the regular price).

To take advantage of this offer send the two order forms together in one envelope, or fax/email them at the same time. Be sure to indicate on both order forms who you are ordering with (e.g put "I am ordering together with Bart Simpson" somewhere on the order form).

Small print: This offer does not apply to companies who order for two employees. Each order must include one ZOC 3.xx license. Optional items such as the ISDN module and/or manual will also be discounted 25%. You can take advantage of this offer only once.


Where/How to Order

The Order Form from the help menu provides most of the information necessary to order ZOC (like a list of distributors and registration sites and automatic pricing calculator).

Orders
The most convenient way to order ZOC is to logon to CompuServe, type GO SWREG at the forum! prompt, search for ZOC and buy online.  I will be notified and a few days later (currently orders are processed about twice a week) you will receive email on CompuServe which contains your software license code and instructions how to use it. The price will be charged with your next CompuServe bill.
If you do not want to order via CompuServe (or if you don't have an account there), select Order Form from the help menu and enter your personal data, method of payment (see below) and options.  Do not forget to choose a distributor in an area near you and.  ZOC will compute the price automatically and print (or file) it with the order.
You can print the order form, store it in a file for later use (eg. to attach it to an email).  If you order from CompuLab in Germany or from BMT Micro in the U.S. using a payment method that does not require a signature, you can send the order via modem.  This is a step by step procedure that can be aborted at any point and that lets you verify the data that will be sent.
In return to your order you will receive a letter (and probably email/fax) that contains a license code, information on how to turn off the evaluation mode (ie. remove the display of the order form after each download) and--if you ordered one--a printed manual and a disk.

Distributors
Please find the complete list of distributors/registration sites (address and phone/fax/bbs numbers) in the order form.

Options
There are a few options to chose from.

3.xx License
The license is a code that is entered into ZOC (and stored into your OS2.INI or Windows registry) to remove the evaluation reminder screens.  With this code you can unlock any ZOC evaluation version that you find online anywhere (for any platform) if it has the same major version number as your registration code (see also: version policy).
Please be aware that you have to order a disk and manual separately (see below).

Upgrade 2.xx to 3.xx
If you already own a ZOC 2.xx license, you can order a V3.xx license code at a reduced price (see order form).

Disk+Manual
If you want, you can order a printed manual and a disk containing the current version of ZOC and ZOC related files. The commercial style printed manual provides basically the same information as the help file but adds introductory guidance to datacommunication and REXX programming.

ISDN
There is an ISDN module available for ZOC.  With this module, ZOC is able to communicate directly through your ISDN board's CAPI. (CAPI.DLL must be provided by the board manufacturer).  There is a version of DEVISDN.DLL enclosed with ZOC but it is shareware as well, ie. you have to pay extra for it.
The reason for the extra fee is that the development of the ISDN device was rather demanding and we started the project only after people asked for an ISDN driver with an affordable price (currently all other solutions are far more expensive).

Note: The registration fee for the ISDN module is a one time payment which will cover ISDN support for all upcoming ZOC versions and/or ISDN modules.

Pricing
An automatic pricing table is available from the Order Form (to be found in the help menu).
When you consider whether to buy ZOC, you should be aware that most commercial packages cost far more than ZOC and do neither offer free minor upgrades nor a multi platform license (if they are available an another platform at all).

Payment
The notes below apply only if you order from the CompuLab! If you plan to order from another distribution site (see the order form  in the help menu for a complete list), please contact them for payment details.

Credit Cards
CompuLab accept VISA, MasterCard and Eurocard.
Credit cards are always charged in DM.
To prevent credit card fraud they need an order form with your written signature (i.e. a FAX or a letter) and with your credit card number and expiration date.

CompuServe
CompuServe offers a convenient shareware registration feature. To use it you need a CompuServe account. CompuServe registration is only available for the license without manual (I'll probably offer other options on CompuServe at a later time) and costs additional (declared as shipping cost) $5 because CompuServe charges 15% for the SWREG feature.

Check
Checks are fine too. Just send a personal check in the currency you like (covering the amount to be charged by the registration site in your country).
If you order from Germany, send me an Euro- or Verrechnungsscheck (please don't send Verrechnungsschecks by registered mail).

Cash
If you send cash, please use registered mail. We will come up for the additional postage. That means, you pay $5 less for ZOC and use it for registered mail instead.

Bank Transfer
I guess this is convenient only if used from inside Germany. If you send money via Bank Transfer please send an order form (via mail) as well. Our bank is POSTGIROAMT NÜRNBERG (BLZ 760 100 85), account is 0394777852.

Note: If possible, please don't use bank transfers from other countries, because CompuLab will be a transfer fee that is rather prohibitive!


Bulk Orders

If you want to order multiple copies of ZOC you can get bulk discounts according to the list below, if these are used by a single person, company or government agency:
Amount	Discount
5-9	5%
10-19	10%
20-29	20%
30-49	30%
50-99	40%
>100	50%
unlimited	pay 250 x 50%

The amount is based on the number of ZOC licenses, the discounts are based on the regular ZOC price (no special offers) and are also granted for the ISDN module and the manual.


Getting Support

If you have problems regarding ZOC please check the following list about how to proceed.  For non-support questions, see Contacting EmTec.

1.
First of all, PLEASE check the help file, especially the Problems and Questions section and the file PROBLEMS.DOC.  Many common questions and problems are listed and expained there.

2a.
If these documents do not help and if you have a software license code you can contact your ZOC distributor for support (see order form window for phone numbers, etc).

2b.
If you are still evaluating the program, you should post your problem to the newsgroups (or echos or forums or whatever they are called in your part of our electronic world) or try the ZOC mailing list.  If you have a CompuServe account, you can get support for the Windows version of ZOC in the WINSHARE forum. The OS/2 version is supported in the OS2SHARE forum.

3.
If none of the above helps:
German users and users with problems using ISDN (see also ISDN.DOC) please contact CompuLab, Markus Gömmel (email to support@compulab.de or check the order form window for CompuLab's phone number and address).  You can also visit the ZOC Support-BBS at +49 (0)911 3781200 (login as ZOC).
International users and users with complex technical problems please contact EmTec, Markus Schmidt (see Contacting EmTec).


Contacting EmTec

I welcome having direct contact to ZOC users and receiving feedback. Unfortunately however, it happens quite often that people ask question about something that is explained in this help file or that can only be answered by someone else.

So, please check the list below about who can help you best:

If you have questions about orders, bulk rates, payment etc. please contact your nearest distributor (see order form window).

For end user support, please see Support.

For complex technical problems, development support, bug reports, site licenses, ideas, general comments and sending christmas presents please contact EmTec via

Internet eMail (preferred)

m.schmidt@emtec.com (general)
os2bugs@emtec.com (bugs in ZOC for OS/2)
winbugs@emtec.com (bugs in ZOC for Windows)

CompuServe
100101,3256 (Markus Schmidt)

Fax
+49 911 7406857 (or 0911 7406857 from within Germany).

Phone
+49 911 7406856 (or 0911 7406856 from within Germany).

ZOC Support BBS
The phone number is +49 911 3781200 (or 0911 3781200 from within Germany). Login as ZOC.

Snail-Mail

EmTec
Markus Schmidt
Waagstr. 4
90762 Fuerth
- Germany -


Contacting Enterprise Alternatives

The REXX processor which you are using in ZOC is licensed from the company Enterprise Alternatives.  Enterprise REXX for Windows, WinREXX, allows you to use REXX as a scripting language for Windows NT, Windows 95 and also Windows 3.1.  The WinREXX product provides a REXX program source edit and execution window with menu selected options such as "REXX Syntax check" for development and "Execute with Trace" for debugging.  In addition to the standard REXX built-in functions, WinREXX also contains many Windows specific functions, for example to access the System Registry and to send electronic mail via MAPI.

Contact Enterprise Alternatives to order Enterprise REXX for Windows, or for additional information:

 Enterprise Alternatives
 635 South 16th Street
 San Jose, California 95112-2372
 USA

 408.293.3400 voice
 408.293.3474 FAX
 Enterprise@WinREXX.com
 www.WinREXX.com


The ZOC Mailing List

We now have an internet mailing list for ZOC.

A mailing list is an automated mail distribution system to which you can subscribe and post messages.  All messages posted to the mailing list, are distributed to all subscribers.  All this makes a mailing list similar to a newsgroup (or echo or forum).

If you want to subscribe to the mailing list, send an internet mail to majordomo@support.emtec.com (majordomo is the automated mailing list administrator) with nothing but the words subscribe zoc (or subscribe zoc-ger for the German mailing list) in the message body.  A mail will be sent to you, welcoming you to the list and giving you further details (like how to post to the list or how to unsubscribe).

Once you are subscribed, you will receive by email all messages sent (either by us or by one of the subscribers) to the mailing list.  This will give all ZOC users a forum to help each other and receive annoucements (and occasional help) from us.


Places to Find Updates

You will be able to find new versions of ZOC (zoc*.zip for the OS/2 version or zow*.zip for the Windows NT/95 platforms) and related files in the following places:

CompuServe
The current forums on CompuServe are OS2SHARE/Lib 19 and WINSHARE/Lib 3 for the English version and the CHIP/Lib 12 forum for the German versions.   Alternately, you can GO IBMFF and search for the filenames zoc*.* (OS/2) or zow*.* (Windows NT/95).

WWW
http://www.emtec.com/ or //www.bmtmicro.com/ or //www.shareware.com/

FTP
ftp.us.emtec.com or ftp.wilmington.net/bmtmicro

ZOC Info-BBS
+49 911 3781200, login as ZOC

BMT Micro BBS
(910) 350-8061 [10 lines, 14.4K] or (910) 799-0923 [28.8K], login with your own name or FIDO FREQ magic ZOC 1:3628/11


A few Words about the Evaluation Version of ZOC

Evaluation
ZOC and the ISDN module can be tested before you actually buy them.  They are fully functional and you can use them for 30 days (more exactly: on 30 different days) to check if you like them and/or if they meet your requirements.
Please be aware that this does not mean that you have the right to test every new version of ZOC for another 30 days (however, major updates ZOC will reset the day counter to a certain degree). After the end of the evaluation period (ZOC will remind you of this), you will have to buy a license code or delete it from your hard disk.

Demo Restriction and Nagging
I believe in uncrippled evaluation, but I believe as well that moderate reminders (widely known as nagging) are acceptable and (sometimes) necessary to make sure that software will be paid for.
In ZOC, the order form and this help topic are shown after every successful Zmodem download as a reminder that you should buy a license after the trial period.  The same happens after you completed a Zmodem transfer with the ISDN module (DEVISDN.DLL). The demo version of ZOC is fully functional during the evaluation period.  If something will be disabled later, it will be clearly marked by a message box saying that this is due to expired evaluation period. So, if you feel that anything is not working, you are probably doing something wrong.
Personally I would have preferred to use a method that begins to show the window AFTER the trial period, but this is technically not possible without risking that someone will fiddle with the method of time measuring to gain free access to ZOC.  However, you can fully explore the program and won't see the reminder too often. If you find this unacceptable, please ask yourself if you are already using ZOC so much that you should buy it anyway.

Note: Btw, I have already seen more than enough discussions about ZOC's way of nagging, so I won't contribute to any such discussion going on on the networks, even if I monitor it.

Fairness
Please be aware that this is Fair-Ware and that the concept of giving away demo versions requires fairness from the user.  It sure is possible to use demo  programs eternally without paying for it, but, in the long run, this will hurt the users as bad as the authors.
If the concept fails to work, more and more programmers will sell their programs in shrink wrapped packages without giving the user the opportunity to legally test the program for some time (the list of programs that were changed this way already is quite long).


ZOC Versions

ZOC is a modem and telnet communication program that is available in different editions and on the platforms OS/2, Windows 95 and Windows NT. The program files for OS/2 and the Windows platforms are different, but if you buy a software license code, it will be valid for all platforms.

To find out which ZOC edition you are using, please check the Product Information dialog in the Help menu.

ZOC/Pro
The ZOC/Pro edition is the full featured ZOC version which is available for a 30 days evaluation period (see below for ZOC/Pro Evaluation-Mode).

ZOC/Pro in Evaluation-Mode (all platforms)
This is the demo version of ZOC which you may evaluate for 30 days. No features are missing or disabled, but the order form is shown after each download to remind you that you should buy it after 30 days.
When you buy ZOC you will receive a software license code (valid on all platforms) and instructions how to use it to turn off Evaluation-Mode (ie. to remove the reminder after file transfers).  This will work for all ZOC updates with the same major version numbers, eg. all 3.xx version.

ZOC for OS/2
OS/2 was the platform for which ZOC was initially developed.  With Version 3.0 it was redesigned to support the Win32 platforms also.  The OS/2 and Windows NT versions are functionally identical except for a few minor functions that are mentioned in the help file.  OS/2 versions of ZOC are made available as files named ZOC*.ZIP

ZOC for Windows-NT and Windows 95
ZOC for Windows NT and ZOC for Windows 95 are the same program.  There are very few differences between ZOC running under NT and Win 95 (for example Win 95 does not allow ZOC to serve as a named pipe server), but in almost all practical matters ZOC behaves identical under NT and Win 95 (however, because of general stability, Windows NT is recommended).  Windows versions of ZOC are made available as files named ZOW*.ZIP

Version Policy
After the 3.00 release there will be a succession of ZOC version which will contain bug fixes and minor improvements (like supporting Windows-TAPI modems, adding a few options, making a dialog eaiser to use or adding a file transfer protocol or terminal emulation) until a point is reached, where the program runs reasonably smooth and stable. All these versions will have the same major version number and will hence be covered by the 3.xx software license code.  This point will probably be reached with a version number around V3.10.
After that, there might be an upgrade with major improvements that will eventually be released as version 4.00.  Users with a 3.xx license will then be offered an upgrade license at a reduced price (currently the 2.xx to 3.xx upgrade costs $20).


APPENDIX

o	Special Codes

o	VT102/VT220 Special Keys

o	Features You Might Have Missed

o	Common Questions (How-To Guide)

o	Common Problems and Questions (Trouble Shooting Guide)


Features You Might Have Missed

o	If you keep the mouse over one of the leds in the status bar for some time, a description of the led will appear.  This works for the buttons in the toolbar and userbar also.

o	Right mouse button on the toolbar opens the toolbar definition dialog.

o	Right mouse button on the userbar opens the userbar definition dialog.

o	Right mouse button on the status bar, opens a popup menu of all options menu choices (OS/2 version only).

o	Right mouse button on the main window opens a popup menu.

o	With the Alt key pressed you can mark rectangular parts of the screen.

o	Marking one line of text with the mouse while holding the Shift key down, sends that text immediately.

o	Paste-Quoting text with the Ctrl key pressed, reformats the text to fit the screen width.

o	Right mouse button in the phone book opens a popup menu.

o	The quick access option in the phone book's entry edit dialog, puts phone entries into the Device menu.

o	The minimize/maximize buttons in the phone dial window switch between a small and large version of that window (also available from phone book dialog options).

o	The snippets window (options->window) captures useful stuff (like file names, internet adresses, etc.) for you.

o	The chat line (Alt+C) has a history (cursor up/down).

o	The keymap dialog allows different mappings for keys according to the state of the scroll-lock key.  This way you could create totally different keyboards and switch between them by use of scroll-lock.


Function Shortcuts

Key	Function
PgUp	Upload
Ctrl+PgUp	ASCII Upload
PgDn	Download
Shift+Insert	Cliptext, Send
Alt+Insert	Cliptext, Send Spaced
Ctrl+End	Device, Send Break
Alt+B	Capture, Browse
Alt+C	Show/Hide Chat
Alt+D	Device, Phone Book
Alt+E	Misc, Editor
Alt+H	Device, Disconnect
Alt+J	Transfer, Transfer-Shell
Alt+L	Capture, Open/Close
Alt+M	Device, Manual Call
Alt+N	Device, Call Next
Alt+P	Logfile, Log To Printer
Alt+Q	Cliptext, Send Quoted
Alt+S	Options, Settings
Alt+X	End Program
Alt+Y	Enable/Disable Split Chat
Alt+Z	Misc, Clear Screen
Alt +	Start REXX
Alt -	Stop REXX
Alt ,	Show/Hide Snippets window
Alt #	Misc, Clear Screen
Alt /	Misc, Shell
Alt *	Cliptext Print


VT102/VT220 Special Keys

VT102/VT220 Auxiliary Keypad

VT102 Keypad	PC MF-Keypad (Num Lock Off)
[PF1]	[F1]
[PF2]	[F2]
[PF3]	[F3]
[PF4]	[F4]
[0] ... [9]	[0] ... [9]
[Enter]	[Enter]
[.]	[./Del]
[-]	[-]
[,]	[+]

VT220 Special Keys

VT220 Key	PC MF-Key
[F1]...[F4]	not available
[F5]...[F10]	[F5]...[F10]
[F11]/[F12]	[F11]/[F12] or
[F13]...[F20]	Shift+[F3]...[F10]
[Insert Here]	[Ins]
[Remove]	[Del]
[Select]	[Home]
[Find]	[End]
[Prev Screen]	[PgUp]
[Next Screen]	[PgDown]


Special Codes

Sometimes it is necessary to send characters that are not available from the keyboard or that cannot be entered into a field because the operating system uses it to move the cursor (like the ESC or Enter key).

ZOC offers Control Sequences that are replaced with keys that would not be available otherwise.  However, these characters can also be entered by entering it's ascii code value on the numeric keypad while holding the Alt key pressed.

ZOC also offers special Power Codes that give you access to values like current time or date or let you map action (like running a REXX program or calling a host) to power fields like function keys or AutoMacros.

Table of Control Codes
Table of ZOC Power Codes


Control Codes

Key	Control Code	Alt+Code
^ char	^^
Beep	^G	Alt+007
Backspace	^H	Alt+008
Tab	^I	Alt+009
Esc	^[	Alt+027
Enter	^M	Alt+013
Line Feed	^J	Alt+010
Ctrl+^ (dec 30)	^~	Alt+030


Power Codes

The table below lists place holders that can be used in ZOC power fields (like F-Macros) to send special values or achieve magical effects like starting REXX scripts or connect to hosts.

All fields that can accept power codes have a button with a yellow flash next to them which, when pressed, starts the power code assistant.
Code	Explanation
^1	Replaced with current day of month
^2	Replaced with current month
^3	Replaced with current year
^4	Replaced with current hour
^5	Replaced with current minute
^6	Replaced with current second
^&	Replaced with the password from the phone book entry that is currently
^%	Replaced with the username from the phone book entry that is currently
~	Delay of 1/3 second (only available in modem strings)
^#	Replaced with the phone number (only available in modem dial strings)
^!	Send a break
^RUN=	Run the REXX file that is given after the equal sign (available in
^CALL=	Call one or more hosts (separated by vertical bars)
^CONNECT= <device>: <number/address>	Try to connect to a given phone number, internet address etc. by means
^FKEY=n	Maps the text of a function key to a Custom Button or AutoReply (e.g.
^SHELL=	Starts an OS/2, DOS or NT command (e.g. ^SHELL=COPY NEW.DATA SAVE.DATA)
^EXEC=	Starts an OS/2, DOS or NT command (e.g. ^EXEC=NOTEPAD.EXE).  Unlike
^XFER=	OS/2 only: Starts an OS/2 command in a transfer shell (e.g.
^DOSXFER=	Starts a DOS command in a transfer shell (e.g. ^DOSXFER=DSZ port


REXX, Common Problems, Credits


REXX Reference

This appendix covers special topics regarding the native REXX control language.  A more general introduction can be found in REXX Programming; the ZOC communication commands for REXX are listed in ZOC-REXX Commands/Functions.  All the topics presented here are also demonstrated in the samples in ZOC's SCRIPT\RXSAMPLE\TUTORIAL directory.

The complete REXX reference for the Enterprise REXX product is available as a help file from the official ZOC online places, see Where to get Updates. (You can find details about contacting Enterprise Alternatives in ZOC's product info dialog menu and in the Contacting the Author section of the Help text.)

Command Placement
More than one command can be placed in one line by separating them by semicolons.  A command can be continued in the next line by placing an extra comma at the end of the line.

/* REXX */
SAY "Hello "; SAY "World"
CALL zoc "REQUEST", "What do you think", ,
     "Don't know", "Don't care"
answer= ZOCRESULT()

Numbers and Arithmetics
Numbers can be used for calculation, counting etc.  REXX uses numbers and the arithmetics in a pretty straightforward way:

/* REXX */
SAY 4*5+3*5 /* Output: 35 */
SAY 10/3    /* Output: 3.333333 */
SAY 10%3    /* Output: 3 (integral division) */
SAY 10//3   /* Output: 1 (division remainder) */
N= 4
SAY N       /* Output: 4 */
N= N+1
SAY N*3     /* Output: 15 */

Strings
REXX programs often process text in one way or another.  While REXX is able to deal with unqoted texts, it is generally better to put all text strings in single or double quotes:

/* REXX */
SAY "Hello World!"
SAY "Joe's Bar"
SAY 'He suggested: "Use ZOC!"'
SAY 'She replied: "That''s my program!"'

You can assign strings to variables, and you can concatenate strings and variables with the || operation:

/* REXX */
w= "World"
ex= "!"
SAY "Hello "||w||ex

Conditionals
To express conditions in REXX programs, the following conditional operators are used:

=
equal

<> or \=
not equal

<
smaller

>
greater

<=
smaller or equal

>=
greater or equal

&
AND

|
OR

\
NOT

Decisions
Decisions are made with the IF <condition> THEN DO <commands> END ELSE DO <commands> END sequence.  A typical program part using an IF command looks like this:

/* REXX */
IF rc=0 THEN DO
    SAY "OK"
END
ELSE DO
    SAY "FAILED"
END

The else part can be omitted if it is not needed.  The keywords DO and END can be omitted if only one command is to be executed conditionally.

Loops
Loops are expressed in the following manner:
DO <count> <commands> END
DO WHILE <condition> <commands> END
DO UNTIL <condition> <commands> END
DO <variable>=<start> TO <end> <commands> END

/* REXX */
DO 5
    SAY "Hello"
END

N= 100
DO WHILE n>0
    SAY n
    n= n-1
END

DO i=1 TO 10
    SAY i
END

Loops can be aborted by the LEAVE command.

Jumps and Procedures (Subroutines)
Jump targets (labels) and subroutines are marked with a name and a colon. To jump to a label, the SIGNAL command is used, while the CALL command is used to call a subroutine.  The following expample demonstrates a jump and a call to a subroutine with argument passing:

/* REXX */

PULL n

IF n=0 THEN
    SIGNAL get_out

SAY "10/"n" is "10/n
CALL square n

get_out:

EXIT

square:
    value= arg(1)
    sqr= value*value
    say "Sqare of "||value||" is "||sqr
    return

Function calls
Functions are marked and called like procedures.  The difference is that the can return a value to the calling command:

/* REXX */

SAY "Enter base"
PULL b
SAY "Enter power"
PULL p

result= power(b,p)
SAY "The " p "th power of " b " is " result

EXIT

power:
    base= arg(1)
    pow= arg(2)
    res= 1
    DO I=1 to pow
        res= res*base
    END
    return res

Issuing ZOC commands
ZOC-commands that do not reutrn a value are called with the procedure call syntax: CALL <cmd-name> <argument(s)>

ZOC-commands that do return a value are called with the function call syntax: <result-var>= <cmd-name>(<argument(s)>)

Issuing OS/2, DOS or NT commands
Commands which are intended to be exectued by the operating system (like deleting or renaming files), must be addressed to the operating system directly.  This can either be done through REXX's ADDRESS CMD command or through ZOC's ZocShell command.

/* REXX */
ADDRESS CMD "DEL UPLOAD.TMP"
ZocShell "DEL UPLOAD.TMP"

Built-In Functions
The functions below can be used in assignments or in other commands that expect values, eg. b= ABS(a) or IF ABS(n)>10 THEN ....
Only the most important functions and arguments are listed, for a complete description please check the OS/2 REXX online help or the Enterprise-REXX help file for Windows (available from ZOC's support BBS or Web-Page).

ABS(<value>)
Absolute value (remove sign), eg. n=ABS(t)

ARG(<n>)
The n-th argument of a procedure/function.

COPIES(<str>,<repeat>)
Return <repeat> copies of <string>, eg. x=COPIES("-more- ", 10)

C2D(<char>)
Obtain the decimal ASCII value of a character (CHAR-TO-DECIMAL), eg. n=C2D('A') will set n to 65.

DATE("<style>")
Return the current date in different styles (one of B, D, E, L, M, N, O, S, U, W), eg. today=DATE("S") will return "19970201" on February 1st, 1997).

D2C(<ascii>)
Create the character from a given ASCII value (DECIMAL-TO-CHARACTER), eg. SAY D2C(65) will print the letter A

FILESPEC(<part>, <filename>)
Cut a given part (one of "Drive", "Path", "Name") from a filename, eg. dir=FILESPEC("Path", ofile)

LEFT(<string>, <num>)
Return the first <num> characters from <string>, eg. SAY LEFT("BEERBOTTLE", 4) will print BEER.

LENGTH(<string>)
Return the number of characters in a string.

LINEIN(<filename>)
Read the next line of text from a file (see FILE I/O).

LINEOUT(<filename>, <text>)
Write a next line of text to a file (see FILE I/O).

POS(<needle>, <haystack>)
Find the first string in the second and return the position or -1 if not found.

RIGHT(<string>, <num>)
Return the last <num> characters from <string>, eg. SAY LEFT("BEERBOTTLE", 6) will print BOTTLE.

STREAM(<filename>, ...)
Perform a file control operation (see the FILE I/O section below).

SUBSTR(<string>, <pos>[, <length>])
Return <lenght> characters from position <pos> in string.  <length> can be omitted and will return the rest of the string.

TIME("<style>")
Return the current time (style is one of C, H, L, M, N, S), eg. SAY TIME("N") will show the time in HH:MM:SS format.

TRANSLATE(<string>)
Translate the characters in a string to upper case.

TRUNC(<n>, <m>)
Cut the value <n> so that it has <m> decimal places.

FILE I/O

Check if File Exists

IF STREAM(<filename>, "C", "QUERY EXISTS")\="" THEN ...

Open for Writing

CALL STREAM <filename>, "C", "OPEN WRITE"

Open for Reading

CALL STREAM <filename>, "C", "OPEN READ"

Write to File

CALL LINEOUT <filename>, <text>

Read from File

<variable>=LINEIN(<filename>)

Check End of File

IF STREAM(<filename>, "S")\="READY" THEN ...

Close File

CALL STREAM <filename>, "C", "CLOSE"

Please check the FILEIO sample in SCRIPT\RXSAMPLE\TUTORIAL directory.


ZOC-REXX Commands/Functions

The names of ZOC commands always begin with "ZOC" and for many it is necessary to provide one or more arguments.

Generally there are two types of ZOC-commands: Commands that return a value (these are also called Functions) and commands that don't.

ZOC-commands that do not return a value are called with the procedure call syntax: CALL <cmd-name> <arguments>

Functions are called with the function call syntax: <result-var>= <cmd-name>(<arguments>)

However, it is possible to call functions (commands which return values) with the procedure style call if you are not interested in the result code; in other words, CALL ZocDownload "ZMODEM", "\FILES\DOWNLOAD" and error= ZocDownload("ZMODEM", "\FILES\DOWNLOAD") are both legal.

In the list below, functions are indicated by the use of brackets.

ZocAsk([<title> [, <default>]])
Show a text input window and read text from user.  If the second argument (<default>) it is provided, the entry field will be preset with this value.
Example:

answer= ZocAsk("Are You sure?", "No")
IF answer="No" THEN ...

ZocAskP([<title>])
Same as the ZocAsk command, except that the entry field is protected (typed characters are shown as asterisks) and that you cannot preset the field.
Example:

pw= ZocAskP("What's your password?")
IF pw="secret" THEN ...

ZocAutoDial <name>
Makes a call to an entry in the phone book.  The entry should not have an AutoLogin REXX file assigned to it.

Example:
CALL ZocAutoDial "ZOC-BBS"

ZocBaud <baud>-[7|8N|O|E1|2]
Set serial parameters (SERIAL/MODEM device only).  For other devices see the ZocSetDevParm command.

Example:
CALL ZocBaud "38400-8N1"

ZocBeep [<n>]
Beep n times.

Example:
CALL ZocBeep 2

ZocCaptClr
Clear the capture buffer.

Example:
CALL ZocCaptClr

ZocCarrier()
This function has been replaced by the ZocGetInfo() function and is provided for backward compatibility only.

ZocCtrlString(<text>)
This function converts a text (which typically contains control codes) into a string.  The most common use for this function is to obtain the password of the current session from the phonebook via ^& control code.

ZocCursor()
The ZocCursor() function returns a string that contains the current cursor position (zero based) in the form "xxx yyy".
Example:

xy= ZocCursor()
VALUE xy WITH x y
SAY "CURSOR IS ON ("x+1","y+1")"

ZocCls
Clear the screen.

Example:
CALL ZocCls

ZocDelay [<sec>]
Wait a given time in seconds or wait 0.2 seconds if the parameter is omitted.

Example:
CALL ZocDelay 10

ZocDial [<number>]
Dial a number or read the number to dial from the user if the parameter is omitted.

Example:
CALL ZocDial "011 49 911 3781200"

Note: If you are dialing an entry from the phone book and want ZOC to maintain the call/last-call fields, you can add the name of the BBS (exactly written as in the phone book) to the phone number after a TAB character (via REXX's D2C(9) function) like this:

Example:
CALL ZocDial "011 49 911 3781200"||D2C(9)||"ZOC Support BBS"

However, it would be more convenient to use the ZocAutodial command.

ZocDownload(<protocol>[:<options>], <file or dir>)
Download one or more files using a file transfer protocol.  The first parameter is the name of a file transfer protocol (as listed in ZOC's Options->Transfer dialog).  The second parameter is a filename for Xmodem and a directory to store the received file(s) for Ymodem and Zmodem.  For a discussion of the protocol options, please see the ZocUpload command further down in this  list. This function returns the string ##OK## or ##ERROR##
Example:

result= ZocDownload("ZMODEM", "C:\ZOC\INFILES")
IF result="##ERROR##" THEN DO
    CALL ZocBeep 5
    SAY "DOWNLOAD FAILED"
END

Note: If you have Auto-Transfer enabled in the Transfer Options, and if the remote host starts the transfer before ZOC-REXX processes the ZocDownload command, then two download windows will come up.  So make sure you are issuing ZocDownload() before the host starts or make sure that Auto-Transfer is disabled.

Note: If the file has a name that is set for download to the alternate path (in Options->Transfer), the directory parameter is ignored.

ZocEndZoc [<return-code>]
Tell ZOC to terminate (ie. return to the shell or desktop) after the REXX program ended.  Normally an EXIT command will follow ZocEndZoc.  If you supply the return-code parameter,  ZOC will return this value to the calling program (typically a batch file that checks the ERRORLEVEL to determine if everything was ok).
Example:

CALL ZocEndZoc
EXIT

ZocExeDir()
This function returns the drive and directory where ZOC is installed.
See also: ZocWorkDir

ZocGetFilename(<title> [, <default>])
Display a file selection window and return the filename.  If the file requester is cancelled, the string ##CANCEL## is returned.
Example:

file= ZocGetFilename("Select file to upload", "*.ZIP")
IF file\="##CANCEL##" THEN DO
    CALL ZocUpload "ZMODEM", file
END

ZocGetFilenames(<title> [, <default>])
Display a multiple file selection window and return the filenames separated by space characters.  If the file requester is cancelled, the string ##CANCEL## is returned.  The items can be retrieved from the list by the REXX WORD() function.  This function will fail on filenames that contain space characters.
Example:

files= ZocGetFilenames("Select file to process", "*.ZIP")
I= 1
DO WHILE WORD(files, i)<>""
    ...
END

ZocGetInfo(<item>)
This function returns information about the current ZOC session. Items:

COMHANDLE
The file handle which ZOC uses to access the com port or ##NULL## (when not using a com port). This handle can be passed to external programs (like CKERMIT or FaxWorks) who can access the com port directly.

CONNECTEDTO
The host or phone number to which we are connected.

EXEDIR
The drive and directory in which ZOC has been installed.

ONLINE
Information if ZOC is currently connected to a host: ##YES##,  ##NO##, ##UNKNOWN##

PROCESSID
ZOC's system process id.

TRANSFER
Information if a file transfer is currently active: ##YES##,  ##NO##

VERSION
The current ZOC version, e.g. 3.05

WORKDIR
ZOC's working directory (containing phone book, options, etc).

Example:

CALL ZocTimeout 30
timeout= ZocWait("Password")
IF timeout=640 | ZocGetInfo("ONLINE")<>"##YES##" THEN DO
    SIGNAL PANIC /* disconnected! */
END

ZocGetLine()
Wait for the next non empty line of text from the modem (if you want to wait for the next line, no matter if empty or not, use ZocWait "^M"). The received text is available using the ZocLastLine() function. If ZocGetLine times out, it returns a value of 640.

Note: Since REXX is running in an extra thread, it is possible that (especially in loops) ZocGetLine will miss lines if the text is coming in very fast (see ZocSynctime command below).
Example:

rc= ZocGetLine()
IF rc\=640 & ZocLastLine()="CONNECT" THEN ...

ZocGetOption(<key>)
Retrieves the key-value pair (see ZocSetOption command) for a ZOC option.
Example:

pair= ZocGetOption("Beep")
PARSE VALUE pair WITH key"="value
IF value="no" THEN DO
    SAY "THE BEEP OPTION IS TURNED OFF"
END

Example:

pair= ZocGetOption("MdmIni")
PARSE VALUE pair WITH key'="'value'"'
SAY "THE MODEM INIT STRING IS: "value

ZocGetPhonebk(<name>, <key>)
Retrieves the key-value pair (see ZocSetPhonebk or ZocSetOption command) for a ZOC phone book entry.
Example:

pair= ZocGetPhonebk("ZOC Support BBS", "number")
PARSE VALUE pair WITH key'="'value'"'
CALL ZocDial value

ZocHangup
Disconnect line.

Example:
CALL ZocHangup

ZocHfc()
This function has been replaced by the ZocGetInfo() function and is provided for backward compatibility only.

ZocLastLine()
This is a function and returns the current line of text when the last ZocWait/ZocWaitMux/ZocGetLine command was satisfied.
Example:

CALL ZocSend "ATZ^M"
timeout= ZocGetLine()
IF timeout\=640 & ZocLastLine()="OK" THEN DO
    DIAL "555 3456"
END

ZocLoadOpts <optsfile>
Load options file.

Example:
CALL ZocLoadOpts "OPTIONS\VT102OPT"

ZocLogname <filename>
Set new name for logging.

Example:
CALL ZocLogname "TODAY.LOG"

ZocLogging [0|1]
Suspend/resume logging.

Example:
CALL ZocLogging 1

ZocMsgBox(<text> [, <mode>])
Display a message box.  Normally an informational message window with an OK button (mode 0) is shown.  Mode 1 shows an error message with an OK button and mode 2 shows a message with a YES and NO button.  The returned value is either ##OK##, ##YES## or ##NO##.
Example:

CALL ZocMsgBox "Connect Failed!", 1
result= ZocMsgBox("Try again?", 2)
IF result="##YES##" THEN DO
   ...
END

ZocNotify <text>
Display message window.

Example:
CALL ZocNotify "Hello World!"

ZocOs()
The ZocOs() function returns a string which indicates the operating system and OS version under which ZOC is running.  The string returned is in the form "<osys> <version>" where <osys> is OS2 or WINNT or WIN95.   <version> is a three digit number eg. 400 for Windows NT 4.0 or 230 for OS/2 Warp (Warp sees itself as OS/2 V2.30).
Windows 95 returns WIN95 400

ZocPID()
This function has been replaced by the ZocGetInfo() function and is provided for backward compatibility only.

ZocReceiveBuf(<buffer size>)
This function makes ZOC collect parts of a session in a memory buffer and returns the previous buffer's contents (if any) as a string.
Initially the buffer has a size of zero, which means that no data is collected.  To start data collection you need to call the function with the size of a receive buffer.   After that the incoming data is collected until the buffer is full or until the function is called again (which will retrieve the buffer contents, empty the buffer and set a new size).
A typical call sequence to use ZocReceiveBuf() to retrieve text from a database might look like this:
Example:

/* make a receive buffer of 256 bytes */
CALL ZocTimeout 60
CALL ZocReceiveBuf 256
CALL ZocSend "read abstract^M"
CALL ZocWait "$"

/* get the description and make a */
/* larger buffer to continue with */
abst= ZocReceiveBuf(4096)
CALL ZocSend "read contents^M"
CALL ZocWait "$"

/* get the contents and discontinue buffering */
cont= ZocReceiveBuf(0)

Note: In the example above, both variables (abst and cont) will start with the word "read" and end with the character "$" with whatever was received in between.

ZocRequest(<title>, <opt1> [, <opt2> [, <opt3>]])
Display a requester window with options and return a string with the selected option .
Example:

answer= ZocRequest("What do you want?", "Milk", "Honey")
IF answer="Milk" THEN DO
    ...
END

ZocRespond <text1> [<text2>]
Send <text2> whenever <text1> is received during (and only during) a ZocDelay or ZocWait command.  A maximum of 32 Respond commands can be active simultaneously.  <text1> must not contain carriage returns or line feeds. If <text2> is omitted or empty the Respond command for <text1> is cancelled.

Note: This command uses a few extra CPU cycles, therefore you should cancel unused replies as soon as you don't need them any more.
Example:

/* Wait for 'Command' and
skip all prompts in between */
CALL ZocRespond "Enter", "^M"
CALL ZocRespond "More", "^M"
timeout= ZocWait("Command")
CALL ZocRespond "Enter"
CALL ZocRespond "More"

The above example waits until the text Command is received.  While waiting, all Enter and More prompts are answered automatically by sending ^M.  After the Wait is satisfied, the respond commands are cancelled.

ZocRestimer
Reset the timer on the status line.

ZocScreen(<x>,<y>,<len>)
The ZocScreen() function can be used to return characters that are currently displayed in ZOC's terminal window.   It returns <len> (255 max.) characters beginning from position <x>,<y> (zero based) and, at the right margin, skipping to the next line without adding a CR or LF.
Example:

line= ZocScreen(0,0, 80)
IF POS("*", line)=-1 THEN DO
    SAY "THERE'S NO * IN THE FIRST LINE"
END

ZocSend <text>
Send text to modem (or any other device).  If text contains control codes (like ^M) these are replaced with their real values.

Example:
CALL ZocSend "JOE USER^M"

ZocSendBrk
Send a modem break.

Example:
CALL ZocSendBrk

ZocSendKey <number>
Send text from macro key (1 ... 20).

Example:
CALL ZocSendkey 5 /* Send F5 */

ZocSetAutoAnswer 1|0
Make the device accept incoming calls.

Example:
CALL ZocSetAutoAnswer 1 /* accept calls */

ZocSetDlPath <path>
Change the default download directory.

Example:
CALL ZocSetDlpath "C:\DOWNLOADS"

ZocSetDevice <name> [,<devparm-string>]
Change the device.  The name must be one of the names available in Options->Settings->Device->Devices.  The optional devparm-string contains options with which the device should be initialized (see ZocSetDevParm below for information about how to obtain a devparm-string). If the device parameters are omitted, ZOC uses the paramters which are currently set for that device.
Example:

CALL ZocSetDevice "TELNET"
CALL ZocDial "bbs.channel1.com"

Example:

CALL ZocSetDevice "SERIAL/MODEM", "COM3:57600-8N1|9|350"

ZocSetDevParm <string>
This is a rather advanced command which allows to change the device dependent options.  However, the options strings for the device are not standardized which means that, in order to find a certain parameter string, you need to set the options manually and then query the device's parameter string by pressing Shift+Ctrl+F10 in ZOC's main window.
Let us assume you want to start a modem session on COM3 with 57600 bps, RTS/CTS and Valid-CD set to on and a break time of 350ms.

1.
Go to Options->Device, select SERIAL/MODEM and the set the options.

2.
Close the Options window

3.
Press Shift+Ctrl+F10

4.
The device status output will show the current device-parameter field "[1]COM3:57600-8N1|9|350" which you can use as a parameter to the ZocSetDevParm command.  The beginning of the device-parameter--square brackets and a number--can be omitted.

Example:

/* SET SERIAL PARAMETERS TO COM3,
   57600-8N1, RTS/CTS, Valid-CD, 350ms */
CALL ZocSetDevParm "COM3:57600-8N1|9|350"

Example:

/* SELECT TELNET AND SET OPTIONS TO
   "START SESSION WITH LOCAL ECHO" */
CALL ZocSetDevice "TELNET"
CALL ZocSetDevParm "[3]12"

ZocSetEmu
This command is provided for backward compatibility only.  Please use CALL ZocSetOption "ActiveEmulation=<emu-id>" instead.

Example:
CALL ZocSetOption 'ActiveEmulation=1'

ZocSetHost 0|1
Set host echo on or off. This command is provided for backward compatibility only.  Please use CALL ZocSetOption "Host=yes|no" instead.

Example:
CALL ZocSetOption "Host=no"

ZocSetOption "<key>=<value>"
Sets a ZOC option (any from the Options->Settings window) from a key-value pair.  To find out more about the key-value pairs, please check the file OPTIONS\STANDARD.ZOC (or any other options file that was created by the Options->Save-As dialog).  The file contains all the key-value pairs, that make up your current configuration.
If you are not sure what the value of a certain key means, just set the option you want in the options window, then click Save and check the options file for the new key-value pair.
See also: ZocGetOption()
Example:

CALL ZocSetOption "Beep=no"
CALL ZocSetOption "JumpScroll=3"
CALL ZocSetOption "ShowChat=no"
CALL ZocSetOption 'MdmIni="ATZ^M"'  /* watch the quotes! */

Note: ZocSetOption/ZocGetOption will only work for options from the Options->Settings notebook.  You cannot change options from the Options->Global menu.

ZocSetPhonebk "name", "<key>=<value>"
Sets a value for a phone book entry from a key-value pair.  To find out more about the key-value pairs, please check the file PHONEBK with an editor. The file contains all the key-value pairs, that make up your phone book.
See also: ZocSetOption, ZocGetPhonebk()
Example:

CALL ZocSetOption "MyBBS", "emu=1"
pair= ZocGetOption("ZOC Support BBS", "calls")
PARSE VALUE pair WITH key"="value
value= value+1
CALL ZocSetPhonebk "ZOC Support BBS", "calls="||value

ZocSetTimer <hh:mm:ss>
Set timer to given time.

Example:
CALL ZocSetTimer "00:00:20"

ZocShell <command>
Execute a program via 'CMD.EXE /C <command>'.  This is similar to using ADDRESS CMD "<command>".

Example:
CALL ZocShell "DEL FILE.TMP"

ZocSynctime <ms>
Because REXX runs in it's own thread, it is possible that ZOC processes incoming data faster than the REXX program, which means that it is possible that text, which you are going to wait for, has already scrolled by.  A typical example for this is a loop that processes all incoming lines of text.
Example:

DO FOREVER
    timeout= ZocGetLine()
    IF timeout\=640 THEN DO
        line= ZocLastLine()
        /* line is processed here */
    END
END

In the example above, ZOC might receive more text while your REXX programm processes the data in ZocLastLine().
To address this problem, ZOC is suspended after it found a string for which the REXX program was waiting, thus giving the REXX program time to process the data.  ZOC resumes when REXX processes another ZOC command (like ZocWait, ZocSend, etc.) or after the Sync-Time has elapsed (default is 250ms).  However, if 250ms is too short for your application, you can increase the time using the ZocSynctime command.

Example:
CALL ZocSynctime 500

ZocTimeout <sec>
Set timeout for ZocWait (see also: ZocWait, ZocWaitMux, ZocGetLine).

Example:
CALL ZocTimeout 60

ZocUpload <protocol>[:<options>] <file>
Start an upload.  Only one file name can be supplied.  However, the filename may contain wildcard characters.  If the filename contains no path at all it is taken from the standard upload directory, otherwise, if the path is relative, it is accessed based on ZOC's working directory.
The protocol name is ASCII or the name of a file transfer protocol from the Options->Transfer dialog, eg. Zmodem or Kermit.
If ZocUpload is called as a function, it returns the string ##OK## or ##ERROR##.

Example:
CALL ZocUpload "ZMODEM", "REPQWK\ZOCBBS.REP"
 uploads C:\COMM\ZOC\REPQWK\ZOCBBS.REP via Zmodem protocol.

Example:
success= ZocUpload("XMODEM", "ZOC.ZIP")
 uploads ZOC.ZIP (from the upload dir) via Xmodem protocol and obtains a success indicator (##OK## or ##ERROR##).

Example:
CALL ZocUpload "ASCII:0+10", "\FAR\AWAY\LIST.TXT"
 uploads LIST.TXT via ascii transfer without CR/LF translation and ascii delay of 10.

Example:
CALL ZocUpload "ASCII:1+3", "HERE\SOME.DATA"
 uploads the file SOME.DATA via ascii transfer with CR/LF translation and ascii delay of 3.
The optional options are set by using a string that configures that protocol.  Valid strings can be obtained, if you set your protocol options in ZOC's Options->Transfer dialog, press Save and then edit the OPTIONS\STANDARD.ZOC file on your hard disk.  The [OPTS_TRANSFER] section will contain an ActiveProtocol=n entry (eg. n=2 for Zmodem) and a list of entries named TransferOpts#nn which belongs to one file transfer protocol each.
Example: If you want to make a transfer via Xmodem with CRC and 1KB blocks, you'd define these options in ZOC's Transfer dialog.  Then, looking at the OPTIONS\STANDARD.ZOC file with an editor, you would find (among others) the following lines:

ActiveProcotocol=0
TransferOpts#00="[0]kc"

Hence, to make an upload with the Xmodem protocol, configured for CRC and 1KB blocks, you would use the command CALL ZocUpload "XMODEM:[0]kc", "datafile.zip" or just CALL ZocUpload "XMODEM:kc", "datafile.zip"

Important:: The options are case sensitive!

ZocWait(<text>)
Wait for the given text (see also: ZocGetLine, ZocTimeout, ZocWaitMux, ZocWaitForSeq). If ZocWait times out, it returns a value of 640.
Example:

timeout= ZocWait("Password")
IF timeout=640 THEN SIGNAL PANIC

Note: ZOC automatically filters ANSI/VTxxx/etc. control codes from the data stream, so they do not interfere with the ZocWait command.

Note: If you are using the CEPT (German T-Online) emulation, you can use

Example:
Call ZocWait "^Z"
 to wait for the next data input opportunity.

ZocWaitForSeq 1|0
Normally ZocWait commands do not see emulation control codes in the data stream.  If you need to wait for an emulation control you can use this command.

ZocWaitMux(<text0> [, <text1> ...])
Wait for one of multiple texts in the input data stream.  It is satisfied if one of the given texts is found in the incoming data stream (and is typically used within a loop).  The return code provides information about which text was found (0, 1, 2 ...) or if the command timed out (640).

Note: The length of all texts together must not exceed 256 characters.

Note: This command uses a bit of extra CPU time.
Example:

result= ZocWaitMux("You have mail", "Main Menu")
SELECT
    WHEN result=0 THEN CALL MAILDOWNLOAD
    WHEN result=1 THEN LEAVE
    WHEN result=640 THEN SIGNAL TIMEOUT
END

ZocWorkDir()
This function returns the drive and directory where ZOC's the work files are installed (e.g. phone book).
See also: ZocExeDir

ZocWrite <text>
Write text to screen.  This command is similar to REXX's native SAY command, but it does not place the cursor in the next line after printing the text and it understands control characters like ^M (Enter) or ^[ (ESC).

Example:
CALL ZocWrite "Hello ^[[1m World^[[0m"

ZocWriteln <text>
Write text to screen and skip to the next line.

Example:
CALL ZocWriteln "Hello ^M^J World"

ZocXferShell <command>
OS/2 only: Start an external protocol in a Transfer Shell.
Example:

name= ZocGetFilename("File to upload")
IF name\="##CANCEL##" THEN DO
    CALL ZocXferShell "CD \CKERMIT & CKERMIT -l %ZocHfc% -s "||file
END

ZocXferDosSHell <command>
Start an external protocol in a Transfer DOS-Shell.
Example:

name= ZocGetFilename("File to upload")
IF name\="##CANCEL##" THEN DO
    CALL ZocXferDosShell "C:\DOSCOMM\DSZ\DSZ port 2 sz "||file
END


Common Questions (How-To Guide)

Please also check the Trouble Shooting Guide.

Where do I get the current version of ZOC?
Please click here for places to get updates.

How can I turn off the help window after startup?
By reading it ...

How can I install ZOC on a LAN?
Please check Network.  If you are using IBM LAN-Server/ Requester, you might also want to tune the CHARTIME and CHARWAIT parameters in \IBMLAN\IBMLAN.INI (please ask your LAN administrator for more information).

How can I use the same phone book at home and at work?
Create two options files (maybe named HOMEOPT and WORKOPT) and save them via Options->Save-As.  In WORKOPT you can change the Options->Modem->Dial-String to ATDT 9,^#^M and change whatever else differs (like different modem init strings).  Then set up two ZOC icons on the desktop, one with /O:OPTIONS\WORKOPT and the other with /O:OPTIONS\HOMEOPT in the parameter field.

How can I set ZOC to tone dialing
Change the modem options and set the dialing command to 'ATDT'.

How can I call the German T-Online/BTX service with ZOC
Create a phone book entry and set the device to MODEM/SERIAL or ISDN (use ISDN's BTX-Telematic option).  Enter 01910 as phone number, then set the emulation to CEPT and enable the 'Learn AutoLogin next time' switch. When the login screen is shown, enter your Anschlußkennung.  At the next screen press Enter at the prompt for the Anschlußnummer, enter 0001 as Mitbenutzernummer and enter the password.  After pressing Enter again, select Stop-Learning from the Misc menu.  T-Online's * key can be sent from ZOC's * or F9 key.  The # key can be sent from ZOC's Enter or F10 key.
To access your favourite T-Online pages, you can learn REXX scripts from the Misc menu (it is a good idea to start all scripts with *0# to start from T-Online's main menu).  Of course, you can map the REXX scripts to F-Keys or User-Buttons (see Power Codes).
To wait for an input prompt, use

Example:
Call ZocWait "^Z"

How do I use TELNET or ISDN
Please check the Device Help

How can I use ZOC as a TELNET app. in Netscape Navigator?
Windows: Simply put a call to ZOC in Netscape 3.0's General-Options->Applications->Telnet field like this:  C:\ZOC\ZOC.EXE /TELNET: (of course you have to enter the directory where ZOC is installed on your drive).  In Netscape Communicator 4.0 go to Options->Navigator->Applications->URL Telnet and set it to C:\ZOC\ZOC.EXE /%1
OS/2: Write a CMD file (e.g. C:\ZOC\ZOCTLNET.CMD) which calls ZOC with the %1 parameter (e.g. C:\ZOC\ZOC.EXE %1) and use the name of that CMD file in Netscape as the name of the Telnet application.

How do I install ZOC for Windows and OS/2 on the same machine?
If you have OS/2 and Windows installed on your machine and if you want to share the ZOC configuration files between both installations, you need a hard drive or partition that can be accessed from both operating systems (eg. drive D:).
Then install ZOC for both operating systems on that drive but in different directories (eg. in D:\ZOCWIN and D:\ZOCOS2).  After that, start and configure ZOC for the operating system which you will use mostly.  To use that configuration from the other operating system, modify the ZOC icon there and add a /WD: parameter that points to the other directory:
If you are mainly using ZOC for Windows, put /WD:D:\ZOCWIN into the Parameter field in the ZOC for OS/2 icon.  If you mainly use OS/2, then put D:\ZOCWIN\ZOC.EXE /WD:D:\ZOCOS2 into the target field in the Windows ZOC icon.

How can I use TELNET from the phone book
Here is an example how to set up a phone book entry to the OS2-ShareWare-BBS:

Within ZOC create a phonebook entry as follows:
Name: OS/2 Shareware BBS
Connect To: BBS.OS2BBS.COM
Device: Telnet
Emulation: ANSI

1. Open IAK (under OS/2) or RAS (under Windows) and connect to your provider (SLIP or PPP access)
2. Open ZOC (after IAK/RAS has completed SLIP/PPP connection)
3. ZOC throws an error saying that it couldn't initialize COM1, should it try again?  Say NO (the error can be avoided if you start ZOC with the /DEV:TELNET command line parameter)
4. ZOC finishes loading
5. Tell ZOC to connect to OS/2 Shareware BBS
6. From here on it looks/feels/works just like the telephone (including uploads and downloads).

How can I select more than one page of text when browsing the capture window?
Either make a selection, then go to the next page and make the selection with the Ctrl-key pressed or use Logging->Edit-Capture instead of ZOC's browse window.

How can I run ZOC and OS/2 FaxWorks simultaneously
There is a file called SCRIPT\ZOCEVENT.ZRX which is able to switch off FaxWorks' receive mode when ZOC is started (and switch it back on when ZOC is closed).  Please see the file itself for further instructions.


Common Problems and Questions (Trouble Shooting Guide)

Please also check the PROBLEMS.DOC file for possible problems and solutions and the How-To Guide.

I cannot start ZOC from another directory
Please add the ZOC directory to your LIBPATH statement in OS/2's CONFIG.SYS or, if you are running Windows, add it to the PATH.

Only starting ZOC for the first time after reboot works
This is very likely a problem with your OS/2 comm driver (COM.SYS).  Please try to find an updated version (which exists for OS/2 Warp) or try the shareware SIO.SYS.
Or try to reinstall ZOC into a fresh directory without converting options from an earlier version.

Sometimes ZOC hangs after starting or when sending to the COM port
Try to disable DSR handshake in the Serial-Device options.

ZOC cannot open the COM port while other programs can
Please make sure that the COM port is available by typing MODE COMx (where x is the number of the port) at a command prompt.
If this does not result in an error message, make sure that you typed the com port's name correctly in ZOC.  Especially don't use blank characters between COM and the number.
If you get an error message from MODE COMx make sure the com port is configured correctly in your OS/2 CONFIG.SYS (to get details type HELP COM.SYS at an OS/2 command prompt) or in your Windows control panel (ports).
If the error message appears because the com port is used by the Internet dialer, you can configure ZOC to use Telnet or Named Pipe by default and set the devices in the individual phone book entries.  This way ZOC will not access the com port after starting.

I keep getting a "No CTS from modem" message
To prevent ZOC and the modem to overrun each others buffers at times, both should be configured to support the so called RTS/CTS handshake.  This is especially necessary with transfer speeds of 9600 bps and more.  Unlike some other comm programs, ZOC insists on getting the according signal from the modem if you communicate at speeds higher than 9600 bps. Hence ZOC issues a warning if the CTS signal from the modem cannot be detected.  If you get this warning, please check that your modem is configured to supply the CTS command (eg. by using the modem's factory settings), that you are using a 7-wire cable (and adaptor) between the modem and the PC and that you are using the correct COM-port in Options->Device and/or in Phone-Book->Edit->Device->Device options.

ZOC behaves unreliably when making connections or transferring files
Sometimes this is caused by an interrupt conflict (check your interrupt settings for sound card, ethernet boards and COM.SYS).  There are also known problems with COM.SYS in OS/2 Warp (see file PROBLEMS.DOC).

Sometimes ZOC crashes for no apparent reason
OS/2 only: Please try to delete (or better rename) the file ZOCWAV.DLL in the ZOC directory.  If this helps, please reinstall MMPM.

My modem works properly with other terminal software but not with ZOC
Try using the same modem initialization as in the other terminal package. Or store that modem configuration into the non-volatile memory of the modem (mostly done with AT&W) and use ATZ as the initialization string for ZOC.

Internal Error I0487
This is an OS/2 bug.  Please try to delete (or REM out) a SET command in your CONFIG.SYS (e.g. REM SET GLOSSARY=....) or add an arbitrary set command (e.g. SET ADVICE=IF IN DOUBT, ASK DON SHIMODA). Then reboot and try again.

Error SYS3175 when starting a shell or editor from ZOC or when starting a file transfer
See above (I0487).

I cannot get a Zoom modem to initialize properly
To work with a Zoom modem, please use the modem init string AT&F&C1&K3\N3

I cannot find a way to use TELNET
The Telnet device should be in the device list in Options->Device or Phone-Book->Edit.  However, ZOC does not offer Telnet unless TCP/IP networking is installed.   Under OS/2 this means that the file TCP32DLL.DLL, SO32DLL.DLL and FTPAPI.DLL (for Telnet) must be available in a directory of yur LIBPATH.

ZOC does not show an ISDN device under Windows 95
Under Windows, ZOC needs access to the file CAPI2032.DLL (which is the CAPI V2.0 driver) of your ISDN board.  The directory which contains the file must be listed in the PATH statements in AUTOEXEC.BAT under Windows 95. Please make sure that there are no other CAPI2032.DLL files in your system (the Windows installations sometimes copies one to a Windows system directory). With Teles ISDN boards, the file must be from the driver kit 3.20 or later (earlier Teles drivers did NOT contain correct versions; with Teles you need to have a CAPI2032.DLL that has a size of more than 40.000 Bytes and a file date of 11/96 or later).

ZOC does not show an ISDN-Device under Windows NT
You need CAPI V2.0 drivers from your board manufacturer.  From Teles, these drivers are planned to be released in the first quarter of 1997. Drivers from ELSA were in beta state in January 1997 (but these were already working quite good).

ZOC does not show an ISDN-Device under OS/2
ZOC needs access to the files CAPI.DLL (for CAPI V1.1) or CAPI20.DLL (for CAPI V2.0) which must be supplied from your board manufacturer.  Please make sure that the directories where the files reside are listed in the LIBPATH statement of your CONFIG.SYS

ISDN can be selected, but connections fail
You are probably using a CAPI2032.DLL which does not work with your current drivers, eg. CAPI2032.DLL from Windows, together with drivers from your board. (If you are using a Teles board, the CAPI2032.DLL file must have a size of at least 40.000 bytes and a file date of 11/96 or later.)
Also, please set the communication parameters to STANDARD (there is an Standard button in Options->Settings->Device->ISDN) and save the options. Also make sure, that this kind of setting is made in all your ISDN phone book entries.
If you still experience problems, please try to reinstall your ISDN drivers and make sure that you are using the latest driver kit from your manufacturer (Teles: V3.20 or later for Windows and V3.10 or later for OS/2; ELSA: drivers from 1/97 or later; AVM Fritz: drivers V2.032 or later).

ISDN can be selected, but no AT commands can be entered
This is normal, because ZOC does not simulate a modem, but accesses the ISDN board directly.  To call a BBS, please use the Device->Manual call command, or create a phone book entry.

Teles Windows-Modem devices under Windows do not work
Together with their ISDN boards for Windows 95, TELES offers a list of Windows modems (TAPI modems), which are supposed to be able to connect you using several protocols, among them even analog style services. Our tests have shown these to be rather unreliable (at least at the time when this text was written) with either ZOC or other comm programs, so we assume that it is a problem with the TELES software drivers.

I cannot connect using Windows-Modems (TAPI)
ZOC does not use Window's Local Settings, which means that you have to type the phone number exactly as you want it to be dialled (including digits to get an outside line or to dial long distance).

The phone book does not show up at all
OS/2 only: This sometimes happens when multimedia support is not working or disabled (we are still trying to understand the nature of this problem).

ZOC increases calls and phone cost for several phone book entries at a time
This is a feature to maintain multi phone port BBSs.  Details are described under Name in editing phone book entries.

No characters appear after making a connection
You use a secured transmission and the modem waits to get an OK signal from the computer which does not come. Turn on RTS/CTS in Options->Device.

Zmodem file transfers with the telnet device fail
Please play around with the telnet-options in Options->Device->Device-Opts or Phone-Book->Edit->Device-Setup (especially with the CR/NUL options).

Zmodem uploads to Unix-RZ do not start at all or fail
Try to use the -e, -eb or -v option on Unix's side: rz -e, rz -eb  or rz -v
If your connection is routed through a Xyplex concentrator, there currently is no known method to make Zmodem uploads at all.  You will have to use another protocol -- best choice in this case is probably CKERMIT used from a transfer shell from ZOC (please search the help file for CKERMIT to get details).

Downloads generally work fine, but uploads of large files fail
Probably you are using a high-speed modem but have RTS/CTS disabled. For high-speed transmission both, the modem and ZOC, need to be configured to use RTS/CTS handshaking.

When uploading, ZOC corrects errors only at the end of the transfer
Problem with OS2 only: Please turn off the high priority setting in Options->Transfer Page 2.

The text "CIS-B ENQ received" appears during a session
Your host is sending a code that CompuServe normally uses to initiate file transfers. Go to the Transfer options and disable the enquiry in the CompuServe-B+ setup.  If this problem occurs during CompuServe login, go to the CompuServe setup and disable the item 'Micro Inquiry'.

The cursor keys do not work in some VT102/VT220 applications
You should use the gray cursor keys, not the numeric keypad.  The keypad is used for other purposes by these applications.

I cannot access the F-Macro keys in VT220 emulation
The F-Macros are needed for the emulation of an VT220 terminal.  Please see VT220 in Emulation Options.

Global keyboard redefinition does not work
Please note that the keyboard redefinition takes the NumLock state into account.  So you might have to redefine a key twice (with NumLock on and off).

Sometimes the keyboard quits working while the mouse still works ok
Probably one of the qualifier keys (alt/ctrl/shift) got stuck.  Pressing all these keys once usually helps.

The STANDARD.ZOC options are not used at startup
Maybe you unpacked ZOC without preserving pathnames.  The STANDARD.ZOC file must be in a subdirectory named OPTIONS (and located in your ZOC directory, e.g. C:\TERM\ZOC\OPTIONS).

Whenever I leave the program I get a Carrier Detect warning
Maybe your modem is configured to have the CD signal always on.  Set it to match the CD state (maybe AT&C1) or set the CD signal to 'invalid' in the serial options.

The phone book does not load the options file
You need to enter the path as well as the options file name, e.g. OPTIONS\VTOPTS.

Sizing the ZOC only works in large steps
By default ZOC changes the font size when you size the window.  Since the font is not available in every necessary size ZOC will use a best-fit method and size the window accordingly.  If you do not like this, you can change the sizing behavior in the Window Options.

I miss a full screen mode
There is no character based full screen mode available.  ZOC is a graphical program and uses the benefits of the graphical user interface (like offering icons).  However, you can maximize the ZOC window using the maximize button in the title bar.  This way ZOC will cover the whole screen (you should select a large font if you do this).

Scrolling is slow
Scrolling in an window is generally slower that in full screen mode. There is a scroll speed option in Options->Window.

The ANSI emulation sometimes shows garbage characters
Have you checked if the host is accidentally set to Avatar+ emulation (instead of ANSI)?

Is there a host mode?
Yes.  It is implemented as a REXX program.  To start it select Misc->Start-REXX and select MINIHOST.ZRX.  The program will prompt you for two passwords (for guest and supervisor mode) and will then wait for incoming calls.

After downloads the time setting of files is off by a few hours
Please check the discussion of the TZ environment variable in the starter section of this file or set the 'Ignore time stamp' option in Transfer Options.

If a menu is open when a file transfer ends, ZOC hangs
This is a known problem.  Please avoid this situation.

What does ZOC mean?
The Hitchhikers Guide to the Galaxy might describe ZOC as followed:
zoc (v), to zoc means communicating with other people through the means of extremely sophisticated hard- and software (sophisticated at least from the viewpoint of the ape-descended inhabitants of an extremely unimportant blue planet in an even lesser important part of the galaxy who think that personal computers are a pretty neat pieces of hardware).


Credits

We would like to thank

Frank Burleigh for innumerous suggestions/improvements regarding the help text and the program. Hans-Juergen Rauscher for writing ZOCBK (for ZOC 1.xx). Jay Sottolano for his encouragement in the very early stages of the program. Jim Himmelman for his support on the FIDO network. John McNamara for running the help file through the spell checker twice. Nicole Greiber for proofreading the help file. Rod Smith for his support on the usenet during the 911-affair and later. Richard Ashton for his support on the FIDO net during the 911-affair. Siegfried Bauer for the information about the Telix phon import (in ZOC 3.xx). Thomas Schueppel for helping me to make named pipes work under Windows. Tom Hansen and Jim LaSalle for downloading ZOC from Germany to help me to find the Cirrus driver workaround.

Not to forget all the people who's names got lost in a hard disk havoc who helped ZOC to become a success through their innumerous bug reports and suggestions via email and fax.

And thanks to Douglas Adams, Richard Bach, Jane Roberts, Brian Eno, Frank Zappa, Igor Stravinsky, Philip Glass, Barbra Streisand, Jim Steinman and Meat Loaf, Chivas Brother Ltd, Pizzeria Rimini and several Ceylonese Tea Producers for caring about our mental and physical needs.

Markus Schmidt
Markus Gömmel