* OS/8 の日時

[41] 
[[PDP-8]] ([TIME[西暦1965年][1965]]) の [[OS]] である [[OS/8]] における[[日時]]についてです。

[43] 
[[OS/8]] では[[日付]]は3ビットで表されました。 [SRC[>>44]]
8年分記述でき、基本的に
[ [TIME[西暦1970年][1970]], [TIME[西暦1977年][1977]] ]
と解釈されました。
[SRC[>>42]]

[45] 
[[OS/8]] の後継の [[COS-310]] の[[ファイルシステム]]は、
この点が改善されていたとされます。
[SRC[>>44, >>39]]
具体的には不明です。

[REFS[

[FIG(quote)[
[FIGCAPTION[
[42] [CITE[Directory of linctape-images/os8l/ps-8-system-25.linc]], [TIME[2023-01-01T07:24:47.000Z]] <http://www.pdp8online.com/pdp8cgi/os8_html?act=dir;fn=linctape-images/os8l/ps-8-system-25.linc;sort=ext>
]FIGCAPTION]

>OS/8 can only store dates for an 8 year period so dates will be shown as 1970-1977 unless the media had a printed directory or other information find the correct date range.
]FIG]

[FIG(quote)[
[FIGCAPTION[
[44] 
[CITE@en[Doug Jones's DEC PDP-8 FAQs]], [[Douglas W. Jones]], [TIME[2023-01-01T07:27:01.000Z]] <http://homepage.cs.uiowa.edu/~jones/pdp8/faqs/>
]FIGCAPTION]

>COS-310, DEC's commercial operating system for the PDP-8, supported the DIBOL language. COS-310 was a derivative of MS/8 and OS/8, but with a new text file format. The file system is almost the same as OS/8, but dates are recorded differently, and a few applications can even run under both COS and OS/8.[SNIP[]]
]FIG]

]REFS]

* TOPS-10の日時

[32] 
[[PDP-10]] ([TIME[西暦1966年][1966]]) の [[OS]] である [[TOPS-10]] における[[日時]]についてです。

** 日付形式

[34] 
場面により、数種類の[[日付形式]]が使われていました。


[3] [DFN[date]] [SRC[>>1 #page=10]]

[EG[
[4] 
[CODE[22-11-79]] = [TIME[1979-11-22]]

]EG]


[17] ANSI format: [TIME[19721019]] = [TIME[1972-10-19]] [SRC[>>1 #page=115]]

;; [31] [[ANSI X3.30-1971]] あたりか?

[19] >>1 #page=330

[EG[
[20] 
[CODE[07-18-80]]
(おそらく[TIME[1980-07-18]])
]EG]


[33] [[日時]]中の[[日付]]: >>10

** 時刻形式

[35] 
[[日の時刻]]の[[形式][時刻形式]]は何通りかありました。


[6] [DFN[hh:mm:ss]] [SRC[>>1 #page=10]]

[21] 自動生成[[ファイル名]] : hhmmss [SRC[>>1 #page=108]]

[22] Time of day in milliseconds [SRC[>>1 #page=87]]

** 日時形式

[5] [DFN[date-time]] [SRC[>>1 #page=10]] : 絶対、相対の2通り


*** 絶対日時形式

[9] [SRC[>>1 #page=21]]

[10] [[日付]]は[[年月日]]の順序と[[月名]]の違いで3通り

[11] [[月名]]は1から3文字、[[曜日名]]は3か4文字


[12] 
[[時]]以外は省略可能

[13] 
[[年]]は1桁、[[2桁][2桁年号]]、4桁。

[14] 0, 80, 1980 が[TIME[西暦1980年][1980]]を表すという例が示されています。
どういう補完なのかは不明。

[36] 
3桁がないということは1桁は意図的に認めたのでしょうが、[[米国]]では (当時は?)
そういう用法があったのでしょうか。

[37] 
[[FIPS 4]] も1桁, 2桁, 4桁を認めてます。当時の[[米国]]ではそれが一般的だったのでしょうか。
それとも両者は関係があるのでしょうか。


*** 相対日時形式

[7] 現在日時からの[[差][時間長]]で表現、
[CODE[-]] で[[過去]]、 [CODE[+]] で[[未来]] [SRC[>>1 #page=21]]

[EG[
[8] 
[CODE[-3D:4:27:21]] = 3日4時間27分21秒前

]EG]

*** その他の日時形式

[38] この他に、絶対時刻と違った形式の日時が使われることがありました。


[16] [CODE[DAYTIME]] の形式 >>1 #page=84

[18] >>1 #page=241

** DATE75

[24] 
[[TOPS-10]] は元来[TIME[1964-01-01]]から[TIME[1975-01-04]]の[[日付]]しか処理できませんでした。
[SRC[>>23]]

[26] 
[[TOPS-10]] は[TIME[西暦1967年][1967]]に始まり、
[TIME[西暦1970年][1970]]にこの名前となったとされます
[SRC[>>25]] ので、
初期開発当時としてはこの範囲は妥当だったのでしょう。

;; [27] 
どのような[[データ構造]]だったのでしょう? 
2[SUP[12]] ビットの[[日]]数だと11年と4日より数十日多いような?

[28] 
[DFN[DATE-75]] と呼ばれる修正で3ビット追加され、[TIME[2052-02-01]]まで扱えるようになりました。
[SRC[>>23]]

[29] 
ところが元々未使用だった3ビットは他の目的に使われることがあり、
様々な[[不具合]]を生じていました。
[SRC[>>23]]

[30] 
[TIME[1986-01-09]]には追加された3ビットのうちの2ビット目が使われるようになり、
今度は2ビット目を使っていたプログラムで[[不具合]]が生じました。
[SRC[>>23]]


[15] 
挙動切り替えのための
[DFN[[CODE[DATE75]]]], 
[DFN[[CODE[NODATE75]]]] なるオプションがありました。
[SRC[>>1 #page=51, 52]]

[40] 
[CITE[Wikipedia]]
は[[日時桁溢れ問題]]の最古の事例として掲載しています。
[SRC[>>39]]

[REFS[
- [23] 
[CITE@en-GB[[[The RISKS Digest]] Volume 4 Issue 45]], [TIME[2021-07-01T14:00:47.000Z]], [TIME[2022-12-04T09:46:19.551Z]] <http://catless.ncl.ac.uk/Risks/4.45.html#subj1>
-[25] 
[CITE@en[[[TOPS-10]] - Wikipedia]], [TIME[2022-12-03T12:30:49.000Z]], [TIME[2022-12-04T09:49:09.120Z]] <https://en.wikipedia.org/wiki/TOPS-10>
- [39] 
[CITE@en[Time formatting and storage bugs - [[Wikipedia]]]], [TIME[2022-12-04T05:12:54.000Z]], [TIME[2022-12-04T12:33:13.517Z]] <https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs>


]REFS]

** メモ

- [1] [CITE[tops10-aa-0916d-tb.pdf]], [TIME[2011-01-30T01:07:57.000Z]], [TIME[2022-12-04T09:18:43.794Z]] <http://bitsavers.trailing-edge.com/scandocs.trailing-edge.com/tops10-aa-0916d-tb.pdf>
- [2] [CITE[2_Operating_System_Commands_Manual.pdf]], [TIME[2022-09-16T04:55:53.000Z]], [TIME[2022-12-04T09:18:54.943Z]] <https://www.livingcomputers.org/UI/UserDocs/Tops-10-v7-04/2_Operating_System_Commands_Manual.pdf>


* メモ