COMMAND - command to invoke the B compiler.
Syntax:
B source-file [library-file]* [option]*
+Batch +Clear
(+|-)Go (-) Hstar=filename (.h)
Library=filename (+|-)Load (+)
(+|-)LoadBstar (-) Memory=nn (5)
(+|-)Map (-) Name=name (object)
(+|-)Respectcase (-) StandardLibrary=lib
Stack=nnn (500) +TEST
(+|-)Tables (+) Update=filename
USe=name[,name]*
Examples:
b *
b bprog (compile program in file bprog)
b /bcatl/srce -t s=800 (no debugging, stack size 800)
b /input u=mylib (edit into mylib)
b h=xx l=mylib (use mylib as library)
Options:
- source-file
- is the name of a file containing a B source program. You
may give only one source file argument, but it may
consist of the names of several files concatenated with
"+" signs.
- library-file
- must be the name of a random library. It will be treated
as if you had said "Library=library-file".
- +Batch
- causes the batch I/O library to be associated with the
program when loading. The batch library will be searched
before the main library, but after any other libraries
specified using the "Library=" option.
- +Clear
- specifies that Ranedit should initialize and clear the
library. This is only used in connection with the
"Update=" option. "+Clear" is
mandatory for a new library.
- +Go
- instructs the compiler to execute the program after
compilation.
- Hstar=filename
- is the name of a random file which will contain the load
module generated by the compiler. The default is a file
called ".h"; this is created as a temp file if
necessary. Use of the word "hstar" comes from
the fact that the batch loader uses a file code of
"h*" to contain the load module it creates.
- Library=filename
- specifies a user's random library. If more than one is
supplied, they are searched in the order they appear.
- -Load
- instructs the compiler not to load your program after
compilation. The object file (b*) created during
compilation is simply left in the AFT.
- +LoadBstar
- tells the compiler to load an already existing object
file (b*) if no source file is given. This is handy if
you leave off a library name by mistake and just want to
retry loading without having to recompile everything
again. This option may not be used in conjunction with
the "Update=" option.
- +Map
- asks the TSS loader to generate its load map. This map is
always displayed on the terminal.
- Memory=nn
- requests initial memory for the TSS loader.
"nn" is a number of 1024 word blocks, forced to
be in the range 5 to 175. The default is 5. If the amount
of memory you specify is insufficient, the loader will
grow itself automatically.
- Name=name
- specifies that a program element is named
"name". "name" is truncated to six
characters if necessary and defaults to
"object" if not specified.
- +Respectcase
- forces the compiler to respect case distinctions in
alphabetic characters. If this option is used, all
keywords must be in lower case. (Note that the loader
ignores the case of letters in external names, regardless
of the "Respectcase" option.)
- StandardLibrary=lib
- This is used to specify one of the standard B libraries.
Currently "syslib" is the only valid standard
library.
- Stack=nnn
- sets the size of the B stack. The default is 500 words.
- -Tables
- instructs the compiler not to produce function-specific
debugging tables, and not to generate code to perform
stack bound checking. Function debug tables describe the
auto variables of the function and the location and type
of each function line.
- +TEST
- tells the system to use the test versions of the B
libraries.
- Update=filename
- tells the compiler to edit the routine(s) being compiled
into the specified random library. (This is done using
Ranedit.) When this option is specified, the loader may
not be called.
- USe=name[,name]*
- forces the loader to load the routine(s) identified by
"name" (six characters or less). This feature
is implemented by having the compiler generate SYMREF's
to the named routines.
Description:
The B command compiles programs written in B. Normally, you
use the B command to compile a source program and then either to
prepare a load module (possibly using libraries) or else to edit
the resulting object decks into a random library.
Sometimes you may want to use the compiler to prepare a load
module exclusively from libraries, without doing any compilation.
In this case, the first library must contain the routine called
MAIN.
Finally, if there was an error during loading because you
omitted a library name or a "USe=" option, you can use
the B command with the "+LoadBstar" option to retry the
loading without going to the trouble of recompilation.
Only one source file name may be supplied to a B command line.
The B stack is used to store auto variables and temporaries.
At least four stack words are used for each function call, as
well as one for each argument and auto variable.
If your B program is written as a command that takes arguments
in the command line, you can run it after compilation using the
command
go arg1 arg2 ...
GO is a command which loads the module that is left in file
".h" by the TSS loader.
Files Used:
b* - temp file to contain object decks for loader
.h - default location to place load module
fc**lb - main library (uw_tools/8fw1.5/blib)
fc**bl - batch library (uw_tools/8fw1.5/batl) for
"+Batch" option
Copyright © 1996, Thinkage Ltd.