2025-03-26

「FH2$W_RECATTR」の構造がわからない

simh V3.8-1のvax.exeを使ってOpenVMS  VAX V7.2を動かしています。OpenVMS側にあるファイルをWindows側に持ってくるため、simhの仮想磁気テープのファイルを使用する方法を考えています。他にも方法はあると思いますが、技術的興味から、しばらくはこの方法を追求してみようと思っています。

 

OpenVMS側で作成した磁気テープはANSI X3.27 Level 3に準拠した構造になるようです。マニュアル『Guide to OpenVMS File Applications』の「1.3.1. ANSI-Labeled Magnetic Tape」に情報があります。その「1.3.1.6.3. HDR3 Label」では「These attributes are converted from 32 bytes of binary values to 64 bytes of ASCII ...」のような記述があります。さて、この32バイトの情報は、具体的にはどのようなものなのか調べているのですが、核心の情報にたどり着けていません。

 

ODS2を操作する何かのプログラムの一部らしき箇所に「struct RECATTR」という構造体がありました。この中の要素を数えると、32バイト分ありましたので、多分これがそうなのかもしれません。しかしプログラムのソースファイルに書かれているということは、何か出典となる情報に基づいていると思われますが、それが何なのか見つからないのです。

手元に『VMS File System Internals』(ISBN 0-13-931783-X)があるので調べてみると、「Figure 2-2: Format of the Header Area」の中に「FH2$W_RECATTR (32 bytes)」という箇所を見つけました。多分これのことだろうと思うのですが、32バイトの詳細構造がわかりません。

 

同書の「2.4.1 Directory Structure」では、「The last word of the directory file's record attributes area (FAT$W_VERSIONS) is ...」のような記述があるところを見ると、何か構造があって然るべきなのですが、その構造を記した情報にたどり着けません。

 

この構造がわからなくても、OpenVMS→Windowsの情報転送には困らない感触があるので、わからないならわからないで構わないとは思います。しかし何かに書かれているのであれば、それを知りたいところです。

2025-03-23

『平家物語』を「鱸」まで覚えた

 2023年の夏頃から『平家物語』を暗記しようとしています。覚えたから何かあるわけではありません。ただし、ただ読み流すだけよりも、言葉の一つ一つに注意が向くようになりました。

 

『平家物語』と言えば、「祇園精舎の鐘の声、諸行無常の響きあり」で始まる冒頭が有名です。『平家物語』には、話のまとまりごとに副題がついており、冒頭の箇所は「祇園精舎」です。次が「殿上闇討」で、「鱸」、「禿髪」と続きます。

 

覚え始めてから2年弱ほどですが、ようやく「鱸」まで覚えました。重要人物である平清盛がようやく登場してきました。これから覚える「禿髪」では、「驕る平家は久しからず」のエピソードが語られていくことになります。

 

『平家物語』は、まだまだ長いので、一生かかっても覚えきれないでしょう。そもそも巻一すら終わらないかもしれません。

2025-03-22

OpenVMSのRMS attributesにおける「32 bytes of binary values」って何?

simh V3.8-1のvax.exeを使ってOpenVMS VAX V7.2の環境を整えようとしています。ひとまずOSを入れることはできています。今後の作業を考えると、OpenVMS側からWindows側にファイルを持っていく方式を考えておこうと思っています。TU-81で磁気テープを使おうと思いますが、実際には仮想環境なので、現実にはsimhの仮想磁気テープのファイルを扱うことになります。磁気テープはANSI X3.27形式が使われているようなので、その構造を理解しようと思います。

 

OpenVMSにおける磁気テープの構造は『Guide to OpenVMS File Applications』に詳しい情報があります。ここで「1.3.1.6.3. HDR3 Label」には、次のような記述があります。

The RMS attributes describe the record format of a file. These attributes are converted from 32 bytes of binary values to 64 bytes of ASCII representations of their hexadecimal equivalents for storage in the HDR3 label.

 

HDR3にはRMS attributesが格納されており、その32バイトのバイナリ値が64文字のASCII文字列として表現されているというのです。つまり1バイトが2文字ですから、いわゆる「16進ダンプ」のような見た目なのでしょう。それは良いのですが、「RMS attributes」というの何でしょうか。

 

「RMS attributesのことなら、もう既にご存知かと思いますが」と言うかのような感じです。しかし私は何のことかわからないので、調べてみなければなりません。おそらく何かのマニュアルに詳しく記述されていると思います。それを探し出そうと思います。

simhのvax.exe上で動作させるOpenVMS VAXにおける仮想磁気テープのファイル構造

simh V3.8-1のvax.exeを利用してOpenVMS VAXを動かしています。OpenVMSからWindowsにファイルを送るために、simhの仮想磁気テープのファイルを使おうと思います。OpenVMS側は、磁気テープをANSI X3.27 Level 3に準拠した構造にしているそうです。ANSI X3.27の構造には詳しくありませんが、仕様書をネットで見つけましたので、調べてみようと思います。

 

ファイル構造を調べるため、OpenVMS側でファイルをテープに格納してみて、そのファイルがWindows側でどのように見えるかを確かめてみようと思います。そのファイルの16進ダンプは、次のようになりました。

00000000  50 00 00 00 56 4F 4C 31 53 49 4D 48 20 20 20 20  P...VOL1SIMH    
00000010  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00000020  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00000030  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00000040  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00000050  20 20 20 33 50 00 00 00 50 00 00 00 48 44 52 31     3P...P...HDR1
00000060  54 45 53 54 31 2E 54 58 54 20 20 20 20 20 20 20  TEST1.TXT       
(以下略)

 

ANSI X3.27の仕様書によれば、「VOL1」とか「HDR1」というのが、規定されている構造を示す文字列のようです。それでは、その前にある「50 00 00 00」というのは何でしょうか。当初、これもANSI X3.27の規格で定められている情報かと思ったのですが、そうではなさそうです。

 

ネットで情報を探ってみると「SIMHで古代UNIXを再現(2)」を見つけました。この中に「SIMHのテープフォーマットは、SIMH Magtape Representation and Handlingに解説があります。」という記述があります。この「SIMH Magtape Representation and Handling」を確認してみると、SIMHの都合により、実データの前後に「Leading Length」と「Trailing Length」が入るようです。これが「50 00 00 00」なのでしょう。

 

ひとまず、SIMH側が挿入する情報の構造は判明しました。この段階で、仮想磁気テープのファイルをアクセスしてみるプログラムを組んでみました。これを拡張すれば、ANSI X3.27の構造を表示するプログラムになると思います。

 

 #!/usr/bin/python3

def readrecord(f):
    global TapeMark
    len0 = int.from_bytes(f.read(4),'little')
    if len0 == 0:
        TapeMark += 1
        if TapeMark >= 2: raise EOFError
        return 0
    TapeMark = 0
    data = f.read(len0)
    len1 = int.from_bytes(f.read(4),'little')

    print(TapeMark, len0, data[:4], data[4:16])

    return 0 if len0 != len1 else len0

def readblock(f):
    while True:
        if readrecord(f) == 0: break

TapeMark = 0
with open("test-tu81.tap","rb") as f:
    while True:
        try:
            readblock(f)
        except EOFError:
            break
#[EOF]

2025-03-21

simh上のOpenVMSとWindowsとの間でのファイル交換

simh V3.8-1のvax.exeを使用してOpenVMS VAX V7.2を楽しんでいます。まだOSをインストールだけです。今後のことを考えて、いまのうちにOpenVMSとWindowsとの間でファイルを交換するための方法を考えておこうと思います。

 

普通に考えれば、最も適切なのはネットワークを利用することでしょう。TCP/IPが使えるようになれば、FTPを利用するだけのことです。もしネットワークを利用しないのであれば、往年の環境がそうであったように、何かオフラインで利用できるメディアを使うことになります。以下のようなメディアが考えられます。

  • CD-ROM
  • 磁気テープ
  • フロッピーディスク

 

simhをWindows上で動作させており、WSLが使えるため、WSLでmkisofsを使えば、Windows上のファイルを含んだISOファイルを生成できます。そのISOファイルをsimhでattachしておけば、OpenVMSではRRD40からマウントできるので、WindowsからOpenVMSにファイルを渡せるようになるはずです。しかしCD-ROM経由では、逆方向(OpenVMSからWindows)は難しそうです。

 

磁気テープを使うというのは、いかにもクラシックなコンピュータという趣がします。simhではTU81として指定されたデバイスにファイルをattachしておけば、OpenVMS側ではINITIALIZEやMOUNTなどの操作が可能です。何か適当なファイルをCOPYすれば、simh側でattachされているファイルに書き込まれるのを確認しました。

 

問題は、Windows側でファイルを取り出す方法です。ファイルを確認してみると、ANSI X3.27形式のヘッダが付いているようです。これを解釈して、特定のファイルを取り出すには、どうしたら良いのでしょうか。もし本当にテープデバイスを持っているなら、mtコマンドが使えるかもしれません。しかしsimhが作成した単なるファイルに対してmtコマンドは使えません。

 

ANSI X3.27形式のヘッダが入っているファイルを解釈して操作できるツールというものが、存在しても不思議はないのではないかと思うのですが、ネットを探しても見つかりませんでした。何か方法がないか、探ってみようと思います。

 

最後のフロッピーディスクというのは、何ができるのか全くわかりません。そもそもOpenVMSで扱うフロッピーディスクは、FATを解釈できるのでしょうか。もしかするとODS-2だけのような気もします。仮にFATを取り扱えるとしても、それをWindows側で「仮想的なフロッピーディスク」として操作するには、どうするのか見当もつきません。

2025-03-18

OpenVMS VAXに接続する端末エミュレータのためのキーマップ設定におけるTera TermとRLogin

simh V3.8-1のvax.exeを使ってOpenVMS VAX V7.2をインストールしました。まだOSを入れただけですが、simhではDZデバイスをTCP/IPで接続できるので、端末エミュレータからログインできるようになりました。端末エミュレータとして、昔はTera Termを利用していたのですが、ずいぶん前からRLoginに移行しています。端末エミュレータを使い分けるのは面倒なので、できればRLoginを使いたいとは思いますが、ひとまずTera TermとRLoginで使い勝手を検討します。

 

まずログインするだけであれば、Tera TermでもRLoginでも、いずれも可能でした。ただし注意が必要なのは、ログイン先がOpenVMSだということです。Tera TermもRLoginもVT端末の動作を再現しようとしており、VT端末のエスケープシーケンスにも対応しているようなのですが、キーボードの扱いがどうなっているのか、気になります。

 

そもそも、DECのVT端末でつかわれているLK201キーボードと、PCの109キーボードとでは、違う点があります。

  1. ファンクションキーは、LK201では20個ありますが、109キーボードでは12個しかありません。
  2. 109キーボードのテンキーにおける「+」キーは、LK201では「-」と「,」として別のキーになっています。
  3. カーソルキーの上部にある6個のキーの役割が、LK201と109キーボードでは、配置が異なります。

 

Windows上で動作する端末エミュレータは、109キーボードを使いますが、VT端末として操作するためにはLK201と同等の操作ができる必要があります。このためには、上述した違いを吸収するために、キーマップ設定をおこなわなければなりません。

 

端末エミュレータで実現できるか否かを確認するまえに、どのようなキーマップ設定とするか方針を決めておきます。

  1. LK201のファンクションキーは20個あり、109キーボードの12個では数が足りません。そこで、F1~F10を使うことにして、F11~F20は、Shift+(F1~F10)で実現することとします。
  2. 109キーボードのF11とF12が余りますが、これはLK201のF15とF16に割り当てます。OpenVMSではF15を「Help」として、F16を「Do」として使っています。これらは使用頻度が高いので、押しやすいようにF11とF12を使います。
  3. カーソルキーの上部にある6個のキーは、LK201と109キーボードで配置が異なります。例えば、「Ins」と「Del」が109キーボードでは左端にありますが、LK201では「Insert」と「Remove」は右上にあります。ここで考えるのは、109キーボードの刻印を無視してLK201の配置に合わせるのか、LK201の配置を無視して109キーボードの刻印に合わせるのかという選択です。もし日常的にLK201を利用しているのであれば、身体が配置を覚えているでしょうから、LK201の配置に合わせたほうが良いでしょう。しかしキーの刻印を参照しながら操作するのであれば109キーの刻印に合わせた方が良いことになります。私自身は、LK201を使用する機会はありませんので、109キーボードの刻印を見ながら操作することになると思うので、キーボードの刻印に合わせてエスケープシーケンスが送出されるように設定します。
  4. 109キーボードのテンキーには「+」しかありませんが、LK201では「-」と「,」の2つのキーがあります。これを実現するため、テンキーの「+」は「,」に割り当てることとして、Ctrl+「+」を「-」にしました。

 

このような方針を実現できるように、端末エミュレータのキーマップ設定をおこないます。設定ができているか否かは、OpenVMSの「EVE(EDIT/EVE)」や「EDT(EDIT/EDT)」で確かめます。

 

Tera Termの場合は「KEYBOARD.CNF」というファイルに対応関係を記述するようです。EVEやEDTで確かめましたが、問題なさそうです。

 

RLoginは、設定画面を使います。Tera Termとはキーマップの考え方が違うようで、Microsoft Windowsの仮想キーコードを使って割り当てをおこなうようです。ところが、この方式だとVT端末と同等の挙動を実現できませんでした。LK201はテンキーの上部にPF1~PF4が割り当てられており、特にPF1は「GOLD」として使われます。ところが109キーボードでは「NUMLOCK」なので、例えばテンキーの「7」は、NUMLOCKの状態によって「7」だったり「Home」だったり変化します。このため仮想キーコードも「PAD7」と「HOME」となり、特に「HOME」の場合は、カーソルキー上部にある「Home」と区別することができません。

 

普段は、Tera Termではなく、RLoginを使用しているので、OpenVMSもRLoginにしたかったのですが、そうもいかないようです。OpenVMSを操作するときだけはTera Termにするしかないのかなと思います。

2025-03-12

『時刻表大解剖』は面白い

近所の書店に『時刻表大解剖』という本があったので買ってみました。時刻表そのものや、鉄道の歴史などについて、詳しく書かれていて、とても楽しく読めました。本の帯には「JTB時刻表マスター認定試験」を実施するとあります。今年がJTB時刻表100周年なので、その記念イベントのようです。

 

近年JTBからは復刻版時刻表が幾つか発売されています。古い時刻表を出版しようとするには、それなりに手間もかかると思います。『時刻表大解剖』の11ページには、「電算写植完了」が昭和62年12月とあります。それ以降のものであっても、すぐに復刻版が出版できるわけではないと思いますが、それ以前のものであれば、なお大変でしょう。かけた手間に見合うだけの販売数が見込めるかという営業判断も必要かとは思います。そうであっても、昭和43年10月大改正(いわゆる「よんさんとう」)のような画期となるものが、戦前とか終戦直後にはないものでしょうか。そのような時刻表も復刻版を出版してくれれば、とても嬉しいです。

2025-03-11

PlantUMLはネットワーク図も描けるのか。

何処で知ったのかは忘れてしまいましたが、PlantUMLというものを知りました。テキストで記述されたものから様々な図を生成できるようです。いわゆる「お絵描きツール」を使ってグラフィカルに作図するのではありません。例えていえば、Microsoft Wordを使うのではなく、LaTeXを利用するようなイメージです。

 

いろいろなことができるようなのですが、腰を据えて利用してみるまでには至っていません。使い方の情報を得るため、PlantUMLのQ&Aフォーラムを見るようにしています。すると「Forcing net positions in nwdiag」という質問がありました。その質問の内容はさておき、綺麗なネットワーク図が描けることに驚きました。

 

PlantUMLでは、こんなこともできるのか。使いこなせば、便利なツールになりそうです。普段使いできるように、練習してみようかと思います。

RLoginでOpenVMS VAX V7.2に繋ぐと「VT500_Series」になる理由

simh V3.8-1のvax.exeを用いてOpenVMS VAX V7.2の環境を構築し、DZデバイスを経由してRLogin V2.30.2.1を用いて接続すると「VT500_Series」として認識されます。なぜこうなるのか調べてみました。

 

RLoginの公式サイト「エスケープシーケンス一覧」の「CSI一覧」によると、「DA1」のところに以下の記述があります。この記述における「TermID」というのは、設定「制御コード」の中にある「ESC/CSI/DCS」を開き、「各種ID」の中にあります。


TermID     DECTIDのTermID設定によりレスポンスが異なる

 

デフォルトでは「10」になっています。これが「VT500_Series」に相当するようです。「9」にすれば「VT400_Series」に、「7」か「8」ならば「VT300_Series」になります。「1」なら「VT100」として認識されます。

 

OpenVMS VAX V7.2を操作するためであれば、VT200以降であれば何でも構わないだろうと思います。Tera Termは「VT300_Series」として認識されているので、それと揃えようかと思います。

2025-03-10

simhのDZデバイスでOpenVMS VAX V7.2に接続

simh V3.8-1のvax.exeを使用してOpenVMS VAX V7.2の環境を構築しています。今のところは、OS本体を入れてだけです。今後は様々な環境構築をしていくつもりですが、そのためにも、作業しやすくするために端末環境を整えておこうと思います。

 

vax.exeから起動したままでは、OSからはLA36として認識されています。これはDEC Writer IIとして知られているもので、VT100のような端末よりも旧い、キーボードとプリンターが一体化したようなものです。当然ながらスクリーンエディタは使用できませんので、ファイルを編集するにはラインエディタを使うことになります。さすがに操作性が悪いので、なんとかしたいところです。

 simh V3.8-1のvax.exeには、DZデバイスが用意されています。これはDZV11 Terminal Multiplexerというもので、本物のVAXであれば複数の端末をぶら下げることができるはずです。simhでは「ATTACH DZ <port>」とすることで、TELNET接続を受け付けることができます。<port>は何でもよいようですが、「23」にしておけば、通常のTELNETポートになります。

 

この状態で、Tera Term V5.4.0から繋いでみました。繋ぐだけなら問題ないのですが、オプションを適切に設定する必要があります。昨今はUTF-8が主流なので、デフォルトではエンコーディングが「UTF-8」になっています。しかしこのままでは、ログイン後にエディタを起動すると、エスケープシーケンスが正しく解釈されないようです。どうやらエスケープシーケンスをUTF-8として解釈しようとして失敗しているようでした。そこでエンコーディングを「EUC」にします。これでうまくいったようです。「sh term/full」の結果は、以下のようになりました。

Terminal: _TTA0:      Device_Type: VT300_Series  Owner: SYSTEM

   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:   24

Terminal Characteristics:
   Interactive        Echo               Type_ahead         No Escape
   No Hostsync        TTsync             Lowercase          Tab
   Wrap               Scope              No Remote          Eightbit
   Broadcast          No Readsync        No Form            Fulldup
   No Modem           No Local_echo      Autobaud           No Hangup
   No Brdcstmbx       No DMA             No Altypeahd       Set_speed
   No Commsync        Line Editing       Overstrike editing No Fallback
   No Dialup          No Secure server   No Disconnect      No Pasthru
   No Syspassword     SIXEL Graphics     Soft Characters    Printer port
   Numeric Keypad     ANSI_CRT           No Regis           No Block_mode
   Advanced_video     Edit_mode          DEC_CRT            DEC_CRT2
   DEC_CRT3           No DEC_CRT4        No DEC_CRT5        No Ansi_Color
   VMS Style Input

 

ついでにRLogin V2.30.2.1でも試してみます。こちらでもオプションを適切に変呼する必要がありました。Tera Termの経験をもとにエンコーディングを「EUC」にしてみましたが、それだけでは駄目でした。さらにエスケープシーケンス「8454」を「Reset(C1制御文字を処理する)」に変更します。当初は「Set(C1制御文字を無視する)」になっていたので、うまくいかなかったようです。「sh term/full」 の結果は、以下のようになりました。

 Terminal: _TTA1:      Device_Type: VT500_Series  Owner: _TTA1:
                                              Username: SYSTEM

   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:   24      

Terminal Characteristics:
   Interactive        Echo               Type_ahead         No Escape
   No Hostsync        TTsync             Lowercase          Tab
   Wrap               Scope              No Remote          Eightbit
   Broadcast          No Readsync        No Form            Fulldup
   No Modem           No Local_echo      Autobaud           No Hangup
   No Brdcstmbx       No DMA             No Altypeahd       Set_speed
   No Commsync        Line Editing       Overstrike editing No Fallback
   No Dialup          No Secure server   No Disconnect      No Pasthru
   No Syspassword     SIXEL Graphics     Soft Characters    Printer port
   Numeric Keypad     ANSI_CRT           Regis              No Block_mode
   Advanced_video     Edit_mode          DEC_CRT            DEC_CRT2
   DEC_CRT3           DEC_CRT4           DEC_CRT5           Ansi_Color
   VMS Style Input

 

双方を詳しく調べたわけではありませんが、Device_Typeが、Tera TermではVT300_Seriesなのに対して、RLoginではVT500_Seriesになっています。

 

ひとまずTera TermやRLoginから接続できるようになりました。これならDEC Writer IIよりも快適になるでしょう。しかし次の難問は、キーボード自体にあります。DEC LK201は、PCのキーボードとは違いがあります。しかも、エディタを使う上で、それが影響するのです。この問題をTera TermやRLoginで如何に解決するかが、課題になります。

2025-03-09

『仏教は、いかにして多様化したか』(世界史のリテラシー)は参考になる

NHK出版から数ヶ月おきに出版されている「世界史のリテラシー」シリーズの最新刊である『仏教は、いかにして多様化したか』を買って読んでみました。日本は(いちおう)仏教徒が多いことになっています。しかし現実としては、葬式を仏式でおこなうことが多いとか、お墓参りに行くことがあるという程度の話しです。例えばキリスト教徒がキリスト教の教えに親しんでいるのに比べると、日本人が仏教の教えというものを、どのくらい理解しているのか怪しいところです。

 

かく言う私自身も、仏教については、よくわかっていません。僅かに知っていることといえば、仏教はインドで成立したとか、中国から日本に渡来したとか、我が家の宗派が何であるとか程度です。さらに言えば、日本の仏教は、平安仏教(天台宗や真言宗)とか、鎌倉仏教(浄土宗、日蓮宗、禅宗など)は、仏教発祥のインドには無いようですし、日本に仏教が渡来した元である中国にだってあるようには見えません。そうならば日本の仏教とは何なのでしょうか。そもそもアジア各国に拡がっている仏教というのは、同じものなのでしょうか。そのような疑問をこれまで感じてきました。

 

本書は、仏教の成立から日本の仏教が多様化した現状までを、網羅的に記しています。それらを一つ一つ詳しく語ると、約150ページの本書では語りきれないでしょう。そういう意味で、概要を提示しているにすぎませんが、私の疑問は、ひとまず解消しました。

 

本書の「はじめに」では、次のように書かれています。

全四章を眺めてみると、古代インドでの仏教誕生から、二十一世紀の日本仏教までの「仏教通史」になっていることがおわかりでしょう。もちろん、限られた紙数で本当の仏教通史など書けるはずはなく、それはあくまで主要なトピックの数珠つなぎにすぎないのですが、それでも釈迦から現代日本に至る仏教の大きな流れを略図として理解していただくのには役立つものと考えています。

 

何事もそうですが、まず全体像を把握したうえで、個別に気になる点があれば詳細に入っていく方法があります。その一方で、個々の細部を語ることで、(運が良ければ)全体像が理解される筈というアプローチもあります。仏教については、これまで、細部を云々する情報が多く、それで結局全体像はどうなっているの?という点が疎かになっているきらいがありました。本書を読んだことで、細部が全体像の中に位置づけられたので、スッキリしました。

2025-03-08

Googleマップのスマホアプリにおけるタイムラインが壊れた

数年前から、Googleマップのスマホアプリでタイムラインを有効にしています。正直なところ、精度が酷く実用に耐えるのか疑わしいところですが、何もないよりはマシという感覚で使っています。

 

ところが、一昨日から突然「この日の訪問データはありません」とメッセージが出てくるようになりました。しかも数年分の全ての日において「この日の訪問データはありません」とメッセージが出てしまうのです。実際にデータが記録されていなかったわけではなく、(精度は悪くても)普通にタイムラインが記録されていたはずなのです。

 

たまたま調子が良くなかっただけかとも考えて、スマホを再起動させてみたりしましたが、現象は改善しませんでした。アプリに何かバグが入り込んでしまったのかもしれないので、そのうちに修正されるかもしれません。それが何時のことになるか分からないし、バグなのかすら不明なので、何か別の手を打ちたいところです。 


タイムラインは有効となっているのですが、ためしにいったん無効として、あらためて有効にしてみました。そうすると、過去のタイムラインが復活したようです。しかし一部に記録がおかしいところがありましたが、全ても確認したわけではありません。

 

ひとまず復旧したようなので、これで様子をみようと思います。そもそも、いったい何がどうなって、こうなってしまったのか、全くわかりません。今回のような問題が二度と起きてほしくありませんが、Googleマップのタイムラインは、精度が非常に悪いので、それを修正して欲しい気持ちもあります。

OpenVMS VAX V7.2インストール時にDECnet Phase IVを入れるか否か

simh V3.8-1のMicrosoft Windows用vax.exeを使用してOpenVMS VAXの環境を作ろうとしています。OS本体のインストールはできているのですが、simh側設定やOpenVMS側のインストールオプションなどをどのようにするか考えているところです。最終的な目標は、OpenVMS VAXの動作環境を作ってみることであって、そこで何か実用的な用途を期待しているわけではありません。

 

OpenVMS VAX V7.2をインストールする最中にオプション要素をインストールするか否かを選択しなければなりません。例えばDECwindowの要否を選択するのですが、GUI環境は無くて良いだろうと判断しています。その他には、DECnet-PlusやDECnet Phase IVの要否も選択しなければなりません。DECnetはPlusもPhase IVも不要という判断も考えられます。

 

そもそもDECnetを有効としたところで、通信相手が存在しないのです。20年ほど前であれば、LinuxにもDECnetのためのコードが入っていたそうですが、もう10年以上前に除去されてしまったそうです。DECnetの通信相手がいないなら、DECnetオプションは入れなくても良いとも考えられます。

 

そういうわけで、DECnet-PlusもDECnet Phase IVも不要としてOSをインストールしてみました。ところがOSを使ってみると予期しないエラーが出るのです。網羅的に確認したわけではないのですが、「license list」というコマンドを打つと次のようなエラーが出ます。

 %SMG-F-UNDTERNOS, undefined terminal - couldn't access system terminal table

 

試しにDECnet Phaase IVを有効にしてOSをインストールしてみて、同じコマンドを打ってみたら、エラーもなく正常に処理されました。これだけでは、OSインストール時にDECnetを有効とするか否かが原因だとは即断できませんが、DECnet-PlusもDECnet Phase IVも入れずにOpenVMS VAX V7.2をインストール完了させると、何やら不具合が出そうな予感がします。

 

DECnetは通信相手がいないので、正直なところインストールしたくありませんが、入れないと良くないことが置きそうなので、DECnet Phase IVを保険として入れておこうかと思います。

2025-03-05

LibreOffice CalcのCSV読込みに文字コード自動判別機能が追加された

ずいぶん以前よりMicrosoft Officeを使うのを止めて、LibreOfficeを利用しています。そのCalcにおいて、CSVファイルを読込む際に、CSVファイルの文字コードを指定しなければなりませんでした。UTF8なのかShiftJISなのか、その他なのかを適切に指定しないと、文字化けしてしまいます。

 

ところがLibreOffice 25.2.1.2では、文字コードの自動判別機能が追加されたようです。これまでは、UTF8だったりShiftJISだったりするのを、個別に手動で指定していましたが、「auto detect」ならば自動的に判別してくれます。とても便利です。

 

余談ですが、LibreOfficeは「無料のMicrosoft Office」ではないと思います。確かにLibreOfficeは無料で使えるし、MicrosoftOfficeで作成したファイルを読込めますが、それを完璧に再現できることを保証しているわけではありません。読込んだ情報は保たれますが、凝った書式は崩れてしまいます。雑誌などでは、「MicrosoftOfficeを止めて、LibreOfficeを使おう」のような記事を見かけます。これが間違っているわけではないと思いますが、MicrosoftOfficeとLibreOfficeが全く同じだと認識しているなら、それは違うでしょう。