ЧАСТЬ 1. Суть проблемы


Чем 2000-й год отличается от других?

1) это год "с двумя нулями" на конце; если компьютерные программы или программируемые приборы используют для представления года лишь две цифры, то в 2000-м году эти цифры будут "00". Многие программы не смогут отличить его от года 1900 или 2100.

2) это високосный год. Високосным является каждый год, число которого делится на 4, кроме годов, числа которых оканчиваются на 2 нуля, но не делятся на 400. Следовательно, год 1900 был не високосным, а год 2000 будет таковым. Компьютеры должны их различать и предусмотреть день 29 февраля 2000 г.

Проблема хранения и обработки даты может проявиться на нескольких уровнях.

1. Технический уровень.
Внутренние календари старых компьютеров (включая большинство ПК с процессорами i386) не способны хранить даты, начиная с 1/01/2000. Чтобы заставить их эту дату запомнить, необходимо заменить микросхемы со встроенным программным обеспеечением. В более поздних машинах предусмотрен байт для хранения столетия. Однако, во многих компьютерах (включая большинство ПК с процессорами i486) он не устанавливается автоматически. 1 января их необходимо установить с помощью команд операционной системы. Проблемы возникнут также с календарями старых ЕС ЭВМ и ряда специальных ЭВМ. В полночь с 31/12/1999 на 1/01/2000 календари всех таких компьютеров переключатся на различные неправильные даты, например 4 января 1980 г. Программы, использующие календарь компьютера, начнут работать неправильно или прекратят работу.

2. Уровень операционных систем.
Старые операционные системы (не только для персональных ЭВМ) будут неправильно интерпретировать дату, даже, если календарь компьютера выдает ее правильно. Прикладные программы будут получать от ОС неверные значения текущей даты, возникнут проблемы сортировки файлов и управления процесами и т.п.

3. Уровень сетевых средств.
Сетевые ОС, устройства и программы, ведущие учет трафика, проверку прав доступа и др. начнут работать неправильно или прекратят работу.

4. Уровень баз данных и прикладных программ.
Главные проблемы связаны с тем, что для хранения года во многих системах используются лишь две цифры, например: 97, 98 и т.п. 2000-й год будет представлен значением 00. В ряде старых баз данных значение даты 00 недопустимо. В других случаях это значение может интерпретироваться, как "нет даты" или приводить к ошибкам в вычислении интервалов даты. Например, стаж человека, поступившего на работу в 1970 г., в 2000-м году будет подсчитан, как -70, а не 30.

5. Уровень библиотек стандартных программ.
Во многих стандартных функциях, поставляемых с системами программирования, для представления даты используются две цифры, а первые цифры всегда равны "19".

6. Уровень бланков документов и экранных форм.
Во многих бланках, компьютерных печатных и экранных формах "зашиты" даты 19хх. Изменяться могут лишь последние две цифры.

Список проблем можно продолжить.

Следует рассмотреть также встроенные системы на спецпроцессорах, используемые для контроля и управления технологическими процессами, бортовые вычислители, навигационное и диспетчерское оборудование, медицинские системы, системы защиты (например, защиты доступа к спецхранилищам) и т.п.

Все системы должны быть тщательно и всесторонне проверены, и, при необходимости, исправлены или заменены.

Ошибки в программном обеспечении начнут проявляться до 2000 года, как только появятся документы (договоры, счета и т.пп.), содержащие дату 2000. Уже зафиксированы сбои в финансовых и коммерческих системах. С каждым месяцем ошибок будет все больше.