COBOL実装では、手続き部の完結文(センテンス)と文(ステートメント)を区別している。文とは、単一の実行可能なCOBOL命令のことである。例えば以下の例は全て文である。
MOVE SPACES TO Employee-Address
ADD 1 TO Record-Counter
DISPLAY “Record-Counter=” Record-Counter
一部のCOBOL文には「適用範囲」があり、ある文が当該文の一部であるか、関連していると考えられる。例えば以下のように、ローンの残高が10000ドル未満の場合は4%、それ以外は4.5%でローンの利息が計算・表示される。
IF Loan-Balance < 10000
MULTIPLY Loan-Balance BY 0.04 GIVING Interest
ELSE
MULTIPLY Loan-Balance BY 0.045 GIVING Interest
DISPLAY “Interest Amount = “ Interest
この例では、「IF」文の範囲内に二組の関連する文があり、それぞれ「IF」条件がTRUEの場合、またはFALSEの場合に実行される。
しかし、この例には問題がある。人間がこのコードを見たとき、インデントがないことから「IF」条件が示すTRUEまたはFALSEの値に関係なく、DISPLAY文が実行されると考えるだろう。残念ながら、opensource COBOLコンパイラ(またはその他のCOBOLコンパイラ)にとってインデントは関係がないため、人間とは異なる識別をする。実際に、opensource COBOLコンパイラは、次のようなコードでも上記の例と同様に識別される:
IF Loan-Balance < 10000 MULTIPLY Loan-Balance BY 0.04
GIVING Interest ELSE MULTIPLY Loan-Balance BY 0.045
GIVING Interest DISPLAY “Interest Amount = “ Interest
では、DISPLAY文が「IF」の範囲外であることを、コンパイラにどのように通知すれば良いだろうか。
そこで用いるのが完結文である。
COBOL文は、恣意的長さの連続した文と、それに続くピリオド(.)で構成される。ピリオドは一連の文の範囲が終了することを示し、次のようにコーディングする必要がある。
IF Loan-Balance < 10000
MULTIPLY Loan-Balance BY 0.04 GIVING Interest
ELSE
MULTIPLY Loan-Balance BY 0.045 GIVING Interest.
DISPLAY “Interest Amount = “ Interest
二番目のMULTIPLYの最後にピリオドがあるのがわかるだろうか。これによって「IF」の範囲が終了し、「Loan-Balance < 10000」という式の結果に関わらず、DISPLAYが実行されるようになる。