B4S is a preprocessor set up by Dean Elsner in an attempt to make BP2
compile and run at a finite speed and fit into a reasonable area of
disk at a time when both time and space were critical.
There would be little justification for taking such a course on
today's hardware. However at the time (1982) it was a lifesaver.
It could still be of great use to those with old, small, slow
systems who are using Basic Plus 2..
B4S takes a file of basic code without necessarily any line numbers.
It inserts its own numbers as required, taking note of any numbers
which may have been included. This means that spource modules can be
made more easily portable, as line numbers can be effectively ignored
in most cases.
B4S makes provision for "include" pre-processing, by including the
name of the required file in curly brackets. e.g.:
{BL:[101,5]FNFCSCHK.B4S}
This is very useful in the case of large MAP or COMMON definitions
which must be included in each of several modules.
A key link in trying to make Basic Plus 2 acceptable was to throw out
RMS and write a series of BP2 and MACRO subroutines using the FCS
routines for file access. These have proved very successful in the
relatively straightforward world of engineering where there is no
great need for ISAM capabilities. These routines and the relevant
libraries are in [274,101]. A number of "include" modules treated
as library modules are in [274,105]. This system is referred to as
"BASIC MINUS 2" (BM2).
Typically, task file sizes were reduced by anything up to 75% (e.g.
from 240 blocks using RMS to 60 blocks using BM2. Task builds sped
up by a substantial amount (measured in cups of coffee).
A full example of how the basic minus 2 system is used is given in
[274,6]. This area includes the sources for a Hardy Cross network
analysis utility written in "BM2" as an example only.
Much of our site's forward programming is in DECUS-C. However BM2 is
still used almost all the time by our young draftsmen for routine
engineering software development. We often find that the quickest way
to get something up and running is to throw it together in B4S and
when you know what is actually required, re-write it properly in C.
Meanwhile, your office has been making money with the interim B4S
utility. There have also been a number of times when I have faced a
delivery deadline of 8 a.m., abandoned the C code in which I have
been trying to follow pointers off random parts of the end of the
earth, and written a quick hack in BM2 which worked slowly but
adequately in the morning.
Richard Wittenoom
3 Ord Street, West Perth 6005,
Australia.
Phone (0)9-3-222-777