08.12.2012 Views

Vlterm Programmer's Reference - Avaya Support

Vlterm Programmer's Reference - Avaya Support

Vlterm Programmer's Reference - Avaya Support

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Vlterm</strong> <br />

Programmer’s <strong>Reference</strong>


Copyright © 1999, Lucent Technologies<br />

All Rights Reserved, Printed in U.S.A.<br />

This is the fifth edition of the <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>, document number 90446-01, written for the<br />

<strong>Vlterm</strong> Software Developer’s Kit.<br />

Notice<br />

Every effort was made to ensure that the information in this guide was complete and accurate at the time of<br />

printing. However, information is subject to change.<br />

Lucent Technologies makes no representation or warranties with respect to the contents of this guide and<br />

disclaims any other express or implied warranties, including implied warranties of merchantability or fitness for<br />

any particular purpose. Lucent Technologies reserves the right to revise this guide without obligation to notify any<br />

person or organization of such revision.<br />

If the supplied software is acquired by an agency or other part of the U.S. Government, the software and all its<br />

accompanying written materials are provided with Restricted Rights. Use, duplication, or disclosure by the<br />

Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and<br />

Workstation Program clause at 48 C.F.R. 252.227-7013 or in subparagraphs (c)(1) and (2) of the Commercial<br />

Computer Software - Restricted Rights clause at 48 C.F.R. 52.227-19, as applicable.<br />

All information contained in or disclosed by this document is considered confidential and proprietary by Lucent<br />

Technologies. By accepting this material the recipient agrees that this material and information contained therein<br />

is held in confidence and in trust. All use, disclosure and/or reproduction of any part of this publication not<br />

specifically authorized by Lucent Technologies is prohibited.<br />

Trademarks<br />

Mosaix Predictive Dialing System is a trademark of Lucent Technologies.<br />

The following are trademarks or registered trademarks of their respective companies or organizations:<br />

Chameleon, Chameleon HostLink, Extra!, InfoSwitch, KEA!, Microsoft, On Demand, PASSPORT, Reflection,<br />

Rumba, Windows, Windows NT, and Unix<br />

Other products and brand names are trademarks or registered trademarks of their respective holders.<br />

Obtaining Products<br />

To learn more about Lucent Technologies products and to order products, contact Lucent Direct, the direct-market<br />

organization of Lucent Technologies Business Communications Systems. Access their web site at<br />

www.lucentdirect.com. Or call the following numbers: customers 1 800 451 2100,<br />

account executives 1 888 778 1880 (voice) or 1 888 778 1881 (fax).<br />

Warranty<br />

Lucent Technologies provides a limited warranty on this product. Refer to the “Limited Use Software License<br />

Agreement” card provided with your package.<br />

Lucent Technologies Web Page<br />

The worldwide web home page for Lucent Technologies is:<br />

http://www.lucent.com


Contents<br />

1 Introduction to <strong>Vlterm</strong><br />

Agent Workstation Features ...................................................................2<br />

Switch Between Windows...............................................................3<br />

Multiple Step Script.........................................................................3<br />

Agent Workstation Software Configuration....................................3<br />

Agent Use Case Scenario ................................................................3<br />

System Requirements ............................................................................4<br />

Mosaix Terminal Emulation Applications .....................................5<br />

Host Terminal Emulation Applications ..........................................5<br />

Inter-Application Communications ................................................5<br />

2 Installing <strong>Vlterm</strong><br />

Installation Methods ..............................................................................9<br />

Command Line Options .........................................................................9<br />

<strong>Vlterm</strong> File <strong>Reference</strong> ..........................................................................10<br />

Core <strong>Vlterm</strong> Executable and Configuration Files ........................10<br />

DDE Configuration Files ..............................................................10<br />

3 Vlkeys.ini Configuration<br />

Toolbar Button Definitions...................................................................11<br />

Syntax ...........................................................................................12<br />

Sample File ...................................................................................14<br />

iii


iv Contents<br />

4 <strong>Vlterm</strong>.ini Configuration<br />

Sample <strong>Vlterm</strong>.ini File ........................................................................ 19<br />

<strong>Vlterm</strong>.ini File Configuration Settings................................................. 22<br />

[GLOBAL] ................................................................................... 22<br />

[SHELL] ....................................................................................... 25<br />

[WIN_TITLE] .............................................................................. 26<br />

[DDE_SESSION] ......................................................................... 26<br />

[FKEY_BUTTONS] .................................................................... 29<br />

[CNPn] ......................................................................................... 30<br />

5 Cut Commands<br />

Emulator Formats ................................................................................ 35<br />

Attachmate KEA! ......................................................................... 35<br />

Attachmate Extra! ........................................................................ 36<br />

Wall Data Rumba ......................................................................... 36<br />

WRQ Reflection ........................................................................... 36<br />

DRV ............................................................................................. 36<br />

ClipCut() .............................................................................................. 37<br />

6 Paste Commands<br />

@x ....................................................................................................... 39<br />

C() ........................................................................................................ 39<br />

ClipCopyBlock() ................................................................................. 40<br />

ClipGet() .............................................................................................. 41<br />

ClipSet() .............................................................................................. 41<br />

Cursor() ............................................................................................... 42<br />

Wall Data Rumba ......................................................................... 42<br />

Attachmate Extra! ........................................................................ 42<br />

CUTn|CVRn ........................................................................................ 43<br />

Date() ................................................................................................... 44<br />

Delay() ................................................................................................. 44<br />

Exit_<strong>Vlterm</strong> ......................................................................................... 45<br />

File() .................................................................................................... 45<br />

Find() ................................................................................................... 46


Contents v<br />

FocusRemain() .....................................................................................47<br />

FormatStr() ...........................................................................................47<br />

FormLoad() ..........................................................................................47<br />

Hide_Fkeys ..........................................................................................48<br />

Hide_Logon .........................................................................................48<br />

Input .....................................................................................................48<br />

LeftStr() ...............................................................................................49<br />

Lookup() ..............................................................................................49<br />

MathOnVars() ......................................................................................50<br />

Msg ......................................................................................................50<br />

Non-Reserved Word ............................................................................50<br />

OIA ......................................................................................................51<br />

Other() ..................................................................................................52<br />

Pause() .................................................................................................53<br />

Release .................................................................................................53<br />

Relink ...................................................................................................53<br />

RightStr() .............................................................................................53<br />

SendKeys .............................................................................................54<br />

SetVarn ................................................................................................54<br />

Parameters .....................................................................................54<br />

Subroutines ....................................................................................55<br />

ShellApp() ............................................................................................58<br />

Show_Fkeys .........................................................................................58<br />

Start_Auto_CNP ..................................................................................59<br />

Stop_Auto_CNP ..................................................................................59<br />

StrCat() .................................................................................................59<br />

TitleCaption .........................................................................................59<br />

ToggleTo() ...........................................................................................60<br />

VARn ...................................................................................................60<br />

Wait() ...................................................................................................60<br />

WaitForKey() .......................................................................................60<br />

WinFocus() ..........................................................................................61


vi Contents<br />

7 Automatic Cut and Paste<br />

Sample Files ......................................................................................... 64<br />

<strong>Vlterm</strong>.ini ..................................................................................... 64<br />

Vlkeys.ini ..................................................................................... 65<br />

8 Creating a DDE.ini File<br />

DDE.ini Files Introduction .................................................................. 67<br />

DDE.ini File Variables ........................................................................ 68<br />

DDE.ini File Sections .......................................................................... 70<br />

[DDE_CUTS] ............................................................................... 70<br />

[DDE_PASTECUTS] .................................................................. 70<br />

[DDE_PVAR] .............................................................................. 70<br />

[DDE_OIAKBD] ......................................................................... 70<br />

[DDE_CURSOR] ......................................................................... 70<br />

[DDE_WAITS] ............................................................................ 71<br />

[DDE_PAUSE] ............................................................................ 71<br />

[DDE_FINDS] ............................................................................. 71<br />

[DDE_OTHER] ........................................................................... 71<br />

[DDE_SENDTHRU] ................................................................... 71<br />

[DDE_SENDFKEYS] .................................................................. 72<br />

[DDE_SENDPFKEYS] keystroke ............................................... 72<br />

Additional Variables ........................................................................... 72<br />

DRV_DDE.ini File Example ............................................................... 72<br />

9 Configuring a Custom Form<br />

Loading a Form ................................................................................... 75<br />

Formn.ini File Setup ............................................................................ 76<br />

[GLOBAL] ................................................................................... 77<br />

[Objectn] ...................................................................................... 79<br />

Sample Form1.ini File ......................................................................... 86<br />

A Using the Format Function<br />

Numeric Formats ................................................................................. 91<br />

Predefined Numeric Formats ....................................................... 92<br />

User-Defined Numeric Formats ................................................... 93


Contents vii<br />

Date and Time Formats ........................................................................96<br />

Predefined Date and Time Formats ...............................................97<br />

User-Defined Date and Time Formats ..........................................97<br />

String Formats ....................................................................................100<br />

B Using the SendKeys Function<br />

Sample Configuration ........................................................................102<br />

Usage .................................................................................................103<br />

C Using the Like Operator .........................................................105<br />

D Emulator Special @x Keys......................................................107<br />

E ASCII and VT100 Control Sequences<br />

ASCII Characters ............................................................................... 111<br />

Numeric Pad ...................................................................................... 111<br />

F Emulator Specifics<br />

Attachmate .........................................................................................113<br />

Netware LAN WS ......................................................................113<br />

EXTRA! version 4.3 ...................................................................115<br />

EXTRA! Personal Client 6.x and<br />

EXTRA! Bundle for TCP/IP Version 6.2 ...................................116<br />

Hummingbird Communications Exceed ............................................121<br />

IBM Personal Communications 3270 ................................................123<br />

Irma 3270 ...........................................................................................124<br />

Single Irma 3270 Session ...........................................................124<br />

Multiple Irma 3270 Sessions ......................................................125<br />

MiniSoft PowerTerm .........................................................................126<br />

Netmanage Chameleon.......................................................................128<br />

HostLink 97 ................................................................................128<br />

Unixlink 97 Version 7.0 .............................................................131<br />

PDSI Psched Software DDE Interface ...............................................133<br />

Persoft SmarTerm ..............................................................................138<br />

Quarterdeck Procomm Plus 32 ..........................................................140<br />

Sendkeys ............................................................................................142


viii Contents<br />

Teknekron On Demand Software DDE Interface ............................. 144<br />

Upstanding Systems FASTerm for Windows ................................... 147<br />

Wall Data Rumba Office ................................................................... 152<br />

WRQ Reflection ................................................................................ 157<br />

WRQ R1 Sample ........................................................................ 158<br />

WRQ R2 Sample ........................................................................ 159<br />

WRQ R8 Reflection for Windows Sample ................................ 159<br />

WRQ R8 Reflection for IBM for Windows 95 Sample ............. 161<br />

Zephyr Development Passport 3270 Client ...................................... 164<br />

G Special EXTRA! Key Sequences ........................................ 169<br />

H Configuring For Driver Files................................................. 173<br />

I Error Messages<br />

STARTUP.BAS Module.................................................................... 175<br />

CONFIG.CNP Procedure Errors................................................. 175<br />

FOCUS_APPS Procedure Errors ................................................ 176<br />

HOST_LINK Procedure Errors .................................................. 176<br />

INIT_CNP Procedure Errors....................................................... 177<br />

FOCUS_APPS Procedure Error.................................................. 178<br />

CNP.BAS Module.............................................................................. 178<br />

CUT_DATA Procedure Error..................................................... 178<br />

PASTE_DATA Procedure Errors ............................................... 178<br />

SendDDEMessage Procedure Error............................................ 179<br />

SEND_KEY Procedure Errors.................................................... 179<br />

SEND_PFKEY Procedure Errors ............................................... 179<br />

SETUP_CNP Procedure Errors .................................................. 180<br />

TOGGLE_HOST Procedure Error.............................................. 180<br />

CP.FRM Module ................................................................................ 180<br />

AUTO_CNP.TIMER Procedure Error........................................ 180<br />

Form.Resize Procedure Errors .................................................... 181<br />

Menu_exit.Click Procedure Error ............................................... 181


Contents ix<br />

FKEYS.FRM Module.........................................................................181<br />

KeyButton.Click Procedure Errors..............................................181<br />

LOGON.FRM Module........................................................................182<br />

cmdLOGON.Click Procedure Errors ..........................................182<br />

Index.................................................................................................183


x Contents


Introduction to <strong>Vlterm</strong> 1<br />

<strong>Vlterm</strong> is a Windows application that runs on agent PCs that connect to a Mosaix<br />

Predictive Dialing System and a host terminal emulator or client application.<br />

<strong>Vlterm</strong> provides a visual interface to select Mosaix system agent features, manage<br />

the focus between the Mosaix system and host windows, and interact with<br />

windows using script commands. Use <strong>Vlterm</strong> to quickly integrate a VT100<br />

emulation window connected to a Mosaix system and an existing customer<br />

character-based emulation window, such as a 3270 terminal emulator.<br />

When the Mosaix system sends outbound call information to an agent<br />

workstation, it sends enough client data for an agent to initiate a conversation with<br />

the customer. However, the agent typically needs to view and update data on a host<br />

computer. To facilitate this host record lookup, <strong>Vlterm</strong> transfers a unique record<br />

identifier from the Mosaix system to a host window.<br />

As an inter-application tool, <strong>Vlterm</strong> can send information between Windows<br />

applications. For example, <strong>Vlterm</strong> can automate user input to a 3270 host system<br />

using data from a Mosaix system screen.<br />

Agents use their existing host connection software along with the Mosaix system<br />

connection software package and a <strong>Vlterm</strong> toolbar as shown in the following<br />

illustration.<br />

1


2 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Agent Workstation Features<br />

The <strong>Vlterm</strong> graphical user interface consists of a toolbar with up to six rows of<br />

twelve buttons located at the bottom of the PC screen. Agents can point and click<br />

with a mouse to select among the 72 possible toolbar buttons to issue commands<br />

to the system. You can also define a function key sequence for each button and<br />

configure it for intercept from the Mosaix system, host, or both. The types of<br />

actions you can configure for each button include:<br />

• Switch between windows<br />

• Initiate special Mosaix system releases<br />

• Issue a line release command (for example, record release, set recall, play<br />

message, or select alternate screen)<br />

• Run a multiple-step script of <strong>Vlterm</strong> commands


Switch Between Windows<br />

Introduction to <strong>Vlterm</strong> 3<br />

An agent can click a toggle button or press a function key sequence to set the focus<br />

to either the Mosaix system or a host window.<br />

Multiple Step Script<br />

You can configure a cut and paste or script button to copy a field of data from the<br />

Mosaix system window, set the focus to the host window, and paste the data into<br />

the host window.<br />

Agent Workstation Software Configuration<br />

You can configure the <strong>Vlterm</strong> toolbar labels, number of rows, window title, and<br />

the action that each button takes when selected. A vlkeys.ini configuration file<br />

controls the look and action of the toolbar. A vlterm.ini file contains configuration<br />

information on the number and types of windows with which to communicate and<br />

the scripts associated with toolbar actions.<br />

A button can issue a simple line release command to the system or run a script that<br />

performs multiple steps such as the following sequence of commands:<br />

1 Release the phone line.<br />

2 Navigate host screens.<br />

3 Input standard comments to the host screen.<br />

4 Release the current record.<br />

5 Set the focus for the session to wait for the next call.<br />

Agent Use Case Scenario<br />

1 An agent double-clicks the Mosaix Agent icon to start <strong>Vlterm</strong>. <strong>Vlterm</strong><br />

launches the specified system and host terminal emulator programs if they<br />

are not already running. <strong>Vlterm</strong> establishes a connection to each of these<br />

windows and displays a toolbar.<br />

2 The agent logs on to the host application and navigates to the record lookup<br />

data screen.<br />

3 The agent toggles to the Mosaix system window, logs on, joins a calling<br />

campaign, and waits to receive calls.


4 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

4 When a call is received, the agent clicks the record lookup button on the<br />

toolbar. <strong>Vlterm</strong> follows a configured script to cut account data from a field<br />

on the Mosaix system screen and query records on the host system. The<br />

focus remains on the host screen for data input.<br />

5 At the end of the conversation, the agent clicks one of the line release types<br />

on the toolbar.<br />

6 The agent finishes the host data input and releases the record to receive a<br />

new call.<br />

System Requirements<br />

The agent’s workstation must be a Microsoft Windows PC with sufficient system<br />

resources to run both a Telnet connection VT100 emulator for the Mosaix system<br />

and a host communications window. Check with the emulator vendors for<br />

recommended system requirements.<br />

<strong>Vlterm</strong> requires Windows 95, Windows 98 or Windows NT. <strong>Vlterm</strong> can<br />

communicate with Windows 95, 98, and NT 32-bit emulator applications if they<br />

can accept incoming data from another application using one of the following<br />

communications methods:<br />

• DDE<br />

• OLE automation<br />

• HLLAPI<br />

• SendKeys<br />

With the exception of SendKeys, implementation of each inter-application<br />

communication method is specific to individual emulator vendors.<br />

This document lists the major emulator vendor software packages that <strong>Vlterm</strong><br />

supports. Other software must be evaluated. Software modifications may be<br />

required for an unsupported emulator.


Mosaix Terminal Emulation Applications<br />

Introduction to <strong>Vlterm</strong> 5<br />

The Mosaix system terminal emulation application must be a DEC VT100<br />

emulation mode software product. The following list identifies three such<br />

applications:<br />

• Wall Data Rumba for UNIX/VAX<br />

• WRQ Reflection R2<br />

• Attachmate KEA! 340<br />

The emulator must support a TCP/IP Telnet connection type and have a DDE<br />

server interface, or the emulator, such as the Microsoft telnet.exe application, must<br />

work with SendKeys.<br />

Host Terminal Emulation Applications<br />

The type of host system and the type of terminals that can attach to the host<br />

determine the emulator software choice. If the host is an IBM mainframe, you<br />

usually use a 3270 series terminal emulator such as the following options:<br />

• Wall Data Rumba for Mainframe<br />

• Attachmate EXTRA! for Windows<br />

The IBM AS/400 minicomputer uses 5250 terminal emulation, such as Wall<br />

Data’s Rumba for AS/400.<br />

Some emulation vendors offer suites that integrate multiple terminal emulation<br />

types such as VT100, 3270, and 5250 into one package. Wall Data Rumba Office<br />

and Attachmate EXTRA! Enterprise are examples of these suites.<br />

Inter-Application Communications<br />

To integrate the Mosaix system at the agent desktop level with existing customer<br />

applications, some means of communications must exist. In broad terms, there are<br />

two options in the Microsoft Windows environment for applications to<br />

communicate.<br />

The first option is to use an Application Programming Interface (API) between the<br />

Mosaix system application and the customer application. For example, a customer<br />

using the Wall Data Rumba terminal emulation product can use the existing<br />

<strong>Vlterm</strong> capabilities to exchange data using Dynamic Data Exchange (DDE). DDE


6 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

is an API that Microsoft developed as a means to copy information between two<br />

Windows applications.<br />

A second option to consider if an API is not available is to simulate keystrokes<br />

with SendKeys.<br />

SendKeys<br />

<strong>Vlterm</strong> can send keystrokes to a Windows application to which <strong>Vlterm</strong> linked<br />

during startup if the emulator can accept keystrokes from a source other than the<br />

keyboard.<br />

Use the SendKeys method to send cut and paste information to a window that does<br />

not support an API server. To implement SendKeys, a sending application must<br />

set the Windows focus to the receiving application, then issue the SendKeys<br />

command to simulate the keystrokes needed to send the characters.<br />

There are limitations with SendKeys. SendKeys can’t pace the speed at which it<br />

sends information to the application. For example, you must insert fixed length<br />

pauses between SendKeys commands to allow the receiving application to display<br />

the next screen after a user presses Enter.<br />

In addition, after the focus has been sent to an application, SendKeys assumes the<br />

focus does not change. During a send operation in a multi-tasking environment<br />

(for example, Windows NT), another application, such as a print complete<br />

message window, can take the focus.<br />

The need to interact with the host window may involve more than sending an<br />

account number by simulation keystrokes. For 3270 host windows, for example,<br />

keyboard input is inhibited for a variable amount of time after pressing Enter<br />

(indicated by an OIA keyboard lock status).<br />

SendKeys would not be a sufficient solution if script commands must follow a<br />

script command that generates an OIA lock. An API solution is the more robust<br />

solution, although it generally takes more time to implement.<br />

DDE<br />

Dynamic Data Exchange is a method of communicating between Microsoft<br />

Windows applications. <strong>Vlterm</strong> is best suited to use this communication method.<br />

<strong>Vlterm</strong> acts as the DDE client; the host emulation software must be able to operate<br />

as a DDE server.


OLE<br />

Introduction to <strong>Vlterm</strong> 7<br />

If you need to receive status information from the host window or perform a<br />

reverse cut and paste from the host to the Mosaix system for inbound update, use<br />

DDE instead of simulating keystrokes.<br />

The commands to send information from client to server vary between emulation<br />

vendors. <strong>Vlterm</strong> uses modifiable DDE configuration files to define what DDE<br />

commands must be sent to an emulator. DDE can be configured using text-based<br />

.ini files to connect to, receive from, and send data to a DDE server application.<br />

Object linking and embedding (OLE) is a Microsoft Windows protocol that<br />

defines a method to exchange information between processes. Some 32-bit<br />

emulation applications written for Windows 95, 98, or NT support OLE.<br />

A specific OLE interface must be created for each application with which <strong>Vlterm</strong><br />

communicates. An OLE interface is supported for Attachmate EXTRA! Personal<br />

Client for Windows 95/NT.


8 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Installing <strong>Vlterm</strong> 2<br />

Installation Methods<br />

The <strong>Vlterm</strong> installation includes all the files associated with the <strong>Vlterm</strong><br />

application and a pair of configuration (*.ini) files that a Lucent representative sets<br />

up based on the customer’s environment. There are three <strong>Vlterm</strong> installation<br />

methods. Regardless of which method you use, you need to place the customized<br />

configuration files on each agent workstation.<br />

Install <strong>Vlterm</strong> using any of the following methods:<br />

• Install <strong>Vlterm</strong> from the CD-ROM to a PC hard drive. Copy the mirror image<br />

of the hard drive to the agent workstations.<br />

• From each agent PC, access the <strong>Vlterm</strong> install routine from a shared network<br />

CD-ROM drive. Copy the customized configuration files to each agent<br />

workstation.<br />

• Install <strong>Vlterm</strong> onto each agent workstation directly from the <strong>Vlterm</strong><br />

CD-ROM. Copy the customized configuration files to each agent<br />

workstation.<br />

Command Line Options<br />

The <strong>Vlterm</strong> setup process automatically creates a Start menu option for <strong>Vlterm</strong>. If<br />

the <strong>Vlterm</strong> configuration files have non-standard names (for example, if you<br />

renamed the vlterm.ini and vlkeys.ini files), you can modify the Start menu option<br />

to include the specially named configuration files by setting the option’s<br />

associated properties:<br />

[path]vlterm.exe [“path\vlterm.ini”] [“path\vlkeys.ini”]<br />

<strong>Vlterm</strong> requires that you place quotation marks around each argument in the<br />

vlterm.exe command line (don’t include the brackets).<br />

9


10 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

The location of the <strong>Vlterm</strong> shortcut depends on your system’s operating system:<br />

• Windows 95<br />

c:\Windows\Start Menu\Programs\<strong>Vlterm</strong><br />

• Windows 98<br />

c:\Windows\Start Menu\Programs\<strong>Vlterm</strong><br />

• Windows NT<br />

c:\Winnt\Profiles\All Users\Start Menu\Programs\<strong>Vlterm</strong><br />

<strong>Vlterm</strong> File <strong>Reference</strong><br />

The following sections list <strong>Vlterm</strong>’s executable and configuration files.<br />

Core <strong>Vlterm</strong> Executable and Configuration Files<br />

VLTERM.EXE<br />

EXTDRV.EXE<br />

VLKEYS.INI<br />

VLTERM.INI<br />

DDE Configuration Files<br />

ACC_DDE.INI IRM_DDE.INI REF_DDE.INI<br />

CAB_DDE.INI KEA_DDE.INI RUM_DDE.INI<br />

DRV_DDE.INI MIN_DDE.INI RUM1_DDE.INI<br />

EXT_DDE.INI OND_DDE.INI SMA_DDE.INI<br />

FACE_DDE.INI PDSI_DDE.INI SPRY_DDE.INI<br />

FAS_DDE.INI PRO_DDE.INI TCP_DDE.INI<br />

HST_DDE.INI PTW_DDE.INI TER_DDE.INI<br />

IBM_DDE.INI<br />

IE4_DDE.INI<br />

QWS_DDE.INI WIN_DDE.INI


Vlkeys.ini Configuration 3<br />

The vlkeys.ini configuration file contains the parameters that control the look and<br />

actions for the <strong>Vlterm</strong> toolbar buttons. The vlterm.exe program reads the<br />

vlkeys.ini and vlterm.ini configuration files during startup.<br />

You can also associate function key sequences with toolbar buttons. This feature<br />

allows customers to use keystrokes instead of PC mouse operations in a terminal<br />

environment. A third-party tool from Desaware translates a function key sequence<br />

into the appropriate action.<br />

You can display up to six rows of twelve buttons. The 72 possible function key<br />

equivalents are organized by toolbar row.<br />

Toolbar Row # Key State Function Key<br />

1st row Unshifted F1-F12<br />

2nd row Shift F1-F12<br />

3rd row Control F1-F12<br />

4th row Alt F1-F12<br />

5th row Control+Shift F1-F12<br />

6th row Control+Alt F1-F12<br />

Toolbar Button Definitions<br />

Toolbar button definitions appear in the [VOICELINK_KEYS] section of the<br />

vlkeys.ini file.<br />

11


12 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Syntax<br />

Action<br />

For each toolbar button, the vlkeys.ini file contains a KEYn= definition line that<br />

includes six parameters.<br />

KEYn=action,session,label,focus~tooltip~color<br />

The commas separating the first four parameters in the key1 through key72<br />

configuration lines must be included. The remaining two parameters are optional.<br />

Examples<br />

key1=CNP1,0,Cut/Paste,1~Host record lookup~12<br />

key2=Ay,0,COM PTP,0~Co-Maker Promise to Pay~7<br />

key3=TGL9,9,Toggle,0~Switch focus between sessions~1<br />

key4=FRM1,9,Misc,0~Menu of misc release codes~7<br />

key5=CNP4,0,DONE,0~Release Record~4<br />

When you define a toolbar button, you can choose between five actions:<br />

• TGLn-toggle to session n<br />

The variable n specifies a session number. Use TGL9 to toggle through each<br />

of the sessions in succession rather than to a specific session.<br />

• CNPn-cut and paste n<br />

The variable n specifies a cut and paste script that is defined in the vlterm.ini<br />

file. See “[CNPn]” on page 30 for more information about cut and paste<br />

scripts.<br />

• A release code to send to the system<br />

For release codes, a CTRL A (SOH, ASCII hex 01, or ^A) precedes the key<br />

sequence value and a CTRL M (CR, ASCII hex 13, or ^M) follows it. In the<br />

previous example for key2, <strong>Vlterm</strong> sends the sequence ^AA^M to the Mosaix<br />

system. You can include a “y” after the release code, as in the key2 example,<br />

to automatically respond to the Mosaix system Are you sure? prompt.<br />

• FRMn-load a user-definable form<br />

For more information about custom forms, see Chapter 9, “Configuring a<br />

Custom Form,” beginning on page 75.


Vlkeys.ini Configuration 13<br />

Session<br />

The session parameter identifies the session in which <strong>Vlterm</strong> intercepts the<br />

function key. In other sessions, the function key is ignored. This parameter must<br />

be a valid session number. Use 0 for the Mosaix system emulator session, 1<br />

through n (host session number) for a host emulator session, or 9 to intercept the<br />

key in all <strong>Vlterm</strong> sessions.<br />

Label<br />

Focus<br />

The label parameter defines the text that appears on the button. Labels need to fit<br />

in the limited space on the toolbar button, typically seven characters. Use<br />

lowercase characters where possible; uppercase characters take more space.<br />

The focus parameter identifies the session that has the Windows focus at the end<br />

of the command. Use 0 for the Mosaix system emulator session or 1 through n<br />

(host session number) for a host emulator session. If you don’t define the focus<br />

parameter, the focus does not change.<br />

Tooltip<br />

A tool tip is text that appears when the mouse cursor is placed over a button when<br />

the <strong>Vlterm</strong> toolbar has the focus. Use this parameter for a longer description for<br />

the button than what the label allows. Tool tips are optional, and the last tilde (~)<br />

is required only if you set the color parameter.<br />

Color<br />

The color property defines the background color for the button on the GUI toolbar.<br />

Setting a button background color is optional, and the tilde (~) is not required if<br />

you don’t define a color. The following table contains color codes.


14 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Sample File<br />

NOTE The default color is set to 0 (black), which is the same as the default text<br />

color. Change the background color of the button to avoid a black-on-black<br />

toolbar button.<br />

0-Black 8-Gray<br />

1-Blue 9-Light Blue<br />

2-Green 10-Light Green<br />

3-Cyan 11-Light Cyan<br />

4-Red 12-Light Red<br />

5-Magenta 13-Light Magenta<br />

6-Yellow 14-Light Yellow<br />

7-White 15-Bright White<br />

To change the text color, use the Windows Display Properties, Font setting. The<br />

text change is workstation-wide, not toolbar button specific.<br />

; Generic keys<br />

; <strong>Vlterm</strong><br />

[VOICELINK_KEYS]<br />

; keyn=6 fields, first 4 separated by commas, last 2 by tilde:<br />

;; Unshifted<br />

; key1 through key12 correspond to F1 - F12<br />

Key1=TGL9,0,Toggle,~Switch focus between windows~7<br />

key2=CNP1,0,GetRec,~Get host record lookup~7<br />

key3=B,0,Done,~Get next Mosaix record~7<br />

key4=C,0,SetRcl,0~Set a Mosaix time and date recall~7<br />

key5=D,0,RclRel,0~Recall line release~7<br />

key6=E,0,Trnsfr,0~Transfer call~7<br />

key7=F,0,TrnRel,0~Transfer release~7<br />

key8=G,0,Dial,~Telephone dial command menu~7<br />

key9=H,0,MDial,~Managed dial command menu~7


key10=I,0,Misc,~Misc command menu~7<br />

key11=J,0,,~~7<br />

key12=K,0,Logout,~Log out of Mosaix~7<br />

; Shifted<br />

; key13 through key24 correspond to ShF1 - ShF12<br />

key13=L,0,Rel A,1~Line release A~7<br />

key14=M,0,Rel B,1~Line release B~7<br />

key15=N,0,Rel C,1~Line release C~7<br />

key16=O,0,Rel D,1~Line release D~7<br />

key17=P,0,Rel E,1~Line release E~7<br />

key18=Q,0,Rel F,1~Line release F~7<br />

key19=R,0,Rel G,1~Line release G~7<br />

key20=S,0,Rel H,1~Line release H~7<br />

key21=T,0,Rel I,1~Line release I~7<br />

key22=U,0,Rel J,1~Line release J~7<br />

key23=V,0,Rel K,1~Line release K~7<br />

key24=W,0,Rel L,1~Line release L~7<br />

Vlkeys.ini Configuration 15<br />

; Control<br />

; key25 through key 36 correspond to CtlF1 - CtlF12<br />

key25=X,,,~~<br />

key26=Y,,,~~<br />

key27=Z,,,~~<br />

key28=a,,,~~<br />

key29=b,,,~~<br />

key30=c,,,~~<br />

key31=d,,,~~<br />

key32=e,,,~~<br />

key33=f,,,~~<br />

key34=g,,,~~<br />

key35=h,,,~~<br />

key36=i,,,~~


16 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

; Alt<br />

; key37 through key 48 correspond to AltF1 - AltF12<br />

key37=j,,,~~<br />

key38=k,,,~~<br />

key39=l,,,~~<br />

key40=m,,,~~<br />

key41=n,,,~~<br />

key42=o,,,~~<br />

key43=p,,,~~<br />

key44=q,,,~~<br />

key45=r,,,~~<br />

key46=s,,,~~<br />

key47=t,,,~~<br />

key48=u,,,~~<br />

;key49 through key60<br />

key49=,0,,0~~7<br />

key50=,0,,0~~7<br />

key51=,0,,0~~7<br />

key52=,0,,0~~7<br />

key53=,0,,0~~7<br />

key54=,0,,0~~7<br />

key55=,0,,0~~7<br />

key56=,0,,0~~7<br />

key57=,0,,0~~7<br />

key58=,0,,0~~7<br />

key59=,0,,0~~7<br />

key60=,0,,0~~7<br />

;key61 through key 72<br />

key61=,0,,0~~7<br />

key62=,0,,0~~7<br />

key63=,0,,0~~7<br />

key64=,0,,0~~7


key65=,0,,0~~7<br />

key66=,0,,0~~7<br />

key67=,0,,0~~7<br />

key68=,0,,0~~7<br />

key69=,0,,0~~7<br />

key70=,0,,0~~7<br />

key71=,0,,0~~7<br />

key72=,0,,0~~7<br />

Vlkeys.ini Configuration 17


18 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


<strong>Vlterm</strong>.ini Configuration 4<br />

The vlterm.ini configuration file provides most of the specific information about<br />

the operating environment. For example, vlterm.ini includes parameters that<br />

control the emulator applications that must be started, the window title of each<br />

emulator window, specifications to communicate with an emulator, and the names<br />

of other .ini files. In addition, any script commands are organized within this<br />

configuration file as CNP sections.<br />

Standard Windows .ini file conventions are used. Sections enclosed in brackets [ ]<br />

can appear in any order within the file. All entries are unique; <strong>Vlterm</strong> reads them<br />

individually and they can appear in any order within the section. To include spaces<br />

in an entry, enclose the value following the equal sign in quotation marks (“ ”).<br />

Duplicate keywords or missing required entries generate an error message.<br />

Entries in the .ini files are not case sensitive. You can add comments by starting a<br />

line with a semi-colon or inserting a semi-colon in the middle of a line.<br />

NOTE Certain Windows versions have problems reading .ini configurations if<br />

spaces are used (instead of tabs) between configuration items or if a comment is<br />

startedonthesameline.<br />

The rest of this chapter contains a sample vlterm.ini file and descriptions of the<br />

sections in the vlterm.ini file.<br />

Sample <strong>Vlterm</strong>.ini File<br />

[GLOBAL]<br />

DEBUG=OFF<br />

MAX_SESSIONS=1<br />

MAX_CUTS=5<br />

MAX_PASTES=10<br />

19


20 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

NUMBER_CNPS=27<br />

NUMBER_VARS=15<br />

AUTO_INTERVAL=5<br />

AUTO_ENABLED=N<br />

Errorlog=N<br />

ShowSplashScreen=Y<br />

FunctionKeys=Y<br />

TblName=C:\program files\vlterm\table.txt<br />

[SHELL]<br />

HTERM0=C:\Progra~1\WallData\VT\Rumbavt.exe<br />

C:\Progra~1\WallData\VT\mosaix.WDU<br />

S_DELAY0=3<br />

HTERM1=C:\Progra~1\WallData\mframe\Rumbadsp.exe<br />

C:\Progra~1\WallData\mframe\host.WDU<br />

S_DELAY1=3<br />

[WIN_TITLE]<br />

HWIN0=Mosaix*<br />

HWIN1=Host*<br />

[DDE_SESSION]<br />

DDE_TIMEOUT=5<br />

DDE_DELAY0=3<br />

HOST_SERVER0=rumbavt<br />

HOST_TOPIC0=Mosaix.vtp<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=RUM_DDE.INI<br />

DDE_DELAY1=3<br />

HOST_SERVER1=rumbadsp


HOST_TOPIC1=SESSIONA.dsp<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=RUM_DDE.INI<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS = Y<br />

KEYS_FILE=<br />

FKEYS_ON_TOP=Y<br />

CAPTION=<strong>Vlterm</strong> for Rumba<br />

DISPLAY_TOOLTIPS=Y<br />

FKEYS_POSITION=Bottom<br />

ROW1=Y<br />

ROW2=Y<br />

ROW3=N<br />

ROW4=N<br />

ROW5=N<br />

ROW6=N<br />

[CNP1]<br />

CNP_NAME=Host Lookup<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

CNP_TYPE=2<br />

AUTO_CUT_COMPARE=<br />

NUMBER_CUT_COMMANDS=2<br />

NUMBER_PASTE_COMMANDS=6<br />

; row1, col1 row2, col2<br />

CUT_CMD1=(2,19,2,36)<br />

CUT_CMD2=(8,11,8,22)<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=@E<br />

<strong>Vlterm</strong>.ini Configuration 21


22 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

PASTE_CMD3=OIA,*0*<br />

PASTE_CMD4=@T<br />

PASTE_CMD5=C(2)<br />

PASTE_CMD6=@E<br />

; END OF VLTERM.INI<br />

<strong>Vlterm</strong>.ini File Configuration Settings<br />

[GLOBAL]<br />

The vlterm.ini file contains several sections. Each section contains configuration<br />

settings. The following sections identify the sections and the corresponding<br />

settings.<br />

DEBUG<br />

DEBUG=[OFF|ON]<br />

The DEBUG setting lets you choose to use (ON) or suspend (OFF) tight error<br />

checking of the vlkeys.ini and vlterm.ini files during <strong>Vlterm</strong> startup. For example,<br />

if you disable DEBUG, <strong>Vlterm</strong> allows for mismatched values between the<br />

NUMBER_PASTE_COMMANDS= value and the actual number of paste<br />

command lines.<br />

Set the Debug value in all uppercase. For example:<br />

DEBUG=OFF<br />

MAX_SESSIONS<br />

MAX_SESSIONS=n<br />

MAX_SESSIONS identifies the number of sessions <strong>Vlterm</strong> controls (0–8). The<br />

Mosaix system session is 0. If you communicate with one host, enter<br />

MAX_SESSIONS=1. This is a required field.


<strong>Vlterm</strong>.ini Configuration 23<br />

MAX_CUTS<br />

MAX_CUTS=n<br />

MAX_CUTS identifies the maximum number of cut commands in any individual<br />

CNP section. Use this setting to allocate dynamic storage arrays for the<br />

commands. The MAX_CUTS value must be greater than or equal to the number<br />

of cut commands you define. The default is 10.<br />

MAX_PASTES<br />

MAX_PASTES=n<br />

MAX_PASTES identifies the maximum number of paste commands in any<br />

individual CNP. Use this setting to allocate dynamic storage arrays for the<br />

commands. The MAX_PASTES value must be greater than or equal to the number<br />

of paste commands you define. The default is 15.<br />

NUMBER_CNPS<br />

NUMBER_CNPS=n<br />

The NUMBER_CNPS value identifies the highest CNPn section number. For<br />

example, if you define three CNP sections, set NUMBER_CNPS to 3. The default<br />

is 1.<br />

NOTE The value for NUMBER_CNPS must match the number of CNPn<br />

sections that you define.<br />

AUTO_INTERVAL<br />

AUTO_INTERVAL=n<br />

AUTO_INTERVAL identifies the timer interval in seconds for automatically<br />

executing any CNP with CNP_TYPE=1, an automatic type CNP. The default is 3<br />

seconds.<br />

AUTO_ENABLED<br />

AUTO_ENABLED=[Y|N]<br />

AUTO_ENABLED lets you specify whether or not the timer for CNPs with<br />

CNP_TYPE=1 is enabled at startup. In many cases, the emulator sessions are not<br />

on the correct screen for the automatic CNP when <strong>Vlterm</strong> starts. The agent may


24 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

have to logon and navigate to the start screen before the timer can be enabled. The<br />

agent can enable the timer using a CNP script that uses the START_AUTO_CNP<br />

paste command.<br />

NUMBER_VARS<br />

NUMBER_VARS=n<br />

NUMBER_VARS identifies the number of global variables you define, based on<br />

the number of variables you need for the CNP sections. The default is 0. You can<br />

add variables to the vlterm.ini as VAR1 through VARn or as a SetVarn paste<br />

command, or the agent can enter the variables using the INPUT paste command.<br />

You can use SetVarn to conditionally set a variable from cut data, then refer to the<br />

variable in other CNP sections.<br />

VARn<br />

VARn=variable<br />

VARn allows you to define an initial value for a global variable. n is the global<br />

variable number. The variable value can be any text.<br />

ShowSplashScreen<br />

ShowSplashScreen=[Y|N]<br />

The default, Y, shows the splash screen at startup.<br />

TblName<br />

TblName=C:\Program Files\<strong>Vlterm</strong>\table.txt<br />

TblName identifies the path and file name for the file that contains lookup data.<br />

Configure this setting if you use the paste command Lookup(). The lookup file<br />

must be comma delimited. Do not specify a file name if you are not using the<br />

Lookup() function. The default is no file name.


<strong>Vlterm</strong>.ini Configuration 25<br />

ERROR_LOG<br />

ERROR_LOG=[Y|N]<br />

The ERROR_LOG option indicates whether or not <strong>Vlterm</strong> activates an error log.<br />

Y activates the error log. N inactivates the error log. The default value is N.<br />

When activated, <strong>Vlterm</strong> writes error messages to the vlterr.log, which is located in<br />

the same directory as the <strong>Vlterm</strong> executable (vlterm.exe).<br />

FunctionKeys<br />

FunctionKeys=[Y|N]<br />

FunctionKeys allows you to disable the function key intercept. A value of Y<br />

enables function key intercept. A value of N disables function key intercept. The<br />

default value is Y.<br />

With function key intercept enabled, each time an agent uses a PC keyboard<br />

function key, <strong>Vlterm</strong> evaluates the key against the vlkeys.ini configuration file<br />

settings to determine the corresponding user-defined action.<br />

[SHELL]<br />

HTERMn<br />

HTERMn=command_line<br />

HTERMn defines the command line that starts a session. Define one HTERMn<br />

line for each session that <strong>Vlterm</strong> controls. n is the session number. The Mosaix<br />

system must be session 0.<br />

The command line contains the path, executable file (.exe) name, and the session<br />

profile name. This is the same command that you would use to start the session<br />

from the Windows Start menu Run command. HTERMn is a required field.<br />

Example with short file names:<br />

HTERM0=C:\Progra~1\WallData\VT\Rumbavt.exe<br />

C:\Progra~1\WallData\VT\mosaix.WDU<br />

Example with long file names:<br />

HTERM0=C:\Program Files\WallData\VT\Rumbavt.exe C:\Program<br />

Files\WallData\VT\mosaix.WDU


26 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

S_DELAYn<br />

S_DELAYn=m<br />

S_DELAYn lets you set a value (in seconds) that causes a delay between<br />

launching the HTERMn session and the next operation. n is the session number.<br />

m is the number of seconds to delay.<br />

This is an optional parameter that you may need to use with slower systems or<br />

during remote testing over dial-up lines when you need to wait for the HTERMn<br />

application to start. The default is 3. If the S_DELAY value is greater than 60,<br />

<strong>Vlterm</strong> changes the value to 3.<br />

[WIN_TITLE]<br />

HWINn<br />

HWINn=window title text<br />

HWINn identifies a sessions window title. n is the session number.<br />

The text must exactly match the running emulator title so that <strong>Vlterm</strong> can identify<br />

with which windows to communicate. Spacing must be exact. The Windows title<br />

bar uses proportional fonts and compresses spaces making it difficult to determine<br />

the exact number of spaces present. The exact Windows title may change between<br />

release versions of an emulator vender. HWINn is a required field for each<br />

session.<br />

[DDE_SESSION]<br />

USE_DDEn<br />

USE_DDEn=[Y|N]<br />

USE_DDEn specifies whether a session uses DDE as its method of<br />

communication. n is the session number.<br />

If you set USE_DDEn to Y, the session to which <strong>Vlterm</strong> communicates must<br />

support DDE. When you use DDE, you can use any of the commands described<br />

in Chapter 5, “Cut Commands,” beginning on page 35 and Chapter 6, “Paste<br />

Commands,” beginning on page 39.


<strong>Vlterm</strong>.ini Configuration 27<br />

If the session does not use DDE as its method of communication, set USE_DDEn<br />

to N. <strong>Vlterm</strong> bypasses the remaining DDE section for this session. For example,<br />

set USE_DDEn to N (USE_DDE1=N) if the terminal emulator does not support<br />

DDE and you are using SendKeys functionality to send information to that<br />

emulator. When you don’t use DDE, you can use a limited set of cut and paste<br />

commands. See Appendix B, “Using the SendKeys Function,” beginning on page<br />

101 for a list of available SendKeys commands.<br />

The default is Y (indicating that the session uses DDE).<br />

HOST_SERVERn<br />

HOST_SERVERn=application name<br />

HOST_SERVERn identifies an emulators DDE application name. n is the session<br />

number.<br />

<strong>Vlterm</strong> uses HOST_SERVERn as the first of two DDE parameters required to<br />

specify a DDE server. It is typically the executable name.<br />

The application name is unique to each emulator.<br />

Emulator Application Name<br />

Rumba for the VAX rumbavt<br />

Rumba for the Mainframe rumbadsp<br />

RumbafortheAS/400 rumbawsf<br />

KEATerm 420 kt420<br />

KEATerm 340 kt340<br />

Reflection R2 r2win<br />

Reflection R4 r4win<br />

Reflection R8 r8win<br />

Irma Mainframe Display kt420


28 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

HOST_TOPICn<br />

HOST_TOPICn=profile name/identifier<br />

<strong>Vlterm</strong> uses HOST_TOPICn as the second of two DDE parameters required to<br />

specify a DDE server. n is the <strong>Vlterm</strong> session number. HOST_TOPICn is often the<br />

emulator profile name.<br />

The profile name or identifier value varies by emulator.<br />

Emulator Profile Name or Identifier<br />

Rumba for the VAX profile.vtp<br />

Rumba for the Mainframe profile.dsp<br />

Rumba for the AS/400 profile.wsf<br />

Reflection R2 RCL<br />

Reflection R8 CONTROL<br />

KEAterm 340/420 macro<br />

IRMA for windows SESSIONA (or B, C, etc. for session)<br />

DDE_TIMEOUT<br />

DDE_TIMEOUT=n<br />

DDE_TIMEOUT identifies the number of seconds before a DDE request times<br />

out. The default is 10 seconds. You may need to increase this number if host<br />

response time is unusually high.<br />

DDE_DELAYn<br />

DDE_DELAYn=m<br />

DDE_DELAYn defines for each session the number of seconds in a wait loop. n<br />

is the session number.<br />

Typically, this delay is not required. However, if a session is slow to respond for<br />

any reason, increase the number. The default is 3 seconds.


<strong>Vlterm</strong>.ini Configuration 29<br />

DDE_CONFIG_SESSIONn<br />

DDE_CONFIG_SESSIONn=file_dde.ini<br />

DDE_CONFIG_SESSIONn specifies the name of the DDE host configuration file<br />

for each emulator session with which <strong>Vlterm</strong> must communicate. n is the session<br />

number.<br />

vlterm.ini contains the DDE commands needed for each of the macro commands<br />

that interact with an emulator. More than one session can use the same file, or you<br />

can create a different file for each session even if the sessions use the same<br />

emulator.<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS<br />

DISPLAY_FKEYS=[Y|N]<br />

Y displays the function key toolbar. N does not display the toolbar. This is a<br />

required field.<br />

FKEYS_ON_TOP<br />

FKEYS_ON_TOP=[Y|N]<br />

FKEYS_ON_TOP determines whether a Windows API is used to keep the toolbar<br />

as the topmost window. You can use the SHOW_FKEYS and HIDE_FKEYS<br />

paste commands to dynamically change whether the toolbars are visible (for<br />

example, to hide them in selected sessions). FKEYS_ON_TOP is a required field.<br />

CAPTION<br />

CAPTION=title<br />

CAPTION sets the title on the main <strong>Vlterm</strong> button bar. The default title is “ ” or<br />

blank.


30 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

ROWn<br />

ROWn=[Y|N]<br />

ROWn determines which rows of the toolbar are visible. n is the number of a row<br />

of buttons (1–6).<br />

A value of Y displays the row. A value of N hides the row. The default is N. The<br />

following example tells <strong>Vlterm</strong> to display only the first two toolbar rows.<br />

ROW1=Y<br />

ROW2=Y<br />

ROW3=N<br />

ROW4=N<br />

ROW5=N<br />

ROW6=N<br />

Any rows can be omitted; the remaining rows are repositioned. <strong>Vlterm</strong> sizes the<br />

FKEYS form to the width of the screen for the current resolution.<br />

DISPLAY_TOOLTIPS<br />

DISPLAY_TOOLTIPS=[Y|N]<br />

DISPLAY_TOOLTIPS indicates whether tooltips appear when the Fkeys form<br />

has the focus. The default Y. You can activate this option from the pop-up menu<br />

on the toolbar form.<br />

FKEYS_POSITION<br />

FKEYS_POSITION=[TOP|BOTTOM]<br />

FKEYS_POSITION determines the starting position of the toolbar, either at the<br />

top or bottom of the screen. The default location is BOTTOM.<br />

[CNPn]<br />

CNPn sections identify a cut and paste script to execute. n specifies a number, 1<br />

through n. The maximum value for n is the value of NUMBER_CNPS in the<br />

[GLOBAL] section.


<strong>Vlterm</strong>.ini Configuration 31<br />

NUMBER_CUT_COMMANDS<br />

NUMBER_CUT_COMMANDS=n<br />

NUMBER_CUT_COMMANDS specifies the number of CUT_CMDs to execute.<br />

This is a required field.<br />

NUMBER_PASTE_COMMANDS<br />

NUMBER_PASTE_COMMANDS=n<br />

NUMBER_PASTE_COMMANDS specifies the number of PASTE_CMDs to<br />

execute. Gradually incrementing the number of commands and verifying partial<br />

results is a good way to test complex sequences. This is a required field.<br />

CUT_SESSION<br />

CUT_SESSION=n<br />

CUT_SESSION specifies the host session number from which to cut. The Mosaix<br />

system session is always 0. To cut from different sessions with a single agent<br />

command, use the CNPn paste command to branch to another [CNPn] section that<br />

contains CUT_SESSION=n set to a different number. This is a required field.<br />

PASTE_SESSION<br />

PASTE_SESSION=n<br />

PASTE_SESSION specifies the host session number to which to paste. The<br />

Mosaix system session is always 0. To paste to different sessions with a single<br />

agent command, use the CNPn paste command to branch to another [CNPn]<br />

section that contains PASTE_SESSION=n set to a different number. This is a<br />

required field.<br />

CNP_TYPE<br />

CNP_TYPE=n<br />

CNP_TYPE indicates the type of cut and paste. A value of 1 indicates an<br />

automatic cut and paste. If the CNP type is set to automatic, the CNP will execute<br />

at the time interval set in the AUTO_INTERVAL parameter in the [GLOBAL]<br />

section. If the AUTO_CUT_COMPARE in the [CNPn] section specifies a cut<br />

command number, the script compares the previous cut value against the specified<br />

cut command results to determine whether the rest of the script is executed.


32 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

A CNP_TYPE value of 2 indicates a manual cut and paste. This is the default.<br />

A CNP_TYPE value of 3 indicates logon. This is needed for any CNP command<br />

used as part of logon sequence. Other CNP commands, such as automatic, are<br />

ignored until logon is finished.<br />

A CNP_TYPE value of 4 indicates a DDE cut and paste. This is a hot link similar<br />

to an automatic cut and paste. The link is to the item contained in CUT_CMDn<br />

specified by AUTO_CUT_COMPARE in the session specified as the<br />

CUT_SESSION within the [CNPn]. This works just like the automatic cut and<br />

paste, but instead of performing a DDE cut based upon a timer, the link is told in<br />

the changed event.<br />

AUTO_CUT_COMPARE<br />

AUTO_CUT_COMPARE=n<br />

AUTO_CUT_COMPARE identifies the cut number used to compare data<br />

between outbound screen pops to determine if the field has changed since the last<br />

time it was automatically copied. This is a required field if the CNP_TYPE is<br />

type 1.<br />

CUT_CMDn<br />

CUT_CMDn=format<br />

CUT_CMDn identifies the command line format for each cut command. n begins<br />

with 1 and continues to the value set in NUMBER_CUT_COMMANDS. The<br />

highest value for n (the number of cut commands that you define) must equal the<br />

value of NUMBER_CUT_COMMANDS. Cut command numbers must be<br />

sequential.<br />

The command lines specified follow the same format as the paste command lines,<br />

with the exception that the action is limited to copying text from a specified area.<br />

The source window from which the text is copied is determined by the<br />

CUT_SESSION parameter.<br />

For information about cut command formats for various emulator applications,<br />

see Chapter 5, “Cut Commands,” beginning on page 35.


<strong>Vlterm</strong>.ini Configuration 33<br />

PASTE_CMDn<br />

PASTE_CMDn=a predefined script command or text to send<br />

PASTE_CMDn identifies a predefined script or text to send for each paste<br />

command. n begins with 1 and continues to the value set in<br />

NUMBER_PASTE_COMMANDS. The highest value for n (the number of paste<br />

commands that you define) must equal the value of<br />

NUMBER_PASTE_COMMANDS. Paste command numbers must be sequential.<br />

The session window to which paste command is directed is determined by the<br />

PASTE_SESSION parameter.<br />

For information about paste command formats, see Chapter 6, “Paste<br />

Commands,” beginning on page 39.


34 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Cut Commands 5<br />

Define cut commands in the CNPn sections of the vlterm.ini file. See “[CNPn]”<br />

on page 30 for more information about setting up cut and paste actions in the<br />

vlterm.ini file. <strong>Vlterm</strong> uses cut commands to identify a location on a screen from<br />

which it copies a specified amount of data. Typically, you define paste commands<br />

that transfer and apply the copied data to another session(s). For information about<br />

paste command options, see Chapter 6, “Paste Commands,” beginning on page 39.<br />

Emulator Formats<br />

Different emulator applications use different formats to specify a cut location. The<br />

following sections define the cut command formats for a variety of emulators.<br />

Attachmate KEA!<br />

(page,row,column,length)<br />

You must include a page value. Use 1 for the Mosaix system page number. Each<br />

screen for each session should have its own unique page number. Row and column<br />

values begin with 1.<br />

For example, CUT_CMD1=(1,3,5,9) copies nine characters beginning at the third<br />

row and fifth column from the Mosaix system session.<br />

35


36 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Attachmate Extra!<br />

(PxxxxLyyyy)<br />

The xxxx variable is the presentation space starting position. Typically, it ranges<br />

from 1 through 1920 or the maximum number of characters on the screen. The<br />

yyyy variable is the length to cut.<br />

For example, CUT_CMD1=(P0165L0009) copies nine characters (Length)<br />

beginning at screen Position 165.<br />

Wall Data Rumba<br />

(rr1,cc1,rr2,cc2)<br />

The rr1 and cc1 variables specify the starting row and column for the cut. The rr2<br />

and cc2 variables specify the ending row and column for the cut. Rows range from<br />

1 through 24. Columns range from 1 to 80.<br />

For example, CUT_CMD1=(3,5,3,13) copies data beginning at the fifth column<br />

of the third row and ending at the thirteenth column of the third row.<br />

WRQ Reflection<br />

DRV<br />

(rr1,cc1,rr2,cc2)<br />

The rr1 and cc1 variables specify the starting row and column for the cut. The rr2<br />

and cc2 variables specify the ending row and column for the cut. Row values<br />

range from 0 through 23. Column values range from 0 through 79.<br />

For example, CUT_CMD1=(3,5,3,13) copies data beginning at the sixth column<br />

of the fourth row and ending at the fourteenth column of the fourth row.<br />

(row, col, len)<br />

Use this format to communicate to external interfaces that use the drv_dde.ini<br />

DDE configuration file.<br />

For example, CUT_CMD1=(3,5,9) copies nine characters beginning at the fifth<br />

column of the third row.


ClipCut()<br />

Cut Commands 37<br />

ClipCut(key_sequence~(row,col,len))<br />

ClipCut() Copies the contents of the emulator screen to the Windows clipboard.<br />

ClipCut() uses the key_sequence to return a string from a designated row and<br />

column position.<br />

Use ClipCut() when the emulator doesn’t support any other API. Use ClipCut() in<br />

conjunction with the SendKeys paste command. (See “SendKeys” on page 54 for<br />

more information.)<br />

Example<br />

CUT_CMD1=ClipCut(%ea%ec~(19,9,10))<br />

CUT_CMD2=ClipCut(~(20,9,10))<br />

The first cut command executes an Alt+E a Alt+E c key sequence (Edit menu,<br />

Select All option and Edit menu, Copy option) to place the screen contents on the<br />

Windows clipboard, then places the contents of row 19, column 9, length 10 into<br />

C(1). The second cut command places the contents of row 20, column 9, length 10<br />

from the same clipboard to C(2).


38 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Paste Commands 6<br />

@x<br />

C()<br />

Define paste commands (PASTE_CMDn)intheCNPnsections of the vlterm.ini<br />

file. See “[CNPn]” on page 30 for more information about setting up vlterm.ini cut<br />

and paste commands. <strong>Vlterm</strong> uses paste commands to send a predefined script<br />

command or text to a <strong>Vlterm</strong> session. This chapter contains the commands<br />

available for PASTE_CMDn.<br />

In this chapter, special characters, such as brackets ([]), braces ({}), and the pipe<br />

symbol (|), are often used to illustrate the syntax of paste commands. Brackets and<br />

braces group items in syntax strings, and the pipe represents an or. Unless<br />

specifically noted, don’t include these characters in the actual paste commands.<br />

@x is a special keystroke command. See Appendix D, “Emulator Special @x<br />

Keys,” beginning on page 107 for a list of the commands that you can use with<br />

each vendor’s emulator software. Only the DDE interface type supports @x<br />

commands. Use SendKeys() as an alternative. For information about the<br />

SendKeys function, see “SendKeys” on page 54 and Appendix B, “Using the<br />

SendKeys Function,” beginning on page 101.<br />

C(n)[,Numeric][,Space][,Alphanum]<br />

The C(n) command pastes the contents of the previously cut data, which is held in<br />

cut variable C(n). n is the number of the CUT_CMDn script command line in the<br />

current CNP section.<br />

39


40 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

The numeric, space, and alphanum options modify the data held in the variable.<br />

C(n) Option Description<br />

C(n),Numeric Numeric removes all non-numeric characters.<br />

C(n),Space Space adds a space to the end of the cut data.<br />

C(n),Alphanum Alphanum removes all non-alphanumeric characters. Use this<br />

to eliminate tabs and other control characters that are<br />

sometimes passed from the VT emulators.<br />

Examples<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=C(1),Numeric<br />

If the value of C(1) is ACCT234, PASTE_CMD1 contains ACCT234.<br />

PASTE_CMD2 contains 234.<br />

NOTE An alternative to using these paste options is the Format() command<br />

which provides more formatting control. See Appendix A, “Using the Format<br />

Function,” beginning on page 91 for more information.<br />

ClipCopyBlock()<br />

ClipCopyBlock(VarTo~VarClip~iRow~iCol~iLen)<br />

ClipCopyBlock() sets a variable to the row, column, and length position of another<br />

variable. Use ClipCopyBlock() to copy text from Windows applications that don’t<br />

support an API.<br />

Use this command with the ClipGet() command. For example, use ClipGet() to set<br />

a variable to hold the contents of the Windows clipboard, then use<br />

ClipCopyBlock() to set another variable to a sub-string of the first variable.<br />

The second variable is set with a sub-string of the contents of the ClipCopyBlock<br />

command. The portion of the first variable that is assigned to the second variable<br />

is the area of the clipboard defined by iRow, iCol, and iLen.<br />

Example<br />

PASTE_CMD1=SendKeys=%ea%ec<br />

PASTE_CMD2=ClipGet(1)<br />

PASTE_CMD3=ClipCopyBlock(2~1~5~9~10)


ClipGet()<br />

ClipSet()<br />

Paste Commands 41<br />

The SendKeys command copies the contents of a screen to the clipboard.<br />

ClipGet(1) places the clipboard text into VAR1. ClipCopyBlock(2~1~5~9~10)<br />

copies the block of text located at row 5, column 9, of length 10 from VAR1 to<br />

VAR2.<br />

ClipGet(n)<br />

Use ClipGet() with the ClipCopyBlock() command. ClipGet() assigns the<br />

contents of the Windows clipboard to VARn. Then, you can use ClipCopyBlock()<br />

or other commands to manipulate VARn.<br />

Example<br />

PASTE_CMD1=ClipGet(1)<br />

The contents of the Windows clipboard is assigned to VAR1.<br />

ClipSet({“string”|CUTn|VARn}~{Y|y|True|true})<br />

The ClipSet() command replaces the contents of the Windows clipboard with<br />

either a literal string, a cut, or a variable. A string argument requires quotation<br />

marks (“ ”). The final argument appends a carriage return after the string, cut<br />

value, or variable value. Use a Y or True value. The carriage return argument is<br />

not case sensitive. If you don’t include the final argument, <strong>Vlterm</strong> doesn’t add a<br />

carriage return after the string or variable.<br />

Example<br />

PASTE_CMD1=ClipSet(CUT1~True)<br />

The contents of CUT_CMD1 is placed in the Windows clipboard followed by a<br />

carriage return.


42 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Cursor()<br />

The Cursor option sets the cursor to a specific 3270 screen location. The following<br />

two sections describe the cursor command syntax for Wall Data Rumba and<br />

Attachmate Extra!.<br />

Wall Data Rumba<br />

Cursor(position) or Cursor(rr,cc)<br />

For Rumba, you can set the cursor position by specifying a presentation space<br />

location or using row and column values. Values for position can range from 1<br />

through 1920, which represent the total number of characters on a screen that<br />

contains 24 rows and 80 columns. For example, row 1 contains positions 1<br />

through 80, row 2 contains positions 81 through 160, and row 24 contains<br />

positions 1841 through 1920.<br />

Examples<br />

PASTE_CMD1=Cursor(0165)<br />

PASTE_CMD1=Cursor(3,5)<br />

Attachmate Extra!<br />

Cursor(Pnnnn)<br />

The nnnn represents the presentation space location. Values for nnnn can range<br />

from 1 through 1920, which represent the total number of characters on a screen<br />

that contains 24 rows and 80 columns. For example, row 1 contains positions 1<br />

through 80, row 2 contains positions 81 through 160, and row 24 contains<br />

positions 1841 through 1920.<br />

Example<br />

PASTE_CMD1=Cursor(P0165)


CUTn|CVRn<br />

CUTn|CVRn=string|CUTn|VARn:true_action:false_action<br />

Argument Description<br />

Paste Commands 43<br />

n The CUT or VAR command number from the current CNP.<br />

string or CUTn orVARn The value to compare to the cut data.<br />

true_action Must be either Next, Exit, or CNPn where n is a different<br />

CNP number than the CNP script that uses this command.<br />

The true_action argument controls the script flow when the<br />

comparison is true.<br />

false_action Must be either Next, Exit, or CNPn where n is a different<br />

CNP number than the CNP script that uses this command.<br />

The false_action argument controls the script flow when the<br />

comparison is false.<br />

The CUTn/CVRn command branches to another CNP sequence depending on a<br />

comparison between a variable and a string. If the comparison is true, the<br />

true_action is carried out. If the comparison is false, then the false_action is<br />

carried out. This is useful for making decisions based on screen content.<br />

CVRn is another method of referring to VARn. CVR represents a cut variable. Use<br />

CVRn only on the left side of the expression. Use VARn only on the right side of<br />

the expression.<br />

Examples<br />

PASTE_CMD1=CUT1=Ready:CNP2:Exit<br />

<strong>Vlterm</strong> compares the contents of CUT1 to the string “Ready.” If the comparison<br />

is true, the script branches to CNP2. If the comparison is false, the script stops.<br />

PASTE_CMD1=CVR1=:Next:CNP2<br />

<strong>Vlterm</strong> compares the contents of the variable VAR1, which is the same as CVR1,<br />

to a blank string. (When nothing appears between the equal sign and the colon,<br />

<strong>Vlterm</strong> interprets the string argument as a blank string.) If the comparison is true,<br />

the script executes the next paste statement. If the comparison is false, the script<br />

branches to CNP2.<br />

PASTE_CMD1=CUT1=VAR2:Next:CNP2


44 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Date()<br />

Delay()<br />

<strong>Vlterm</strong> compares the contents of the CUT1 to the variable VAR2. If the<br />

comparison is true, the script executes the next paste statement. If the comparison<br />

is false, the script branches to CNP2.<br />

Date(n,format_string)<br />

The Date command pastes the current date at the current screen location. Include<br />

a value greater than zero to specify current date plus n days. You can use the<br />

Format command structure to format the date. For more information, see “Using<br />

the Format Function” on page 91.<br />

Examples<br />

PASTE_CMD1=Date(7,mmddyy)<br />

Add 7 days to the current date and display it in the 041596 format.<br />

PASTE_CMD1=Date(-1,mm/dd/yy)<br />

Subtract 1 day from the current date and display it in the 04/15/96 format.<br />

PASTE_CMD3=”The time is: ”<br />

PASTE_CMD4=Date(0,hh:nn)<br />

Displays the current time in hh:nn format: The time is: 14:25<br />

Delay(n)<br />

The Delay(n) paste command causes <strong>Vlterm</strong> to pause for the specified amount of<br />

time. n is the number of seconds and can use decimal fractions.<br />

Example<br />

PASTE_CMD2=Delay(1.5)<br />

<strong>Vlterm</strong> pauses for 1 1/2 seconds.


Exit_<strong>Vlterm</strong><br />

File()<br />

Exit_<strong>Vlterm</strong> closes the <strong>Vlterm</strong> application.<br />

Paste Commands 45<br />

File({create|delete|append}~path|VARn~format|VARx~string|VARm)<br />

Use the File() paste command to create, append to, or delete an ASCII text file.<br />

The File() command supports three file formats: CRLF, QUOTECLRF, and<br />

COMMA. The CRLF format places a carriage return and a line feed after each<br />

data entry. QUOTECLRF places quotation marks around and adds a carriage<br />

return and line feed after each entry. The COMMA format places a comma after<br />

each data entry.<br />

The following table provides descriptions of the File() command arguments.<br />

Argument Description<br />

create Creates a new file or overwrites an existing file of the<br />

same name.<br />

delete Deletes the specified file.<br />

append Adds specified content to the end of an existing file or<br />

creates the specified file if it doesn’t exist.<br />

path|VARn The file name, including directory path, or a variable.<br />

format|VARx Specify CRLF to insert a carriage return and line feed<br />

after each entry, QUOTECRLF to insert quotation marks<br />

around each entry and a carriage return and line feed after<br />

each entry, or COMMA to insert a comma after each<br />

entry. If you set a variable equal to CRLF, QUOTECRLF<br />

or COMMA, you can use that variable in the File()<br />

command.<br />

string|VARm A string or variable to insert into the specified file.


46 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Find()<br />

You must define the File() command arguments in the specified sequence. The<br />

first argument must be one of the three actions (create, delete, or append). The<br />

second argument must include a valid drive, path, and file name. The third<br />

argument must be the file format, either CRLF, QUOTECRLF, or COMMA. The<br />

final argument must contain the data that the File() command puts into the file.<br />

Example<br />

PASTE_CMD1=SetVar1=h:\temp\m2s2276.txt<br />

PASTE_CMD2=SetVar2=123456789<br />

PASTE_CMD3=File(create~Var1~CRLF~Var2)<br />

This series of paste commands creates a new file (or overwrites an existing file)<br />

by the name of h:\temp\m2s2276.txt that contains the string 123456789.<br />

The Find() command supports two syntaxes:<br />

• Find(string,rr,cc):ntrue_action:false_action<br />

• Find(string,xxxx):true_action:false_action<br />

Argument Description<br />

string The value to compare to the screen data.<br />

rr,cc A row and column position to start the search.<br />

xxxx A single value, 1 through 1920, that represents the starting<br />

position for the string search. 1920 represents the total number of<br />

characters on a screen that contains 24 rows and 80 columns.<br />

true_action Must be either Next, Exit, or CNPn where n is a different CNP<br />

number than the CNP script that uses this command. The<br />

true_action argument controls the script flow when the<br />

comparison is true.<br />

false_action Must be either Next, Exit, or CNPn where n is a different CNP<br />

number than the CNP script that uses this command. The<br />

false_action argument controls the script flow when the<br />

comparison is false.<br />

Only the Rumba and Extra! emulators support the Find() paste command.


Paste Commands 47<br />

This function searches for a string in the paste session presentation space starting<br />

at a location specified by a row and column setting (rr,cc) or a single value that<br />

represents a specific position on the screen (xxxx). If the string is found, the<br />

true_action is carried out, if the string is not found the false_action is carried out.<br />

FocusRemain()<br />

FocusRemain(Y|y|N|n|True|true|False|false)<br />

The FocusRemain() option determines whether, when CNPn completes, <strong>Vlterm</strong><br />

directs the window focus to the most recent session that was set in the script. If<br />

you set FocusRemain() to N or False, <strong>Vlterm</strong> directs the focus to the session<br />

specified in the PASTE_SESSION parameter in the CNP session. FocusRemain()<br />

Y and N arguments are not case sensitive. True and False settings can be all lower<br />

case or use an initial capital letter.<br />

FormatStr()<br />

FormatStr({C(n)|VARn}~string)<br />

FormatStr() formats the contents of C(n)orVARnaccording the mask string and<br />

places the contents back into C(n) orVARn. Define the mask string using the<br />

Format() command. For more information, see “Using the Format Function” on<br />

page 91.<br />

Example<br />

PASTE_CMD1=SetVar1=123454678<br />

PASTE_CMD2=FormatStr(VAR1~#,###,###.00)<br />

PASTE_CMD3=MSG=VAR1<br />

VAR1 contains the string 12345678. After <strong>Vlterm</strong> applies the FormatStr<br />

command, VAR1 contains 12,345,678.00.<br />

FormLoad()<br />

FormLoad(n)<br />

FormLoad(n) causes <strong>Vlterm</strong> to read from the external configuration file<br />

FORMn.ini and load the form.


48 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Hide_Fkeys<br />

The Hide_Fkeys command hides the FKEYS form. Use this command to hide the<br />

FKEYS form during a host session.<br />

Hide_Logon<br />

Input<br />

Hide_Logon hides the predefined user input logon form. Hide_Logon is<br />

maintained for compatibility with previous <strong>Vlterm</strong> versions.<br />

Input=message:title:n<br />

Argument Description<br />

message The contents of the message box.<br />

title The message box title.<br />

n The variable number (VARn) in which <strong>Vlterm</strong> stores the<br />

agent-typed text.<br />

The Input command causes an InputBox, or message box, to appear. The box can<br />

display messages and prompt the agent to enter data into single text field. After<br />

the agent types text, then chooses OK, <strong>Vlterm</strong> places the text in the VARn variable<br />

for use in subsequent commands. You must define VARn in the [GLOBAL]<br />

section of the vlterm.ini file. The title appears in the message window title bar. For<br />

example:<br />

PASTE_CMD1=Input=Type Data Here:Data Entry Box:1<br />

PASTE_CMD2=MSG=VAR1<br />

PASTE_CMD1 causes <strong>Vlterm</strong> to display a message box titled Data Entry Box to<br />

the agent. The message box contains the Type Data Here prompt. <strong>Vlterm</strong> stores<br />

the information typed by the agent in VAR1. PASTE_CMD 2 uses the MSG<br />

command to display the VAR1 contents.


LeftStr()<br />

Lookup()<br />

Paste Commands 49<br />

LeftStr({C(n)|VARn}~x)<br />

LeftStr() Returns the defined number (x) of left-most characters from either a C(n)<br />

or a VARn script variable.<br />

Lookup(VARn~VARm)<br />

Lookup() uses VARn as input to search a table and return a corresponding VARm<br />

string.<br />

Example<br />

CUT_CMD1=ClipCut(%ea%ec~(1,1,4))<br />

PASTE_CMD1=SetVar1=CUT1<br />

PASTE_CMD2=Lookup(VAR1~VAR2)<br />

PASTE_CMD3=SendKeys=VAR2<br />

The example code cuts a four-digit number from one session and does a lookup in<br />

the table specified in the [GLOBAL] section of vlterm.ini. For example:<br />

TblName=C:\Program Files\<strong>Vlterm</strong>\table.txt<br />

A lookup file must use a comma delimited variable length format. You can<br />

generate this file with an application such as Microsoft Access. Each row in the<br />

table consists of two fields. The first field is the search string. The second field is<br />

the source string.<br />

Lookup File Example<br />

“2222”,”Phone Company”<br />

“2300”,”Nortel Meridian”<br />

“1332”,”Long Distance company”<br />

Use related script commands for debugging purposes to view the input file before<br />

<strong>Vlterm</strong> has translated the fields.


50 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

MathOnVars()<br />

Msg<br />

MathOnVars({VARn|CUTn}~{VARn|CUTn}~{+ | - | * | / | \ }~{x|VARn|CUTn})<br />

MathOnVars() provides the ability to do arithmetic on either a VARn or CUTn<br />

script variable. The first argument receives the result of the mathematical<br />

operation that uses argument two, an operator, and argument three. The variable x<br />

in argument 3 can be a literal number. Separate all arguments with the tilde (~)<br />

symbol.<br />

Example<br />

MathOnVars(VAR1~CUT2~+~3.1)<br />

Performs the following operation:<br />

VAR1 = C(2) + 3.1<br />

Msg={string|CUTn|VARn}<br />

The Msg option sends a specified message string to the agent using a message box.<br />

After the message appears, the agent must click OK to continue. For strings,<br />

quotation marks are optional. If you enclose a string in quotation marks, the<br />

quotation marks appear in the message box. If the Msg value is a cut variable, you<br />

must use the CUTn syntax. C(n) is not a valid value for the Msg command.<br />

Example<br />

PASTE_CMD1=Msg=This is the message<br />

PASTE_CMD2=Msg=CUT1<br />

Non-Reserved Word<br />

You can specify a non-reserved word in a paste command, which causes <strong>Vlterm</strong><br />

to send characters as keystrokes directly to the emulator. This can include ordinary<br />

alphanumeric characters or special characters used for screen or cursor<br />

manipulation commands. If the emulator doesn’t accept the format, a DDE error<br />

message is displayed:<br />

“Error Pasting to window-title. VB error code VB error message. CNPn CMDn.”<br />

The agent must click OK. <strong>Vlterm</strong> ends the current CNP script.


OIA<br />

Paste Commands 51<br />

Enclose the text string in quotation marks to include space characters.<br />

Example<br />

PASTE_CMD1=“ The text is: ”<br />

OIA,string,[n]<br />

Argument Description<br />

string Search string. <strong>Vlterm</strong> compares this string against the string the<br />

emulator sends.<br />

[n] OIA timeout, in seconds. This argument is optional. If you don’t<br />

specify a value for n, <strong>Vlterm</strong> defaults to 10 seconds. Include the<br />

brackets in the command.<br />

The OIA option causes <strong>Vlterm</strong> to wait for keyboard unlock. This applies to 3270<br />

emulations only (Wall Data Rumba and Attachmate Extra!).<br />

<strong>Vlterm</strong> issues a request to the emulator for OIA status in a loop, which contains a<br />

brief pause between each loop. If a clear indication is not received in that time,<br />

<strong>Vlterm</strong> issues the following message: “OIA searching for an unlocked status<br />

timed out.” The paste function is then exited.<br />

Issue the OIA command after any command that sends data to the host rather than<br />

just manipulating text or the cursor in the 3270 presentation space buffer.<br />

Rumba and Extra! use the following commands.<br />

Command Key Sequence<br />

Clear @C<br />

Enter @E<br />

PF1-24 (program function) @0-@9, @a-@o<br />

PA1-3 (program attention) @x-@z


52 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Other()<br />

The following table contains commonly used commands that don't require OIA.<br />

Command Key Sequence<br />

Tab @T<br />

Home @0<br />

Backtab @B<br />

Newline @N<br />

Erase EOF (end of field) @F<br />

NOTE Use the SendKeys function for commands not listed above or for use with<br />

other emulators. See Appendix B, “Using the SendKeys Function,” beginning on<br />

page 101 for more information.<br />

The string that the OIA looks for is different for each emulator package. You must<br />

identify the emulator string before setting up an OIA command. <strong>Vlterm</strong> interprets<br />

the string using the Like command format. See “Using the Like Operator” on<br />

page 105 for more information.<br />

Extra! Example<br />

PASTE_CMD2=OIA,*CLEAR*,[30]<br />

Where CLEAR is the search string and the asterisks (*) are wild card characters.<br />

The OIA timeout is set to 30 seconds.<br />

Rumba 3270 and AS400 Example<br />

PASTE_CMD2=OIA,*0*<br />

The string that Rumba sends is *0*. The OIA timeout value defaults to 10 seconds.<br />

Other(string)<br />

Use the DDE Other section to paste the string contents to the defined<br />

PASTE_SESSION.<br />

Example<br />

PASTE_CMD2=Other([EXIT()])<br />

This sends an exit command to the external OLE interface program.


Pause()<br />

Release<br />

Relink<br />

RightStr()<br />

Paste Commands 53<br />

Pause(n)<br />

The Pause option is supported only in Wall Data Rumba. Set the value of n in 1/2<br />

second intervals. The pause allows for host processing. The Pause option can be<br />

useful if the host sends data while the 3270 keyboard is in an unlocked state.<br />

Release=n or Release=VAL=x<br />

If the format is RELEASE=n, <strong>Vlterm</strong> sends a Mosaix system release key as<br />

specified in the vlkeys.ini file. n is the key number of the release sequence to send,<br />

1-72.<br />

If the format is RELEASE=VAL=x, <strong>Vlterm</strong> sends a release to the Mosaix system<br />

using the value x. x may be one character preceded by and followed by<br />

.<br />

A y may be added after the x character to automatically respond to the question<br />

“Are you sure?”<br />

Example<br />

PASTE_CMD2=RELEASE=VAL=Hy<br />

Sends Hy to the Mosaix system session.<br />

A relink may be necessary to re-establish a DDE connection to one of the<br />

HTERMn sessions. For example, Rumba drops all DDE links if a host Telnet<br />

session times out.<br />

RightStr({C(n)|VARn}~x)<br />

Returns x number of right-most characters from either a C(n) oraVARnscript variable.


54 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

SendKeys<br />

SetVarn<br />

Parameters<br />

SendKeys={string|C(n)|VARn|~NoFocusSet}<br />

You can use this function as the primary way to send keystrokes or cut data into a<br />

host session if it is not necessary or possible to communicate to a host emulator<br />

DDE server. It is still necessary to use DDE to get information from a window or<br />

to paste the output to a window. The PASTE_SESSION parameter in the CNPn<br />

section determines where the output will be sent.<br />

If the string ~NoFocusSet is included at the end of the SendKeys command line,<br />

the string ~NoFocusSet will be taken out of the string and the focus will not be<br />

changed or set after the command has been issued. This is important if your<br />

command displays a new dialog box or form.<br />

NOTE The new dialog box or form is not the initial form to which <strong>Vlterm</strong><br />

connected. <strong>Vlterm</strong> sets the focus to the original form or window unless you<br />

include the ~NoFocusSet string.<br />

Examples<br />

PASTE_CMD1=SendKeys=C(1)<br />

Send previously cut data placed in C(1) to the PASTE_SESSION host window.<br />

PASTE_CMD1=SendKeys={ENTER}<br />

Specify SendKeys={Enter} to wake up the Telnet session. The braces {} are<br />

required. To define special keystrokes, see “Using the SendKeys Function” on<br />

page 101.<br />

SetVarn={C(n)|VARn|CUTn|string|UserID|Date()|InString()|MidString()}<br />

Sets the script variable VARn to the contents of one of the listed parameters or<br />

subroutines.<br />

Define a SetVarn parameter using variables or a literal string.


Variable<br />

Literal<br />

Subroutines<br />

UserID<br />

Date()<br />

PASTE_CMD1=SetVar1=C(1)<br />

Sets VAR1 to the contents of C(1) or CUT_CMD1.<br />

Paste Commands 55<br />

If you enclose the literal string in quotation marks, the quotation marks aren’t<br />

included in the script variable.<br />

PASTE_CMD2=SETVAR2=hello there<br />

Sets VAR2 to the string hello there.<br />

PASTE_CMD3=SetVar2=“”<br />

Sets VAR2 to an empty string.<br />

The UserID, Date, InString, and Midstring subroutines are available only for use<br />

with the SetVarn command.<br />

The SetVarn UserID option for SetVar accesses the user’s Windows login ID.<br />

Example<br />

PASTE_CMD1=SetVar1=UserID<br />

PASTE_CMD2=Msg=Var1<br />

The series of paste commands displays the user’s login ID.<br />

SetVarn=Date(n,format)<br />

Use the SetVarn Date command option to include a date in a SetVarn routine.<br />

Assign to a variable a string, which represents the local PC date and time. Format


56 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

the string according to the existing Date() command capabilities (see “Date()” on<br />

page 44 for more information about the Date() command).<br />

Argument Description<br />

n The number of days to add to the current date (0 for the<br />

current date).<br />

format The format <strong>Vlterm</strong> uses to display the date using the<br />

FormatStr command options. See “Date and Time Formats” on<br />

page 96 for more information.<br />

Example<br />

PASTE_CMD1=SetVar1=Date(1,yyyymmdd)<br />

PASTE_CMD2=Msg=Var1<br />

The series of paste commands adds one day to the current date. For example, if the<br />

current date is October 27, 1999, the PASTE_CMD2 command adds 1 to the date<br />

and displays the date as 19991028.<br />

InString()<br />

SetVARn=(Start_Position~Source_string~Sub_string)<br />

SetVARn= InString(<br />

{C(n)|string|VARn|CUTn}<br />

~{C(n)|string|VARn|CUTn}<br />

~{C(n)|string|VARn|CUTn})<br />

Use the SetVarn InString() function to return the column position of a substring<br />

within a row of string characters. The InString function uses the following<br />

arguments.<br />

Argument Description<br />

Start_position The position of the search string to start searching for a<br />

substring. Required entry.<br />

Source_string The string to be searched<br />

Sub_string The sub-string to find within the searched string<br />

The result is to return the column that the search string was<br />

found within the string being searched.


Example<br />

SETVAR3=InString(1~CUT1~VAR2)<br />

Paste Commands 57<br />

The source string CUT1 is searched for the substring VAR2 starting at position 1.<br />

The first column position where VAR2 is located within CUT1 is assigned to<br />

VAR3.<br />

Midstring()<br />

Midstring(Source~Start~Length)<br />

SetVARn=MidString(<br />

{C(n)|string|VARn|CUTn}<br />

~{C(n)|string|VARn|CUTn}<br />

~{C(n)|string|VARn|CUTn})<br />

Use the SetVarn Midstring() function to return a specified number of characters<br />

from a string.<br />

Argument Description<br />

Source The string from which characters are extracted.<br />

Start Character position in the Source string from which to begin<br />

extracting.<br />

Length The number of characters to return from the Source string<br />

(optional parameter).<br />

Example<br />

SETVAR2=MidString(CUT1~VAR2~5)


58 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

ShellApp()<br />

ShellApp({string|VARn}~WinTitle)<br />

Use the ShellApp() option to determine if an application with WinTitle is currently<br />

running. If it is, the focus is set to that application. If the application is not<br />

currently running, the string parameter is used to launch the application and set<br />

focus to it.<br />

Examples<br />

ShellApp(Calc.exe~Calculator)<br />

Launches the Windows calculator program.<br />

CUT_CMD1=ClipCut(%ea%ec~(1,1,20))<br />

PASTE_CMD1=SetVar1=Notepad.exe<br />

PASTE_CMD2=StrCat(Var1~Cut1)<br />

PASTE_CMD3=ShellApp(Var1~Win_Title Here)<br />

CUT_CMD1 copies 20 characters beginning at row 1, column 1 of the<br />

CUT_SESSION window. PASTE_CMD1 assigns the executable name<br />

(notepad.exe) to VAR1. PASTE_CMD2 adds the string in CUT1 to VAR1. For<br />

example, VAR1 contains “notepad.exe c:\temp\filename.txt.” PASTE_CMD3<br />

launches Notepad using the CUT1 string as the argument.<br />

Show_Fkeys<br />

Argument Description<br />

string Path and executable file name to be started<br />

VARn String variable<br />

WinTitle Window title of application (can include a wildcard, for<br />

example Calc*). Use WinTitle to further qualify the file you<br />

want to open. WinTitle is optional.<br />

The Show_Fkeys option displays the toolbar. Use this command to make the<br />

FKEYS toolbar visible for a host session.


Start_Auto_CNP<br />

Start_Auto_CNP enables the automatic CNP timer.<br />

Stop_Auto_CNP<br />

StrCat()<br />

Stop_Auto_CNP disables the automatic CNP timer.<br />

StrCat(VARn~{CUTn|VARn|string})<br />

Use StrCat() to concatenate a string to the end of VARn.<br />

Example<br />

StrCat(VAR1~CUT1)<br />

Where VAR1 = VAR1 + (C(1) or CUT_CMD1).<br />

TitleCaption<br />

Paste Commands 59<br />

TitleCaption={VARn|string|CUTn}<br />

Use the TitleCaption paste command to change the Windows title of the <strong>Vlterm</strong><br />

button bar. Use quotation marks if you want them to appear in the title.<br />

Examples<br />

PASTE_CMD1=SetVar1=“New Title”<br />

PASTE_CMD2=TitleCaption=VAR1<br />

or<br />

PASTE_CMD1=TitleCaption=“New Title”<br />

or<br />

PASTE_CMD1=TitleCaption=CUT1


60 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

ToggleTo()<br />

VARn<br />

Wait()<br />

ToggleTo(n)<br />

The value of n is a session number from 0 to MAX_SESSIONS as defined in the<br />

vlterm.ini file.<br />

ToggleTo() sets the windows focus to the specified HTERMn session.<br />

The VARn option pastes the value of VARn into the active screen. You must define<br />

VARn in the [GLOBAL] section of vlterm.ini. You can set the value of VARn with<br />

the Input paste command or the SetVar paste command.<br />

Wait(n,string)<br />

This command is supported in Wall Data Rumba and WRQ Reflections only. This<br />

command tells the system to wait for a specific data string from the host, where n<br />

is number of seconds to wait.<br />

WaitForKey()<br />

WaitForKey(iKeyCode~iFocusWin)<br />

Argument Description<br />

iKeyCode ASCII value<br />

iFocusWin session 0 to MAX_SESSIONS<br />

WaitForKey() pauses the CNP script until the key specified by iKeyCode is<br />

pressed. After this key is pressed, focus is set to the session specified by<br />

iFocusWin, and the CNP script execution continues.


Example<br />

WinFocus()<br />

WaitForKey(13~0)<br />

Paste Commands 61<br />

Sets the focus to session 0 when the return key (ASCII 13) is pressed.<br />

WinFocus(HWINn~VARn)<br />

This command tests whether the session specified has the current focus. If it does,<br />

VARn is set to 1. If it doesn’t, VARn is set to 0.


62 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Automatic Cut and Paste 7<br />

You can configure <strong>Vlterm</strong> to automatically copy information from the Mosaix<br />

system session VT100 emulator to any host session every time a field on the<br />

VT100 screen changes, such as when a new data record for a call appears.<br />

The automatic cut and paste copies a designated string of text from the Mosaix<br />

system emulator screen at specified intervals. If the copied string differs from the<br />

last copy, <strong>Vlterm</strong> assumes that a new record has been sent to the Mosaix system<br />

agent and carries out the automatic CNP commands. This typically consists of<br />

pasting the cut information to the host session.<br />

Set the number of cut commands, in the CNPn sectionofvlterm.ini,tozeroto<br />

execute the automatic cut and paste regardless of screen changes. For example,<br />

NUMBER_CUT_COMMANDS=0.<br />

Because of the limitations of the character-based Mosaix system interface, the<br />

examples in this chapter show additional configuration settings that control when<br />

the automatic compare takes place.<br />

The automatic compare is turned off after an agent logs off the job and after each<br />

automatic compare. This prevents a copy and paste from occurring while on the<br />

same record. This may occur if an agent views a different screen within the<br />

Mosaix system emulator with a goto screen2, for example. The automatic<br />

compare is turned on again once the agent selects record release.<br />

For a similar reason, the automatic cut and paste is turned off until the agent logs<br />

on and joins a job. You must configure a button to start the automatic cut and paste<br />

for the first record.<br />

63


64 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Sample Files<br />

<strong>Vlterm</strong>.ini<br />

The following sections contain sample vlterm.ini and vlkeys.ini files.<br />

[GLOBAL]<br />

NUMBER_CNPS=4<br />

MAX_SESSIONS=1<br />

AUTO_INTERVAL=3;attempt auto cut every 3 seconds<br />

AUTO_ENABLED=N ;do not enable auto compare on <strong>Vlterm</strong> startup<br />

[CNP1]<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

CNP_TYPE=1;CNP type 1 = automatic<br />

AUTO_CUT_COMPARE=1;1 = cut_cmd number to compare against<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=3<br />

CUT_CMD1=(0,64,0,73);compare this cut against the old cut to<br />

;determine whether a screen change has occurred<br />

PASTE_CMD1=C(1);if cuts are different, execute paste steps<br />

PASTE_CMD2=^M<br />

PASTE_CMD3=STOP_AUTO_CNP;stop checking while on current call<br />

[CNP2]<br />

CUT_SESSION=0;Begin auto cut and paste (AUTO)<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=1<br />

PASTE_CMD1=START_AUTO_CNP;used only at beginning of day or<br />

;session


Vlkeys.ini<br />

Automatic Cut and Paste 65<br />

[CNP3]<br />

CUT_SESSION=0;Log Off button click (LOGOFF)<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=RELEASE=VAL=A;send logoff release code to Mosaix<br />

PASTE_CMD2=STOP_AUTO_CNP;stop the auto cut cycle after<br />

;logging off<br />

[CNP4]<br />

CUT_SESSION=0;Release Record button click (DONE)<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=RELEASE=VAL=B;send release record code to Mosaix<br />

PASTE_CMD2=START_AUTO_CNP;start auto cut cycle to watch for<br />

;next record<br />

key1=CNP2,0,AUTO,0,START AUTO CNP,1<br />

key2=CNP3,0,LOGOUT,0,Request Logout<br />

key3=CNP4,0,DONE,0,Release Record,4


66 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Creating a DDE.ini File 8<br />

<strong>Vlterm</strong> reads from external DDE.ini configuration files to get information it needs<br />

about specific emulator packages. DDE.ini files contain emulator-specific DDE<br />

commands that the <strong>Vlterm</strong> script commands need.<br />

By placing all the DDE commands into an external configuration file, the <strong>Vlterm</strong><br />

executable does not need to be modified to add DDE communications support for<br />

previously unsupported emulation packages.<br />

You can configure DDE.ini files. DDE.ini file content follows the standard<br />

Windows configuration (*.ini) file format.<br />

To communicate with <strong>Vlterm</strong> using DDE, an emulation package must meet the<br />

following requirements:<br />

• The emulation package must act as a DDE server.<br />

• Documentation for the DDE server command structure describes the<br />

emulation package’s functions in detail.<br />

• The emulation package supports the functionality that the solution requires,<br />

for example, cut and paste.<br />

DDE.ini Files Introduction<br />

Each script command in a vlterm.ini CNPn section that interacts with a host<br />

system generally depends on a series of DDE commands. The <strong>Vlterm</strong> DDE client<br />

must send these DDE commands in a particular order to the target emulation<br />

package operating as a DDE server.<br />

NOTE Not all DDE commands require arguments.<br />

The external DDE.ini file structure allows for a variable number of lines (entries)<br />

for each section as well as several commands and arguments in each line.<br />

67


68 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

There are currently 12 sections in the DDE.ini file. The OTHER section can be<br />

used as a general purpose section for unanticipated situations.<br />

The name of the DDE.ini file needs to be specified in the DDE_SESSION section<br />

ofthevlterm.inifile(see“[DDE_SESSION]”onpage26).<br />

Example<br />

; DDE host configuration files, one file for each session<br />

DDE_CONFIG_SESSION0=KEA_DDE.INI<br />

DDE_CONFIG_SESSION1=RUM_DDE.INI<br />

The first file for session 0, the Mosaix system session, has settings for<br />

Attachmate’s KEA! vt100 emulator. The second file is for Wall Data’s Rumba<br />

emulator going to session 1, a host session. You may have the same file in both<br />

entries if you use the same type of emulator for both sessions, but you must have<br />

a file name listed for each session used.<br />

Each section within the DDE.ini file may have associated variables. The <strong>Vlterm</strong><br />

code parses these variables and replaces with variable values that are known<br />

within the code. By using variables, <strong>Vlterm</strong> has access to dynamically changing<br />

values, such as when a string has been cut from an emulator screen.<br />

This chapter lists the variables in the sections to which they apply and the internal<br />

variables that are assigned to them. These variable declarations are found within<br />

the cnp.bas module in the DDE_MessageSend sub-routine.<br />

DDE.ini File Variables<br />

NumberOfLines=2<br />

Line1=LinkItem copyblock(&CutVar1&)<br />

Line2=LinkRequest<br />

Parameter Description<br />

NumberOfLines The number of lines in this sequence<br />

Line1 The first line in the sequence of events for a cut command<br />

LinkItem Tells <strong>Vlterm</strong> that a LinkItem DDE command will be used


Parameter Description<br />

copyblock() A literal text sting sent to the DDE Server<br />

& Field delimiter<br />

Example of a Cut Command for Rumba<br />

For a vlterm.ini [CNPn] section command configured as:<br />

CUT_CMD1=(1,1,1,5)<br />

And a RUM_DDE.ini file cut section defined as:<br />

Creating a DDE.ini File 69<br />

CutVar1 Internal variable, described later in this chapter as a cut command<br />

[DDE_CUTS]<br />

NumberOfLines=2<br />

Line1=LinkItem copyblock(&CutVar1&)<br />

Line2=LinkRequest<br />

<strong>Vlterm</strong> makes the following variable assignment:<br />

CutVar1 = (1,1,1,5)<br />

After the RUM_DDE.ini [DDE_CUTS] section Line1 is parsed and the variable<br />

substitutions are made, a DDE LinkItem request is sent to the DDE server of the<br />

emulation package. The request contains the following data:<br />

copyblock(1,1,1,5)<br />

The LinkRequest DDE command for Line2 would then be sent without<br />

parameters.<br />

The result would be that the text on the screen for CUT_SESSION=0 in location<br />

1,1,1,5 would be placed in the cut variable number 1, C(1), in the CNP section for<br />

later processing.<br />

The startup.bas module in the CONFIG_CNP subroutine reads the DDE.ini file<br />

information into <strong>Vlterm</strong> and places it into structures for each session. The<br />

DDE_MessageSend subroutine is then called and given the appropriate structure<br />

for the task to be performed.


70 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

DDE.ini File Sections<br />

Not all functions or sections are available for all emulators. Rumba was used as<br />

the first example of what commands to include. Although variables are generally<br />

associated with a specific section in the DDE.ini file, they may be used in other<br />

sections as needed. For example, the Chr1 and Chr13 variables represent the<br />

ASCII characters 1 (^A) and 13 (^M) respectively.<br />

[DDE_CUTS]<br />

CutVar1 = the string contents of a cut command from the vlterm.ini file.<br />

Example<br />

If CUT_CMD1=(1,1,1,5) in the vlterm.ini file, then CutVar1 = “(1,1,1,5)”.<br />

[DDE_PASTECUTS]<br />

PasteVar1 = the string contents of a previously cut item to paste to a session<br />

designated in the vlterm.ini file.<br />

Example<br />

If PASTE_CMD1=C(1) in the vlterm.ini file, the contents of C(1) are pasted to the<br />

session.<br />

[DDE_PVAR]<br />

PvarVar1 = the string contents of an internal VARn variable designated in the<br />

vlterm.ini file.<br />

[DDE_OIAKBD]<br />

Internal variables are not defined for this section.<br />

[DDE_CURSOR]<br />

CursorVar1 = the string contents of a CURSOR command designated in the<br />

vlterm.ini file.


[DDE_WAITS]<br />

Creating a DDE.ini File 71<br />

WaitSVar1 = the string contents of the first parameter before the comma (,) in the<br />

WAIT command designated in the vlterm.ini file.<br />

WaitSVar2 = the string contents of the second parameter after the comma (,) in the<br />

WAIT command designated in the vlterm.ini file.<br />

[DDE_PAUSE]<br />

PauseVar1 = the string contents of the PAUSE command designated in the<br />

vlterm.ini file.<br />

[DDE_FINDS]<br />

FindVar1 = the string contents of the first parameter separated by a comma (,) in<br />

the FINDS command designated in the vlterm.ini file.<br />

FindVar2 = the string contents of the second parameter separated by a comma (,)<br />

in the FINDS command designated in the vlterm.ini file.<br />

FindVar3 = the string contents of the third parameter separated by a comma (,) in<br />

the FINDS command designated in the vlterm.ini file.<br />

[DDE_OTHER]<br />

OtherVar1 = the string contents of the OTHER command designated in the<br />

vlterm.ini file. This variable may not be needed for this section.<br />

[DDE_SENDTHRU]<br />

PassVar1 = the string contents of text on a line designated in the vlterm.ini file, not<br />

associated with an internal function such as the PAUSE command.<br />

Example<br />

The PASTE_CMD1=X line in the vlterm.ini file sends the letter X to the session.


72 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[DDE_SENDFKEYS]<br />

FKEYVar1 = the string contents of the first command designated in the vlkeys.ini<br />

file.<br />

NOTE If you need to include a “y” after this Mosaix system release code, use the<br />

[DDE_SENDTHRU] command structure.<br />

[DDE_SENDPFKEYS] keystroke<br />

PFKEYVar1 = the string contents of the PFK command designated in the<br />

vlkeys.ini file.<br />

Additional Variables<br />

Chr1 = Chr1 variable which holds the ASCII character 1, used in the<br />

[DDE_SENDFKEYS] command structure or as needed.<br />

Chr13 = Chr13 variable which holds the ASCII characters 13, used in the<br />

[DDE_SENDFKEYS] command structure or as needed.<br />

& = Acts as a field delimiter.<br />

“Text” = Other text placed on the line is passed through as is, text and variables<br />

must be separated by an ampersand (&) symbol.<br />

DRV_DDE.ini File Example<br />

Use the drv_dde.ini sample file as a template to create a new DDE configuration<br />

file when you need <strong>Vlterm</strong> to communicate with an emulator that’s not included<br />

in the “Emulator Specifics” appendix beginning on page 113. The following file<br />

provides samples of the association between script commands and their<br />

functionality.


Creating a DDE.ini File 73<br />

;*****************************************************************<br />

; DDE Host Configuration File<br />

; for Generic DDE Driver<br />

;<br />

; DRV_DDE.INI file for <strong>Vlterm</strong><br />

;*****************************************************************<br />

;This file contains parameters that control <strong>Vlterm</strong> DDE operation<br />

;including the all the supported commands for DDE specifications<br />

;for each emulator<br />

;This file is called from the <strong>Vlterm</strong>.ini file<br />

;The following sections handle particular <strong>Vlterm</strong> script<br />

;commands. For a particular script command, there is a<br />

;corresponding section which specifies the DDE commands<br />

;which will be sent to the DDE server to which <strong>Vlterm</strong> is<br />

;communicating.<br />

;The pseudo-command lines within these sections are interpreted by<br />

;<strong>Vlterm</strong> code and reconstructed into VB DDE commands.<br />

;Note the variable such as &CutVar1& which gets replaced by a value<br />

;defined in a <strong>Vlterm</strong> script command. For CutVar1, it would be<br />

;replaced ;by the contents of C(1) in a Paste_Cmd1=C(1) <strong>Vlterm</strong> script<br />

;command.<br />

[DDE_CUTS]<br />

;Handles the Cut_Cmd1=(row,col,len) script command<br />

NumberOfLines=3<br />

Line1=LinkExecute [CopyBlock(&CutVar1&)]<br />

Line2=LinkItem txtDDE<br />

Line3=LinkRequest<br />

[DDE_PASTECUTS]<br />

;Handles the Paste_Cmd1=C(1) script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [SendKey(&PasteVar1&)]<br />

[DDE_PVAR]<br />

;Handles the Paste_Cmd1=VAR1 script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [SendKey(&PvarVar1&)]<br />

[DDE_OIAKBD]<br />

;Handles the Paste_Cmd1=OIA script command<br />

NumberOfLines=3<br />

; The OIA word to search for is: *CLEAR*<br />

Line1=LinkExecute [OIA()]


74 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Line2=LinkItem txtDDE<br />

Line3=LinkRequest<br />

[DDE_CURSOR]<br />

;Handles the Paste_Cmd1=Cursor() script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [Cursor(&CursorVar1&,&CursorVar2&)]<br />

[DDE_WAITS]<br />

;Handles the Paste_Cmd1=Wait() script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [WaitFor(&WaitSVar1&,&WaitSVar2&)]<br />

[DDE_PAUSE]<br />

;Handles the Paste_Cmd1=C(1) script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [Pause(&PauseVar1&)]<br />

[DDE_FINDS]<br />

;Handles the Paste_Cmd1=Find() script command<br />

NumberOfLines=3<br />

Line1=LinkExecute [Find(&FindVar1&,&FindVar2&,&FindVar3&)]<br />

Line2=LinkItem txtDDE<br />

Line3=LinkRequest<br />

[DDE_OTHER]<br />

;Handles the Paste_Cmd1=Other() script command<br />

NumberOfLines=1<br />

Line1=LinkExecute OtherVar1<br />

[DDE_SENDTHRU]<br />

;Handles the Paste_Cmd1=some_text script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [SendKey(&PassVar1&)]<br />

[DDE_SENDFKEYS]<br />

;Handles the key1=W,0,label,~~7 vlkeys.ini command<br />

;Handles the Paste_Cmd1=Release=x script command<br />

;Handles the Paste_Cmd1=Release=VAL=x script command<br />

NumberOfLines=1<br />

Line1=LinkExecute [SendKey(&Chr1&FKEYVar1&Chr13&)]<br />

[DDE_SENDPFKEYS]<br />

NumberOfLines=0<br />

; END OF DRV_DDE.INI


Configuring a Custom Form 9<br />

You can create any number of formn.ini files that can be configured with any<br />

number of objects. The following list identifies available object types:<br />

• Button<br />

• Label<br />

• TextField<br />

• MaskTextField<br />

• ComboField<br />

• ListField<br />

• CheckBox<br />

Loading a Form<br />

You can call a form from either a button in the vlkeys.ini file or from a script in<br />

the vlterm.ini file.<br />

You can automatically fill a form with data gathered using a CNPn script. Text<br />

fields, list boxes, and combo boxes can be filled with static text or information cut<br />

from emulation screen objects based on vlterm.ini script commands specified for<br />

each object.<br />

All object types except Button can also interact with other script commands by<br />

passing variables back to the vlterm.ini script. Label objects pass the value of the<br />

Caption setting. The other objects pass the value of the Contents setting.<br />

If a CNPn script calls the form, loading the form should be the last command in a<br />

script sequence. The form can execute other CNPn script sequences when the<br />

form closes. For example you can configure an OK button to execute a CNPn<br />

script.<br />

75


76 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

An alternate method is to call a form that sets a variable associated with each form<br />

object. These variables can be maintained globally for subsequent script command<br />

reference.<br />

vlkeys.ini Example<br />

Call the form load command from the vlkeys.ini file:<br />

key1=FRM1,0,Info frm,0~Show the Information form~1<br />

The example in key1 looks for the file form1.ini in the same directory as the<br />

<strong>Vlterm</strong> executable file. The relationship between the .ini file and the action<br />

command is that the “1” in FRM1 corresponds to the “1” in form1.ini. Similarly,<br />

FRM2 looks for the form2.ini file.<br />

vlterm.ini Example<br />

Call the form load from a vlterm.ini script using the FormLoad(n) command:<br />

[CNP1]<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

CNP_TYPE=2<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=1<br />

CUT_CMD1=(1,64,1,73)<br />

;Load the FORM1.INI file<br />

PASTE_CMD1=FormLoad(1)<br />

The example in CNP1 looks for the file form1.ini in the same directory as the<br />

vlterm executable file. The relationship is the “1” in FormLoad(1) corresponds to<br />

the “1” in form1.ini. Similarly, FormLoad(2) looks for the form2.ini file.<br />

For more information about the FormLoad() command, see “FormLoad()” on<br />

page 47.<br />

Formn.ini File Setup<br />

This section identifies the sections of a formn.ini file and the configuration<br />

settings for each section.


[GLOBAL]<br />

Configuring a Custom Form 77<br />

ControlFocus<br />

ControlFocus=(n)<br />

ControlFocus specifies the object in the form that has initial focus when the form<br />

is opened. If the number defined is for a text object, the cursor flashes in that<br />

object.<br />

The value of n ranges from 1 to the number of objects.<br />

NumObjects<br />

NumObjects=(n)<br />

NumObjects identifies the total number of objects that you setup in the form. This<br />

number corresponds to the number of objects added in the Formn.ini file.<br />

The value of n can be greater than or equal to 1. There is no default setting.<br />

NumObjects is a required entry.<br />

Position<br />

Position=(left, top, width, height)<br />

Position determines the position and size of the form. These values are<br />

automatically changed if the variable UserSetSize is set to Y.<br />

Left, top, width, and height must be integer values. The default Position setting is<br />

(0,0,200,50).<br />

UserSetSize<br />

UserSetSize=[{Y|True}|{N|False}]<br />

You can let users change the size of the form by setting UserSetSize to Y or True.<br />

When set to Y or True, <strong>Vlterm</strong> saves the new window size setting. If you set the<br />

variable to N or False, users can modify the window size, but <strong>Vlterm</strong> does not save<br />

the user-defined setting.<br />

Acceptable values for UserSetSize are Y, N, True, or False. The default setting is<br />

N.


78 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

WindowStyle<br />

WindowStyle=[0|1]<br />

You can set the style for an open window. The choices are 1 (Modal), indicating<br />

that the user must respond before continuing, or 0 (Modeless), indicating that the<br />

user may use other windows while leaving this window open.<br />

Values for WindowStyle are 0 or 1. The default value is 1, Modal.<br />

CAUTION Try to provide a mechanism or procedure for the window to close<br />

after use. If too many windows are open, Windows will run out of system<br />

resources, slowing or halting your computer.<br />

UnloadOtherForms<br />

UnloadOtherForms=All<br />

If one or more forms are open, UnloadOtherForms unloads the forms. More than<br />

one form can be open at a time if the WindowStyle is set to 0.<br />

WindowTitle<br />

WindowTitle=string<br />

WindowTitle sets the string of text that appears in the window title bar.<br />

The default value is a blank string (“”).<br />

MinButton<br />

MinButton=[Y|N]<br />

MinButton determines whether a Minimize Window option appears on the form<br />

menu bar.<br />

MaxButton<br />

MaxButton=[Y|N]<br />

MaxButton determines whether a Maximize Window option appears on the form<br />

menu bar.


[Objectn]<br />

Action<br />

Configuring a Custom Form 79<br />

Action=CNPn<br />

When you define an action for a button object, you identify a specific CNPn to<br />

run. When an agent chooses the button, <strong>Vlterm</strong> performs all the cut and paste<br />

actions defined for the CNPn in the vlterm.ini file, then returns control to the form.<br />

The default value for Action is a blank string (“”), which means no action is taken.<br />

Apply the Action setting to Button objects.<br />

Cancel<br />

Cancel=[{Y|True}|{N|False}]<br />

Cancel sets the first command performed by the Button object to close the form<br />

that has been loaded without performing any Actions or Required checks.<br />

Acceptable values of Cancel are Y, N, True, or False. The default setting is N.<br />

Apply the Cancel setting to Button objects.<br />

Caption<br />

Caption=string<br />

Caption sets the text label for the specified object.<br />

Label objects can return the caption value as a VARn to the <strong>Vlterm</strong> script that calls<br />

the form. To pass the Caption value back to the script, define the object using the<br />

Object setting, then reference the object as a variable using the Parameters setting<br />

of a button object. See “Object” and “Parameters” on page 82 for more<br />

information.<br />

The default value for Caption is a blank string (“”).<br />

Apply the Caption setting to Button, CheckBox, and Label objects.


80 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

CloseForm<br />

CloseForm=[{Y|True}|{N|False}]<br />

CloseForm sets the last command performed by the Button object to close the<br />

form that has been loaded after performing all Contents items.<br />

Acceptable values of CloseForm are Y, N, True, or False. The default setting is N.<br />

Apply the CloseForm setting to Button objects.<br />

Contents<br />

Contents=[string, CNPn,C(n), ~ as the separator]<br />

Contents sets the initial value of the form object. For example, for a TextField<br />

object, the Contents value appears in the text field on the form. If you use a C(n)<br />

variable, the command places the contents of the last cut (stored in C(n)) into the<br />

text of the object. All cut and paste actions are performed within the CNPn and<br />

any other actions described. It’s a good idea to define a CNPn with only cut<br />

commands.<br />

Contents can appear on more than one line, each one being appended to the last.<br />

See “UseContentsData” on page 85 for more information.<br />

The default value for Contents is a blank string (“”).<br />

Apply the Contents setting to TextField, MaskTextField, and ComboField objects.<br />

FontBold<br />

FontBold=[True|False]<br />

FontBold sets the font to Bold (True) or Regular (False) for this object.<br />

The default value for FontBold is False.<br />

The FontBold setting applies to all objects.<br />

FontSize<br />

FontSize=n<br />

FontSize sets the font size for this object.<br />

The value of n can be an integer or decimal number. The default value is 8.25.<br />

The FontSize setting applies to all objects.


Configuring a Custom Form 81<br />

ForeColor<br />

ForeColor=n<br />

ForeColor sets the text color for each of the objects used. Color values range from<br />

0 to 15. See “Color” on page 13 for a table that correlates a number to a color.<br />

Valid settings for ForeColor are 0-15. The default is 0, which is black.<br />

The ForeColor setting applies to all objects except command buttons.<br />

Height<br />

Height=n<br />

Height specifies the height of the object. For Label, it is the maximum height of<br />

text that will show without being clipped off. Some objects have a minimum<br />

height. This is set by default.<br />

The value of n must be an integer. The default value is 10 or the objects minimum<br />

height.<br />

Assign a Height setting for the following object types: Button, Label, TextField,<br />

MaskTextField, ListField, and CheckBox.<br />

Left<br />

Mask<br />

Left=n<br />

Left specifies the left position of the object relative to the form.<br />

The value of n must be an integer. The default value is 0.<br />

Left applies to all objects.<br />

Mask=mask string<br />

Use the Mask setting a mask for data input into a MaskTextField. If you define a<br />

Mask, do not define the Contents setting with a CNPn and C(n).<br />

The default setting is a blank string (“”).<br />

The Mask setting applies to the MaskTextField object type.


82 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

MultiDelimiter<br />

MultiDelimiter=string<br />

MultiDelimiter defines the delimiter used between items if multiple items are<br />

selected. <strong>Vlterm</strong> inserts the MultiDelimiter string before each selected item, even<br />

if only one item is selected. If MultiDelimiter is left blank, <strong>Vlterm</strong> uses no<br />

characters between items within the object passed to the VARn. If you want to use<br />

a space as a delimiter, define MultiDelimiter=“ ” (quotation marks “ ” with a space<br />

between them).<br />

The default value for MultiDelimiter is a blank string (“”).<br />

The MultiDelimiter setting applies to the ListField object type.<br />

Object<br />

Object=string<br />

Object assigns a name to the contents of this object. With this object name, you<br />

can transfer the contents of this object to a vlterm script during a Button Action.<br />

Place the Object value in the Parameter setting for the Button. See “Action” on<br />

page 79 and “Parameters” on page 82 for more information.<br />

The default value for Object is a blank string (“”).<br />

The Object setting applies to the Label, TextField, MaskTextField, ComboField,<br />

ListField, and CheckBox object types.<br />

Parameters<br />

Parameters=Objectn<br />

Use the Parameters option to define the data (typically the Contents value for an<br />

object) that the form passes to the <strong>Vlterm</strong> script using variables (VARn). In the<br />

Parameters option, list the objects that you want placed in variables. To access the<br />

objects in a script, use a VARn in a PASTE_CMD command. If you don’t use a<br />

VARn in PASTE_CMD, <strong>Vlterm</strong> loads the object into a variable but never<br />

references it, then replaces the VARn value the next time the form object is used.<br />

The Action setting identifies the CNPn script that uses the variables identified in<br />

Parameters. See “Action” on page 79 for more information.<br />

The sequence of objects in the Parameters list determines the VARn to which<br />

they’re assigned. For example, the first object in the Parameters list corresponds<br />

to VAR1; the second object in the parameters list corresponds to VAR2.


Configuring a Custom Form 83<br />

For each object that you include in the Parameters list, define the Object setting in<br />

the corresponding Objectn section. Typically, you’ll use the Object section name<br />

as the Object setting. For example, to include the value of Object7 in the<br />

parameters list, set Object=Object7 in the [Object7] section. See the previous<br />

section, “Object,” for more information.<br />

In the Parameters value, use a tilde (~) to separate the object names to define more<br />

than one object. For example:<br />

Parameters=Object4~Object6~Object7~Object8<br />

The default value for Parameters is a blank string (“”). Parameters is a required<br />

entry.<br />

The Parameters setting applies to the Button and CheckBox object types.<br />

Password<br />

Password=[{Y|True}|{N|False}]<br />

The Password option, when the value is Y or true, sets a TextField object to<br />

display asterisks (*) as text is entered. Use this setting for a password or ID in<br />

login forms.<br />

Acceptable values of Password are Y, N, True, or False. The default setting is Y.<br />

Apply the Password setting to TextField objects.<br />

PasteIndex<br />

PasteIndex=n<br />

The value of n can be 1 to the total number of objects for the form.<br />

Required<br />

Required=[{Y|True}|{N|False}]<br />

Required sets the TextField object to Required before exiting the form.<br />

Acceptable values of Required are Y, N, True, or False. The default setting is Y.<br />

Apply the Required setting to TextField objects.


84 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

SQLContents<br />

SQLContents=[db name with path~db type~select statement]<br />

The contents are placed in the ListField or ComboField objects as selectable<br />

items. Each item of each field that is returned is parsed and placed in the list on its<br />

own line unless you use UseContentsData. (See “UseContentsData” on page 85<br />

for more information.)<br />

Example<br />

SQLContents=H:\CUSTOMER\DB~FoxPro 2.0;~select Value, code as<br />

ID from config<br />

The default value for SQLContents is empty.<br />

Use SQLContents with ListField and ComboField object types.<br />

TabIndex<br />

TabIndex=n<br />

TabIndex determines the order in which a Tab keystroke sets the focus to this<br />

object in relation to other objects with a TabIndex value.<br />

Set the value of n from 1 to the total number of objects on the form.<br />

TabIndex applies to all object types.<br />

Top<br />

Type<br />

Top=n<br />

The Top position of the object relative to the form.<br />

The value of n is an integer. The default value is 0.<br />

Top applies to all object types.<br />

Type=[Button|Label|TextField|MaskTextField|ComboField|ListField|CheckBox]<br />

Type identifies the type of object being configured. Each object type has<br />

configurations settings that are common with all other object types and<br />

configuration settings that are specific to that object. For ComboField, a single<br />

line with a pull-down ListField, all options are viewable unless the object height<br />

is insufficient, then a scroll bar appears.


Type does not have a default value. Type is a required setting.<br />

The Type option applies to all object types.<br />

Configuring a Custom Form 85<br />

UseContentsData<br />

UseContentsData=[{Y|True}|{N|False}]<br />

If you set UseContentsData to Y, the incoming Contents data is paired. The first is<br />

the display string; the second is the data string. For example, if Contents is<br />

“ID~1234~Name~Wally Smith,” the ListField or ComboField would display ID<br />

and Name, and the data associated with them would be 1234 and Wally Smith. See<br />

“Contents” on page 80 for more information.<br />

Acceptable values of UseContentsData are Y, N, True, or False. The default<br />

setting is N.<br />

Apply the UseContentsData setting to ListField and ComboField objects.<br />

Value<br />

Width<br />

Value={0|1|2}<br />

The Value setting determines the initial state of a CheckBox object.<br />

Setting Initial CheckBox Value<br />

0 Cleared (not selected)<br />

1 Selected (checked)<br />

2 Gray (CheckBox doesn’t accept input)<br />

The final CheckBox setting is passed back through the object property to the script<br />

section that called the form.<br />

Width=n<br />

Width sets the width of the object being loaded. For Label, it is the maximum<br />

width of text that can appear before being truncated.<br />

Set the value of n to an integer. The default value is 10 or the object’s minimum<br />

width.<br />

Apply the Width setting to all object types.


86 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Sample Form1.ini File<br />

[GLOBAL]<br />

WindowTitle=Customer Information<br />

WindowStyle=1<br />

NumObjects=8<br />

UserSetSize=N<br />

Position=0,7045,11985,1615<br />

ControlFocus=<br />

UnloadOtherForms=All<br />

MinButton=N<br />

MaxButton=N<br />

;This object is a button which has the text OK in it. When it<br />

is pressed, CNP24 is executed, and the form closes. It will<br />

pass four parameters to CNP24. The Object4 parameter refers<br />

to the contents of Object four on this form. It is passed to<br />

the CNP24 script as VAR1. Additional parameters would be VAR2,<br />

etc.<br />

[Object1]<br />

Type=Button<br />

Caption=OK<br />

Action=CNP24<br />

Parameters=Object4~Object6~Object7~Object8<br />

Cancel=N<br />

CloseForm=Y<br />

Left=700<br />

Top=5<br />

Width=<br />

Height=<br />

FontBold=Y<br />

FontSize=8.25<br />

[Object2]<br />

Type=Button


Caption=Cancel<br />

Action=<br />

Parameters=<br />

Cancel=Y<br />

CloseForm=Y<br />

Left=700<br />

Top=30<br />

Width=<br />

Height=<br />

FontBold=Y<br />

FontSize=8.25<br />

[Object3]<br />

Type=Label<br />

Caption=Account Num:<br />

Left=10<br />

Top=5<br />

Width=100<br />

Height=20<br />

FontBold=True<br />

FontSize=8.25<br />

ForeColor=0<br />

[Object4]<br />

Type=TextField<br />

Object=Object4<br />

Password=<br />

Contents=CNP27~C(1)<br />

Required=<br />

Left=100<br />

Top=5<br />

Width=350<br />

Height=<br />

Configuring a Custom Form 87


88 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[Object5]<br />

Type=Label<br />

Caption=Date:<br />

Left=10<br />

Top=25<br />

Width=100<br />

Height=20<br />

FontBold=True<br />

FontSize=<br />

ForeColor=12<br />

[Object6]<br />

Type=MaskTextField<br />

Object=Object6<br />

Contents=<br />

Required=Y<br />

Mask=##/##/##<br />

Left=100<br />

Top=25<br />

Width=350<br />

Height=10<br />

FontBold=True<br />

FontSize=<br />

ForeColor=0<br />

[Object7]<br />

Type=ListField<br />

Object=Object7<br />

Contents=Home~Work~Cellular<br />

Contents=Fax~Pager<br />

Left=460<br />

Top=5<br />

Width=200<br />

Height=50


FontBold=True<br />

FontSize=8.25<br />

ForeColor=0<br />

MultiDelimiter=,<br />

[Object8]<br />

Type=ComboField<br />

Object=Object8<br />

UseContentsData=Y<br />

Contents=Red~1<br />

Contents=Yellow~2<br />

Contents=Green~3<br />

Contents=Blue~4<br />

Left=460<br />

Top=50<br />

Width=200<br />

FontBold=True<br />

FontSize=12<br />

ForeColor=12<br />

Configuring a Custom Form 89


90 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Using the Format Function A<br />

The Format command displays a number, date, time, or string according to<br />

instructions contained in the format expression. The FORMAT command syntax<br />

is:<br />

FORMAT(fmt)<br />

The format expression (fmt) can be a commonly used format name or a string of<br />

display-format characters that specify how <strong>Vlterm</strong> displays the data. You can’t use<br />

different format expression types (numeric, date/time, or string) in a single (fmt)<br />

argument.<br />

The content in this appendix was adapted from the Microsoft Visual Basic Online<br />

Help.<br />

Numeric Formats<br />

To format numbers, you can use predefined formats or you can create user-defined<br />

formats with standard characters that have special meaning in a format expression.<br />

91


92 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Predefined Numeric Formats<br />

The following table shows the predefined numeric format names you can use.<br />

Format name Description<br />

General Number Displays the number as is, without thousand separators.<br />

Currency Displays the number with a thousand separator. If appropriate,<br />

displays negative numbers enclosed in parentheses; displays two<br />

digits to the right of the decimal separator.<br />

Fixed Displays at least one digit to the left and two digits to the right of<br />

the decimal separator.<br />

Standard Displays the number with a thousand separator and, if appropriate,<br />

displays two digits to the right of the decimal separator.<br />

Percent Displays the number multiplied by 100 with a percent sign (%)<br />

appended to the right; displays two digits to the right of the decimal<br />

separator.<br />

Scientific Uses standard scientific notation.<br />

Yes/No Displays No if number is 0, otherwise displays Yes.<br />

True/False Displays False if number is 0, otherwise displays True.<br />

On/Off Displays Off if number is 0, otherwise displays On.


User-Defined Numeric Formats<br />

Using the Format Function 93<br />

The following table lists the characters you can use to create user-defined number<br />

formats.<br />

Character Meaning<br />

Null string Display the number with no formatting.<br />

0 Digit placeholder. Display a digit or a zero. If there is a digit in the<br />

expression in the position where the 0 appears in the format string,<br />

display it; otherwise, display a zero in that position. If the number<br />

being formatted has fewer digits than there are zeros (on either side<br />

of the decimal) in the format expression, display leading or trailing<br />

zeros. If the number has more digits to the right of the decimal<br />

separator than there are zeros to the right of the decimal separator<br />

in the format expression, round the number to as many decimal<br />

places as there are zeros. If the number has more digits to the left of<br />

the decimal separator than there are zeros to the left of the decimal<br />

separator in the format expression, displays the extra digits without<br />

modification.<br />

# Digit placeholder. Display a digit or a blank space. If there is a digit<br />

in the expression where the # appears in the format string, display<br />

it; otherwise, display nothing in that position. This symbol works<br />

like the 0 digit placeholder, except that leading and trailing zeros<br />

aren’t displayed if the number has the same or fewer digits than<br />

there are # characters on either side of the decimal separator in the<br />

format expression.<br />

. (period) Decimal placeholder. The decimal placeholder determines how<br />

many digits are displayed to the left and right of the decimal<br />

separator. If the format expression contains only number signs to<br />

the left of this symbol, numbers smaller than 1 begin with a<br />

decimal separator. If you want a leading zero to always appear with<br />

fractional numbers, use 0 as the first digit placeholder to the left of<br />

the decimal separator. The actual character used as a decimal<br />

placeholder in the formatted output depends on the specified<br />

Number Format in the International section of the Microsoft<br />

Windows Control Panel. Some countries use a comma as the<br />

decimal separator.<br />

% Percentage placeholder. The expression is multiplied by 100. The<br />

percent character (%) is inserted in the position where it appears in<br />

the format string.


94 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Character Meaning<br />

, (comma) Thousand separator. The thousand separator separates thousands<br />

from hundreds within a number that has four or more places to the<br />

left of the decimal separator. Standard use of the thousand separator<br />

is specified if the format contains a comma surrounded by digit<br />

placeholders (0 or #). Two adjacent commas or a comma<br />

immediately to the left of the decimal separator (whether or not a<br />

decimal is specified) means to scale the number by dividing it by<br />

1000, rounding as needed. You can scale large numbers using this<br />

technique. For example, you can use the format string “##0,,” to<br />

represent 100 million as 100. Numbers smaller than 1 million are<br />

displayed as 0. Two adjacent commas in any position other than<br />

immediately to the left of the decimal separator are treated simply<br />

as a thousand separator. The actual character used as the thousand<br />

separator in the formatted output depends on the specified Number<br />

Format in the International section of the Control Panel. Some<br />

countries use a period as the thousand separator.<br />

E- E+ e- e+ Scientific format. If the format expression contains at least one digit<br />

placeholder (0 or #) to the right of E-, E+, e-, or e+, the number is<br />

displayed in scientific format and E or e is inserted between the<br />

number and its exponent. The number of digit placeholders to the<br />

right determines the number of digits in the exponent. Use E- or eto<br />

place a minus sign next to negative exponents. Use E+ or e+ to<br />

place a minus sign next to negative exponents and a plus sign next<br />

to positive exponents.<br />

: (colon) Time separator. The time separator separates hours, minutes, and<br />

seconds when time values are formatted. The actual character used<br />

as the time separator depends on the specified Time Format in the<br />

International section of the Control Panel.


Character Meaning<br />

Using the Format Function 95<br />

/ Date separator. The date separator separates the day, month, and<br />

year when date values are formatted. The actual character used as<br />

the date separator in the formatted output depends on the specified<br />

Date Format in the International section of the Control Panel.<br />

- + $ ( ) space Display a literal character. To display a character other than one of<br />

those listed, precede it with a backslash (\) or enclose it in quotation<br />

marks (“”).<br />

\ Display the next character in the format string. Many characters in<br />

the format expression have a special meaning and can’t be<br />

displayed as literal characters unless they are preceded by a<br />

backslash. <strong>Vlterm</strong> doesn’t display the backslash itself. Using a<br />

backslash is the same as enclosing the next character in quotation<br />

marks (“”). To display a backslash, use two backslashes (\\).<br />

Examples of characters that can’t be displayed as literal characters<br />

unless they are preceded by a backslash are the date- and timeformatting<br />

characters (a, c, d, h, m, n, p, q, s, t, w, y, and /:), the<br />

numeric-formatting characters (#, 0, %, E, e, comma, and period),<br />

and the string-formatting characters (@, &,, and !). “ABC”<br />

displays the string inside the quotation marks.<br />

Unless the (fmt) argument contains a predefined format, a format expression for<br />

numbers can have from one to four sections separated by semicolons.<br />

If you use The result is<br />

One section only The format expression applies to all values.<br />

Two sections The first section applies to positive values and zeros, the second to<br />

negative values.<br />

Three sections The first section applies to positive values, the second to negative<br />

values, and the third to zeros.<br />

Four sections The first section applies to positive values, the second to negative<br />

values, the third to zeros, and the fourth to null values.<br />

The following example has two sections: the first defines the format for positive<br />

values and zeros; the second section defines the format for negative values.<br />

“$#,##0;($#,##0)”


96 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

If you include semicolons with nothing between them, the missing section is<br />

displayed using the format of the positive value. For example, the following<br />

format displays positive and negative values using the format in the first section<br />

and displays “Zero” if the value is zero.<br />

“$#,##0;;\Z\e\r\o”<br />

Some sample format expressions for numbers are shown in the following table.<br />

(These examples all assume that the Country setting in the International section of<br />

the Control Panel is United States.) The first column contains the format strings.<br />

The other columns contain the output that results if the formatted data has the<br />

value given in the column headings.<br />

Format (fmt) Positive 5 Negative 5 Decimal .5 Null<br />

Null string 5 -5 0.5<br />

0 5 -5 1<br />

0.00 5.00 -5.00 0.50<br />

#,##0 5 -5 1<br />

#,##0.00;;;Nil 5.00 -5.00 0.50 Nil<br />

$#,##0;($#,##0) $5 ($5) $1<br />

$#,##0.00;($#,##0.00) $5.00 ($5.00) $0.50<br />

0% 500% -500% 50%<br />

0.00% 500.00% -500.00% 50.00%<br />

0.00E+00 5.00E+00 -5.00E+00 5.00E-01<br />

0.00E-00 5.00E00 -5.00E00 5.00E-01<br />

Date and Time Formats<br />

Numbers can also be used to represent date and time information. You can format<br />

date and time serial numbers using date and time formats or number formats<br />

because date and time serial numbers are stored as floating-point values. To<br />

format dates and times, use either the commonly used formats or create userdefined<br />

time formats using standard characters that have special meaning in a<br />

format expression.


Predefined Date and Time Formats<br />

The following table lists the predefined data format names.<br />

Format Name Description<br />

User-Defined Date and Time Formats<br />

Using the Format Function 97<br />

General Date Display a date or time or both. For real numbers, display a date and<br />

time; for example, 4/3/93 05:34 PM. If there is no fractional part,<br />

display only a date; for example 4/3/93. If there is no integer part,<br />

display time only; for example, 05:34 PM.<br />

Long Date Display a Long Date, as defined in the International section of the<br />

Control Panel.<br />

Medium Date Display a date in the same form as the Short Date, as defined in the<br />

International section of the Control Panel, except spell out the<br />

month abbreviation.<br />

Short Date Display a Short Date, as defined in the International section of the<br />

Control Panel.<br />

Long Time Display a Long Time, as defined in the International section of the<br />

Control Panel. Long Time includes hours, minutes, and seconds.<br />

Medium Time Display time in 12-hour format using hours and minutes and the<br />

AM/PM designator.<br />

Short Time Display a time using the 24-hour format, for example 17:45.<br />

The following table lists the characters you can use to create user-defined date and<br />

time formats.<br />

Character Meaning<br />

c Display the date as ddddd and display the time as ttttt, in that order.<br />

Only date information is displayed if there is no fractional part to<br />

the date serial number; only time information is displayed if there is<br />

no integer portion.<br />

d Display the day as a number without a leading zero (1-31).<br />

dd Display the day as a number with a leading zero (01-31).<br />

ddd Display the day as an abbreviation (Sun-Sat).<br />

dddd Display the day as a full name (Sunday-Saturday).


98 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Character Meaning<br />

ddddd Display a date serial number as a complete date (including day,<br />

month, and year) formatted according to the Short Date setting in<br />

the International section of the Windows Control Panel. The default<br />

ShortDateformatism/d/yy.<br />

dddddd Display a date serial number as a complete date (including day,<br />

month, and year) formatted according to the Long Date setting in<br />

the International section of the Control Panel. The default Long<br />

Date format is mmmm dd, yyyy.<br />

w Display the day of the week as a number (1 for Sunday through 7<br />

for Saturday.)<br />

ww Display the week of the year as a number (1-52).<br />

m Display the month as a number without a leading zero (1-12). If m<br />

immediately follows h or hh, the minute rather than the month is<br />

displayed.<br />

mm Display the month as a number with a leading zero (01-12). If m<br />

immediately follows h or hh, the minute rather than the month is<br />

displayed.<br />

mmm Display the month as an abbreviation (Jan-Dec).<br />

mmmm Display the month as a full month name (January-December).<br />

q Display the quarter of the year as a number (1-4).<br />

y Display the day of the year as a number (1-366).<br />

yy Display the year as a two-digit number (00-99).<br />

yyyy Display the year as a four-digit number (100-9999).<br />

h Display the hour as a number without leading zeros (0-23).<br />

hh Display the hour as a number with leading zeros (00-23).<br />

n Display the minute as a number without leading zeros (0-59).<br />

nn Display the minute as a number with leading zeros (00-59).<br />

s Display the second as a number without leading zeros (0-59).<br />

ss Display the second as a number with leading zeros (00-59).


Character Meaning<br />

Using the Format Function 99<br />

t t t t t Display a time serial number as a complete time (including hour,<br />

minute, and second) formatted using the time separator defined by<br />

the time Format in the International section of the Control Panel. A<br />

leading zero is displayed if the Leading Zero option is selected and<br />

the time is before 10:00 A.M. or P.M. The default time format is<br />

h:mm:ss.<br />

AM/PM Use the 12-hour clock and display an uppercase AM with any hour<br />

before noon; display an uppercase PM with any hour between noon<br />

and 11:59 PM.<br />

am/pm Use the 12-hour clock and display a lowercase am with any hour<br />

before noon; display a lowercase pm with any hour between noon<br />

and 11:59 PM.<br />

A/P Use the 12-hour clock and display an uppercase A with any hour<br />

before noon; display an uppercase P with any hour between noon<br />

and 11:59 PM.<br />

a/p Use the 12-hour clock and display a lowercase a with any hour<br />

before noon; display a lowercase p with any hour between noon<br />

and 11:59 PM.<br />

AMPM Use the 12-hour clock and display the contents of the 1159 string<br />

(s1159) in the win.ini file with any hour before noon; display the<br />

contents of the 2359 string (s2359) with any hour between noon<br />

and 11:59 PM. AMPM can be either uppercase or lowercase, but<br />

the case of the string displayed matches the string as it exists in the<br />

win.ini file. The default format is AM/PM.<br />

The following are examples of user-defined date and time formats.<br />

Format Display<br />

m/d/yy 12/7/58<br />

d-mmmm-yy 7-December-58<br />

d-mmmm 7-December<br />

mmmm-yy December 58<br />

hh:mm AM/PM 08:50 PM<br />

h:mm:ss a/p 8:50:35 p


100 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Format Display<br />

h:mm 20:50<br />

h:mm:ss 20:50:35<br />

m/d/yy h:mm 12/7/58 20:50<br />

String Formats<br />

Strings can also be formatted with Format[$]. A format expression for strings can<br />

have one section or two sections separated by a semicolon.<br />

If you use The result is<br />

One section only The format applies to all string data.<br />

Two sections The first section applies to string data, the second to Null values<br />

and zero-length strings.<br />

You can use any of the following characters to create a format expression for<br />

strings.<br />

Character Meaning<br />

@ Character placeholder. Display a character or a space. If there is a<br />

character in the string being formatted in the position where the @<br />

appears in the format string, display it; otherwise, display a space in that<br />

position. Placeholders are filled from right to left unless there is an !<br />

character in the format string.<br />

& Character placeholder. Display a character or nothing. If there is a<br />

character in the string being formatted in the position where the &<br />

appears, display it; otherwise, display nothing. Placeholders are filled<br />

from right to left unless there is an ! character in the format string.<br />

< Force lowercase. All characters are displayed in lowercase format.<br />

> Force uppercase. All characters are displayed in uppercase format.<br />

! Force placeholders to fill from left to right instead of right to left.


Using the SendKeys Function B<br />

The <strong>Vlterm</strong> SendKeys function is an adaptation of the SendKeys methodology.<br />

<strong>Vlterm</strong> SendKeys sends a single keystroke or multiple keystrokes to the active<br />

window as if they had been entered at the keyboard.<br />

<strong>Vlterm</strong> can send keystrokes to any Windows application as long as the receiving<br />

window is en emulation window to which <strong>Vlterm</strong> links during startup. The<br />

emulator must accept keystrokes from a source other than the keyboard. Use the<br />

SendKeys method to send information during cut and paste to a window that does<br />

not support DDE server.<br />

You can use the following <strong>Vlterm</strong> script commands with the SendKeys<br />

methodology:<br />

Cut Commands<br />

• ClipCut<br />

Paste Commands<br />

• SendKeys<br />

• ClipGet<br />

• ClipSet<br />

• ClipCopyBlock<br />

The content in this appendix was adapted from the Microsoft Visual Basic Online<br />

Help.<br />

101


102 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Sample Configuration<br />

The following sample shows a vlterm.ini file set up to use SendKeys.<br />

[SHELL]<br />

HTERM0=C:\win95\telnet.exe zurabi<br />

S_DELAY0=3<br />

HTERM1=notepad.exe c:\win95\config.txt<br />

S_DELAY1=3<br />

[WIN_TITLE]<br />

HWIN0=Telnet - zurabi<br />

HWIN1=config.txt - Notepad<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=<br />

HOST_TOPIC0=<br />

HOST_ITEM0=<br />

USE_DDE0=N<br />

DDE_CONFIG_SESSION0=<br />

DDE_DELAY1=3<br />

HOST_SERVER1=<br />

HOST_TOPIC1=<br />

HOST_ITEM1=<br />

USE_DDE1=N<br />

DDE_CONFIG_SESSION1=<br />

[CNP1]<br />

CNP_NAME=<br />

CUT_SESSION=0<br />

PASTE_SESSION=1


Usage<br />

CNP_TYPE=2<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=1<br />

CUT_CMD1=ClipCut(%ea%ec~(19,9,10))<br />

PASTE_CMD1=SendKeys=C(1)<br />

Using the SendKeys Function 103<br />

Each key on a keyboard is represented by one or more characters. To specify a<br />

single keyboard character, use the character itself. For example, to represent the<br />

letter A, use “A” for keytext (the string you use with the SendKeys command). If<br />

you want to represent more than one character, append each additional character<br />

to the one preceding it. To represent the letters A, B, and C, use “ABC” for<br />

keytext.<br />

The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses ( ) have<br />

special meanings to SendKeys. To specify one of these characters, enclose it in<br />

braces. For example, to specify the plus sign, use {+}. Brackets ([ ]) have no<br />

special meaning to SendKeys, but you must enclose them in braces because, in<br />

other applications, brackets do have special meaning that may be significant when<br />

dynamic data exchange (DDE) occurs. To send brace characters, use {{} and {}}.<br />

To specify characters that your system doesn’t display when you press a key (such<br />

as Enter or Tab) and keys that represent actions rather than characters, use the<br />

codes shown in the following table.<br />

Key Code Key Code<br />

Backspace {BACKSPACE} or {BS}<br />

or {BKSP}<br />

Break {BREAK}<br />

Caps Lock {CAPSLOCK} Clear {CLEAR}<br />

Del {DELETE} or {DEL} Down Arrow {DOWN}<br />

End {END} Enter {ENTER} or ~<br />

Esc {ESCAPE} or {ESC} Help {HELP}<br />

Home {HOME} Ins {INSERT}<br />

Left Arrow {LEFT} Num Lock {NUMLOCK}<br />

Page Down {PGDN} Page Up {PGUP}


104 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Key Code Key Code<br />

Print Screen {PRTSC} Right Arrow {Right}<br />

Scroll Lock {SCROLLLOCK} Tab {TAB}<br />

Up Arrow {UP} F1 {F1}<br />

F2 {F2} F3 {F3}<br />

F4 {F4} F5 {F5}<br />

F6 {F6} F7 {F7}<br />

F8 {F8} F9 {F9}<br />

F10 {F10} F11 {F11}<br />

F12 {F12} F13 {F13}<br />

F14 {F14} F15 {F15}<br />

F16 {F16}<br />

To specify keys used with any combination of the Shift, Ctrl, and Alt keys, precede<br />

the regular key code with one or more of the following codes.<br />

Key Code<br />

Shift +<br />

Control ^<br />

Alt %<br />

To specify that Shift, Ctrl, or Alt should be held down while other keys are<br />

pressed, enclose the key codes in parentheses. For example, to have the Shift key<br />

held down while E and C are pressed, use “+(EC).” To have Shift held down while<br />

E is pressed, followed by C being pressed without Shift, use “+EC.” To specify<br />

repeating keys, use the format {key number}; you must put a space between key<br />

and number. For example, {LEFT 42} represents pressing the Left Arrow key 42<br />

times; {h 10} represents pressing h ten times.<br />

NOTE SendKeys can’t send keystrokes to an application that is not designed to<br />

run in Microsoft Windows. Sendkeys also can’t send the Print Screen (PRTSC)<br />

key to any application.


Using the Like Operator C<br />

Use the Like operator to compare two string expressions. The syntax for the Like<br />

operator is:<br />

result=expression Like pattern<br />

If the expression matches the pattern, then the result is True; if there is no match,<br />

the result is False. If either the expression or the pattern is a Null, the result is also<br />

aNull.<br />

The case sensitivity and character sort order of the Like operator depend on the<br />

Option Compare statement. Unless otherwise specified, the default string<br />

comparison method for each module is Option Compare Binary; that is, string<br />

comparisons are case sensitive.<br />

Built-in pattern matching provides a versatile tool for string comparisons. The<br />

pattern-matching features allow you to use wildcard characters, such as those<br />

recognized by the operating system, to match strings. The wildcard characters and<br />

what they match are shown in the following table.<br />

Wildcard Character Matches in expression<br />

? Any single character<br />

* Zero or more characters<br />

# Any single digit (0–9)<br />

[charlist] Any single character in charlist<br />

[!charlist] Any single character not in charlist<br />

You can group one or more characters (charlist) enclosed in brackets ([ ]) to match<br />

any single character in the expression. Charlist can include almost any characters<br />

in the ANSI character set, including digits. The special characters left bracket ([ ),<br />

question mark (?), number sign (#), and asterisk (*) can be used to match<br />

105


106 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

themselves directly only by enclosing them in brackets. The right bracket ( ])<br />

cannot be used within a group to match itself, but it can be used outside a group<br />

as an individual character.<br />

In addition to a simple list of characters enclosed in brackets, charlist can specify<br />

a range of characters. Use a hyphen (-) to separate the upper and lower bounds of<br />

the range. For example, [A-Z] in pattern results in a match if the corresponding<br />

character position in an expression contains any of the uppercase letters in the<br />

range A through Z. Multiple ranges are included within the brackets without any<br />

delimiter. For example, [a-zA-Z0-9] matches any alphanumeric character.<br />

The following list contains other important rules for pattern matching:<br />

• An exclamation point (!) at the beginning of charlist means that a match is<br />

made if any character except the ones in charlist are found in expression.<br />

When used outside brackets, the exclamation point matches itself.<br />

• You can use a hyphen (-) either at the beginning (after an exclamation mark,<br />

if one is used) or at the end of charlist to match itself. In any other location,<br />

the hyphen is used to identify a range of ANSI characters.<br />

• When you specify a range of characters, they must appear in ascending sort<br />

order (from lowest to highest). [A-Z] is a valid pattern, but [Z-A] is not.<br />

• The character sequence [ ] is ignored; it is considered a zero-length string.<br />

In some languages, there are special characters in the alphabet that actually<br />

represent two separate characters. For example, several languages use the<br />

character “Ê” to represent the characters “a” and “e” when they appear together.<br />

The Like operator recognizes that the single special character and the two<br />

individual characters are equivalent. When a language that uses a special character<br />

is specified in the win.ini file (sLanguage), an occurrence of the special single<br />

character in either pattern or expression matches the equivalent two-character<br />

sequence in the other string. Similarly, a special single character in pattern<br />

enclosed in brackets (by itself, in a list, or in a range), matches the equivalent twocharacter<br />

sequence in expression.<br />

The content in this appendix was adapted from the Microsoft Visual Basic Online<br />

Help.


Emulator Special @x Keys D<br />

When you use the DDE connection type, you can send the special characters<br />

identified in the following table to the corresponding emulator. Send these<br />

character sequences using the PASTE_CMDn=Varn or PASTE_CMDn=@A<br />

commands.<br />

Special keystroke<br />

to send<br />

Equivalent<br />

<strong>Vlterm</strong><br />

command to<br />

script<br />

EXTRA!<br />

3270<br />

Irma<br />

3270<br />

Rumba<br />

3270<br />

Rumba<br />

5250<br />

@ @@ X X X<br />

Alt @A X X X<br />

Attention @A@Q X X<br />

Backspace @< X X X X<br />

Backtab (Left Tab) @B X X X X X<br />

Caps Lock @Y X<br />

Clear @C X X X X<br />

Rumba<br />

VAX<br />

Cmd Function Key @A@Y X =Control<br />

Key<br />

Copy @K X<br />

Cursor Down @V X X X<br />

Cursor Left @L X X X<br />

Cursor Right @Z X X X<br />

Cursor Select @A@J X<br />

Cursor Up @U X X X X<br />

107


108 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Special keystroke<br />

to send<br />

Equivalent<br />

<strong>Vlterm</strong><br />

command to<br />

script<br />

Delete Char @D X X X<br />

Dup @S@X X X<br />

End @q X<br />

Enlarge @M X<br />

Enter @E X X X X X<br />

Erase EOF @F X X X<br />

Erase Input @A@F X X =Remove<br />

Field + @A@+ X =Next<br />

Screen<br />

Field - @A@- X =Previous<br />

Screen<br />

Field Exit @A@E X =Find<br />

Field Mark @S@y X =Select<br />

Finish (Quit) @Q X<br />

Help @H X X<br />

Hexadecimal @A@X X =Compose<br />

Home @0 (zero) X X x X<br />

Insert @I X X X X<br />

Insert Toggle @A@I X<br />

Jump @J X<br />

Left Tab (Backtab) @B X X X X X<br />

Local Print @P X X<br />

New Line @N X<br />

Not Used @W X<br />

EXTRA!<br />

3270<br />

Irma<br />

3270<br />

Rumba<br />

3270<br />

Rumba<br />

5250<br />

Rumba<br />

VAX<br />

PA1 @x X X X =PF1<br />

PA2 @y X X X =PF2<br />

PA3 @z X X X =PF3


Special keystroke<br />

to send<br />

Equivalent<br />

<strong>Vlterm</strong><br />

command to<br />

script<br />

EXTRA!<br />

3270<br />

Irma<br />

3270<br />

Emulator Special @x Keys 109<br />

PA4 @+ X =PF4<br />

PA5 @% X<br />

PA6 @& X<br />

PA7 @ X<br />

PA8 @( X<br />

PA9 @) X<br />

PA10 @* X<br />

Rumba<br />

3270<br />

Page Down @v X<br />

Page Up @u X<br />

Rumba<br />

5250<br />

Rumba<br />

VAX<br />

PF1 @1 X X X X =F1<br />

PF2 @2 X X X X =F2<br />

PF3 @3 X X X X =F3<br />

PF4 @4 X X X X =F4<br />

PF5 @5 X X X X =F5<br />

PF6 @6 X X X X =F6<br />

PF7 @7 X X X X =F7<br />

PF8 @8 X X X X =F8<br />

PF9 @9 X X X X =F9<br />

PF10 @a X X X X =F10<br />

PF11 @b X X X X =F11<br />

PF12 @c X X X X =F12<br />

PF13 @d X X X X =F13<br />

PF14 @e X X X X =F14<br />

PF15 @f X X X X =F15<br />

PF16 @g X X X X =F16<br />

PF17 @h X X X X =F17


110 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Special keystroke<br />

to send<br />

Equivalent<br />

<strong>Vlterm</strong><br />

command to<br />

script<br />

PF18 @i X X X X =F18<br />

PF19 @j X X X X =F19<br />

PF20 @k X X X X =F20<br />

PF21 @l X X X X<br />

PF22 @m X X X X<br />

PF23 @n X X X X<br />

PF24 @o X X X X<br />

Print @P X X<br />

Print (PC) @A@t X<br />

Record Backspace @A@< X<br />

Reserved @X X<br />

EXTRA!<br />

3270<br />

Irma<br />

3270<br />

Reset @R X X X X<br />

Right Tab (Tab) @T X X X X X<br />

Shift @S X X<br />

Rumba<br />

3270<br />

Sys Request @A@H X X<br />

Tab @T X X X X X<br />

Test @A@c X<br />

Rumba<br />

5250<br />

Rumba<br />

VAX


ASCII and VT100 Control<br />

E<br />

Sequences<br />

ASCII Characters<br />

Unix host systems, such as the Mosaix system, interpret the following key<br />

sequences to control screen or cursor movement.<br />

ASCII Sequence Action<br />

^H Backspace<br />

^I Tab<br />

^J Line Feed<br />

^M Carriage Return<br />

^[ Escape<br />

Numeric Pad<br />

There are a number of DEC escape codes to change many areas of terminal<br />

operation such as keyboard, cursor, and display control. All of the DEC escape<br />

sequences may not be supported by the application handling VT emulation. The<br />

following table contains examples of common codes you can use.<br />

Escape Code<br />

^[P PF1<br />

^[Q PF2<br />

^[R PF3<br />

^[S PF4<br />

VT100 Keyboard<br />

Equivalent<br />

111


112 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Emulator Specifics F<br />

This appendix contains descriptions and samples of various emulator packages<br />

that<br />

Attachmate<br />

<strong>Vlterm</strong> supports several emulators offered by Attachmate Corporation.<br />

Netware LAN WS<br />

This section pertains to Attachmate Netware LAN WS 1.2 (previously offered by<br />

Novell).<br />

<strong>Vlterm</strong> communicates to Netware LAN using an intermediary program called<br />

ntwrdrv.exe. <strong>Vlterm</strong> uses DDE to communicate to ntwrdrv.exe, and ntwrdrv.exe<br />

communicates to Netware LAN using HLLAPI.<br />

HLLAPI is required because the Attachmate application doesn’t support DDE<br />

server and doesn’t accept the SendKeys() command, which simulates keystrokes<br />

to perform a host record lookup during cut and paste.<br />

<strong>Vlterm</strong>.ini Settings for Netware LAN WS<br />

[SHELL]<br />

HTERM1=c:\3270wks\wslanwin.exe c:\3270wks\lanws.wsc<br />

HTERM2=c:\Program Files\<strong>Vlterm</strong>\ntwrdrv.exe /SN=A /Debug=Off<br />

[WIN_TITLE]<br />

HWIN1=A:ABC SESSION (LANWS.WSC)<br />

HWIN2=Attachmate Netware Lan WS 1.2<br />

113


114 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[DDE_SESSION]<br />

HOST_SERVER1=<br />

HOST_TOPIC1=<br />

USE_DDE1=N<br />

DDE_CONFIG_SESSION1=<br />

HOST_SERVER2=NTWRDRV<br />

HOST_TOPIC2=Ntwrdrv.exe<br />

USE_DDE2=Y<br />

DDE_CONFIG_SESSION2=DRV_DDE.INI


EXTRA! version 4.3<br />

Emulator Specifics 115<br />

To start EXTRA! with particular session configurations and window sizes, open<br />

the sessions you want to configure in EXTRA!, size the windows, then save the<br />

layout. (From the Window menu, choose Save Layout.)<br />

Launch EXTRA! with the following Windows 95 command syntax:<br />

HWIN1=C:\Program Files\E!PC16\EXTRA!.EXE C:\ Program Files<br />

1\E!PC16\USER\HOST.EWL<br />

or<br />

HWIN1=C:\ PROGRA~1\E!PC16\EXTRA!.EXE<br />

C:\PROGRA~1\E!PC16\USER\HOST.EWL<br />

Sample <strong>Vlterm</strong>.ini for Attachmate EXTRA! version 4.3.<br />

[WIN_TITLE]<br />

HWIN0=KEA! 340 - MOSAIX<br />

HWIN1=EXTRA! A - Session1<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=keavt<br />

HOST_TOPIC0=macro<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=Kea_dde.ini<br />

DDE_DELAY1=3<br />

HOST_SERVER1=extra!<br />

HOST_TOPIC1=A<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=Ext_dde.ini


116 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

EXTRA! Personal Client 6.x and<br />

EXTRA! Bundle for TCP/IP Version 6.2<br />

Use EXTRA! Personal Client (EPC) 6.x 32-bit edition at sites running a 32-bit<br />

Windows environment such as Windows 95 or Windows NT. <strong>Vlterm</strong> can<br />

communicate with EXTRA! two different ways: SendKeys() and OLE.<br />

SendKeys() can be used without special adjustments in the 32-bit environment.<br />

EXTRA! supports OLE Automation, a Microsoft Windows standard for interprogram<br />

communications. As an OLE Automation server, EXTRA! exposes<br />

programmable objects like Session, Screen, and Toolbar, whose built-in<br />

functionality can be accessed by user-written applications. For example, you<br />

could write a PC application that transfers files between an IBM mainframe, AS/<br />

400, and VAX. You would not have to write the file transfer code, but merely<br />

invoke the file transfer functionality inherent in 3270, 5250, and VT Session<br />

objects. To access automation-enabled objects, you must use a macro or<br />

programming language that supports OLE Automation, such as the EXTRA!<br />

Basic language or Microsoft Visual Basic 3.0 or later.<br />

You control objects through their properties and methods using the dot syntax of<br />

object.property and object.method.<br />

For <strong>Vlterm</strong> to communicate to EPC using OLE, configure an additional<br />

application for each EPC emulation window required to which <strong>Vlterm</strong> connects.<br />

This additional application is called extdrv.exe, which is an external interface<br />

between <strong>Vlterm</strong> and EPC. <strong>Vlterm</strong> communicates to extdrv.exe using DDE.<br />

extdrv.exe communicates to EPC using OLE.<br />

Special Notes<br />

Consider the following recommendations when setting up a system that uses<br />

EXTRA!. See Appendix H, “Configuring For Driver Files,” beginning on page<br />

173, for further recommendations about configuring <strong>Vlterm</strong> to use a driver file for<br />

EXTRA!.<br />

• Note the relationship between the following:<br />

The [SHELL] section entry to start the extdrv.exe interface must specify a<br />

unique /SN= parameter for each instance:<br />

C:\Program Files\<strong>Vlterm</strong>\extdrv.exe /SN=MOSAIX /Debug=Off<br />

This parameter must be used in the corresponding [DDE_SESSION] section<br />

entries:


Emulator Specifics 117<br />

HOST_SERVER0=ExtDrv<br />

HOST_TOPIC0=MOSAIX<br />

The [WIN_TITLE] section must include:<br />

Extra Personal Client Driver - MOSAIX<br />

• EPC 6.1 uses a different method to send special key operations such as<br />

ENTER, CLEAR, or HOME.<br />

Send these instructions between angle bracket (< >) delimiters. For example,<br />

PASTE_CMD2=<br />

or<br />

PASTE_CMD2=<br />

See Appendix G, “Special EXTRA! Key Sequences,” beginning on page 169,<br />

for a complete listing.<br />

• If EXTRA! is installed using the Custom installation option, the API option<br />

must be selected for installation. Otherwise, the extdrv.exe drive cannot<br />

establish an OLE connection to EXTRA!.<br />

To confirm that EXTRA! OLE Automation support is available, create a<br />

macro using Learn. Play back the macro. If the macro playback is successful,<br />

OLE Automation is enabled in EXTRA!.<br />

Sample <strong>Vlterm</strong>.ini File for EXTRA! OLE<br />

[GLOBAL]<br />

MAX_SESSIONS=3<br />

MAX_CUTS=10<br />

MAX_PASTES=11<br />

NUMBER_CNPS=3<br />

NUMBER_VARS=9<br />

AUTO_INTERVAL=3<br />

AUTO_ENABLED=N<br />

VERSION=0<br />

[SHELL]<br />

HTERM0=c:\Program Files\<strong>Vlterm</strong>\EXTDRV.EXE /SN=MOSAIX /<br />

Debug=Off<br />

S_DELAY0=3


118 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

HTERM1=C:\Progra~1\E!PC\EXTRA.exe<br />

c:\Progra~1\E!PC\sessions\UNIXDE~1.edp<br />

S_DELAY1=3<br />

HTERM2=c:\Program Files\<strong>Vlterm</strong>\EXTDRV.EXE /SN=HOST /<br />

Debug=Off<br />

S_DELAY2=3<br />

HTERM3=C:\Progra~1\E!PC\EXTRA.exe<br />

c:\Progra~1\E!PC\sessions\Mainfr~1.edp<br />

S_DELAY3=3<br />

[WIN_TITLE]<br />

HWIN0=Extra Personal Client Driver - MOSAIX<br />

HWIN1=Unixde~1 - EXTRA! Personal Client<br />

HWIN2=Extra Personal Client Driver - HOST<br />

HWIN3=Mainfr~1 - EXTRA! Personal Client<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=ExtDrv<br />

HOST_TOPIC0=MOSAIX<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=DRV_DDE.ini<br />

DDE_DELAY1=3<br />

HOST_SERVER1=<br />

HOST_TOPIC1=<br />

HOST_ITEM1=<br />

USE_DDE1=N<br />

DDE_CONFIG_SESSION1=<br />

DDE_DELAY2=3<br />

HOST_SERVER2=ExtDrv<br />

HOST_TOPIC2=HOST<br />

HOST_ITEM2=


USE_DDE2=Y<br />

DDE_CONFIG_SESSION2=DRV_DDE.ini<br />

DDE_DELAY3=3<br />

HOST_SERVER3=<br />

HOST_TOPIC3=<br />

HOST_ITEM3=<br />

USE_DDE3=N<br />

DDE_CONFIG_SESSION3=<br />

DDE_TIMEOUT=20<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS=Y<br />

FKEYS_FILE=<br />

FKEYS_ON_TOP=Y<br />

CAPTION=<strong>Vlterm</strong><br />

ROW1=Y<br />

ROW2=Y<br />

ROW3=Y<br />

ROW4=N<br />

ROW5=N<br />

ROW6=N<br />

[CNP1]<br />

CNP_NAME=Main Cut and Paste Script<br />

CUT_SESSION=0<br />

PASTE_SESSION=2<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=5<br />

CUT_CMD1=(1,1,8)<br />

PASTE_CMD1=literal string<br />

PASTE_CMD2=<br />

;Set the Mosaix goto screen<br />

PASTE_CMD3=RELEASE=VAL=x<br />

Emulator Specifics 119


120 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

PASTE_CMD4=ToggleTo(3)<br />

PASTE_CMD5=FocusRemain(Y)<br />

[CNP2]<br />

CNP_NAME=Stop Extra driver to host session<br />

CUT_SESSION=2<br />

PASTE_SESSION=2<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=Other([exit()])<br />

PASTE_CMD2=CNP3<br />

[CNP3]<br />

CNP_NAME=Stop Extra driver to Mosaix session and <strong>Vlterm</strong><br />

CUT_SESSION=0<br />

PASTE_SESSION=0<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=Other([exit()])<br />

PASTE_CMD2=Exit_<strong>Vlterm</strong>


Hummingbird Communications Exceed<br />

Emulator Specifics 121<br />

Hummingbird Exceed Version 6.0 Multiplatform has been tested as a 3270<br />

emulator that communicates to a host system and a VT100 emulator that<br />

communicates to a Mosaix system using telnet. This section deals with issues<br />

specific to the Exceed emulator and <strong>Vlterm</strong>. <strong>Vlterm</strong> can communicate with<br />

Exceed using DDE. Exceed follows the Attachmate DDE convention.<br />

NOTE As a default, the DDE session numbers in the HOST_TOPIC=<br />

configuration are assigned in increasing numerical order depending on the order<br />

of executable startup.<br />

Special 3270 keystrokes are sent using the typical @x convention. See Appendix<br />

D, “Emulator Special @x Keys,” beginning on page 107 for more information.<br />

The cut area is specified by (PxxxLyyy) where P is the presentation space position,<br />

from 1 to 1920 representing row1 (positions 1 through 80) through row 24<br />

(positions 1841 through 1920). L represents the length of the string to cut.<br />

Example <strong>Vlterm</strong>.ini File for Exceed<br />

[SHELL]<br />

HTERM0=c:\hostex\programs\telnet.exe -P MOSAIX<br />

S_DELAY0=3<br />

HTERM1=c:\hostex\programs\tn3270.exe -P HOST<br />

S_DELAY1=3<br />

[WIN_TITLE]<br />

HWIN0=MOSAIX<br />

HWIN1=HOST<br />

[DDE_SESSION]<br />

DDE_DELAY0=6<br />

HOST_SERVER0=HOSTEX<br />

HOST_TOPIC0=1<br />

;NOTE: The DDE topic values seem to be assigned by the order<br />

;in which sessions are started. Maintaining a consistent<br />

;session start or is therefore very important.<br />

HOST_ITEM0=<br />

USE_DDE0=Y


122 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

DDE_CONFIG_SESSION0=HST_DDE.INI<br />

DDE_DELAY1=3<br />

HOST_SERVER1=HOSTEX<br />

HOST_TOPIC1=2<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=HST_DDE.INI<br />

DDE_TIMEOUT=10<br />

[CNP1]<br />

CNP_NAME=Sample host record lookup<br />

CUT_SESSION=1<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=4<br />

CUT_CMD1=(P2L16)<br />

PASTE_CMD1=SetVar1=C(1)<br />

PASTE_CMD2= VAR1<br />

PASTE_CMD3= @E<br />

PASTE_CMD4=Release=Val=hy


IBM Personal Communications 3270<br />

Emulator Specifics 123<br />

IBM Personal Communications (Pcomm) Version 4.0 has been tested with <strong>Vlterm</strong><br />

as a 3270 emulator to communicate to a host system. This section deals with issues<br />

specific to the Pcomm emulator and <strong>Vlterm</strong>.<br />

<strong>Vlterm</strong> can act as the DDE client and communicate with the Pcomm DDE server.<br />

Special 3270 keystrokes are sent using the typical @x convention. See Appendix<br />

D, “Emulator Special @x Keys,” beginning on page 107 for more information.<br />

Sample <strong>Vlterm</strong>.ini Settings for IBM Pcomm<br />

[SHELL]<br />

HTERM1=C:\PCOM\PCSWS.EXE c:\pcom\private\ss1.ws<br />

[WIN_TITLE]<br />

HWIN1= A - SuperSession 1<br />

[DDE_SESSION]<br />

DDE_DELAY1=3<br />

HOST_SERVER1=IBM3270<br />

HOST_TOPIC1= SessionA<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=IBM_DDE.INI<br />

[CNP1]<br />

CNP_NAME=Sample host record lookup<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=@E


124 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Irma 3270<br />

Irma Workstation for Windows (IWW) is unique among the emulators that <strong>Vlterm</strong><br />

supports. For IWW to respond to <strong>Vlterm</strong>’s DDE requests, it must be configured to<br />

execute a “quickscript” during startup to enable DDE serving. To create this<br />

configuration, copy the appropriate files from the <strong>Vlterm</strong> installation CD-ROM<br />

IRMA directory to the workstation’s IWW directory (default C:\IRMAWIN).<br />

Single Irma 3270 Session<br />

The files for a single 3270 session are described in the following table.<br />

hostA.qep This file associates a specific emulation session profile (for<br />

example, sessionA.emu) with a quickscript (for example,<br />

serverA.isx). Chaining this file with the IWW binary on the<br />

command line (for example, C:\irmawin\qexec.exe<br />

C:\irmawin\hostA.qep) causes IWW to load the session<br />

profile sessionA.emu and execute the quickscript<br />

serverA.isx. This file is predefined by Lucent and doesn’t<br />

need to be modified.<br />

serverA.isx This quickscript sets up DDE serving on IWW. It should be<br />

executed upon launching IWW and manually shut down after<br />

closing the emulation session. This file is predefined by<br />

Lucent and doesn’t need to be modified.<br />

serverA.isl This is an uncompiled version of the quickscript serverA.isx.<br />

It is a straight text file that outlines the DDE calls that IWW<br />

will accept. This file would have to be modified and<br />

recompiled to add additional DDE functionality. It is not<br />

recommend to change this file unless directed by Lucent or<br />

Attachmate.<br />

utils.isl This is a supplementary utilities quickscript for IWW that is<br />

called from serverA.isx. The utils.isl file provided by Lucent<br />

is an updated 1995 version that should replace any existing<br />

copy on the customer’s workstation. Only one copy of this<br />

file is required for multiple sessions. This file should not be<br />

modified in any way.


The customer needs to create one IRMA setup file.<br />

Multiple Irma 3270 Sessions<br />

Emulator Specifics 125<br />

sessionA.emu This file defines the customer’s emulation session profile. It<br />

contains information such as connection type, terminal<br />

display, key mapping, so on. The customer should create this<br />

file by following the steps outlined in the IWW User’s<br />

Guide.<br />

If you need to access more than one 3270 session with <strong>Vlterm</strong>, copy multiple<br />

instances of the files described in the previous section from the <strong>Vlterm</strong> installation<br />

CD-ROM to the customer’s IWW directory. The configuration files for each<br />

individual session are identified by an appended letter, for example, A for the first<br />

session, B for the second, C for the third, and D for the forth. For example, when<br />

using two IWW sessions with <strong>Vlterm</strong>, copy hostA.qep, hostB.qep, serverA.isx,<br />

serverB.isx, serverA.isl, serverB.isl, and one copy of utils.isl.<br />

You must create multiple sessionn.emu files for each connection. This can be a<br />

tricky procedure that requires a detailed understanding of the IWW User’s Guide.<br />

Each individual EMU session must be saved with an appended A, B, C or D<br />

depending on the number of emulation sessions. The best method to accomplish<br />

this is to create the first session, sessionA.emu. Once you save sessionA.emu,<br />

choose New Display from the File menu to create a second session (B) and<br />

configure its connection type. Save this second session as sessionB.emu. Repeat<br />

this procedure for the number of needed sessions.<br />

NOTE <strong>Vlterm</strong> supports only four concurrent IWW sessions (A, B, C, and D).<br />

The HTERMn entries in the vlterm.ini file must have a separate line for each<br />

session. The main binary in the IRMAWIN directory is named qexec.exe. This<br />

binary must be followed by the QEP file for a specific session. For example, the<br />

entries to configure two 3270 sessions would look like the following:<br />

HTERM0=C:\KEA\KEAVT.EXE C:\Program Files\<strong>Vlterm</strong>\MOSAIX.VTP<br />

MOSAIX session with Kea!<br />

HTERM1=C:\IRMAWIN\QEXEC.EXE C:\IRMAWIN\HOSTA.QEP Session A of<br />

Irma<br />

HTERM2=C:\IRMAWIN\QEXEC.EXE C:\IRMAWIN\HOSTB.QEP Session B of<br />

Irma


126 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

MiniSoft PowerTerm<br />

PowerTerm Version 5.1.2 has been tested as a Host emulator in a Windows NT 4<br />

environment with <strong>Vlterm</strong> version 4.x 32-bit edition.<br />

PowerTerm supports DDE server. Only one instance of PowerTerm can be used as<br />

a DDE server. PowerTerm doesn’t support unique DDE topic names to<br />

differentiate connections.<br />

If you use PowerTerm for the Mosaix system VT connection, you can use<br />

ClipCut() to copy information from the screen. Setting DDE=N to force vlkeys.ini<br />

file control character to send Mosaix releases is supported. PowerTerm accepts<br />

Sendkeys paste script commands, such as %e, to access that menu, but does not<br />

accept ordinary text to the screen.<br />

Send special keystrokes using the syntax. PowerTerm buffers<br />

keystrokes so that you can send data and press enter and have PowerTerm handle<br />

the pacing before sending the next data item.<br />

Sample <strong>Vlterm</strong>.ini File for PowerTerm<br />

[SHELL]<br />

HTERM1=\\Redfs01\custom\Alltel\MINISOFT\PTW\PTW32.EXE<br />

[WIN_TITLE]<br />

HWIN1=(A) T*<br />

[DDE_SESSION]<br />

DDE_DELAY1=3<br />

HOST_SERVER1=PTW<br />

HOST_TOPIC1=PSL<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=PTW_DDE.INI<br />

[CNP27]<br />

CNP_NAME=Main host record lookup<br />

CUT_SESSION=1<br />

PASTE_SESSION=1


Emulator Specifics 127<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=4<br />

;screen startRow startCol [endRow] endCol<br />

CUT_CMD1=(23 1 23 18)<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=SetVar1=abc<br />

PASTE_CMD3=Var1<br />

PASTE_CMD4=literal string<br />

;Example of Buffered key input example, no need for OIA<br />

;PASTE_CMD1=1<br />

;PASTE_CMD2=<br />

;PASTE_CMD3=2<br />

;PASTE_CMD4=<br />

;PASTE_CMD5=3<br />

;PASTE_CMD6=


128 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Netmanage Chameleon<br />

HostLink 97<br />

This section deals with issues specific to the HostLink 97 emulator and <strong>Vlterm</strong>.<br />

<strong>Vlterm</strong> can communicate with HLLAPI, a High-Level Language Application<br />

Programming Interface, for communications between 3270 sessions.<br />

NOTE The HostLink Driver connection to <strong>Vlterm</strong> fails if the other applications<br />

(terminal or printer sessions) are not already open. To connect to such a window,<br />

use a wildcard(*) in the [WIN_TITLE] section of the vlterm.ini file.<br />

Chameleon Hostlink 97 Examples<br />

[WIN_TITLE]<br />

HWIN0=Telnet*<br />

HWIN1=HSLDRV32<br />

HWIN2=3270 Terminal*<br />

The HLLAPI driver Session Name should be A, and it must be one character in<br />

length.<br />

HTERM1=c:\Program Files\<strong>Vlterm</strong>\HSLDRV32.EXE /SN=A /Debug=ON<br />

Different versions of the software use different directory names. The directory<br />

names c:\Netmanag.95 and c:\Netmanag.32 look very much alike.<br />

NOTE Don’t confuse the Hostlink and Unixlink emulators. Although they are<br />

both produced by NetManage, Inc., they communicate with different machines.<br />

Sample <strong>Vlterm</strong>.ini File for Hostlink<br />

[GLOBAL]<br />

;DEBUG=ON<br />

MAX_SESSIONS=2<br />

MAX_CUTS=3<br />

MAX_PASTES=15<br />

NUMBER_CNPS=1<br />

NUMBER_VARS=3<br />

AUTO_INTERVAL=3<br />

AUTO_ENABLED=N


Emulator Specifics 129<br />

[SHELL]<br />

; Command lines for starting the emulator sessions.<br />

; The Mosaix system session is always session 0.<br />

HTERM0=TELNET.EXE 10.14.2.214<br />

s_delay0=3<br />

HTERM1=c:\Program Files\<strong>Vlterm</strong>\HSLDRV32.EXE /SN=A /Debug=OFF<br />

s_delay1=3<br />

;HTERM2=C:\NETMANAG.32\TN3270.EXE 168.61.2.18 1023<br />

HTERM2=C:\NETMANAG.32\TN3270.EXE -f<br />

C:\WINNT\Profiles\sh7790\Desktop\RJM.CFG<br />

s_delay2=3<br />

[WIN_TITLE]<br />

HWIN0=Telnet*<br />

HWIN1=HSLDRV32<br />

HWIN2=3270 Terminal*<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=<br />

HOST_TOPIC0=<br />

HOST_ITEM0=<br />

USE_DDE0=N<br />

DDE_CONFIG_SESSION0=<br />

DDE_DELAY1=3<br />

HOST_SERVER1=HSLDRV32<br />

HOST_TOPIC1=A<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=DRV_DDE.INI<br />

DDE_DELAY2=3<br />

HOST_SERVER2=


130 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

HOST_TOPIC2=<br />

HOST_ITEM2=<br />

USE_DDE2=N<br />

DDE_CONFIG_SESSION2=<br />

; DDE session timeout in seconds<br />

DDE_TIMEOUT=8<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS = Y<br />

ROW1=Y<br />

ROW2=Y<br />

ROW3=Y<br />

ROW4=Y<br />

FKEYS_ON_TOP=Y<br />

CAPTION=<strong>Vlterm</strong><br />

[CNP1]<br />

CNP_NAME=Main cut and paste<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=3<br />

NUMBER_PASTE_COMMANDS=4<br />

;ACCTNUM<br />

CUT_CMD1=ClipCut(%ea%ec~(6,23,11))<br />

;MARKET<br />

CUT_CMD2=ClipCut(~(5,23,2))<br />

;NPA<br />

CUT_CMD3=ClipCut(~(6,23,3))<br />

PASTE_CMD1=C(2)<br />

PASTE_CMD2=C(3)<br />

PASTE_CMD3=@E<br />

PASTE_CMD4=OIA,*CLEAR*


Unixlink 97 Version 7.0<br />

Emulator Specifics 131<br />

Chameleon Unixlink 97 by NetManage, Inc. has been tested as a host emulator in<br />

a Windows NT environment with <strong>Vlterm</strong> version 4.4 32-bit edition.<br />

NOTE The <strong>Vlterm</strong> SendKeys command cannot be used with Unixlink. Unixlink<br />

will not respond to Sendkeys.<br />

Unixlink supports HLLAPI for communications between 3270 sessions.<br />

You can paste special keys by using the @ character convention. For example,<br />

PASTE_CMD1=@E *<br />

The HLLAPI driver Session Name should be A, and it must be one character in<br />

length. For example,<br />

HTERM1=c:\Program Files\<strong>Vlterm</strong>\HSLDRV32.EXE /SN=A /Debug=ON<br />

Sample <strong>Vlterm</strong>.ini File for Unixlink<br />

[SHELL]<br />

HTERM0=C:\NETMANAG.32\TELNET.EXE<br />

s_delay0=3<br />

HTERM1=c:\Program Files\<strong>Vlterm</strong>\UXLDRV32.EXE /SN=A /Debug=ON<br />

s_delay1=3<br />

HTERM2=C:\NETMANAG.95\TN3270.EXE HOST.CFG<br />

s_delay2=3<br />

[WIN_TITLE]<br />

HWIN0=Telnet -*<br />

HWIN1=Unixlink Hllapi Driver 32 - A<br />

HWIN2=3270 Terminal*<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=<br />

HOST_TOPIC0=<br />

HOST_ITEM0=<br />

USE_DDE0=N<br />

DDE_CONFIG_SESSION0=


132 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

DDE_DELAY1=3<br />

HOST_SERVER1=UXLDRV32<br />

HOST_TOPIC1=A<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=DRV_DDE.INI<br />

DDE_DELAY2=3<br />

HOST_SERVER2=<br />

HOST_TOPIC2=<br />

HOST_ITEM2=<br />

USE_DDE2=N<br />

DDE_CONFIG_SESSION2=<br />

DDE_TIMEOUT=20<br />

[CNP1]<br />

CNP_NAME=CNP<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=8<br />

PASTE_CMD1=1<br />

PASTE_CMD2=@E<br />

PASTE_CMD3=OIA,*CLEAR*<br />

PASTE_CMD4=2<br />

PASTE_CMD5=@E<br />

PASTE_CMD6=OIA,*CLEAR*<br />

;PASTE_CMD7=C(1)<br />

PASTE_CMD7=SetVar1=abc123ABC!@#<br />

PASTE_CMD8=Var1


PDSI Psched Software DDE Interface<br />

Emulator Specifics 133<br />

PDSI Psched has been tested as an application with a DDE server with which<br />

<strong>Vlterm</strong> can communicate. The tested communications consist of sending a data<br />

record to effect a host record lookup. No cut or other type of paste command has<br />

been tested.<br />

This section of the appendix deals with issues specific to the Psched emulator and<br />

<strong>Vlterm</strong>.<br />

The following is an example of the string expected by PDSI. PATIENT is a fixed<br />

string representing the message type; all other tilde delimited strings are fields<br />

from the Mosaix system session.<br />

PATIENT~A123456~MOORE ~JOHN ~M~01/22/1976~714-474-7374~800-<br />

756-5640~AN~Neg<br />

Data Description Data From a Record on the Mosaix System<br />

Message Type PATIENT<br />

Donor ID A123456<br />

Last Name MOORE<br />

First Name JOHN<br />

Middle M<br />

Date of Birth 01/22/1976<br />

Home Phone # 714-474-7374<br />

Work Phone # 800-756-5640<br />

Blood Type AN<br />

CMV Status Neg<br />

Sample <strong>Vlterm</strong>.ini Settings for PDSI<br />

[SHELL]<br />

HTERM1=c:\cms\psched\psched.exe dde<br />

[WIN_TITLE]<br />

HWIN1=PheresiSched*


134 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[DDE_SESSION]<br />

DDE_DELAY1=3<br />

HOST_SERVER1=PSched<br />

HOST_TOPIC1=Scheduling<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=PDSI_DDE.INI<br />

[CNP1]<br />

CNP_NAME=Main record lookup<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=8<br />

NUMBER_PASTE_COMMANDS=20<br />

;cut all the fields from the Mosaix Page2A screen<br />

;Reflection R2 format: (row1,col1,row2,col2) 0..79<br />

;Donor ID<br />

CUT_CMD1=(15,42,15,48)<br />

;Last Name<br />

CUT_CMD2=(0,45,0,68)<br />

;First Name<br />

CUT_CMD3=(0,6,0,20)<br />

;Middle Name<br />

CUT_CMD4=(0,24,0,38)<br />

;Date of Birth<br />

CUT_CMD5=(15,26,15,33)<br />

;Home Phone<br />

CUT_CMD6=(8,5,8,16)<br />

;Work Phone<br />

CUT_CMD7=(8,37,8,48)<br />

;Blood Type<br />

CUT_CMD8=(15,11,15,13)<br />

;CMV Status (actually part of Blood type field)<br />

;CUT_CMD9=(0,1,0,2)


Emulator Specifics 135<br />

PASTE_CMD1=Delay(.1)<br />

;set a tilde delimiter character between fields<br />

PASTE_CMD2=SetVAR1=~<br />

;Build up the DDE message to send to PDSI<br />

;Header description<br />

PASTE_CMD3=StrCat(VAR2~“PATIENT”)<br />

PASTE_CMD4=StrCat(VAR2~VAR1)<br />

;Donor ID<br />

PASTE_CMD5=StrCat(VAR2~CUT1)<br />

PASTE_CMD6=StrCat(VAR2~VAR1)<br />

;Last Name<br />

PASTE_CMD7=StrCat(VAR2~CUT2)<br />

PASTE_CMD8=StrCat(VAR2~VAR1)<br />

;First Name<br />

PASTE_CMD9=StrCat(VAR2~CUT3)<br />

PASTE_CMD10=StrCat(VAR2~VAR1)<br />

;Middle Name<br />

PASTE_CMD11=StrCat(VAR2~CUT4)<br />

PASTE_CMD12=StrCat(VAR2~VAR1)<br />

;Date of Birth<br />

PASTE_CMD13=StrCat(VAR2~CUT5)<br />

PASTE_CMD14=StrCat(VAR2~VAR1)<br />

;Home Phone<br />

PASTE_CMD15=StrCat(VAR2~CUT6)<br />

PASTE_CMD16=StrCat(VAR2~VAR1)<br />

;Work Phone<br />

PASTE_CMD17=StrCat(VAR2~CUT7)<br />

PASTE_CMD18=StrCat(VAR2~VAR1)<br />

;Blood Type<br />

; If the 3rdchar is blank, the string is only 2chars long.<br />

; evaluate the length, fill blood type and RH type depending<br />

on field length<br />

PASTE_CMD19=SetVar6=Midstring(CUT8~3~1)<br />

PASTE_CMD20=CVR6=:CNP6:CNP7


136 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[CNP6]<br />

CNP_NAME=Main record lookup continuation 2 char Blood type<br />

CUT_SESSION=0<br />

PASTE_SESSION=0<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=3<br />

;Blood type<br />

PASTE_CMD1=SetVar7=MidString(CUT8~1~1)<br />

;RH type<br />

PASTE_CMD2=SetVar8=MidString(CUT8~2~1)<br />

PASTE_CMD3=CNP8<br />

[CNP7]<br />

CNP_NAME=Main record lookup continuation 3 char Blood type<br />

CUT_SESSION=0<br />

PASTE_SESSION=0<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=3<br />

;Blood type<br />

PASTE_CMD1=SetVar7=MidString(CUT8~1~2)<br />

;RH type<br />

PASTE_CMD2=SetVar8=MidString(CUT8~3~1)<br />

PASTE_CMD3=CNP8<br />

[CNP8]<br />

CNP_NAME=Main record lookup continuation<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=5<br />

;Blood Type<br />

PASTE_CMD1=StrCat(VAR2~VAR7)<br />

PASTE_CMD2=StrCat(VAR2~VAR1)


;Append a CMV Status value as a filler for now<br />

;PASTE_CMD=StrCat(VAR2~CUT9)<br />

;RH Type (equivalent to CMV?)<br />

PASTE_CMD3=StrCat(VAR2~VAR8)<br />

;send the string to PDSI<br />

;PASTE_CMD4=Msg=VAR2<br />

PASTE_CMD4=VAR2<br />

;clear VAR2 for next time<br />

PASTE_CMD5=SetVAR2=“”<br />

Emulator Specifics 137


138 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Persoft SmarTerm<br />

The following example pertains to SmarTerm for Windows 95/NT Version 7.0.<br />

Sample <strong>Vlterm</strong>.ini File for SmarTerm<br />

[SHELL]<br />

HTERM0=c:\PROGRA~1\Persoft\STOFFICE.EXE<br />

c:\PROGRA~1\Persoft\sessions\mosaix.stw<br />

S_DELAY0=3<br />

HTERM1=c:\PROGRA~1\Persoft\STOFFICE.EXE<br />

c:\PROGRA~1\Persoft\sessions\cmis.stw<br />

S_DELAY1=3<br />

[WIN_TITLE]<br />

HWIN0=SmarTerm Office - [mosaix.stw]<br />

HWIN1=SmarTerm Office - [cmis.stw]<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=SToffice<br />

HOST_TOPIC0=mosaix.stw<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=Sma_dde.ini<br />

DDE_DELAY1=3<br />

HOST_SERVER1=SToffice<br />

HOST_TOPIC1=cmis.stw<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=Sma_dde.ini<br />

DDE_TIMEOUT=10<br />

[CNP1]<br />

CNP_NAME=Main Cut and Paste record lookup<br />

CUT_SESSION=0


PASTE_SESSION=1<br />

CNP_TYPE=2<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=3<br />

;row 3, col 43, page 1, len 12<br />

CUT_CMD1=(3,43,1,12)<br />

;Home<br />

PASTE_CMD1=^[P4<br />

;Tab<br />

PASTE_CMD2=^I<br />

PASTE_CMD3=C(1)<br />

PASTE_CMD4=^M<br />

Emulator Specifics 139<br />

See Appendix E, “ASCII and VT100 Control Sequences,” beginning on page 111<br />

for a description of the control sequences shown in the sample file.


140 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Quarterdeck Procomm Plus 32<br />

Procomm supports a DDE server API interface. The emulator can be used for<br />

either the Mosaix system or host connection. This emulator is typically used when<br />

the connection to the host system requires asynchronous serial communication, or<br />

the emulated terminal type must be an asynchronous terminal such as Wyse50,<br />

IBM3101, VT220 or TVI925.<br />

Verified functionality using the Procomm Plus emulator:<br />

• Send characters to a Procomm session<br />

• Get characters from a specified location<br />

• Send Mosaix system line releases to a Procomm session<br />

<strong>Vlterm</strong>.ini Settings for Procomm Plus<br />

[SHELL]<br />

HTERM0=D:\PROWIN\PROGRAMS\PW3.EXE CONNECT TELNET “ZURABI”<br />

; use PW4 for version 4.5<br />

[WIN_TITLE]<br />

HWIN0=PROCOMM PLUS for Windows*<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=PW3<br />

; use PW4 for version 4.5<br />

HOST_TOPIC0=system<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=PRO_DDE.INI<br />

[CNP15]<br />

CNP_NAME=Test CNP sample cut<br />

CUT_SESSION=0<br />

PASTE_SESSION=0<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=3<br />

;Procomm format: (row column ret_string string_len)


Emulator Specifics 141<br />

;note a start count of row 0..23 and column 0..79<br />

;S0 is a predefined global variable in Procomm Aspect script<br />

language to hold the cut data<br />

;this cut command copies from row0, col3, len10.<br />

CUT_CMD1=(0 3 S0 10)<br />

PASTE_CMD1=Msg=Cut1<br />

PASTE_CMD2=C(1)<br />

;Use ASCII control codes to send special keystrokes, or use<br />

sendkeys instead.<br />

;This is a carriage return<br />

PASTE_CMD3=^M<br />

PRO_DDE.INI Sample File<br />

Use the pre-configured PRO_DDE.INI file to specify the DDE commands to send<br />

to Procomm during script command interpretation.<br />

[DDE_CUTS]<br />

NumberOfLines=3<br />

Line1=LinkExecute ASPECTCMD termgets &CutVar1<br />

Line2=LinkItem S0<br />

Line3=LinkRequest<br />

[DDE_PASTECUTS]<br />

NumberOfLines=1<br />

Line1=LinkExecute TRANSMIT &PasteVar1&


142 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Sendkeys<br />

The following sample portion of a vlterm.ini configuration file demonstrates the<br />

use of Sendkeys to interact with the Mosaix system using Microsoft Telnet and a<br />

simulation of a non-API customer application, such as Microsoft Notepad.<br />

[GLOBAL]<br />

MAX_SESSIONS=1<br />

MAX_CUTS=5<br />

MAX_PASTES=10<br />

NUMBER_CNPS=1<br />

NUMBER_VARS=5<br />

AUTO_INTERVAL=3<br />

AUTO_ENABLED=N<br />

VERSION=0<br />

[SHELL]<br />

HTERM0=telnet.exe mosaix<br />

S_DELAY0=3<br />

HTERM1=notepad.exe c:\Program Files\<strong>Vlterm</strong>\host.txt<br />

S_DELAY1=3<br />

[WIN_TITLE]<br />

HWIN0= Telnet - Mosaix<br />

HWIN1=Host.txt - Notepad<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=<br />

HOST_TOPIC0=<br />

HOST_ITEM0=<br />

USE_DDE0=N<br />

DDE_CONFIG_SESSION0=<br />

DDE_DELAY1=3<br />

HOST_SERVER1=


HOST_TOPIC1=<br />

HOST_ITEM1=<br />

USE_DDE1=N<br />

DDE_CONFIG_SESSION1=<br />

[CNP1]<br />

CNP_NAME=Main host record lookup<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=2<br />

NUMBER_PASTE_COMMANDS=8<br />

CUT_CMD1=ClipCut(%ea%ec~(1,1,4))<br />

CUT_CMD2=ClipCut(~(2,1,12))<br />

PASTE_CMD1=Delay(.5)<br />

PASTE_CMD2=SendKeys=C(1)<br />

PASTE_CMD3=Delay(.5)<br />

PASTE_CMD4=SendKeys={Enter}<br />

PASTE_CMD5=Delay(1)<br />

PASTE_CMD6=SendKeys=C(2)<br />

PASTE_CMD7=Delay(.5)<br />

PASTE_CMD8=SendKeys={Enter}<br />

Emulator Specifics 143


144 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Teknekron On Demand Software DDE Interface<br />

Teknekron On Demand has been tested as an application with a DDE server with<br />

which <strong>Vlterm</strong> can communicate. The tested communications consists of sending<br />

commands to invoke three functions in On Demand:<br />

• Start Recording<br />

• Stop Recording<br />

• Save the Recording<br />

No cut or any other paste commands have been tested.<br />

The following list describes the format of the three functions:<br />

• Start recording button (Caption ‘OD Start’). This button POKEs data to the<br />

DDE server in the following format:<br />

RECSTART;600;<br />

Where:<br />

RECSTART is the message header, and 600 is a timeout after which recording<br />

stops automatically.<br />

• Stoprecordingbutton(Caption‘ODStop’).ThisbuttonPOKEsdatatothe<br />

DDE server in the following format:<br />

RECSTOP;<br />

• Save recording button (Caption ‘OD Save’). This button POKEs data to the<br />

DDE server in the following format:<br />

RECSAVE;3451238590;ABTRHS;<br />

Where:<br />

RECSAVE is the message header. 3451238590 is the account number for the<br />

current call (this can be a caller phone number or a unique database<br />

identifier). ABTHRS is the job number.<br />

Example <strong>Vlterm</strong>.ini File From Thaya Communications<br />

NOTE The use of the OnD_DDE.ini file supports a VARn paste command only.<br />

The VARn paste command sends a DDE Execute command with the parameters<br />

specified in the CNPn paste commands.<br />

[SHELL]<br />

HTERM1=C:\Program Files\Teknekron Infoswitch\On<br />

Demand\OnDemandClient.exe<br />

S_DELAY1=3


[WIN_TITLE]<br />

HWIN1=DDE Server Window<br />

[DDE_SESSION]<br />

DDE_DELAY1=3<br />

HOST_SERVER1=Ondemand<br />

HOST_TOPIC1=sound<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=Ond_DDE.ini<br />

[CNP15]<br />

CNP_NAME=On Demand Start Recording<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=SetVar1=RECSTART;600;<br />

PASTE_CMD2=VAR1<br />

[CNP16]<br />

CNP_NAME=On Demand Stop Recording<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=SetVar1=RECSTOP;<br />

PASTE_CMD2=VAR1<br />

[CNP17]<br />

CNP_NAME=On Demand Save Recording<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

Emulator Specifics 145


146 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

NUMBER_CUT_COMMANDS=2<br />

NUMBER_PASTE_COMMANDS=7<br />

;Lead number<br />

CUT_CMD1=ClipCut(%ea%ec~(3,14,15))<br />

;Client description NOTE: ADJUST LOCATION!<br />

CUT_CMD2=ClipCut(~(3,14,4))<br />

;Keyword for save function<br />

PASTE_CMD1=SetVar1=RECSAVE;<br />

PASTE_CMD2=SetVar2=;<br />

;Append Lead number<br />

PASTE_CMD3=StrCat(VAR1~CUT1)<br />

PASTE_CMD4=StrCat(VAR1~VAR2)<br />

;Append Client description<br />

PASTE_CMD5=StrCat(VAR1~CUT2)<br />

PASTE_CMD6=StrCat(VAR1~VAR2)<br />

;Send the result<br />

PASTE_CMD7=VAR1<br />

OND_DDE.INI file<br />

[DDE_PASTECUTS]<br />

NumberOfLines=1<br />

Line1=LinkExecute &PvarVar1&<br />

[DDE_PVAR]<br />

NumberOfLines=1<br />

Line1=LinkExecute &PvarVar1&


Upstanding Systems FASTerm for Windows<br />

Emulator Specifics 147<br />

Upstanding Systems FASTerm Version 40.108.081 has been tested in a Windows<br />

95 environment with <strong>Vlterm</strong> version 4.x 32-bit edition. FASTerm supports DDE<br />

server. <strong>Vlterm</strong> acts as the DDE client to initiate and maintain a DDE session.<br />

<strong>Vlterm</strong> also sends commands to FASTerm to put characters to and get characters<br />

from the FASTerm window.<br />

You can paste special keys by using the information in the following table.<br />

Windows Key Name Description Notes<br />

LeftMouseButton Left mouse button unused<br />

RightMouseButton Right mouse button unused<br />

MiddleMouseButton Middle mouse button unused<br />

Alt Alternate key modifier<br />

Ctrl Control key modifier<br />

Shift Shift key modifier<br />

NumLock NumLock key<br />

ScrollLock Scroll lock key<br />

Backspace BACKSPACE key<br />

Break Used for control-break<br />

Clear CLEAR key not on most keyboards<br />

Delete DEL key<br />

DownArrow DOWN ARROW key<br />

End END key<br />

Enter ENTER key<br />

Escape ESC key<br />

Execute EXECUTE key not on most keyboards<br />

Help HELP key not on most keyboards<br />

Home HOME key<br />

Insert INS key<br />

LeftArrow LEFT ARROW key<br />

NumPad0 Numeric keypad 0 key


148 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Windows Key Name Description Notes<br />

NumPad1 Numeric keypad 1 key<br />

NumPad2 Numeric keypad 2 key<br />

NumPad3 Numeric keypad 3 key<br />

NumPad4 Numeric keypad 4 key<br />

NumPad5 Numeric keypad 5 key<br />

NumPad6 Numeric keypad 6 key<br />

NumPad7 Numeric keypad 7 key<br />

NumPad8 Numeric keypad 8 key<br />

NumPad9 Numeric keypad 9 key<br />

NumPadAdd Numeric keypad Add key<br />

NumPadDecimal Numeric keypad Decimal key<br />

NumPadDivide Numeric keypad Divide key<br />

NumPadEnter Numeric keypad Enter key<br />

NumPadMultiply Numeric keypad Multiply key<br />

NumPadSubtract Numeric keypad Subtract key<br />

PageDown PAGE DOWN key<br />

PageUp PAGE UP key<br />

Pause PAUSE key<br />

PrintScreen PRINT SCREEN key preempted by Windows<br />

RightArrow RIGHT ARROW key<br />

Select SELECT key not on most keyboards<br />

Separator Separator key not on most keyboards<br />

Space SPACEBAR<br />

Tab TAB key<br />

UpArrow UP ARROW key<br />

F1 F1 key<br />

F2 F2 key<br />

F3 F3 key


Windows Key Name Description Notes<br />

F4 F4 key<br />

F5 F5 key<br />

F6 F6 key<br />

F7 F7 key<br />

F8 F8 key<br />

F9 F9 key<br />

F10 F10 key<br />

F11 F11 key<br />

F12 F12 key<br />

Example <strong>Vlterm</strong>.ini File for FASTerm<br />

[SHELL]<br />

HTERM0=c:\PROGRA~1\walldata\VT\rumbavt.exe<br />

c:\PROGRA~1\walldata\VT\mosaix.wdu<br />

s_delay0=3<br />

HTERM1=H:\BIN\fastwin\FTWIN.EXE Environment:1<br />

s_delay1=3<br />

Emulator Specifics 149<br />

F13 F13 key not on most keyboards<br />

F14 F14 key not on most keyboards<br />

F15 F15 key not on most keyboards<br />

F16 F16 key not on most keyboards<br />

F17 F17 key not on most keyboards<br />

F18 F18 key not on most keyboards<br />

F19 F19 key not on most keyboards<br />

F20 F20 key not on most keyboards<br />

F21 F21 key not on most keyboards<br />

F22 F22 key not on most keyboards<br />

F23 F23 key not on most keyboards<br />

F24 F24 key not on most keyboards


150 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[WIN_TITLE]<br />

HWIN0=MOSAIX*<br />

HWIN1= FASTerm - Environment:1<br />

[DDE_SESSION]<br />

HOST_SERVER0=rumbavt<br />

HOST_TOPIC0=MOSAIX.vtp<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=RUM_DDE.INI<br />

HOST_SERVER1=FASTerm<br />

HOST_TOPIC1=Environment:1<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=FAS_DDE.INI<br />

DDE_TIMEOUT=5<br />

[CNP35]<br />

CNP_NAME=Main host record lookup<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=6<br />

;(RowStart,ColStart,RowEnd,ColEnd)<br />

CUT_CMD1=(5,19,5,30)<br />

PASTE_CMD1=SetVar1=MidString(C(1)~1~12)<br />

PASTE_CMD2=Other(CursorHome)<br />

PASTE_CMD3=I<br />

PASTE_CMD4=Other(Tab)<br />

PASTE_CMD5=SENDKEYS=VAR1<br />

PASTE_CMD6=Other(Transmit)


[CNP36]<br />

CNP_NAME=Reverse Cut and Paste<br />

CUT_SESSION=1<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=3<br />

CUT_CMD1=(10,44 to 10,46)<br />

PASTE_CMD1 =C(1)<br />

;PASTE_CMD2=SetVar1=abc<br />

;PASTE_CMD3=Var1<br />

Emulator Specifics 151


152 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Wall Data Rumba Office<br />

Rumba for the Mainframe Classic configuration uses a DDE connection.<br />

Configure a Rumba profile setting to specify a DDE topic name. Under the menu<br />

option for Options API, specify a DDE Topic Name such as mosaix.vtp. Save the<br />

configuration to the profile file.<br />

The following vlterm.ini files are sample configurations for Rumba Office 95/NT<br />

and Rumba Office 2000.<br />

Rumba Office 95/NT V5.1 <strong>Vlterm</strong>.ini Example<br />

[SHELL]<br />

;Site path<br />

HTERM0=c:\apps\walldata\rumba\vt\rumbavt.exe<br />

c:\apps\walldata\rumba\vt\mosaix.wdu<br />

S_DELAY0=3<br />

HTERM1=c:\apps\walldata\rumba\mframe\rumbadsp.exe<br />

c:\apps\walldata\rumba\SessionA.wdm<br />

S_DELAY1=3<br />

HTERM2=c:\apps\walldata\rumba\mframe\rumbadsp.exe<br />

c:\apps\walldata\rumba\SessionB.wdm<br />

S_DELAY2=3<br />

HTERM3=c:\apps\walldata\rumba\mframe\rumbadsp.exe<br />

c:\apps\walldata\rumba\SessionC.wdm<br />

S_DELAY3=3<br />

[WIN_TITLE]<br />

HWIN0=mosaix - RUMBA UNIX Display<br />

HWIN1=sessiona - RUMBA Mainframe Display<br />

HWIN2=sessionb - RUMBA Mainframe Display<br />

HWIN3=sessionc - RUMBA Mainframe Display<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=rumbavt<br />

HOST_TOPIC0=mosaix.wdu<br />

HOST_ITEM0=<br />

USE_DDE0=Y


DDE_CONFIG_SESSION0=Rum_dde.ini<br />

DDE_DELAY1=3<br />

HOST_SERVER1=rumbadsp<br />

HOST_TOPIC1=sessiona.dsp<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=Rum_dde.ini<br />

DDE_DELAY2=3<br />

HOST_SERVER2=rumbadsp<br />

HOST_TOPIC2=sessionb.dsp<br />

HOST_ITEM2=<br />

USE_DDE2=Y<br />

DDE_CONFIG_SESSION2=RUM_DDE.INI<br />

DDE_DELAY3=3<br />

HOST_SERVER3=rumbadsp<br />

HOST_TOPIC3=sessionc.dsp<br />

HOST_ITEM3=<br />

USE_DDE3=Y<br />

DDE_CONFIG_SESSION3=RUM_DDE.INI<br />

DDE_TIMEOUT=10<br />

[CNP1]<br />

CNP_NAME=Main cut and paste<br />

CUT_SESSION=0<br />

PASTE_SESSION=3<br />

NUMBER_CUT_COMMANDS=2<br />

NUMBER_PASTE_COMMANDS=11<br />

;account number (row1,col1, row2,col2)<br />

CUT_CMD1=(6,18,6,34)<br />

;location code<br />

CUT_CMD2=(7,11,7,16)<br />

PASTE_CMD1=@0<br />

Emulator Specifics 153


154 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

PASTE_CMD2=@T<br />

PASTE_CMD3=UPD<br />

PASTE_CMD4=@T<br />

PASTE_CMD5=PRI<br />

PASTE_CMD6=@T<br />

PASTE_CMD7=C(1)<br />

PASTE_CMD8=Cursor(5,45)<br />

PASTE_CMD9=C(2)<br />

PASTE_CMD10=@E<br />

PASTE_CMD11=OIA,*0*<br />

Rumba Office 2000 <strong>Vlterm</strong>.ini Example<br />

[GLOBAL]<br />

;DEBUG=ON<br />

MAX_SESSIONS=1<br />

MAX_CUTS=20<br />

MAX_PASTES=10<br />

NUMBER_CNPS=1<br />

NUMBER_VARS=5<br />

AUTO_INTERVAL=3<br />

AUTO_ENABLED=N<br />

VERSION=0<br />

[SHELL]<br />

HTERM0=C:\Rumba200\Vt\Rumbavt.exe C:\Rumba200\Vt\MOSAIX1.VTP<br />

S_DELAY0=50<br />

HTERM1=C:\Rumba200\MFrame\Rumbadsp.exe<br />

C:\Rumba200\MFrame\COllECT1.DSP<br />

S_DELAY1=50


[WIN_TITLE]<br />

HWIN0=MOSAIX1 - RUMBA*<br />

HWIN1=COLLECT1*<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=rumbavt<br />

HOST_TOPIC0=mosaix1.vtp<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=RUM_DDE.INI<br />

DDE_DELAY1=3<br />

HOST_SERVER1=rumbadsp<br />

HOST_TOPIC1=collect1.dsp<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=RUM_DDE.INI<br />

Emulator Specifics 155<br />

[CONTROL_PANEL]<br />

; The control panel is maintained for prior compatibility<br />

only.<br />

; Use the FKEY_BUTTONS instead.<br />

DISPLAY_PANEL=N<br />

NUMBER_BUTTONS=0<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS=Y<br />

FKEYS_FILE=<br />

FKEYS_ON_TOP=Y<br />

CAPTION= <strong>Vlterm</strong> - MOSAIX RUMBA


156 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

ROW1=Y<br />

ROW2=Y<br />

ROW3=Y<br />

ROW4=Y<br />

ROW5=N<br />

ROW6=N<br />

[CNP1]<br />

CNP_NAME=C&P<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

CNP_TYPE=2<br />

AUTO_CUT_COMPARE=<br />

AUTO_CUT_COMPARE=<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=11<br />

CUT_CMD1=(14,2,14,18)<br />

PASTE_CMD1=UPDPRIIL<br />

PASTE_CMD2=@F<br />

PASTE_CMD3=C(1),NUMERIC<br />

PASTE_CMD4=@B<br />

PASTE_CMD5=@B<br />

PASTE_CMD6=@B<br />

PASTE_CMD7=@B<br />

PASTE_CMD8=@B<br />

PASTE_CMD9=@B<br />

PASTE_CMD10=@B<br />

PASTE_CMD11=@E


WRQ Reflection<br />

Emulator Specifics 157<br />

For <strong>Vlterm</strong> to interact with a single copy of Reflection software using the DDE<br />

API, use the default DDE settings that are stored in the Reflection software<br />

profile. For example, configure the vlterm.ini file with the following parameters<br />

to communicate to R2 using DDE:<br />

[DDE_SESSION]<br />

HOST_SERVER1=R2WIN<br />

HOST_TOPIC1=RCL<br />

HOST_SERVERx is the value configured in the WRQ profile for the WRQ DDE<br />

server name for that session. HOST_TOPICx is the required macro language “rcl”<br />

sub-topic. The default server name is the executable name, for example, R2WIN<br />

for the r2win.exe.<br />

For <strong>Vlterm</strong> to interact with multiple Reflection windows, you must modify the<br />

configuration of at least one of the session profiles to ensure the DDE connection<br />

names are unique among the Reflection windows.<br />

To change the server name for Reflection version 6.x and earlier<br />

For versions of Reflection earlier than 7.0, choose SETUP, DDE from the<br />

emulator menu to configure the DDE SERVER NAME. Specify a unique server<br />

name, for example:<br />

DDE SERVER NAME=MOSAIX<br />

or<br />

DDE SERVER NAME=HOST<br />

To change the server name for Reflection version 7<br />

1 Choose the Setup/View settings selection on the toolbar.<br />

2 Search for DDE Server Name.<br />

3 Select DDE Server Name.<br />

By default, Reflection sets R1WIN as the server name.<br />

4 Changethenametoauniqueidentifier.<br />

The recommended name is the name of the session, for example MOSAIX for<br />

the Mosaix system session.<br />

5 Search for Multipage Terminal.


158 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

6 Select Multipage Terminal.<br />

By default, Reflection sets Multipage Terminal to On.<br />

7 Change the selection to Off.<br />

Multipage Terminal set to off allows the session to store only one page of<br />

history. If more than one page of history is stored, <strong>Vlterm</strong> doesn’t cut the<br />

correct information the Mosaix session screen.<br />

8 Save the session and restart it.<br />

The DDE Server Enable option should be selected. Save the profile with this<br />

configuration, then use this profile on all agent stations.<br />

To send special characters to Reflection sessions, use the ASCII equivalents. For<br />

example, to send an Enter key, send the ASCII control sequence as:<br />

PASTE_CMD2=^M<br />

See Appendix E, “ASCII and VT100 Control Sequences,” beginning on page 111<br />

for more information.<br />

WRQ R1 Sample<br />

The following is a sample portion of a vlterm.ini file set up for WRQ R1.<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=TERM<br />

HOST_TOPIC0=RCL<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=Ref_dde.ini<br />

[CNP2]<br />

CNP_NAME=Paste ordinary and special characters<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=abc123<br />

PASTE_CMD2=^M


Emulator Specifics 159<br />

[CNP3]<br />

CNP_NAME=CNP to R1 to R1<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=1<br />

NUMBER_PASTE_COMMANDS=1<br />

;(row1,column1,row2,column2) counting from 0..79, 0..23<br />

CUT_CMD1=(0,8,0,16)<br />

PASTE_CMD1=C(1)<br />

WRQ R2 Sample<br />

To configure WRQ R2:<br />

Choose SETUP, DDE from the emulator menu to configure the DDE SERVER<br />

NAME.<br />

Specify a unique server name, for example,<br />

DDE SERVER NAME=MOSAIX<br />

or<br />

DDE SERVER NAME=HOST<br />

Ensure that DDE Server Enable is selected.<br />

WRQ R8 Reflection for Windows Sample<br />

The following is a partial vlterm.ini file set up for WRQ R8, Reflection for<br />

Windows version 4.10.<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=R8WIN<br />

HOST_TOPIC0=CONTROL<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=R841_DDE.INI


160 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[CNP21]<br />

;R8 format (RnCn:RnCn)<br />

CUT_CMD1=(R1C1:R1C15)<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=Other(RC_ENTERKEY)<br />

PASTE_CMD3=OIA<br />

PASTE_CMD4=some text<br />

Specify the R841_DDE.ini file as the DDE_CONFIG_SESSION. Note the syntax<br />

for <strong>Vlterm</strong> as a DDE client to execute a Reflection Basic command in<br />

PASTE_CMD2=Other() in the preceding example.<br />

R841_DDE.ini File<br />

[DDE_PASTECUTS]<br />

NumberOfLines=1<br />

Line1=LinkExecute rcTransmitANSI(“&PasteVar1&”)<br />

R8 Version 4.10 Special Keystroke Commands<br />

RC_ALTCURSORKEY RC_ATTNKEY RC_AU1KEY RC_AU2KEY<br />

RC_AU3KEY RC_AU4KEY RC_AU5KEY RC_AU6KEY<br />

RC_AU7KEY RC_AU8KEY RC_AU9KEY RC_AU10KEY<br />

RC_AU11KEY RC_AU12KEY RC_AU13KEY RC_AU14KEY<br />

RC_AU15KEY RC_AU16KEY RC_BACKSPACEKEY RC_BACKTABKEY<br />

RC_BACKWARDKEY RC_CLEARKEY RC_CLEARPARTITIONKEY RC_CURSORBLINKKEY<br />

RC_CURSORSELECTKEY RC_DELETECHARKEY RC_DELETEKEY RC_DELETEWORDKEY<br />

RC_DEVICECANCELKEY RC_DOWNDOUBLEKEY RC_DOWNKEY RC_DUPKEY<br />

RC_DUPLICATEKEY RC_ENTERKEY RC_ERASEEOFKEY<br />

RC_ERASEINPUTKEY RC_EXTGRKEY RC_F1KEY RC_F2KEY<br />

RC_F3KEY RC_F4KEY RC_F5KEY RC_F6KEY<br />

RC_F7KEY RC_F8KEY RC_F9KEY RC_F10KEY<br />

RC_F11KEY RC_F12KEY RC_F13KEY RC_F14KEY<br />

RC_F15KEY RC_F16KEY RC_F17KEY RC_F18KEY<br />

RC_F19KEY RC_F20KEY RC_F21KEY RC_F22KEY<br />

RC_F23KEY RC_F24KEY RC_FIELDADVANCEKEY RC_FIELDBACKSPACEKEY<br />

RC_FIELDDELIMKEY RC_FIELDEXITKEY RC_FIELDMARKKEY RC_FIELDMINUSKEY<br />

RC_FIELDPLUSKEY RC_FORWARDKEY RC_HELPKEY RC_HEXKEY<br />

RC_HOMEKEY RC_IDENTKEY RC_INSERTKEY


R8 Version 4.10 Special Keystroke Commands (Continued)<br />

Copyright © 1994 Walker Richer & Quinn, Inc.<br />

WRQ R8 Reflection for IBM for Windows 95 Sample<br />

Emulator Specifics 161<br />

RC_JUMPKEY RC_KEYCLICKKEY RC_KP0KEY RC_KP1KEY<br />

RC_KP2KEY RC_KP3KEY RC_KP4KEY RC_KP5KEY<br />

RC_KP6KEY RC_KP7KEY RC_KP8KEY RC_KP9KEY<br />

RC_KPDECIMALKEY RC_KPDIVIDEKEY RC_KPENTERKEY RC_KPMINUSKEY<br />

RC_KPMULTIPLYKEY RC_KPNUMLOCKKEY RC_KPPLUSKEY RC_LEFTDOUBLEKEY<br />

RC_LEFTKEY RC_LOCALHELPKEY RC_LUJUMPKEY RC_NEWLINEKEY<br />

RC_PA1KEY RC_PA2KEY RC_PA3KEY RC_PAGEDOWNKEY<br />

RC_PAGEUPKEY RC_PANLEFTKEY RC_PANRIGHTKEY RC_PARTITIONJUMPKEY<br />

RC_PAUSEKEY RC_PF1KEY RC_PF2KEY<br />

RC_PF3KEY RC_PF4KEY RC_PF5KEY RC_PF6KEY<br />

RC_PF7KEY RC_PF8KEY RC_PF9KEY RC_PF10KEY<br />

RC_PF11KEY RC_PF12KEY RC_PF13KEY RC_PF14KEY<br />

RC_PF15KEY RC_PF16KEY RC_PF17KEY RC_PF18KEY<br />

RC_PF19KEY RC_PF20KEY RC_PF21KEY RC_PF22KEY<br />

RC_PF23KEY RC_PF24KEY RC_PLAYKEY RC_PLUSCRKEY<br />

RC_PRINTKEY RC_PRINTPARTKEY RC_QUITKEY RC_RECORDKEY<br />

RC_RESETKEY RC_RIGHTDOUBLEKEY RC_RIGHTKEY RC_RULEKEY<br />

RC_SCREENFORMAT<br />

CHANGEKEY<br />

RC_SCROLLDOWNKEY RC_SCROLLLEFTKEY RC_SCROLLRIGHTKEY<br />

RC_SCROLLUPKEY RC_SETUPKEY RC_SLPAUTOENTERKEY<br />

RC_SYSREQSTKEY<br />

RC_UPKEY<br />

RC_TABKEY RC_TESTKEY RC_UPDOUBLEKEY<br />

The following is a sample of a vlterm.ini file set up for WRQ R8, Reflection for<br />

IBM for Windows 95, version 6.10.<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=R8WIN<br />

HOST_TOPIC0=CONTROL<br />

HOST_ITEM0=<br />

USE_DDE0=Y<br />

DDE_CONFIG_SESSION0=R861_DDE.INI


162 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

[CNP21]<br />

;R8 format (RnCn:RnCn)<br />

CUT_CMD1=(R1C1:R1C15)<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=Other(rcIbmEnterKey)<br />

PASTE_CMD3=OIA<br />

PASTE_CMD4=some text<br />

Specify the R861_DDE.ini file as the DDE_CONFIG_SESSION. Note the syntax<br />

for <strong>Vlterm</strong> as a DDE client to execute a Reflection Basic command in<br />

PASTE_CMD2=Other() in the above example.<br />

Application is the Reflection object, with various methods to invoke such as<br />

transmit an ANSI character string.<br />

R861_DDE.ini File<br />

[DDE_PASTECUTS]<br />

NumberOfLines=1<br />

Line1=LinkExecute Application.TransmitANSI “&PasteVar1&”<br />

R8 Version 6.10 Special Keystroke Commands<br />

rcIbmAltCursorKey rcIbmAttnKey rcIbmAu1Key rcIbmAu2Key<br />

rcIbmAu3Key rcIbmAu4Key rcIbmAu5Key rcIbmAu6Key<br />

rcIbmAu7Key rcIbmAu8Key rcIbmAu9Key rcIbmAu10Key<br />

rcIbmAu11Key rcIbmAu12Key rcIbmAu13Key rcIbmAu14Key<br />

rcIbmAu15Key rcIbmAu16Key rcIbmBackspaceKey rcIbmBackTabKey<br />

rcIbmClearKey rcIbmClearPartitionKey rcIbmCursorBinkKey rcIbmCursorSelectKey<br />

rcIbmDeleteCharKey rcIbmDeleteKey rcIbmDeleteWordKey rcIbmDeviceCancelKey<br />

rcIbmDownDubleKey rcIbmDownKey rcIbmDupKey<br />

rcIbmDuplicateKey rcIbmEnterKey rcIbmEraseEofKey rcIbmEraseInputKey<br />

rcIbmExtGrKey rcIbmF1Key rcIbmF2Key rcIbmF3Key<br />

rcIbmF4Key rcIbmF5Key rcIbmF6Key rcIbmF7Key<br />

rcIbmF8Key rcIbmF9Key rcIbmF10Key rcIbmF11Key<br />

rcIbmF12Key rcIbmF13Key rcIbmF14Key rcIbmF15Key<br />

rcIbmF16Key rcIbmF17Key rcIbmF18Key rcIbmF19Key<br />

rcIbmF20Key rcIbmF21Key rcIbmF22Key rcIbmF23Key<br />

rcIbmF24Key rcIbmFieldDelimKey rcIbmFieldExitKey rcIbmFieldMarkKey<br />

rcIbmFieldMinusKey rcIbmFieldPlusKey rcIbmHelpKey


R8 Version 6.10 Special Keystroke Commands<br />

Copyright © 1994-1997 WRQ, Inc.<br />

Emulator Specifics 163<br />

rcIbmHexKey rcIbmHomeKey rcIbmIdentKey rcIbmInsertKey<br />

rcIbmKeyClickKey rcIbmLeftDoubleKey rcIbmLeftKey rcIbmNewLineKey<br />

rcIbmPa1Key rcIbmPa2Key rcIbmPa3Key rcIbmPageDownKey<br />

rcIbmPageUpKey rcIbmPanLeftKey rcIbmPanRightKey rcIbmPartitionJumpKey<br />

rcIbmPf1Key rcIbmPf2Key rcIbmPf3Key rcIbmPf4Key<br />

rcIbmPf5Key rcIbmPf6Key rcIbmPf7Key rcIbmPf8Key<br />

rcIbmPf9Key rcIbmPf10Key rcIbmPf11Key rcIbmPf12Key<br />

rcIbmPf13Key rcIbmPf14Key rcIbmPf15Key rcIbmPf16Key<br />

rcIbmPf17Key rcIbmPf18Key rcIbmPf19Key<br />

rcIbmPf20Key rcIbmPf21Key rcIbmPf22Key rcIbmPf23Key<br />

rcIbmPf24Key rcIbmPlusCrKey rcIbmPrintKey rcIbmPrintPartKey<br />

rcIbmResetKey rcIbmRightDoubleKey rcIbmRightKey rcIbmRuleKey<br />

rcIbmScrollDownKey rcIbmScrollLeftKey rcIbmScrollRightKey rcIbmScrollUpKey<br />

rcIbmSetupKey rcIbmSlpAutoEnterKey rcIbmSysReqstKey rcIbmTabKey<br />

rcIbmTestKey rcIbmUpDoubleKey rcIbmUpKey


164 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Zephyr Development Passport 3270 Client<br />

The Passport 3270 Client Version 5.0 by Zephyr Development Corporation is for<br />

Windows 95 systems. This section deals with issues specific to the Passport<br />

emulator and <strong>Vlterm</strong>. As with Chameleon’s Hostlink, <strong>Vlterm</strong> can communicate<br />

with Passport two different ways: SendKeys() and HLLAPI.<br />

Because the Passport package doesn’t support VT100 emulation, set up the<br />

configuration to run an alternate emulator for the VT100 connection to the Mosaix<br />

system.<br />

NOTE The Passport driver connection to <strong>Vlterm</strong> fails if the other applications<br />

(terminal or printer sessions) are not already open. In order to connect to such a<br />

window, use a wildcard(*) in the [WIN_TITLE] section of the vlterm.ini file.<br />

Examples<br />

[WIN_TITLE]<br />

;This line is for the Zephyr driver<br />

HWIN0= Hllapi*<br />

;This is the Passport session connection to MOSAIX.<br />

HWIN1=(A) Passport*<br />

;This is the Telnet connection to the Host.<br />

HWIN2= Telnet*<br />

Pasting regular text works by using SendKeys with the command:<br />

Paste_Cmd1=SendKeys =This is sample text.<br />

To paste of special keys is possible by de-referencing the key with the @ character.<br />

The example below illustrates the special character @ preceding E for <br />

[CNP1]<br />

CNP_NAME=Paste Special key for ENTER to Host<br />

CUT_SESSION=0<br />

PASTE_SESSION=1<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=1<br />

PASTE_CMD1=@E<br />

The HLLAPI driver Session Name should be A, it must be one character in length.<br />

HTERM0=c:\Program Files\<strong>Vlterm</strong>\ZWHLDR32.EXE /SN=A /Debug=OFF


Emulator Specifics 165<br />

NOTE The .dll file for the driver must be installed to c:\Program<br />

Files\<strong>Vlterm</strong>\passhll.dll. This is the same directory for the HLLAPI driver.<br />

Sample <strong>Vlterm</strong>.ini File for Passport 3270 Client<br />

[GLOBAL]<br />

DEBUG=OFF<br />

MAX_SESSIONS=2<br />

MAX_CUTS=3<br />

MAX_PASTES=15<br />

NUMBER_CNPS=4<br />

NUMBER_VARS=3<br />

AUTO_INTERVAL=3<br />

AUTO_ENABLED=<br />

[SHELL]<br />

HTERM0=C:\WINDOWS\TELNET.EXE<br />

s_delay0=3<br />

HTERM1=c:\Program Files\<strong>Vlterm</strong>\ZWHLDR32.EXE /SN=A /Debug=OFF<br />

s_delay1=3<br />

HTERM2=\PASSPORT.EXE C:\PROGRAM<br />

FILES\PASSPORT\PASSPORT.ZWS<br />

s_delay2=3<br />

[WIN_TITLE]<br />

; MOSAIX<br />

HWIN0=Telnet*<br />

; HLLAPI driver<br />

HWIN1=Hllapi*<br />

; HOST<br />

HWIN2=(A) Passport*<br />

[DDE_SESSION]<br />

DDE_DELAY0=3<br />

HOST_SERVER0=


166 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

HOST_TOPIC0=<br />

HOST_ITEM0=<br />

USE_DDE0=N<br />

DDE_CONFIG_SESSION0=<br />

DDE_DELAY1=3<br />

HOST_SERVER1=zwhldr32<br />

HOST_TOPIC1= A<br />

HOST_ITEM1=<br />

USE_DDE1=Y<br />

DDE_CONFIG_SESSION1=DRV_DDE.INI<br />

DDE_DELAY2=3<br />

HOST_SERVER2=<br />

HOST_TOPIC2=<br />

HOST_ITEM2=<br />

USE_DDE2=N<br />

DDE_CONFIG_SESSION2=<br />

; DDE session timeout in seconds<br />

DDE_TIMEOUT=20<br />

[FKEY_BUTTONS]<br />

DISPLAY_FKEYS = Y<br />

ROW1=N<br />

ROW2=Y<br />

ROW3=Y<br />

ROW4=N<br />

FKEYS_ON_TOP=N<br />

CAPTION=<strong>Vlterm</strong><br />

[CNP1]<br />

CNP_NAME=Paste only to Host<br />

CUT_SESSION=0<br />

PASTE_SESSION=1


NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=3<br />

CUT_CMD1=ClipCut(%ea%ec~(2,4,30))<br />

PASTE_CMD1=C(1)<br />

PASTE_CMD2=Hello<br />

PASTE_CMD3=@E<br />

Emulator Specifics 167


168 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong>


Special EXTRA! Key Sequences G<br />

Use the following table to identify the Attachmate EXTRA! mnemonic command<br />

that represents a particular VT function key. When you specify a mnemonic in a<br />

<strong>Vlterm</strong> script, enclose it in angle brackets (). An online help file in the Macro<br />

Editor describes using Keyboard Mnemonics against emulator sessions. From the<br />

Macro Editor, select Help | Index | Key Mnemonics, PC-Host | VTFunction Keys.<br />

3270 Function<br />

Key Mnemonic<br />

5250 Function<br />

Key Mnemonic<br />

VT Function<br />

Key Mnemonic<br />

Attention Attn Attention Attn Backspace Backspace<br />

Backspace BackSpace Backspace BackSpace Break Signal Break<br />

Backtab (Left<br />

Tab)<br />

BackTab Backtab (Left<br />

Tab)<br />

BackTab Compose<br />

Sequence<br />

Compose<br />

Caps Lock CapsLock Begin Line BeginLine Cursor Down Down<br />

Clear Clear Clear Clear Cursor Left Left<br />

Cursor Down Down Command 1 PF1 Cursor Right Right<br />

Cursor Left Left Command 2 PF2 Cursor Up Up<br />

Cursor Left 2<br />

Columns<br />

Left2 Command 3 PF3 Escape Esc<br />

Cursor Right Right Command 4 PF4 F1 F1<br />

Cursor Right 2<br />

Columns<br />

Right2 Command 5 PF5 F2 F2<br />

Cursor Select CursorSelect Command 6 PF6 F3 F3<br />

Cursor Up Up Command 7 PF7 F4 F4<br />

Delete Char Delete Command 8 PF8 F5 F5<br />

Duplicate Dup Command 9 PF9 F6 F6<br />

169


170 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

3270 Function<br />

Key Mnemonic<br />

Enter Enter Command 10 PF10 F7 F7<br />

Erase EOF EraseEOF Command 11 PF11 F8 F8<br />

Erase Input EraseInput Command 12 PF12 F9 F9<br />

FieldMark FieldMark Command 13 PF13 F10 F10<br />

Home Home Command 14 PF14 F11 F11<br />

Insert Insert Command 15 PF15 F12 F12<br />

Left Tab (Back<br />

Tab)<br />

BackTab Command 16 PF16 F13 F13<br />

New Line NewLine Command 17 PF17 F14 F14<br />

Pen Select PenSel Command 18 PF18 F15 F15<br />

Print Print Command 19 PF19 F16 F16<br />

Reset Reset Command 20 PF20 F17 F17<br />

Shift ShiftOn Command 21 PF21 F18 F18<br />

System Request SysReq Command 22 PF22 F19 F19<br />

Tab (Right Tab) Tab Command 23 PF23 F20 F20<br />

PA1 PA1 Command 24 PF24 Find Find<br />

PA2 PA2 Cursor Down Down Insert Insert Here<br />

PA3 PA3 Cursor Down 2<br />

rows<br />

Down2 Hold Hold<br />

PF1 PF1 Cursor Left Left Keypad - Keypad -<br />

PF2 PF2 Cursor Left 2<br />

columns<br />

Left2 Keypad , Keypad ,<br />

PF3 PF3 Cursor Right Right Keypad Enter Keypad<br />

Enter<br />

PF4 PF4 Cursor Right 2<br />

columns<br />

5250 Function<br />

Key Mnemonic<br />

VT Function<br />

Key Mnemonic<br />

Right2 Keypad . Keypad .<br />

PF5 PF5 Cursor Select CursorSelect Keypad 0 Keypad 0<br />

PF6 PF6 Cursor Up Up Keypad 1 Keypad 1


3270 Function<br />

Key Mnemonic<br />

PF7 PF7 Cursor Up 2<br />

rows<br />

Special EXTRA! Key Sequences 171<br />

Up2 Keypad 2 Keypad 2<br />

PF8 PF8 Delete Char Delete Keypad 3 Keypad 3<br />

PF9 PF9 Duplicate Dup Keypad 4 Keypad 4<br />

PF10 PF10 End of Line EndLine Keypad 5 Keypad 5<br />

PF11 PF11 Enter Enter Keypad 6 Keypad 6<br />

PF12 PF12 Erase EOF EraseEOF Keypad 7 Keypad 7<br />

PF13 PF13 Erase EOL EraseEOL Keypad 8 Keypad 8<br />

PF14 PF14 Erase Input EraseInput Keypad 9 Keypad 9<br />

PF15 PF15 Field Exit FieldExit Next Screen Next<br />

PF16 PF16 Field Mark FieldMark PF1 PF1<br />

PF17 PF17 Field Minus FieldMinus PF2 PF2<br />

PF18 PF18 Field Plus FieldPlus PF3 PF3<br />

PF19 PF19 Help Help PF4 PF4<br />

PF20 PF20 Home Home Previous Screen Prev<br />

PF21 PF21 Insert Mode InsertMode Print Screen Print<br />

PF22 PF22 Insert Toggle Insert Remove Remove<br />

PF23 PF23 Left Tab (Back<br />

Tab)<br />

5250 Function<br />

Key Mnemonic<br />

BackTab Select Select<br />

PF24 PF24 New Line NewLine Setup Setup<br />

PA1 @x Tab Tab<br />

PA2 @y Enter Ctrl+M<br />

PA3 @z<br />

Print Print<br />

Reset Reset<br />

Right Tab (Tab) Tab<br />

Roll Down RollDown<br />

VT Function<br />

Key Mnemonic


172 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

3270 Function<br />

Key Mnemonic<br />

5250 Function<br />

Key Mnemonic<br />

Roll Up RollUp<br />

System Request SysReq<br />

Tab (Right Tab) Tab<br />

Copyright © 1996, Attachmate Corporation. All Rights Reserved.<br />

VT Function<br />

Key Mnemonic


Configuring For Driver Files H<br />

If the emulator you use communicates with HLLAPI, COM, or another<br />

proprietary API, you need to use a driver to communicate between <strong>Vlterm</strong> and the<br />

emulator. When this is the case, there are special vlterm.ini configuration<br />

considerations. Consider the following recommendations when setting up a<br />

<strong>Vlterm</strong> system that uses a driver:<br />

• The PASTE_SESSION= for a CNPn section should reference the driver<br />

session number instead of the emulator session.<br />

• After a paste, set the focus to the appropriate window using the ToggleTo(n)<br />

command with the FocusRemain(Y) command. This is necessary because<br />

the PASTE_SESSION= parameter in a CNPn section determines what<br />

session receives focus, yet the session to which you issue the paste<br />

commands is the hidden driver session, not the user display session.<br />

• Do not use the TGL9 action entry in the vlkeys.ini file. Use a specific TGLn<br />

to set the focus to a specific session. Otherwise, the toggle will switch<br />

between all sessions, including the hidden driver interface.<br />

• Configure an EXIT button to close the driver processes. See the following<br />

excerpt from a vlterm.ini file that shows an Attachmate EXTRA! driver<br />

example.<br />

[CNP2]<br />

CNP_NAME=Stop Extra driver to host session<br />

CUT_SESSION=2<br />

PASTE_SESSION=2<br />

NUMBER_CUT_COMMANDS=0<br />

NUMBER_PASTE_COMMANDS=2<br />

PASTE_CMD1=Other([exit()])<br />

PASTE_CMD2=CNP3<br />

173


174 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

• Note the relationship among the following (the example shows an<br />

Attachmate EXTRA! setup):<br />

The [SHELL] section entry to start the driver interface must specify a unique<br />

/SN= parameter for each instance:<br />

C:\Program Files\<strong>Vlterm</strong>\extdrv.exe /SN=MOSAIX /Debug=Off<br />

This parameter must be used in the corresponding [DDE_SESSION] section<br />

entries:<br />

HOST_SERVER0=ExtDrv<br />

HOST_TOPIC0=MOSAIX<br />

The [WIN_TITLE] section must include:<br />

Extra Personal Client Driver - MOSAIX


Error Messages I<br />

<strong>Vlterm</strong> displays error messages in the following format.<br />

STARTUP.BAS Module<br />

CONFIG.CNP Procedure Errors<br />

Text(6) To MAX_SESSIONS MUST be added to CP.FRM!<br />

Issued when MAX_SESSIONS is greater than five. A text box is defined in<br />

CP.FRM for each session to pass DDE data between the DDE client (<strong>Vlterm</strong>) and<br />

the DDE server. Currently 6 text boxes, TEXT0 - TEXT 5 are defined as a control<br />

array. These can’t be added dynamically at run time and must be added to the form<br />

at design time.<br />

Error in VLKEYS.INI key &i& is missing a comma. Every key entry must have 3<br />

commas.<br />

Issued when a key file is not found or three commas aren’t present for each key,<br />

1-48.<br />

175


176 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Error in Fkeys.ini key &i& is missing a comma. Every key entry must have 3<br />

commas.<br />

FKEYS.INI entries are in the same format as VLKEYS.INI for compatability.The<br />

same rules apply.<br />

Error Reading Configuration Files: &Error(Err)& &Err&<br />

Error exit for CONFIG.CNP. Check according to the Visual Basic error. One<br />

common error is Type Mismatch, which frequently occurs when a non-numeric<br />

field is used to subscript an array. The base cause is usually an incorrect format or<br />

omitted field.<br />

FOCUS_APPS Procedure Errors<br />

Error activating “ & HWIN(i) - &Err& &Error(Err)& . Check [WIN_TITLE] entry in<br />

vlterm.ini<br />

The ini title doesn’t match the emulator title. Check for exact window title<br />

description, including spacing.<br />

HOST_LINK Procedure Errors<br />

Unable to initiate DDE conversation with &HWIN(i)& &Error(Err)& &Err&. Check<br />

[DDE_SESSION] entries for HOST_SERVER and HOST_TOPIC in VLTERM.INI.<br />

When <strong>Vlterm</strong> issues a DDE error message, it has started the emulator sessions and<br />

is attempting to establish a DDE conversation with the emulators. The error<br />

message reports which session it is having trouble with, either session0 or<br />

session1.<br />

There may be several reasons for this error message:<br />

• The emulators have been launched, but the connections to the respective<br />

hosts have not been established. The emulator DDE server typically will not<br />

run unless the session is connected to a host system and ready for use.<br />

Test this by manually starting each session and logging in to each host, then<br />

run <strong>Vlterm</strong>. If <strong>Vlterm</strong> can start after manually starting each emulator, it is a<br />

timing issue with the [SHELL] section automatic launch of the emulators.


Error Messages 177<br />

Increase the delay entries between starting each emulator and trying to DDE<br />

link to the first one by changing:<br />

s_delay0=1000<br />

s_delay1=1000<br />

• The HOST_SERVER and HOST_TOPIC entries in the vlterm.ini file for the<br />

emulator session generating the error are incorrect. The HOST_SERVER<br />

entry is typically the executable name, the HOST_TOPIC entry is the profile<br />

name. For example, for Wall Data Rumba, it is:<br />

HOST_SERVER0=rumbavt<br />

HOST_TOPIC0=mosaix.vtp<br />

INIT_CNP Procedure Errors<br />

Incorrect command line parameter: Expected name of initialization file: (ex.<br />

C:\DSI \VLTERM.INI)<br />

The default location for the vlterm.ini is the current path with the name vlterm.ini.<br />

This message is issued if the optional file name specified on the command line<br />

does not have the extension .ini.<br />

An instance of <strong>Vlterm</strong> is currently running.<br />

<strong>Vlterm</strong> is already running. Check the Windows task list. Multiple copies of <strong>Vlterm</strong><br />

may not be run on the same workstation.<br />

Error setting window as Topmost &rc&<br />

The “loading” message could not be set as topmost, probably indicating that a<br />

window was already set as topmost. This message also appears when the Control<br />

Panel is used and could not be set as topmost.<br />

Unable to start Host session: &(i)& &Error(Err)&. Check [SHELL] entry for<br />

HTERM &i& in VLTERM.INI.<br />

An error occurred trying to Shell a session. Try running the exact command line<br />

from Program Manager to verify correct names.


178 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

FOCUS_APPS Procedure Error<br />

Error activating session” &(i)& - &Err& &Error(Err)& . Check [WIN_TITLE] entry<br />

in VLTERM.INI.<br />

The WIN_TITLE entry does not match the actual window title. Check spaces and<br />

exact spelling of the name.<br />

CNP.BAS Module<br />

CUT_DATA Procedure Error<br />

Unable to cut data for CNP &cur_CNP_num& CUT_CMD &i& . &Error(Err)&<br />

&Err&<br />

An error occurred during the cut. Note the complete error message and notify<br />

Custom Engineering.<br />

PASTE_DATA Procedure Errors<br />

Error Pasting to Host: Unable to clear OIA<br />

The host did not respond and unlock the keyboard in a 3270 session. Verify that<br />

the host is active.<br />

Error Pasting to Host: Wait command did not find selected text<br />

Reflections only. The time limit expired without receiving the expected text on a<br />

Wait command. Verify that the host is active and the text should be received on<br />

that screen.<br />

Error Pasting to &HWIN(cur_paste_sess)& . &Err& &Error(Err)& . CNP<br />

&cur_CNP_num& CMD &I&<br />

This message may appear for many reasons. Verify that the session is active and<br />

on the correct screen and that the command syntax is valid. Processing continues.


SendDDEMessage Procedure Error<br />

Error Messages 179<br />

The function “&sPasteCmd&” is not supported going to the<br />

“&ghWinCaptions(Session)&” emulator.<br />

The paste command cannot be executed because of a problem communicating to<br />

the intended session. Verify the xxx_DDE.ini file entries for the paste command<br />

task type. Invalid or missing DDE communications handling sections within a<br />

xxx_DDE.ini file will generate this error.<br />

SEND_KEY Procedure Errors<br />

Session &HWIN(0)& not active. Unable to continue processing.<br />

An attempt was made to send a release to Mosaix, but the Mosaix session was not<br />

active. Processing terminates and <strong>Vlterm</strong> must be restarted.<br />

Unable to send key to Mosaix: &Err& &Error(Err)&<br />

An error was trapped during the DDE send to the Mosaix session. Processing<br />

continues. If the error is 285 or another DDE type error, try the menu command<br />

RELINK DDE, particularly if a Telnet session may have timed out.<br />

SEND_KEY Error in SetActiveWindow<br />

An attempt was made to focus on the Mosaix window but Windows indicated that<br />

the task was not active. Find out why the Mosaix emulator isn't running.<br />

SEND_PFKEY Procedure Errors<br />

Session &HWIN(cur_focus_flag)& not active. Unable to continue processing.<br />

An attempt was made to send a PF Key to a host session, but the emulator task was<br />

not active.


180 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

Unable to send PF key to host: &Err& &Error(Err) & An error occurred during<br />

the DDE send.<br />

Processing continues.<br />

SETUP_CNP Procedure Errors<br />

Session &HWIN(cur_cut_sess)& not active. Unable to continue processing.<br />

The cut session in a CNP is not active.<br />

Session &HWIN(cur_paste_sess)& not active. Unable to continue processing.<br />

The paste session in a CNP is not active.<br />

TOGGLE_HOST Procedure Error<br />

Session &HWIN(key_event_ number)& not active. Unable to continue<br />

processing.<br />

The selected session in a TGL is not active.<br />

CP.FRM Module<br />

AUTO_CNP.TIMER Procedure Error<br />

Error in Auto CNP<br />

An error occurred in the automatic CNP timer routine. Call Mosaix Customer<br />

<strong>Support</strong>.


Form.Resize Procedure Errors<br />

Error Messages 181<br />

Error setting window as NONTopmost &rc&<br />

An error occurred when the Control Panel was minimized. Call Mosaix Customer<br />

<strong>Support</strong>.<br />

Error setting window as Topmost “ &rc&<br />

An error occurred when the Control Panel was maximized. Call Mosaix Customer<br />

<strong>Support</strong>.<br />

Menu_exit.Click Procedure Error<br />

Exit <strong>Vlterm</strong>: Are you sure?<br />

Exit verification from the popup menu.<br />

FKEYS.FRM Module<br />

KeyButton.Click Procedure Errors<br />

Error in KeyButton_Click<br />

This error may be caused by bad initialization data for the NUMBER_CNPS<br />

parameter in the vlterm.ini file. When VLTERM uses a key parameter to allocate<br />

memory for the program’s execution, it has the potential for an error. The value in<br />

the number of CNPS parameter, is used to dimension an array. When this number<br />

is too small, the array is not allocated with enough memory. This, in turn, causes<br />

a crash when the array is de-referenced beyond its bounds.<br />

This line from a vlterm.ini file shows such an example.<br />

NUMBER_CNPS=1 ;Thisline is insufficient for 27 cut and paste actions.<br />

The fact that the NUMBER_CNPS is one, means that the array only has one array<br />

item. When the array item for CNP5 is accessed, the KeyButton_Click routine<br />

brings up an error message.


182 <strong>Vlterm</strong> Programmer’s <strong>Reference</strong><br />

The error is solved with the correct number setting in vlterm.ini:<br />

NUMBER_CNPS=27 ;This line is the correct setting.<br />

The number used should match exactly the number of CNPs defined.<br />

LOGON.FRM Module<br />

cmdLOGON.Click Procedure Errors<br />

Mosaix LOGON and Password are required. Please retry.<br />

For the predefined host logon form, the host Logon and Password are required.<br />

Please retry.<br />

VERIFY PASSWORD must be entered.<br />

For the predefined host logon form, a change to the password requires an entry in<br />

theVERIFYPASSWORDfield.<br />

Your NEW PASSWORD is not the same as the VERIFY PASSWORD! Please<br />

reenter.<br />

For the predefined host logon form, a change in the new password field requires a<br />

matching entry in the VERIFY PASSWORD field.


Symbols<br />

@x<br />

paste command 39<br />

special keys 107–110<br />

A<br />

Action setting<br />

formn.ini 79<br />

vlkeys.ini 12<br />

API<br />

configuration considerations 173<br />

inter-application communications<br />

tool 5<br />

Application Programming Interface See<br />

API<br />

ASCII control sequences 111<br />

Attachmate<br />

emulator specifics 113–120<br />

EXTRA! @x keys 107–110<br />

EXTRA! Bundle for TCP/IP 116–120<br />

EXTRA! Cursor() paste command 42<br />

EXTRA! cut command format 36<br />

EXTRA! Enterprise 5<br />

EXTRA! for Windows 5<br />

EXTRA! key sequences 169<br />

EXTRA! mnemonic commands 169<br />

EXTRA! Personal Client 116–120<br />

EXTRA! v4.3 115<br />

KEA! 5, 27, 28<br />

KEA! cut command format 35<br />

Netware LAN WS 113–114<br />

OLE communications 116<br />

SendKeys communications 116<br />

AUTO_CUT_COMPARE setting,<br />

vlterm.ini 32<br />

AUTO_ENABLED setting, vlterm.ini 23<br />

AUTO_INTERVAL setting, vlterm.ini 23<br />

automatic cut and paste 63<br />

B<br />

Button object type, forms 75<br />

Index<br />

C<br />

C() paste command 39<br />

Cancel setting, formn.ini 79<br />

Caption setting<br />

formn.ini 79<br />

vlterm.ini 29<br />

CheckBox object type, forms 75<br />

ClipCopyBlock() paste command 40<br />

ClipCut() cut command 37<br />

ClipGet() paste command 41<br />

ClipSet() paste command 41<br />

CloseForm setting, formn.ini 80<br />

CNP_TYPE setting, vlterm.ini 31<br />

183


184 Index<br />

[CNPn] section, vlterm.ini<br />

cut command formats 35–37<br />

paste commands 39–61<br />

settings 30–33<br />

Color setting, vlkeys.ini 13<br />

COM configuration considerations 173<br />

ComboField object type, forms 75<br />

configuration files 10<br />

vlkeys.ini 11–17<br />

vlterm.ini 19–33<br />

See also vlkeys.ini sample files<br />

See also vlterm.ini sample files<br />

Contents setting, formn.ini 80<br />

control sequences 111<br />

ControlFocus setting, formn.ini 77<br />

copyblock, DDE.ini file variable 69<br />

Currency numeric format 92<br />

Cursor() paste command 42<br />

custom forms, loading 75<br />

cut commands<br />

formats 35–37<br />

SendKeys 101<br />

CUT_CMDn setting, vlterm.ini 32, 35–37<br />

CUT_SESSION setting, vlterm.ini 31<br />

CUTn|CVRn paste command 43<br />

CutVarn, DDE.ini file variable 69<br />

D<br />

date formats, FORMAT function 96–100<br />

General Date 97<br />

Long Date 97<br />

Medium Date 97<br />

sample format expressions 99<br />

Short Date 97<br />

user-defined date formats 97–100<br />

Date()<br />

paste command 44<br />

SetVarn subroutine 55<br />

DDE<br />

configuration files 10<br />

description 6<br />

inter-application communication<br />

tool 5<br />

vlterm.ini settings 26–29<br />

DDE.ini<br />

additional variables 72<br />

configuration settings 70–72<br />

copyblock variable 69<br />

CutVarn variable 69<br />

[DDE_CURSOR] section 70<br />

[DDE_CUTS] section 70<br />

[DDE_FINDS] section 71<br />

[DDE_OIAKBD] section 70<br />

[DDE_OTHER] section 71<br />

[DDE_PASTECUTS] section 70<br />

[DDE_PAUSE] section 71<br />

[DDE_PVAR] section 70<br />

[DDE_SENDFKEYS] section 72<br />

[DDE_SENDPFKEYS] section 72<br />

[DDE_SENDTHRU] section 71<br />

[DDE_WAITS] section 71<br />

file variables 68<br />

introducing 67<br />

Line variable 68<br />

LinkItem variable 68<br />

NumberOfLines variable 68<br />

sample file 72–74<br />

DDE_CONFIG_SESSIONn setting,<br />

vlterm.ini 29, 68<br />

DDE_DELAYn setting, vlterm.ini 28<br />

[DDE_SESSION] section, vlterm.ini<br />

settings 26–29


DDE_TIMEOUT setting, vlterm.ini 28<br />

DEBUG setting, vlterm.ini 22<br />

Delay() paste command 44<br />

DISPLAY_FKEYS setting, vlterm.ini 29<br />

DISPLAY_TOOLTIPS setting,<br />

vlterm.ini 30<br />

driver files<br />

configuration considerations 173<br />

EXTRA! recommendations 116<br />

DRV cut command format 36<br />

DynamicDataExchangeSee DDE<br />

E<br />

emulation applications<br />

@x Keys 107<br />

application names 27<br />

cut command formats 35–36<br />

emulator specifics 113–167<br />

Exceed 121–122<br />

EXTRA! Bundle for TCP/IP 116–120<br />

EXTRA! Personal Client 116–120<br />

EXTRA! v4.3 115<br />

Host systems 5<br />

IBM Pcomm 123<br />

identifier 28<br />

Irma 3270 124–125<br />

MiniSoft PowerTerm 126–127<br />

Mosaix system 5<br />

Netmanage Chameleon<br />

HostLink 128–130<br />

Netmanage Chameleon<br />

UnixLink 131–132<br />

Netware LAN WS 113–114<br />

PDSI Psched 133–137<br />

Persoft SmarTerm 138–139<br />

profile name 28<br />

Quarterdeck Procomm Plus 140–141<br />

Index 185<br />

SendKeys 142–143<br />

Teknekron On Demand 144–146<br />

Upstanding FASTerm for<br />

Windows 147–151<br />

Wall Data Rumba Office 152–156<br />

WRQ Reflection 157–163<br />

Zephyr Passport 3270 164–167<br />

error messages 175<br />

ERROR_LOG setting, vlterm.ini 25<br />

Exceed<br />

emulator specifics 121–122<br />

vlterm.ini sample file 121<br />

Exit_<strong>Vlterm</strong> paste command 45<br />

EXTRA!<br />

@x keys 107–110<br />

Bundle for TCP/IP 116–120<br />

Cursor() paste command 42<br />

cut command format 36<br />

driver file recommendations 116<br />

Enterprise 5<br />

for Windows 5<br />

mnemonic commands 169<br />

OLE communications 116<br />

Personal Client 116–120<br />

SendKeys communications 116<br />

special key sequences 169<br />

version 4.3 details 115<br />

vlterm.ini sample files 115, 117<br />

F<br />

File() paste command 45<br />

Find() paste command 46<br />

Fixed numeric format 92<br />

[FKEY_BUTTONS] section, vlterm.ini<br />

settings 29–30<br />

FKEYS_ON_TOP setting, vlterm.ini 29<br />

FKEYS_POSITION setting, vlterm.ini 30


186 Index<br />

Focus setting, vlkeys.ini 13<br />

FocusRemain() paste command 47<br />

FontBold setting, formn.ini 80<br />

FontSize setting, formn.ini 80<br />

ForeColor setting, formn.ini 81<br />

FORMAT function 91–100<br />

date formats 96–100<br />

numeric formats 91–96<br />

string formats 100<br />

syntax 91<br />

time formats 96–100<br />

FormatStr() paste command 47<br />

FormLoad() paste command 47<br />

formn.ini<br />

Action setting 79<br />

Cancel setting 79<br />

Caption setting 79<br />

CloseForm setting 80<br />

configuration settings 76–85<br />

Contents setting 80<br />

ControlFocus setting 77<br />

FontBold setting 80<br />

FontSize setting 80<br />

ForeColor setting 81<br />

[GLOBAL] section 77–78<br />

Height setting 81<br />

Left setting 81<br />

Mask setting 81<br />

MaxButton setting 78<br />

MinButton setting 78<br />

MultiDelimiter setting 82<br />

NumObjects setting 77<br />

Object setting 82<br />

object types 75<br />

[Objectn] section 79–85<br />

Parameters setting 82<br />

Password setting 83<br />

PasteIndex setting 83<br />

Position setting 77<br />

Required setting 83<br />

sample file 86–89<br />

SQLContents setting 84<br />

TabIndex setting 84<br />

Top setting 84<br />

Type setting 84<br />

UnloadOtherForms setting 78<br />

UseContentsData setting 85<br />

UserSetSize setting 77<br />

Value setting 85<br />

Width setting 85<br />

WindowStyle setting 78<br />

WindowTitle setting 78<br />

forms, loading 75<br />

function keys, toolbar equivalents 11<br />

FunctionKeys setting, vlterm.ini 25<br />

G<br />

General Date format 97<br />

General Number numeric format 92<br />

[GLOBAL] section<br />

vlterm.ini settings 22–25<br />

formn.ini 77–78<br />

H<br />

Height setting, formn.ini 81<br />

Hide_Fkeys paste command 48<br />

Hide_Logon paste command 48<br />

HLLAPI<br />

configuration 173<br />

Netmanage Chameleon HostLink 128<br />

Netmanage Chameleon<br />

UnixLink 131<br />

Netware LAN WS 113<br />

Zephyr Passport 3270 164<br />

Host systems emulation applications 5


HOST_SERVERn setting, vlterm.ini 27<br />

HOST_TOPICn setting, vlterm.ini 28<br />

HTERMn setting, vlterm.ini 25<br />

Hummingbird Communications Exceed<br />

emulator specifics 121–122<br />

HWINn setting, vlterm.ini 26<br />

I<br />

IBM<br />

Personal Communications<br />

emulator 123<br />

vlterm.ini sample file 123<br />

Input paste command 48<br />

installing <strong>Vlterm</strong><br />

command line options 9<br />

methods 9<br />

shortcut locations 10<br />

InString, SetVarn subroutine 56<br />

inter-application communications tools 5<br />

Irma<br />

@x keys 107–110<br />

emulator specifics 124–125<br />

Mainframe Display 27, 28<br />

multiple 3270 sessions 125<br />

single 3270 session 124<br />

K<br />

KEA! 5, 27, 28<br />

cut command format 35<br />

L<br />

Label object type, forms 75<br />

Label setting, vlkeys.ini 13<br />

Left setting, formn.ini 81<br />

LeftStr() paste command 49<br />

Like operator<br />

pattern matching rules 106<br />

syntax 105<br />

Line, DDE.ini file variable 68<br />

LinkItem, DDE.ini file variable 68<br />

ListField object type, forms 75<br />

Literal, SetVarn parameter 55<br />

Long Date format 97<br />

Long Time format 97<br />

Lookup() paste command 49<br />

Index 187<br />

M<br />

Mask setting, formn.ini 81<br />

MaskTextField object type, forms 75<br />

MathOnVars() paste command 50<br />

MAX_CUTS setting, vlterm.ini 23<br />

MAX_PASTES setting, vlterm.ini 23<br />

MAX_SESSIONS setting, vlterm.ini 22<br />

MaxButton setting, formn.ini 78<br />

Medium Date format 97<br />

Medium Time format 97<br />

Midstring, SetVarn subroutine 57<br />

MinButton setting, formn.ini 78<br />

MiniSoft<br />

PowerTerm 126–127<br />

vlterm.ini sample file 126<br />

Mosaix system emulation applications 5<br />

Msg paste command 50<br />

MultiDelimiter setting, formn.ini 82<br />

N<br />

Netmanage<br />

Chameleon HostLink 128–130<br />

Chameleon UnixLink 131–132<br />

HLLAPI 128, 131<br />

vlterm.ini sample files 128, 131


188 Index<br />

Netware LAN WS 113–114<br />

vlterm.ini sample file 113<br />

Non-Reserved Word paste command 50<br />

NUMBER_CNPS setting, vlterm.ini 23<br />

NUMBER_CUT_COMMANDS setting,<br />

vlterm.ini 31<br />

NUMBER_PASTE_COMMANDS<br />

setting, vlterm.ini 31<br />

NUMBER_VARS setting, vlterm.ini 24<br />

NumberOfLines, DDE.ini file variable 68<br />

numeric formats, FORMAT function 91–<br />

96<br />

Currency 92<br />

Fixed 92<br />

General Number 92<br />

On/Off 92<br />

Percent 92<br />

predefined numeric formats 92<br />

sample format expressions 96<br />

Scientific 92, 94<br />

Standard 92<br />

True/False 92<br />

user-defined numeric formats 93–96<br />

Yes/No 92<br />

NumObjects setting, formn.ini 77<br />

O<br />

Object Linking and Embedding See OLE<br />

Object setting, formn.ini 82<br />

object types, forms 75<br />

[Objectn] section, formn.ini 79–85<br />

OIA paste command 51<br />

OLE<br />

Attachmate EXTRA! 116<br />

inter-application communications<br />

tool 7<br />

On/Off numeric format 92<br />

Other() paste command 52<br />

P<br />

Parameters setting, formn.ini 82<br />

Password setting, formn.ini 83<br />

paste commands 39–61<br />

@x 39<br />

C() 39<br />

ClipCopyBlock() 40<br />

ClipGet 41<br />

ClipSet() 41<br />

Cursor() 42<br />

CUTn|CVRn 43<br />

Date() 44<br />

Delay() 44<br />

Exit_<strong>Vlterm</strong> 45<br />

File() 45<br />

Find() 46<br />

FocusRemain() 47<br />

FormatStr() 47<br />

FormLoad() 47<br />

Hide_Fkeys 48<br />

Hide_Logon 48<br />

Input 48<br />

LeftStr() 49<br />

Lookup() 49<br />

MathOnVars() 50<br />

Msg 50<br />

Non-Reserved Word 50<br />

OIA 51<br />

Other() 52<br />

Pause() 53<br />

Release 53<br />

Relink 53


RightStr() 53<br />

SendKeys 54, 101<br />

SetVarn 54–57<br />

Date() subroutine 55<br />

InString subroutine 56<br />

Literal parameter 55<br />

Midstring subroutine 57<br />

UserID subroutine 55<br />

Variable parameter 55<br />

ShellApp() 58<br />

Show_Fkeys 58<br />

Start_Auto_CNP 59<br />

Stop_Auto_CNP 59<br />

StrCat() 59<br />

TitleCaption 59<br />

ToggleTo() 60<br />

VARn 60<br />

Wait() 60<br />

WaitForKey() 60<br />

WinFocus() 61<br />

PASTE_CMDn<br />

paste commands 39–61<br />

vlterm.ini setting 33<br />

PASTE_SESSION setting, vlterm.ini 31<br />

PasteIndex setting, formn.ini 83<br />

Pause() paste command 53<br />

PDSI<br />

Psched Software DDE Interface 133–<br />

137<br />

vlterm.ini sample file 133<br />

Percent numeric format 92<br />

Persoft<br />

SmarTerm emulation<br />

application 138–139<br />

vlterm.ini sample file 138<br />

Position setting, formn.ini 77<br />

Index 189<br />

Q<br />

Quarterdeck<br />

Procomm Plus 32 details 140–141<br />

vlterm.ini sample file 140<br />

R<br />

Reflection<br />

cut command format 36<br />

emulation details 157–163<br />

R1 158<br />

R2 5, 27, 28, 159<br />

R4 27<br />

R8 27, 28, 159, 161<br />

special keystroke commands 160,<br />

162<br />

Release paste command 53<br />

Relink paste command 53<br />

Required setting, formn.ini 83<br />

requirements 4<br />

RightStr() paste command 53<br />

ROWn setting, vlterm.ini 30<br />

Rumba<br />

@x keys 107–110<br />

Cursor() paste command 42<br />

cut command format 36<br />

emulator details 152–156<br />

for AS/400 5<br />

for AS400 27, 28<br />

for Mainframe 5, 27, 28<br />

for UNIX/VAX 5, 27, 28<br />

Office 5<br />

S<br />

S_DELAY setting, vlterm.ini 26<br />

Scientific numeric format 92, 94


190 Index<br />

SendKeys<br />

Attachmate EXTRA! 116<br />

ClipCut() command 37<br />

description 6<br />

paste command 54<br />

sample configuration 102<br />

usage 103<br />

vlterm.ini sample file 142–143<br />

vlterm.ini script commands 101<br />

Zephyr Passport 3270 164<br />

Session setting, vlkeys.ini 13<br />

SetVarn paste command 54–57<br />

Date() subroutine 55<br />

InString subroutine 56<br />

Literal parameter 55<br />

Midstring subroutine 57<br />

UserID subroutine 55<br />

Variable parameter 55<br />

[SHELL] section, vlterm.ini<br />

settings 25–26<br />

ShellApp() paste command 58<br />

Short Date format 97<br />

Short Time format 97<br />

Show_Fkeys paste command 58<br />

ShowSplashScreen setting, vlterm.ini 24<br />

SQLContents setting, formn.ini 84<br />

Standard numeric format 92<br />

Start_Auto_CNP paste command 59<br />

Stop_Auto_CNP paste command 59<br />

StrCat() paste command 59<br />

string formats, FORMAT function 100<br />

system requirements 4<br />

T<br />

TabIndex setting, formn.ini 84<br />

TblName setting, vlterm.ini 24<br />

Teknekron<br />

On Demand 144–146<br />

vlterm.ini sample file 144<br />

TextField object type, forms 75<br />

time formats, FORMAT function 96–100<br />

Long Time 97<br />

Medium Time 97<br />

sample format expressions 99<br />

Short Time 97<br />

user-defined time formats 97–100<br />

TitleCaption paste command 59<br />

ToggleTo() paste command 60<br />

toolbar<br />

button definitions 11–14<br />

configuration syntax 12<br />

function key equivalents 11<br />

Tooltip setting, vlkeys.ini 13<br />

Top setting, formn.ini 84<br />

True/False numeric format 92<br />

Type setting, formn.ini 84<br />

U<br />

UnloadOtherForms setting, formn.ini 78<br />

Upstanding Systems<br />

FASTerm for Windows 147–151<br />

special FASTerm keys 147<br />

vlterm.ini sample file 149<br />

USE_DDEn setting, vlterm.ini 26<br />

UseContentsData setting, formn.ini 85<br />

UserID, SetVarn subroutine 55<br />

UserSetSize setting, formn.ini 77<br />

V<br />

Value setting, formn.ini 85<br />

Variable, SetVarn parameter 55


VARn<br />

paste command 60<br />

vlterm.ini setting 24<br />

vlkeys.ini<br />

Action setting 12<br />

Color setting 13<br />

configuring for a driver 173<br />

description 11<br />

Focus setting 13<br />

Label setting 13<br />

sample file 14<br />

Session setting 13<br />

syntax 12<br />

Tooltip setting 13<br />

[VOICELINK_KEYS] section 11–14<br />

vlkeys.ini sample files<br />

automatic cut and paste 65<br />

basic 14<br />

loading forms 76<br />

<strong>Vlterm</strong><br />

command line options 9<br />

configuration files 10<br />

DDE configuration files 10<br />

executable files 10<br />

file reference 10<br />

installation methods 9<br />

shortcut locations 10<br />

<strong>Vlterm</strong> toolbar<br />

button definitions 11–14<br />

configuration syntax 12<br />

function key equivalents 11<br />

vlterm.ini<br />

AUTO_CUT_COMPARE setting 32<br />

AUTO_ENABLED setting 23<br />

AUTO_INTERVAL setting 23<br />

automatic cut and paste 63<br />

CAPTION setting 29<br />

CNP_TYPE setting 31<br />

[CNPn] section 30–33<br />

Index 191<br />

configuring for a driver 173<br />

cut command formats 35–37<br />

CUT_CMDn setting 32, 35–37<br />

CUT_SESSION setting 31<br />

DDE_CONFIG_SESSIONn 29, 68<br />

DDE_DELAYn setting 28<br />

[DDE_SESSION] section 26–29<br />

DDE_TIMEOUT setting 28<br />

DEBUG setting 22<br />

description 19<br />

DISPLAY_FKEYS setting 29<br />

DISPLAY_TOOLTIPS setting 30<br />

ERROR_LOG setting 25<br />

[FKEY_BUTTONS] section 29–30<br />

FKEYS_ON_TOP setting 29<br />

FKEYS_POSITION setting 30<br />

FunctionKeys setting 25<br />

[GLOBAL] section 22–25<br />

HOST_SERVERn setting 27<br />

HOST_TOPICn setting 28<br />

HTERMn setting 25<br />

HWINn setting 26<br />

MAX_CUTS setting 23<br />

MAX_PASTES setting 23<br />

MAX_SESSIONS setting 22<br />

NUMBER_CNPS setting 23<br />

NUMBER_CUT_COMMANDS<br />

setting 31<br />

NUMBER_PASTE_COMMANDS<br />

setting 31<br />

NUMBER_VARS setting 24<br />

PASTE_CMDn 33, 39–61<br />

PASTE_SESSION setting 31<br />

ROWn setting 30<br />

S_DELAY setting 26<br />

sample file 19<br />

[SHELL] section 25–26<br />

ShowSplashScreen setting 24<br />

TblName setting 24


192 Index<br />

USE_DDEn setting 26<br />

VARn setting 24<br />

[WIN_TITLE] section 26<br />

vlterm.ini sample files<br />

automatic cut and paste 64<br />

basic 19<br />

Chameleon HostLink 128<br />

Chameleon UnixLink 131<br />

Exceed 121<br />

EXTRA! 4.3 115<br />

EXTRA! OLE 117<br />

FASTerm 149<br />

loading forms 76<br />

Netware LAN WA 113<br />

On Demand 144<br />

Passport 3270 165<br />

Pcomm 123<br />

PowerTerm 126<br />

Procomm Plus 140<br />

Psched 133<br />

Reflection R1 158<br />

Reflection R8 159, 161<br />

Rumba Office 2000 154<br />

Rumba Office 95/NT 152<br />

SendKeys 102, 142<br />

SmarTerm 138<br />

vt100 control sequences 111<br />

W<br />

Wait() paste command 60<br />

WaitForKey() paste command 60<br />

Wall Data<br />

Rumba @x keys 107–110<br />

Rumba Cursor() paste command 42<br />

Rumba cut command format 36<br />

Rumba for AS/400 5, 27, 28<br />

Rumba for Mainframe 5, 27, 28<br />

Rumba for UNIX/VAX 5, 27, 28<br />

Rumba Office 5, 152–156<br />

vlterm.ini sample files 152, 154<br />

Width setting, formn.ini 85<br />

[WIN_TITLE] section, vlterm.ini<br />

settings 26<br />

WindowStyle setting, formn.ini 78<br />

WindowTitle setting, formn.ini 78<br />

WinFocus() paste command 61<br />

WRQ<br />

Reflection cut command format 36<br />

Reflection emulation details 157–163<br />

Reflection R2 5, 27, 28<br />

Reflection R4 27<br />

Reflection R8 27, 28<br />

special keystroke commands 160,<br />

162<br />

vlterm.ini sample files 158, 159, 161<br />

Y<br />

Yes/No numeric format 92<br />

Z<br />

Zephyr Development<br />

HLLAPI 164<br />

Passport 3270 Client 164–167<br />

vlterm.ini sample file 165

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!