2012-01-22 25 views
11

Tại sao COBOL phải được thụt vào, như trong, có khoảng cách bổ sung trong mỗi tệp nguồn?Tại sao COBOL phải được thụt lề?

xem xét mã này (chú ý khoảng trắng bổ sung):

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

Một định dạng tương tự có thể được nhìn thấy trong mã Fortran:

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

Nhưng tại sao COBOL và Fortran cần khoảng trắng này? Lý do là gì?

+0

Mã có thể là Fortran 90 hoặc mới hơn, không 77. –

Trả lời

19

Cobol không còn bị thụt vào. AFAIK, tất cảnhất trình biên dịch hỗ trợ định dạng nguồn Cobol miễn phí hiện đại.

Lý do ban đầu là xử lý thẻ đục lỗ. Cobol giữ 6 vị trí đầu tiên cho một số thứ tự dòng. Cột 7 là một tiếp tục/bình luận/debug/form-feed. Khu vực "A", hoặc Cột 8-11, chỉ ra một số hiện vật ngôn ngữ đặc biệt như 01 cấp độ, tên phần hoặc đoạn văn, et al. Khu vực "B" hoặc Cột 12 - 72, là mã mở. Cột 73 - 80 dành cho số thứ tự OS.

Hai ngôn ngữ bạn đề cập, Cobol và Fortran, đều được viết trước khi tạo trình phân tích cú pháp tự động tồn tại. Và họ không có nghệ thuật thực sự trước đây để vẽ cho những ý tưởng tốt và xấu về cách tạo văn bản nguồn có thể phân tích cú pháp. Vì vậy, một số thứ - như Khu vực "A" cho các tiêu đề phần đặc biệt - đã thực hiện nhiệm vụ viết thủ công các trình phân tích cú pháp dễ dàng hơn. Các ngôn ngữ hiện đại có xu hướng sử dụng ngữ pháp tự do ngữ cảnh để làm cho việc tạo trình phân tích cú pháp trở nên đơn giản. Nhưng mà sau đó Cobol.

+3

Trình biên dịch COBOL của IBM Enterprise (máy tính lớn) vẫn yêu cầu cột. – zarchasmpgmr

+0

Thật vậy, bạn là chính xác. SRCFORMAT (EXTEND) chỉ khả dụng trên IBM Cobol cho AIX. –

+0

Tôi không thấy kết nối ngay lập tức giữa việc sử dụng thẻ đục lỗ và quy tắc thụt đầu dòng. Phần thứ hai của câu trả lời của bạn dường như đưa ra một lý do chính đáng hơn. – eriktous