気楽に LJNIX 、かっこよく X 0 図 13 printenv の実彳デ列 % printenv J SERVER=neptune PRI NTER=j lbp TEX_PRINTER=t0kjps PAGER=/usr/10ca1/bin/1ess SHELL=/bin/csh TZ=jst—9 SHLVL=2 TEXINPUTS=. : /home/local/lib/tex/localmacros : -/macros : /usr/local/lib/tex/localmacros : /usr/local/lib/ tex/macros: /usr/local/tex/macros : /usr/local/tex/localmacros HOME=/home/nadia/monkey PATH=/usr/10ca1/gnubin : /usr/local/bin : /usr/ucb : /usr/bin : /bin: /usr/bin/xll : /usr/local/tex : MANPATH=/usr/10ca1/man : /usr/local/man/cat : /usr/man: /usr/local/games TERMCAP=vk ー kterm ー kterm kanj i terminal emurator (X window system) : :hs :es :ts=\E[?%i%dT:fs=\E[?F :ds=\E C?H: :KJ:sc=\E7 :rc=\E8 : cs=\E[%i%d;%dr:TY=ascii : : co # 80 : li # 24 : b1=AG:1e=AH:ho=\E[H: : co # 80 : 1i # 65 : c1=\E [H\E [2J :bs : am : cm=\E [%i4m : ue=\E [m : :md=\E [lm: mr=\E C7m :me=\E [m : :ku=\EOA : kd=\EOB : kr=\EOC : k1=\EOD : kb=ÄH : : k1=\EOP : k2=\EOQ : k3=\EOR: k4=\EOS : ta=*l : pt : sf=\n : s r=\EM : : is=\E [r\E [m\E [ 2 :hs :ts=\E C?E\E[?%i%dT:fs=\E[?F:es :ds=\E J\E [H\E[?7h\EC?1 ;3;4;61:dL:DL=\E[%dM: IC=\E[%d@:DC=\E[%dP : TERM=kt erm USER=monkey HOSTTYPE=sparc DISPLAY=nadia : 0 . 0 図 14 cdpath の言聢 games now, here cd document home nadia monkey set cdpath=/home/nadia/monkey document % set history=50 % set savehist=30 また、 savehist で記億されるコマンドは ~/ . history というファイルに保存されています。 ・ prompt プロンプトを設定します。たとえは、 UNIX MAGAZINE 1992.6 、、ホスト名 % " と したければ次のようにします。 set prompt= Chostname い % , や ( の向きに注意してください。 こでは説明しま せんが、この特集カ鮗るころには分かると思います ( と、 信しています ) 。 ・ path 、 home 、 term これらはそれぞコマンドのサーチパス、ホームディ レクトリ、端末の種類を設定する変数です。この 3 つ の C シェル変数は環境変数と密接な関係があり、これ らを設定すると自重加勺に竟変数 PATH 、 HOME 、 TERM も設定されます。両方設定する手間が省けるのて便利で すね。実際の設定は、たとえは図 15 のようになります。 余談になりますが、この例でサーチパスの部分に重の ゲームが置いてある /usr/games が入っています。 れは、かって、私たちが UCB の M. K. McKusick さ ん (4.4BSD を作成中 ) の「 4.3BSD を越えて」と題 する寅を聴いたとき、「 /usr/games があらへんかっ たら、システムとはゆわれへんで」という言葉 7 に深く 7 寒祭には、もうすこしお上品な言粥貴いだったような気もしますが・・・ 45
図 16 C シェルの変数を見る % set argv cdpath /home/nadia/monkey /home /nad 土 a/monkey cwd filec history 50 /home/nadia/monkey home /usr/spool/mail/monkey mail noclobber (/usr/local/bin /usr/ucb /usr/bin /bin /usr/bin/xll path /usr/local/tex /usr/local/emacs/bin /usr/local/mh /usr/games ls —al prompt nadi a% savehist she 11 status term user /bin/csh 0 kt erm monke y 30 し、すでにあるコマンド名と同し別名を付けるような屯 ミスをしないよう、十分に注意してください。 参考までに、 MS-DOS をふだんからよく使う人向け ( ! ? ) の alias を紹介しておきましよう。ファイルの一覧を 表示させるとき、 ls の代わりに dir を使いたければ、次の ように設定するといいでしよう。 % alias dir ' ls \ ! * ' \ ! * は、、引数をとりますよ " という意味です。 /usr/lib/cshrc のなかの alias にはさまざまな成疋 が用意されていますが、注目すべきものに 現在設定されている別名を見たいときには、設定のとき と同じ alias コマンドを ( 引数を付けすに ) 実行します。 % alias cdl cls del dir egg env la 11 lr ls lS ! * emacs—egg printenv grep ! * history echo $cwd Cd ! * clear ; pwd ls al i as rm #alias mroe #a1 i as mkae ls ls —AR more make があります ( # で始まる行は、すべてコメントです ) 。 rm では、必要なファイルを不用意に消してしまわないよう -i オプションをつねに付けるようにしています。ま た、キーポードに慣れてプラインドタッチ ( キーポードを 見すにタイプすること ) ができるようになるとよく間違う のが、 2 番目と 3 番目です。この別名を見たとき、、誰 でも同しことするんやなあ " と妙に感心してしまいました。 皆さんも慣れてくると、きっと同じことをするようになる でしよっ 9 9 ls を sl とミスタイプすると、画面上を汽車が走る ( ! ! ) というのを見た ことがあります。 48 一度設定した別名を取り消すには、 unalias コマンド を使います。たとえば、 II を取り消したいときは、 % unalias 11 とします。 ali 機能も上手に使えばとても重宝しますが、あまり 調子に乗ってなんにでも別名を付けてしまうと、本当のコ マンドを忘れてしまったり、ほかの環竟でワークステーシ ョンを使うときにひどく苦労します。かっては私たちも嬉 しがって、大量の別名を設定していましたが、かえって苦 労した慮えがあります。なんでも、ほどはどがいいようで すれ UNIX MAGAZINE 1992.6
リスト 1 . cshrc の例 # set command search path set path= (/usr/ucb /usr/bin /bin /usr/bin/X11 \ /usr/local/bin /usr/emacs/bin /usr/local/tex set noclobber # set environment variables # set hostname for kana—kan engine setenv JSERVER neptune # set C—she11 variables history=50 set savehist=30 set xgnoreeof set filec set setenv EDITOR /usr/local/emacs/bin/emacs setenv PRINTER jlbp setenv MANPATH /usr/local/man : /usr/man # aliases i as cdl al i as cls al i as de 1 i as dir al i as al i as la al 土 as 11 i as lr al i as ls # set terminal type # set terminal type CRT stty crt 'history e cho $ cwd 1s' 'clear ; pvd' emacs—egg printenv ) grep # set erase character Ctr1—H stty erase # set k111 character Ctr1—U stty k 土 11 set cdpath=$HOME 、、もし余 端な知識ではおいそれと説明できません。今後、 裕があま " ご紹介したいと思っています。 最後に、・ 1 。 g 加と・ logout 刎列を挙げておきます。 ・・ logi Ⅱファイル」 # LOGIN file e ChO He110 , welcome to UNIX vorld. e C 五 0 erase IS e C 五 0 k 土 11 is -t.J ChO intr IS AC # end of LOGIN file ・・ 10g0 Ⅱ t ファイル」 # LOGOUT file clear echO logout form ' hostname ' ! # end of LOGOUT file alias alias このファイルを、 . cshrc のなかから source コマンド で評価すればいいのです。 . aliases ファイルが自分のホー ムディレクトリの下にあるとすると、次のようにします。 source ~ /. aliases この 1 行を . cshrc に書いておけば大丈夫です。 . cshrc の書き方にはさまざまなガ去があります。たと えば、ワークステーションのメーカーや、同しメーカーで も OS のバージョンが違う場合、コマンドなどのサーチ パスが異なることがあります。 そのような場合も 1 つの . cshrc ファイルで対応する ために、さまざまな去があります。興Ⅱ架いテーマなの で、ぜひこク寺集でもとりあげてみたいのですが、中途半 50 UNIX MAGAZINE 1992.6
気楽に LJN Ⅸ、かっこよく X 0 リスト 2 コマンド・サーチパス # set command search path # set binary path set BINPATH = (/usr/ucb /usr/bin /bin) # set 10Ca1 bin path set LBINPATH = (/usr/local/bin) # set X vindow path set XPATH = (/usr/bin/X11) # set TeX path set TEXPATH = (/usr/local/tex) # set Emacs path set EMACSPATH = (/usr/local/emacs/bin) # set path set path = ($BINPATH $LBINPATH $XPATH $TEXPATH $EMACSPATH . ) 漢字を使おう UNIX MAGAZINE 1992.6 ようになる " ことを目的としていますので、簡略な説明に す。また、今回は、とりあえす漢字交しりの文章カ町てる ク寺集では jserver 十 uum の組 , 迂を扱うことにしま これらのすべてについて説明するのは不可能なので、こ kinput2 などカげられます。 ラムです。こちらの代表選手としては、 uum 、 wnn 、 漢子に変換してちょうだい " とお願いしてくれるプログ 力するためのもので、かな漢字変換プログラムに対して、 また、 2. のフロントエンドはユーザーカ躾際に文字を入 どがあります。 グラムの代表的なものには、 jserver 、 iroha server な ションでも利用できるようになっています。この種のプロ ークステーションで動かしておけば、ほかのワークステー UNIX では、 1. のかな漢字変換プログラムは 1 台のワ 2. 文字を入力するためのフロントエンド 1. かな漢字変換をおこなうプログラム 漢字を入力するには、 2 つのプログラムが必要です。 使い方を説明していきます。 なのです。ここでは、漢字を入力するためのツールとその 日本語が扱えるようにしてくれた先人たち ( ! ) の努力の賜 カ硬えるようになったのは、 X やそのほかのプログラムで 前のワークステーションでは利用できませんでした。漢字 いまではごく当り前のように使っている漢字も、すこし とどめておきます。まことに申し訳ありませんが、もっと 知りたいという方は、周りの人に「 uum のドキュメント はどこにありますか」と訊いて、詳しい説明を読んでみて ください。 漢字に変換する ますは、 jserver が走っているワークステーションのホ スト名を調べなければなりません。このガ去は、 にいる先輩に訊いてください : ー ) ホスト名が分かったら、 竟変数 JSERVER にその値を設定します。やり方はもう 分かりますね ? この環境変数はめったに変えませんし、ロ グインのたびに設定するのは面倒ですから、 . cshrc のな かに書いておきましよう。 こまでくればあとは簡単です。まず、 kterm で uum と入力します。もし、そんなコマンドはあらへんで " と叱 られたら、コマンドのサーチパスを調べてください。 uum は /usr/local/bin に置いてあることが多いようです が、ほかのディレクトリにあるようならサーチパスに入れ なけれはなりません。 無事にコマンドかま行できると、次のようなメッセージ が表示されます。 nadia% uu.m 頻度ファイル ! /home/shinobu/guests/saru/Wn n/pubdic/kihon. frq" か無いよ。作る ? (Y/N) 上手にかな漢字変換をおこなうためには、どの漢字がど れくらいの頻度で扱われたかとか、ユーザーが新しく登 51
図 15 path 、 home 、 term の言伊」 % set path=(/usr/local/bin /usr/ucb /usr/bin /bin /usr/bin/xll /usr/local/tex /usr/local/emacs/bin /usr/local/mh /usr/games ・ ) % set home=/home/nadia/monkey % set term=kterm 感銘を受けたからです。そこで、パスのなかに入れてお くのか礼儀かな、なんて思ったのです : ー ) ・ lgnoreeof この変数の名前は、 ignore end of file" を略したもの で、その名のとおり Ctrl-D でログアウトしないように する変数です。これを設定しておくと、キーの押し間違 いで不用意にログアウトしなくなります。ログアウトす るには、 exit あるいは logout とタイプします。いわ ・ noclobber ば、安全装置です としておくと、 /home/nadia/monkey/document と % set cdpath=/home/nadia/monkey ください。たとえば、 する変数です。たいへん便利なので、ぜひ憶えておいて よく利用するディレクトリに、すぐに移動できるように ・ cdpath 一種ですれ ルを破壊する危険生カ觝くなります。これも安全装置の す。この変数を設定しておけば、誤って必要なファイ はメッセージを表示して実行を中止する " ということで 出力しようとするとき、存在するファイルに対する出力 すこし難しくいうなら、、、入出力の切替えでファイルに test: fi1e exists . % cat > test 次のような表示を出力して実行を中止します。 す。たとえは、 test というファイルがすでにある場合、 対して cat コマンドなどによる書込みができなくなりま この変数を設定しておくと、すでに存在するファイルに で、どこからでも一発で移動できます ( 図 14 ) 。 % cd document いうディレクトリに移るとき、 このように成疋しておくことによって、 /home/nadia/ ントディレクトリの下にあるディレクトリだけですが、 ふつう cd コマンドで移動できるディレクトリは、カレ 46 monkey の下にあるディレクトリも移動先の対象になり ます。日常よく使うディレクトリを設定しておくと重宝 します。 ・ filec この変数の名前は "file completion" を略したもので、 これを設定しておくとファイル名を途中まで入力した場 合、残りの部分を補完してくれます。 UNIX MAGAZINE 1992.6 ません。複数の一嚇甫があったり、一嚇甫が見当たらないと これで filec の仕事は終りかというと、そうではあり タイプしなはれ " と注意してくれます。 ピープ音を出して、、どれか分からんから、あとは自分で 分である、、 nagai-file" までを補完し、そこで、、ピッ " と イルカ吩かりません。そのようなときには、共通する部 この場合、 nag " とタイプしただけではどちらのファ nagai-file という 2 つのファイルがあったとします。 たとえば、同しディレクトリに nagai-filename と がある場合は補完してくれません。 下にあるファイルに限定されており、しかも複数の↑甫 ただし、補完の対象となるのはカレントディレクトリの るんか ! 」と歓声を上げたものです。 ときは、驚きと喜びのあまり「こんなにイリなもんがあ くれるのです。私たちがこの機能の存在を初めて知った nagai-filename と、ちゃんとしたファイル名になって ケープ ) キーを押します。するとどうでしよう。 more more nag くらいまでタイプしておいて、 Esc( 工ス と全部タイプするのは面倒ですね。そんなときは、 中身を見たいと思ったとき、、 more nagai-filename nagai—filename test % ls たとしましよう。 トリのなかに nagai-filename" というファイルがあっ とすればこの機能が使えます。たとえは、あるディレク % set filec
連載 /UNIX Communication Notes—O スグルーフ。のどれか 1 つでもパターンに合致すれば、 その comp ・ sys,comp ・ sys . ibm. pc. rt , ! comp. sys ・ ibm. pc 己事は第 1 フィールドのシステムに送られます。 というパターンリストは、 ニュースグループ・バターンは、次のように、、語 " をピ リオド (. ) でつないだものです。 ・ sys ・ hp comp comp ・ SYS . sun . ibm wordl . wo て d2. ord3 comp ・ SYS ・ sys. ibm. ps2 COmp ・ sys ・ ibm. pc. rt COmp 語はニュースグループの階層名、あるいは a11 です。 a11 は、ニュースグループのすべての階層名にマッチし ます。 a11 以外の語は、完全に同一のときだけマッチし ます。 ニュースグループ名の階層数がバターンの階層数より多 い場合には、パターンの末尾に . a11 を補って比較しま す。つまり、パターンとして言当主した階層までが合致、す - る かどうかを調べます。 たとえば、 a11. sources というパターンは、 comp . . tlIlIX comp . sources . mISC 一三ロ にマッチしますが、 comp. sys . ibm. pc comp ・ sys ・ ibm. pc. hardware comp ・ sys . ibm. pc ・ digest にはマッチしません。 前回、記事の配布範囲の制限に Distribution が使用で きると説明しました。第 2 フィールドの後半では、スラ ッシュに続けてこのシステムカ嘱する配布範囲を指定しま す。書き方は、ニュースグルーフ。のパターンリストと同し です。 なお、スラッシュ以降を省略すると、ニュースグルー プ・パターンリストを配布範囲パターンリストとして再度 評価します。また、 Distribution フィールドをもたない 己事の配布範囲は、 world とみなされます。 のどれにもマッチします。 さきほどの例の a11 , ! 10Ca1 は、 a11 , ! 10Ca1 / a11 , 前回までの動 ( 何寉認で使った sys には ME:a11 と書き !local として扱われます。 ました。これは、、、届いた記事はすべて受け入れる " とい NEWSCTL/sys の記述を簡単にすますコツは、 a11 う意味です。 ME 以タ ) 工ントリの第 2 フィールドに a11 と ! を活用することです。送るニュースグループを列 とだけ書くと、、届いた記事もここて投稿された記事もす 挙するよりは、送らないニュースグループを列挙するほう べて送る " という未になります。 カくなります。 パターンの先頭に ! を付けると、除タ村旨定になります。 たとえば浪速大学情報 : I : 物斗では、 naniwa で始まる大 たとえば、 学内のニュースグルーフ群と、 cs で始まる科内用のニ a11 , ! 10Ca1 ュースグルーフ叔そしてテスト用に local ニュースグ ニュース ループを扱っているとします。大学外のホスト manami というニュースグループ・パターンリストには、 とニュース記事をやりとりする場合、これらの学内 / ! 物斗 グループ local とその下位階層を除くすべてのニュースグ 内のものは出してはいけませんから、 ルーフ。がマッチします。 合致指定と除タ村旨定が対立した場合、より深い階層まで manami :a11,t0. ma れ ami, !naniwa, ! CS, ! 10Ca1 , \ 指定した合致指定があれはそオ功ゞマッチし、それ以外の場 ! to / a11 : 合には除タ村旨定が優先されます。たとえば、 と書きます。 comp . sources . games comp . . games fj . sources alt . sources 一三ロ 64 UNIX MAGAZINE 1992.6
DZ—X 流プログラミング この場合、ターゲットは wc ですが、インストラク ションでは wc コマンドを使ってソースファイルの大き さを計算しているだけで、 wc という名前のファイルは 作成していません。このようなターゲットのことを、、擬 似ターゲット " と呼びます。 この擬似ターゲットは、ソフトウェアの配付時に付 属している MakefiIe などでよく利用されています。よ く使われる擬似ターゲットには、次のようなものがあり ます。 必要なすべてのプログラムを作成 al 1 不要なファイルを削除 Clean install 作成したプログラムのインストール これらは、たとえば次のように使われます。 progl prog2 20 今泉貴史 a11 Clean —rm —f p て 0g1 p て 0g2 $ (OBJS) install : progl prog2 install —c progl /usr/local/bin install —c prog2 /usr/local/bin これらの擬似ターゲットは、どの Makefile に対し ても付けておくとよいでしよう。 a11 はこのディレク トリで何を作成するのかが分かりますし、 clean は不 要なファイルをまとめて消してしまうことができます。 このようなターゲットを作成しておけば、使いやすいプ ログラム (MakefiIe) になるでしよう。 ところで、 make はプログラムの作成だけに利用する ものではありません。たしかに、本来はプログラムを 楽に作成するために作られたシステムですが、実際に はもっと多様な場面で使えます。 たとえば、ルーチンワークを簡単に処理したいとき などによく利用されます。あるディレクトリのなかの 複数のファイルをまとめて編集する場合など、各ファ イルを別個に指定するのは面倒です。 1 度 MakefiIe に 書いておけは、適当な擬似ターゲットを指定して make を実行するだけで目的の操作がおこなえます。 また、ファイルをテキスト・フォーマッタにかけて PostScript 形式に変換し、そのファイルをプリンタに 出力するなどという操作も可能です。この場合も、ェ ラーがあればその時点で make は処理を中断しますか 3 月号から、プログラムを開発するときに利用する make というツールについてお話ししてきましたが、 make に関する説明はとりあえす今回で終りにしたい と思います。 今回は、これまでにとりあげなかった make の便利 な使い方を紹介します。 ファイルではないターゲット これは、インストラクションの実行によって作成さ れないものをターゲットとして指定することです。た とえば、次の例では“がそれにあたります。 : $(SRCS) wc $ (SRCS) WC 139 UNIX MAGAZINE 1992.6
連載 , ℃ ADVISOR— ルーフ。で処理できる。 タが複数あるとき、配列へのポインタを用いれは 1 つの したいデータが 2 次元グラフ上の点の集合で、そのデー int int void sets [X-DIM] [Y-DIM] [NUM-SETS] ; (*data) [X-DIM] [Y-DIM] ; process—data(int data CX—DIM] [Y—DIM] ) ; for (data = sets ; data く sets + NUM SETS; dat a + + ) process—data(*data) ; 112 ると、 ctime() はその設定内容に応して出力の形式を変 ションから setlocale() を呼び出して locale を疋す 作りだしたのは、このような理由からである。アプリケー 固有の日付や日該リの記法を規定する locale という概念を 日付や時刻の書式がまったく違う。 ANSI がその地域に にはとても分かりやすい。しかし、はかの多くの地域では 時分秒の区切りに使い、夏時間がある米国などに住む人 : を もちろんこの形式は、日付の前に月名を書き、 Wed Mar 2 13 : 19 : 51 AST 1964 う。この関数は、日付を次のような標準形で出力する。 ライプラリ関数 ctime() についてはよくご存しだろ strftime() ん使ってもかまわないだろう。 もっとも高い C の仕様に含まれているのだから、どんど いまやそれが ANSI 委員会に正式に認められ、樹生の このポインタを使うプログラマーもはとんどいなかった。 かったか、扱っていたとしても正しくはなかった。また かったので、多くのインプリメンターたちはこれを扱わな K&R が配列へのポインタについてなんら言及していな 以外の多くのコンパイラでもほは対応している。しかし、 うな配列へのポインタを正しく扱えるものもあり、それ 正直にいえば、現存するコンパイラの一部にはこのよ るということでもある。 sizeof に与える正しい値を、コンパイルの時点で得られ る。これはまた、前述の例で用いていた malloc() 中の は次の要素を得るためのポインタの増分値が分かってい data は 2 次元配列へのポインタなので、 + + 演算子 える。 1 。 cale の変更でもっともよく目にするのは、次の ようなものである。 set10ca1e(LC—ALL, きる新しい関数を付け加えた。次に示すのがその関数で してどのような形式で出力するのかをユーサーか指定で 定に合わせつつも、時刻のどの部分を表示するのか、そ ことである。このために ANSI は、現在の locale の設 ctime() の仕事は、かなり特殊な出力の要求に応しる る。 たはマシンごとに設疋されている標準の locale に変更す これは、すべての値についての locale を、ユーサーま ある。 size_t strftime ( char size_t const char *buf buf_size, *format , const struct tm *timeptr 出力バッファ buf には、 format 文字列と、 timeptr 構造体の時刻データ ( 時分秒などに分解されている ) から 作られたデータか格納される (struct tm 構造体へのポ インタは、関数 localtime ( ) か gmtime() を呼び出す ことで、 time-t 型の値から得られる ) 。 書式文字列 (format) の形式は printf() のものとよ く似ており、さまざまな制御が可能である。書式文字列 は、制御文字列か現れるまではそのまま出力にコピーされ る。すべての制御文字列は、寬こ % が 1 つ付けられ る (printf ( ) と同様に、、、 % " そのものが必なら、 % % とタイプすればよい ) 。 %a は省略された曜日名、 %A は完 全な曜日名、 %b は省略された月名、 %B は完全な月名、 %c は月日と日該リの完全な表現 (ctime ( ) の出力と同し ) 、 %d は月の初めからの日数 ( 01 ~ 31 ) 、 %H は 24 時間制の時間 ( 00 ~ 23 ) 、 %I は 12 時間制の時間 ( 01 ~ 12 ) 、 %j は年 の初めからの日数 ( 001 ~ 366 ) 、加は月 ( 01 ~ 12 ) 、 %M は分 ( 00 ~ 59 ) 、 %p は、、 AM / PM " の指定、 %s は秒 ( 00 ~ 59 ) 、 % U はその年の最初の日曜日を第 1 週の 1 日目と したときの週数 ( 00 ~ 53 ) 、加は日曜を 0 としたときの 週初めからの日数 ( 0 ~ 6 ) 、 %w はその年の最初の月曜日を UNIX MAGAZINE 1992.6
連載 , / Li Language SetDia10gEdit (Widget d, String str; Arg args [ 1 ] ; if (*value) { String value) XtSetArg(args [ 0 ] , XtNva1ue , &str) ; XtGetVa1ues (), args , 1 ) ; if (str) { XtSetArg (args [ 0 ] , XtNva1ue , value) ; XtSetVa1ues (), args , 1 ) ; # Makefi1e for xdp リスト 4 Makefile Apr ・ 1992 by srekcah@sra. co ・ JP SRC LIBS OBJS . C . 0 : xdp : c c CC —1Xaw —1Xt —1Xmu —1Xext ー 1X11 $ (SRC) /uperl. 0 xdialog—glue .0 xdialog ・ 0 $ (OBJS) $(LD) $(OBJS) $(LIBS) ー 0 xdp clean: rm —f * ~ * . 0 リスト 5 xdpbiff # ! /usr/local/bin/xdp # ノヾッケージのロード requlre "stat. p1" ・ # ノヾネノレの生成 # /usr/sp001/mai1/${USER} を 5 分ごとに監視して、新しいメールが ” I see " ) ; undef , "/usr/incIude/X11/bitmaps/maiIfuII" ” has a new mail . \Ⅱー $panel = &CreateDia10g($ENV{"USER"} # ある場合パネルを表示して知らせる。 $st—mtime—sv = 0 ; while ( 1 ) { &Stat ( "/usr/spool/mail/" $ENV{"USER"}) ; if ($st_atime く $st—mtime & & $st—mtime ! = $b = &ActivateDia10g($pane1, (e) ; $st_mtime—sv = $st—mtime ; s1eep(60*5) ; UNIX MAGAZINE 1992.6 $st_mtime—sv) { 105
ニューフェイスを プロにする、 ZZ ー XCO 日間、 O 一一日間。→ 誰か教えるのか、どのように指導すれは効果か得られるのか 技術者教育に頭を悩ます担当の方々に、 富士ゼロックス総合教育研究所はお応えします 連載 , ℃ ADVISOR 朝 第 1 週の 1 日目としたときの週数 ( 00 ~ 53 ) 、 %x はな の日付部分、 %x は %c の時刻部分、 %y は西暦の下 2 桁 ( 00 ~ 99 ) 、 %Y は 2002 のように世紀の部分も含む西暦、 %z は時間帯の名前で、時間帯が無効だったりその locale では意床がない場合は、なにも出力されない。 率直にいえば、制御文字の割当てにはかなり疑問を感じ る。なぜ % a カ日名を表すのか、また % 工が 12 時間制 の時間を表すのは理由があるのか。これらについては筆者 の考えのおよぶところではない。また、ときには大文字と 小文字を使って区別しているようだが、そうなっていない ものもある ( たとえば、 %H と % 工の組は % h と % H のほう カ随当だと思うし、似たよう列はほかにもある ) 。これ についてはどうかご自由に不平岡をいってもらいたい。 それによってこれらか改善されるとも思えないが・・・・ localeconv() という新しい関数を使うと、 locale に 依存する宣言の全データ構造を得るだけでなく、さらに多 くのことかできるのだが、詳しいことは次回以降のテーマ として残しておくことにしよう。 strftime ( ) 関数は、時刻の出力の整形についてのも っとも一般的な要求に対応するように作られている。い cale に応した整形のこれ以外の方法としては、すでに用 意されている適当な関数 (toupper() や printf()) を 使うしかない。そのほかの数多くの要求は、 ANSI C の 規格の守イ危囲から外れている。 「 New Toys From ANSI C 」 UNIX REVIEW 1991 年 7 月号より ◎ 1991 , UNIX REVIEW (). S. A. ) 13th AnnuaI TEX Users Group Meeting TEX in Context JuIy 27 ー 30 , 1992 Benson Hotel Port land , Oregon information, contact: TEXUsers Group POBox 9 Providence, RI 02940 USA TEL 十 1-401 ー 751 ー 7760 FAX 十 1 ー 401 ー 751 ー 1071 e-mail: tug@math. ams . com ミ - ー開催日 ・ C 言語入門 6 月 22 日 ( 月 ) ~ 25 日木 ・ C プロクラミンク 5 月 27 日水 ~ 29 日金 ・ライプラリ入門 6 月 9 日火 ~ 10 日 ( 水 ) ・プログラム開発ツール入門 6 月 11 日木 ~ 12 日金 ・オプジェクト指向入門 6 月 22 日 ( 月 ) ~ 23 日火 ・オプジェクト指向実用 6 月 24 日 ( 水 ) ・オプジェクト指向分析 5 月 20 日 ( 水 ) ~ 21 日木 ・オプジェクト指向設計 6 月 18 日木 ~ 19 日金 ・ small talk グラフィックスライプラリ 6 月 3 日水 ~ 4 日木 ・ Small talk-MVC 6 月 15 日 ( 月 ) ~ 17 日水 ・開催場所 ( 東京・新宿 ) ソフトウェア技術研修所セミナー・ルーム ※ UNIX は AT & T ( 米国電話電信会社 ) のベル研究所 が開発した OS て、す。 ※セミナーのお中し込み、お間い仆わせはド記へ。 FWI XEROX LEARNI NG INSTITUTE INC. 富士ゼロックス総合教育研究所 人材開発 3 部担当 : 〒 170 啝京都豊島区東池袋 3 ート 1 サンシャイン 60.17 階 電叮 03 ( 5391 ) 3311 FAX03 ( 5391 ) 2550 資料請求 N 。 . 113 UNIX MAGAZINE 1992.6