2012-01-22 29 views
11

COBOLをインデントする必要があるのはなぜですか、各ソースファイルに余白がありますか?COBOLをインデントする必要があるのはなぜですか?

IDENTIFICATION DIVISION. 
    PROGRAM-ID. HELLO-WORLD. 
    PROCEDURE DIVISION. 
     DISPLAY 'Hello, world'. 
     STOP RUN. 

同様のフォーマットがFortranコードで見ることができます:

program hello 
     print *, "Hello World!" 
    end program hello 

しかし、なぜCOBOLとFortranは、この空白が必要なのでしょ

は、このコード(追加の空白に注意してください)考えてみましょうか?どういう理由ですか?

+0

コードはFortran 90以降ではなく、77である可能性があります。 –

答えて

19

コボルは、もはやインデントする必要はありません。 AFAIK、すべて最新のコンパイラは、フォーマットフリーのCobolソースをサポートしています。

元の理由は、パンチカードを扱っていました。 Cobolはラインシーケンス番号の最初の6桁を保持していました。列7は継続/コメント/デバッグ/フォームフィードでした。領域「A」、または8〜11列目は、01レベル、セクション名または段落名などの特定の特殊言語成果物を示しました。領域「B」、または列12〜72は公開コード用です。列73〜80は、OSシーケンス番号用であった。

CobolとFortranの2つの言語は、自動パーサーの生成が行われる前に書かれています。また、解析可能なソーステキストを作成する方法について、善良で悪い考えを引き出すための実際の先行技術はありませんでした。だから、特別なセクションヘッダーのためのエリア "A"のようなもののいくつかは、手動でパーサを書くのをより簡単にしました。現代の言語は文脈自由文法を使用してパーサー生成を簡単にする傾向があります。しかし、それはコボル(Cobol)を後にしている。

+3

IBM Enterprise COBOLコンパイラー(メインフレーム)には依然として列が必要です。 – zarchasmpgmr

+0

本当にあなたは正しいです。 SRCFORMAT(EXTEND)は、IBM Cobol for AIXでのみ使用できます。 –

+0

パンチカードの使用と字下げルールの間に直接の関連はありません。あなたの答えの第二の部分は、もっともっともらしい理由を与えるようです。 – eriktous

関連する問題