怪談 − DENTHTM にまつわる怪奇現象

                                                     YASUICHI.MURASE


目 次


キーボード反応なし。
Windows関連ファイルか?
TEGATA1.DAT 。
KEIHS1.DAT 。
改行を一つ。
謎は深まり...。
KAIDAN1.EXE 。
[Ctrl]+[Pause] か [STOP] か。
KEIHSO1L.HTM と KEIHSO1M.HTM と。
とりあえずの処置。
HP200LXとMobileGearと。
謎の真相。
あとがき


電脳単語帳DENTAN 概要説明書 に戻る。

 

    KEIHSO1.DAT、電脳単語帳DENTAN用DATAファイル規格に基づいて作成された
  刑法総論の3つの論証ファイルの第1番目、ファイルサイズ26536bytes、
  収録問題数22問、総行数752行。
    DENTHTM Ver.1.00 の試運転で、何気なく、この一見平凡なDATAファイルを
  フレーム対応のHTMLファイルに変換しようとしたとき、全ては始まった。

目次に戻る
 
キーボード反応なし。

     他のDATAファイルの内容を記述したHTMLファイルも作成しますか?
          Y/Enter/↑ : 作成する。
          N/E/Esc/↓ : 作成しない。

  この見慣れた画面で、何気なく[↑](=上向き矢印キー)を押す。ここで、再び
  DATAファイル選択画面が現れるはずである。いや、現れるはずであった。
  しかし、何の反応もない。他のキーを押しても反応がない。

  やむなくリセットすることにした。

  #本来、無闇にリセットするのは、あまり「お上品」なことではない。
    DOS上においては、DISKアクセス中以外はあまり気にしなくてもよいのかも
    しれないが、Windows(WindowsのDOS窓を含む)のときは、ちょっと...。

目次に戻る
 
Windows関連ファイルか?

    リセット後、ファイルの確認をする。すると本来作成されるべき4つのファイル、
  すなわち、メインファイル KEIHSO1.HTM、問題一覧ファイル KEIHSO1L.HTM、
  問題文ファイル KEIHSO1M.HTM、解答文ファイル KEIHSO1K.HTM、の4つのファイル
  のうち、前3者は一見何の不都合もなく作成されていた。しかし、最後の
  KEIHSO1K.HTM だけは、ファイルサイズ 0byte の空虚なファイルになっていた。

    このとき、DENTHTMは、NEC PC9801 NS/R のWindows3.1のDOS窓という、若干特殊な
  環境において作動していた(つまり、幾多の環境下において作動試験はトラブルなく
  進んでいた)。そこで、当初は KEIHSO1.HTM という解答文ファイルのファイル名が
  Windowsと何らかの干渉を起こしたものと考えられた。

    そこで、出力ファイル名入力画面で解答文ファイルの名前を他の名前にして
  試してみた。しかし結果は、前回と同様にキーボードの入力を受け付けなくなった。
  ここで、問題一覧ファイルと問題文ファイルの名前がdefaultのままであったことが
  重要な意味を持つことが分かったのは、後のことである。

    なお、フレームに対応しないHTMLファイルに変換しようとする場合には、
  なんらのトラブルもなく、KEIHSO1.HTMが作成されている。

目次に戻る
 
TEGATA1.DAT 。

    司法試験の商法は一般に会社法と手形法(手形法・小切手法)と商法総則との
  3分野に分けて分析されることが多い。TEGATA1.DAT は、電脳単語帳DENTAN用
  DATAファイル規格に基づいて作成された手形法の3つの論証ファイルの第1番目で、
  ファイルサイズ31165bytes、収録問題数34問、総行数878行である。

    KEIHSO1.DATを別の名前にした後で、TEGATA1.DATをKEIHSO1.DAT にrenameして
  試してみる。すると、なんらのトラブルもなく、KEIHSO1.HTM、KEIHSO1L.HTM、
  KEIHSO1M.HTM、KEIHSO1K.HTMの4つのファイルが作成された。もっとも、これらの
  ファイルは刑法総論のファイルの名前でありながら、その内容は手形法である。
  これはやむを得まい。

    この状況からすると、どうやらファイルの名前には関係がなさそうにも思える。
  だがしかし、...。

目次に戻る
 
KEIHS1.DAT 。

    では、ファイルの内容に問題があるのだろうか。

    TEGATA1.DATを元の名前に戻し、問題のKEIHSO1.DATをKEIHS1.DATにrenameして
  試してみる。すると、なんらのトラブルもなく、KEIHS1.HTM、KEIHS1L.HTM、
  KEIHS1M.HTM、KEIHS1K.HTMの4つのファイルが作成された。しかも、これらの
  ファイルは名実ともに刑法総論のファイルである。ちなみに、KEIHS1.DATも
  ファイルサイズは26536bytesである。

    この結果だけから見ると、ファイルの内容には関係がなく、ファイルの名前に
  関係がありそうであるということになる。ただし、これは前述のTEGATA1.DATの件
  からの推論と矛盾する。

目次に戻る
 
改行を一つ。

    ファイルの内容には関係がなく、ファイルの名前に関係がありそうである、
  という仮説には、前述のTEGATA1.DATの件からも疑念があった。

    そこで、KEIHSO1.DATに名前を戻した上で、途中に改行のみの行を一つ入れる。
  すると、なんらのトラブルもなく、KEIHSO1.HTM、KEIHSO1L.HTM、KEIHSO1M.HTM、
  KEIHSO1K.HTMの4つのファイルが作成された。改行を削除すると、また元に戻った。

    やはり、どうやらファイルの内容にも関係があるようである。

目次に戻る
 
謎は深まり...。

    つまり、ファイルの名前とファイルの内容の両方について、一定の条件が重なった
  場合にのみ、この恐るべき現象は発生するのである。
    もちろん、原因究明のためのソースファイルの点検も行われているが、原因と
  なるようなバグは見当たらなかった。

目次に戻る
 
KAIDAN1.EXE 。

    プログラムのどの行で停止しているかを確認するために、DENTHTMのソースに
  少し手を加えて、処理の進捗状況を表示させるプログラムを作ってみた。それが、
  KAIDAN1.EXE である。KAIDAN1.EXE で KEIHSO1.DAT を処理したところ、
  DENTHTMのソースファイルでいうところの

    18020 print "他のDATAファイルの内容を記述したHTMLファイルも作成しますか?"
    18030 print "     Y/Enter/↑ : 作成する。"
    18040 print "     N/E/Esc/↓ : 作成しない。"
    18050 gosub 27000 :*キー入力の受付
            (中略)
    27000 rem * ====== キー入力処理サブルーチン ======
    27010 on key goto 27030
    27020 goto 27010
    27030 nyuuryoku$=inkey$
            (中略)
    27700 return

  という所で、本来ならば何らかのキー(少なくともASCIIコードを発生しうるキー)が
  押されると、27010行から27030行へ飛ぶはずのところ、この現象が発生したときに
  限り、27010行から27030行へ飛ぶ処理は実行されず27020行から27010行に戻る
  ループから抜け出せなくなっていることが分かった。

    しかし、なぜそうなるかは、謎のままである。

目次に戻る
 
[Ctrl]+[Pause] か [STOP] か。

    一連の調査で、「怪奇現象」を再現しているうちに、そこからの脱出法法に
  ついての経験も蓄積されてきた。

    まず、DOS/Vである。作者の自作DOS/Vのキーボードは、いわゆる
  109日本語キーボードをつないである。109日本語キーボードとは、Win95以降に
  登場したと思われる、[Space]キーの3つ左にWindowsのロゴのあるキーボードの
  ことである。作者のDOS/V用のキーボードの右上の方に[Pause]キーと呼ばれる
  キーがある。このキーには、上面に[Pause]と、手前面に[Break]と、印刷されて
  いる。この[Pause]キーを[Ctrl]キーと同時に押せば、DENTHTMを緊急終了して、
  もとのDOSの画面に戻ることが出来る。なお、「[Pause]キーを[Ctrl]キーと
  同時に押せば」というのは、押し始めるのが同時であることは要求されず、
  まず[Ctrl]キーを押し、これを離さずに[Pause]キーを押せばよい。

    NEC PC9801では、[STOP]キーを押せばよい。他のキーと同時に押すのでは
  なく、このキーを単独で押すだけでよい。10keyを持たずに数字入力を文字キーの
  上のキーで行わねばならないNS/Rにもこの[STOP]キーはあるのだから、
  他の9801にも多分あるだろう。

    いずれにせよ、このとき画面には「^C」と表示されることがある。
  DOS用のファイラーなどから DENTHTM.EXE を選択して実行していた場合に
  実行を終了をすると、ファイラーの画面に戻る際に「何かキーを押して下さい」
  という旨の表示が出るものがある。そのような場合にこの緊急終了をすると、
  「^C」の表示が見やすいかもしれない。ただ、この表示が何を意味するかに
  ついては、憶測を交えることになるので、ここでは触れない。

    むしろもっと重要なことは、この緊急終了を使った場合には、解答文ファイル
  KEIHSO1K.HTM をも含めた4つのファイルがきちんと作成されていたのである。
    これは、リセットした場合には KEIHSO1K.HTM がサイズ0byteの空虚なファイルと
  なっていたのとは異なる。

    惜しむらくは、この緊急終了を使うと、INDEXファイルについてHTML化することが
  できないことである。DENTHTM を再起動して、他のDATAファイルをHTML化してから
  INDEXファイルをHTML化するしかない。

目次に戻る
 
KEIHSO1L.HTM と KEIHSO1M.HTM と。

    先に、解答文ファイル KEIHSO1K.HTM の名前を変更してもキーボードの入力を
  受け付けなくなったことは書いた。しかし、ここで何を考えたのか、
  問題一覧ファイル KEIHSO1L.HTM の名前を変えてみた。問題文ファイル
  KEIHSO1M.HTM と 解答文ファイル KEIHSO1K.HTM との名前はdefaultのままである。
  するとメインファイル KEIHSO1.HTM も含めた4つのファイルがきちんと作成された。

    今度は、問題文ファイル KEIHSO1M.HTM の名前を変えてみた。KEIHSO1L.HTM と
  KEIHSO1K.HTM とはdefaultのままである。やはり、4つのファイルがきちんと
  作成される。

    KEIHSO1L.HTM と KEIHSO1M.HTM の両方の名前を変えても、4つのファイルが
  きちんと作成される。

    解答文ファイル KEIHSO1K.HTM だけの名前を変え、KEIHSO1L.HTM と KEIHSO1M.HTM
  の両方をdefaultの名前のままだと、やはり前もそうだったように、キーボードの
  入力を受け付けなくなる。

    要するに、KEIHSO1L.HTM と KEIHSO1M.HTM のいずれかまたは両方の名前を変えれば
  4つのファイルがきちんと作成されるが、KEIHSO1K.HTM の名前を変えるだけでは
  キーボードの入力を受け付けなくなるのである。

目次に戻る
 
とりあえずの処置。

    さしあたって、キーボードの入力を受け付けなくなった場合の応急処置は
  見えてきた。

    まず、キーボードの入力を受け付けなくなったら、DOS/Vであれば、
  [Pause]キーを[Ctrl]キーと同時に押す。NEC PC9801では、[STOP]キーを押す。
  そうやって、いったんDENTHTMを緊急終了する。

    次に、DATAファイルの名前を変えるか、DATAファイルの中の内容上差し支えが
  ないところに改行を入れる。そしてDENTHTMを再起動する。それができないなら、
  DENTHTMの再起動後、出力ファイル名入力画面で問題一覧ファイルか
  問題文ファイルの名前をdefaultの名前から変える。このような措置で再発を
  防止できる。

    あるいは、先にDENTHTMを緊急終了した際に、4つのファイルがきちんと
  作成されていれば、そのDATAファイルをDENTHTMでHTML化する必要は最早ない。
  他のマシンでHTMLファイルを使う必要があるならば、4つのファイルをまとめて
  コピーすればよい。

    ただ、なぜこのような現象が起きるのか、あるいは、どのようなDATAファイルで
  このような現象が起きるのか、それらは未だ謎のままである。

目次に戻る
 
HP200LXとMobileGearと。

    DENTAN関連のドキュメントをしっかり読んで下さってる方の中にはお気付きの人も
  いらっしゃるかもしれませんが、この作品に出てくるマシンは自作DOS/VとPC9801NS/R
  だけで、HP200LXやMobileGearは出てこないんですよね。
    そう。怖くて試してないんです、実は。こいつらは最悪の場合、電池を全部抜いて
  いったん記憶喪失にして、環境を再構築しないといけなくなるので怖いんです。
  2000年6月に、DENTANの未完成のモジュールをHP200LXで走らせて、他の方法による
  リセットが出来なくなって、電池を抜く羽目になって、痛い目に遭った記憶がまだ
  残ってるんです。
    MobileGearに至ってはDOSソフトを走らせること自体、裏技的なことなので、
  あんまり無理はさせられないし...。
    ということで当分の間は、DENTHTMは母艦で走らせることをおすすめします。私は
  自作DOS/VやNS/Rで安全が確認されたDATAファイルをHP200LXやMobileGearで走らせて
  ますけど、動作確認以外の理由で同じDATAファイルを2度もHTML化する必要がある
  とは思えませんし、そもそもHP200LXが健在なうちはDENTHTM自体必要がない...。

目次に戻る
 
謎の真相。

        つづく...?

        # 謎の真相は、未だ闇の中にある。

目次に戻る
 
あとがき

    この作品はフィクションで...はありません。

    ただし、実際の事件の順番とこの作品の記述の順番とは、必ずしも一致しません。
  また、この作品であげられた事件の中には、別の部分でのバグ修正の後は再現して
  いないものもあります。

    いずれにせよ、DENTHTMを使ってない方でも、ここであげられた応急処置は、
  DENTANやDENTCSVで未知のトラブルが生じたときに応用できるかもしれません。

    この作品中に出てくるDATAファイルは諸般の事情により公開していません。
  そのへんの事情については、電脳単語帳DENTANに添付のREADME.DATを参照して
  下さい。
    KAIDAN1.EXEも公開していませんが、これの公開の必要はないでしょう...多分。

    最後になりましたが、「怪談」だの「怪奇現象」だのと聞いて、もう少し血生臭い
  猟奇的な内容を期待された方には、期待はずれな内容だったかもしれませんが、
  その点は悪しからず。

目次に戻る
電脳単語帳DENTAN 概要説明書 に戻る。