ABL is a procedural programming language: ABL provides a programmer a means to define precisely each step in the performance of a task. The programmer knows what is to be accomplished and provides through the language step-by-step instructions on how the task is to be done. Using ABL, a programmer specifies language statements to perform a sequence of algorithmic steps.
ABL is block-structured: An ABL procedure is made up of blocks. The procedure itself is the main block of the procedure. There are multiple ways to define other blocks within the main procedure block. The FOR EACH statement and its matching END statement are one example of a nested block, in this case one that iterates through a set of database records and executes all the code in between for each record in the set. There are other block statements you can use for different purposes. Some of them are also iterating, and cause the block to be executed multiple times. Others simply define a set of statements to be executed together.
ABL procedures consist of statements: ABL procedures are made up of a sequence of language statements. Each statement has one or more ABL keywords, along with other tokens such as database field names or variable names. A single statement can span multiple lines, and there can be multiple statements on a single line. ABL is case-insensitive.
ABL combines procedural, database, and user interface statements: There are three basic kinds of statements in an ABL program: procedural statements, database access statements, and user interface statements. Sometimes individual statements contain elements of all three. Your first simple procedure contains all three types, and illustrates the power of the language.
For more information on characteristics of ABL, see the guide OpenEdge Getting Started: ABL Essentials.