> BCPL [...] used an area of memory called the global vector [...] to allow separately compiled modules to share variables. The GLOBAL declaration allowed the programmer to name elements of the global vector, and there was a rule that global variables would be initialised to the entry points of functions if their names matched the names of declared global variables. This initialisation took place when modules were loaded. [...] this mechanism is not beautiful and much hated by some
"Not beautiful and much hated by some" is a masterful piece of understatement.
This is what a GLOBAL declaration looks like:
GLOBAL
$(
printf : 89
programmeriq : 90
$)
You're reading that correctly. There is no symbolic linkage in the language. You declare the specific numeric slot in a global array you think your function or global variable should occupy. You hope nobody else uses the same ones. That's how you call functions defined in other compilation units.