Nur nichts verschlafen!

31.03.1999
Das Millennium neigt sich seinem Ende zu, und noch immer sind viele EDV-Abteilungen nicht auf die bevorstehende Katastrophe eingerichtet. Dabei ist schon fast alles über den Y2k-Bug gesagt. Zeit also, einmal auf den Punkt zu kommen.

Eine Besonderheit des Jahr-2000-Problems ist seine allgegenwärtige Präsenz. Nicht nur Hard- und Firmware sind davon betroffen, auch die darauf aufsetzenden Betriebssysteme verarbeiten das konfliktträchtige Datum und bereiten es für Anwendungen vor, deren Reaktion auf unvorhergesehene Eingaben niemand so genau kennt. Manche Betriebsysteme können zwar die fehlenden Hunderterstellen der vom "Basic Input/Output System" (Bios) übergebenen Jahreszahl ergänzen und nutzen dazu Algorithmen, die ein Zeitfenster (siehe gleichnamiger Kasten) für das Betriebsystem öffnen. Allerdings wird das Problem durch dieses Vorgehen allenfalls vertagt.

Viele ältere Programme reservieren für Datumsvariablen nur ein oder zwei Bytes, so daß ihnen selbst ein korrektes Eingabedatum nichts nutzt. Und Compiler, deren Bibliotheken nur eine unzureichende Anzahl von Stellen für die Jahreszahlen vorsehen, erzeugen Software, deren gesamte Datumsarithmetik unbrauchbar ist.

Verschiedene Betriebsysteme, Programmiersprachen, Datenbanken und darauf basierende Applikationen errechnen die Jahreszahl aus der seit einem Referenzdatum vergangenen, mit einem Zähler ermittelten Zeit. So bezieht sich Unix auf den 1.1.1970, DB2 auf den 1.1.0001, LE 370 auf den 15.10.1582 und Cobol 370 auf den 1.1.1601.

Zweistellige Jahreszahlen

Die Datumszentrale eines PCs ist der RTC-Schaltkreis auf dem Systemboard. Er arbeitet mit zwei Stellen für das Jahr und das Jahrzehnt. Zwei weitere für das Jahrhundert und das Jahrtausend sind zwar vorhanden, werden jedoch meistens vom Bios nicht berücksichtigt. Es liest beim Booten des Rechners lediglich die Werte für das Jahr und das Jahrzehnt aus und ergänzt die führenden Stellen für das Jahrhundert und das Jahrtausend. Ein nicht Jahr-2000-taugliches Bios setzt hier immer den Wert 19 fest, ein Jahr-2000-taugliches auch den Wert 20, 21 et cetera.

Verschiedene Betriebsysteme ermitteln das Datum und die Zeit auf unterschiedliche Art und Weise. Auf DOS gründende Betriebsysteme übernehmen es vom Bios. Ist dieses nicht Jahr-2000-tauglich, meldet es kurz nach dem Jahreswechsel den 4.1.1980. Hier genügt eine Korrektur mit dem DATE-Befehl, die bei den Versionen PC DOS 2000 und DR-DOS 7.02 sogar automatisch erfolgt. Auch Windows 98 korrigiert den Jahrtausendwechsel unabhängig von der Jahr-2000-Tauglichkeit des Bios. Allerdings funktioniert dieses automatische Umschalten nur im Jahr 2000. Wer seinen Rechner ein Jahr später einschaltet, sieht sich zwanzig Jahre in die Vergangenheit zurückversetzt (4.1.1980).

NT 4.0 liest ebenfalls den RTC aus und korrigiert die Daten automatisch. Beim expliziten Setzen von Datum und Zeit werden die Daten in den RTC/CMOS zurückgeschrieben und das Jahrhundert-Byte gesetzt. OS/2 stellt die Daten automatisch richtig. Der Anwender muß jedoch vorher ein Jahr-2000-Fix-Pack installieren. Weder die Version 3.11 noch 3.12 von Netware arbeiten ab dem Datum 01.01.2000. Novell verkauft ein Update auf die Version 3.20, die diese Fehler ausmerzen soll, empfiehlt aber den Umstieg auf die neueste Netware-Version.

Free BSD, Linux und Unix lesen die RTC-Informationen direkt aus. Je nach Kompilierung wird auch das Jahrhundert-Byte im CMOS ausgewertet. Schafft der PC den Sprung, so schafft es auch das Betriebsystem. Standardmäßig wird das Jahrhundert-Byte jedoch nicht ausgewertet, sondern über einen Basisalgorithmus aus dem Jahrzehnt auf das Jahrhundert geschlossen. Damit ergibt sich ein Ereignishorizont von 1970 bis 2069. Andere Unix-Versionen haben als Zeitbasis einen vorzeichenbehafteten 32-Bit-Zähler, der im Jahre 2038 überläuft!

Kurzsichtige Anwendungen

Aufgrund der Zählverfahren der Betriebssysteme gibt es neben dem 31.12.1999 noch eine Reihe anderer Stichtage, an denen Systeme platzen können. Zwar überstreicht DOS mit 7 Bit einen Zeitraum von 1890 bis 2107. Aufgrund der heute verwendeten Bios-Funktionen dürfte es allerdings im Jahre 2099 Probleme hageln. Und schon vorher dürfte es Ärger mit dem Dateisystem geben. Windows NT verwendet einen internen 64-Bit-Zähler, der die seit dem Jahr 1600 verstrichenen zehnmillionstel Sekunden registriert. Allerdings unterstützen die Funktionen zur Zeiteinstellung nur den Bereich von 1980 bis 2099. Auch die Ansi-C-Bibliotheken und die "Microsoft Foundation Classes" (CTIME) ermitteln die Zeit aus einem Zähler, der wie bei Unix über die seit dem 1.1.1970 vergangenen Sekunden Buch führt. Der Zähler-überlauf findet am 19.01.2038 statt.

Die Beurteilung der Jahr-2000-Tauglichkeit von Anwendungen ist etwas schwieriger und richtet sich nach folgenden Kriterien:

- Das ermittelte Datum muß immer dem realen Datum entsprechen.

- Das Programm erkennt das Jahr 2000 als Schaltjahr.

- Alle datumsrelevanten Felder umfassen zwei Ziffern für das Jahrhundert.

- Es treten keine festen Jahrhundertzahlen in Masken auf.

- Die Subtraktion eines vergangenen Datums von einem gegenwärtigen oder zukünftigen ist niemals negativ.

Die Frage, ob ein Anwendungsprogramm Jahr-2000-tauglich ist, kann nur der Hersteller beantworten. Viele Anwendungen wie zum Beispiel MS-Access füllen intern Datenfelder vom Typ Datum automatisch mit vier Stellen auf, wobei sie sich auf das Betriebssystem stützen. Kritisch wird es, wenn Jahreszahlen in Textfeldern landen. Viele Applikationen ermitteln das Jahrhundert mit einem Basisalgorithmus. Dabei liegen die Zeitfenster unterschiedlich, so daß ein Datenaustausch zwischen verschiedenen Anwendungen erschwert wird. Im Bereich der Windows-Anwendungen Word, Excel und Access kommen drei voneinander abweichende OLE-Mechanismen zum Tragen. Und wenn die Installation zusätzlicher Anwendungen weitere DLL-Bibliotheksversionen ins Spiel bringt, ist das Chaos perfekt.

Normierte Kalender

Ab Windows 98 kann der Anwender den Schwellwert des Basisalgorithmus selbst ändern, und zwar über den Pfad Systemeinstellungen / Ländereinstellungen / Datum. Den Datumsfehlern in Excel kann mit den herunterladbaren Tools "Date Fix Wizard", "Watch Wizard" und "Migration Wizard" von Microsoft begegnet werden. Ältere DOS-Anwendungen, die auch heute noch unter Windows 9x/NT laufen, machen häufig Schwierigkeiten. Handelt es sich um Individualsoftware, zu der noch der Quellcode verfügbar ist, genügt oft ein Neuübersetzen mit einem jüngeren Compiler.

Das Problem der Zeiterfassung betrifft vor allem veraltete Software, aber auch PC-Systeme, die vor dem Juni 1996 produziert wurden. Die Gründe sind:

- eine verkürzte Darstellung der Jahreszahl,

- das Verwenden fester Werte für das Jahrhundert,

- Algorithmen zur Datumsberechnung und

- Jahreszahlen in unterschiedlichen Darstellungen.

Unter den verschiedensten Möglichkeiten der Datumsrepräsentation sind die folgenden allgemeinen gebräuchlich:

- gregorianisch (Jahr, Monat, Tag),

- julianisch (Jahr, Tag des Jahres),

- seriell (Jahr ab Referenzdatum, Tag ab Referenzdatum),

- gemischte Zahlen- und Textformate (12. Juli 85).

Aus diesen Formaten resultiert eine Reihe von notwendigen Umrechungen und eine erhöhte Fehleranfälligkeit. In besonders harten Fällen benutzt der Rechner eine undokumentierte "Quick-and-Dirty"-Routine zum Berechnen des Datums.

Einen Ausweg aus dem Dilemma schafft eine normierte Darstellung der Zeit und eine einheitliche, darauf aufbauende Datumsarithmetik. Dafür wurde die Norm ISO 8601 geschaffen. Sie legt folgende Datenformen fest:

- Kalenderdaten:JJJJ, MM, TT (gregorianische Darstellung);

- serielle Daten: JJJ, xxx-ter Tag des Jahres (julianische Darstellung);

- serielle Daten:JJJ,yy-te Woche des Jahres , xxx-ter Tag der Woche;

- Tageszeit: hh:mm:ss in der 24-Stunden-Darstellung;

- Differenzzeit: zwischen lokaler und UTC-Zeit (UTC = Universal Time Coordinate);

Ein einheitliches Datumsformat hat wesentliche Vorteile:

- Die Datumsobjekte sind unabhängig von Hardware, Betriebsystem und Programmiersprache.

- Die Jahreszahl wird von vier Ziffern repräsentiert.

- Datumsobjekte sind mit der 24-Stunden-Darstellung konsistent, weil höherwertige Stellen vorn stehen.

- Datums- und Zeitobjekte sind einfach zu berechnen, zu lesen, zu sortieren und zu vergleichen.

- Datums- und Zeitobjekte haben eine konstante Länge.

Rationelles Vorgehen

Weil das Testen und das Umrüsten auf das Jahr 2000 viel Zeit erfordert und dennoch in vielen Fällen während der Produktion erfolgen muß, kommen Anwender um eine sorgfältige Planung nicht herum. Für die einzelnen Phasen der Umstellung sind eine Reihe von Tools auf dem Markt verfügbar. Diese sind jedoch keine Allheilmittel und unterstützen den Administrator lediglich hier und da. Die wesentlichen Schritte bei der Umstellung sind:

- Hard- und Softwareinventur,

- Test der Software mit Jahr-2000-relevanten Daten und Ermitteln der datumssensitiven Stellen,

- Umstellung, Fehlerbehebung und Ersatz sowie erneuter Test.

Jahr-2000-Bugs im Netzwerk verbergen sich hauptsächlich auf den eingesetzten Rechnern, auf Servern, Arbeitsstationen und Firewalls. Das Mittel der Wahl ist nicht, jeden einzelnen Client zu testen und umzurüsten. Der Administrator stellt nur wenige Server um, die künftig alle anderen Rechner synchronisieren und die Netzwerkzeit festlegen. Entsprechende Kommandos stellen die gängigen Netzwerkbetriebsysteme und die dazugehörigen Clients bereit.

Wer die jüngste Ausgabe eines Betriebsystems beziehungsweise die neuesten Patches besorgt, hat bereits eine gute Grundlage für die Jahr-2000-Tauglichkeit seiner Rechner geschaffen. Neue Hardware ist nur selten notwendig. Erst wenn die Infrastruktur, nämlich Rechner, Server, Betriebsysteme, Netzwerkkomponenten und LAN-Protokolle, auf dem aktuellen Stand ist, macht es Sinn, die Anwendungen anzugehen. Dabei sollten sich Benutzer endlich von veralteten Programme verabschieden. In vielen Fällen gibt es guten Ersatz aus dem Regal. Falls Administratoren selbst programmieren, müssen sie unbedingt darauf achten, daß ihre Software die Norm ISO 8601 einhält. Auch in Pflichtenheften, Forderungskatalogen und Verträgen darf ein entsprechender Verweis nicht fehlen.

Generell sollten sich DV-Anwender vor dem Umrüsten folgende Fragen stellen:

- Gibt es genügend Personalressourcen oder müssen zusätzlich externe Dienstleister in Anspruch genommen werden?

- Wurde ein Projektteam ernannt, und ist darin mindestens ein Mitglied der Geschäftsleitung involviert?

- Wurde der Zeit- und Kostenaufwand bereits geschätzt?

- Wie hoch ist das Budget für das Jahr-2000-Projekt?

- Existiert bereits ein genauer Plan?

- Wurden die Mitarbeiter für den Umstellungsfall geschult?

- Wurden Embedded-Systeme auf die Jahr-2000-Tauglichkeit hin untersucht?

- Gibt es Mainframe-Programme in der IT-Umgebung und sind diese Jahr-2000-tauglich?

- Welche Programme wurden mit Assembler, Fortran, RPG, PL/1, Cobol oder 4GL erstellt?

- Gibt es Individualsoftware und im Haus entwickelte Programme?

- Sind Shareware-Tools im Einsatz?

- Garantieren die Hersteller der verwendeten Standardsoftware Jahr-2000-Fähigkeit?

- Wieviele ältere PCs (Kauf/Produktion vor 1996) gibt es noch?

- Wurden bestehende Verträge mit Partnern, Lieferanten, Kunden auf Haftungsrisiken hin überprüft?

(kpl)

Literatur

[1 ] Gruhn, V., Chavan, S.: Das Jahr-2000-Problem. Addison-Wesley, Bonn 1997.

[2] Schilder, H.-J.: Der Jahrtausendwechsel aus der Netzwerkperspektive. gateway 11/1998, S. 78 ff.