WHEN.EXE Ver2.081 取扱説明書

すぐ使いたい方へ/ 日付指定/ 表示レイアウト指定/ オプション/ 出力行の加工/ 環境変数/ 変更来歴/ トップページ


 本プログラムは、各種の暦の間の相互変換を行います。


              ====(1)= when をすぐ使いたい方ヘ  ========

 1) もっとも簡単な使い方
  単純に MS-DOSのコマンド入力待ち状態(例えば A>のようなプロンプトの後
ろでカーソルが点滅している状態)で when(ret) と打ち込んでください((ret)
は改行キーまたは(機種によっては)実行キーやEnterキーを打鍵することを表し
ます)。このようにすると当日の各種暦法を表示します。システムのオープニ
ング・メッセージ向きです。

 2) 標準的な使い方
  when オプション /変換先暦法 変換元暦法による日付(ret)
とし、暦の相互変換に使用するのが、最も標準的な使い方です。例えば、MS-
DOSのコマンド入力待ち状態で、when /G 慶長 5 9 15(ret) と打ち込むと、関
ケ原の合戦の日のグレゴリオ暦日が表示されます。この場合オプションはなく、
/G の‘G’がグレゴリオ暦法への変換の指示、‘慶長 5 9 15’が変換元であ
る日本暦日による日付の指定です。日本暦日による日付の指定にあたっては、
年号・年・月・日をスペース(半角でも全角でもよい)で区切って指定しま
す。また年・月・日は半角の数字を用います。
  変換元暦法の指定については2章、変換先暦法については3章、その他のオ
プションについては4章で詳しく説明しています。

 3) 高度な使い方
  添付の demo.bat は when の使い方のデモプログラムです。これを実行しつつ、
本資料をリファレンスマニュアルとして参照してみてください(次々と表示が流
れ実行内容を確認できない場合は、コントロールキーを押しながら'S'キーを押
すと実行を一時停止します)。また、1〜15.bat をエディタで開いて眺めてみる
のも良いでしょう。

| デモンストレーション用バッチファイルは以下の様に指定すれば起動します。
| demo whenlt(ret)  (軽量版の場合)
| demo when(ret)    (標準版の場合)
| demo whenhv(ret)  (高機能版の場合)
| 環境変数領域に余裕がなく、正常に動作しない場合は、config.sys に
| shell=c:¥command.com /P c:¥ /E:1024
| のような行を追加し、/E オプションの値を適当に設定してみてください。
| (MS-DOS V3.1 までは環境変数用の領域のパラグラフ数(16バイト単位)、
|  MS-DOS V3.3 以降は環境変数用の領域のバイト数)

 4) ヒストリ機能のある環境を推奨
 when はほとんどすべての指定をコマンドライン(*)から入力するようにでき
ていますので、高度な使い方をする場合はヒストリ機能のある環境が必要です。
Vz Editor や MS-DOS V5.0 以上 に添付される doskey などのツールを併用す
ることをおすすめします。特に Vz Editor を常駐させて使うと表示内容をバッ
クスクロールして見ることができますので、demo の動作の確認にも有効です。
(*)A>のようなプロンプトの後ろでカーソルが点滅している状態で(ret)により
   入力される1行をコマンドラインといいます。

 5) フリーの年号辞書を推奨
 when は年号の読みを記憶していないため、年号検索を行う場合、日本語フロ
ントエンドプロセッサを用いて、年号を漢字で指定する必要があります。年号
の読みに付いては、NIFTY-Serve の FREKISHI や PC-VAN の SIG REKISI など
に、有志の方々がフロントエンドプロセッサ用データをフリーで登録されてい
るようですので、そういったデータを使用されることをおすすめします。
  また、本プログラム内蔵の年号は when !(ret) と打ち込むとすべて表示され
ます。これは標準出力ですから、jgawk などのテキスト処理ツールに取り込ん
で容易に辞書データに変換できるでしょう。

 6) 文献引用について
 本プログラムは、作者が週末の暇がある時に僅かの時間を割いて作成してい
るものです。引用した研究のオリジナリティは引用している各文献にあります。
また、データ情報のチェックレベルもその時間の中で可能な限りのものです。
従って、本プログラムを使用して研究を行い、論文を発表される際には、でき
るだけ本ドキュメントに示す元資料を参照され、参考文献としては元資料の方
を「必ず」提示されるようにお願いいたします。
 暦法・暦注撰日法や天体位置計算式は、著作権法にいう規約・解法に該当す
るため、同法の保護対象となりません。しかし、古文献を調査照合し、或いは
天体観測を行うに費やされた労力は想像するに余りあります。謝辞を付けよう
とされる場合は、本プログラムの示す元資料の方に対しての謝辞を付けてくだ
るようお願いいたします。          ^^^^^^

 7) 精度について
 プログラムの形態で配布されているため、書物と違い出力の精度を注で示す
ことが困難です。ドキュメントには必要十分なだけの精度に関する情報を書き
込んでいるつもりですが、情報自体の理解に暦に関する知識が必要な場合もあ
ります。末尾に添付した参考文献を利用し、十分動作をご理解の上使用される
とよいでしょう。また、拡張子が rsc のファイルを使用する際、ファイル中に、
コメントとして精度に関する情報を書き込んである場合がありますので、内容
を確認されるとよいでしょう(特に、com.rscを使用される場合は、必ずコメン
トを読んでください)。            ^^^^^^^
  また、インドやインドネシアでは、さまざまなヴァリエーションの暦が流通
している(或いは「していた」)ようです。本プログラムで収録したものは、
その一部(もっともメジャーなものであると期待してはいますが)にしかすぎ
ないでしょう。より詳細な調査には、現地でのフィールドワークが必要なこと
は当然で、素人に手がだせる領域ではありません。ユーザによるカスタマイズ
に期待します。

 8) 暦注と迷信
 V2.05 までは、機能が多ければ多いほど良いという発想で、無自覚に機能を
追加してきましたが、最近ようやく、いまだに古い暦注や占いの類を本気で信
じている人々がいるらしいということに気づいてきました。機能の追加は「ア
ルゴリズムが面白い」という理由でなされたものが多かったのですが、そうい
う人々にとっては「計算が面倒な暦注ほどありがたみがある」という風に見え
るようです(そして、面倒でない暦注は迷信と言う−安楽庵策伝の『醒睡笑』
[1]巻の一に出てくる棹で星を落とそうとする小僧とその師匠を思い浮かべてし
まいます)。本プログラムが現代の暦の暦注表示や占いのために使用されるこ
とは本意ではありません。
 V2.06〜V2.07では、古い暦を再現できるようにと暦注に関する情報を大量に
盛り込んだため、さらに危険が増しました。そこで V2.06以降太陰太陽暦でデ
フォルトでは六曜を表示しないようにし、さらにV2.07以降 chu.rsc でもデフォ
ルトでは現代の暦の暦注を表示しないようにしました。

 9) V2.0以降の注意
  V2.XX は標準版(when.exe)と軽量版(whenlt.exe)(以上はMS-DOS汎用)及び
浮動小数点使用機種依存版(whenhv.exe-PC9801シリーズ専用版及びIBM-PC互換
機日本語環境版)からなります。
  以下の説明はPC9801シリーズ専用版(以下「98版」と略記)に基づいて行い
ます(98版を他機種で使用する場合については、環境変数87の項目をご覧くだ
さい)。IBM-PC互換機日本語環境版は機能的には98版と同等で、IBM-PC互換機
上の日本語環境で動作します。その他の版における制限は以下の通りです(た
だし、ヘルプ機能は標準版だけにある機能です)。

標準版      : 汎用化のため、浮動小数点計算を使用している部分が削られている。
(when.exe)  1) 中国太陰太陽暦(「旧暦」の類−節月及び関連する暦注を含む)
            2) インド太陰太陽暦
            3) ユダヤ暦
            4) フランス共和暦の春秋分が近似計算
            5) 太陽・月及び惑星、恒星の位置計算

軽量版      : 標準版に対してさらに以下の暦及び機能が削られている。
(whenlt.exe)  軽量であるので起動が速い。通常の用途にはこれで十分。
            6) 中国暦日・四分暦
            7) タイ暦
            8) 在位表による検索
            9) 年号文字列のカスタマイズ

  V2.07 ではプログラムサイズ削減のため、環境変数 PATH 上のディレクトリ
でなく、環境変数 WHENPATH で指定するディレクトリで、参照ファイルを検索
するように変更しましたので注意してください。
  V2.072 ではインド暦における日の出時刻の指定方法が変更されましたので注
意してください。


                      ====(2)= 日付指定 ========

0)表記法について

  以下の記述において
     A..    A を n 回繰り返し(n は 0 以上の整数)
    [A]     A は省略可能なオプション
    {A}     A は省略できない必須要素
    A|B     A か B か何れかを選択
 とします


1)現在の日付を表示する場合
when(ret)

2)ユリウス通日で日付を指定する場合
when  {D|d} [ユリウス通日](ret)
  d のみのときは、ユリウス通日の元期を、D のみのときは準ユリウス通日
の元期を表示します。whenhv.exe において、ユリウス通日の小数部を指定す
ると、時刻まで考慮した表示を行います。V2.05以前とV2.06以後で書式が異
なりますので注意してください。
  項番 3)以降も同様ですが、区切りのスペースは半角でも全角でもかまわな
い様です(MS-DOSの仕様に依存)。ただし、スペースがないと指定を分離し
て認識できませんので注意してください。  ^^^^^^^^^^^^^^^^

3)汎用太陽暦の日付を指定する場合
when  [年] 月の名称 [日[st|nd|rd|th]](ret)
 月の名称で対応する汎用太陽暦を検索します(ユリウス暦より先にグレゴ
リオ暦に一致しますので、本フォーマットではユリウス暦を指定できません)。
年を省略(指定する月が閏月の場合は年を省略できません)すると今年、日を
省略すると1日になります。V2.05以前とV2.06以後で書式が異なりますので注
意してください。

4)年月日で日付を指定する場合
when [年号文字列|T|Q[#]|G|J|H|F|I|M|E|X|Y|Z|O|N[#]|B|
                  t|q[#]|g|j|h|f|i|m|e|x|y|z|o|n[#]|b] 年 [月 [日]](ret)

 月日は省略されるとそれぞれ1と見なされます。

        暦法記号
         年号文字列      年号文字列を含む最初の年号を指定
         年号文字列[+..]  年号文字列を含むn+1番目の年号を指定
         年号文字列+n     年号文字列を含むn+1番目の年号を指定
          t,T              インド太陰太陽暦
          q[#],Q[#]        四分暦(#=0〜9で暦法諸元を指定。無指定は5番)
         g,G              グレゴリオ暦
         j,J              ユリウス暦
          h,H              汎用太陽暦(内容はカスタマイズによる)
         f,F              フランス共和暦
         i,I              イスラム暦
          e,E              中国太陰太陽暦(計算法自動判定)
          x,X                    〃    (平朔平気法)
          y,Y                    〃    (定朔平気法)
          z,Z                    〃    (定朔定気法)
           o               「節月」(平均黄経による)
           O                   〃  (視黄経による)
         n[#]             日本中国暦日
                            # 省略 : 日本暦日    (変数 v=593 と同等)
                            # = 1  : 秦漢南朝暦日(変数 v=-221と同等)
                            # = 2  : 北朝唐宋暦日(変数 v=386 と同等)
                            # = 3  : 元明清暦日  (変数 v=1206と同等)
         b,B              AD1582年10月4日まではユリウス暦
                           それ以降はグレゴリオ暦
                           変数 v が指定されているときは、日本中国暦日
                           後で説明する日付周期が年次周期として作用します
                           (1.bat #60 参照)
         省略            AD1582年10月4日まではユリウス暦
                           それ以降はグレゴリオ暦
                           変数 v が指定されているときは、日本中国暦日

 本プログラム内蔵のデータベースにおいては、年号文字列は
    日本暦日   ^標題語.年号,天皇諡号_{_|@}{_|@}$
                                    a) b)   c)

    外国暦日   ^国名.年号,皇帝名[(亥|子|丑|)]@{_|@}{_|@}$
                                             a) b)   c)
のように登録されています。コマンドラインで指定した年号文字列がデータ
ベース中の年号文字列に「含まれて」いれば一致とみなします。0個以上の
任意の長さの文字列に一致するワイルドカード '*' 及び任意の半角1文字
に一致するワイルドカード '?' が使用できます。a)b)c)部の指定は以下の
意味を持っています。

     |         _           |          @            |        ?
 ----+---------------------+-----------------------+-----------------
  a) |      「日本」       |       「外国」        |     don't care
  b) |      通常の年号     |       断続年号        |     don't care
  c) |  皇帝の最初の年号   |   2つめ以後の年号    |     don't care

ただし断続年号とは、年号が中断後復活したり、同一の年号中に皇帝が代わった
りした場合の最初以外の部分のことです。

 暦法記号が年号文字列の場合、年と日の指定に干支を使用できます。また
年号文字列、汎用太陽暦、インド太陰太陽暦の場合、月の指定に月名を使用
できます。

5)暦法の開始日・終了日を知りたい場合
when 年号|t|q[#]|g|j|J|h|H|i|f|F(ret)

        暦法記号
         年号   指定年号への改元の日付
           t      グレゴリオ暦   79年 3月20日
           q[#]   四分暦の使用開始日(#=0〜9)
          g      グレゴリオ暦 1582年10月15日
          j     ユリウス暦    -44年 1月 1日(仮日付)
          J     ユリウス暦   1582年10月 4日
           h      汎用太陽暦の使用開始日(内容はカスタマイズによる)
           H      汎用太陽暦の使用停止日(内容はカスタマイズによる)
          f     グレゴリオ暦 1792年 9月22日
          F    グレゴリオ暦 1805年12月31日
          i    ユリウス暦  622年 7月16日

6)「季節と週」(仮称)で日付を指定する場合
when 年 季節番号 週番号 曜日番号(ret)
 各要素の省略はできません。汎用太陽暦中に閏年と平年の日数差が正で1より
大きい暦法があるとき有効になります。when(lt).exe ではデフォルトで暦法番
号2(暦法指定記号H)に年初を日曜日に固定するタイプの暦法を定義しています。
日曜を曜日番号1としていますので注意してください。

7)マヤ長期暦で日付を指定する場合
when  [M|m] [バクトゥン [カトゥン [トゥン [ウィナル [キン]]]]](ret)
  m のみのときは、0 0 0 0 0を、M のみのときは13 0 0 0 0 の日付を表示しま
  す。M|m を省略した場合、その他の要素の省略はできません。バクトゥンの指
  定は0〜12の範囲外でもかまいません。また、バクトゥンより上位の桁を指定
  する事もできます。

8)復活祭の日付を指定する場合
when  {R|r} 日付(ret)
when  日付 {R|r}(ret)
  グレゴリオ暦(R)またはユリウス暦(r)での、指定した日付を含む年の復活祭の
日付を表示します[9,16など]。日付の指定方法は1)から11)の何れの方法でも構
いません。日付が省略された場合は今年の復活祭の日付を求めます。{R|r} と日
付の指定順序の意味は、9)から11)までと同様ですので、次項を参照してくださ
い。
 ユリウス暦での復活祭の計算方法には、112年周期法(+easter$h〜実際には56
年周期)、84年周期法(+easter$a〜検算対象がないので単なる参考(文献[14]
のアルゴリズムには矛盾あり)、採用している朔望月の誤差が大きいため同じパ
ラメータが長期間使われたとも思われず、多分実際のヴァリエーションも多いは
ず)などいろいろあるようですが、ここでは95年周期法(実際には532年周期)
をデフォルトにしています[9,81]。

8')時刻指定
when  {R|r}[時刻[,0]] 日付 [時刻](ret)
when  日付 [時刻] {R|r}[時刻[,0]](ret)
  R または r の後ろに数字をつけると、時刻を1時間単位(インド暦日でカラ
ナを表示するため変数 Z を 6 にしている場合は6時間単位)で指定するという
全く違った意味になります。この機能は通常は必要としませんが、日付指定 9)
〜11)またはインド太陰太陽暦のように時刻まで決定されてしまう指定方法と、
時刻指定を混在させたい場合に使用します。さらに指定の後ろに“,0”が付く
とスールヤシッダーンタのアルゴリズムで近傍の日の出日の入り時刻を求めま
す。この使用法については 主に 14.bat の #14 や 13.bat をご覧ください。
(この指定が R で始まるのは、指定記号に空きがなくなってしまったからで
深い意味はありません。“,0”をつけるのも同様です)

9)太陽黄経で日付を指定する場合
whenhv  s|S[太陽黄経] 日付 [時刻](ret)
whenhv  日付 [時刻] s|S[太陽黄経](ret)
  春分や秋分の日付及び時刻を知りたい時に使用します。s の場合は平均黄経、
S の場合は視黄経を使用します。太陽黄経が 0 〜 360の場合、指定の日付以降
最初に太陽黄経が指定の値になる日時が求まります。(デフォルトは春分(=0)
です)。異なる周期の日時を求めたい場合は 360 を加減してください。日付の
指定方法は1)から11)の何れの方法でも構いません。
  8)から12) を再帰的に指定可能である事に注意してください。この場合、日付
の左側は複数日付連続計算の前に評価され、右側は複数連続計算の時点で毎回評
価されます(従って変数を日付によって指定する時には、後者の指定は無効です)。
14.bat の#7,#8に違いを示します。左側同士、右側同士は日付に近いものが先に
評価されます。特に日月食計算の際には指定の順序が重要です。15.bat のコメ
ントをお読みください。
  コマンドラインを解釈する際に、二十四気名を太陽黄経に読み替えます(例え
ば「立春」→「S315」)。これによって 「whenhv 1992 立春」のような指定が可
能です。ただし、「立春」→「s315」と読み替えさせたい等、読み替え方をカス
タマイズする場合はコマンドラインの解釈開始前にカスタマイズを済ませておく
必要がありますので、環境変数中でカスタマイズ・ファイルを指定しなければな
りません(senmyo.rsc参照)。カスタマイズ結果を実行ファイルに書き込む際も
環境変数中でカスタマイズ・ファイルを指定する必要があります。変数を日付に
よって指定する際にはこの読み替えは行われません。
  文献[63]の略算式を使用している場合、太陽黄経の精度は角度で 0.1'です。こ
れは時間にして約146秒の誤差になります。二十四気の時刻が午前0時からこの誤
差の範囲内にある場合は日付が不正である可能性があります。

10)月の位相で日付を指定する場合
whenhv  l|L[月の位相] 日付 [時刻](ret)
whenhv  日付 [時刻] l|L[月の位相](ret)
  新月や満月の日付及び時刻を知りたい時に使用します。l の場合は平均黄経、
L の場合は地心での視黄経を使用します。月の位相が 0 〜 360 の場合、指定の
日付以降最初に月の位相が指定の値になる日時が求まります。(デフォルトは新
月(=0)です)。異なる周期の日時を求めたい場合は 360 を加減してください。
8)から11)の再帰指定は 9)と同様に可能です。コマンドラインを解釈する際に、
「新月」・「上弦」・「満月」・「下弦」を月の位相に読み替えます。これも太
陽黄経と同様の注意が必要です。
  文献[63]の略算式を使用している場合、月の黄経の精度は角度で 0.1'です。
従って月の黄経と太陽の黄経の差である月の位相の精度は 0.2'となります。これ
は時間にして約24秒の誤差になります。朔の時刻が午前0時からこの誤差の範囲
内にある場合は日付が不正である可能性があります。
  唐代の定朔平気暦法を使用している場合(+senmyo等を指定)、本指定による朔
の時刻は近似計算によるものです。太陰太陽暦ルーチンにより計算する正しい朔
の時刻とは異なります。

11)天体位置で日時を指定する場合
whenhv [S:対象指定1] 求根指定[,求根指定]..[,{対象指定2[T]|jP}] 日付 [時刻](ret)
whenhv [S:対象指定1] 日付 [時刻] 求根指定[,求根指定]..[,{対象指定2[T]|jP}](ret)
  ただし、求根指定 = {P|A|B|C}{天体位置|+|-{Z|E|D|T}}[(計算項目)]
                P:測心日時による求根    天体位置:検索する計算項目の値を指定
                A:測心経度による求根           +:計算項目の極値の検索を指示
                B:測心緯度による求根          -Z:補正なしで星の出没を検索
                C:測心高度による求根          -E:大気差を考慮し星の出没を検索
                                              -D:大気差を考慮し太陽の出没を検索
                                              -T:夜明けまたは日暮れを検索
          対象指定1 = {0p|0dikjmp}  (Sならフル指定、sならpのみ)
          対象指定2 = {0kj|0dikjmp} (小文字のところに番号がはいる)
                d:表示座標 i:観測惑星          T:対象指定は一時的変更
                k:基準惑星 j:対象惑星         jP:惑星の位相を検索
                m:計算項目 p:表示項目          (対象指定は一時的変更)

  コマンドラインで指定した日時(S,L と異なり直後であるとは限らない)また
は環境変数 POS で指定した場所の近くで、指定した天体が、指定した位置(状
態)になる時刻または場所をニュートン法で求めます(位置計算の計算式は、文
献[63,64]を参考にしました)。8)から11)の再帰指定は9)と同様に可能です。

・「S:対象指定1」により、変数 S の初期値をコマンドラインから変更できます。
変数 S の内容については4章カスタマイズの項及び pdef.rsc のコメントを参
照してください。

・「日付 [時刻]」で指定した日時または環境変数 POS で指定した場所がニュート
ン法の初期値として使用されます。天体位置は変化が激しいため、できるだけ良
い近似日時または場所を指定するようにしてください。8)から11)を再帰指定しつ
つ、近似値を絞りこんで行くと良いでしょう。そうでない場合またはそもそも解
が存在しない場合には、解が収束しない場合があります(このとき不正演算でプ
ログラムが異常終了することがありますが、特に対策していません)。

・「求根指定」により、求根対象が日時、経度、緯度、高度のいずれであるかを
指定します。さらに、検索ターゲットの指定が単に「-Z,E,D,T」の場合、末尾の文
字に応じたデフォルトの天体高度を使用して天体の地平座標での高度を検索します。
単に「+」の場合、計算値の時間微分が 0 になる瞬間を求めます。
 z,Z: 幾何学的に星が地平線にある瞬間(大気差及び視半径を考慮せず)
 e,E: 地平大気差-35'8"(高度10kmで大気の外に出て倍になるように線形補間)
 d,D: 日の出、日の入り時の太陽高度(地平大気差-35'8" - 太陽の視半径16'1.18")
 t,T: 薄明の開始終了時(明け六つ、暮れ六つ)の太陽高度(-7゜21'40")
計算項目の指定が省略されると、右端の「求根指定」の場合は変数 S の計算項目
m が、そうでない場合は表示項目 p が使用されます。

・「対象指定2」により、変数 S の内容を必要に応じて変更できます。3文字以
下の場合は、対象星と基準星のみ変更、3文字を越える場合は全体の変更となり
ます(指定の先頭が0から始まる時は16進、そうでない時は10進表示であると解釈
します)。「対象指定2」に「P」が続く場合、変数 S の内容に関わらず惑星の位相
が指定値になる時刻を求めます(P が大文字なら S=030x0909に、小文字なら S=
030x0808に相当)。他の指定のための近似時刻を生成するのが主な用途です。「対
象指定2」に「P」「T」が続く場合、変数 S の変更はその場限りで、表示等に影響を
与えません。

  これだけの説明ではわかりにくいので、14〜15.bat に収録した実行例も参照願
います。ポイントは、ニュートン法を有効に適用するため、いかによりよい初期値
を生成するかであると言えます。

(付記1)外部プログラムの使用について
 太陰太陽暦の項にも書きましたが、本プログラムの計算式は、長沢工氏『天体
の位置計算』[63]の略算式を、『天体位置表』[64]を参考にして改造したもので
す。古代の天体位置にはかなりの誤差を含みます(特に天王星、海王星、冥王星
の位置は無意味といって良いほどの誤差)。より精度の高い計算プログラムをお
持ちの方は、それを whenhv.exe から子プロセスとして起動することによって、
whenhv.exe の一部であるかのように動作させることが可能です。詳細はカスタマ
イズの項で説明します。

(付記2)本機能追加のいきさつ
 本機能は、もともとはインド暦法との関連で日の出時刻を計算する必要を感じ
たため追加した機能です。しかし実際に追加してみると、ターゲットを時刻に限
定せず、経度・緯度・高度まで手を広げてもほとんどコードサイズが増えないこ
とに気づき、現状のような仕様となりました。日月食に限定すれば、より教科書
的な計算量の少ないアルゴリズムも可能でしょうが、カスタマイズ機能との関連
でプログラムのメモリモデルがスモールモデルに制限され、コードサイズを増や
さないことが絶対条件となっており、現状では対応はできそうにありません。

12)データベースに登録されている年号を検索したい場合
when [年号文字列]!(ret)
  指定の年号文字列を含む全ての年号を表示し、一致した件数を報告します。本
指定を行った場合、暦の表示は行いません(表示させたい場合は子プロセスとし
て自分自身を起動してください)。年号文字列が省略された場合は、データベー
スに登録されている全ての年号を表示します。項番4)における年号文字列の一致
検索の順序は本操作によって表示される順序です。これは必ずしも年代順ではあ
りません。

 なお、1)-11)の何れにおいても、日付部の最後に時刻を指定できます。高機能
版ではこの情報は天体の位置計算に使用されます。


                    ====(3)= 表示レイアウト指定 ========

 1) [/|-]レイアウト
  '/'または'-'に続けて表示したい行を順に指定します(78文字以内)。既指定
のレイアウトはキャンセルされます。

 2) ¥レイアウト
  '¥' に続けて表示したい行を順に指定すると、既指定のレイアウトの後ろに続
けて表示。

 3) 文字¥レイアウト
  '文字¥' に続けて表示したい行を順に指定すると、既指定のレイアウト中の対
応する行指定の前に挿入して表示(指定文字と挿入レイアウトの先頭文字が大文
字小文字の違いを除いて一致する時は、先頭文字は置き換えになります)。また、
レイアウトが空の場合は、指定文字を既指定のレイアウト指定中から削除します
(V2.07以降動作が変わりましたので注意してください)。

 4) !レイアウト
  複数連続日付計算の制御用の'!'文字(後述)の挿入を自動的に行います。これ
により、既指定のレイアウトの内'!'に続けて指定したレイアウトの部分が制御上
有効となります。

 5) (レイアウト)
 ()で囲まれたレイアウトは1行に複数の暦法を詰め込むための特別フォーマッ
ト(dfmt - when.rsc 参照 - の7番目等)で表示されます。

 6) [レイアウト]
 []で囲まれたレイアウトは他とわざとフォーマットを変えたい場合に使用しま
す。dfmt の6番目の書式が適用されます。

 7) ヘッダ・フッタ
  レイアウトのヘッダ、フッタ(デフォルトはともに '=')をカスタマイズによっ
て変更できます(詳細は page.rsc をご覧ください)。一行表示の場合、変数 R 
が設定されていると、変数 R で指定する行数表示する度にヘッダ、フッタを表示
します。変数 R が設定されていない場合は、ヘッダ、フッタを表示しません。

 8) 暦法指定記号

/=dfghijwkvqetslprmbu               指定文字が小文字の場合の
 +++++++nca+x++++++++ ==そのまま表示==    表示範囲
  ++++++(@)+y++++++++ ユリウス通日   *      常時(時刻0:00:00を表示しない)
   +++++++++z++++++++ フランス共和暦 *    fh<=JDh<=F 
    ++++++++o++++++++ グレゴリオ暦   *    gh<=JDh<=G 
     ++++++++++++++++ 汎用太陽暦     ?    hh<=JDh<=H 
      +++++++++++++++ イスラム暦     *    ih<=JDh<=I 
       ++++++++++++++ ユリウス暦     *    jh<=JDh<=J 
        +++++++++++++ 日本暦日       *    wh<=JDh<=W 
         ++++++++++++ 中国暦日       **   kh<=JDh<=K 
          +++++++++++ 在位表検索     **    検索表  
           ++++++++++ 四分暦(0-9)    **   設定ファイル 
            +++++++++ 中国太陰太陽暦 ***  eh<=JDh<=E 
             ++++++++ 印度太陰太陽暦 ***  th<=JDh<=T 
              +++++++ 太陽の位置     ***  設定ファイル
*   全版共通   ++++++ 月の位置       ***  設定ファイル
**  軽量版を除く+++++ 一般天体の位置 ***  設定ファイル
*** 高機能版のみ ++++ 指定2暦法の差 *      常時  
?   設定に依存    +++ マヤ暦         *    mh<=JDh<=M 
                   ++ バイオリズム   *    bh<=JDh<=B 
                    + date風表示     *      常時

 9) 指定例

        /db-wgjifm
        デフォルト

        /DB-WGJIFM
        下限指定変数が+無限大の場合を除いて、上下限指定変数を無視して各
        暦を表示。日の端数が無くても 0:00:00 を表示(時刻の表示は秒の端
        数を切り捨てたものです)。

        /+world.h
        アケリス世界暦でカスタマイズしH暦法を表示。

        /nca
        日本暦日、中国暦日、在位表を、改元の効力が元日に遡るものとして表示。
        日本暦日、中国暦日が改元前の日付の場合は '=' を付けて示す。
        (大正以降等の制度上遡りえない年号を除く)
        中国暦日は主な政権のみを表示。

        /C@
        中国暦日を、改元の効力が元日に遡るものとして表示。
        改元前の日付の場合は '=' を付けて示す。
        五胡十六国等の小政権をも表示。
        表示した年の月の大小パターンを表示(@Cの順序では正しい表示とならな
        い場合があります。パターンの詳細は com.rsc をご覧ください)。

        /wkv
        日本暦日、中国暦日、在位表を、改元の効力が改元日以前に遡らないもの
        として表示。中国暦日は主な政権のみを表示。

        /K
        中国暦日を、改元の効力が改元日以前に遡らないものとして表示。
        五胡十六国等の小政権をも表示。

        /exyz
        太陰太陽暦を計算法自動判定、平朔平気法、定朔平気法、定朔定気法
        の順に表示。

        /EXYZ
        太陰太陽暦を計算法自動判定、平朔平気法、定朔平気法、定朔定気法
        の順に表示。途中の計算経過をも表示。

        /oO
        平均黄経、視黄経による「節月」を順に表示。

        /(Q1C)
        四分暦 #1 及び中国暦日を1行で表示。

        /QC
        すべての四分暦と中国暦日を表示。

        /SLP
        太陽・月及び惑星の位置を表示します(黄経は視黄経)。
        その日のうちに、太陽黄経が二十四気の値になる時、その節気・中気名を
        表示。その日のうちに、月の位相が新月・上弦・満月・下弦になる時その
        位相名を表示(日付で判定)。
        時刻またはユリウス通日の小数部の指定がない場合、環境変数 TZ で指定
        される地方時の午前0時の位置を示します(日本時間午後9時の位置では
        ありません)。

        /slp
        太陽・月及び惑星の位置を表示します(黄経は平均黄経)。
          太陽黄経が1度の整数倍になる瞬間を含まない日が没日です。宣明暦で
        は1日の始めの太陽黄経の小数部が 0.0000 〜 0.0143 の場合に没日にな
        ります。このような場合「没」(もつ−と読む)と表示します。
          月の位相が12度の整数倍になる瞬間を2回含む日が滅日です。宣明暦で
        は1日の始めの月の位相を12度を単位として(変数 Z=12 を指定し)表し
        た小数部が 0.9841 〜 0.0000 の場合に滅日になります。このような場合
        「滅」(めつ−と読む)と表示します。
          惑星の位置は、変数 s で指定する表示項目しか出力しません。

        /u
        date コマンド風に日付(グレゴリオ暦またはユリウス暦、カスタマイズ
        によっては他の汎用太陽暦も可−roma.rscの"west:"タグ参照)を表示し
        ます。

        /(*u)
        u 指定の出力情報を加工し、七曜表にして表示します。一般に行頭の'*'
        は、出力データの表形式への加工指示となります。

        /?
        コピーライト(when.exe の場合は概略ヘルプ)を表示します。


                    ====(4)= オプション ========

  コマンド名(when等)と前記日付指定の間にオプションをおくと、若干(でも
なくなってしまいましたが)の動作変更ができます。日付指定の前に置かれたオ
プションは左から右へ評価されます。従って、2つのオプションが矛盾する場合、
右側の指定が有効になります。
  V2.071 より、日付指定の後ろにもオプションを書くことができるようになり
ました。日付周期指定および関連する変数(D,P,O)は連続計算のたびに評価さ
れます。これにより毎年8月の最終土曜日を求める等の計算が可能になりました
(1.bat#53など)。その他のオプションは日付指定の前のオプションと同様最初
の日付の計算の前に評価されます(ちょっと不自然ですが、プログラムの都合で
これだけは右から左に評価されます−すなわちより日付指定に近い方が有効にな
ります)。

1)変数の指定

    変数名{=|:}数値  ・・・・・ 要素の間に空白を空けてはいけません
   "変数名{=|:}日付" ・・・・・ 日付が数字で始まるときは、日付の先頭に空白が必要
                           (rscファイル中では、引用符が使えませんが、そのか
                           わり空白に全角文字を使用できます)
     のフォーマットで変数を指定

    各暦を表示する日付の下限を指定
        変数名  対応する暦          初期値
          w    日本暦日            −無限大*
          k    中国暦日            −無限大*
          t    印度太陰太陽暦       1749993
          f    フランス共和暦       2375840
          g    グレゴリオ暦         2299161
          h       汎用太陽暦          −無限大
          i    イスラム暦      1948440
          j    ユリウス暦     −無限大
          e    太陰太陽暦     −無限大
          m    マヤ暦                584283
          b(誕) バイオリズム        +無限大**
                               *  年号の無い場合は表示されない
                               ** これに誕生日を指定する

  各暦を表示する日付の上限を指定
        変数名  対応する暦          初期値
          W    日本暦日             2483686
          K    中国暦日             2433190
          T    印度太陰太陽暦      +無限大
          F    フランス共和暦       2380687
          G    グレゴリオ暦        +無限大
          H    汎用太陽暦          +無限大
          I    イスラム暦     +無限大
          J    ユリウス暦      2299160
          E    太陰太陽暦     +無限大
          M    マヤ暦               2456283
          B(死) バイオリズム        +無限大

    その他
        変数名     意味              初期値
         N,n*     日本暦日備考欄選択         4          *小文字の時には
         C,c*     中国暦日備考欄選択         1           第一バイトのみ
         U,u      全暦法備考欄マスク         4           変更
                 (0 にすると全ての備考をサプレスできます)
        U?,u?     指定暦法備考欄選択   暦法に依存
                (?はFGHIJNCQEOAの何れか*)
        UT,ut     インド太陰太陽暦のパターン 1 (1〜3のパターンあり)
        UM,um     マヤ長期暦の表示桁数       5
        US,us     太陽の表示情報選択      0xFF (小文字の時標準フォーマット)
        UL,ul     月の表示情報選択        0xFF (小文字の時標準フォーマット)
        UD,ud     月末日の表示方式(NCQE暦法) 0 (1なら翌月0日)
        D?,d?     年度・日付の境界指定**      0         **例えば -6 なら
                (?はFGHIJの何れか*,Cの場合はc.rsc参照) 前日の午後6時
                (         またRの場合はeaster.rsc参照)
          r       一行の字数                44
          R       一画面の行数         指定なし
         Y,y      Y年後の日付を表示          0
         L,l      L月後の日付を表示          0
         D,d    D日後の日付を表示          0
         P,p      日付周期の番号を指定       1 (Ver 1.x の T+1 に相当)
         O,o      日付周期の元期を指定 指定なし
          x       定朔平気法の下限     1947169 太陰太陽暦の自動判定用
          X       定朔定気法の下限     2321912     〃
         S,s*     天体表示計算方法  0x03000E0E
                   (詳細は4章カスタマイズの項及び pdef.rsc 参照)
        sa,sb     天体表示計算法の          (a-> n=1, b-> n=2)
        sc,sd     第nバイトのみ変更        (c-> n=3, d-> n=4)
          a       ニュートン法リトライ回数 100 (一般)
          A       ニュートン法リトライ回数 100 (PABC書式)
          z       力学時と世界時の差   指定なし
                    単位は1/1000秒、指定のないときは『こよみ便利帳』[65]、
                    『天体位置略算式の解説』[82]中の計算式によります。
          Z       角度の単位                1度
                    太陽・月・惑星の位相で日付を指定及び表示するときの、位相
                    の角度の単位を指定します。
          v       入力日本中国暦法        指定なし
                    日付指定を「年 月 日」で行うとき、使用する日本中国暦法をそ
                    の暦法の朔閏表の開始年で指定します。指定がないとユリウス
                    暦/グレゴリオ暦を使用します。
          V       表示日本中国暦法        指定なし
                    四分暦・太陰太陽暦と日本中国暦日の比較を行うとき、比較
                対象となる日本中国暦法をその暦法の朔閏表の開始年で指定
                    します(v,V で使用する開始年については china.doc第2章朔
                    閏表一覧参照)。

2)連続計算の指定

    *[[-]mm][Y|y|M|m|D|d|P|p|A|a|B|b|C|c][/nn][(tt[Y|y|M|m|D|d])[delta]] または
    *[[-]mm][Y|y|M|m|D|d|P|p|A|a|B|b|C|c][(tt[Y|y|M|m|D|d])[delta]][/nn]

  nn 分の mm 単位周期で tt 個の連続した日時または位置について計算を行います。
  単位指定 Y or y: 単位を年とします。暦法 FGHIJNWCK に有効です。
                   ただし、nn=1とみなされます。
  単位指定 M or m: 単位を月とします。暦法 FGHIJNWCKQEXYZ に有効です。
                   ただし、nn=1とみなされます。
                   さらに、暦法NWCKQEXYZの場合または暦法FGHIJに太陰太陽暦、
                   定気太陽暦が割り当てられている場合、mm=1とみなされます。
  単位指定 D or d: 単位を日とします(whenhv.exe では、'd'の場合offset[1]
                   (mc.rsc参照)を1日の長さとして使用します)。
  単位指定 P or p: 単位を3)項で説明する日付周期とします。
  単位指定 A or a: 経度の刻みを度単位で指定し、観測経度を変えて計算します。
  単位指定 B or b: 緯度の刻みを度単位で指定し、観測緯度を変えて計算します。
  単位指定 C or c: 高度の刻みをkm単位で指定し、観測高度を変えて計算します。
  選択される暦法は、有効な暦法の内最後に表示された暦法です。ただし、レイ
  アウト中に '!' があると、それ以後の暦法は選択の対象になりません。

  ttを省略すると、無制限に計算を続けます。また、1行表示の場合、ttに単位が
  ついているとその年月日の終わりまで計算を行います。
 deltaを指定すると、表示に delta秒ディレイが入ります(v2.05からの機能です)。

  なお、添付の c.rsc を用いると、計算した結果を七曜表などの形に整形して出
  力します。詳細は c.rsc のコメントをご覧ください。この機能は、MS-DOS が
  マルチタスクなら awk 等の他のツールと組み合わせてより柔軟に処理できると
  ころですが、そうも言ってはいられないので V2.07 で追加しました。

3)日付周期の指定

 ・変数 O も変数 P も設定されていない場合

    m[/n]
        指定の日付から n 日周期の m 日後である最初の日を表示します(n が省
        略されれば m 日後とみなします)。

    m1/n1 m2/n2
        指定の日付から n1 日周期の m1 日後でかつ n2 日周期の m2 日後である
        最初の日を表示します(3組以上指定してもかまいません)。

 ・変数 O で元期が設定され、かつ変数 P が設定されていない場合

    m[/n]
        元期から n 日周期の m 日後である、指定の日付の直後の日を表示します。

    m1/n1 m2/n2
        元期から n1 日周期の m1 日後でかつ n2 日周期の m2 日後である、指定の
        日付の直後の日を表示します(3組以上指定してもかまいません)。

 ・干支/
        「指定の干支に対応する番号/60」 という指定と等価です。

 ・曜日/
        「指定の曜日に対応する番号/7」 という指定と等価です。

 ・二十八宿/
        「指定の二十八宿に対応する番号/28」 という指定と等価です。

 ・260日暦番号/260日暦記号 または 260日暦記号/260日暦番号(マヤ暦)
        「指定の260日暦日に対応する番号/260」 という指定と等価です。
        260日暦番号が 0 の時は、260日暦番号は任意と見なされます。
        260日暦記号が ツォルキン の時は、260日暦記号は任意と見なされます。

 ・365日暦日付/365日暦月名 または 365日暦月名/365日暦日付(マヤ暦)
        「指定の365日暦日に対応する番号/365」 という指定と等価です。

 ・n/{P|S|I} または {P|S|I}/n
        「バイオリズムの{P|S|I}に対応する番号/{P|S|I}の周期」と等価です。

 ・変数 P が設定されている場合
        表示する日を n1,n2,..の最小公倍数単位で前後に調整します。

 ・n{st|ST|nd|ND|rd|RD|th|TH}/
        変数 P に n を代入します。

 ・last+..
        変数 P の値を n+1 減らします。
 
 ・next+..
        変数 O を 1、変数 P の値を n 増やします。
        (詳細は1.batの例を参照してください。)

4)出力文字のマッチング

    =[=][‾]マッチング文字列

   使用方法の詳細は5章を参照してください。

5) 子プロセスへのオプションの受け渡し
    {‾|'}{!|オプション}

  「‾オプション」と指定すると、オプションは親プロセスでは解釈されずに子プ
ロセスに渡されます。「'オプション」と指定すると、オプションは親プロセスで
も子プロセスでも解釈されます。子プロセスに渡す最初のオプションが 「‾!」の
ときは、子プロセスとして親プロセスと同じプログラムが起動されます。5章も
ご覧ください。

6)カスタマイズ

h<カスタマイズファイルの読み込み>

    +[+|!][-|カスタマイズファイル名[+カスタマイズファイル名]..][$[選択文字]]

  カスタマイズファイルの読み込みを指示します。カスタマイズをすることによっ
て、表示の細かな変更や、閏月判定法、外字の処理等の多様な変更が可能です。
ただプログラムの論理に直結するデータを変更することになりますので取扱には
注意してください。具体的なカスタマイズ方法については、添付の when.rsc な
どのコメントもご覧ください。なお、実際に使用する場合はご自分が変更したい
部分のみ切り出して使用されると良いでしょう。
  カスタマイズファイルは、変数 WHENPATH で指定されるディレクトリになけれ
ばなりません(V2.07で参照する環境変数がかわりましたので注意してください)。
ファイル名が省略された場合は コマンド名.rsc とみなします。拡張子は常に 
.rsc ですので指定してはいけません。カスタマイズファイル名が'-'の場合は、
標準入力からデータを読み込みます。これは sed 等と組み合わせると便利です。
  選択文字(1文字のみ可)が指定されている場合は、'#'の直後にその選択文字
が続くパターンをコメントの開始と解釈しません。'$'があって選択文字が省略さ
れた場合、選択文字は'$'となります。選択文字の指定('$')がない場合、選択
文字は'h<'になっています。また常に、when.exe では "#|"、whenhv.exe では "#|"、
"#>" もコメントの開始と解釈しません。つまりデフォルトでは、
 whenlt.exe #h<      で始まる行は内容を解釈、#|,#> で始まる行はコメント
 when.exe   #h<,#|   で始まる行は内容を解釈、   #> で始まる行はコメント
 whenhv.exe #h<,#|,#>で始まる行は内容を解釈
となっている訳です。
  なお、'$'は選択文字の指定を意味しますので、'$'を含むファイル名は指定で
きません。また、数字で始まるファイル名も、日付指定の一部とみなされますの
で使用できません。
  ファイルフォーマットに不正な部分があるとエラーメッセージを表示して異常
終了します。この場合は、+![カスタマイズファイル名]の様に指定すると、ファ
イル読み込みの経過を表示しますので、不正な部分を確認する事ができます。
  また、++[カスタマイズファイル名]の様に指定すると、カスタマイズ情報を実
行ファイルに書き込むことができます。1度書き込めば次からはカスタマイズファ
イルを指定する必要がなくなります。ただし、command: で指定した部分、在位
表データ及びマッチングパターンを保存したコメントファイルは書き込みの対象
になりません。また書き込まない場合でも、カスタマイズファイル中で再帰的に
カスタマイズファイルを指定することは避けてください(在位表データ部分また
はレイアウト指定に含める事は可能です)。変数をカスタマイズする方法につい
ては添付の pc98.rscを参照してください。exe ファイルは圧縮しない状態で実
行してください。また「プログラムとメモリが一致しません」というエラーメッ
セージが出る場合は環境変数中で指定してみてください。
  set when=++...

 h<汎用太陽暦>
  汎用太陽暦のカスタマイズ方法を whenhv.rsc 中の指定を例として示します
  (グレゴリオ暦の場合)。太陰太陽暦、定気太陽暦の設定例は、whenhv.rsc
  をご覧ください。ここではすべての設定を行っていますが、変更しないフィー
  ルドは '*' で代用できます。また、後続のすべてのフィールドを変更しない
  場合は、';'で打ち切ることができます。

                  +- 表示及び定義範囲の下限及び上限(例は無限大の場合)
                  |     +- 元期のユリウス通日(閏日の直後を指定)
                  |     |   +- 閏日を挿入する月(+12nで元期の年次を調整可能)
                  |     |   |   +- 備考欄の表示内容(注1)
                  |     |   |   | +- 年度及び日の境界の指定(shire.rsc参照,
                  |     |   |   | | + 平年と閏年の日数差     変数D?と同じ)
                  |     |   |   | | |  +- 閏の規則の段数 -----------------+
                  |     |   |   | | |  |   +- 一年の月の数                |
                  |     |   |   | | |  |   |   +- 146097日が4置閏単位 ----|
                  |     |   |   | | |  |   |   |      +- 36525日が100年 --|
                  |     |   |   | | |  |   |   |      | ( 4 x 100 = 400)  |
                +-+     |   |   | | |  |  |   |      |    +----+- 無視 --+
                | |     |   |   | | |  |   |   |      |    |    |
gene1:          -,+     |   |   | | |  |   |   |      |    |    |
                -,+,1721120,2,002,0,1, 2, 12,146097,36525, 0,   0,
                                               4,   100,   0,   0,
                31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 29, 0
                 |   |   |   |   |   |   |   |   |   |   |   |  |
                 +---+---+---+---+---+---+---+---+---+---+---+--+- 月の日数
                                    [+(月の始めの七曜番号+1)x010000](注2)

genem1:         "グレゴリオ暦",                         ------------ 暦法名
                "January", "February", "March",   "April"  ,    --+
                "May",     "June",     "July",    "August",     --+- 月の名称
                "September", "October", "November", "December", --+
                "",""(13,14番目の月の名称) ---------------------+

(注1)備考欄表示内容は16進数(0[0-9a-fA-F]..)で指定するのが便利です。
       備考欄指定は、汎用太陽暦以外の暦法でも指定可能です。指定可能な暦
     法は変数指定の項を参照してください。指定の意味は以下の通りです。

        bit 0  (1) = 王名表示               1: 表示            0: 非表示
        bit 1  (2) = 日の干支表示           1: 表示            0: 非表示
        bit 2  (4) = 月の名称/干支表示 注3 1: 表示            0: 非表示
        bit 3  (8) = 年の干支表示           1: 表示            0: 非表示

        bit 4-6    = 年月日王名の順序       0: 年月日王
                                            1: 年日月王
                                            2: 月日年王
                                            3: 日月年王
                                            4: 王年月日
                                            5: 王年日月
                                            6: 王月日年
                                            7: 王日月年
        bit 7  (8) = 曜日表示               1: 表示            0: 非表示

        bit 8  (1) = 月の九星の表示         1: 表示            0: 非表示
        bit 9  (2) = 年の九星の表示         1: 表示            0: 非表示
        bit 10 (4) = 年の九星の上元の流儀   1: 日本式          0: 中国式
        bit 11 (8) = 日の十二直の表示 注4   1: 表示            0: 非表示

        bit 12 (1) = 日の二十八宿の表示     1: 表示            0: 非表示
        bit 13 (2) = 月の二十八宿の表示     1: 表示            0: 非表示
        bit 14 (4) = 年の二十八宿の表示     1: 表示            0: 非表示
        bit 15 (8) = 日の二十七宿の表示 注5 1: 表示            0: 非表示

        bit 16-17  = 二十七宿の閏月配当 注6 0: 本月本説と同様
                                            1: 閏月本説流布版
                                            2: 閏月本説訂正版
                                            3: 閏月異説
        bit 18 (4) = 年次周期番号の表示 注7 1: 表示            0: 非表示
        bit 19 (8) = 次項の意味         1: 曜日の表示内容  0: 七曜のオフセット

        bit 20-23  = 曜日の表示内容         6: 六曜 注5
                                            7: 月に固定した七曜 注2
                                            9: 九星 甲午折返有  注8
                                           10: 九星 甲午折返無  注8

        bit 24-32  = 年の干支のオフセット

(注2)備考欄表示指定の曜日の表示内容が 7 の時のみ意味があります。
(注3)年の干支を表示するとき干支を、そうでないとき名称を表示します。
(注4)節月の備考として用いるときのみ正しい表示になります。
(注5)太陰太陽暦または太陰太陽暦時代の日本中国暦日の備考として用いるとき
       のみ正しい表示になります。
(注6)詳細は『日本の暦』[67]を参照してください。デフォルトでは前月と同じ
    配当になります。
(注7)indictio.rsc を参照してください。
(注8)chu.rsc でカスタマイズし、暦法 H の備考欄として用いるときのみ正し
い表示になります。
  これらの暦注は主に『日本暦日便覧』[5]に刺激されて追加した機能で、古文
書の日付の割り出しに使用する事を意識したものです(六曜と九星は明治以降に
盛んになったのだそうですが)。そのため、連続計算機能を強化し、併せて簡易
grep 機能も V2.05 以降サポートしました(MS-DOS がマルチタスクならこんな
grep 機能はいらないんですが)。くれぐれも迷信に惑わされないように注意し
ましょう。

 h<天体の位置計算及び表示>
変数 S の内容によって、天体の位置計算及び表示内容をカスタマイズできます。

変数 S(デフォルト003000E0E)
 bit 0-7    = sfmt bit7 に対応して表示するデータの指定
                内容は bit 8-15 と同様               + pdef.rsc 参照
 bit 8-15   = 日時計算に使用するデータの指定(()内は単位指定のunitsym+の
                                              オフセット)
                00: (1) 対象星の日心(月なら地心)平均黄経*
                01: (1) 対象星の日心(月なら地心)真黄経*
                02: (1) 対象星の日心黄緯
                03: (0) 対象星の日心距離/天文単位
                04: (1) 対象星の測心経度*
                05: (1) 対象星の測心緯度
                06: (0) 対象星の測心距離/天文単位
                07: (2) 対象星の視半径(赤道半径による)
                08: (1) 太陽と対象星の位相差(日心平均黄経による)*,**
                09: (1) 太陽と対象星の位相差(日心真黄経による)*,**
                0A: (1) 観測星と対象星の日心離角
                0B: (1) 太陽と対象星の測心離角
                0C: (1) 太陽と観測星の対象星心離角(要するに対象星の欠け具合)
                0D: (4) 対象星の光度(明るい部分の面積比で単純に計算)***
                0E: (2) 対象星と基準星の測心離角*
                0F: (2) 対象星と基準星の経度差*
                10: (2) 対象星と基準星の緯度差
                11: (0) 対象星の視半径を分母とする食分*
                12: (0) 基準星の視半径を分母とする食分*
                13: (5) 均時差
                14: (3) ΔT
                15: (1) 対象星の大気差補正付き測心緯度
                15: (1) 対象星の大気差補正付き測心緯度
                16: (0) ユリウス通日+0.5日
                17: (0) ヨーガ計算用(平均黄経)
                18: (0) ヨーガ計算用(視黄経) *  は光行差を考慮
                ↑                             ** 対象星が太陽なら黄経そのもの
                16進
 bit 16-19  = 対象星の番号
                内容は bit 24-27 と同様
 bit 20-23  = 基準星の番号
                内容は bit 24-27 と同様
 bit 24-27  = 観測星の番号(pname, pflag, pdata のオフセット)
                         (デフォルトでは以下の様になっている)
                 0: 太陽   1: 水星   2: 金星   3: 地球  
                 4: 火星   5: 木星   6: 土星   7:天王星 
                 8:海王星  9:冥王星  A:  月    B: 本影  
                 C: 恒星   D:春分点  E: 北極   F: 天頂  
 bit 28-31  = 測心経緯度の準拠座標
                 0: 地球の黄道座標
                 1: 赤道座標
                 2: 地平座標(方位角は北から東回りに測る)
                 (1,2 は axis, parallax, Sid で各惑星用にカスタマイズ可)

  whenhv.exe では、よく使用されると思われるパターンを漢字であらかじめ登録
しており、これらは S:xxxx と書かなくても漢字で指定可能になっています。こ
れらと、日付指定 11)の ABCP 指定部(求根指定)を組み合わせることにより、
多様な指示が可能です。特に、日月食の計算については、15.bat のサンプルプロ
グラムをご覧ください(本プログラムでは、日食地図の座標は経緯度を数字で出
力するだけですが、『地図をください』−私はこれを見て where.exe(仮称)の制
作をとりやめました−等の世界地図を作図するソフトと組み合わせることにより、
ビジュアルな日月食地図の作成も可能でしょう)。

                  sdscsbsa 一部指定用変数名
                       (s) 
                  −−−− 一部指定用の変数の設定部分
        南中 = S:023000404 -> 太陽の方位角を計算、表示
        角度 = S:013020F10 -> 金星と太陽の赤経の差を計算、赤緯の差を表示*
        離角 = S:003020F0F -> 金星と太陽の黄経の差を計算表示*
        留   = S:01302040E -> 金星の赤経を計算、太陽との視距離を表示*
        光輝 = S:003020D0D -> 金星の光度を計算、表示
        接近 = S:003020E0E -> 金星と太陽の視距離を計算、表示
        位相 = S:00302090E -> 金星と太陽の位相差を計算、視距離を表示
        日食 = S:0230A1212 -> 日食の食分を計算、表示
        月食 = S:023BA1111 -> 月食の食分を計算、表示*

 * 通常地心での値を使用しますので、環境変数 pos で、観測位置を地心にして
   ください。

  pname に、外部プログラムと起動オプションを登録することにより、位置計算
法自体を変更できます。nipe.rsc, sun.rsc, mars.rsc を参照してください。ま
た、外部プログラムの例として、太陽の位置計算を高精度で行う sun.exe、ケプ
ラーの楕円運動を扱う ellipt.exe を添付しておりますので参考にしてください。

  外部プログラムと whenhv.exe のインタフェース
  ・起動形式
        外部プログラム名 オプション ユリウス通日
        ユリウス通日は #.####E##のような形式で渡します。ET を使うか、UT を
        使うかは、pflag の指定によります。
    ・外部プログラムの出力
      標準出力に、平均黄経、真黄経、真黄緯、距離をこの順に改行区切りで
      出力(角度の単位は度、距離は日心の場合は天文単位、地心の場合は km)
        作業ファイルとして、when.$$$ を使用します(ただし、NIPE.EXEを使用
        する場合はそのフォーマットに合わせています)。

  deltaT に、外部プログラムと起動オプションを登録することにより、ΔT計算
法自体を変更できます。nipe.rsc, sun.rsc を参照してください。

  外部プログラムと whenhv.exe のインタフェース
  ・起動形式
        外部プログラム名 オプション ユリウス通日
        ユリウス通日は ET に対応する値で、#.####E##のような形式で渡します。
    ・外部プログラムの出力
      標準出力に、ΔTを出力(単位は秒)。
        作業ファイルとして、when.$$$ を使用します。

  外部プログラムの起動に伴うオーバーヘッドを避けるため、RAMディスク等の
速いデバイスを使用することをおすすめします。

 h<在位表>
  在位表データは、カスタマイズファイルの、行頭に '$' がある行以降に配置さ
れ、when*.exe が使用する在位表を提供します(この部分には選択文字は利きま
せん)。データの構成は、以下の凡例の通りです。標準添付のデータは朝鮮国王
位年号一覧表などになっています。在位表データ備考欄の表示内容は変数 ua に
よって指定します。
 
 h<凡例>
(1) No YY MM DD Base BIK Nation.Nengo,Name
  No     : ダミー(代数)
  YY     : 即位年(西暦)
  MM     : 即位月(不明の場合は 0)
  DD     : 即位日(不明の場合は 0)
  Base   : 即位時の在位年数(0:即位の翌年を元年とする、63:YYと同じ値とする)
  B      : 表示指定 A で在位開始時点を元日に遡るか否かのフラグ(_ on/@ off)
  I      : 断続年号か否かのフラグ(_ off / @ on)
  K      : 即位年号か否かのフラグ(_ on / @ off)
  Nation : 国名(省略時は直前と同じ)
  Nengo  : 年号(@ は「(王名)」とみなす)
  Name   : 王名(省略時は直前と同じ)

(2) E  YY MM DD Base BIK Reason
  YY     : 滅亡の前日の年(西暦)
  MM     : 滅亡の前日の月(不明の場合は 12)
  DD     : 滅亡の前日の日(不明の場合は 31)
  Base   : ダミー
  BIK    : ダミー
  Reason : 理由

(3) ! Com
  Com    : 月日に使用している暦法の指定

 なお、 -4096 h<= YY h< 4096、0h<= Base h< 64 です


                  ====(5)= 出力行の加工 =========

 1) '^' ではじまる出力行

  '^' ではじまる出力行は、コメントファイルの条件部との一致性をチェックし、
一致している場合は、コメントファイルのコメントフィールドを行末に付加して
出力します。条件部が複数の場合、全ての条件にマッチしたとき、一致とみなし
ます。コメントファイルの形式は以下のようになっています。

任意の行
 ・・
$ ←先頭の'$'がマッチングパターンの開始
# 注釈(この部分には選択文字は利きません)
条件部 [& 条件部]..:[@|付加するコメントフィールド]
    ・・・・・・・・・・・・・・

・条件部の書式

     空白
      ↓
 (1) > 日付     出力しようとする日付が指定の日付ないし、より後のとき一致
 (2) < 日付     出力しようとする日付が指定の日付より前のとき一致
                (日付は「(3) 日付指定」1)〜11)の何れでも指定できます)。
 (3) =文字列    出力しようとする文字列中に指定の文字列があるとき一致
 (4) ‾文字列    出力しようとする文字列中に指定の文字列がないとき一致
                (文字列の一致アルゴリズムは年号文字列と同じです)。
 (5) >桁 文字列 出力行の指定桁以降を文字列と比較し辞書式順序で「以上」なら一致
 (6) <桁 文字列 出力行の指定桁以降を文字列と比較し辞書式順序で「未満」なら一致
        ↑      (文字列にワイルドカードは使えません)
       空白

・コメントフィールド

 (1) 空     マッチした行に対するコメントの追加の終了を意味します。
 (2) '@'         マッチした行の出力をとりやめることを意味します。
 (3) その他      コメントフィールドを追加します。この時、'¥'は、改行コード
                 に読み替えられます(改行コードがあっても行のマッチング判
                 定においては、独立した行とはみなしません)。

 2)出力文字のマッチング

    =[=][‾]マッチング文字列

  コマンドラインオプションとして本指定を行うとマッチング文字列に一致する
要素を持った行を選択的に出力する(あるいはしない)ようにすることができま
す。マッチング文字列の一致アルゴリズムは年号文字列と同じです。

  (1) =      一致する行を1行出力して終了する
  (2) =‾     一致しない行を1行出力して終了する
  (3) ==     一致する行を出力しつづける
  (4) ==‾    一致しない行を出力しつづける

3) '!' ではじまる出力行

  '!' ではじまる出力行は、'!' の次の文字からをコマンドとみなし子プロセス
で実行します。使用法は、中国暦日(年号検索法)のサンプル(8.bat)を参考
にしてください。(重要な注意)子プロセスを起動しつつ連続計算を行う場合は、
MS-DOS の設定を break on にしておいた方がよいでしょう。
                ^^^^^^^^
4) '*' ではじまる出力行

 '*' ではじまる出力行は、表形式への整形が行われます。
 詳細は、c.rsc をご覧ください。


                    ====(6)= 環境変数 =========

1) 起動コマンド名 (WHEN etc)

  頻繁に使用するオプションは起動コマンド名と同じ名前の環境変数に設定して
おけます。代入記号には'='と':'が使用できます(環境変数の設定時に'='が使え
ないので':'を代わりに使います。':'そのものを指定したい場合は前に'¥'をつけ
てください)。代入記号の右辺が欠けている場合、下限用変数なら−無限大、上
限用変数なら+無限大が設定されます。本環境変数はコマンドラインに先だって
評価されます。従って、環境変数とコマンドラインの指定が矛盾する場合後者が
有効となります。MS-DOS V2.11 では、プログラムが起動コマンド名を取得できま
せん。従って、プログラム名を変更しても参照する環境変数名が変わりませんの
で注意してください。MS-DOS V3.1 以降では、このような制限はありません。

set WHEN=+ /Db-wcGJIFM

2) POS

  天体の位置計算時に使用する観測地の位置を指定します。東経及び北緯が+、
西経及び南緯が−です。環境変数が設定されていない場合、東京(139.744694,
35.654444, 1.0, 0.0)を観測地として計算します。本環境変数はコマンドライ
ンより後で評価されます。

set pos=経度[,緯度[,地球の半径[,高度]]]

3) TZ

  太陰太陽暦の計算の基準となる地方時を世界時からの時差(東経が負)で指定
します。環境変数が設定されていない場合は、-9.0 とみなします。環境変数が設
定されていて時刻の指定がない場合 POS で指定された経度を使用します。環境変
数の先頭が 'ZG' の場合、均時差を考慮にいれて真太陽時を用います。先頭が、
'ET' の場合、ΔTを無視し暦表時で計算します。末尾の英字は無視されます。ま
た、","で区切って続けて数字を指定すると、朔の日付判定用の進朔量とみなされ
ます。本環境変数はコマンドラインより後で評価されます(senmyo.rsc 等は内部
で進朔量を設定しているため、通常は意識する必要はありません。逆にこの指定
をキャンセルするときに使用します)。

set TZ=JST-9    (平均太陽時を用いる)
set TZ=ZG-9     (真太陽時を用いる)
set TZ=ET-0     (暦表時を用いる)
set TZ=LOCAL    (環境変数 pos で指定した経度における地方時を用いる)
set TZ=-9,+6    (朔の判定時、日の区切りを6時間早める)

4) 87
  この環境変数を N に設定すると、コプロセッサが実装されているか否かをチェ
ックすることなく、常にエミュレーションライブラリを用いて浮動小数点計算を
行います。whenhv.exe は機種依存していますが、本環境変数を N とすることに
よって、暴走を回避できる場合があるかもしれません(保証はできませんが)。

set 87=N        (浮動小数点計算にコプロセッサを使用しない)
      ↑
      = の前後にスペースをいれないようにしてください。

5) WHENPATH
  本プログラムは、参照するファイルを環境変数 WHENPATH に指定されたディレ
クトリから検索します。.rsc, .exe 等の拡張子のファイルをおくディレクトリ
は、WHENPATH に登録しておいてください(ただし、カレントディレクトリに同
名のファイルがあったり、ファイル名をフルパスで指定した場合は、そちらが優
先されます)。

set WHENPATH=A:¥WHEN
                   ↑
                   '¥' は不要です。


                  ==(7)===== 変更来歴 ==========

    主な変更のみを示します。

    1986.03.19
        文献[3]巻末の日本暦日年暦表をテキストファイル化完了。
        この後1988.02頃まで中断。

    1988.08.03
        when.exe の原型完成。この頃はフリーソフトウェアという発想なし。

    1989.12.02  V1.0
        初版リリース
        日本暦日、各種太陽暦及びマヤ暦のサポート

    1990.03.25  V1.2
        Ver 1 の確定版
        浮動小数点数を使わないようにし、機種依存性を排除した

    1991.07.31 V2.01
        Ver 2 は中国史暦日和中西暦日対照表[37]の入手を契機として、
        この年の3月〜5月にかけて開発されました。
        中国暦日及び計算による中国式太陰太陽暦のサポート
        カスタマイズファイルによるカスタマイズを可能とした
       (カタスマイズ機能のためメモリモデルがスモールに制限される)

    1991.12.15 V2.05
        PC-VAN の SIG ORIENT での要望・指摘への対応
        コンパイラのコード生成効率の向上によるコード領域の余裕を利用

    1992.06.30 V2.06
        カスタマイズファイルの充実
        ユダヤ暦及び復活祭のサポート
        基本的な暦注への対応
        コンパイラのコード生成効率の向上によるコード領域の余裕を利用

    1993.03.20 V2.07
        天体暦機能の充実(外部プログラムの参照など)
        汎用太陽暦の拡張(チベット暦、イ泰暦など)
        インド式太陰太陽暦(Tithisの計算)のサポート
        日本で用いられた唐代の暦法のサポート
        詳細な暦注への対応
        七曜表形式出力のサポート
        ヘルプ機能の簡略化によるコード領域の余裕を利用

    1993.09.15 V2.071
        インタフェースの改良、変更
        bali.rsc によりバリ島ウク年暦注の追加(java.rscではコメントアウト)
        中世シチリア及びイギリスの暦事情のサンプル west.rsc を追加
        roma.rsc で中世風日付表記ができるようにした
        whenhv.exe, nipe.rsc を nipe V3.0X 対応に変更

    1993.10.31 V2.072
        春秋戦国用 china.rsc を作成
        ローマ教皇用 pope.rsc を作成
        インド暦の修正
        Almanak Gampang によりジャワ暦の日付を修正(Dal年の処理を含む)
        イラン暦の置閏法を33年8閏に変更

    1994.06.12 V2.08
        when.doc 中の解説および参考文献を大幅拡充
        タイ暦のサポート、thai.rsc の変更
        バリ島のシャカ暦のサポート、bali.rsc の変更
        west.rsc でイギリスの年初の移行を13世紀末から12世紀半ばに変更
        scroll.rsc でバーバラ・スィーリングのユダヤ太陽暦を追加
        greek.rsc で古代ギリシア風の暦を追加
        aztec.rsc で16世紀初頭のアステカ暦を追加
        pope.rsc の改良(月日を記述、綴をラテン語風に変更)
        indo.bat で日の出時刻を指定するため','を'#'で代用出来るようにした
        計算ターゲット 24番に「太陽と月の黄経の和」を追加した(ヨーガ対応)
        インド系の暦で満・数の別を表示するようにした
        イラン暦の記述の変更もれ、Hijra の綴の不統一を修正(west.rscを除く)
        (s.rscにマイナーな太陽暦を登録)
	saku.batを追加(主に平朔暦法での朔の日付を計算するバッチファイル)
        sori.rsc に羽田孜を追加

    1994.09.02 V2.081
        nipe.exe を使用すると月の位置が不正になるバグを修正
        roma.rsc の月名をラテン語にし、ローマ暦Iの使用年次を一年くりさげ
        java.rsc のジャワ暦の一日の始まりを前日の午後6時に変更
        (ジャワ注は変更せず)
        bali.rsc のシャカ暦の月番号をKadasa=10月と表示するよう変更
        lombok.rsc で bali.rsc より1ヶ月早く年が変わるパターンを用意
        sori.rsc に村山富市を追加(ああ、毎回だ!)
        E-Mail アドレスの表記を変更


                  ==(8)= 著作権等について ======

 1) 本プログラムの著作権は私(suchowan@日経mix, 須賀隆)に属します。
 2) 本プログラムは BORLAND C++ V3.0 で作成しました。
 3) 標準版と機能限定版はPC9801DA2とJ3100SL081VWで動作を確認しています。
 4) 98版はPC9801DA2で動作を確認しています。
 5) IBM版はJ3100SL081VWで動作を確認しています。
 6) 他BBSへ転載する場合は私(suchowan)までメールで連絡願います。
      ファイル構成を変更しない場合は、事後でもかまいません。
      ファイル構成を変更する場合は、必ず事前にご相談ください。
 7) 他BBSへ転載する場合は+オプション等で内容を変更しないでください。
 8) 本プログラムの使用に伴う損害については、責任を負いません。

  『Vz Editor』は、株式会社ビレッジセンターの商品名です。
  『地図をください・基本セット』は株式会社ラッセル社の商品名です。
  (最近「基本セット」という言葉がとれて ASCII社に移ったようです)
  『MS-DOS』は、米国 Microsoft社の商標です。

                          電子メールアドレス   suchowan@box.email.ne.jp
                                               ZKF09755@pcvan.or.jp
                                               SGB02104@nifty.ne.jp
                                               76661.2104@compuserve.com


取扱説明書/ サポートする暦/ 中国の暦について/ 参考文献/ GUI環境について/ 計算可能暦一覧/ トップページ