ファイル - みる会図書館


検索対象: 月刊 C MAGAZINE 1990年6月号
72件見つかりました。

1. 月刊 C MAGAZINE 1990年6月号

動させることを目的としたプロトタイプ版 て、あり , 将来 ( ライプラリの作成段階て、 ) 変 更されるて、あろうことをおことわりしてお きます。 また , 補助的なヘッダ ( たとえば < MATH. H > など ) や , 漢字処理用のヘッダ ( たとえば < jctype. h> など ) が増設される予定て、す。 プログラム編 [ 2 ] CPP : C Pre Processor CPP は , スタンドアローンのプリプロセ ッサて、す。 現在 , 市販されている C コンパイラバッケ ージの多くて、は , コンパイラの一部として プリプロセッサが内蔵されており , スタン ドアローンのプリプロセッサを付属させて ごく一部のものに限られている いるのは , ようて、す。て、は , なぜ , この Project PragmaC て、はスタンドアローンプリプロセッサを用 意するのて、しようか ? それはたんに , 予 定されているほかのユーティリティのため に必要だ , という単純な理由て、す。関数の クロスリファレンスを作成したり , 広域変 数のリストを作成したりする単純なユーテ ィリティて、あづても , その入力となるソー ステキストはプリプロセス処理が行われた ものて、ある必要があるからてす。 もちろん , スタンドアローンプリプロセ ッサには , 実用的また教育的な面て、の有効 性もあります。とくに複雑な条件設定など が行われているソースのデバッグ , 解析な どには役立っことて、しよう。 操作方法 CPP は以下に示すとおり , DOS のコマン ドラインからファイル名 ( パス名 ) を指定し て起動を行います。 cpp ファイル名 現在のバージョンて、は , オプションスイ ッチはありませんのて , ファイル名のみが 唯一のパラメータになります。 ただし , CPP の起動に際しては , ヘッダ ファイルが存在するディレクトリを指定す るための環境変数 PCINCLUDE が事前に設 定されていることが前提になります。 CPP のプログラムは , Tbl. 5 にまとめたフ ァイルから構成されています。以下にそれ らを簡単に説明します。 CPP. C プログラムの構成 保持するための ID が追加されています。 語句解析用構造体に行番号 , ファイル名を プリプロセッサの機能に合わせるために ほば同じ働きをする語句解析ルーチンて、す。 回使用した CCTOKEN. H, CCTOKEN ℃と CPTOKEN. H および CPTOKEN ℃は , 前 CPTOKEN . H CPTOKEN . C て、す。 クロ定義の登録 , 展開を行うサプルーチン CPMACRO. H および CPMACRO ℃は , マ CPMACRO. H CPMACRO. C ようにしてください い場合には , 標準出力をリダイレクトする なっています。処理結果をファイルにした 行って , 結果を標準出力に書き出すように ァイルを読み込み , プリプロセッサ処理を CPP は , コマンドラインて、指定されたフ スファイルて、す。 CPP ℃は , CPP プログラムのメインソー CCTYPE. H および CCTYPE. C は , C 言語 の構成文字を判定するための関数やマクロ を定義します。 . 内容は , 前回に使用したも のとまったく同一て、す。 マクロ展開について プリプロセッサを作成しようとする場合 にもっとも問題となるのは , 処理の流れ , とくにマクロ展開と # , # # などの演算子の評 価順序て、す。 プリプロセッサが処理すべき事項を大ま かなフェーズにわけると以下のようになる て、しよう。 * ディレクテイプ行の判定 / 実行 * マクロ展開 * # 演算子による文字列化 * # # 演算子による連結 * コメントの除去 とくに # と # # の評価順序は , 大きな問題と なります。以下のような定義 , 呼び出しが 行われた場合 , #define test(s) puts(#s## て、す ) test(C マガジン ) ; もし , プリプロセッサが , 「マクロ展開→ # # による連結→ # による文字列化」の順序て、評 価を行うとするならば , この例のテキスト は Fig. 2 ー A のように ( 正常に ) 展開されていく はずて、す。 しかし , 実際には , Fig. 2 ー B のように展開 する処理系が多い ( ほとんどの ) ようて、す。 この場合 , 処理系によっては , # # による 連結を行う段階て、エラーとするものもあり ますし , ただたんに無視してしまうものも CCTYPE. H CCTYPE. C TbI.5 CPP プログラム構成 CPP. C CPMACRO . H CPMACRO . C CPTOKEN. H CPTOKEN. C CCTYPE. H CCTYPE. C CPP メインプログラムソース マクロ処理ルーチン用へッダ マクロ処理ルーチンソース 語句解析ルーチン用へッダ C 文字タイプ判定ルーチンソース C 文字タイプ判定ルーチン用へッダ 語甸解析ルーチンソース プロジェクト PragmaC 45

2. 月刊 C MAGAZINE 1990年6月号

AccSVS C ー強力なテータベース機能を提供。 AccSYS ライプラリソース付 価格¥ 198 , 000 AccSys は、 C 言語プログラムで、テータベース処理を実現するための、 C 言語用関数ライプ ラリです。これまで C 言語での業務用アプリケーションの開発において最も労力を必要とし、 ネックになっていた旧 AM ファイルの構築や、リレーショナルアクセス等のテータベース処理 を か、 ACCSYS の登場により C 言語で簡単に実現出来るようになりました。また、 AccSYS 関 数によって構築される旧 AM ファイルは、既存の日 DB システム dBASE Ⅲ p 旧 s や dBASE Ⅳ と互換性を持っているため、 AccSys を使用する事によって、 dBASE システムと互換性の ある業務用アプリケーションプログラムの開発か行えます。 再販ライセンス付 C 言語で独自のテータベース操作を行う事により、より高速で柔軟な、使用目的に合った業務 用アプリケーション処理か可能になります。 >PC -98 田シリーズ >FM 日シリーズ >Panacom M シリーズ ・ LRU(Least 日 ecent 「 Y LJsed ) メモリ・マネージメント・テクニックによって、 >J ー 3100 シリーズ >IBM PS / 55 シリーズ >PC/AT より少ないメモリ容量で、より速いファイ朋 / O 操作を実現。 各社 AX 仕様マシン ・ d 日 ASE ーロ旧 s で作成された、既存テータファイル及びインテックスの読み出し、 更新及び追加が可能。 ・ d 日 ASE Ⅲロ旧 s 、 dBASE Ⅳ互換なテータファイル、インテックスファイル、メモ ファイルの各ファイル操作をサホート。 ユーサーアプリケーション ・ 1 つのファイルで、 47 個のインテックスか扱える、マルチインテックス MDX ファイ ル操作を追加サポート。 ・ MDX インテックスキー操作は昇順・降順の両方をサポート。 ・インテックスキーの重複か可能。 ・テータレコードの特定フィールドによるソーティングか可能。 ・最大 15 個のファイルを同時オープン可能。 ・テータファイルの仕様。レコードの最大数 : 10 億レコードの最大長 : 4000 ノヾ イト 1 レコードに含まれる最大フィールド数 : 255 フィールドフィールド ( 文 字型 ) の最大長 : 254 バイトフィールドの種類 . 文字型、数値型、日付型、論理型、 メモ型 ・テータファイル (. ロ日 F レ・インテックスファイル (. NDX ) ・メモファイル ()D 日 T ) 0 ・マルチインデンクスファイル (. MDX ) ライフラリに含まれる関数機能一覧 dBASE 互換 価格¥ 98 , 000 【対応 C 言語】 >Lattice C Ve 「 .4.1 >Mic 「 osoft C Ve 「 .5.1 3 ACCSYS の特長 アプリケーション構成図例 dBASE MPIUS dBASE Ⅳ ド AccSys 旧 AM ファイル 当 MDX ファイルのオープン 2. dXODen ・テータファイル ( DBF ) 期作関数 9. dND 「 vkey 前のキーとレコード番号の取得 3.dXclose MDX ファイルのクローズ D 日 F ファイルのクリエイト 田 . dNCU 「 key l. dDc 「 eat 現在のキーとレコード番号の取得 D 日 F ファイルのオープン 4. dXbuffS MDX ファイルが使用するメモリサイズの算出 インデックスのリワインド 2.0D0 ロ e ロ Ⅱ . dN 「 ewind 5. dXactidx に dNfo 「 w 「 0 3. dDclose D 日 F ファイルのクローズ MDX ファイル中のインテックスをアクテイプにする インデックスを進める 6. dXdeaidX MDX ファイル中のインテックスを非アクテイプ ロ . dNflusn 4 dDöLJffS D 日 F ファイルへ割り当てるメモリサイスの算出 NDX ファイルのバッフアのフラッシュ 5. dDflush バッフア内容のはき出し にする キーの長さの取得 ld. dNkeyIen 7. dXdXidxbuf インデックスをアクティフにする時必要とするメ テータレコードの追加 6.0Da0ロ「 ec キーの型の取得 15.dNkeytYD モリの大きさの算出 7. dDins 「 ec テータレコートの挿入 キー項目の長さの取得 16.dNexDlen & dXDIJtkey インデックスへのキーの挿入 8. dDsize レコード数の収得 キー項目の取得 リ . dNexD 「 レコードの読み出し 9. dX 「 mkey 9. dDget 「 ec インデックスからのキーの削除 空の NDX ファイルの作成 18.dNc00Y レコードのアップデート 川 . dX 「 mtay 田 . dD 凵ロ朝「 ec MDX からのタクの削除 インデックスの作成 19.dNindex II.dXget 「 no テータ削除マークを付ける キーからのレコード番号の取得 Ⅱ . CDcelrec ・ユーティリティ関数 l?.dXflush にロD 「 clrec 削除データの復旧 MDX ファイルバッフアのフラッシュ 整数から、日付フィールドへの変換 l. dU3itOdf 13.dXnxtkey 次のキーとレコート番号の取得 13,dD 「 m 「 ex テータの削除 整数から日付キーへの変換 巳 dlJ3itOdk 14.dXorvkey 前のキーとレコード番号の取得 は dD ↑に no フィールド番号からのフィールトデ - タの収得 アスキーコードから文字フィールドへの変換 3. dIJatocf 15.dXCU 「 key フィールド名からのフィールドデータの収得 現在のキ - とレコート番号の取得 15.dDfldnm アスキーコードから数値フィールドへの変換 4 dUatonf 五0X 「 ewind レコード長の収得 インテックスのリワインド 旧0D 「 eclen 5. dlJdft03i 日付フィールドから整数への変換 17.dXfo 「 w 「 d け . dDfifields ーレコードのフィールド数の収得 インテックスを進める 日付キーから整数への変換 6. dlJdkt03i 田 . dXex ロ n テータ構造が同様な、テータファイルの作成 タク名からのイッテックスの項目の長さの取得 田 . dDco ロ y た dUdftOdk 日付フィールドから日付キーへの変換 は dXe ス D 「 タク名からのインテックスの頃目の取得 19.dDso 「 t テータファイルのソート 8. dUdtonf 浮動小数から数値フィールドへの変換 20. dXkeytYD 20. dDaoa 「 t MDX ファイルと D 日 F ファイルを分離する キー型の取得 9. dlJdtonk 浮動小数から数値キーへの変換 DBF ファイルの最終アップテート日付の収得 円 . dXkeylen キーの長さの取得 田 . dDdate ファイ八名の編集 田 . dIJexonm 22. dXtags DBF ファイルのモートの変更 MDX ファイルのインテックスとタク数の取得 22. dDchmod II.dCJinitmf メモ、フィールドの初期化 23.dXIistag DBF ファイルのモードとステータスの収得 タグ・リストの表示 23 心 Dmode 肥 . dIJ aD うるう年のチェック 24℃XS0 「 tag 24. dD 「 ecsta DBF ファイルのステータスの収得 リートしたタク・リストの表示 13.dUnftod 数値フィールドから浮動小数への変換 25. dXCODY 空の MDX ファイルの作成 ・メモファイル ( D 日 T ) 操作関数 数値フィールドからキーへの変換 14.dlJnftonk 26.dXindex インテックスの作成 l.dTc 「 eat D 日 T ファイルのクリエイト 15. dUnktoa 数値キーからアスキーへの変換 27. dXezindex 単一フィールドからのインテックスの作成 2. 朝 TO ロ en DBT ファイルのオープン 数値キーから浮動小数への変痍 16.dIJnktOd ・インテックスファイル ( NDX ) 操作関数 3:dTclose D 日 T ファイルのクロース 今日の日付を得る 17 ℃ lJtOday I. dNc 「 eat 4. dTnewmm 新しいメモの登録 NDX ファイルの作成 ・ dBASE Ⅲロ旧 s 用メモファイル ( D 日 T ) 操作関数 2. dNODen NDX ファイルのオープン 5. dTaddmm メモ情報の追加 I. dTc 「 eat3 dBASE Ⅲロ旧 s のメモファイルの作成 3. dNclose 6. dTuDdmm メモ情報のアップテート NDX ファイルのクローズ 2. 0T0 ロ en3 dBASE Ⅲ D 旧 s のメモファイルのオープン 4 dNbuffs NDX ファイルのオープンに必要なメモリの大き 7. dTgetmm メモ情報の収得 3. dTclose3 dBASE Ⅲ 0 旧 s のメモファイルのクローズ 8. dTmemosz メモサイズの収得 さの算出 4. dTDLJtmm3 メモの挿入 5. dNDutkey キーの挿入 9. dTchkmm メモフィールドのチェック 5. dTgetmm3 メモの取得 6. dN 「 mkey キーの削除 田 . dTmemuseD 日 T ファイル操作て必要なメモリ量の収得 6. dTmemsz3 メモの大きさの取得 7. dNget 「 no ・マルチインテックスファイル ( MDX ) 操作関数 キーからのレコード番号の取得 8. dNnxtkey 次のキーとレコード番号の取得 I.dXadatag MDX ファイルの作成・タグの追加 4

3. 月刊 C MAGAZINE 1990年6月号

おもしろ , まじめソフト 2 本 野口雄平 5 月といえば , 下期予算の時期て、す。私の 会社て、はなんと , NeXT を予算計上してし まいました。何に使うのて、しようかね ? ま あ , いろいろ遊べるてしようけど , 実用に はなりませんね。私はまだペーベーなのて、 よくわかりませんが , 会社というところに は予算を通すコツがあるようて、す。直接利 益に結びつかないものや当面役には立たな いものの予算をいかに通すか。よーく研究 して , ほしいものを買ってもらいましよう ( とりあえず私は , 孤立していてかわいそう な NEWS と SPARC をネットワークにつなげ る予算がほしいっ / ) 。 前置きとは何の関係もなく , 今月は 2 本の フリーソフトウェアを紹介します。最近フ リーソフトウェアの増え方が速いような気 がします。いいものは見逃したくないし , かといって全部ダウンロードしていると , とんて、もなく回線料がかかる。困ったなあ こういうデータベースがほしかったんて、 す。実はどういうわけか , 私は 80 枚ものデ ータフロッヒ。ーを管理していまして , はっ きりいってワヤヤになりかけていました。 すべてのフロッヒ。ーにはシーケンシャル番 号とポリュームラベルをつけて , ファイル 印刷のときは必ずフッタにラベルとファイ ル名を入れるようにしていましたが , そろ そろ限界に近づいていたのてす。消さずに 更新しつづけるがゆえ , 日々増えつづける フロッピーディスクファイルをいかに管理 フロッピーティスク管理ソフト 「ぼんすく佐助」 作者 : ばん州ファイル管理共同組合 ネット : アスキーネット pcs ほか ファイル名 : PONSK021. 旧 H 尾 36 CMAGAZINE 19 6 するか ? しかしこのツールがあれば一気 に解決て、す。 配布ファイルは ish と LHarc て、圧縮されて います。解凍すると , 実行ファイルとマニ ュアルが出てきます。実行ファイル PONSK. COM を次のように起動します。 A> PONSK [/datapath] datapath はデータベースをおくパスて、 , 環 境変数 PONSK にセットすることもて、きま す。指定しないとカレントディスクのルー トディレクトリになります。 PONSK は起動すると , 一種の PONSK シ ェルのようになり , 、、 P > 〃というプロンプ トを表示します。ここて、 PONSK のコマンド を入力して , データベースを操作します。 シェル状なのて、 , DOS コマンドもメモリ の許すかぎり実行て、きます ( メモリ使用量は 98554 バイト ) 。基本的な使い方は以下のよ うになります ( 以下一一 - は , 私のひとり言て、 P>ENTRY [d] d ドライプをデータベースに登録する。フ ロッヒ。ーディスクはポリュームラベルによ って識別されるのて、 , ラベルの重複は許さ れない。ラベルがないときはその時点て、登 録を要求してくる。ラベルの変更はコマン ド VOLUME て、も可能 ( 80 枚全部 , 一気 に登録しちゃった。同じファイル名があっ てもだいじようぶだよ ) 。 P>SHOW 現在データベースに登録されているポリ ュームラベルを表示する ( ラベルを統 一的につけたから , ウックシイ ) 。 P>FIND CC/F [filename]] C/D Cdi rectory]] [/v [volume]]] target target を検索する。オプションをつけれ ば , 絞り込んて、検索がて、きる otarget には MS ー DOS 用の * クつ〃と [ A ー Z ] ( A から Z の文 字 ) などのワイルドカードが使える ( ーおっ と , い一かげんな記憶て、も検索て、きるぜ ) 。 P> 凵 ST CC/F [filename]] C/D [di 「 ectory]] C/v CvoIume]]) [target] FIND に準じて target を検索し , 最初に 致したもの以降を表示する ( ーーーファイル にリダイレクションして , ファイルリスト も作成て、きるよ ) 。 P>QUIT PONSK を終了する ( ご苦労さま ) 。 基本的なコマンドだけを紹介しましたが , このほかにもデータベースにコメントをつ けたり , ヘルプを出す機能などがあります。 私はこのツールには今後も期待しています ( ーーーあのお作者さん , もしよかったら , 太郎のファイル見出しをコメントに自動的 に取り込むようなパッチをあててもらえま せんか ? ) 。 使用可能システムは PC ー 9801 , MS-DOS Ver 3. x て、す。実行ファイルは TurboC Ver. 1.5 て、コンパイルされ , H&A 社の B- 意味なんて、しようかね ? ところて、 , ほ。んすく佐助って , しています。 PLUS というファイル検索モジュールを使用 どういう 作 バチスロシミュレータ 「リバティベルⅣ」 者 : SARNIN さん ( アスキーネット pcs : PCS00445 (SARNIN), PC- VAN : AWA80481 , NIFTY- Serve : PDE00425 ) ネット : アスキーネット pcs ・ acs, PC- VAN, NlFTY-Serve ファイル名 : L 旧 . COM パチスロやったことあります ? 18 歳未 満はて、きませんけど , これってけっこうは まるんて、すよね。私なんぞいくらつぎ込ん だことやら・・

4. 月刊 C MAGAZINE 1990年6月号

[ 400 * 100 ] ; とするとエラーに なるのはなぜでしようか ? 0 あるファイルが , テキストフ ァイルであるかバイナリファイル であるかを判別するには , どのよ うにすればよいでしようか ? A MS-DOS< は , テキストファ イルかバイナリファイルかを区別 する属性は用意されていません。 これを判別するには , 実際にファ イルをいくらか読み込んてみて , その内容て判断したり (List1), フ ァイル名の拡張子などて判断する 方法とがあります (List2)0 ただし , いずれの方法ても両者 の内容を完全に区別てきるわけて はありませんのて , 注意してくだ さい (ListI, List2 は , それぞれコ マンドラインて指定されたファイ ル名について判別を行います ) 。 Q&A 0 BGI グラフィックスを使 0 てい ますが , setbkcolor を指定すると 黒で描画することができなくなり ます。 A バックグラウンドカラーのノヾ レット番号は , つねに 0 てす。 setbk COIO 「は , パレット番号 0 が表示する 色を変史しているだけて , バック グラウンドて、使われるパレット番 り・を変更するわけてはありません。 ほかの色を setrgbpalette などを 使って , 黒 ( R = 0 , G=O, B = のを 表示させるように変更するか , set bkcolo 「を使わずにプログラミング するようにしてください 150 CMAGAZINE 19 6 ホーランドジャパン 0 「 m 面 on from (ompiler ma 「 5 ". DOC") = 0 28 : } Turbo C 2.0 0 配列を定義するときに , char array [ 40000 ] ; という表現は受 け入れられるのに , char array A 400 も 100 も正数 (signed int) てすが , これらの乗算結果 40000 は signed int て、はオーパフローしてし ファイル中を調べバイナリかテキストか判別するプログラム List 1 3 : main(int argc, char **arg の 2 : 1 : #include く stdio. h> 5 : 6 : 7 : 8 : 9 : 12 : 20 : 21 : 22 : 23 : 24 : 25 : char buf [ 256 ] : i nt i , n, bt : FILE *fp; whi le (--argc) { if ((fp = fopen(* 十十 argv, perror(argv[l]) : exit(l); n = fread(buf, 1 , sizeof buf, (p) : / * ファイルの先頭 256 バイトに 0 があるかどうか調べる * / for ( i = bt = 0 ; i く n; i f (buf [ i ] = の { bt break : fclose(fp); printf("%s: %s file. Yn" exit(0); *argv, bt ? ” binary "text") : List 2 ファイル名の拡張子でファイルの種類を判別するプログラム 3 : 4 : 6 : 7 : 8 : 9 : 20 : 22 : 23 : 24 : 26 : 1 : #include く stdio. h> 2 : #include く dir. h> main(int Char argc, char **argv) drv[MAXDRIVE], dir[MAXDIR], fi Ie[MAXFILE] , ext[MAXEXT] : whi le (--argc) { fnspl it(* + + argv, drv, dir, file, printf("%s: *argv) : strupr(ext) : if (strcmp(ext, printf("0ther"); } else { printf("Object"); } else if (strcmp (ext, printf("Document") : else if (strcmp(ext, pr'intf("Assembler source } else if (strcmp(ext, printf()C source"); else if (strcmp(ext, printf("ExecutabIe") : ex i t ( 0 ) : printf(" fiIeYn"); Ⅱ ext) : strcmp (ext, = 0 Ⅱ strcmp (ext, Ⅱ strcmp(ext,

5. 月刊 C MAGAZINE 1990年6月号

List 6 23 : } 34 : } 38 : { 44 : } 48 : { 59 : { ? READY : BUSY ) : ? EMPTY : BUSY ) : union REGS regs. h. cl = OXOE; regs. h. 引 = 0X01 : regs. X. bx = 0X4C08 : regs : 14 : 20 : 22 : 24 : 26 : 28 : 29 : 30 : 32 : 33 : 37 : 39 : 40 : 42 : 43 : 47 : 52 : 54 : 58 : 60 : 62 : 63 : 64 : int86( 0xDC, &regs, &regs ) : 19 : / * 受信可能チェック * / int rs-send-ready( void ) return( ( ( inp( 0X32 ) & 0X05 ) = 0X05 25 : / * 1 文字出力 ( R S 2 3 2 ー C ) int rs-putc( int c ) union REGS regs; regs. h. ah = 0X04 : = (uns igned char regs. h. 引 intdos( &regs, &regs ) : return( (int ) regs. h. al ) : 36 : / * 1 文字入力 ( R S 2 3 2 ー C ) int rs-getc( void ) union REGS regs; regs. h. ah = 0X03 : intdos ( &regs, &regs ) : return( (int ) regs. h. al ) : 46 : / * 受信パッフア内の文字数チェック * / int rs-loc( void ) union REGS regs; regs. h. cl 0x0e; regs. h. dl = 0X00 : int86( OXDC, &regs, &regs ) : return( ( int ) regs. x. ax ) : 57 : / * キーポードバッフアの状態チェック * / int kbd-buff ( void ) union REGS regs; regs. h. ah = 0x0b: intdos( &regs, &regs return( ( regs. h. 引 TbI.3 [ ファイル一覧 ] TA LK. C TALK.H 日 S232. C C 日 T.C 日 S232. H C 日 T. H [ コンノヾイル方法 ] CL TALK. C RS232. C TA LK 本体モジュール 日 S ー 232C 関係モジュール 記号定数の定義ファイル C 日 T. C 関数プロトタイプ宣言 日 S232. C 関数プロトタイプ宣言 画面制御関数プロトタイプ宣言 CRT ℃ 同様に tx ては , キーポードバッフアに文字 があり , さらに送信可能てあれば , キーポ ードバッフアが空になるまて送信と画面処 理を続けます。 プログラムの終了条件は , 皿十囮が入 カ , あるいは受信されたときてす。キ ーが入力されても終了しますが , 送受信デ ータが表示されている画面のどこて終了す るかわからないため , キーをコントロ ールすることにします。 キーて終了させてしまうとファイルの大き をリダイレクトしていた場合には , ために皿 + 囮を送信します。さらに出力 を NG に設定し , 相手側にも終了を知らせる こては , ステータス 明したとおりてす。 割り込み処理については , 本連載 1 回て説 ワンポイントプログラミング講座 119 明します。 ることはてきますが , それは次の機会に説 が走ったらメッセージを表示するようにす ムをひとつ走らせておき , 相手側 <TALK はてきません。 TSR ( 常駐終了型 ) プログラ を起動しても , 相手側てはそれを知ること いないため , 片方の PC98 てだけプログラム また , RS ー 232C の割り込み処理は行って グラムてはてきません。 から , バイナリファイルの転送はこのプロ 皿 + 囮 ( EOF ) によって識別しています があります。実ファイルエンドて、はなく , による文字がファイルに書き込まれる場合 させてください。その場合 , キー入力 プの状態になった場合は , キーて終「 ファイルエンドが検出てきずにハングアッ ルヘリダイレクトすることもてきますが , ンての引数はありません。入出力をファイ 両方て TALR を起動します。コマンドライ RS ー 232C ケープルて接続した 2 台の PC98 の ー方法 は TbI. 3 に示します。 思います。ファイル一覧とコンパイル方法 ルを移動してそのまま終了すればよいかと 両方残したい人は , 24 行目くらいにカーソ 信側の画面のみが残るようにしましたが , 終了の際には , 送信側の画面を消して受 しておきます。 の印としてコンソールにも皿十図を出力 さが 0 になってしまうため , ファイルエンド

6. 月刊 C MAGAZINE 1990年6月号

TbI.6 ティレクトリの分類 は , コンパイラ本体の作成に合わせてバー YPCYBIN ジョンアップして行く予定て、す。このため , YPC*SOURCE 現バージョンをユーザがカスタマイズする YPCYINCLUDE ことはあまりおすすめて、きません。もし , YPCYINCLUDEYSYS 改良を行う場合には , オリジナルコード部 YPCYL 旧 分の汎用性を考慮してコーティングしてく YPCYARC ださい YPCYDOC また , 前述のようにプリプロセッサの仕 TbI. 7 環境変数の設定 様を拡張するための唯一の方法は , #pragma PCINCLUDE=YPCYINCLUDE ディレクテイプのプラグマ命令としてイン PCL 旧 =*PC* 凵 B プリメントすることて、す。ほかの方法 , 新 PCARC=*PCYARC PCTMP=YPCYTMP たなディレクテイプの創設は許されていま せん。この点のみは厳守してください ティスクの内容とセットアップ 本号の付属ディスクには , Fig. 3 に示した ファイルが格納されています。 CPP が動作するためには , ヘッダファイ ルの存在するディレクトリが環境変数によ って定義されていなければなりません。ま た , 本連載は , 回をおうごとに必要なファ イル数が増加していく運命にあります。そ こて、 , 今のうちにシステムのディレクトリ 構造を設定しておきます。 まず , お手持ちのディスク ( て、きればハー ドディスク ) に Fig. 4 のようなディレクトリ ツリーを作成してください 以後 , 付属ディスクて供給されたファイ ルは , Tbl.6 に示す分類に従っておのおのの ディレクトリに複写した後 , ご使用くださ なお , YPCYTMP はテンボラリファイル の作成用て、す。通常 , ユーザファイルを置 くことはありません。 次に , このディスクを使用するときに起 動される AUTOEXEC. BAT( またはほかの BAT ファイル ) て、環境変数を設定 ( TbI. 7 ) してください 現在 , 使用が予定されている環境変数は , TbI.7 の 4 個て、すが , 増加する可能性もあり ます。また , コマンドバス (PATH) に YPCYBIN を追加登録しておいてください すべての実行形式 (. EXE ) ファイル プログラムのソースとヘッダなど 標準 ( 準標準 ) ヘッダファイル 標準 ( 準標準 ) ヘッダファイル ライプラリ (. L 旧または . OBJ ) ファイル ライプラリソースファイル 日 EADME. DOC などのドキュメントファイル Fig. 4 作成するティレクトリツリー PC 引 N SOURCE INCLUDE—SYS ARC DOC TMP Fig. 3 ティスク内容 #PRAGMA*README. DOC CPP. EXE CPP. C CPMACRO. H CPMACRO. C CPTOKEN. H CPTOKEN. C CCTYPE. H CCTYPE. C INCLUDE*ASSERT. H CONIO. H CTYPE. H D 旧 ECT. H DOS. H ERRNO. H FCNTL. H FLOAT. H 9. H LIMITS. H LOCALE. H MALLOC. H MATH. H MEMORY. H PROCESS. H SEARCH. H SETJMP. H SHARE. H SIGNAL. H STDARG. H STDDEF. H STDIO. H STDL 旧 . H STRING. H 刊 M E. H SYS*LOCKING. H STAT. H TIMEB. H TYPES. H UTIME. H 最後まて、 ( て、きれば永久に ) 黙っていよう かと思ったのて、すが , ANSI 規格のプリプロ セッサの機能 ( 処理系の機能 ) のうち , たっ たひとつだけ本稿て、取り上げていないもの があります ( あるいは , 前回の CSP のソー スを見て気がつかれた方もいるかもしれま せん ) 。 それは , Trigraph= 3 文字表記について て、す。これは , C 言語に特有 (FORTRAN や BASIC に比べて ) のバックスラッシュ , 角カ ッコなどを , これらの文字が存在しないコ ード体系をもつ諸外国 ( ドイツ , フランスな ど ) のコンヒ。ュータ ( あるいは端末 ) のため に , ? ? x の形式の 3 文字からなる表記方法て 代替するというものて、す。 確かに , 全世界における標準規格として は必要なものてすが , とりあえず , 日本に おいては障害にはなりません。このため , あえて無視した形を取っています。もし , この考えにどうしても異議があるという方 は , 編集部まて御一報ください。 プロジェクト FragmaC 47

7. 月刊 C MAGAZINE 1990年6月号

仕事の PCOM イ、 B x 「 0 (')O--tn= ・ -)O—COLL の DIALOG HINET JOIS DOW UONES PATO 凵 S QUESTEL CAS-ON 凵 NE DIA 凵 NE STN NEEDS EYENET SOLJRCE PC-VAN BRS COMPLJSE 日 V DEMOS その他非同期式無手順のもの全て NIFTYSERV ・ビジネスに必要なテータをタイムリーに検索できます。 新聞・雑誌記事や相場に株、海外情報など、貴重なビジネス・データ を気軽に収集。結果はフロッヒ。ーにダウンロート : 自分のためのデータ・ ファイルが出来上ります。 ・検索事項を事前にセット。アクセス時間を短縮し、通信コストを削減 できま魂 図書館文献や特許情報など、検索したい事項が分かっている時はそ の事項 ( 検索式 ) をファンクション・キーやファイルにセット。オンライン中 にキー・インする手間が省けます。 ・定期的な通信処理や検索業務もフルオート化か可能です。 定期的に発生する検索業務など、決まった通信業務を PCOMC に登 録。メニュー番号を選択すれば後はフルオートて実行します。 ・海外テータベースの検索テータを自動的に翻訳します。 PCOMQ Ⅲは検索データの英文を単語単位て翻訳し、日本語訳を 自動的にプリント・アウト。改めて辞書をひく手間が省け、翻訳業務の お手伝いが可能てす。 P ①「ファイル送信機能』が充実。時間を効率的に使えるため、電話代、検索料金をより安く抑えることができます。 ・ファイルからの 1 行送信は、送信ファイル・テキストをオンライン時に任意に送信できます。また、編集も可能て通信効率を高め ています。・ファイルの連信も任意の行から送信スタートか可能。また、 DISK の残量、経過時間の確認などもでき、非常に使 いやすくなっています。・ファンクション・キーへの検索式登録も 3 文字まで拡張。漢字登録も可能です。 ②「操作性』にも気を配っています。 ・オートダイヤルの対応モテムが充実。また、ダイヤル時間もてきる限り短縮しています。・オートログオンでの条件分岐が 自由にできます。・ページ単位、行単位のスクロール・アップ / ダウン機能によって素早い移動が可能です。・通信開始の時 間指定が可能で、無人でも時間を決めて通信することができます。 ③ JO ー S のグラフィック表示が可能です。 ・日本科学技術情報センターがサーピスする JOIS のグラフィックにいち早く対応しています。 ・スペシャリストにお薦めする PCOM 専用ソフト群 ① PCOMa I ( 簡単で確実なアクセスを実現 ) ・・・ @PCOMaII (PCOMa I に強力なファイル送受信機能を追加 ) ・・ ③ PCOM Ⅲ ( 海外商用テータベースのオンライン検索に ) ・・ ( 英単語自動翻訳機能付 ) (¯)O—(f)ä・ L<FO--J ーⅢにいち早く効応 ) 効率良い検索に〃 C 0 な Ver4.4 ビジネスに活用する それが今年のパソコン通信。 株ーー。ュト 〒 150 東京都渋谷区恵比寿 1 -8-7 ト T ・ 0 ヒル TEL. 03 ( 442 ) 7070 ( 代 ) ・定価 55.000 円 ・・定価 97 , 000 円 ・定価 1 7 ス 000 円 0 ÆRSONAL 」望 N を 55 AS 引」 ・ TWINSTAR 、 WORDSTAR: マイクロプロ・ジャパン概・ MS-DOS: 米国マイクロソフト社・一太郎 : 株ジャストシステム・ Lotus ト 2-3 : ロータス・デイベロップメント・ジャパン第 ・い米国アシュトンテイト社・電字林 - FP : 株ティアイエスシステム社以上は各メーカーの登録商標です。

8. 月刊 C MAGAZINE 1990年6月号

- CM 60 緊急レホ - ト 田倉達夫 先ころ , 米国マイクロソフト社から「 MS ー C ProfessionaI Dev elopment System 」の Ver. 6.0( 以下 MS-C Ver. 6.0 ) がリリ ースされました。待望の新ノヾージョンの登場です。早速入手したの : で , とりあえず速報という形で MS ー C Ver. 6.0 を紹介します。 MS-C Ver. 6.0 を使って , まず感じたの は , 名称が Optimizing Compiler から Pro fessional DeveIopment System に変わっ ことからも推測てきるように , たんなる 「 C コンパイラ」てはなく , C を開発言語とし た「プログラム開発環境」だということてす。 抽象的てわかりにくいかもしれませんが , QuickC( 以下 (C) の統合環境をイメージして いただければよいてしよう。つまり , コン パイラ , ェデイタ , リンカ , デバッガなど をひとつの環境上て、使用することがてきま す。また , それぞれの機能も , QC に比べて 非常に高くなっています。もちろん環境を 使用しなくても , それぞれを個別に起動さ せて使うこともてきます。 Programmer's WorkBench 三 MS-C Ver. 6.0 てのプログラム開発は , 「 Programmer's WorkBench 」 ( 以下 PWB ) が中心となります。 PWB は , MS-C Ver. 5.1 に添付されていたマイクロソフト工 デイタをベースに作成されています。 PWB はエデイタをベースに作られていま すが , 決してエデイタが中心的な存在て、は ありません。 PWB の目的は , 開発効率をよ くするための環境の提供にあると思います。 開発効率をよくするためのツールが PWB に 組み込まれています (Fig. 1 ) 。 MS ー C Ver. 6.0 て提供されている開発ツール以外の 19 6 ものも , ユーザによって PWB に組み込むこ 24 CMAGAZINE とがて、きます。 PWB て、の開発手順をざっと追ってみまし よう。まず工デイタを使ってプログラムを 書きます。ェデイタは , PWB 以外のエディ タを組み込んて、使うこともて、きます。しか し , PWB のエデイタを使うと , 編集中にア ドバイザを使うことがて、きます。アドバイ ザが参照するヘルプファイルは , マイクロ ソフトが提供している各種のヘルプファイ Fig. 1 MS-C ve 「 . 6.0 開発環境 Microsoft Programme 「 's WorkBench アドバイサ 工テイタ ユーザによる 機能拡張 ソースプラウザ ルと互換性があるのて、 , OS / 2 の開発キット に添付されているヘルプファイルなども参 照することがて、きます。 OS / 2 やプレゼンテ ーションマ不ジャの膨大なシステムコール を , 工デイタから簡単に参照て、きるのて、 , たいへん便利て、す。 プログラムを作成したら , MAKE ファイ ルを作成します。 MAKE ファイルの作成 は , 自分て、作成する必要はありません。必 要なソースファイル (. C, . ASM ほか ) , オプ ジェクトファイル (. OBJ) , ライプラリ (. LIB) , 定義ファイル (. DEF) などを登録する だけて , PWB が自動的に作成してくれま す。 次に , 作成するプログラムが MS ー DOS 用 , OS/2 の PM 用 , DLL 用てあるかを PWB ヘルプファイル そのほかのツール CV3.0 テパッガ MAKE C6.0 LINT 機能 MASM 他言語

9. 月刊 C MAGAZINE 1990年6月号

ßrief—l ロ FuII Screen Editor ENEC PC9801 E ( 漢字 ROM が必要 ) PC9801 F/M/U/ UV/VF/VM/VX/ UX/LV/CV/RA/ RX/LS/LX/ES/ EX/RS PC9801 XL/XL2/RL ( / ーマルモードのみ ) 旧 M PC の トッフセールスに輝く 工デイターが日本で 4 機種対応から 5 機種対応へ、さらに 広がった Brief の世界 J ー 31 00 SS/SL/GT/ GX/SGT J ー 3300 30 / 50 ( モノクロ・モードのみ ) AX シリーズ / ヾソコン ・ 55 ウインドウ、無限のファイル数 ウインドウは縦橫自由に、 55 まで開くことができま魂また、同時に編集できるファ イルの数や大きさには制限がありません。ひとつのファイルの複数の部分を、そ れぞれ別のウインドウ上で同時に編集することも可能です。 ・プログラミング ◆キー操作ひとつでコンバイルが可能。またプログラムにエラーがあれば自動 的にその箇所へ移動。◆メモリー不足の場合、 Brief は自分の始どをディスク に待避させメモリースペースを開放。◆ ; やなどに対応した高度なインデント もサポート。◆ C 言語のテンプレート編集機能で、 if 文や wh ⅱ e 文等の構文を自 動生成。 ・安全編集 Brief は、一定時間キーを操作しない場合、その時点の編集内容をファイルに 自動保存します。万一、編集中に電源が切れても、最新の保存ファイルから 最小の手間で復旧することができます ◆パッファ書出 / 切換 / 削除 / リスト表示◆ファイル名の 指定 / 表示 / 変更◆パックアップ保存◆特殊文字入力 ◆ 2 行を 1 行に連結◆ファイル単位の挿入◆増分検索 ◆各種マーグ始・終点の入換◆プロックのカット / コピ ー / ペースト / 印刷 / 保存 / 左右へのシフト◆対応する括 弧へ移動◆ C 言語のコメント化 / 非コメント化 / DOS コマンドの実行 / 繰返し◆キー操作記憶 . 面 ◆入力ヒストリー◆英文テキスト整形◆タブの スペース挿入◆拡張子毎に異なった設ィ 定ができるタブ◆検索置換 / 汐ーンの 画面からの入力◆英字の大小文字変換 その他 革命的マルチマシン・エテイター 一本の Brief を AX 協議会・東芝・ NEC ・ IBM ・富士通の 5 メーカー 8 ラインの機種にインストールできますいずれの機 種でも日本語 DOS で縦横無尽の威力を発揮します。 = ~ オビニオンリーダー誌のこの評価 ・プログラミング向きの工ターを探している人は、もう探す必要はないす Jerry PourneIIe (BYTE) 竃鬻第 ・ Brief はプログラマーに最適なだけでなく創造力をかきたてる何物かがある。 Computer World ・ほとんど完ぺきにカスタマイズできるだけの拡張性がある。 Computerla nguage ・まるで夢のようなアンドゥだ、おもわす間違うのを期待しまいそうだ -The C U sere Uournna にを。 = 誉 ・強力無比一マクロ言語 マクロは、極めて強力な表現能力と柔軟性を持った、完成度の高い構造化言 語です。日本システムでは販売後の Brief にも新しいマクロを提供、利用者間の マクロの交流を図り : 編集環境のグレードアップを支援し続けます ・ 300 回ものアンドゥ Brief では各ファイルごとに 3 までの操作を元に戻すことができますのでやり 直しの面倒を気にせ安心して編集できます削減や置換、別のファイルの挿 入など、ほとんどの編集結果をひとつの操作で元に戻せます 0 全機種対応バッケージ ちインチ 2DD と 3.5 インチ 2DD の FD を一挙に同梱。これ以外の メティアの場合はご請求ください。 日ホシステム槽式会社 ・お問い合せは 東京都立川市曙町 1 ー 18 ー 2 ー清ビル立川事業所 Brief ユーザーサ・ポート係 電話 0425 ー 23 ー 4469 FAX 0425 ー 27 ー 6127 ( 消費税は含まず ) 48 , 000 円 Brief は Under Ware 社の商標てす。

10. 月刊 C MAGAZINE 1990年6月号

0 ℃ PARTS 」は C 言語で様々なアプリケーションを開発するために必要 な関数を提供しま℃ PARTS 」の関数を組み合わせて使用するだけ で通常業務に必要な殆どの機能を満足することができます。 0 ℃ PARTS 」は AN 規格対応の関数を用いて作成されているので、 MS-C 、 Lattice C 、 Turbo C 、 Quick C の各 C コンパイラーで使用 可能です。 ( またメモリーモデルについてもほとんどサポートしています。 ) 0 「 C PARTS 」はすべてソースコードで提供しておりまた、ライセンスフリー です。 0 ℃ PARTS 」にはそれぞれのパッケージに含まれた関数を用いた実用 的な参考プログラムが付属しています。 0 付属マニュアルには各関数についての仕様及びサンカレプログラムに ついての説明が記されています。 続々登。 P A R T S ( 対応機種 ) PC -9801 シリーズ 本ライプラリーでは画面表示、キーボード入力サポート関数を提供します。 本ライプラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、画面を表示し、入力を行います。従って、プログラム作成後でも、画面のレイアウ ト、表示桁数、入力桁数、タイトル等を自由に変更できます。 提供する関数の主な機能は次のとおりです。 文字表示属性の指定 ( シークレット、プリンク、リバース、アンダーライン、ノヾーチィ カルライン、色指定 ) 文字列の入力編集 ( アルファベット、カナ、漢字、数値 ) ウインドーのサポート ( ウインドー数はメモリー容量に依存 ) サンプルプログラム・・・・・・簡易顧客管理プロクラム 本ライプラリーでは一 SAM 形式のテータベース構築用関数を提供します。 日 + t 「 ee 構造のテータベースなのでテータの高速検索か可能です。 提供する関数の主な機能は次のとおりです。 同時オープンファイル数は最大 10 ファイル 最大レコード長は 32 K B 1 ファイルに設定可能なキー数は 45 キー 次候補、前候補テータの呼び出し 同時アクセス可能キーは 10 キー キータイプは文字及び数値 キーテータの最大長は 128B (int 、 long 、 double) キー名称の最大長は日 最大レコード数は約 10 億件 サンプルプログラム・・・・簡易テータベース 本ライプラリーでは帳票作成時に必要な関数を提供しています。 本ライプラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、帳票を印字します。従って、プログラム作成後でも、帳票のレイアウト、印字桁数、 タイト丿レ等を自由に変更できます。また、第線についてもフォーマットファイル上で指 定できます。 提供する関数の主な機能は次のとおりです。 印字形式の編集機能 ( カンマ付き数字編集等 ) 印字位置指定 ( 左寄せ、右寄せ、センタリング ) 特殊印字機能 ( 罫線、アンターライン、網掛け、倍角、強調、 4 倍角 ) 改行ピッチ、文字間ピッチ変更 ヒットイメージ出力 ※印字位置、印字桁数についてはフォーマットファイル上て指定 サンプルプロクラム・・・・宛名印字プロクラム、住所録管理プロクラム 対応フリンタ P 日 2 田系 本ライプラリーては、ノヾソコン用プリンターでハーコードを印刷するための関数を提 供します。 提供する関数の主な機能は次のとおりです。 >JAN 、 ITF 、 NW7 、 CODE39 の各八一コートをサホート 使用可能プリンターは P 日 201 系のプリンター ( 印字処理を変更すれは他のフリンター ても使用可能。たたし、印字精度の高いプリンターを使用して下さい ) 八一コード印刷後に対応するコートを縮小印字可能 サンプルプログラム・・・・・・八一コート印刷プログラム 対応フリンタ P 日 201 系 本ライプラリーでは、アプリケーションプログラム中で持っている、様々なテータをグ ラフ化するための関数を提供します。 主な機能は次のとおりてす。 1 7 種類のクラフ表示 ( 棒、折線、円、バイなど ) フォーマットファイルを使用するのて、表示位置、タイトルなとのパラメータの変更がプログ ラム作成後ても可能 テータ予測分析関数を装備 拡大、縮小、斜体、網かけなどの文字テータに対する修飾か可能 アイセル株式会社 〒 171 東京都豊島区池袋 2 丁目 53 番 8 号秋島ヒル 5F TEL. 03 ( 988 ) 6973 ( 代表 )