caj ver. 1.04 指定された(シフトJIS)テキストを、オプションに従って全角←→半角変換 などを行う、フィルタ/コマンドです。 □ つかいかた usage> caj [-option(s)] file(s)... オプション、ファイルは複数指定可能です。 (配時のcaj.exe はbcc32のwildarg.obj, caj16.exe は LSI-C試食版で expand.objをリンクしてあるので、 MS-DOSの一般的なワイルドカード 機能 ? * が使えるはずです) オプションは、ファイルを処理する前に設定するので、ファイルの前後におい ても動作はかわりません。 ファイルが指定されないときは標準入力を行います。 □ オプション -h ヘルプ -? ヘルプ -j 全角を半角に変換します。-jpdak を指定したのと同じです -jp 全角記号を半角に変換します(空白も変換します...-epとちがう!) 記号は半角、全角で一対一に対応した変換を行います -jd 全角数字を半角に変換します -ja 全角アルファベットを半角にします -jn 全角カナ記号を半角に変換します -jk 全角カタカナを半角カナに変換します -jh 全角ひらがなを半角カナに変換します -js 全角記号を半角に変換するとき、全角空白を半角空白2文字に変換します -e 半角を全角に変換します。-epdakn を指定したのと同じです -ep 半角記号を全角に変換します(ただし、空白は変換しません...-jpと違う!) -ed 半角数字を全角に変換します -ea 半角アルファベットを全角に変換します -en 半角カナ記号を全角に変換します -ek 半角カナを全角カタカナに変換します -eh 半角カナを全角ひらがなに変換します -ek と -eh が同時に指定されたときは -ek が優先されます -es 半角空白を全角に変換します -eo 半角カナの全角化において、で'゙''゚'をたえず1文字として変換します (たとえば -ek で、'ダ' が 'ダ' とならず 'タ゛' となります) -jt 全角ひらがなをカタカナに変換します -jr 全角カタカナをひらがなに変換します -u 半角アルファベットを大文字にします -l 半角アルファベットを小文字にします -ju 全角アルファベットを大文字化します -jl 全角アルファベットを小文字化します -u,-l,-ju,-jl,-jt,-jr は、その他の変換が行われたあとに行います -y \ に対応する全角を¥にします -y- \ に対応する全角を\にします -y,-y- の指定のないばあいは、-y が指定されたことになります。 -cy 全角1文字の2バイト目が '\'である文字を探します。 このオプションが指定されると他のオプションは無視します。 -ck 全角文字のある行をさがします。 -o= 出力を標準出力のかわりにに出力します -o 指定された各ファイルの bakファイルを作り、結果をそれぞれ元のファイル名 で出力します。 ただし、標準入力のときは無効です オプションは '-' で始まる文字列で、-e,-j,-u,-l,-o はかならず分けて指 定しなければなりません。-uleo などと1つにまとめることはできません。 が、-jではじまるオプションと、-eではじまるオプションはそれぞれのうちで なら、一つにまとめることができます。-ep,-ea なら -epa というふうにでき ます。 □ 変換について オプションを見て、推測してやってください^^; □ 濁音、半濁音、カナ記号について 変換で、濁音(゛)・半濁音(゜)・長音符号(ー)・なか点(・)は、全角のば あい、カタカナの後ろにあればカタカナとして、ひらがなの後ろにあればひら がなとして、そうでなければカナ記号として扱います。また半角ならば、カナの 後ろにあればカナとして、そうでなければ カナ 記号として扱います。 caj -jk(全角カタカナの半角化)で、 "すたー・ウォーズ" なら "すたー・ウォーズ" に、 "スター・うぉーず" なら "スター・うぉーず" になります。 半角カナを全角に変換するばあい、濁音・半濁音付きの文字で全角に対応する 文字があれば、その全角文字に変換します。caj -ekで、'ダ' なら'ダ'という ふうになります。 また、全角を半角にするとき、濁音・半濁音文字はちゃんと分解して変換し ます。 caj -jkで 'ダ' なら' ダ' というふうにします。 □ 記号について 記号の変換は、以下のようになります(全角のコードはシフトJIS で表して います)。基本的に一対一に対応するようにしています。 (20) ←→   (8140) ! (21) ←→ ! (8149) " (22) ←→ ” (8168) # (23) ←→ # (8194) $ (24) ←→ $ (8190) % (25) ←→ % (8193) & (26) ←→ & (8195) ' (27) ←→ ’ (8166) ( (28) ←→ ( (8169) ) (29) ←→ ) (816a) * (2a) ←→ * (8196) + (2b) ←→ + (817b) , (2c) ←→ , (8143) - (2d) ←→ − (817c) . (2e) ←→ . (8144) / (2f) ←→ / (815e) : (3a) ←→ : (8146) ; (3b) ←→ ; (8147) < (3c) ←→ < (8183) = (3d) ←→ = (8181) > (3e) ←→ > (8184) ? (3f) ←→ ? (8148) @ (40) ←→ @ (8197) [ (5b) ←→ [ (816d) \ (5c) ←→ ¥ (818f) または \ (815f) ] (5d) ←→ ] (816e) ^ (5e) ←→ ^ (814f) _ (5f) ←→ _ (8151) ` (60) ←→ ‘ (8165) { (7b) ←→ { (816f) | (7c) ←→ | (8162) } (7d) ←→ } (8170) ~ (7e) ←→  ̄ (8150) 。 (a2) ←→ 。 (8142) 、 (a3) ←→ 、 (8141) ・ (a4) ←→ ・ (8145) ー (b0) ←→ ー (815b) ゚ (ee) ←→ ゜ (814b) ゙ (ef) ←→ ゛ (814a) □ バージョン遍歴 v1.00 1991/06/20 ・公開 ※ os9/09,ms-dos用 v1.01 1991/08/23 ・半角<==>全角関係のオプションを1つでも指定すると、無条件に全角数字が半 角に変換されてしまったのを修正。 v1.02 1992/10/25 ・全=>半で、’(8166h)が `(60h) に、‘(8165h)が '(27h) に、と変換が逆 になっていた。 ・全=>半で、|(8162h)が半角にできなかった. ・\ に対応する全角を ¥ か \ かを指定できるようにした v1.03 1995/12/30 ・ソースのos9/09対応部分を削除し、ANSI-Cスタイルに修正. ・-cy(全角 2バイト目の'\'チェック)を付加. v1.04 1999/12/04 ・-ck(全角文字のある行のチェック)を付加. □ おわりに ソースはたいていのCコンパイラでコンパイルできると思います。 同梱の実行ファイルは caj.exe (win32コンソール用) は bcc32 v5.5 で、 caj16.exe (16ビット dos用) は LSI-C v3.30c(試食版)で コンパイルしています. このプログラムのソースはいわゆるPDSです(なぜかというと一番最初の 公開時にそう宣言してあるから:-) (色々思いはあるが、PDSの無防備に付込まれる可能性は嫌だけど、万が一 にも独学や他のPDS や良心あるフリーソフトへの引用や参考になるかもしれ ないという可能性のほうが大事だなあ、と) と、例によってチェックは不十分です。 バグとかが見つかれば連絡してやってください(バグとってもらえるともっ とうれしいけど:) tenk* (M.Kitamura) NBB00541@nifty.ne.jp