Est. 1997 Beginner

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

Paradigm Procedural, event-driven scripting; Visual Basic-style BASIC with OLE Automation client support
Typing Static where declared, with an untyped Variant default; type-declaration suffix characters ($, %, &, ?, !, #, @) and optional Option Explicit
First Appeared Around 1997, bundled with Hummingbird Exceed 6.0 (Exceed 6.0.2 media from 1998 installs it as 'Hummingbird Basic')
Latest Version Continues under the name HostExplorer Basic; an OpenText HostExplorer Basic Language Programmer's Guide for version 15.0 is reportedly dated April 2025

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 EBasic with the display name “Hummingbird Basic.” It registers .ebs source and .ebh header 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 Sub and Function procedures. A Goto targets 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 a Variant, and Option Explicit makes 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 .ebs source file to a .ebx file. Administrators could hand out the compiled form, and later product versions could often run old .ebx files 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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
' A minimal Hummingbird Basic script (.ebs)
Sub Main
    Dim user$
    user$ = InputBox("Enter your host user ID:")
    ' 36 = Yes/No buttons with a question icon; 7 = the user chose No
    If MsgBox("Log on as " & user$ & "?", 36, "Logon") = 7 Then
        MsgBox "Cancelled."
    Else
        MsgBox "Logging on as " & user$
    End If
End Sub

Subprocedures can be called with or without Call. The guide gives these two forms as equivalent:

1
2
GetFTP file1, file2, file3
Call GetFTP(file1, file2, file3)

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

SuffixType
$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:

1
2
3
4
5
6
7
8
9
Type phone_number
    phone As String
    areacode As String
End Type

Sub Main
    Dim Joe As phone_number
    Joe.phone = "967-2222"
End Sub

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:

1
2
3
4
Begin Dialog testdlg 286, 245, "Interactive Dialog", .interact
    ' control statements such as TextBox, CheckBox, OkButton
End Dialog
Dim td As testdlg

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:

1
2
3
4
5
6
7
8
Sub Main
    Dim HE As Object
    Set HE = CreateObject("HostExplorer")
    ' Press tab key twice
    HE.CurrentHost.Keys "\t\tTab Twice"
    ' Press Ctrl-C
    HE.CurrentHost.Keys "^C"
End Sub

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

PeriodDevelopment
HostExplorer 4.xMacros 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
2002Programmer’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

1997
In January, Hummingbird Communications buys the terminal emulation software developed at McGill University by Pierre Goyette (co-owned by McGill and Goyette's company PolarSoft), and markets it as HostExplorer
1997
Hummingbird introduces Exceed 6.0 (around September, per an October 1997 trade report); the Exceed 6 media carries Hummingbird Basic components (EBASIC) with file dates from mid-1997
1998
Hummingbird publishes the Hummingbird Basic Language Guide (document 8157-3M, dated August 1998), covering the Workbench, Dialog Editor and the API and OLE functions for FTP and HostExplorer
2000
HostExplorer 7.0 is announced in September 2000, with shipping set for September 30; the 7.x release notes tell users that most compiled .ebx scripts from version 6.2 run without being rebuilt
2002
Hummingbird Ltd. publishes the Hummingbird Basic Language Programmer's Guide (document 8157-6M, copyright 1990-2002), the edition most often found online and the source of the master list's 2002 date
2006
Open Text completes its acquisition of Hummingbird Ltd. on October 2, bringing Exceed, HostExplorer and their scripting language into OpenText's Connectivity line
2024
Rocket Software completes its purchase of OpenText's Application Modernization and Connectivity business in May; HostExplorer is now sold as Rocket HostExplorer
2025
An OpenText HostExplorer Basic Language Programmer's Guide for version 15.0, reportedly revised in April 2025, still documents the same .ebs/.ebx language under its new name

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

Language Influence

Influenced By

BASIC Visual Basic Visual Basic for Applications

Running Today

Run examples using the official Docker image:

docker pull
Last updated: