![]() |
Вопрос по чтению расширенных архивов
Добрый день.
Если при чтении расширенных архивов воспользоваться формулой, которая приведена в документе Т10.06.59РД в пункте 5.3.2, считываются данные не за ту дату, для которой рассчитывался маркер. Опытным путём выяснили, что данные считываются правильно если к полученному по формуле значению Т прибавить ещё 3. Скажите в чём может быть причина? Вот код, которая применяется для расчёта маркера. Обратите внимание, что к значению t прибавляется ещё тройка. В этом случае данные считываются корректно. int m = (dtRead.Month < 3) ? (dtRead.Month + 13) : (dtRead.Month + 1); int y = (dtRead.Month < 3) ? (dtRead.Year - 1) : dtRead.Year; int t = (int)(365.25F * y) + (int)(30.6F * m) + dtRead.Day - 694066 + 3; int marker = t % 42; |
Вопрос по чтению расширенных архивов
И программы ТЭКОН, и наши программы ЭВМ (например, Телемост, см. на сайте) в части чтения/записи расширенных архивов были написаны очень много лет назад, с тех пор ничего не менялось. Вопросов не возникало. Вы просто не учитываете принципы работы часовых архивов ТЭКОН, описанные в РЭ. Данные в расширенных архивах появляются только спустя 4 дня, до этого хранятся в простых часовых архивах, имеющих глубину 4 суток. По окончании каждых суток каждая страница простых часовых архивов "переталкивается" на бОльшую глубину, самая свежая очищается, а с последней страницы данные переносятся в расширенный архив. Таким образом, по маркеру текущей даты всегда будут храниться данные, сформированные 3 дня назад, вот откуда Ваша "эмпирическая тройка".
|
Текущее время: 16:19. Часовой пояс GMT +5. |
Powered by vBulletin® Version 3.5.7
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot