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.