Michael Schröpl: 9.9.99 ---» Probleme verursacht?

Beitrag lesen

Das klingt schon logisch. Man kann aber auch sagen, es ist voellig sinnlos, die Jahrhundertangabe wegzulassen, um Speicherplatz zu sparen (ich rede jetzt mal nicht von Cobol, wo das offenbar durch die Sprache vorgegeben ist, sondern nur von C). Kein vernuenftiger Programmierer wuerde auf die Idee kommen, ein Datum im Format YYMMDD oder so aehnlich *im Klartext*, also als ASCII-Zeichen zu speichern. Selbstverstaendlich wuerde man so etwas binaer speichern. Dann kann man naemlich 5 Bit fuer die Datumszahl reservieren und 4 Bit fuer die Monatszahl. Wenn man dann doch noch etwas verschwenderisch ist und alles in 32-Bit packt, bleiben 23 Bit fuer die Jahreszahl uebrig. Und mit 23 Bit lassen sich Zahlen bis ueber 8 Millionen darstellen. Und dann hat man trotzdem noch 2 Byte gespart (gegenueber den 6 Byte von YYMMDD).

Oh, nicht wirklich: Kennst Du noch das IBM-Host-Format "Packed Decimal"?.
Damit kann man rechnen (es gibt separate Arithmetik-Maschinenbefehle dafür), aber auch die Konvertierung in einen anzeigbaren Ziffernstring gibt es als Maschinenbefehl. Keine komplizierte Konvertierungs-Routine!
(Das ist übrigens der Grund, weshalb Cobol solche Zahlen verwendete - weil es sie hardwaremäßig *gab* ...)
Und in diesem Format wird jede Ziffer in einem Halbbyte (16 Kombinationen) gespeichert - aber bei "99" ist Ende der Fahnenstange. Mit zwei Ziffern weniger hat man dabei immerhin doch ein *ganzes* Byte pro Datumsangabe eingespart ... (Boah, ey.)

Das Schlimme ist, daß gerade *solche* Programme heute Probleme machen (die laufen noch auf den Hosts irgendwelcher Firmen, aber kaum jemand versteht die Materie mehr).
PC-Software ist ja so 'neu', daß es bei ihrer Erstellung schon 'genug' Hauptspeicher etc. gab - und der turnaround der Versionen ist auch viel schneller (DOS -> Windows, 16Bit -> 32Bit usw., während auf den Hosts ggf. noch 20-30 Jahre alte Programme laufen).