COBOL (Common Business-Oriented Language) — широко используемый язык программирования в мэйнфреймах и устаревших системах. Хотя COBOL обычно не связан с обработкой вычислений дат, он предоставляет несколько методов для управления датами и выполнения операций с ними. В этой статье мы рассмотрим различные методы и приведем примеры кода для выполнения вычислений дат в COBOL.
Метод 1: использование встроенных функций
COBOL предоставляет набор встроенных функций, которые можно использовать для управления датами. Одной из таких функций является FUNCTION CURRENT-DATE, которая возвращает текущую системную дату. Вот пример:
WORKING-STORAGE SECTION.
01 CURRENT-DATE PIC X(10).
PROCEDURE DIVISION.
MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-DATA.
Метод 2: использование арифметических глаголов
COBOL предоставляет арифметические глаголы, которые можно использовать для выполнения вычислений с датами. Глагол ADD можно использовать для прибавления или вычитания дней, месяцев или лет из заданной даты. Вот пример:
WORKING-STORAGE SECTION.
01 DATE-1 PIC 9(8) VALUE 20210915.
01 DATE-2 PIC 9(8).
01 DAYS-TO-ADD PIC S9(4) VALUE 10.
PROCEDURE DIVISION.
MOVE DATE-1 TO DATE-2.
ADD DAYS-TO-ADD TO DATE-2.
Метод 3: использование абзацев DATE-WRITER и DATE-VALIDATION
COBOL позволяет создавать собственные абзацы для расчета дат. Параграф DATE-WRITER можно использовать для преобразования даты из внутреннего формата во внешний формат, а параграф DATE-VALIDATION можно использовать для проверки введенной даты. Вот пример:
WORKING-STORAGE SECTION.
01 INTERNAL-DATE PIC 9(8) VALUE 20220301.
01 EXTERNAL-DATE PIC X(10).
01 VALID-DATE PIC X(3).
PROCEDURE DIVISION.
PERFORM DATE-WRITER.
PERFORM DATE-VALIDATION.
DATE-WRITER.
MOVE INTERNAL-DATE TO EXTERNAL-DATE.
DATE-VALIDATION.
IF EXTERNAL-DATE IS NUMERIC
MOVE 'YES' TO VALID-DATE
ELSE
MOVE 'NO' TO VALID-DATE
END-IF.
Метод 4: использование предложения RENAMES
Предложение RENAMES в COBOL позволяет переименовывать элементы данных, что может быть полезно для расчета дат. Переименовав поле даты, вы сможете выполнять над ним арифметические действия. Вот пример:
WORKING-STORAGE SECTION.
01 RENAMES-DATE.
05 YEAR PIC 9(4).
05 MONTH PIC 9(2).
05 DAY PIC 9(2).
01 NEW-DATE RENAMES RENAMES-DATE.
PROCEDURE DIVISION.
MOVE 20220228 TO RENAMES-DATE.
ADD 1 TO MONTH OF NEW-DATE.
В этой статье мы рассмотрели несколько методов выполнения вычислений дат в COBOL. COBOL предоставляет различные методы управления датами: от использования встроенных функций и арифметических глаголов до создания пользовательских абзацев и использования предложения RENAMES. Включив эти методы в свои программы на языке COBOL, вы сможете эффективно выполнять вычисления дат в своих устаревших системах.