A class of high-level languages in which a program is made up of blocks — which may include nested blocks as components, such nesting being repeated to any depth. A block consists of a sequence of statements and/or blocks that is treated as a single unit in its enclosing block. Variables declared at the head of a block are visible throughout the block and any nested blocks, unless a variable of the same name is declared at the head of an inner block. In this case the new declaration is effective throughout the inner block, and the outer declaration becomes effective again at the end of the inner block. Variables are said to have nested scopes.
The concept of block structure was introduced in the Algol family of languages, and block-structured languages are sometimes described as Algol-like. The concept of nested scopes implicit in block structure contrasted with Fortran, where variables were either local to a program unit (subroutine) or global to several program units if declared to be common. Both of these contrasted with Cobol, where all data items were visible throughout the entire program. Modern languages are almost all block-structured, and such languages as Fortran and Basic have acquired features of block structure in later versions.