こでは 1 つのファイルをコピーする方法と、複数のフ ァイルをあるディレクトリにコピーするための方法の 2 種 類が出力されました。 こで注目してはしいのは、オプシ ョンの r です。このオプションは 1 つのファイルをコピー する場合には使えす、ファイル群をディレクトリにコピー する場合にだけ使用することができます。 Usage 出力を見 ただけでこんなことまで分かるのです。 さて、 rm コマンドと cp コマンドの Usage 出力を見る とよく似ています。ただし、 rm では usage となっている のに、 cp では Usage と大文字で始まっています。これは どちらが正しいのでしようか。 UNIX のコマンドを 100 個ほど調べてみましたが、 Usage を用いるものと usage を用いるものははば半々の 割合でした。この書き方にはとくにきまりはなく、プログ ラムの作者が自由に書いているようです。 Usage 出力の作成 Usage と usage の違いはあまり気にしなくてもよいの ですが、その後ろの部分では守らなければならないきまり があります。、、こうしなけれはならない〃というようなもの ではなく、多くのプログラマーが従っているだけですが、 これらを参考にすると読みやすい Usage 出力が作成でき るので、以下に記しておきます。 ・引数などで複数指定可能なものは、 〃としてそれを 表す。ファイルなどの場合、 file のかわりに files とする こともある。 、、 [ 〃と〃で括った部分は省略可能である。おもにオプ ションなどを示す場合に用いられる。 ・オプションの指定時にまとめて指定できるもの ( ー ab な ど ) の場合、 1 つの [ ] のなかに並べる。 ・いくっかのオプションのどれか 1 つを指定することが可 能な場合、一で区切って指定できるものを並べる。 [ ] と ともに用いられることが多い。この一が省略されること もある。 ーで区切って並べる場合、かならす指定しなければいけ ないものは { } のあいだに書く。 { } のあいだのもので 1 文 字しか指定しない場合には一を省略することもある。 ・引数をともなうオプションの場合、 [ ] のなかにオプショ ンとその引数を表す文字列を書く。オプションのための 130 引数は、その内容が分かる単語を用いる。 ・空白をおかすにつなげて引数を指定するオプションの場 合、引数の先頭は大文字にする。 さらに細かい規則がありますが、 こに記した知識を活 用するとほとんどの Usage 出力を作ることができます。 それではいくっか例を挙げてみましよう。 ・オプションとして a 、 b 、 c をとるプログラム。それぞれ のオプションはまとめて指定することもできる。 Usage : comand C-abc] ・オプションとして a 、 b のどちらかをとり ( 指定しないこ とも可 ) 、ファイル名を引数としてとるもの。 Usage : comma-nd [-a] C-b] file この出力からは a または b のいすれか 1 つしか指定で きないということがよく分かりませんが、しかたがあり ませんね。 ・オプションとして a 、 b 、 c をとり、 c オプションには空 白で区切って引数を指定するもの。ファイル名の引数は ( 1 つ以上 ) 複数を指定できる。 Usage : command C-ab] C-C arg] file ・オプションとして 1 をとり、長さを指定する引数を空白 をおかすに指定できる。ファイル名の引数はいくつ指定 してもかまわない。 Usage : comand C-1Length] [file ・引数としてファイルをいくつかとるが、そのうち標準入 力のかわりに一を指定できる。 Usage : comand [file この場合、一という引数が Usage に出力されることはめ ったにありません。ファイルを表す引数のかわりに標準 入力を表す一が使えるのは当然と考えられているのでし よっ。 各種コマンドの Usage 出力は、書き方のとてもよいサ ンプルになります。しかし、どのようにしたら Usage 出 力が見られるのか分からないこともあるでしよう。このよ UNIX MAGAZINE 1991.6
2 5 6 7 8 10 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 } 43 44 132 9 char VOid VOid れた引数がどんなオプションなのかを判断する際に、認識 できないオプションは Usage 出力をおこない、コマンド の実行を停止してしまえはよいのです。コマンドによって こでの出力はオプションが間違っているという意味 は、 のメッセージを出力することもあります。 コマンドに対して必要な引数が与えられなかったときの 処理方法は、通常はオプションの解析を終えたあとに残っ ている引数を解析し、必要な数の引数が残っていれは正し いと判定します。 Usage 出力とはあまり関係ありませんが、引数として入 14 { flag-a, flag-b) ; % cat ーれ usage. c 4 #define TRUE ( ! FALSE) 3 #define FALSE ( 0 ) 1 #include く stdio . h> usage() ; process-job() ; .com/name ; 11 main(argc , 矼空 ) int char int char argc ; flag—a = FALSE, flag-b カファイルや出力ファイルが必要な場合、その値が指定さ れなかったときにはできるだけ標準入力や標準出力を用い るようにしてください。以前にも述べましたが、 UNIX の コマンドはデータの入出力先として標準入出力を使います。 プログラムを作成する場合には、できるだけ標準入出力も 扱えるようにしてください。 話が少しすれてしまいましたが、実際に Usage 出力を おこなう例を C 言語を用いて示してみましよう。この例は オプションとして a と b をとり、引数として文字列が 1 っ 必要なものです。 = FALSE ・ C om_name = * argv , while (--argc > の { while ( * + + p ) { default : break ; f1ag-b=1RUE; break ; f1ag-a=TRUE; case ) a switch (*p) { usage() ; } else { bre ; exit ( の ; process-job(*argv , usage() ; if (argc ! = VOid 45 usage ( ) UNIX MAGAZINE 1991.6
の使い方を出力します。、、ファイル名を入力してください〃 とか、、引数が違っています、訂正してくださいクとか煩わ しいことはいわすに、黙ってコマンドの実行を中止してく れるのです。 UNIX のコマンドたちは寡黙です。複数のコ マンドを組み合わせて使用する UNIX コマンドの特徴と して、処理に必要な情報をコマンドのなかから要求するよ りも引数として指定するということが挙げられます。その ほうがいろいろな使い方ができるのです。さて、このコマ ンドの使い方の出力は、 Usage 出力と呼ばれています。ま わりくどい説明よりも実際の例を挙げたほうがよく分かる でしよう。 usage : [-rif] file usage と始まっている行が出力されています。 rm コマ ンドは指定されたファイルを削除するためのコマンドです が、削除するためのファイルを何も指定しないと、さきほ どのような出力が得られます。これは、コマンド行として 指定されたものがコマンドとして実行できないか、意味の ないものであった場合に出力されます。この出力は、 「コマンドの使い方が間違っています。 rm コマンドは、コ マンド名の後ろに r 、 i 、 f というオプションをつけることが できますがこれは省略可能です。その後ろにはファイルを 1 つ以上指定しなけれはなりません」 という意味です。 この出力からはコマンドやオプションの意味などは何も 前回お約束したとおり、コマンドに対する引数がコマン 分かりませんが、コマンドの使い方に関しては十分な情報 ドの期待しているものと異なっているときに出力される です。より詳しい情報が必要なときにはマニュアルを参照 Usage 出力についてお話しします。またそれと関連して、 すればよいのです。重要なのは、コマンドの使用方法が間 正しくコマンドを実行できなかったことを知らせるための 違っていたこと、そしてどのように使えはよいかが分かる 方法も説明しましよう。 点です。 UNIX のコマンドの多くがこの Usage 出力をお こないます。 上に挙げた rm コマンドの Usage 出力は簡単でしたが、 Usage 出力 なかにはもっと複雑に出力するものもあります。今度は cp コマンドを見てみましよう。 必要な引数が与えられなかった場合、はとんどの UNIX コマンドは引数の入力を促すようなことはせす、コマンド % cp Usage: cp C-ip] fl f2; or: cp [ ーⅱア ] fl DZ—X 流プログラミング 8 今泉貴史 . fn d2 129 UNIX MAGAZINE 1991.6
LJN Ⅸ流プログラ com_name) ; ミング 8 46 { 48 49 } 50 51 52 53 54 55 { 56 57 58 } proces S void -job(str, a, b) fprintf (stderr, exit(l) ; "Usage : %s C-ab] string\n" char lnt a, b; printf ('targument is %s , -a is %s, -b is %s\n" str , このプログラムで実際に Usage 出力を出力するのは、 47 行目の fpr ⅲ tf 関数です。ここではコマンド名として com-name を使用していますが、これはプログラムの先 頭 ( 18 行目 ) でコマンド名自身が代入されています。つまり、 実行するときにコマンド名と置き換えられるのです。また この関数では exit 関数を呼び出していますが、これに関し ては後述します。 さて、この出力をおこなう usage 関数を呼び出している のが 31 行目と 39 行目です。 31 行目では、認識できないオ プションを検出したときに usage 関数を呼び出していま す。 39 行目では、オプションを解析したあとに残った引数 の数が 1 つ以外だったときに呼び出しています。このコマ ンドでは、引数として文字列 1 つだけを要求していますの で、複数の文字列が指定された場合や文字列がイ可も指定さ れなかった場合には、使用方法が誤っていることを示すた めに Usage 出力を出力するのです。 コマンド名の取得 さきはどの例では、コマンド名として argv [ 0 ] の値をそ のまま用いていました。作成したコマンドがコマンド検索 パスのなかにあり、コマンド名で指定できる場合はよいの ですが、コマンド名としてパス名を指定した場合には、コ マンド名を出力するはすがパス名を出力してしまいます。 % a. out Usage : a. out [—ab] string % . /a. out Usage : . /a. out C-ab] string さきほど作成した C 言語のプログラムの場合だけでなく、 シェルを用いてプログラムを作成したときにも同様な問題 UNIX MAGAZINE 1991.6 が生します。それでは、それぞれの言語を用いた場合のコ マンド名の取得方法についてお話ししましよう。 sh を用いる場合、コマンド名は $ 0 という変数の参照に よって得られます。この $ 0 という値は、コマンド行で指定 されたコマンド名が入っています。したがってこのまま使 用したのでは、パス名で指定された場合にはパス名そのも のが入ってしまいます。パス名からコマンド名自身を抜き 出すには basename というコマンドが使えます。次のよう に試してみてください。 % basename COIII COIII % basename /foo/baa.com com % basename ...com com お分かりいただけたでしようか。このように basename コマンドを使えは・、パス名からコマンド名だけを抜き出す ことができます。これを用いてさきほどと同し Usage 出 力を出力するには、 echo "Usage : ( basename $ 0 ( C-ab] string" 1 > & 2 とします。 $ 0 だけではなく、、 basename $ 0 〃を用いるこ とにより、コマンドのパス名でなくコマンド名自身を出力 するようになります。ここで、引数全体を引用符で括るこ とを忘れないでください。 [ ] で囲まれたものはシェルのメ タキャラクタとして判断されるため、正しい出力が得られ なくなってしまいます。 次は csh の番です。 csh でも sh と同様に basename コ マンドを使うことができます。しかし、はかのコマンドの 力を借りすに csh だけで同しことを実現することも可能 133
IJN Ⅸ流プログラ while ( (c = getchar() ) ! = EOF) putc (c , stderr) ; ミング 8 うなときは、 strings コマンドのノヾス名ー grep -i usage とすると、たいていは見ることができます。参考にしてみ てはいかがでしよう。 Usage 出力の方法 力に出力するプログラムを書くという方法があります。た ます。より進んだ解決策として、自分自身で標準ェラー出 パイプのなかを流れてしまうという困った状況だけは防げ く端末に出力することになりますが、エラーメッセージが とするものです。このようにすると標準ェラー出力ではな echo 文字列 > /dev/tty これは、 /dev/tty にリダイレクトするという方法を紹介しました。 csh の場合は標準工ラー出力には出力できませんから、 工ラー出力に対しておこなわれることになります。 レクトされます。したがって、 echo コマンドの出力は標準 文字列は、 1 〉 & 2 という部分で標準ェラー出力 ( 2 ) にリダイ とします。この echo コマンドで標準出力 ( 1 ) に出力された echo 文字列 1 > & 2 です。実際には、 の出力先をリダイレクトして標準ェラー出力に変えるだけ sh の場合には echo コマンドを用いて出力しますが、そ ておきましよう。 ては 1990 年 12 月号で説明しましたが、もう 1 度お話しし 味がありませんね。この標準ェラー出力の使用方法に関し 出力は一種のエラー出力ですから、標準出力に送っても意 する場合は、標準工ラー出力を利用してください。 Usage するための方法についてお話ししましよう 0Usage を出力 けたでしようか。次はプログラムのなかで Usage を出力 さて Usage 出力のメッセージの内容はお分かりいただ とえば次のようなプログラムを書き、 UNIX MÄGAZINE 1991.6 int C ; main() #include く stdio . h> % cat stderr. c これを stderr などという名前でコンパイルしておくので す。また、 sh プログラムを使っても実現することができ、 stderr echo 文字列ー して出力したい場合には、 といったプログラムを作成しておきます。標準ェラーに対 cat 1 > & 2 # ! /bin/sh % cat stderr 131 ンの解析をおこなうループのなかで判断できます。指定さ オプションが正しく与えられなかった場合は、オプショ が正しく与えられなかった場合です。 な引数が与えられなかった場合、もう 1 つは、オプション のケースが考えられます。 1 つは、コマンドに対して必要 を出せばよいのでしようか。これには大きく分けて 2 通り さて、プログラムのなかのどういう場面で Usage 出力 Usage 出力をおこなう場所 となります。 fprintf (stderr , 文字列 ) : います ) 。実際の使用方法は、 すにの値は stdio. h インクルードファイルで定義されて ラー出力に対して出力したいのですから、 stderr を渡しま どこに出力するのかを示す値を渡すのです。今回は標準ェ 数として stream 引数をとります。この stream 引数に 関数と同様の引数をとりますが、 printf 関数がとらない引 場合には fprintf 関数を使います。 fprintf 関数は printf 出力だけをおこないますので、標準ェラー出力に出力する 常 printf 関数を用います。 printf 関数は標準出力に対する C 言語によるプログラムで文字列を出力するときは、通 可能です。 ラムです。これを使えは標準ェラー出力に出力することが 文字を、そのまま標準ェラー出力に出力するだけのプログ などとします。このプログラムは標準入力から読み込んだ
グ / 991 年 5 月 1 発行 ( 回発行 ) 巻号通巻日召 3 9 月第三便物、可 クズジン 才ぞキを 特集スアバァユ尹の道 ( 2 ) ' 0 イ身、ネオ 9 接続 smoot ca 薊可レ ( ~ ・・コ MP ネットら一ク管理ツつレ ODaemons D ね 90 ス・セキ / 入円ん x プロトコの際 リ流プログラミノグ・・ Usage 出力
int int char * Char * int int int short int int int char * dev_t off_t char struct struct struct daddr_t blkaddr = 0 ; dfd dfpath fiename fsfd 1 level = NULL , logblksiz = 0 ; ofd ofpath ofsdev tnw / * プロックアドレス * / / * int character * / / * del ファイル記述子 * / = Ⅱ . L ; / * del ファイルのノくス名 * / ・ / * undelete するファイル * / / * ファイルシステムのファイル記述子 * / / * ループインデックス * / / * 間接レベル * / / * 論理プロックサイズ * / / * 読み取られた文字数 * / / * 書き込まれた文字数 * / / * 出力ファイル記述子 * / = NULL; / * 出力ファイルのパス名 * / / * 出力ファイルのシステムデハ・イス id * / / * 書き込まれた / シークされた合計文字数 * / fspathCPAN_MAX + 1 ; / * ファイルシステムのデパイスパス名 * / / * 削除されたファイル・レコード * / delfil 矼 ; / * スーノく filsys fs; ープロック * / / * 出力ファイルのステータス * / stat st ; / * コマンド行オプションと引数の処理 * / -argc; + + argv ; if (argc く 1 ) { / * ファイル名 * / fputs(USAGE, stderr) ; exit(EXIT_FAII. URE) ; filename = *argv; -argc; + + argv ; if (argc } else { / * 出力ファイルのノくス名 * / ーの { ofpath = NULL ・ ofpath = *argv; ¯argc; + + argv ; if (argc ! = の { fputs (USAGE , stderr) ; exit(EXIT_FAILURE) ; / * 削除されたファイルのパス名の取得 * / dfpath = getdfpath ( ) ; if (dfpath = NULL) { fputs(PROGNAME い $ HO ト旧 e Ⅱ V1 て 01 皿 e Ⅱ t variable not set. \Ⅱ" / * 削除されたファイルの探索 * / exit (EXIT_FAILURE) ; perror("opening del file") ; fprintf ( stderr , "DeIeted file %s not found. \n't if (errno = 盟 0 T ) { if (dfd = dfd = open(dfpath, O_RDONLY) ; / * 削除されたファイルのオープン * / exit (EXIT_FAILURE) ; stderr) ; nr = read(dfd, & 矼 , sizeof(df)) ; if ( 皿 = perror("readlng deleted record file") ; exit(EXIT_FAILURE) ; if ( 皿く sizeof(df)) { fprintf(stderr, "De1eted file %s not found. \n't , filename) ; exit (EXIT_FAILURE) ; (strncmp(df. filename , filename, sizeof(df. filename)) break ; if 116 / * 出力ファイルのオープン * / close(dfd) ; / * 削除されたファイルのクローズ * / filename) ; UNIX MAGAZINE 1991.6
UNiX UNIX REVIEW 誌提携 CONTENTS 91 / 6 MAGAZINE 特集 25 スーバーユーザーへの道 ( 2 ) 連載 61 UNIX Communication Notes NIS ① OSF/Motif のすべて UIL ( 2 ) 97 Daemons & Dragons セキュリティに関する工ビソード 1 図 LittIe Language on 入門 ( 4 ) 1 四 UN Ⅸ流フログラミング Usage 出力 1 てくてく TEX 相互参照 1 An lntroduction to X Window System X プロトコルの実際 151 UN Ⅸへの招待 UNIX のファイル構造 ( 2 ) 論文 72 インターネットへの接続 108 UNIX ファイルの復元 岡山聖彦、片山喜章、馬場健一 齊藤明紀・山口英 久保山正文 Rob KoIstad srekcah @ sra. CO. jp 今泉貴史 藤浦はる美 中村 坂本 文 Smoot CarI-MitcheII LyIe Frost ・表紙デサイン・甲斐みどり・表紙絵・守屋ー於
chown root del chmod 755 del chmod u + s del 実効ューザー id をスーパーユーザーのものにして実行 するようなプログラムを書くときは、とくに注意しなけれ はならない。そのプログラムはシステム全体にアクセスす ることが可能で、すべての制限はプログラム本体に明示的 にコーディングされていなければならない。ファイルに対 する権限のチェックは実効 id ではなく、実 id に対してお こなわなければならない。アクセス・システムコールはこ の目的のためだけに用意されている。 $ H 〇 ME /. del へのアクセス性についてもチェックが必 要である。というのは、ユーザーが自分の H 〇 ME 環境変 数を変更することを防ぐ手段はまったくないからである。 また、 $HOME/. del には、その所有者といえども書込み許 可があってはならない。そのファイルは del 以外に書き込 まれてはいけないからである。 $ H 〇 ME /. del が 1 プロックを超えて大きくなることに ついては、すこしばかり注意が必要だ。新しいプロックは、 ューサーが復元しようとしている削除されたはかりのファ イルから取られるかもしれないからである。これは、 $HOME/. del を定期的にパージするか、 del を変更して 1 プロック内で循環するようにしておけば避けられる。 リスト 3 は、 undel のリストである。このプログラムは、 削除されたファイルを実際に復元する。ファイルは別のフ ァイルシステムに復元しなければならない。さもないと、 #include く math. h> #include く stdio . h> #include く fcntl . h> リスト 3 undel プログラム #include "del . 足 #include #include #include #include #include #include #include "unixlib. h" #include " syscalls. h" く sys/stat. h> く sys/ino. h> く sys/filsys. h> く sys/param. h> く sys/types. h> #include く string > #include く stdlib. h> #include く limits. h> く errno . h> / * プログラム名 * / UNIX MAGAZINE 1991.6 int main(int argc, char *argv[J) char *b1kbufvCINDIRECT MAX + 1 ] ; / * 大域データ * / #define USAGE "usage: " PROGNAME " fi1e [outfile]\n' #define min(a,b) ( (a) く (b) ? (a) : (b)) #define "undel" UNIX ファイルの復元■ 復兀しようとしているファイル自体に上書きしてしまうか もしれないからである。 ファイルを復元するとき、復元しようとしているファイ ルが削除されてから、あるプロックが使用されたか否かを 知る方法はない。復元されたプロックの一部に、そのユー ザーがアクセスしてはならない別のファイルからのデータ を含んでいる、という可能性はおおいにある。このため、 undel は set-user-id ビットをセットしていない。 undel を実行できるのはスーバーユーザーになれるユーサーだけ なので、復元されたプロックをもとのユーザーに返す前に その内容を注意深く調べる必要がある。 del プログラムは rm の完全な代用品になる。しかし、フ ァイルはほかの方法でも削除できる。たとえば、 mv やシェ ルのリダイレクト演算子わ〃である。 del と同様の復元情 報を保存する新しい移動プログラムを書くこともできるが、 リダイレクトについては新しいシェルを書く以外、できる ことがあまりない。そこまでしたとしても、プログラムは unlink を直接呼び出してファイルを削除できる。これらす べての可能性に対応する唯一の方法は、 unlink をインタ ーセプトすることであろう。これは、オペレーティング・ システムのカーネル内部でのみなしうることである。 ・ LyIe Frost コンサルティングとソフトウェア開発の Citadel 社のオーナー UNIX multitasking(Computer Language 誌 1990 年 7 月号参照 ) UNIX REVIEW 1990 年 10 月号より 「 UNIX File Recovery 」 の筆者でもある。 / * プロックノヾッフア・べ クトル * / 115
ステータスとして扱われます。プログラムの制御が main 関数の終りまで到達すると自動的に main 関数を抜けま すが、この場合の exit ステータスは不定となってしまいま す。また、 exit 関数を引数を指定せすに呼び出した場合に も、その終了ステータスは不定となってしまいます。この ようなことがないように注意してください。 シェルの場合には exit 関数はありませんが、引数をとも なう exit コマンドがあります。この exit コマンドはシェル スクリプトの実行をそこで停止し、引数として与えられた 値をそのシェルプログラムの終了ステータスとするもので す。この値を指定しなかった場合には、最後に実行したコ マンドの終了ステータスがシェルプログラム自身の終了ス テータスとして用いられますので、注意してください。誤 った値を返さないように、プログラムのなかに明示的に書 き込んでおいたはうがいいでしよう。 C のプログラムでほかのプログラムを呼び出すことはあ まりありませんが、シェルプログラムはコマンドを呼び出 して処理をおこないます。呼び出したコマンドの終了ステ ータスが必要な場合、シェルではそれらを参照することが できます。 sh の場合は $ ? を、 csh の場合は $status を使っ てください。それぞれの変数は、直前のコマンドの終了ス テータスの値を示すようになっています。この変数の値が 0 ならば、直前のコマンドは正常終了していますし、 0 以外 の値を示していれは異常終了しているのです。最後に実行 したコマンドの終了ステータスを、本当にシェルプログラ ム自身の終了ステータスとしたいときは、この値を用いて 明示的に指定したほうがプログラムが見やすくなります。 今回は、コマンドに対する引数が正しく与えられなかっ たときに出力する Usage 出力と、コマンドの実行が正し くおこなわれたかどうかを示す exit ステータスに関して お話ししました。 Usage 出力は、コマンドの使用方法など を忘れてしまったときとても便利なので、一 h などのオプシ ョンで出力されるようにしてもいいでしよう。また exit ス テータスに関しては、シェルスクリプトだけでなく多くの コマンドがこの値を用いて実行の制御をしていますから、 これらの値を正しく設定することを忘れてはいけません。 さて次回は、ユーザーによるカスタマイズが可能なプロ グラムを作成する方法の 1 っとして、環境変数を用いたカ スタマイズに関してお話ししたいと思っています。 ( いまいすみ・たかし東京工業大学 ) UNIX MAGAZINE 1991.6 U-TERM N EO ー PC 98 田シリーズ用 EPSON- PC286 シリーズ用 ( MS ー DOS ノヾージョン 3 コ以降 ) 曰ト機能のし花 M 誕目 パソコンが UNIX WS の有能な端末に ■日本語機能 文字コードは、 JIS か MS 漢字コードの 2 種類から選 択。 JIS のモードでは、全ての文字コード拡張手順を サポート。 JIS 初期値と JIS 現在値を任意に変更でき るため、 EUC コードや DEC コードにも完全に対応。 ・グラフィック機能 テクトロニクス 4014 端末に準拠したグラフィックモ ード。カラーでの出力も可。 JIS と重複する画面消去コードを除き、 PC9801 と上 位互換を持つように拡張されている。ビジカレベル、 カーソルの形状変更、プリンクの有無などの制御コ ードを含む。これらは、ローカルに変更可。 ・通信機能 RS- 232C 拡張インタフェースポード 3 チャンネルの うち 1 チャンネルを選択使用。 75baud から、 19200baud ( クロック IOMHz 以上 ) まで 使用可、しかも、その高速処理は群を抜く。 フロー制御は XON / XOFF による制御法と信号法か らの選択。 ■ファイル転送機能 UNIX ホストと DOS ファイルの間でのテキストファ イル送受信が自在。コマンドは、 UNIX の cu と同様 の操作。 そ也多彩な機能満載、しかも低価格実現 価格 48 , 000 円 ( 消費税は別途 ) 開発及び販売 情報数理研究所 lnformation and Mathematical LaboratorY,lnc. 〒ロー東京都豊島区池袋 2 ー 437 池袋青柳ビル TEL. 03 ー 3590 ー 52 Ⅱ ( 代表 ) FAX. 03 ー 3590 ー 5353 資料請求 N 。 . OOD ・画面制御機能 135