Hummingbird Basic
Hummingbird Basic is the VBA-style scripting language Hummingbird bundled with Exceed and HostExplorer to automate mainframe terminal sessions, FTP transfers and Windows desktop chores; it survives today as HostExplorer Basic
Created by Hummingbird Communications Ltd. (later Hummingbird Ltd.), Toronto
Hummingbird Basic is the macro and scripting language that Hummingbird Communications shipped with its PC connectivity products, Exceed (an X Window server for Windows) and HostExplorer (an IBM 3270/5250 and VT terminal emulator), from around 1997 onward. Hummingbird’s guides call it “a fully functional language that includes a Workbench for writing and compiling scripts, and a graphical drag-and-drop Dialog Editor.” HostExplorer’s help describes the Workbench as a Microsoft VBA-compatible Basic interpreter and compiler. Its main job was automating the dull work of enterprise desktops around 2000: logging on to mainframes, pulling data off green-screen sessions, moving files between PCs and UNIX hosts, and rebuilding Windows configurations. The name “Hummingbird Basic” went away after OpenText bought the company, but the language did not. It is still documented as HostExplorer Basic, and its scripts still use the .ebs and .ebx file extensions from the late 1990s.
History & Origins
Hummingbird and HostExplorer
Hummingbird Communications was a Toronto-area company best known for Exceed, which let Windows PCs display applications from UNIX workstations. In January 1997 it widened its range into mainframe access by buying a TN3270 emulation package from McGill University and PolarSoft, the company of its original developer, Pierre Goyette. The McGill Reporter put the price at $8.5 million and said the software, which had been called PCWS, Net3270 and TCP3270, was “now known as HostExplorer.”
Earlier HostExplorer releases used a different engine. Hummingbird’s HostExplorer programming help includes a section called “Differences Between Hummingbird Basic and WinWrap Basic,” noting that “WinWrap Basic was used in HostExplorer v4.x.” Hummingbird Basic was the company’s own branded language, shared across its whole product line instead of tied to one emulator.
First appearance
The master encyclopedia list gives 2002 for Hummingbird Basic, but that is the date of the best-known surviving manual (the 2002 Programmer’s Guide, document 8157-6M), not the language’s debut. The language is clearly older:
- The Exceed 6.0.2 installation CD (1998, preserved by the Internet Archive) installs a component named
EBasicwith the display name “Hummingbird Basic.” It registers.ebssource and.ebhheader file types and puts a “Hummingbird Basic User’s Guide” in the Start menu. The Basic component files on that CD are dated between June 1997 and February 1998. - Hummingbird introduced Exceed 6.0 in autumn 1997. A trade report dated October 1997 says the new version came out “last month.”
- The Hummingbird Basic Language Guide on a later 1998 Exceed CD is dated 15 August 1998 and numbered 8157-3M. That number suggests at least two earlier editions, although none have been found.
So the language first shipped around 1997, as part of the Exceed 6 generation. This page uses 1997 for that reason. No earlier date could be confirmed: a 1995 Exceed for Windows manual on the Internet Archive does not mention Basic at all.
Design Philosophy
Hummingbird Basic was not meant to be a new language. The goal was a language that office IT staff already knew. The guides compare it to “older versions of BASIC (those that predate Windows)” and say it “more closely resembles other higher level languages popular today, such as C and Pascal.” In practice, that meant the Visual Basic dialect:
- No line numbers. Code is split into
SubandFunctionprocedures. AGototargets a named label, not a line number. - Typed variables with an escape hatch. Variables can be declared with
Dim ... As Type. Anything left undeclared becomes aVariant, andOption Explicitmakes declarations mandatory. - Automation over invention. The language did not get a large built-in library for terminal work. Instead, Hummingbird made its applications OLE Automation servers and made Basic an automation client, so the same script could drive HostExplorer, Hummingbird FTP, Microsoft Word or any other OLE-enabled program.
- Compile, then distribute. The Workbench compiles a
.ebssource file to a.ebxfile. Administrators could hand out the compiled form, and later product versions could often run old.ebxfiles without a rebuild.
Key Features
Program structure
Every script needs exactly one Main subprocedure, which is where execution starts. A procedure has to be defined before it is called, or else forward-declared with Declare:
| |
Subprocedures can be called with or without Call. The guide gives these two forms as equivalent:
| |
Data types
The 2002 guide lists Variant, numeric, String, Object, array and record (user-defined Type) data. It also lists dialog-box records, which are tied to the controls of a dialog box. Type-declaration characters can stand in for As clauses (Dim bird$ is the same as Dim bird As String):
| Suffix | Type |
|---|---|
$ | Dynamic String |
% | Integer |
& | Long Integer |
! | Single |
# | Double |
? | Portable Integer |
@ | Currency (exact fixed point) |
The Portable Integer type is the same as Integer on 16-bit Windows and the same as Long on Windows 95 and NT. This is a reminder that Hummingbird Basic dates from the move from 16-bit to 32-bit Windows; the Exceed 6 CD shipped it for Windows 3.x, Windows 95 and Windows NT. The language has no true Boolean type. Comparisons return -1 for True and 0 for False. Dynamic arrays are resized with ReDim, and Option Base sets the lower bound of arrays to 0 or 1.
Records work like Visual Basic’s user-defined types:
| |
Dialog boxes
A distinctive feature is the Begin Dialog ... End Dialog block, which defines a dialog box in code. You can type it yourself or let the drag-and-drop Dialog Editor generate it. The dialog’s definition becomes a record type, and an optional dialog function (named with a leading period) handles events while the dialog is on screen:
| |
Functions such as DlgEnable, DlgText, DlgValue and DlgVisible read and change controls while the dialog is displayed. The language also provides message boxes, input boxes and password boxes, which do not echo keystrokes.
Driving other applications
Because Hummingbird Basic acts as an OLE Automation controller, most terminal automation is done through objects. The HostExplorer programming help gives this example of sending keystrokes to the current session:
| |
The same object model was available to Visual Basic, C++ and other COM languages, so code could move fairly easily between a Hummingbird Basic macro and an external program. The language can also call functions in Windows DLLs through Declare (the guide shows Win32 API and registry examples), exchange data with other programs over DDE, and, for Exceed customers, call Xlib functions to write small X clients.
Built-in library
Besides the usual string, numeric, trigonometric, file and directory functions, the language reference includes financial functions (the guide’s example computes net present value with NPV), extended date and time functions, environment control (running programs, sending keystrokes, yielding to the operating system), and structured error trapping with On Error.
Evolution
| Period | Development |
|---|---|
| HostExplorer 4.x | Macros used WinWrap Basic, not Hummingbird’s own language |
| Exceed 6.0 era (c. 1997–1998) | Hummingbird Basic ships with Workbench and Dialog Editor across the product line; 3rd-edition guide (8157-3M) dated August 1998 |
| Version 6.2 → 7.x (c. 1999–2001) | Release notes say most compiled .ebx files carry over unchanged; scripts using the -e, -h or -u directory macros must be rebuilt because install paths moved |
| Version 7.x (from September 2000) | The 7.1 release notes introduce a Macro & Profile Converter that translates RUMBA and EXTRA! macros into Hummingbird Basic |
| 2002 | Programmer’s Guide 8157-6M; version 8 release notes again say most 6.2/7.x .ebx files run unchanged |
| OpenText era (from 2006) | Language renamed HostExplorer Basic; the v15.0 guide (reportedly revised April 2025) keeps the same structure, samples and file formats |
The most recent guide still shows its Hummingbird origins: its sample paths point to C:\Program Files\Hummingbird\Connectivity\..., and its sample scripts (dialog.ebs, testftp.ebs, pastword.ebs, sendrecv.ebs) are the same ones listed in the 1998 guide.
Current Relevance
As a brand, Hummingbird Basic is historical: Hummingbird Ltd. no longer exists, and OpenText renamed the language. As working technology, it is not dead. HostExplorer passed from Hummingbird to OpenText in 2006 and then to Rocket Software, which bought OpenText’s Application Modernization and Connectivity business in May 2024. The language is still documented as HostExplorer Basic, and Micro Focus Reflection Desktop documentation has described a compatibility feature for running existing Hummingbird Basic .ebs macros.
The language’s continued documentation and the compatibility support in competing emulators point to the same thing: many of the scripts that matter today are old logon and screen-scraping macros, written for 3270 and 5250 applications that are still in use. Teams moving those users to another emulator have to deal with Hummingbird Basic even if they never write any new code in it.
Why It Matters
Hummingbird Basic is a good example of a common pattern in 1990s commercial software: the embedded, vendor-branded Visual Basic dialect. Products such as WinWrap Basic, Sax Basic and Attachmate’s EXTRA! Basic gave ordinary users VBA-like scripting inside applications that Microsoft’s own VBA did not reach. Hummingbird’s version stands out because it was shared across a whole connectivity suite (X server, terminal emulator and FTP client) and connected them through OLE Automation. One .ebs file could log on to a mainframe, transfer a file, and paste the result into Microsoft Word.
It also shows how long enterprise scripting can last. The language’s file formats and much of its documentation have outlived the company that created them by about two decades, and they have been through three owners. Behind the “2002” date in the master list are scripts from the 1990s that are still running today.
Timeline
Notable Uses & Legacy
HostExplorer terminal emulation
Recording, editing and replaying macros against IBM 3270 and 5250 mainframe and midrange sessions, such as automating logons, scraping screen fields and driving IND$FILE-style file transfers from CMS or TSO
Hummingbird FTP
Scripting unattended file transfers through the FTP OLE automation engine, as shown in the testftp.ebs sample that logs on to a host and downloads a file
Hummingbird Exceed
Calling Xlib API functions from Basic to build simple X Window clients on the PC, a capability the guides restrict to customers who bought the Exceed X server
Migration from other emulators
Target language of Hummingbird's Macro & Profile Converter, which translated Wall Data RUMBA and Attachmate EXTRA! macros into Hummingbird Basic for customers moving to HostExplorer
Micro Focus Reflection Desktop
Reflection Desktop documentation (versions 16 to 18) describes running existing Hummingbird Basic .ebs macros against 3270 sessions when its HostExplorer compatibility feature is installed