Подпрограмма для вычисления даты

Приведенный ниже пример показывает возможность скрыть от глаз большой код в отдельный файл.

Перед нами стоит задача вычислить текущую дату используя системную переменную $_time_t.

Для этих целей была написана подпрограмма, которая для удобства вынесена в отдельный файл date.cms

date.cms

SUB(UPDATE_DATE)

  $_date_y = 1970
  $_date_m = 1
  $_date_d = ROUND(($_time_t / (3600 * 24)) - $voi, 0) + 1//floor
  $voi = 0.499999999999
  $break = 0

  WHILE($break = 0)
     $arg1 = $_date_y-1968
     $arg2 = 4
     IF($arg1-(ROUND(($arg1/$arg2)-$voi,0)*$arg2) = 0)//mod($_date_y-1968, 4) = 0
        $nd = 366
     ELSE
        $nd = 365
     END_IF

     if($_date_d > $nd)
        INC($_date_d, 0-$nd)
        INC($_date_y, 1)
     ELSE
        $break = 1
     END_IF
  END_CYC

  $break = 0

  WHILE($break = 0)
     $arg1 = $_date_y-1968
     $arg2 = 4
     IF( ($arg1-(ROUND(($arg1/$arg2)-$voi,0)*$arg2) = 0) & ($_date_m = 2) )//(mod($_date_y-1968, 4) = 0) & ($_date_m = 2)
        $nd = 29
     ELSE
        $nd = STRCUT("31,28,31,30,31,30,31,31,30,31,30,31", (($_date_m-1) * 3) + 1, 2)
     END_IF

     IF($_date_d > $nd)
        INC($_date_d, 0-$nd)
        INC($_date_m, 1)
     ELSE
        $break = 1
     END_IF
  END_CYC

END_SUB

GOSUB(UPDATE_DATE)

После вызова эта подпрограмма создает следующие переменные, которые могут использоваться в вашей программе

  • $_date_d – День
  • $_date_m – Месяц
  • $_date_y – Год

Пример использования

// Подключаем файл с подпрограммой UPDATE_DATE. Это работает так, как если просто скопировать все содержимое файла date.cms на место этой строки
#include "date.cms"print($_date_d,".",$_date_m,".",$_date_y) // Выводим первый вариант даты

GOSUB(UPDATE_DATE) // Вызов подпрограммы (ее тело находится в подключенном файле date.cms) и обновление переменных
print($_date_d,".",$_date_m,".",$_date_y) // Выводим актуальную дату

HALT

Понравилась статья? Поделиться с друзьями:
CLICKERMANN

Комментарии:

Добавить комментарий

* Нажимая на кнопку "Отправить комментарий" Вы соглашаетесь с политикой конфиденциальности.