Japanized Gnu Awk (jgawk) 2.15.2 + 1.1 Copyright (C) 1989, 1991, 1992, Free Software Foundation. GNU awk 日本語対応版 ● jgawk は、GNU版awk version 2.15 patchlevel 2 を漢字対応にしたものです。 ● アーカイブの中身 copying - GNU GENERAL PUBLIC LICENSE readme.11 - 2.15.2 + 1.0からの変更点 readme.sj - このファイル changes - 旧版(2.11+3.0)からの主な変更点 jgawk.exe - MS-DOS用実行形式(Soft Float版) jgawk87i.bdf - IBM PC/AT用80x87版への差分 jgawk87n.bdf - NEC PC9801用80x87版への差分 jgawk - GO32 DosExtender用実行形式 jgawk.dif - ソースの差分 ● MS-DOS用の実行形式では、80x87を使用すると例外処理が機種依存となるた め、80x87をまったく使用しないSoft Float版と特定機種用の80x87を使用 する版とにわかれています。80x87を搭載していない、実行される機器に搭 載されているかどうかわからない、という方はjgawk.exeを使用してくださ い。80x87またはその互換チップを搭載している、あるいは487DXのように 80x87を内蔵している機器でだけ使用するという方で80x87版を使いたい場 合は、T.TANAKA(psh)氏のbdiffパッケージに含まれるbupdateコマンド (v1.23以上)を使用し、カレントディレクトリにjgawk.exeを置いて bupdate jgawk87i.bdf ;jgawk.exe ←IBM PC/AT(及び互換機)用 または bupdate jgawk87n.bdf ;jgawk.exe ←NEC PC9801(及び互換機)用 として jgawk87i.exe / jgawk87n.exe を作成してこれを使用してください。 80x87版の方は、80x87が搭載されていない環境では動作しませんが、 Soft Float版は80x87の有無に関らず動作します。 ● jgawkには、オリジナルのgawkに次のような変更が加えられています。 ◎ 正規表現等が漢字などの2バイト文字に対応しています。 正規表現の'.'は2バイト文字であるか1バイト文字であるかによら ず一文字にマッチしますし、 [ぁ-ん] ←ひらがな [aAaA] ←アルファベットの“エー” とほ+ ←“とほ”、“とほほ”、“とほほほほ”、など のようにマッチすることになります。 2バイト文字のコード体系はオプションによって、 日本語Shift JIS (-Wlang-sjis) 日本語EUC (-Wlang-euc) 韓国語EUC(KS C5601-1987) (-Wlang-kseuc) 中国語(台湾) TCA (-Wlang-tca) の4種類が指定できます。これらのオプションを指定しなかったとき のディフォルトはjgawk自身のコンパイル時に決定されており、 MS-DOS版では日本語Shift JISとなっています。 なお、"-Wlang-latin"を指定すると2バイト文字の解釈をしません。 識別子に2バイト文字を使うことはできません。 ◎ 組込み関数に以下のものを追加しました。 jindex(s, t) 文字列s中の文字列tの位置を返します. jindex("ABC", "C"); の値は3となります. jlength(s) 文字列sの文字数(バイト数ではない)を返します. jlength("ABC"); の値は3となります. jsubstr(s, i, n) 文字列sのi番目の文字から始まりn文字からなる部分文字列を返します. jsubstr("ABC", 3, 1); は"C"を返します. ◎ MS-DOS版では引数評価に次のような拡張がなされています。 * single quots('')で引数を括ることができます。 jgawk 'BEGIN{print "hello";}' ただし、>, |, < のようにcommand.comに解釈されてしまうような 文字を使うときはdouble quotsを使ってください。 jgawk '$1 > 100 {print}' ^ とすると、期待した動作をしてくれないばかりか"100"という名前 のファイルを作ってしまいます。 * ワイルドカードにcsh風のglobbingができます。 *.[ch] ... *.c および *.h jgawk.{man,doc,tex} ... jgawk.man, jgawk.doc, jgawk.tex ◎ MS-DOS版ではsystem()関数に次のような拡張がなされています。 * 戻り値が取得できます。ただし、command.comの内部コマンド の場合は常に 0 となります。 実行出来なかった場合 255 を返します。 * 出力ハンドルの切り替え。 これは [FD1]>&[FD2] のような構文で、プログラムが ファイルハンドル FD1 へ出力する内容を FD2 へりダイレクトします。 例えば system("jgawk 2>&1"); とすると、通常は標準エラー出力(2)へ出力されるjgawkのusageが 標準出力へ出されます。この機構はgetlineへのパイプにも有効で、 "jgawk 2>&1" | getline s; と書くこともできます。 ◎ MS-DOS版では環境変数AWKPATHに列挙するpathの区切りは';'です。 また、AWKPATHがsetされているとき、カレントディレクトリは 見ませんので、 set AWKPATH=/usr/lib/awk;. のように、(必要なら)AWKPATHに含めるようにしてください。 ● ソースプログラム ソースを再コンパイルするためには、オリジナル(2.15 patchlevel 2) とLarry Wall氏によるpatchコマンドが必要です。これらとjgawk.dif とからjgawkのソースを生成してください。 ソースプログラムは、Microsoft C/C++ 7.0 あるいは Microsoft Visual C++ v1.00、djgccでコンパイル可能です。MS-Cは日本語版で ある必要はありません。また、awk.yからawktab.cを生成するために BISONが必要です。jgawk.difにはawktab.cに対する差分は含まれて いません。 MS-Cに依存すると思われる変更箇所は #ifdef _MSC_VER 等で括られて います。他のコンパイラを使用されるときはこの部分をチェックしてく ださい。同じ処理が必要かもしれません(不必要かもしれません)。 添付のMS-C用Makefile(makefile.msc)では、NEC PC9801用80x87版を 作成する際にemoem.asmを使用しています。これは日本語版 MS-C(PC98, DOS/V)に付属しているもので80x87を使用する場合の各 機種依存部を記述したものです。 オリジナルソースに、以下のファイルが追加されています。 kanji.c: kanji.h: 漢字処理用の雑関数等 xargs.c MS-DOS用の引数評価ルーチン xsystem.c: MS-DOS用のsystem()の代替。戻り値を獲得する等のため。 missing.d/atof.c MS-Cの仕様が従来のawkの仕様となじまなかったため。 pc/getpid.c getpid()等 config/msc70 config/djgcc MS-C/djgcc用のconfiguration file config_h.msc config_h.dj MS-C/djgcc用のconfig.h makefile.msc makefile.dj MS-C/djgcc用のMakefile ● 参考文献 「プログラミング言語AWK」 A.V.Aho, B.W.Kernighan, P.J.Weinberger 著 足立高徳 訳 トッパン ISBN4-8101-8008-5 ¥3,400 「sed&awkプログラミング」 Dale Dougherty 著 福崎俊博 訳 アスキー出版局 ISBN4-7561-0091-0 ¥3,800 「日本語AWKプログラミングテクニック」 佐々木伸介 著 毎日コミュニケーションズ ISBN4-89563-165-6 ¥2,800 「入門JGAWK」 伊藤博康 著 エーアイ出版 ISBN4-87193-171-4 ¥2,800 「JGAWKスクリプト集」 伊藤博康 著 エーアイ出版 ISBN4-87193-229-X ¥3,800 「MS-DOSテキストデータ料理学」 SE編集部 翔泳社 ISBN4-915673-95-2 ¥1,500 「awkでプログラミング」 植村富士夫, 富永浩之 著 オーム社 ISBN4-274-06046-2 ¥2,800 「AWKを256倍使うための本」 志村拓/鷲北賢/西村克信 著 アスキー出版局 ¥1200 ----_--__---_-_-_-__--_-__-__---_-_----_--_-_---_---_----- 田中serow良知 mix: serow ascii-net: pcs19614 (serow)