An NBC program is composed of code blocks and global variables in data segments. There are two primary types of code blocks: thread and subroutines. Each of these types of code blocks has its own unique features and restrictions, but they share a common structure.
A third type of code block is the preprocessor macro function. This code block type is used throughout the NBC API. Macro functions are the only type of code block, which use a parameter passing syntax similar to what you might see in a language like C or Pascal.
Data segment blocks are used to define types and to declare variables. An NBC program can have zero or more data segments, which can be placed either outside of a code block or within a code block. Regardless of the location of the data segment, all variables in an NBC program are global.