またまた、登場!ここでは、みなさんから寄せられた情報を、まとめてみました。みなさんのお名前は、伏せさせていただきます。メールを下さった方、この場をお借りして、御礼申し上げます!
文中で、斜体の文章は、私(K)からのコメントです。
Y2Kの解決の参考(W様からの情報)
2000年問題の解決法 (ソートをかける場合)
2004年(04)
1988年(88)
1997年(97)
このような各西暦に正しくソートをかける場合、クロスチェックとソリューションのデフォルトが45です。100−45=55 左記の式がポイントです。
45の部分は1以上100以下の整数設定ならばいくらでも可能。
04+45= 049
88+45=133
97+45=142
2桁対応なので上記の赤字のところにソートをかけます。
33+55=1998
42+55=1997
49+55=2004
上記のように正しくソートができます。
おもしろいアイデアですね。上記で問題なのは、2004年が、2桁では、04となり、04->88->97と並んでしまう点ですね。本来、2000以上なので、他の1900年代よりも、大きくすれば、良いわけで、それを、2桁以内で、重みを付けたわけですね。ありがとうございました。
CANONプリンター出力のトレイ(ドロワー)指示をRPGで行う。(YT様からの情報)
キヤノンプリンターでの制御方法の一部をサンプルとして添付しました。
ソースは、こちらに有ります。
これは社内でAS/400のデータ・ベースレコード設計書印刷の一部コピーです。実際には
実寸タテ・上余白・HEXモードの改行無視回数・左マージンの指示を行っています。トレイの指示は手差しとカセット1しかないので手差しへの出力にしてあります。
制御コードの詳細については、PCI−5577/3コントロールカード・ユーザーズガイド(かなり古いです)に記載されています。確か¥3,000ぐらいと思います。メーカーにより制御コードが異なるみたいですが、マニュアルはあるそうです。試してみて下さい。
貴重な情報を、ありがとうございます。役立ちそうです。おっと、皆さんに注意ですが、あくまでこれは、「CANON」の5577カードを使った場合です。他機種では、多分出来ません。(標準化されれば良いんですけど)。
こちらは、以前にご登場いただいた、SK様。カレンダーに関する情報のフォローアップです。
暦には、ユリウス暦とグレゴリオ暦がある。(他にもいろいろある)。 ユリウス暦は、4年に1回うるう年があるタイプで、紀元前46年からある。 グレゴリオ暦はユリウス暦を修正したもので、100で割り切れて400で割り切れない年をうるう年にしない。1582年10月15日に制定し、 その前日は10月4日となっている。(14日ではない。)
尚、1983年以降の、有る年のある日の曜日は、400年前の年の同じ日の曜日と一致する、そうです。つまり、1983年の1年分のカレンダーは、1583年の1年分ののカレンダーとピタリと一致するそうです。(1582年の翌年)1583+400=1983だから、1983年なのですね。
1582年10月 |
3日 |
4日 |
5日 |
6日 |
7日 |
8日 |
9日 |
10日 |
11日 |
12日 |
13日 |
14日 |
15日 |
16日 |
水 |
木 |
暦から削除した10日間 |
金 |
土 |
イギリスでグレゴリオ暦を採用したのは1752年。そのため イギリスの1700年はうるう年になっている。
イギリスの場合は、この様になります。1700年を閏年にしていたので、1582年のときよりもさらに、1日減らさなくてはならないわけですね。
1752年9月 |
1日 |
2日 |
3日 |
4日 |
5日 |
6日 |
7日 |
8日 |
9日 |
10日 |
11日 |
12日 |
13日 |
14日 |
15日 |
火 |
水 |
暦から削除した11日間 |
木 |
金 |
日本では明治6年にユリウス暦が導入され、その後グレゴリオ暦を採用した。明治5年12月2日の次の日は明治6年1月1日。 、、、というような情報がどこかにあったと思いましたが、御紹介の本によると、明治6年?(1873年)にグレゴリオ暦採用 ということで、ちょっと怪しいです。
この点を調べました。山崎 昭、久保良雄 著「暦の科学」(ブルーバックス)にでていました。
「第3章こよみとは何か-9 明治の改暦」より抜粋
「明治5年(1872年)、11月9日(グレゴリオ暦で12月9日)、政府は突如として改暦の詔書を発表した。詔書には、太陽暦が旧暦にくらべて、いかにすぐれているかが述べられていた。そして、同時に出された太政官布告では、来る12月3日をもって、明治6年1月1日にする事が打ち出されたのである。
...略...
ところで、明治5年11月9日の太政官布告に述べられていたものは、4年に一回うるう年を置くというだけの、ユリウス暦式の太陽暦であった。しかし、意図したところはグレゴリオ暦の採用であって、当時、欧米の多くの国で行われていたグレゴリオ暦に日も合わせたのである。おそらく、あまりに急いだ為に、うるう年の置き方に関する十分な記述が間になわなかったのであろう。
しかしこのままでは、まもなく来る1900年を、閏年にしなくてはならなくなり、外国と1日ずれてしまう。そこでまた、政府は明治31年(1898年)5月11日に勅令を出し、西暦年数が4で割り切れる年をうるう年とする。ただし、100で割り切れ、かつ400で割り切れない年は、平年とする、というグレゴリオ暦の置閏法を定めた。」
と言うわけで、1873年に「グレゴリー暦」はどうやら、正しいようですが(他国のグレゴリー暦に日を合わせたらしいので)、うるう年の決め方が、ユリウス暦の記述と同じになっていたため、どっちつかずの、おかしな事になっているようです。これは、もう歴史学者の解釈の問題のようです。(この件は、忘れましょう...)
で、これからわかる結論は、と言うと、
Zeller の公式は、「グレゴリオ暦の」1582年10月15日以降を正しく計算できる。逆に言うと、1752年以前のイギリスはグレゴリオ暦を採用していないので、1752年以前のイギリスの暦は計算の対象外。
Solaris 等のUNIX
はアメリカ生まれで、アメリカはもともとイギリスの植民地だったことから、UNIX
のコマンドであるcal は1752 年からグレゴリオ暦を採用している。
ということで、上記に述べたように、1700年はイギリスではユリウス暦で、うるう年(グレゴリー暦では、ユリウス暦の例外の一つなので、平年のはず。)なので、UNIX
のcal でもうるう年である。Solaris で確認しました。
$ cal 2 1700
1700年 2月
日 月 火 水 木 金 土
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 |
というわけで、Zeller の公式とSolarisについては、どちらが間違いというわけでもなく、どの暦について言っているかによる違いという結論をつけました。私にとって、カレンダーが世界に唯一でないという事実は意外でした。
参考URL:
グレゴリオ暦とユリウス暦
dayOfWeek
calender
ありがとうございました。コンピュータと、暦って、不思議と関連しているんですね。ところで、「暦を作った人々」の「13章 時間の謎を解く」では、400年に3度のうるう年の例外を制定するに至るまでの、試行錯誤が詳細にでていて興味深く、また、「14章 永遠に失われた10日間」によれば、ローマ教皇の改暦は、諸外国ですぐさま採用されていなかったらいいことが分かります。なんといっても、アンチカソリックのプロテスタントにとって、グレゴリー教皇は、「グレゴリウス・カレンダリフェクス(暦作製人グレゴリウス)」とまで呼んで、「ローマのキリスト反対者」と考えたりしたようです。つまり、間違った祝日に礼拝させるのが目的だ、と中傷したようです。また、東方正教会なども、ユリウス暦に固執していたようです。一部の国の修道院では未だに、13日遅れ(うるう年の例外が今にいたるまで3日あったので、10+3で13日のずれ)のユリウス暦を守っているそうです!よく考えてみれば、日本だって、つい100年前にユリウス暦(グレゴリー暦?)をやっと、導入したのですから、他の国をとやかく言うことはできませんね。また、ヨーロッパにあって、1752年まで170年くらいユリウス暦を守っていたイギリスのお話もでていました。
「100で割り切れ、かつ400で割り切れない年は、平年とする」、という例外の部分がわかりにくい表現なので、これを見て下さい。100年単位以外の4の倍数は、うるう年です。問題は、100年単位の時ですね。本来、100
= 4×25
なので、原則からすれば、うるう年なのですが、例外を設けたのです。このグレゴリー暦の、考えは、天文学に詳しいアロイウス・リリウスという医学者によって、もたらされました。(実は、複雑な経緯があります。興味のある方は、「暦を作った人々」を読んで下さい。)
1600 |
1700 |
1800 |
1900 |
2000 |
2100 |
2200 |
2300 |
2400 |
2500 |
2600 |
2700 |
2800 |
2900 |
3000 |
3100 |
3200 |
閏年 |
平年 |
平年 |
平年 |
閏年 |
平年 |
平年 |
平年 |
閏年 |
平年 |
平年 |
平年 |
閏年 |
平年 |
平年 |
平年 |
閏年 |
1999/5/4 |