“The following actual sample of BANCStar code was from a production system”


The Wayback Machine – http://web.archive.org/web/20050313023432/http://www.geocities.com:80/ResearchTriangle/Station/2266/tarpit/bancstar.html

A note from the curator…

Joe Loughry, the original author of this page, recently contacted me about this page with some updates. In case you somehow got here by accident, the BANCStar story is a rather twisted one. Joe sent me this page for the original Tarpit and I posted it; however, the publishers of the program, a company called Broadway and Seymour, took great exception to the existence of this page and its less-than-complimentary attitude towards its product and sic’ed a lawyer on me. Being a mere college student at the time, and having a lot less of a spine than I do now, I backed down and removed the link (but did not delete the page).

As I said, I’ve grown a spine since then.

I won’t make the mistake again of backing down over a free speech issue; it’s the one hot button in my political mindset. So without further ado, here is Joe Loughry’s BANCStar description, complete with his 2000 update…


I think the world is ready to be introduced to BANCStar.

The following actual sample of BANCStar source code was taken from a
production system. I’m not too worried about revealing a lot of proprietary
information here, as only about ten people in the world can read this


I think we had something like 1,350 files of this code, most files a
few hundred lines long, though some were over 1,000 lines. The system ran
the retail branch operations of a major commercial bank in the early 1990s.

Interesting features of BANCStar included:

  • The only legal characters in a BANCStar program are the digits 0 through
    9, comma, minus sign, and carriage return. Blank lines are not allowed. If
    a “.” appears anywhere in the file, the compiler will crash.
  • Comments are strictly prohibited.
  • Control structures available include the 3000
    (“conditional”), 3001 (“block conditional”), and 3101
    (“reverse block conditional”), as well as 8500 (“GOTO”)
    and 8550 (“combination GOTO”).
  • There is a hard limit of 2000 variables + constants in the
    entire system. Anything to be displayed on screen or printed on a form must
    be defined as a constant, thereby taking up part of this valuable space.
    As a result, most calculations are done with a block of twenty or so “working
    storage” variables, which are continually reused. Everything in the
    system is global.
    New projects always started off with the
    programmer searching for a handful of working storage numbers that could
    be “borrowed” long enough to complete the calculation, then restored to
    their original values before the rightful owner noticed that they were
  • Labels within the code are absolute, so any time a new page was added or
    removed, all downstream GOTOs must be found and retargeted.

Joe Loughry
email loughry@seattleu.edu
This page was last updated on April 30, 1997.

Joe sent me the following update on July 31, 2000. It says a little more about BANCStar and the company that created it.

A few more details I remember:

BANCStar actually came with a “screen generator” that was supposed
to be used to construct applications. But the 5.1c version of the
generator was so limited that experienced programmers soon began
to pry off the covers and modify directly the intermediate code that
the run-time module actually executed.

When I arrived in Seattle in early 1990, I joined a team of seven
programmers who by now routinely wrote directly in BancSTAR machine
language, completely ignoring the screen generator. The first time
they showed me the language, I thought it was a joke. But within a
few weeks I was reading and writing the code, with the aid of every
BancSTAR programmer’s favorite tools: a dot-matrix printer, lots and
lots of different color highlighters, and a three-ring binder called
the Prompt File, stuffed with printouts of the dozens of tables in
the system, and religiously updated anytime anyone changed anything
of significance. (I wasn’t kidding about reusing storage; if you
needed a constant integer 1000, and you could find a place where
somebody else had once used that same value, you linked your code to
his and hoped it never changed.)

We developed some in-house tools for programming large applications
in BancSTAR, and at one point attempted to interest Broadway & Seymour
in them, but I think they never really believed us, that we were
writing directly to their internal, low-level, undocumented machine

Joe Loughry


I wish to offer only a few comments myself. The Tarpit seems primarily devoted to joke languages (though as I write I’m mulling over a request to add an APL reference to the site). To those who write programming languages for vertical markets, let the above nastiness be a lesson to you: security through obscurity is bad juju.


31 July 2000

Click here to go back to the Turing Tarpit.

Click here to go back to my home page.

[END of message]



Please enter your comment!
Please enter your name here