マイ 5Q カト lnformation from C0mpiler Makers 今月は , 昨年 12 月より出荷を開 始した Microsoft FORTRAN Pr ofessional Development System Version 5.1 ( 以下 MS-FORTRA N 5.1 ) に関して寄せられた質問の うち , 代表的なものに関して , お 答えいたします。 Q Ms-FORTRAN 5.1 を使用し たときに MS-DOS, MS-OS/2, M S-Windows 上では , データ領域 , ひとつの配列の大きさ , . EXE ファ イルの大きさはどれぐらいまで使 用できるのですか ? A MS-DOS, MS ー OS / 2 て、の制 限はすべて MS-FORTRAN 4.1 と同じて、す。また , MS-Window s, MS ー OS / 2 て、は仮想メモリを利用 することにより , これらの領域の 大きさに制限はなく , プログラム によって確保可能なシステムの空 き領域すべてを確保て、きます。 MS-OS/2 と MS-Windows て、確 保て、きるひとつの配列の大きさの 例を TabIe 1 に示しますのて、参考 にしてください Q MS-DOS Ver. 5 . 0 では XMS メモリがサポートされていますが , MS-FORTRAN 5.1 を使用した場 合に確保できるデータ領域は MS ー Windows と同じですか ? A MS-Windows て、は 640K バイ ト以上のプロテクトメモリ領域を アプリケーションプログラムが使 用することがて、きます。このメモ リ管理は MS-Windows が行って います。つまり , MS-FORTRAN 5.1 て、作成したプログラムにプロテク 148 C MAGAZINE 1992 3 トメモリを利用する機能が加わっ ているわけて、はありません。した がって , MS-DOS Ver. 5.0 て、 XM S メモリを確保しても , MS ー FORT RAN 5.1 て、作成したアプリケーシ ョンが自動的にプロテクトメモリ を利用て、きるわけて、はありません。 Q MS-FORTRAN 5.1 は 386 / 48 6 コードを利用したアプリケーショ ンを作成することはできますか ? A MS-FORTRAN 5.1 て、は , 3 86 / 486 固有のコード ( 32 ビットコー ドを含む ) を生成することはて、きま せん。当然のことながら 387 ( / 486 / 487SX ) 固有のコードも生成て、きま せん。 MS-FORTRAN 5.1 は , コプロ セッサは 8087 / 80287 / 387 / 486 / 487 SX のすべてに対応しているのです か ? A MS-FORTRAN 5.1 て、開発 されたアプリケーションは , すべ てのコプロセッサにおいて動作可 能て、す。ただし , MS-FORTRAN 5.1 は 8087 または 80287 ( / G2 ) のコ ードしか生成て、きませんのて、 387 / 486 / 487SX は高速な 80287 として利 用されます。 Q M -FORTRAN 5.1 では , サプ ルーチン単位での ( ローカルな ) 最 適化は可能ですか ? A メタコマンドによりルーブオ プティマイズの制御 ($LOOPOP T, $NOLOOPOPT) は , ループ単 位て行えますが , これ以外には , ローカルな最適化の制御は行えま せん。もちろん , サプルーチンを 個別のファイルに分割することに よりファイル単位て、 , 最適化を抑 制することは可能て、す。 Q MS-FORTRAN 5.1 でアプリ ケーションを開発中なのですが , プログラム中で複数のファイルを オープンする必要が出てきました。 MS-FORTRAN 5.1 のプログラム 中では , いくつまでファイルをオ ープンすることができるのでしよ う力、 ? A 基本的には 1 プロセス当たり 2 0 ファイルまて、をオープンて、きま す。ただし , そのうち 5 ファイルは システムて、使用するのて、 , ューザ 側て、利用て、きるのは 15 ファイルま て、となります。 なお , MS - OS / 2 上て、あれば FIL EHAND. DOC (SOURCEYSTA RTUP) にこの制限を緩和する方 法が記述されており , 20 ファイル 以上のファイルを 1 プロセスて、利用 することが可能てす。 Q Ms-FORTRAN 5.1 では , メモ リ管理用のデバイスドライバはど Microsoft FORTRAN ProfessionaI DeveIopment System Version 5.1 のような組み合わせにするのがよ いでしようか ? A 各ユーティリテイプログラム がどのようなメモリを利用て、きる のかをご覧ください ( TabIe 2 ) 。 Table 2 に示したように , EMS メモリは PWB, CV ともに利用し ますのて、 EMS メモリを多く設定さ れたほうがよいて、しよう。ただし , CV を使用する場合に XMS メモリ を使用するとメインメモリの常駐 量が約 20K バイトになりますのて、 , 従来は不可能て、あった大規模なプ ログラムのデバッグが可能になり ます。このように , 必要に応じて XMS メモリに切り換えて使用する とよいて、しよう。 Q Qu ℃ kWin アプリケーションを スタンダードモード , 386 工ンハン スドモードを切り換えて実行させ る場合 , 何か変更しなければなら ないことはありますか ? A QuickWin アプリケーションは スタンダードモード , 386 工ンハン スドモードのどちらて、も , 同一の プログラムて、動作て、きますのて、 , とくに変史を加える必要はありま せん。ちなみに , QuickWin アプリ ケーションをリアルモードて、動作 させることはて、きません。 Q Qu ℃ kWin アプリケーションで 日本語入力する場合に使用できる TabIe 1 確保できるのひとつの配列の大きさの例 TabIe 2 利用できるメモリ MS-OS/2 MS-Windows システムの空き領域 使用可能メモリ 7.6M バイト ス売六 13M バ 使用可能メモリ 10M バイト 確保可能な配列のサイズ 13M ノヾイト 9M バイト PWB CV EMS メモリ XMS メモリ 〇 〇 * 〇 + * Symb 情報のみ + メインメモリを約 20K バイト使用します
lnformation from Compiler Makers F E P にはどのようなものがあります A QuickWin アプリケーションは 完全な Windows アプリケーション なのて、 , MS-Windows て、使用可能 な FEP のみ使用て、きます。 Q QulCkWin 機能は , DDE(Dyna mic Data Exchange) , OLE(Obje ct Linking Embedded) はサポート しておりません。 DDE, OLE ともにサポートは A していますか ? Q とは可能ですか ? プログラムを DLL として呼び出すこ た , このとき MS-FORTRAN 5.1 の を作成することはできますか ? ま で MS-Windows アプリケーション re DeveIopment Kit) の組み合わせ Ver. 6.0 , Windows SDK(Softwa MS-FORTRAN 5.1 と MS ー C んのて、ご注意ください ドレベルて、のデバッグはて、きませ 合 , CodeView を使ってソースコー ただし ,MASM 5.1 を使用する場 Ver. 6.0 , MASM 5.1 / 6.0 て、す。 る言語は MS-BASIC 7.1 , MS-C d Language Programming 力すて、き MS-FORTRAN 5 . 1 と Mixe A ようなものがありますか ? ことが可能な言語製品には , どの Language Programming を行う Q MS-FORTRAN 5.1 と Mixed A DLL は当然のことながら , OB J レベルにおける LINK て、もプログ ラムを作成することがて、きます。た だし , これらの場合は , 必ず C がメイ ンモジュールになります 0MS-FOR TRAN 5.1 をセットアップした後 の SOURCEYSAMPLE というディ レクトリに MS-FORTRAN 5.1 と MS-CVer. 6.0 , W ⅱⅵ 0 、 SDK を使用 した MULMIX というサンプルアプリ ケーションが収められているのて、 , 参考にしてください Q MS-FORTRAN 5.1 を使って MS-Windows 上でグラフィックス を使用するプログラムを作成した いのですが , MS-C Ver. 6.0 と Wi ndows SDK を利用すれば , このよ うなプログラムを作成することが できますか ? A MS-C Ver. 6.0 と Windows SDK て、 MS-Windows プログラム を作成すれば , Windows API を使 用したグラフィックスを利用する ことは可能て、す。ただし , この場 合は QuickWin アプリケーションと しては作成て、きません。もちろん , メインモジュールは , C て、記述され る必要があり , FORTRAN て、は , サプルーチンのみ記述可能て、す。 MS-FORTRAN 5.1 と MASM 6.0 との Mixed Language を行った 場合 , MS-OS/2 2.0 の場合にはフ ラットメモリモデルは使用できる のですか ? A MASM 6.0 はフラットメモリ モデルに対応していますが , MS- FORTRAN 5.1 が対応していない のて、 , フラットメモリモデルを使 用することはて、きません。 Q MS-FORTRAN 5.1 でグラフ ィックス関数を使用した場合 , MS ー OS / 2 上では , キャラクタウインド ウを使ったプログラムしか作成で きないのですか ? A MS-FORTRAN 5.1 に添付 されている GRTEXTP. LIB は , テ キストべース ( テキストウインドウ の設定 , 表示位置の設定 , 文字の 色の指定など ) のみに対応している のて、 , キャラクタウインドウを使 MS-FORTRAN 5.1 て、は , M ることはできますか ? ネージャ用のプログラムを作成す MS ー OS / 2 のプレゼンテーションマ MS-FORTRAN 5.1 を使って , ったプログラムしか作成て、きませ A Q ん。 があります。そのため , たとえば 利用する Mixed Language の機能 SIC をサプルーチン単位て、統合して S-C, MS-FORTRAN, MS-BA Microsoft の言語製品には , M A て利用する方法を教えてください。 AN 5.1 をハードディスクで共有し Q MS-C ver. 6.0 と MS-FORTR は作成て、きません。 ージャ機能を利用したプログラム S ー OS / 2 のプレゼンテーションマネ MS-C のコンパイラと MS-FORT RAN のコンパイラを同時に利用す る場合も考えられます。 MS-C V er. 6.0 と MS-FORTRAN 5.1 て、 は , コンノヾイラ以外のいくつかの ツールも共有て、きます。たとえば , PWB や CodeView, LINK, NMA KE などがとくによく使われるツー ルて、しよう。これらは , FORTRA N に添付されているものが最新バー ジョンになりますから , 共有して 利用する場合には , 必 $MS-FOR TRAN 5.1 に添付されたものを使 うようにしてください もっとも簡単な設定方法は , 以 下のとおりて、す。 ①ハードディスクに MS-C Ver. 6.0 をセットアップする。 ② MS-CVer. 6.0 をセットアップ したディレクトリと同じディレ クトリに MS-FORTRAN 5 . 1 をセットアップする。 具体的には , BINB, BINP, B INR, LIB, INCLUDE, INIT, HELP の各環境変数て、参照される ディレクトリを共有することにな ります。 ただし , ディレクトリを共有し た場合 , MS ー C しか利用しなくても MS-FORTRAN 用の PWB 拡張フ ァイルが読み込まれるため , PWB て、利用て、きるメモリは減少します。 また , MS-BASIC 7.1 , MASM 6.0 を共有する場合にも , PWB や CodeView ツールの共有は可能て、 す。この場合には , MS-FORTRA N 5.1 あるいは MASM 6.0 を必ず 最後にセットアップしてください MS-FORTRAN 5.1 と MASM 6.0 のすべての共有可能なツール は , 同じバージョンて、す。 lnformation from Compiler Makers 149
最新ロロロレポート ようて、 , ほかの仮想 86 モードのユーティリテ RT386 て、は , 80386 / 486 の仮想 86 モードと トより少なくなります ) 。 ィを組み込んて、いるマシンて、はこのモードを べージング機構を使用し , 該当タスクをプロ このモードを利用するにはパラメータファ 利用することがて、きませんて、した。 テクトメモリにロードします。このため , タ イルて、 , スクごとに最大 640K バイトのメモリが利用て task mod=V86 ヾッグ支援 と指定します。 きるようになります ( 実際はいったん 640K バ イトのメインメモリ領域にロードされるた なお , マニュアルには書かれていません マルチタスクシステムのデ / ヾッグはめんど が , VCPI などの仕様をサポートしていない め , 1 タスクが利用て、きるメモリは 640K バイ うなものてすが , デバッグ支援機能がいくっ か用意されています。 Fig. 2 RMD ( リアルタイムモニタリングティスプレイ ) ①現在時刻の表示 現在時刻を表示させることにより , プログ タスク名称ディレクティブ ステータスシステムプール使用状況 全容量 8000 未使用領域 tas k0 ラムが動いていることの確認がてきます。 tas kl ②パラメータファイルの内容 , ロードタスク tas k2 のアドレス情報の表示 バッファ使用状況 6 ③バックグラウンドデバッグ機能 1 2 3 4 5 サイズ 128 256 512 1024 2048 4096 RT をバックグラウンドて、動作させること 個数 0 0 0 0 0 0 使用中 により , デバッグ機能を提供しています。 このとき ・ RMD ( リアルタイムモニタリングディス プレイ (Fig. 2 ) ) ・ ATL ( アクテイプタスクリストディスプ レイ (Fig. 2 ) ) ・ SYMDEB などが利用て、きます。 ④ SMKNL ( スモールカーネル ) ATL ( アクテイプタスクリストティスプレイ ) Fig. 3 SMKNL ( スモールカーネル ) を常駐させ て , CodeView などのデバッガて、タスク単 <status=bl> <pri=50> <mode=ts> <atr=ts> <tid=20> tas k0 < rcvl queue = FFFF > <rcv2 queue=FFFF> 位て、デバッグすることがてきます。 RT の <event (set 0000 0000 0000 0000 > システム関数を呼び出すと実行結果カ俵示 < (wait 0000 0000 0000 0002 > ax=08D3 bx=FFFF cx = 0000 dx=FFFF si=02F8 di=02F8 bp=0DCA され , 発行するディレクテイプを入力する sp=0DC8 cs=1D33 ds = 3701 ss = 3701 es=35C6 ip=137F fl = F213 ことがてきるようになります。筆者が使用 =ts> <tid=21> <pri=30> <status=bl> <mode=ts> <atr taskl したかぎりては , デバッグにはこの機能が く rcv2 queue = FFFF > =FFFF> < rcvl queue <event (set 0000 0000 0000 圓 00 > もっとも役立ちそうて、した。 < (wait 0003 0000 0000 圓 00 > ax = 0002 bx=FFFF cx = 0001 dx=80D3 si = 0008 di=02DE bP = 0000 これらのデバッグ機能を初めとして RT は sp=0D5E cs=383A ds = 3963 ss = 3963 es=382A ip=00D8 fl = F206 「開発マシンとデバッグマシンを分ける」とい =ts> <tid=22> <pri=30> <status=bl> <atr <mode=ts> tas k2 うことを前提にしているように思われます。 < rcv2 queue = FFFF> =FFFF> < rcvl queue たとえば , <event (set ー 0000 0000 0000 0000 > < (wait 0003 0000 0000 0000 > ・上記のデバッグューティリティは常駐を解 ax = 0002 bx=FFFF cx = 0001 dx=80D3 si = 0008 di=02DE bP = 0000 sp=0D5E cs=3A9B ds=3BC4 ss=3BC4 es=3A8B ip=00D8 fl = F206 除てきない ・ VCPI などの仕様をサポートしていない ・使用割り込みべクタ F0h ~ F 新を終了時に 元に戻さない リージョン 使用状況 1 サイズ 0 個数 0 使用中 4 0 0 00 0 0 6 0 0 L.n 0 0 9 ム 0 0 最新開発環境レポート 125
TabIe 1 c 言語の変数の可視性 記憶クラス 自動変数 ( aut 。 ) 静的変数 (static) 外部変数 (extern) 定義 関数の外で定義 関数の外で定義 関数の中で定義 関数の中で定義 関数の引数もしくは 自動変数に対してレ ジスタ変数と定義 有効期間 プログラムの実行期 間中使用できる プログラムの実行期 間中使用できる 関数の処理中で使用 でき関数の処理が終 了すると解放される 関数の処理中で使用 でき関数の処理が終 了すると解放される 意味 ( 有効範囲 ) プログラムを構成す るすべての関数で参 照できる 関数の外で定義する と定義された箇所か らファイルの終了ま でにある関数で参照 できる 関数の中で定義する と , 定義された関数 の中でのみ参照でき る 関数の中だけで参照 できる 関数の中だけで参照 できる レジスタ変数 (registe 「 ) List 8 : 7 : 5 : 3 : 2 : va 「 iab 厄という p 「 ivate 属性の変数を持つクラス class private: i nt 4 : public: VOid i nt VOid VOid examl { func2(){ variable-- funcl(){ variable + + : } get() {return variable put(int w) (variable = w; } variable; List 8 : 7 : 6 : 5 : 3 : 2 : アクセスメソッドの利用 class private: i nt 4 : public: VOid int VOid VOid exam2 { variable; func2(){ int w = get(); w--; PUt(W); funcl(){ int w= get(); w + + : put( w ) : } get() (return variable; } put(int w) {variable = w; } 実力養成講座 の限定を行うのて、す。 変数は操作て、きないようにして , 参照手段 れらのアクセスメソッドを利用しなければ , これを利用して , クラスの内部からも , そ から操作て、きないものになってしまいます。 メソッドがないと , それらの変数は , 外部 メンバ変数には , 参照と代入のアクセス プクセスメソッドの利用 法をとります。 変数への参照手続きの限定を行うという方 数を実装する場合には , クラスの内部て、も , ないといえます。そこて、 , 実際にメンバ関 情報隠蔽の機能が効果を上げることがて、き 数は , 完全に信頼て、きるものて、なければ , わば大域変数なのて、す。ゆえに , メンバ関 クラスの内部て、は , これらの変数は , い e を自由に参照て、きるわけて、す。 put, get, funcl, func2 て、は , 変数 variabl が , クラス内に定義されているメンバ関数 て変数 variable は , 情報隠蔽されています List 1 を例にすると , クラスの外部に対し は完全に自由にアクセスて、きます。 は不可視て、す。しかし , 内部スコープから 持っているため , 外部からは , メンバ変数 という問題て、す。クラスは情報隠蔽機能を に , クラスの内部スコープて、さえ広すぎる スタートアップ C 十十 情報隠蔽による変数の保護という C 十十の 情報隠蔽によるメリット のは容易に想像がっくて、しよう。 ログラムエラーの発見などの効率が上がる 時にプレークポイントを入れることて、 , プ バッグの過程て、は , 代入の関数の呼び出し れます。メンバ関数の実装過程 , とくにデ することがて、き , 変数の参照経路が限定さ ートメンパ内て、 , 仮想的なスコープを設定 こうすることにより , クラスのプライベ るのて、す (List 2 ) 。 t() を , そして代入する場合 put ( arg ) を用い 視なものと考え , 変数を参照する場合は ge す。しかし , funcl からは , この変数は不可 数 variable を自由に操作することがて、きま List 1 て、は , メンバ関数 funcl からは , 変 スタートアップ c 十十 89
機能は , プログラミング作業において , 非 常に強力な力を発揮します。しかし , 大規 模なプログラムを書く場合など , モジュー ル化を考えなければ , 事実上不可能て、すし , またスキルの高いプログラマて、あるならば , こういった情報隠蔽などは , 意識せずに行 っている場合が多いはずて、す。 ゆえに , C 十十の導入によって , すべての プログラマが , ある程度品質の高いプログ ラムを書くことがて、きるようになるとも考 えることがてきます。つまり , プログラム の信頼性を , C 十十の持つオプジェクト指向 機能によって高めることがて、きるわけて、す。 これはクラスが持っ , 情報隠蔽機能に基づ : - フログラムの生産性と C 十十 くメリットて、す。 90 C MAGAZINE 1992 3 となるようなプログラム群て、す。そして , クトコードとして提供される , いわば部品 あり , 通常コンパイルをした後のオプジェ ライプラリとは , 汎用性のある関数群て、 プラリの利用があります。 閉じた再利用て、すが , その代表にはライ 閉じた再利用 靄第をは もあります。 用と呼び , 後者を開いた再利用と呼ぶこと て再利用する方法て、す。前者を閉じた再利 つは既存のプログラムを不完全なものとし ものとして利用する方法て、あり , もうひと ひとつは , 既存のプログラムを完結した それには , ふたつのアプローチがあります。 生産性を高める技術について考えてみます。 こて、は , 既存のプログラムを利用して , またその逆も成り立つわけて、す。 ある程度信頼性を犠牲にせざるを得ないし , ソフトウェアの生産性を高めるためには , ェア工学て、指摘されてきました。つまり , ドオフの関係にある概念として , ソフトウ この生産性と信頼性は , しばしばトレー 開発においては , 重要な目的て、す。 に , 生産性を上げることも , ソフトウェア プログラムの信頼性を上げることと同様 目的のシステムを実現するために , 必要な ライプラリを集めてシステムを構成し , ラ イプラリによって実現てきない部分の仕様 を実現するために , プログラムを記述する という方法をとります。 しかし実際には , 多くのプログラムによ って再利用されるようなプログラムモジュ ールには , 標準入出力や単純なデータ構造 の操作など限られたものしかありません。 それは , このプログラム部品て、あるライプ ラリが , 機能の再利用しか提供しないから て、す。 たとえば , C 言語て、しばしば用いられるラ イプラリに , 標準出力に対する整形出力 pr 業において , この差分プログラミングを実 すことが多いようて、す。プログラミング作 ムの仕様を上流工程て、再利用することを指 機能仕様などの類似性を持った既存システ グとは , プログラミングとはいうものの , ます。しかし一般にいう差分プログラミン が少なくなり , 生産性を高めることがて、き 述しなければいけないプログラムコード量 ため , 特定のシステムを実現するために記 この手法は , 既存のコードを再利用する 義し , プログラムを作り上げる手法て、す。 グラムと既存のプログラムの違いのみを定 す。差分プログラミングとは , 新たなプロ ングと呼ばれる手法をあげることがて、きま 開いた再利用の代表に , 差分プログラミ 開いた再利用 たプログラムて、す。 数は , 完全に用途が限定されている , 閉じ は提供されないのて、す。このライプラリ関 機能の利用は提供されますが , 変数の利用 ライプラリとは , あくまて、関数群なのて、 , こともて、きません。 変数を利用して , 新しいプログラムを書く ることはて、きません。そのため , これらの る側は , これらの内部変数は , 直接参照す ずて、す。しかし , このライプラリを利用す を示すような多くの変数が使われているは は , フレームバッフアやワークエリアなど intf( ) があります。関数 printf( ) の内部て、 現することは , 非常に困難て、す。既存のプ ログラムにコードを付け加えて , 新しいプ ログラムを作り上げるためには , 既存プロ グラムが持っている変数の再利用をも行わ ねばならないからて、す。 前述したように , 関数の情報隠蔽機能に よって , 機能の再利用は提供されるが , 変 数の再利用はて、きなくなってしまいます。 しかし , 差分プログラミングを行うために は , この変数の再利用をも行わねばなりま せん。つまり , 閉じた再利用と開いた再利 用は両立しないのて、 , ライプラリを使って , 差分プログラミングを行うことがて、きない のて、す。差分プログラミングを行うために 変数を再利用する開いた再利用も可能にな 目した , 閉じた再利用することはもちろん , をライプラリ化することにより , 機能に着 を実現することがて、きるわけて、す。クラス て , 変数を利用した , 差分プログラミング このサプクラッシングを用いることによっ 情報隠蔽の例外的な機能といえるて、しよう。 ープにクラスを付加することて、す。いわば を階層化することは , クラスの内部のスコ このサプクラッシングによって , クラス ンスタンスを生成することがてきます。 ラスの有無に関係なく変数宣言によってイ スにはまったく影響がありません。派生ク くら派生クラスを追加しても , べースクラ グと呼びます。クラス階層においては , い ジェクト指向の世界て、は , サプクラッシン にクラスを追加して行います。これをオプ ラスを定義する場合は , 既存のクラス階層 分散することが可能て、す。そして新たにク クラスは派生機能によって , 階層にして ム部品て、はあるわけて、す。 ラリ的な , 閉じた再利用が可能なプログラ と定義されます。ゆえに , クラスもライプ た , データ型宣言十データの操作関数宣 C 十十のクラスとは , 情報隠蔽機能を持っ C 十十と生産性について考えてみます。 C 十十と生産性 ないということになります。 は , 情報隠蔽の例外を実現しなければなら
i ntel@ The Computer lnside. ," 00 お求めになった時から、インテルはあなたのパソコンに 指定席をいただいていますもしや、まだ空席のままでは・・ ソケットにセットするだけであなたのパソコンカソフトカミ加速します intel in it 』のマーク、パソコンの広告て、目にした方も多いて、しよう。そう、日本て、販売され ているパソコンのほとんどは、インテルの CPU を使用しています。そして、もうーっ。インテルの 数値演算コプロセッサを組み込むためのソケットも、あらかじめほとんどのパソコンの基板 上に用意されています。言わば、パソコンの中に指定席を持っているようなもの。インテル 数値演算コプロセッサは、表計算、データベース、グラフィクス、 DTP 、 CAD などアプリ ケーションソフトの実行速度を大幅に向上させます。より速く、より快適に、ソフトを使いこ なすために、あなたのパソコンにもぜひインテル数値演算コプロセッサをご利用ください あなたのノヾソコンには ・数値演算コプロセッサ用の ソケットが用意されています。 ーベンチマーク・データ ー 160 秒 コプロセッサ無 コプロセ・ノサ有 82 秒 Mic 「 09 Excel によるべンチマークテスト ー x ーセルのスプレッドシートを再計算させた結果 The t Math CoProcessor インテルジャパン株式会社本社 / 〒 3 -26 茨城県つくば市東光台 5 ー 6 く資料請求番号 F03 〉 ※商品名・名称等は各社の商標及び登録商標です。
マウスドライバとのインタフェース関数を 提供します。「キー入力が簡単 V2.0 」と「ウイ ンドウが簡単 VI . 0 」と併用すると、プルダウ ンメニュー関数や、ダイアログ関数 ( 文字列、 メニュー、リスト・ボタン、シートなどの豊 富なアイテム ) 、マウス情報取得関数が使用で きます。 マウスのアクションに対して各関数が返す値 として、任意の値をあらかじめ設定すること もできます。このことを上手く利用すれば、 マウスとキーホードを併用するアプリケーシ ョンを作る際、マウス用のロジックとキーボ ード用のロジックか一本化できるので、プロ グラムか長くならすに済みます。高い機能を 短いステップで、簡単シリーズの身上です。 「日 S -232C か簡単」 VER. 1.0 、一 Y15 , 000 アプリケーション・プログラムの通信用ドライバ として常駐し非同期方式で通信を行います。転送 速度は、 75 日 PS ~ 19.200 日 PS までをサポート。 通信部の割込機能の設定もユーサー側で変更でき、 受信レティ・送信レティ・送信バッファ工ンプテ イの中から選択可能です。また、バラメータ等の 指定により、ドライバ部を介さす自ら相手側と通 信できる機能、割込処理の禁止 / 許可機能等も付 属。さらに、ドライバ部に送受信用パッフアが装 備されているため実行中のアプリケーション・プ ログラムが変更されてもテータ通信を継続して行 うことが可能なように設計されています。ソフト 開発の参考となるよう解り易いサンプルプログラ ムも添付。 ユーサーの側に立ったライプラリ設計、簡単シリ ーズの一貫した思想てす。 アプリケーション アプリケーション AP 生まれの AP 育ち C 言語用プログラミンク。支援ツーノレ 「簡単シリーズ」十「作ろうシリース開発ェ数削減と標準化のために VER. 1.0 ー Y9 , 800 VER. 1.0 ー Y7 , 200 V R. 1.0 ーー \ 18 , 000 V R. 1.0 ーー \ 22 , 000 V R. 1.0 ーー Y28 , 000 V . 1.0 ーー \ 22 , 000 「マウスが簡単」ワトドコが簡単鷲ヘルプが簡単」「エテイタ入力が簡単」 V . 2.0 ーー \ 28 , 000 V R. 2.0 ーー \ 18 , 000 V R. 1.0 - ー Y28 , 000 V . 1.0 ーー \ 14 , 000 「キー入力が簡単」「印字が簡単」「ウインドウが簡単」「クラフが簡単」 キー入力関数・テキスト画面制御関数・カ ーソル制御関数を提供します。キー入力関数 は、指定された位置で指定された桁の入力を 受けつけ、入力テータを指定されたエリアに 格納します。入力テータタイプもチェックし、 漢字入力したいところではフロントエンドプ ロセッサを立ち上けます。カーソルは、現在 入力中の位置に表示します。テータ表示色・ アトリピュートも、 PF キーガイドラインの 表示 / 非表示も設定自由、 PF キーガイドラ インには任意の文字列を任意の色で表示でき ます。ロールアップ / タウン・ BS ・ HELP ・ HOME e 十 c の特殊キーも全て取得 OK 。リ アルタイム・クロック表示関数や、ダイレク ト・キースキャン関数、 V 一日 AM のリード ライト関数等も用意しています。 テータ出力関数・ビットイメージ出力関数・ プリンタステータスチェック関数を提供しま す。文字列テータはもちろん、罫線テータも 同時に出力てきます。文字列も罫線も、画面 のように桁・行で印字位置を決めるので桁合 わせは不要。文字列は、拡大・下線・網掛け 等の特殊効果を同時に指定可。罫線は実線 破線それぞれに太 / 細の計 4 種類をサポート、 ピットイメージを出力して引く罫線よりも高 速に印字します ( 社内テスト結果 : ピットイメ ージ出力で 10 分かかった表が、 6 分て出力完 了にア ) 。また、文字と罫線を同じ桁・同じ行 に出力てきるので、ムダのない帳票を設計で きます。もう、制御コード出力処理だらけの 読みにくいプロクラムとはオサラ八です。 各種のウインドウ制御関数と、 N88BAS ℃ を基本にしたグラフィック関数を提供します。 最大 20 個のオーバーラップ・ウインドウをオ ープンできます。テキストモードとグラフィ ックモード双方向をサポート、ウインドウ内 でのキー入力関数・テキスト画面制御関数・ カーソル制御関数もそろっています。文字列 表示関数は、ウインドウ・サイズに合わせた 自動改行機能を持っているので、プログラミ ングの手間もぐっと省けます。通常のウイン ドウに加えてメニュー選択処理のためのメニ ューウインドウや、 Y / N のキー入力を受けて 返せるメッセージウインドウもサポート。ユ ーサー・インターフェイスの優等生・ウイン ドウ処理を、メモリ操作なしのお手軽プログ ラミングで実現できます。 グラフ描画関数と、 N88 日 AS 旧を基本に したグラフィック関数を提供します。描画で きるグラフは、棒グラフ ( 縦・横 ) 、折れ線グラ フ ( 縦・横 ) 、円グラフの計 5 種、棒グラフと 折れ線グラフは重ね合わせも可能。色やライ ンバターンの設定は自由です。描画のための テータテープルをセットして関数をコールす れは、グラフ本体はもちろん、タイトル・グ リッド・単位・凡例まで、全て関数内で計算・ 描画するので、メインプログラム側での計算 処理は何一つ必要ありません。「簡単シリーズ」 は全て併用可能ですから、「ウインドウが簡単」 と「グラフが簡単」を併用すると、グラフが出 るウインドウを画面上にオープンする、なん てことも、あっとオドロク簡単さでできてし まいます。 デ - タテ - プしをセットい、 関数をコールするたけ、 グラフィック画面をモノクロ 8 階調または、 カラープリンターに八一ドコピーします。領 域指定や色指定など豊富なオプションも用意。 その他、アプリケーション実行中に現在の画 面を Disk にセープする常駐プログラムと、 セープしたテータを圧縮するプログラム、更 にそれらのテータを再表示したり、印字した りするプログラムも装備しています。 苦労して作った美しい画面の利用範囲が広か ります。 今まて苦労していた、テキスト・グラフィッ ク画面の八一ドコピーを手軽にてき、マニュ アル作成時の画面レイアウトとして幅広く利 用できます 9 「簡単ツールエテイタ」 VER. 1.0 ーー Y22 , 000 「簡単シリーズ」のテータテープルを編 集するための、専用工テイタです。 画面上で、マウス ( なくてもかまいません ) やキー ホードを使って、実行画面や帳票のイメージをワ ープロ感覚で入力すると、そのまま使えるソース コードか出力されます。これ 1 本で「キー入力 ( V 2.0 ) 」「印字 ( V2.0 ) 」「ウインドウ ( VI .0 ) 」「クラフ ()I .0 ) 」をサポートしています。テータ編集中に 擬似テータを使って表示したりできるのて、テス トランの必要もなく、「簡単シリーズ」てアップし た開発効率を 60 ~ 40 % も更に引き上げることがで きます。 アプリケーションの使用方法を導く高機能 なホップアップ ( アドバイザ ) 関数を提供しま す。 100 タイトル ( 300 頁 ) のヘルプメッセージ をサポート。タイトルメニューと関連タイト ルのリンク機能を持ち、階層的ヘルプを実現 できます。工ラー・警告・カイド・質問を出力す るメッセジ機能もあり、ヘルプ機能と連動す るとユーサーフレンドリーなアプリケーション を簡単に開発できます。 DOS 配下でヘルプメ ッセージを参照するユーティリテイや、専用工テ イタもイ寸属。マニュアルレスな時代のアプリケー ション開発にお役に立ちます。 ( この商品をお使 い頂くときには、別売「ウインドウが簡単 V. 1 . 0 」 が必要てす。別売「マウスか簡単Ⅵ .0 」をお使い の方には、マウス対応版のヘルプ関数も用意し ています。 ) 長めの文章をキーボードから入力する機能を 簡単に実現できるテキストエデイタ関数を提供 します。アプリケーションでコメントを入力し たり、通信ソフトで手紙を入力したりするため のエテイタ入力機能を関数ひとつで実現できま す。最 50 字 x 65 凹行のテキストエテイタが、 同時に 20 個作成できます ( 但し、メモリに依存し ます ) 。日本語対応、スクロール、行単位のカッ ト & ペーストをサポート。その他、本格的な工 デイタの開発を支援する関数群を豊富に揃えて います。「キー入力か簡単」にエテイタ入力機能 を拡張した関数も用意しました。「キー入力が 簡単」の手軽さでエテイタ入力機能を実現でき ます。 ( この商品をお使い頂くときには、別売 ー入力か簡単 V. 2.0 」が必要です。 ) 「ファイ J レ・エテイタ」 VER. 1.0 ー Y18 , 000 ソフトウェア・システムを開発する際のテータ・ファイル設計を支援するエテイタ。テータファイル のコードサイズ、各テータ項目のタイプ・長さ・名称等を入力すると、定義テープルがソースコード として出力され、さらにファイル・レイアウトの印字も可能。 「作ろう」シリーズ ( C 言語の教育用パッケージ ) ・「住所録を作ろう」・ ・「スケジュール表を作ろう」・ ・「こづかい帳を作ろう」・ ・「らくかき帳を作ろう」・ ・ VER. 1.0 ー Y6 , 4 側 ・・ VER. 1.0 ー Y8 , 6()0 ロステム構供通 ) ・本体 : PC -9801 (XA/XL/XL2/RL-J\ イレ V/LT を除く ) ・ OS : MS-DOS V3.1 / 3.3 ( F ・ PMS - DOS に添付のもの ) ・プリンタ : NEC PC - P 日 101 系、 PC - P 日 2 田系 ・コンバイラ : Mic 「 osoft-C/Lattice-C/Tu 「 bO-C/Quick-C ( 簡単シリーズは、御使用のコンバイラを指定して下さい。 ) ・メティア : 5 ・ 2HD / 3.5 ・ 2HD ( 御希望のメティアを指定して下さい。 ) ※全商品プロテワトなし、サンプ ル付きでヴ。 ※サンプルソフトを実費 ( \ 1 , 5 圓 ) で販売中 / ※全商品ロイヤリティフリー ※記載されている内容は、将来予告なしに変更することがあります※お問合せはお近くのマイコン・ショップか、私どもへどうぞ ※ MS-DOS 、 Microsoft-C 、 Quick-C は、米国 Microsoft 社の 登録商標です ※ Lattice-C は、米国 La ice 社の登録商標です . ※ Turbo-C は、米国 BorIand 抦 te 「 nation 引社の登録商標です、 〒 790 愛媛県松山市北藤原町 1 ー 26 TEL: ( 0899 ) 3 ト 2886 FAX : ( 0899 ) 41 ー 0336 ・株式 会社 工 1 ステ必工ュニア鱸ユ く資料請求番号 163 〉
C MAGAZINE Access Card をこ利用ください。 C MAGAZI NE アンケートカードをこ利用ください。 本 東京都新宿区市ヶ谷本村町 社 3 ー 22 ナカバビル 9 F 〒 1 62 戸沂 在 谷 ( 03 ) 3266 ー 0711 代 地 國囚圖国 第アリスインターナショカレ D ア ・企業データ 設立 1969 年 4 月 資本金 4 億円 ( グループ本 ) 売上高 1 意円 ( 1990 年月期実績 ) 従業員数 1 网名 事業内容事務系アプリケーション制 御系通信ネットワーク等パソコンソ フトパッケージ開発 関連会社株 M ・ I ・ S インターナショナノ 米国法人 M ・ I ・ S ・ C 。・ LTD , 覺日法 人 M ・ I ・ S AUSTRALIAPTY ・ L TD, 釜営情報科学研究所 , 株 M ・ I ・ S グラフィックス , (fi)M ・ I ・ S ファイン ズ , (i)l ・ C ・ A 使用言語 C 言語、 COBOL, PL/I, ASM, RPG, FORTRAN, 他すべての言語 使用機種 IBM, 富士通 , 日立 , NEC, VAX, ュニシス他 ■募集要項 職種システムエンジニア , プログラマ , オペレータ 資格高卒以 - ヒ , 男女 , 年歯 0 ~ 35 歳イ立 迄の経験者 , 学生不可 給与 S E : 50 万 ~ 65 万円 P G : 30 万 ~ 50 万円 O P : 20 万 ~ 35 万円 勤務時間 9 : 00 ~ 17 : 30 ( ー・ , 部フレックスの場所も有り ) 休日完全週休 2 日制 , 祝祭日 応電調里絡の上 , 履歴書 ( 写真貼付 ) を持参下さい ※面接交通費 , 一律 180 円支給 ※ Bing, フロム A, とらば ~ ゆ , C マガジン , 日経コンヒ。ュータ 毎号掲載中 圃 JR ・都営新宿線・有線 市ヶ谷駅下車走歩 5 分 面接場所東京都新宿区市谷本十丁 3-22 ナカバビル 9F 〒 162 谷 ( 03 ) 32 ー 0711 担当 / 牧野 , 佐藤 優雅な生活の創造 0 SE ・プログラマー オペレータ ( 各契約社員 ) SE : 5 ロ万 ~ 65 万円 PG: 3 ロ万 ~ 5 ロ万円 OP: 2 ロ万 ~ 35 万円 只夬・只夬 責イ壬を持って只夬致しまづ 勤務場所 都内各所・市谷・新宿・ 高田馬場・渋谷・池袋・ 茅場町・新橋・五反田・品川・日暮里・国立・学芸大学・大手町・田町・ 目黒・神田・曙橋・秋葉原・中目黒・立川・蒲田・千葉・船橋・溝のロ・ 横浜・新横浜・関内・天王町・川崎・浜松町・大森・赤坂・大船・大塚・ 亀戸・府中・王子・我孫子・柏・鎌倉・高井戸・八王子・春日・尻手・東 村山・浜町・葛西臨海公園・海浜幕張・千葉港・厚木・武蔵境・御成門・ 市原・三鷹・大宮・麹町・綱島・武蔵中原・新浦安・門前仲町・大崎・青 山・六本木・四谷・晴海・赤坂見附・西船橋・桜木町・東神奈川・江田・ 市が尾・君津・磯子・横須賀・浦和・相模原・町田・品川・戸塚・羽田・ 八幡宿・土浦・水戸・他都内周辺 ※名画、花と緑の美しいオフィスでお待ちしております ※希望の勤務地が選べます 東京シャープビル 市ヶ谷駐屯地 交番 住友市ヶ谷 株アリス ビル インターナショナル ナカバビル ←新宿 C MAGAZINE 1992 ・ 3
スタートアップ C 十十 実力養成講座 り , プログラムの生産性を向上することが C 十十用のクラスライプラリ群が , 流通し始 ど大きな効果を上げるものて、はないといえ 可能になるのて、す。 めています。しかしながら , 実際に開発プ ます。とくに , 閉じた再利用て、はなく , 変 ロジェクトにこのクラスライプラリ群を用 これが , オプジェクト指向型言語として 数をも含めた再利用を行おうとする場合 , の C 十十の持っ , 二番目の利点て、す。一般に いることて、生産性を上げようと試みる場合 , 試行錯誤の時間を必要とするのて、 , む . しろ いわれているオプジェクト指向の利点とは , 開発の初期段階て、は , 再利用可能なライプ その分の工期を含めて考えたほうがよいか このクラスライプラリにより実現て、きる , ラリは「無」て、あると見積もったほうがよい もしれません。再利用可能なクラスライプ て、しよう。実際にその開発チームにおいて作 高い生産性が強調されることのほうが多い ラリは , そのチームの開発経験と比例して という感もあります。 られたり , 少なくとも再利用された経験の 蓄積されるものて、す。そして , その蓄積に 最近て、は , 商用 , フリーソフトを問わず , あるクラスライプラリて、なければ , それほ 反比例して生産性は高まるのて、す。 実践編 白倉伸一郎・山本浩文 「 - クラスライプラリなるもの 今回のお題は「クラスライプラリ」て、す。 「クラスライプラリ」とは , 学級文庫のこ とて、はありません ( 誰もそんなこと思ってな いって ) 。広義て、は , クラスをまとめたライ プラリて、ありさえすれば , 何て、もクラスラ イプラリだということになります。 しかし , 一般に「クラスライプラリ」とい データ型式を扱うためのルーチンの寄せ集 いわけて、す。 った場合 , iostream クラスや complex クラ め」 これが , 従来のライプラリの正しい つまり , バイト列として扱うからといっ スなどは含まれませんし , いわゆる「ライプ あり方にほかなりません。 て , どんな型式の要素て、も扱えるわけて、は ラリファイル」の型式をしている必要もあり しかしながら , 線形リストだの仮想配列 ありません。これらの関数が扱える要素は , ません。もつばら , 何らかの形て、お互いに だのといったデータ構造て、は , 全体の構造 最低限 , 「サイズがある ( これは当たり前 ) 」 関連しあった一連のクラス群のことを指し は決まっているとしても , 個々の要素のデ 「お互いに比較することがて、きる」という , ます。 ータ型式はケースパイケースて、す。もし , ふたつの特徴を持ちあわせていることにな このような「要素の集合体」を扱うための処 どうしてそんなものが必要に ります。 いったい 理を汎用化しようと思ったら , 不定なデー , こに着目して , List 1 のようなクラスを なるのか。その辺りから , お話を始めよう タ型式を扱わなければならくなります。 考えてみましよう。 かと思います。 この Comparable クラスて、は , サイズ情報 C 言語の標準ライプラリを探すと , かなり 「 = - クフスライプラリの方向性 近い線に挑戦している関数があります。 qs と比較関数がメンバ関数として用意されて ort( ) や bsearch( ) , lfind( ) などがそれて います。したがって , qsort なり bsearch なり す。 を書き直して , 「 Comparable の派生クラス 不定型な要素を扱う汎用ルーチ、 これらの関数て、は , おのおのの要素がど を要素とする配列」を受け付けるようにすれ ライプラリの名作中の名作といわれる , んなデータ型式をしているか , なんてこと ば , もう余計な引数はいりません。これら 高水準入出力関数ファミリ (stdio)o その実 は頭から無視して , 単なるバイト列として の関数が内部て、 , 必要な情報を要素そのも 体は , 「 FILE 構造体とゆかいな仲間たち」と 取り扱っています。その代わり , 各要素は のから引き出せるからて、す。 いったところてす。 どれだけの大きさてあり , また , 要素同士 従来の ( C 言語の ) 世界ては , ライプラリの を比較するにはどうしたらよいのか , とい 成功の秘訣はここにあります。「ある特定の う情報を外から与えてやらなければならな ス ラ ク 0 、 0 ・ 1 れ 1 み 0 み 00 4 ァータ型 いま述べたことを実行すると , 超基本クラス ObJect スタートアップ C 十十 91
くないため , 以下て、は MS-CVer. 6.0 を使用 した結果を紹介します。 アイムスライス方式 RT の機能をすべて紹介するには誌面が足 りませんから , 簡単なテストプログラムて、お もな機能を見ていくことにします。 まずはタイムスライス方式のテストプログ ラムを List 1 に示します。コンパイルスイツ チはリストの初めに記述しており , taskl. e xe, task2. exe のふたつが作成されます。 ta skl て、は亘キーが入力されるまて、キー入力 を待ち , task2 て、は無限ループて、表示を続け ています。これを実行するにはパラメータフ ァイル testl. ctl ( リストの初めに記述 ) を作成 し , eds testl とします。 List 1 のように , タイムスライス 方式は他タスクとの関係をあまり考慮する必 要がなく , 厳密なリアルタイム性が必要とさ れない ( とりあえずすべてのタスクが , まん べんなく動作していればよい程度 ) システム て、はタイムスライス方式が手軽て、しよう。実 際のシステムて、は一度起動したらプログラム を終了させることはないため , RT のシステ ム関数をまったく使用しない形て、プログラム を作成することも可能て、す。 RT がどのような手段て、スケジューリング を行っているかは不明て、すが , 一般的に MS ー DOS て、マルチタスクを行うには , ① MS ー DO S が再入可能でないという点を解決する必要 があります。 この問題は DOS ファンクションの割り込み べクタ 21h をフックして , タイマ割り込みが 発生したときに DOS ファンクションを呼び出 し中てあれば , それが終わってからスケジュ ーリングを行うようにすればなんとか解決て、 きます。 筆者もこの程度まて、のスケジューラて、あれ ばその昔に自作したことがあります。しか C M AGAZINE 1992 3 し , C 言語を用いる場合にはさらに , ②℃コ 122 TabIe 1 項 タスク数 製品概要 目 内 32 販権 価格 対応機種 並列処理数 タイマ管理インターバ ル タスク制御方式 拡張メモリ プロテクトメモリ EDS. EXE, EDS 爪 ST. EXE をユーザプログラムに添付可能 ランタイム使用料と再マニュアルなどに RTx86 / RT386 の使用を明記すればランタイム使用料は不要 Panacom M500 / 700 / 800 シリーズ ( RTx86 のみ ) FM ー R50 / 60 / 70 シリーズ ( RTx86 のみ ) AX マシン ( 日本語モード ) 上 3100 シリーズ ( 日本語モード ) PC ー 9801 シリーズ / FC ー 9801 シリーズ MASM Ver. 5.1 MS-C Ver. 5.1 / 6.0 ( 全メモリモテル ) Lattice C Ver. 4.1 ( 全メモリモテル ) MS-DOS Ver. 3. x 以上 spawn, f0 「 k 関数で同時にひとつだけ起動可能 実行形式ファイル (EXE) FOh—FFh ( 仮想 86 モードを使用するほかのユーティリティと共存不可 ) RT386 で利用可能 LIM EMS 4 ℃ ( 1 タスク 64K バイト以下 ) イベントドリプン / タイムスライス ( タイマ割り込みを使用するほかのユーティリティと共存不可 ) 1 Omsec タスク数と同じ ( ただしメモリ容量などに依存 ) 子プロセス タスク単位 使用割り込みべクタ OS 五 RTx86 : \ 198 OOO RT386 : \ 298 , 000 DST ( 総合デバッグ支援システム ) : \ 238 , 000 日 S ー 232C RT ータスクライプラリ \ 58 , 000 RT タイムスライステストプログラム LiSt 1 : 3 : 5 : 8 : : 11 : : 14 : RT タイム・スライステスト・フ。ロク・ラム ファイル名 : testl. c 7 : Microsoft (R) C CompiIer Version 6. 00A 9 : cl /DTASKI /J /Gs /W3 /zp /FetaskI testl. c /link edsmss ・ 10 : cl /DTASK2 /J /Gs /W3 /Zp /Fetask2 testl. c /link edsmss 、 12 : cl /DTASKI /J /Gs /W3 /Zpl /Fetask1 testl. c /link edsmss + sl ibcr + libh ・ 13 : cl /DTASK2 /J /Gs /W3 /Zpl /Fetask2 testl. c /link edsmss + slibcr + libh ・ 15 : testl. ctl の内容