🏦 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).