^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^        タブ←→スペース双変換プログラム ”TAB2SP”                             #60 Oh!石 I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I^I 090909090909 はじめに  最近はREDAやEDC−Tのようにタブコード対応のアプリケーションが出てきま したが、WINER派の私としては使いづらくてなりません。タブ未対応のエディタで タブを含むテキストを呼び出しても、表示はされるもののエディットすることができま せん。ということで、タブをスペースに、また逆の変換を行うプログラムを作ってみま した。 090909090909 使い方  トランジェント・コマンドとして使用します。書式は以下のとおりです。 # TAB2SP:ファイル名/スイッチ       (ドライブ名はファイル名に含む)  スイッチには次の3種類があります。       /T・・・スペースをタブに変換します。       /S・・・タブをスペースに変換します。       /L・・・リテラル・モード。引用符を含むテキストを変換する時の動作を           決めます。  /T、/Sの後に数字を指定することにより、タブ量を変化させることができます(デフ ォルトは8)。また、このためにLスイッチはS・Tより前に置いてください。当然なが らSとTは同時に指定できません。  変換結果は指定したファイルの存在するドライブに生成されます。同時に、変換前の ファイルはバックアップファイルとして残されます。 090909090909 リテラル・モードについて  テキスト中にあるスペースだったらなんでもタブに変換していいはずはありません。 S−OSでエディタを使用してすることのほとんどは、なんらかの言語のソースリスト を作成することでしょう。それがアセンブラのリストだったとして、        DM "イ ロ ハ" という部分のスペース部分までタブに変換されてしまったらどうでしょうか。スペース の個数に意味があったとすれば、REDAでアセンブルすると正しく動作しないプログ ラムができあがるでしょう。(大雑把な意味での)圧縮を目的としてスペース→タブ変 換をするのならタブ→スペース変換すれば解決しますが、手間がかかります。REDA 等のエディタではこういう問題があるのです。  TAB2SPでは、/Lを指定せずにスペース→タブ変換をするとダブルクォーテー ション又はシングルクォーテーションでくくられた区間は変換しないようになっていま す。ただ、「くくられている」という判定はしていないので、ダブルクォーテーション 又はシングルクォーテーションに出会った後にもう一度出会うまでが変換しない区間に なります。もし一度しか現れなかった時は行末までかその区間になります。/Lを指定 すると、こういった「変換しない区間」は存在しなくなります。テキストに合わせて、 都合のいいほうを指定してください。 090909090909 プログラムについて  プログラムは、アセンブラで組んでみました。無駄な部分も多いかと思いますが、ま ともなコーディングもせずいきなりソースを打ち込んで作ったのでそんなもんです。使 用アセンブラはWZDです。従って、WLKも必要です。ソースは       TAB2SP.ASM(本体)       FILEIO.ASM の2本から成っていて、このうちFILEIO.ASMはWLKから抽出したファイル アクセスルーチンです。S−OSのファイル関係のサブルーチンはロード・セーブの為 のものなので、ファイル加工などの用途には不向きです。そういったことで、今回この ファイルアクセスルーチンを使用することで開発期間の短縮が図れました。 090909090909 最後に  若干急いで作ったので、ボロがそこそこあるかもしれませんが、勘弁してください( あんまりないと思うけど)。なお、拡張子がBAKのファイルを変換した結果は保証出 来ませんので、あらかじめ他の拡張子にリネームしてから変換してください。それと、 テンポラリファイルとして$$$$.$$$という名前を使用しますので、注意してく ださい。  なお、このプログラムはフリーソフトウェアとします。                        #60 大石 伸彰(Oh!石) (EOF)