Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  ユーティリティ  >  旧システム体系ユーティリティ一覧  >  会話型テキストエディタ#TEDITの使い方

何かテキストを書いてみよう(2)

前半でコマンド入力部とは何かを、後半でパソコンのエディタを使用していた人が一番違和感を感じるであろう「タブ位置」とそれに関連するカーソルの動きを説明します。


前ページでテキスト表示部とコマンド入力部を行ったり来たりする方法を説明しました。

まずコマンド入力部が何なのかを解決しましょう。
会話型テキストエディタ#TEDITのコマンド入力部は、Windowsのメモ帳のメニュー(ファイル(F)、編集(E)と書いてある部分)に相当します。
テキスト表示部は、メモ帳のテキストを書く領域に相当します。

#TEDITとメモ帳の比較図

先ほどはコマンド入力部で「I」と入力してテキスト編集に入りました。「I」はWindowsのメニューの「ファイル(F)」−「新規(N)」とほぼ同じ意味ということになります。(正確には「I」の意味は違いますが、説明の都合上今はこのように考えてください。正しい意味は後で説明します。)
「Q」と入力してエディタを終了しましたが、これは「ファイル(F)」−「メモ帳の終了(X)」に相当するということになります。

当然ながら他にも「開く(O)」や「名前を付けて保存(A)」「切り取り(T)」、「コピー(C)」「検索(F)」などに相当するものもあります。これらの機能をコマンド入力部に文字列を入力して実行していくことになります。

面倒臭いと言えばそうなのですが、このエディタはマウスが使えないので仕方がないところです。しょせん本体におまけで付いてくるエディタなので、こんなものなのだと割り切りましょう。

ちなみにUNIXやLinuxのviというテキストエディタを使ったことのある人なら、qコマンドやIコマンドとだいたい同じと思ってもらえばいいです。


コマンド入力部の意味がわかったところで、次に行きましょう。

またエディタを起動して、テキストを入力する画面にしてください。



最初に「I」コマンドを実行すると文字を入力できる状態になります。この状態では次々に文字を入力したり新しく一番後ろに行を追加することはできますが、上下にカーソルを移動して別の行の文字を修正したりすることはできません。

「I」コマンドの本当の意味は行を「挿入」するコマンドです。
一番最初に「I」でテキスト入力を始めましたが、実は、これは「I」コマンドによって1行目をテキストに「挿入」したという意味になります。[ENTER]キーを押すことによって、2行目、3行目・・・が次々と挿入されたことになります。


一方[PF9]キーなどを押して、「I」コマンド状態から抜けて、もう一度[PF9]キーを押すと、カーソルをテキストの上下左右に移動して文字を修正したりできる状態になります。この状態をテキスト編集モードといいます。

テキスト表示部でカーソルをあちこちに移動させている時に気がつくと思いますが、矢印キーで左右に動かしていると、突然左又は右に動かなくなってしまうことがあるはずです。

画面は編集するテキストにCOBOLを選択した時のものですが、行の頭から7文字目辺りまで矢印キーでカーソルを移動すると、そこから右には行かなくなってしまうはずです。おまけにその位置まで矢印キーで移動してから文字を書き込もうとすると、文字も入力できずさらに右にも左にも移動できなくなってしまいます。(動かなくなったら、昔のキーボードなら[RESET]キー、Windowsのキーボードなら[ESC]キーを押してから、左にカーソルを移動させてください。たぶんそれで脱出できます。最悪エディタを強制終了する方法もあります。これは後で説明します。)



矢印キーで移動するのではなく、行の先頭から文字を入力していけばその位置より右に行くこともできます。



注意深い人ならば、[ENTER]キーを押した時に移動する先が、矢印キーを押していって止まる位置と同じことに気がつくかもしれません。



普段Windowsなどのテキストエディタを使っている人にとっては不可解な現象ですね。Windowsのエディタでこんな動きをするものはあまりないでしょう。



この秘密は画面の下側にあります。
下の図の赤丸で囲んだ位置に「*」マークがあります。矢印キーで移動して動かなくなる位置も、[ENTER]キーを押して移動する先も、この「*」マークの位置と一致します。



この「*」マークな何でしょう。なぜこのような位置にあるのでしょうか?

その秘密は、エディタを起動した時に指定したテキストのタイプにあります。今回はテキストのタイプにCOBOLを選択しています。
COBOLは(というよりもA-VXで扱っている85年度版の古いCOBOLは)正書法といって、1行が複数の領域に分けられていて、領域ごとに書けるものが決まっています。例えば頭から2文字目から命令を書いてもエラーになってしまいます。命令は8文字目から書き始めることになっています。(C言語などは領域が決まっていないのでどこにでも命令を書くことができますよね。)
正書法では、次のよう領域が分けられています。

領域名領域の位置
一連番号領域1文字目から6文字目まで
標識領域7文字目
A領域8文字目から11文字目まで
B領域12文字目から72文字目まで
残り領域73文字目から80文字目まで

一方「*」マークがある位置は7文字目、12文字目、73文字目です。それぞれ標識領域の先頭位置、B領域の先頭位置、残り領域の先頭位置にあたります。
要するに[ENTER]キーを押すと次々とそれぞれの領域の先頭に移動するので、COBOLのコーディングで楽なような仕組みになっている訳です。その割には矢印キーで移動すると途中で止まって不便というところもありますが、これは何でこうなっているのかは知りません。

カーソルを「*」マークの位置まで移動して、何か文字(AとかBとか)を入力すると、そこで右にも左にも移動できなくなってしまいますが、その時に画面右下をみると「OVERFLOW」とエラーメッセージが表示されていることがわかります。


この「OVERFLOW」のエラーの意味は、たいていの人が知っていると思いますが、例えば5桁の数字を入れる場所に6桁の数字を入れたりすると出るエラーです。
おそらくエディタでもこの入力システムを流用しているのでしょう。

ちなみに右下に「OVERFLOW」と出ているときに[RESET]キー(Windowsのキーボードでは、キー設定を変更していなければ[ESC]キー)を押せば、エラーを解除することができます。

不便ですね。


気を取り直して、この「*」マークについてもう少し説明しましょう。

「*」マークのある位置のことを「TAB位置」といいます。
今回の例では、エディタ起動時にCOBOLのソースプログラムを選択していたため、7文字目、12文字目、73文字目にTAB位置がありました。他のテキスト、例えばFORTRANやJS、PMを選ぶとそのテキストに適したTAB位置が設定されます。
なおこのTAB位置は変更することが可能です。TAB位置なんぞ要らない!という人なら全部無くしてしまうこともできます。

ある位置から[ENTER]キーや[SKIP]キーを押すと、その位置から右にある一番近いTAB位置にカーソルが移動します。それ以上右にTAB位置がなければ次の行に移動します。
[ENTER]キーと[SKIP]キーの動きの違いは[ENTER]キーが現在カーソル位置からTAB位置の間にある文字列を全部消して移動するのに対して、[SKIP]キーは消さずに移動するということです。
[BSKIP]キーは、[SKIP]キーの逆で、その位置から左にある一番近いTAB位置にカーソルを移動します。
[復帰改行]キーを押すとカーソルは次の行の先頭に移動します。

入力した文字は、[ENTER]キー、[上矢印]キー、[下矢印]キー、[SKIP]キー、[復帰改行]キー、[PF9]が押されたときに有効となります。例えば文字を修正するときに、単に文字を入力しただけではコンピュータ側は文字が修正されたと認識していません。文字を入力した後に[ENTER]キーなどを押してはじめて修正が反映されます。


もう1つTAB位置に関連して注意する点を挙げます。

このエディタもWindowsなどのエディタによくあるように、[削除]キー([Del]キー)で1文字削除、[挿入]キー([Ins]キー)で上書きモードと挿入モードの切り替えという動作を行います。

この位置で[削除]キーを押すと・・・


1文字削除されます。そして削除した文字より右側も文字が左に1文字移動します。
複数回[削除]キーを押せば、押した回数分文字が削除されます。


この状態で[挿入]キーを押すと


挿入モードになります。挿入モードになるとカーソルの形が「■(四角)」から「|(縦棒)」に変わります。


キー入力した文字がカーソルの位置に挿入され、カーソルより右側の文字は1文字ずつ左に移動します。
なお最初のモード(上書きモード)に戻すには、もう一回[挿入]キーを押します。


ここまではWindowsのエディタしか使ったことのない人も問題もなく理解できるはずです。ところが[削除]キー、[挿入]キーとTAB位置が関連すると話が難しくなります。

まず[削除]キーを例にして説明します。
下のように「FIILE-CONTROL」とIを間違えて1個多く打ってしまいました。「I」を1個削除しましょう。


削除したい文字のところまでカーソルを移動して、


[削除]キーを1回押したところ、下のようになぜか「FIL E-CONTROL.」と「L」と「E」の間に空白ができてしまいました。


よく見ると「E」が書いてある列はTAB位置です。このエディタはTAB位置でフィールドが分かれる(「FIIL」と「E-CONTROL」)ため、「FIIL」の部分は1個削除した分、「L」が左に移動して「FIL」となりました。ところが「E-CONTROL.」は、削除動作を行ったフィールドと異なるため、影響を受けず(左に移動せず)、1個空白ができてしまったのです。


[挿入]キーを押して挿入モードにした場合も同じです。
下のように「FILE-CONTROL.」と書くべきところを「FIE-CONTROL.」と間違えてしまったとします。


「L」の位置にカーソルを移動して、[挿入]キーを押して挿入モードにします。


「L」を書き加えたところ、「FILECONTROL」となり、「-」が消えてしまいました。
これもTAB位置を挟んで「FIE-」と「CONTROL」が2つのフィールドに分かれているのが原因です。「L」を挿入することによって「E-」が1文字ずつ右に移動します。一方「CONTROL」は別のフィールドなので、挿入の影響を受けません。このため、「-」が消えてしまったのです。


TAB位置さえ挟んでいなければ、[削除]も[挿入]も普通のWindowsのエディタと同じ動きをします。

TAB位置は、便利な点もありますが不便な点もあります。不満も多々ありますが、そういうものだと思ってあきらめましょう。