🏦 COBOL

Язык банков и мэйнфреймов: дивизионы, типы PIC, абзацы, файлы.

Шпаргалки · Программирование · #cobol #legacy #mainframe

IDE и запуск

GnuCOBOL (cobc -x prog.cob), IBM Enterprise COBOL (мэйнфреймы z/OS), Micro Focus Visual COBOL, VS Code + расширения COBOL. Классическая раскладка: колонки 8–72.

Структура программы

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-NAME  PIC X(20) VALUE "Мир".
       01 WS-NUM   PIC 9(4)  VALUE 10.
       PROCEDURE DIVISION.
           DISPLAY "Привет, " WS-NAME
           STOP RUN.

Четыре дивизиона: IDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE.

Типы данных (PIC)

PIC Смысл
9(5) число из 5 цифр
S9(5) число со знаком
9(3)V99 неявная десятичная точка (3 цела + 2 дробных)
X(10) строка 10 символов
A(10) только буквы
COMP, COMP-3 двоичное и упакованное десятичное хранение

Уровни 01–49 задают вложенность (запись, группа, поле), 88 задаёт условное имя.

Операторы и арифметика

ADD 1 TO WS-NUM
SUBTRACT 2 FROM WS-NUM
MULTIPLY 3 BY WS-NUM
DIVIDE 2 INTO WS-NUM
COMPUTE WS-NUM = (WS-A + WS-B) * 2
MOVE "текст" TO WS-NAME

Сравнение: =, >, <, NOT =, AND, OR.

Условия и циклы

IF WS-NUM > 5
    DISPLAY "много"
ELSE
    DISPLAY "мало"
END-IF

PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
    DISPLAY I
END-PERFORM

EVALUATE WS-NUM
    WHEN 1  DISPLAY "один"
    WHEN OTHER DISPLAY "другое"
END-EVALUATE

Абзацы и вызовы

PROCEDURE DIVISION.
    PERFORM PRINT-HEADER
    STOP RUN.
PRINT-HEADER.
    DISPLAY "=== Отчёт ===".

Подпрограммы: CALL "SUBPROG" USING WS-A WS-B.

Файлы

OPEN INPUT IN-FILE
READ IN-FILE AT END MOVE "Y" TO WS-EOF END-READ
WRITE OUT-REC
CLOSE IN-FILE

Организация: SEQUENTIAL, INDEXED, RELATIVE.

Встроенные функции

FUNCTION LENGTH, FUNCTION UPPER-CASE, FUNCTION CURRENT-DATE, FUNCTION NUMVAL, FUNCTION TRIM.

Где применяют

Банки, страхование, государственные системы, обработка транзакций на мэйнфреймах (CICS, DB2, JCL).