まぁ、ご存知の通りOSによって改行コードは違うんですよね。
unix: LF (^J)
Windows:CRLF (^M^J)
Mac: CR (^M)
でも、本来の意味としては、LFはラインフィードだからラインプリンターの行を進めるだけの意味だし、CRは行を進めないで行の先頭に戻ることなんですよね。で、CR+LFがいわゆる改行になるわけです。(昔のキーボードでは復改なんて書いてあるのがありましたっけ。)
で、何が言いたいかというと、普通のテキストデータで上のコードを入れても、そのままの制御になってくれないんですよね。
まぁ、あたりまえっちゃあ、あたりまえなんですけど。
昔はメモ帳でunixのテキストもMacのテキストも開けなくて困ったものです。
ところが、これ、ツールによっては不思議な挙動をしたりします。
単純にsedとかtrとかで改行を置き換えてもそんなことはおきないのですけど、perlとかでMacのテキストを読み込んでファイルに吐き出そうとしたときに、行が全て上書きされてしまって珍妙な行が1行だけ出力される、なんてことがありました。多分、私の実装が悪いせいなんだと思いますけど。多分、1行読み込んだときに、行末のCRで行頭に戻り、そのまま次の行が読み込まれてしまうためにどんどん上書きされてしまうんでしょう。普通、1行読んでからchompで改行コードをはずすんですけど、そこまで到達しないと。うまくCRをデリミターとして認識してやらないといけないです。unixとかWindowsについてはちゃんと認識してくれるんですけど。これは多分、LFをデリミターとして認識してるからではないでしょうか。
何でこんなことを考えてるかというと、Fortranの例の1カラム目の制御コードの扱いのためなんです。
Fortranでは印字のときに1カラム目の文字で改行や改ページを制御してくれます。具体的には
write(*,1000)
write(*,2000)
write(*,3000)
1000 format(1h ,’here’)
2000 format(1h0,’ummm’)
3000 format(1h1,’there’)
4000 format(1h+,’ oh??’
と入力したときに、
here
(空行)
ummm
^Lthere oh??
みたいな感じになります。(ちゃんと空行が出るかなぁ?)
h記述子はホレリスといって、1hxとというのはhのあとの文字1個を出力するという意味になります。で、特に0,1,+などに特殊な意味があるわけです。(ちなみに、古いコードになるとホレリスばりばりで文字列を出力していて、ものすごく読みづらいです。Fortran 95以降ではobsoleteになっているはず。)
まぁ、古い時代の遺物なんですけど、昔の処理系ではこの1カラム目を読み取ってちゃんと改行処理や改ページ処理をしてくれました。そして、重ねがきもちゃんとやってくれたんです。
Fortranがunixに移植されたときは、そのままの文字として出力されるようになったんです。(20年前のHP-UXの場合は、機番6または*のときはちゃんとコードが反映されていましたが、ファイルをopenして使用するときは1カラム目がそのまま出力されていました。)
それでは困るということで、当時のunixにはasaというコマンドがあって、改行コードを変換してくれたものでした。
それが最近のLinuxとかにはないんですよね。
最初のころは、Cとかで1カラム目を上記の改行コードに置き換えることで対応できたんですけど、最近のLinuxではうまく重ね書きが表現できないんです。
sedのスクリプトを書いてみました。
s/^0/\n/;
s/^1/\f/;
s/^+/\r/;
でも、行の先頭に^Mは入るんですけど、重ね書きにはなってくれません。
ううむ。もしかして、上の変換の順番を変えるとうまくいったりして?
めまぐるしく更新が続いているSKKFEPに追従しております。
まぁ、色々と実験的な実装があるので、色々とあったりします。
時々、Google翻訳を使ってるときに、日本語入力が突然できなくなったり。そのときはすかさず^G。でも、IEだとお気に入りのサイドバーが出てしまうんですよね。アプリに制御を渡さないでSKKFEPの制御にする方法がるらしいのですが、どこにドキュメント化されてるんだろ。。(裏コードらしい。)
あと、この日記を書いてる間にはまったのですけど、上カーソルが効かなくなったりして。SKKFEPでは予測変換をしてくれていて、予測内容が出てきたところで.とか↓とかを入力すると確定するようになっています。どこかでこのカーソル処理が飲み込まれてしまっているのかなぁ?
中見のことはよく知らないので、対処方法はわからないのですけど。
さらにSKKGateとかSKKNetとかを、意味もなく立ち上げてるので、そこらへんが悪さしてるという可能性はあります。
はて?
もしかして、時々ネットにつながらなくなるのもこれらのせいだったりして??
まぁ、疑うのはやめましょう。
自分で実装したアプリだったら、まず自分を疑うのが鉄則ですけど、givenなものについては、まず自分の操作や設定をまず疑わなくては。
うーん…関東地方、地震が頻発してますね。
北海道のはびっくりしましたよ。茨城は昔から多いんですよね。