Именно с чем у вас проблемы? Кобол или алгоритм? Я предполагаю, что это Кобол.
Я не собираюсь давать вам прямой ответ, потому что вы
очевидно, опираясь на язык, и есть ценность в разработке конкретных деталей
для себя.
Вот несколько подсказок:
Определите поле даты в WORKING-STORAGE
, чтобы вы могли выбрать день, месяц и год как отдельные элементы. Что-то вроде:
01 TEST-DATE.
05 TEST-DAY PIC 99.
05 PIC X.
05 TEST-MONTH PIC 99.
05 PIC X.
05 TEST-YEAR PIC 9999.
Обратите внимание на безымянные PIC X
поля. Они содержат разделители день / месяц / год. Им не нужно давать имена данных, потому что
вам не нужно ссылаться на них. Иногда этот тип элемента данных дается
имя FILLER
, но имя не является обязательным.
Читайте инструкцию EVALUATE
. Вот ссылка на
руководство IBM Enterprise COBOL. Это описание EVALUATE
должно быть одинаковым во всех версиях COBOL.
MOVE
дата интереса TO TEST-DATE
. Теперь вы можете ссылаться на год, месяц и день как отдельные элементы: TEST-DAY
, TEST-MONTH
и TEST-YEAR
.
Используйте EVALUATE
для проверки месяца (TEST-MONTH
). Если месяц - 30-дневный месяц, то от MOVE
30 до TEST-DAY
. Сделать то же самое для
31 день месяца. Февраль - особый случай из-за високосных лет. Как только вы определили, что месяц февраль,
тест TEST-YEAR
до определяет, является ли это високосным годом
и MOVE
28 или 29 ДО TEST-DAY
в зависимости от результата теста.
Теперь TEST-DATE
будет содержать дату, которую вы ищете. MOVE
это туда, где это необходимо.