Skip to content

Latest commit

 

History

History
52 lines (39 loc) · 2.83 KB

File metadata and controls

52 lines (39 loc) · 2.83 KB

前へ/目次/次へ

6.1.5. ピリオド(.)

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が実行されるようになる。

ページトップへ