/
281.txt
154 lines (97 loc) · 4.43 KB
/
281.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[32]
[[PDP-10]] の [[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>