ファイル - みる会図書館


検索対象: 月刊 C MAGAZINE 1991年5月号
70件見つかりました。

1. 月刊 C MAGAZINE 1991年5月号

C プロ ク、一 フム。 特集 ひとつは struct の内部バッドが生じるかどう かという問題て、す。なお , 両者のポリシは 必ずしも同一て、あるという保証はないのて、 注意してください。次のような構造体の宣 言を考えてみましよう。 struct f00 その副作用が部分式評価のいつの時点て、効 果を現すかが規定されていないことてす ( 次 char y [ 7 ] ・ の式の評価がはじまる以前に効果が現れる ことは定められています ) 。これらの特性に 各メンバ単独の size 。 f の総和が構造体全体 依存したコーディングは移植の際に問題と の sizeof に等しいということは仮定しないて、 なります。 ください。上の例ては , char y [ 7 ] ; の代 int i,• char y [sizeof(struct bar)] ; を使 int a [ 10 ] ・ わりに ったほうが移植性は高くなります。そして 各メンバのオフセットは , 次のようなマク 口を使って調べればよいて、しよう。 i 十十 ; #define memberOffset(type, member) これは , 典型的な誤りの例て、す。このコ (&((type*)O)->member) ーディングを行ったときに , i 十十の値 ( これ は 0 て、あることは保証されます ) は a [ 0 ] に このような配慮をしたとしても , 構造体 をバイナリデータとしてファイルに書き込 代入されるのて、しようか , それとも a [ 1 ] む場合には , アライメントボリシに応じて て、しようか。問題なのは , コンパイラがこ ごみが書き出される場合があります。いず この struct f00 と struct bar はいったいど の誤りを警告することはなく , それぞれの のようにメモリ上に割り付けられるて、しよ れにせよ , 構造体のメモリ割り付けに関し 処理系て、それなりの結果がて、てしまうとい ては要注意て、す。 うことて、す。ところがその結果は処理系に うか。これはコンパイラのアライメントボ リシによってさまざまて、す ( とりあえず , short 依存していて , ある処理系て、は a [ 0 ] てあ は 2 バイト , long は 4 バイトて、あるとしてお ったとしても , 別の処理系ては a [ 1 ] かも ビットフィールド きます。 Fig. 3 参照 ) 。 しれません。また , 状況に応じて結果が変 このように , アライメントボリシと宣言 わるというコンパイラがあるかもしれませ K & R 第 2 版ては , 「 ANSI 規格て、は , ( ビッ の順序によって実際にメモリに割り付けら ん。仮に移植を前提にしていないとしても , れる状態に大きく差がて、る場合があります。 ト ) フィールドはむしろ K&R 第 1 版よりも処 このようなコーディングは避けるべきてす。 理系依存になった」と書かれています。 CPU ひとついえることは , 構造体のメンバを宣 言する順序が重要て , なるべく「大きな」デ にもよりますが , ビットフィールドは効率 ータオプジェクトから先に指定したほうが よくインプリメントて、きない場合も多く , よいということて、す。 あえて使うだけの意義を見いだせない場合 がほとんどてす。ビットフィールドは用い K & R の文法ては , 関数呼び出しに際して MS-C のように , アライメントボリシをス ないほうがよいて、しよう。 実引数は必ず default argument promotion イッチてコントロールて、きるコンパイラも ( 通常の引数格上げ ) を受けます。その結果 , ありますが , アーキテクチャ上の制約から 実質的に引数に渡されるのは以下の型 , きている場合には char て、アラインするのは int, long, データオプジェクトへのポイン 不可能な環境もあります。もし , メモリ上 タ , 関数へのポインタ , double となりま に具体的にどう割り付けられるかがきわめ C ては , 古くから評価の順序に関してはか て重要な用途てあれば , 構造体を使うのは す。 K & R のコンパイラてはこれ以外の型の なり曖昧な規定しかなされていませんてし 好ましくないのかもしれません。たとえば , 値が実引数として渡ってくることはありま た。たとえば , 二項演算子の両辺の部分式 次のような共用体の宣言は明らかに移植可 せんてした。たとえば , char の実引数は int の評価順序は原則として規定されていませ へと拡幅され , float の実引数は double に拡 能とはいえません。 union f00 { ん ( カンマ演算子 , 論理和演算子 , 論理積演 幅されて渡されていたのてす。そのため , 算子などは例外 ) 。また関数の引数の評価順 古いコンパイラては仮引数を char と宣言し struct bar 序も規定されていません。もっと重要なの ていても , 暗黙のうちに int と読み代えてコ Char は , 副作用をもつ部分式が存在する場合に ンパイルするものがありました。 long 特集 C プログラム移植入門 61 shO 「 t char . O long short 0 ; st 「 uct ba 「 long short Char . Q O 関数の引数型 2 ー 10 評価の順序 b ;

2. 月刊 C MAGAZINE 1991年5月号

extern long f00 (long, long); extern double bar (double, double); 一方 , ANSI が定義されていない場合には 引数は ( ) となり , OId style になります。類 似の手法として次のようなものがあります。 #ifdef ANSI # define DCLFUN(ret, name, arg) \ extern ret name arg #else # define DCLFUN(ret, name, arg) \ extern 「 et name( ) このマクロ DCLFUN(DeCLare FUNc tion) を用いて先の例を記述するとこうなり ます。 DCLFUN(Iong, f00 , (long, long)); DCLFUN(double, bar, (double, double)); ただし , これらの記述方法にはいくつか の制限があることに注意しましよう。 まず , これらのマクロはいずれも関数宣 言にしか使えません。関数定義本体は Old #endif 48 C MAGAZINE 1991 5 定義を Old style て、行うと警告が発せられる がプロトタイプて、なされている場合に関数 ` 、く一部のコンパイラて、すが , 関数宣言 手′ 3 : マクロによる関数定義 ばしば見受けられることて、す。 ったことて、はなく , C プログラミングて、はし く記述て、きないというのは , この場合に限 このように typedef を併用しなければうま DCLFUN(funcp, fn, (int n)); typedef int * (*funcp)(void),• その場合には , 次のようにします。 int * (*fn(int n))(void); なして、は不可能て、す。 宣言を DCLFUN を用いて行う場合 , typede ばなりません。たとえば , 次のような関数 そのようなときには typedef を併用しなけれ 雑なものは宣言て、きないことがあります。 マクロを使う場合 , 関数の戻り値の型が複 style て、行う必要があります。次に ,DCLFUN ものがあります。このような外れたコンパ イラ (OId style と ANSI スタイルて、コードの 生成方針を変更する優秀なコンパイラて、あ るという可能性もあります ) を相手にせざる をえないときには , 残念ながら関数プロト タイプの利用を放棄するか , あるいは関数 定義も ANSI スタイルて、行うくふうが必要て、 す。 そこて、 , 関数宣言だけて、はなく , 関数定 義もマクロて、行って , Old style と ANSI ス タイルを切り換えることを考えましよう。 ただし , 残念ながらこちらのほうはあまり エレガントな解とはいえない部分がありま す。というのは , 定義したい関数の引数の 個数が何個て、あるかに応じてそれぞれ別の マクロを使わざるをえないからて、す。これ は主として C のプリプロセッサにマクロの引 数を分解して複数のトークンを作り出す機 能が備わっていないことに起因します。と にかく , 引数の数が 0 個から 2 個まて、のマク ロ定義例を示しておきます。 #ifdef ANSI # define DEFUN0(ret, name) \ ret name(void) typel, argl) \ # define DEFUN1(ret, name, type2 arg2) ret name(typel a 「 gl, typel, a 「 gl, type2, a 「 (2) \ # defineDEFUN2(ret, name, 「 et name(typel a 「 gl) #else # define DEFUNO(ret, name) \ typel, argl) \ # define DEFUNI(ret, name, ret name( ) 「 et name(argl) typel argl : # define DEFUN2(ret, name, typel, argl, type2, arg2) \ #endif type2 arg2; typel argl ; ret name(argl, arg2) を確保しています。 テジを用いて K & R と ANSI C の間の移植性 タて、ある GhostScript のソースがこのストラ PostScript 互換のページ記述言語インタブリ ほうが現実的て、す。 GNU が配布している わないというような制限を置いて処理する 数宣言や関数定義て、はマクロ置換は一切行 法にある程度限定を加えます。たとえば関 ルを用いる場合には , 入力ソースの記述方 からて、す。そのため , もしこのようなツー 記述方法て、行われているケースがありうる て , 関数宣言や関数定義が通常とは異なる 入力ソースの中て、マクロ置換がなされてい たいへんて、す。手法 2 , 3 て、示したように も完璧に変換て、きるようにしようとすると ますが , 実際にはどのような入力ソースて、 ルタブログラム ) を作るのは簡単そうに思え うアプローチて、す。変換ツール ( 一種のフィ 仕様のコンパイラ間て、互換性を保とうとい ルを OId style に変換するように構成し , 両 て対応する方法て、す。たとえば ANSI スタイ ソースファイルを書き換えるツールを用い ースレベルて、の移植の可能性をあきらめ , 段て、あると考えるべきて、しよう。つまりソ これは , ちょっと邪道というか , 最終手 手法 4 : ソース書き換え方法 らにくふうが必要て、す。 と , このマクロて、は対応不能て、すから , さ け取る関数を定義する場合のことを考える なお , 後て、述べますが可変個の引数を受 return (a 十 b) > > 1 ; DEFUN2(Iong, f00 , long, a, long, b) ングすればよいのて、す。 数を定義する場合には次のようにコーディ このマクロを用いて , たとえば 2 引数の関

3. 月刊 C MAGAZINE 1991年5月号

LSI C コンバイラ LDB-80X プログラム開発からテパッのまで ・咼速、コンパクトなコードを生成 ・レジスタの最適自動割り付け ・レジスタによるパラメタ渡し ・アセンフ。リ言語の埋め込み記述可 ・ ANSI 準拠・プロトタイプ宣言を完全サポート ・ ROM 化に最適 ターゲット CPU: 8080 / Z80 / 64180 ー MS-DOS 版クロス ・価格 98 , 000 円 ・アセンプラ、リンカ付き ・ UNIX の cc と同様の使いやすいコンパイラ・ドライバ ・ UNIX コンパチ・プログラム保守ツール make ・ライプラリ、コンパイラドライバ、プリプロセッサのソース付き ・ MS-DOS Ver. 2.11 以上、 384KByte 以上必要 ・価格 398 , 000 円より ・ UN Ⅸ版クロス ・ NEWS 、 Sun-3 、 vsx シリーズ、 Kurama 、 SX -9100 シリーズ、 LUNA 、 HP9000 モデル 300 シリーズ、 station200 、 Micro VAX 、 VAX-II ※その他の機種については、ご相談に応じます。 ・ CP, / M 版セルフ 価格 98 , OOO 円 ・ CP/M-80 Ver. 2.2 以上、メモリ 60K CP / M 以上必要 ターケット CPU : 8086 ・価格 48 , 000 円 ・ ROM 化ツール標準装備 ・ far , near キーワードをサポート ・ UNIX の cc と同様の使いやすいコンパイラ・ ドライバ ・ UNIX コンヾチ・プログラム保守ツール make ・ライプラリ、コンパイラ・ドライバ、フ。リプロセッサ のソース付き ・ MS-DOS Ver. 2.11 以上、 384KByte 以上 必要 LDB-80X は、 LSI C -80 (MS-DOS) て、開発したソフトウェアのデ バッグ環境を、 MS - DOS 上て、実現するためのソースレベル・クロ ステ。バッガて。す。これにより、プログラム環境からデンヾッグエ程まて、、 アセンプラを意識することなく C 言語レベルて、のプログラム開発が 行えますのて、、大幅にソフトウェアの生産性が向上します。 ■ LDB -80X には、動作モードとして以下の 3 種類のモードて、、 動作します。 1 . 64180CPU ボ、一ドを使う 180 モード 2. V30CPU の 8080 工ミュレーションを使う V30 モード 3. ソフトウェア・エミュレーションモード •Turbo-V システム、または Turbo-18011 システムと併用すれば、 CP / M -80 のアプリケーションソフト (. COM ファイル ) のラヾッグ が可能て、す。 ・ LDB -80X は、操作性に優れたウインドウ指向テ。バッガて、す。 5 つのウインドウ ( コード、レジスタ、ウォッチ、コマンド、及びオプ ションウインドウ ) とポップアップ・メニューがあります。 実行中のユーザ・プログラムを任意の時点て、、強制的にフ。レー クさせ、制御を LDB -80X に戻すことがて、、きます。 複数のコマンドを組み合わせて、新しいコマンドを構築するマク ロコマンド機能があります。 ・ LDB -80X から MS - DOS のコマンドを起動する、サププロセス 機能を持っています。 ■その他、 LDB -80X には、コマンドウインドウの表示コントロール ( カーソル制御、画面消去等 ) 、 I / O の入出力工ミュレーション、 メモ、オプション設定、ロギンク : バッチ等 のコマンドが用意されています。 ・ MS-DOSVer. 2.11 以上、 384KByte 以上 必要 ・ NEC PC -9800 シリーズ (PC-98XA, XL, XL2, RL のノ、イレソ。リューションモードも含む ) ・ EPSON PC -286 シリーズ / PC -386 シリーズ LSI C-80 (MS-DOS) + LDB-80X セット価格 128 , OOO 円 LSI C -80 LSI C -86 [ LDB -80X の走行環境 ] 一体 ( 代材・孵 it« ( ・ー iter ー リぎ オプショノー覧 グラムロード , リ / ライト 創圧 ( す圏ー 日 21C ゼい 1 当 工ル・エス・アイジャパン株式会社 CP/M は DigitalResearch c. 、 MS-DOS は Microsoft Corporation 、 Z80 は z ⅱ og コ nc. のそれぞれの登録商標です。 〒 151 東京都渋谷区千駄ヶ谷 1 丁目 8 番 14 号 UNIX は Bell Labo 「 ato 「 ies の米国内での登録商標です。 LDB ・ 80X, Turb0- V / 180 は京都マイクロコンビュータ 谷 ( 03 ) 3404 ー 1 31 9 ・ FAX ( 03 ) 3478 ー 0576 株式会社の商標です。その他、商品名は各社の商標です。 く資料請求番号 F03 〉

4. 月刊 C MAGAZINE 1991年5月号

「へんてこ MOUSE スケジュールノート」 株アルカス 株アルカスは , マウス形状を好きな形に 変更てきる機能つきのスケジュール管理ソ フト「へんてこ MOUSE スケジュールノート」 を発売した。おもな特徴は以下のとおり。 ・データの登録にはマウスとキーポードか らの入力が可能 ・データは 1 日 6 データまて登録 一覧表による月別のスケジュールを確認 てき , 数年前のデータても一覧てきる ・スケジュールノートとは別に黒板が用意 され , 三つのスケジュールを別々に管理 ・カレンダーは前後 3 か月分同時表示 く動作環境 > ・対応機種 PC ー 9800 シリーズ PC ー 286 / 386 シリーズ ・必要 OS MS-DOS Ver. 2.11 以上 ・必要メモリ 640K バイト以上 ・マウスノヾスマウス く価格 > 9 , 600 円 問い合わせ先株アルカス 〒 331 埼玉県大宮市櫛引町 2 ー 308 TEL 048 ー 653 ー 1348 マルチタスク BAS ℃ 「 Basic/V 」 株日新システムズ 株日新システムズは , N88 一日本語 BASIC ( 86 ) 互換をもち , MS ー DOS 上てマルチタス ク処理可能なコンパイラ「 Basic/V 」を発売 した。おもな機能は以下のとおり。 互換性 N88-BASIC(86) と高度な互換性をもつ。 マルチタスク N88 ー BASIC ( 86 ) てのひとつのプログラム がひとつのタスクとなり , 複数のタスク のマルチタスク化が可能。 154 C MAGAZINE 1991 5 C-MAGA 問い合わせ先株日新システムズ く価格 > 98 , 000 円 要マクロアセンプラ , リンカ ・対応 OS MS-DOS Ver. 3.1 以降 ・対応機種 NEC PC, FC シリーズ く動作環境 > ソースコードデバッグ 使用てきる。 関数のように , モジュールを呼び出して プログラム資産を蓄積てきる。組み込み プログラムをモジュール化することて , モジュール化 リンクし , 実行ファイルを作成可能。 て作成されたオプジェクトプログラムと N88-BASIC(86) をコンパイル。他の言語 コン / ヾイラ 〒 103 TEL 東京都中央区日本橋人形町 1 ー 9 ー 2 「 M icrosoft 03 ー 3639 ー 3077 富士ビル 8F バイザーライプラリ」 Quick シリーズに搭載されているオンライ ンヘルプ機能「 Quick アドバイザー」のア プリケーションソフトウェアへの組み込 みを可能とするライプラリ。 「マイクロソフト C プログラマーズツール キット」 OMF フォーマットやコードビューシンポ ル情報 , マイクロソフトの言語製品の内 部情報を公開するもの。 なお , 購入するには MS ー C Ver. 6.0 に同 封されている申し込み券にて。 く動作環境 > ・ MS ー C Ver. 6.0 , Macro Assembler Ver. 5.1 以上 ・ MS-DOS Ver. 3.1 以上 OS/2 Ver. 1. IA 以上 ・ハードディスク 3M バイト以上 く価格 > 50 , 000 円 問い合わせ先マイクロソフト株 C DeveIoper's T001kit 」 マイクロソフト株 「マイクロソフトプロフェッショナルアド ド約 400 種類を提供。 イプラリのほとんどすべてのソースコー MS-C に含まれる MS-DOS, OS / 2 用のラ キット」 「マイクロソフト C デベロッパーズツール は以下のとおり。 がパッケージされている。それぞれの内容 ロソフト C プログラマーズツールキット」 ナルアドバイザーライプラリ」 , 「マイク キット」 , 「マイクロソフトプロフェッショ 「マイクロソフト C デベロッパーズツール Microsoft C Developer's Toolkit には , Developer's T001kit 」を発売する。 ひとつにパッケージした「 Microsoft C 開発環境を向上するための 3 種類のツールを マイクロソフト株は , MS-C Ver. 6.0 の 〒 105 TEL 東京都港区芝 1 ー 11 ー 11 住友不動産ビル 9F 03 ー 5484 ー 0700 rTurbo PascaI 6.0 」 株ボーランドジャパン 株ポーランドジャパンは , PC ー 9800 シリー ズ用「 Turbo Pascal 6.0 」および「 Turb0 pascal 6.0 PROFESSIONAL 」を発売す Turbo Pascal 6.0 PROFESSIONAL 版にはプロテクトモードコマンドラインコ ンパイラ , オプジェクト指向プログラミン グに対応した Turbo Debugger 2.01 , 最適 化のための Turbo Profiler 1.01 , MASM 4.01 , 5.0 との高い互換性をもつ Turb0 AssembIer 2.01 が付属している。 Turb0 Pascal 6.0 のおもな特徴は以下のとおり。 Turbo Vision オプジェクト指向によるユーザインタフ

5. 月刊 C MAGAZINE 1991年5月号

ラ す。 intr21( ) 関数を使うことに機種依存し int86 関数 ソフトウェア割り込み ないプログラムの秘密があります。 int86 関数は , 8086 用のほとんどすべての int 命令による呼び出し以外にも , つまり , マシンによって intr21 ( ) 関数の 処理系で用意されている事実上の標準ライ ① div, id ⅳ命令によって 0 による除算カ哘 中身はまったく違いますが , パラメータや , プラリということができます。 REGS 共用体 われた場合 呼び出す方法は機種に依存せずに同一だか にセットしたバラメータがレジスタにコピ ②シングルステップモードで動作してい ーされ , ソフトウェア割り込みが実行され る場合 らてす。 ます。 などでもソフトウェア割り込みが発生しま 割り込み関数に渡すパラメータは通常 ( 最 int86 関数は 0 ~ 0xFF までの任意のソフト す。また 80286 では und 命令による範囲超 初に説明した ) レジスタにセットします。た ウェア割り込みを発生させることができま 過検出による割り込みなどがあります。 とえば MS ー DOS て AH レジスタに 2 を , DL レ す。さらに MS-DOS ( 0X21 ) 割り込み専用の もちろん int は C でいう integer( 整数 ) では ジスタに文字をセットして intr21 ( ) を呼び intdos 関数が用意されている処理系もありま なく , interrupt( 割り込み ) です。 出すと , その文字を画面に表示します。本 す。またバラメータに dx と ax しかセットす る必要がない場合のために bdos 関数も用意 当は C には intr21 ( ) などという関数は存在し のて、した。て、すからここて、も大胆に intr00 ( ) , されています 0List 2 のプログラムを intdos, ませんから , int86 ( ) 関数を使用します ( コ ・ , intrFF( ) の 256 関数が用意 intr01( ) , ・ os 関数を使用して書き直したプログラム ラム「 int86 」関数参照 ) 。 されており , それを が List 3 です。 List 2 がそのプログラムて、す。ここ CREGS intr05( ) ; こで簡単に紹介した関数以外にも割り 共用体はく dos. h > に定義されています。 のように呼び出すと考えます。 込み用の関数が用意されていますので , お こにセットした値が本当のレジスタにコヒ。 手元のマニュアルで確認してください。 MS ー DOS と互換性 なお MS - DOS では 0X21 だけではなく , 0 ーされます。 X20 ~ 0X27 などが用意されます ( もっとも大 MS ー DOS 汎用の処理系のライプラリは , MS-DOS 上てあれば , どんなマシンても 部分は 0X21 です ) 。 表示 (printf など ) やディスクの読み書き 動作するプログラムがあります。マシンが ( f 叩 en など ) はすべて内部的に intr21 ( ) 関数 違えば , CRT もディスクドライプも内部構 そのほかのソフトウェア割り込み 呼び出し ( システムコール ) を行っています。 造がまったく違うはずなのに , なぜ同じソ さて intr21( ) 関数は MS ー DOS を起動した フトウェアが動作するのてしようか。画面 ときに自動的にメモリ上にロードされるも に文字を一文字出力するにしても , 文字の MS ー DOS 上の標準ライプラリでは , 画 のてあることは察しがっくと思います ( だっ ドット数 , 画面に表示て、きる最大の文字数 面やディスクなどへの入出力は内部的 て MS ー DOS を使っているときだけ使えます などは違うはずて、す。 に MS - DOS のシステムコールを行って MS ー DOS 上のプログラムて , 画面に表示 からね ) 。 したり , ファイルをオープンしたりするに そのほかにも最初から ROM に用意されて いる。 は , 基本的に intr21 ( ) 関数を呼び出しま いる物もあります。これカ陏名な ROM - OS MS ー DOS のシステムコール利用例 List2 の別バージョン コラム 1 List List 2 : 4 : 5 : #include く dos. h> 6 : 7 : #define dos_putchar 1 (x) 8 : 9 : void dos-putchar2(int x) 10 : { un i on REGS reg , 13 : reg. h. ah 14 : reg. h. dl intdos(&reg, &reg) : 17 : 18 : int main(void) 19 : { 20 : dos-putcharl(' 1 ' ) ; dos-putchar2('2') : return ( の : 22 : 23 : } 2 : 3 : 5 : 6 : # i ncl ude く dos. h> 7 : 8 : VOid dos-putchar(int x) union REGS reg, reg. h. ah reg. h. 引 int86 ( 0X21 , &reg, &reg) : 17 : int main(void) 18 : { dos-putchar('A') : return ( 0 ) : 20 : い st2 の dos-putchar() の別パージョン MS-DOS ファンクションコールを 利用して文字を表示する (bdos(2, x, の ) 142 C MAGAZINE 1991 5

6. 月刊 C MAGAZINE 1991年5月号

学 五ロ 許せる範囲て、す。 このように変更したプログラムが List 6 て、 す oalloc node てノードを確保しようとして 失敗すると , malloc を使って ALLOC UNITS 個のノードのための新しいプロック を確保しようとします。これにも失敗する と NULL を返します。新しいプロックが確 保てきると , これを Freelist に追加します。 この処理は List 3 と同じてす。 このプログラムて問題になるのは , 一度 malloc によって確保した領域は , 二度とシ ステムに返却されないという点て、す。 List 6 て、は mall 。 c によって確保した領域の先頭ア ドレスを保存していません。したがって , free て、解放することがて、きないのて、す。その うえ , ノードを free node によって解放する と , 単に FreeIist の先頭に追加しているだけ て、 , そのノードがどのプロックに属してい るのかを判定していません。きちんと free に するためには , free node ては解放した / ー ドがどのプロックのものなのかを判定し , そのプロックのすべてのノードが解放され たときにはプロック自体を free にするように 変更する必要があります。 この変更は練習問題として残しておきま しよう。各プロックにヘッダ情報を付加し てやれば簡単て、す。ヘッダにどんな情報を もたせるとよいか , 考えてみてください これらのプログラムをコンパイルして実 行ファイルを作成するための makefile を付 録ディスクに収録しました OLSI C ー 86 て、開 発しましたが , ほかのコンパイラて、も変更 することなく動作すると思います。 報に 4 バイト必要なのて , 結局 , mall 。 c を呼 クは List 5 のヘッダ情報をもっています。 び出すたびに 12 バイトのメモリを使用する の情報のおかげて , free によって解放された いくつもプログラムを書いていると , 数 メモリプロックはその前後のフリープロッ ことになります。 1000 個のノードをアロケ 多くの小さなデータを動的に作成しなけれ ートすると , 何と 4K バイトもヘッダ情報の ばならない場面に出会うものてす。それら クと併合され , より大きなひとつのフリー プロックとすることがてきます。 ために使われてしまいます。 をいちいち malloc て確保するのは初心者だ ところが , 多数の小さなデータを必要と このムダを回避するのは意外に簡単てす。 といえるてしよう。中級以上を自認する人 するようなプログラムては , データの大き ノードの配列をひとつの単位と考え , この なら , 少なくともこの程度のテクニックは さに対するヘッダ情報の比率が大きくなる 配列ごとに malloc によってメモリを確保し 知っていてほしいものてす。ちょっといい のて , メモリの使用効率が悪くなってしま ます。 1000 個のノードをひとつの単位とす すぎかな ( 笑 ) 。このようなテクニックを使 います。 NODE 型は 8 バイト (int, ポインタ ると , 8K バイトのノードに対して 4 バイトの うのは , 時と場合によるということにして は 16 ビットと仮定します ) てすが , ヘッダ情 ヘッダてすから , これならへッダのムダも おきましよう。 ヘッダ情報 1 : typedef long AIign, 2 : 3 : union header { struct { 4 : / * 次のプロックを指す 5 : un ion header *ptr; / * このプロックのサイズ * / 6 : unsigned size; 7 : 8 : Align x; List 5 node3. c ( ムダなし m 訓 oc 版 ) ムダなし ma 日 oc 版 * / 1 : / * n 面 e3. c ーノードのためのメモリ管理モジュール 2 : 3 : #include く stdio. h> 4 : #include く stdlib. h> 5 : 6 : #include ” node. h ” 7 : / * 一度に確保する NODE 型構造体の数 * / 8 : #define A し LOC_UNITS 1000 9 : 10 : / * フリーリストの先頭を指すポインタ * / 11 : static NODE *Freelist; 12 : 13 : / * a 目 node() は新たなノードをフリーリストから取り出して返す。 ノードの残りがないときには NU ししを返す。 14 : 15 : 16 : NODE * 引 loc_node ( ) NODE *p; int i; 20 : / * malloc したノードを使い果たした if (Freelist = NU しし ) { / * 次のプロックを malloc で確保する * / 22 : if ()p = malloc(sizeof(NODE) * A しし UNITS)) = NULL) { 23 : / * malloc に敗した * / return (NUL し ) : 24 : 25 : / * 新しい領域をフリーリストに加える * / 26 : for (i = 0 : i く A し LOC-UNITS; i + + ) free-node(&p[i]) : 28 : 29 : 30 : p = Freelist; 32 : PreeIist = p->left; return (p) : 33 : 34 : } 35 : 36 : / * free ー node() は用ずみになったノードを Fr ⅱ st に加える * / 37 : 38 : void free-node (NODE *p) 39 : { 40 : p->left ニ Freelist; 41 : Freelist = p; 42 : } 43 : 44 : / * init ー node() はノードのメモリ管理の初期化を実行する a Ⅱー n 面 e ( ) を呼び出す前に一度だけ実行しなければならない * / 45 : 46 : 47 : void init-node() 48 : { / * 最初はノードはない * / 49 : Pree ⅱ st = NU しし : 50 : } List 6 / * フリーリストの先頭を * / / * 取り出して返す C 言語雑学講座 121

7. 月刊 C MAGAZINE 1991年5月号

馬力の向上した一部分をファイルシステム の安全性向上やデータ転送の信頼性向上な どに向ける。偏見のない観察者なら目に見 えるものの信頼性改善はわかりやすい。し たがって , ハードウェアの信頼性をはかる のは比較的容易だ。 ソフトウェアの品質ははるかにわかりに くい。コードを読むことて、判断が可能な部 分もある。大量のテストを通してしか見き わめられない部分もある。このテストはし ばしば本当の意味て、のコード開発費用の大 きな部分を占めていることがある。しかし , 最終的にはいくらべンチマークテストをし てもフィールドてコードが正しく動作する かという重要な疑問には答えてくれない ードウェアの場合 , 一部をバラックて、 組みさえすれば , 十分な動作テストが可能 だ。製品バージョンになればもっとうまく 動作する可能性もある。ソフトウェアて、も 一部をプロトタイプ化し , ほんのいくつか の有用なテストをすることはてきる。しか し製品バージョンての信頼性テストに関し ては最初から始めなくてはならない。 重要性において , 動作コードの成長はソ フトウェア工ンジニアリングの知識と同等 て、ある。ひとつの基本設計から 50 本の橋を 架けるのは大した仕事て、はない。しかし 50 本の有用なソフトウェアを作るのは大仕事 だ。 1 本 1 本がカスタム品て、あり , 蓄えた 知識に対する有用な追加だ。 まだ違いがある。もし橋が崩れ落ちたら 捜査官はエンジニアリングと工事のどちら に問題があったかすぐに判断て、きる。工ン ジニアのミスは減少している。工事材料の 特質をよく理解していることと高い安全性 を信頼てきるからて、ある。しかしプログラ ムがフェイルした場合の区別は困難だ。ソ フトウェア工ンジニアリングとプログラム 工事の概念の差は非常に小さい。自信をも って「私のせいてはない」とはっきり主張 するのは困難だ。 このような欠点にもかかわらずソフトウ ェア開発は規律として成熟しつつある。私 24 C MAGAZINE 1991 5 たちは増えた馬力をより信頼性の高い製品 を作るために使おうとしている。私たちは 信頼性の高い製品を作るのにたけてきてお り , 安全性を高め使い勝手をよくすること の重要性も認識している。 こて、いう「私たち」とはコンヒ。ュータ 業界一般を指している。しかしこの態度を 身につけていないプログラマがまだまだ多 すぎる。依然として非常に多くのコードが ライト兄弟の飛行機のように , つまり自転 車屋の手作り風て、あり , また , 不十分な材 料と技術て、生産されている。このようなや り方は家庭て、の遊びて、ある。クラッシック なハッカーなら楽しむがプロフェッショナ ル的て、はない 信頼性の高いコードを書くことに関して 細かいことを長々と書いたことがある。 「 Writing predicates(fComputer Lan guage 』 ' 86 年 8 月号 ) 」だ。信頼性とテストの 容易さを念頭に置けばスポンジのような ( あ いまいな ) コードは書けないだろう。そうす れば結局デバッグもうまくいく。 よいコーディングテクニックも依然とし て大事だと確信している。そのことはこの 工ッセーのポイントとは違う。チェインの 強度はリンクのいちばん弱い部分に依存す る。強度の高いリンクを作れるしそうすべ きだが , これは必要条件て、あり十分条件て、 はない。システム全体の信頼性を高めるに はチェーンの部品の分散化を避けるべきだ。 いちばん強度の弱いリンクについてはその 強度に関して何も証明て、きないのだから。 一般的に分散コンヒ。ューティングに関し ては , その有用性のほんの一部しか成功し ていない。楚結合を含み , かっそのほかの 部分は独立てあるようなシステムだけがう まくいった。このようなシステムて、はほか のシステムとのリンクを疑い , チェックや リトライのためのロジックに投資する余裕 があるからだ。一方 , 密結合システムはよ く知られるように失敗しやすい コンヒ。ュータ化システムに対する信頼性 の要求が高いほど , 並行性と楚結合と再構 築性が必要になる。ハードウェアに対する ーズはすて、にはっきりしている。ソフト ウェアに対するニーズはだんだん明確にな りだしている。スペースシャトルの誘導シ ステムなどのようにきわめてクリティカル なシステムて、は信頼性をあげるための費用 は簡単に認められる。同じソフトウェアを ふたつの別々のチームて、コーディングし , 両方のバージョンて、チェックし合いながら 飛ばすことは意味のあることだ。数十の交 通信号の制御も重要だがスケールが違う。 フェールセーフ動作と高信頼性動作を目指 したコーディングがソフトウェア開発者に 期待される最低限て、ある。 時代の責任 強制されないかぎり誰も責任をもったコ ーディングをしないといっているのて、はな い。コンピュータのアプリケーションにお いて新時代を迎えつつあることを単に強調 したいだけだ。熟練したユーザのためて、は なく , 器具として使われるソフトウェアが 増えている。多くのソフトウェアが未熟な 顧客に損失や傷害を与える恐れのあるケー スて、使われてきている。防衛的コーディン グや高信頼設計を , へマをカバーするため と考える人もいるかもしれない。しかし保 険会社が好きだという理由て、保険に加入す る人はいない。極端な損害をある程度て、く い止めるためにそうするのだ。また診断テ ストを誤った治療に対する防衛とみなして いる医者は少数て、はない。つまり消極的か 積極的というより , 行動が問題になる。 かってのような寛容がプログラマに与え られた時代はとっくに過ぎ去ってしまった。 プロとしての扱いを受けたければほかの職 業のプロが負っているのと同程度の責任を 負うべきだろう。そうしないと , ある日目 覚めたら熱湯の中や寒い戸外に置き去りに されていたり , 規則だらけて、ほとんど保証 がない環境に放り出されている自分に気づ くだろう。自分以外誰も責められない

8. 月刊 C MAGAZINE 1991年5月号

、ン心れ AVOCET 黼 [ 3 AVOCET シリーズはマイコン開発を トータルにサポートするツールです。 各¥ 198 , 000 AVXC68K30 ( H8 / 500 用・・・¥ 213 , 000 ) ¥ 398 , 000 AVXC シリーズ 68000 / 10 / 20 / 30 and 68881 / 82 をサポートする爛産化 C コンパイラ。マク ロ・アセンプラ、リンカ、ロケータ、オプジェクト・ライプラリ、逆アセ ンプラ等付。 ROM 化可能。 R O M 化用 C コンパイラ。アセンプラ、リンカ、ライプラリアン、クロス リファレンス、オプジェクトファイルユーティリティ、ライプラリソース コードを標準装備。浮動小数点、 UNIX ライク関数、重要な ANSIC 関数、 アセンプラコード出力などをサホート。 XMAC68K30 各¥ 90 , 000 ( H8 / 500 用・・・¥ 128 , 000 ) Big Bang シミュレータ 68000 / 10 用¥ 120 , 000 68000 / 10 / 20 用¥ 130 , 000 \ 198 , 000 68000 / 08 / 10 / 20 / 30and68851 / 81 / 82 / 68322 用クロスアセンプラ、完全に Motorola のマクロ装備。逆アセンプラ付き。 AVMAC シリース マクロ機能を持つリロケータブルクロスアセンプラ、リンカ、クロスリフ アレンス、ライプラリアン、エラーメッセージ機能付。ターゲット CPU は 以下のごとくラインアップされ、広範囲な開発環境を提供する。英文マニ ュアル及び和文サマリー付き。 シミュレートをしながらのフルスクリーンデバッガ。ジャンプ先、スタッ クエラー、割り込み処理もサホート。ターゲット CPU のフラグ、レジスタ、 スタック、マシンコード、データメモリエリア、インストラクションサイ クルなどの内容がスクリーンにウインドとして表示。ターゲット CPU は以 下のごとくラインナップ。 AVMAC04 6804FamiIy, 68HC04 AVMAC05 AI 16805 , 146805 , 68705 , 1468705 , 68HC05 , Hitachi6305 AVXC68K30 及び A68K30 用のシンポリック・デバッカ / レジスタ / メモリ / フラグなどの表小、データの変更や逆アセンプル、ディスクへのセープ、 モトローラ S ー recod やバイナリファイルをロード。 l-code によりアセンプラソース出力可能。アセンプラソースは、ターゲッ ト CPU の他 8086 ( スモール ) コードをサポート、 AVMAC と組み合わせる ことにより ROM 化可能、以下のターゲット用ラインアップ。 各¥ 158 , 000 AVSIM シリーズ PASCAL クロスコンバイラシリース各 \ 89 , 000 COMPILERS SIMULATOR/DEBUGGERS MACRO ASSEMBLERS 6805 : P 2 , P 4 , P 6 R 2 : R 3 , U 2 , P 3 68705 : P 3 , P 5 , 日 3 , R 5 , U 3 , U 5 146805 : E 2 , E 3 , F 2 , G 2 1468705 : G 2 6809Family, 6821 PIA 6804 PTM 6850 ACIA 6800 / 0102 / 0308 , 6801 / 6803 801 U4 / 683U4 , 6301 VI / 6303V1 , 6821 PIA 6850 ACIA 68HC11A8 , 68HC11A0 ( no EPROM), AV S ー M 1 1 68HC11A2 with 68MC24P 日 IJ 68000 : 68000 : 1 0 / 20 Big Bang HD64180 , HC647180X AVSlM180 AVSlM48 AVSIM05 AVSIM09 AVSIM68 AVMAC09 AI 16809Family 6800 , 6801 , 6802 , 6803 , Hitachi6301 AVMAC68 6801 / 6803 , Fam ily (not 6800 ) Hltach16301 AVXCII 68HC11 Family 68000 / 08 / 1 0 / 20 / 30 , 68881 / 82 AVXC68K MXPAS68K 68000 AVXCZ80 See Z80 below H8/500FamiIy AVXCH8 AVXC68 AVMACI 1 68HC11 68000 / 08 / 1 0 / 20 / 30 , AVA68K 68851 / 81 / 82 / 68332 AVMACZ80 See Z80 below H 8 / 300 , H 8 / 500 , HMCS-400 AVMACH8 8021 , 8022 , 8035 , 8039 , 8041 , AVMAC48 8048 , 8049 , 8050 , 8041 A, etc, 8020 , 8021 , 8022 , 8035 , 8039 , 8040 , 8041 , 8041 A, 8042 , 8048 , 8049 , 8050 , 80641 A, 8742 , 8748 , 8749 , 80C35 , 80C39 , 80C48 , 80C49 , 8031 , 8032 , 8051 , 8752 , 80C31 , 8751 , 80C5 8085 CPU, with 8155 8355 , PascaI 8031 / 8051 MXPAS51 AVSlM51 AVSlM85 AVMAC51 8051FamiIy 8080 , 8085 , Z80 (lntel Mnemonies) AVMAC85 AVMAC96 8096Family Z8, Supe 「 8, M 「 08 , Z86COO/11 FamilY AVMACZ8 Z80 , 8080 , 8085 , (Zilog Mnem onics) AVMACZ80 Hitachi HD64180 (Enhanced Z80 ) Z 180 RCA 1803 , 1804 , 1805 , 1806 AVMAC18 6500 , 6502 , 65C02 , 65010 ( 65F11 ) AVMAC65 Mitusubishi Se 「 ies740 65C816 AVA65 TMS32010 , 320C15 AVMAC321 AV M321 TMS32010 , 320C10, 320C15 , 320E15 TMS32020, 320C25 AVMAC322 AVSlM322 TMS32020 , 320C25 ※上記金額に消費税は含まれておりません。お買い求めの際は上記金額に 3 % がかかります 価格及び仕様は予告なく変わる場合がありますので、あらかじめご了承ください。ここに載っていないソフトも取り扱っておりますのでお間い合せ下さい。 株式会社ソーテック 本社 : 〒 2 引横浜市中区太田町 4 ー 55 横浜馬車道ビル 工人舎事業部 045 ー 6 引ー 7360 FAX 045 ー 662 ー 0656 AVSlMZ80 Z80 CPU, with CTC ACIA AVXCZ80 Z80 , 64180Fam ⅱ y PascaI Z80 , HD64180 MXPASZ80 6502 , 65C02 , w ith VIA ACIA AVSlM65 KOHJINSHA く資料請求番号 1 8 の

9. 月刊 C MAGAZINE 1991年5月号

理想のグラ刀ックスプレイ開発支援ツール MetaWINDOWøTC メタウイントウ - T C プログラム 開発支援のための 使えるツール べイウェアジャパンが 提案します。 パソコンに高品質な音声 / 音楽演奏を提供する T 診① S ①明 ターホサウンド CMetaWlNDOW-TC] はアメリカで数々の 賞を受け、 21 , 000 人以上のプログラマーに採用さ れたプログラ乙開発支援のクラフィッワッールで す。 その理由は、 ①完全互換性 : 異なる機種 ( NEC9801 シリース ( XL を含む ) , IBM PC / AT あよび互換機 , AX, U ー 3100 ) 、異なる〇 S ( 旧 M ー D 〇 S , 〇 S/ 2 , UNIX) 、異なるコン / ヾイラ (MS-C,TuL rbO C, Zortech C 十十 , その他の C コンパ イラ ) などの間での完全な互換性を実現。 CMetaWlNDOW-TC] をベースにアプリ ケーションソフトを作成すれば、異なる環境下 でも同じように作動しまヴので、多くの人員と 膨大な時間ガ大幅に節約できまヴ。 ②豊富な機能と高速な処理 : 200 以上のサプルー チンガらなる CMetaWlNDOW-TC] は、ア センフラと C 言語をベースとして、各社それぞ れのハードウェア特有の利点ガ生ガせるように 設計しました。ガら、どのような環境下でも 高速な処理ができます。さらに CMetaWIN - 「 IJ. S. A. 最優秀製品賞」受賞 DOW-TC] は、ピットマップ / ストローワあ MetaWINDOWeTC よびアウトラインフォントも含めて、パーフェ メタウインドウ - TC ワトな日本語サポートをしています。 ③オプジェワト指向テザインによる使い勝手の良 Ve 「 sion 3.65 さ : CMetaWlNDOW-TC] は短期間に習得 (IJP-DATE 版 ) できまヴ。しガも、書ガれたプログラ乙は読解 性の高いものなので、 CMetaWlNDOW- 価格 \ 95 , 000 TC ] を使用したプログラ乙は、メンテナンス性 に優れています。 ※ U ー 3100 への対応は今春より、また〇 S / 2 ・ ・・・などの特長ガ、アメリカで多くのプロクラ UN Ⅸへの対応は Ve 「 4.0 ガらです。なあ、 Ver4.0 へのバージョンアップは無料にて マーに採用された理由です。 行います。 アメリカでの実績を誇りとして日本 に上陸した CMetaWlNDOW- TC] は、プログラ乙開発者の皆様に ワリエイテイプな開発環境を提供す ることを約束できる、画期的なプロ クラ乙開発支援のグラフィッワッー ルです。 第円と日一 M 語ー NDOW ソフトウェア開発者に完全なオーティオソフト開発環境を 提供する CTu 「 boSound] は、 PC 音声技術にあける新 たな革新です。従来では考えられなガった音声や音楽演奏、 複雑な効果音までもソフトウェアに組み込み、それらの音 を再生することガ可能になりました。そして再生音を出力 ヴる場合も、 PC 内部のスピーカーを使用するので、新た なハードウェアの追加を一切要としません。内部スピー カーの音では不満の時には、 CTu 「 boSound] 付属のコ ネワターで簡単に接続できる外部スピーカーを使用するこ とで、より良い音量 / 音質の再生音を得ることもできます。 また [ Tu 「 boSound ] には、サウンドをワリエイトする ための強力なエティットプログラ乙ガ添付されているので、 ソフト開発の際にもすぐに利用できます。 ・ CTu 「 boSound] 技術仕様 ・アナログ周波数帯 8 Khz 十 6 ~ 30 テシベル ・ホリュー乙幅 65 テシベル以上 ( 2 フィート離れ ・音声圧レベル た場合で PC によって異なる ) ・音声ファイル ステレオで通常 8.3 ガら 12.5 キロ バイト ( こ段階コンプレッション 法を用いて 2 キロバイトまでコン プレス可能 ) ・音声ファイルサイス 64 キロ / ヾイト以上も可 CPU ワロッワとは独立に指定可 ・ピッチ 500 種類を超えるグラフィッワ機能を搭載した CMENIJET] は、数多くの GUI 開発システ乙の 中でも、 ・ハイレベルな機能を容易に、そして完全に利用 できること。 ・オプジェワト指向の拡張性のあるツールである ・芸術的で洗練されたアプリケーションインター フェイスを提供できること。 ・・・などの点を重要視して創り上げられた ツールです。 CMENIJET] をプログラ乙開発の際に使用す ることで、ホップアップウインドウ , ダイアログ ホッワス , スワロール可能リスト , テータ工ント リーフォー乙 , アイコン , ホタンパネルなどガ、 バラメータを指定しなくても簡単にインブットで きるので、個性的な画面やアプリケーションソフ トの構成が容易になりまヴ。 CMENUET] は、スワリーン上でテザインとユ ーザーインターフェイスのエティットを対話的に 実行するだけで、自動的に C ソースコードを生成 します。その生成されたソースコードは、プロセ スへのポインターも含み、完全なアプリケーショ ンインターフェイスとなります。 ■ NEC9800 , AX/ 日本語 FEP に対応 / / ※ J ー 31 には今春より対応の予定。 価格 . \ 96 , 500 ・第す新第 ■資料の請求はコンピュータで〃 ・コンピュータによる資料請求は、弊社 BBS ( 300 , 1200 , 2400 bos ) に次の電話番号ガ直通ですので、ご自由に資料やテモプロ グラ乙などをダウンロードして下さい。 ノ ( 03 ) 39 / 2 ー 6058 ・ファッワスによる資料請求は、弊社コンピュータシステ乙ガ、次の 電話番号で自動送信いたします。 ノ ( 03 ) 39 / 2 ー 6854 ・その他、製品についてのあ問い合わせやご質問は次の電話番号で 弊社カスタマーサホートがあ応えいたします。 ノ ( 03 ) 39 / 2 ー 539 プ 乢物鸞 8 Y Ⅳ R INC. 第ヘイウェアジャパン 173 東京都板橋区熊野町 33 - 3 ( 03 ) 3972-5391 代 201 San Antonio Ci ℃厄第 128 Mountain View California 94040 U. S. A. MENUET メニュエット Ve 「 sion 2.0 く資料請求番号 178 〉

10. 月刊 C MAGAZINE 1991年5月号

0 のベス N ト - ・ソースコード付属 / 組み込みロイヤルティ無料・ CCF / 総合コンソールコントロールライフラリ価格 \ 59 ′ 800 广 - CCF/EX 価格 \ 98 ′ 000 ◆ CCCF/EXJC は XL 、 XL2 、日 L の八イ キーホード、テキスト画面、グラフィック、マウス、ウインドウ、メニュー、プリンタ、拡張 レゾリューション / ノーマルの両モードに対 関数等 200 以上の関数て構成される総合コンソールコントロールライプラリです。 CG 「 aphic 応し、一部の関数を除いて、どちらのモード & MouseJs CWindow & MenLIJ 、 fKey & Dis ay 」とプリンタ関数、拡張関数て構 ても動作するプログラムを開発することかで 成されています。 きます。 ■「G 「 aDhic & MouseJ 、 tWindow & MenLJJs tKey & DisDlaYJ については各製 プリンタ関数 ( 抜粋 ) ・プリンタ関数は日 OS を介してプリンタに文字コード、制御コ 品の説明をこ覧ください。 文字出力 / プリンタステータスの取得 / プリ ード送り、各種アルファベットの文字印字、拡大、キャラクタモードの切り替え、フォームフ ンタの初期化 / C 日、 LF 出力 / 漢字文字出力 ィード、プリンタ状態の設定 / 検査、印字方向の切り替え、サプスクリプト / スーバースクリ / ANK 文字列出力 / 漢字、 ANK 文字列印字 プト文字の印字、縦印字、強調、アンターライン、ドラフトモードの切り替え、左右マージン / 漢字、 ANK 文字列印字 ( ANK ー > 半角変 の設定、改行幅 / 方向の切り替え、ソフトウェアリセット等の処理を行うことができます。対 換 / 漢字 / ANK 文字列縦印字 ( ANK ー > 半 角変換 ) / プリンタのリセット / SELECT 、 DESELECT の切り替え / ドラフトモードの ! 応プリンタは PC - P 日系てす。■拡張関数は MS - DOS ファンクションコールを用いたキー 設定、解除 / 片方向、両方向の切り替え / 1 / 6 インチ改行設定 / レ 8 インチ改行設定 / n 回改行ー 入力関数、文字列処理関数、 y ( es ) / n ( 0 ) の入力を促し、 Shift 、カナシフト、全角、半角 のいずれの状態でも y / n を判断する関数等があります。 / 漢字モード設定 / 解除他 すわ e C ′ a es チ製 しー 14 部ファイ . ーイトが使 0 、代・当し・ Window & Menu 価格 \ 29 ′ 800 Window & Menu/EX 価格 \ 49 を 800 ームキャラクタ、フレーム色、ウインドウ内 テキストウインドウ、メニュー関数のライプラリノヾッケージ。最近のちょっとしたソフトでは の表示色の設定が可能です。この機能により、 大抵ウインドウ機能を備えています。例えはスクリーンエデイタでは画面を分割し 2 つ以上の 好みの色、キャラクタを用いたウインドウを ウインドウを開いて編集できるとか、テータベース、業務用ソフト等では簡単な説明や操作ガ 定義可能・横長タイプ、縦長タイプ、羅列 イドをへルプウインドウを開いて表示したりしています。このような表示を行うためのマルチ タイプの 3 タイフのメニューウインドウによ ウインドウ機能とウインドウを利用したメニュー選択機能を提供します。 り、用途に応したメニュー表示が可能■サ tWindow & Menu/EXJ は XL 、 XL2 、日 L のハイレゾリューション / ノーマルの両モー ンプルプログラムメニューウインドウにフ ドに対応し、互換モード ( 自動判別 ) によりどちらのモードでも動作するプログラムを開発する アイル一覧を表示し、選択されたファイル内 ことができます。また、ハイレゾリューションモード時には 31 行 / 25 行モードを選択すること 容を上下左右スクロール機能を持った文字列 かできます。 表示関数により、スクロール表示をおこなう ・ウインドウ / メニューウインドウあわせて 20 個まてのウインドウがオープンできる ( 増減可 サンプルプログラムが付属。 能 ) ■オーバーラップ / 切り替え機能オーバーラップにより隠れたウインドウを一番上に表 次の関数の他、 CKey & Dis ay 」の * 印が付いている関数も加わります。 示ー移動機能ウインドウを指定された座標へ移動■文字列表示行を指定する関数と、 関数 ( 抜粋 ) 上下スクロールを伴った文字列表示機能がある・スクロールスクロール関数と、文字列表 ウインドウの初期化、終了処理、オープン、クローズ / すべてのウインドウをクローズする / 示を伴った上下スクロール機能がある■ V 日 AM をアクセスしてウインドウ操作を行っている 表示対象となっているウインドウをクローズする / 表示対象ウインドウを別のウインドウに切 ので高速。ウインドウの切り替えもほほ瞬時■ウインドウを開き、 y(es) 、 n ( 0 ) の入力を 替える / ウインドウの移動 / ウインドウ内をプランク文字で消去 / ウインドウ内に文字を表示 促す関数と上下左右スクロール機能を持った文字列表示関数によるテキストファイル等のスク / 上へスクロールし、文字列を表示 / 下へスクロールし、文字列を表示 / ウインドウを上、下 ロール表示が可能な拡張ウインドウ機能■カスタマイズド・ウインドウウインドウのフレ にスクロール / ウインドウのフレームタイプを登録 / 文字列を指定行表示ー他 Graphic & Mouse 価格 \ 29 ′ 800 Graphic & Mouse/EX 価格 \ 59 を 800 ◆ rG 「 aphic & Mouse/EXl では XL 、 N88BAS 旧相当のグラフィック機能とマウス機能を提供するライプラリバッケージです。 XL2 、日 L の八イレゾリューション / ノーマ い グラフィック機能はグラフィック画面に点、線、四方形、円、文字等を描画する機能、指定領 ルの両モードに対応しており、どちらのモー ドでも動作する互換モード ( 自動判別 ) もあり 域を切り出す / 貼り戻す等の機能と表示モードの設定を行う制御機能で構成されています。 マウス関数にはマウスカーソルの表示 / 非表示、色指定、ホタンの押下状態の検査、移動範囲 ます。 の指定、移動距離の検査等の関数があります。 関数 ( 抜粋 ) ■ N88BAS ℃相当のグラフィック関数を提供■高速グラフィック関数高速線分描画、高 画面のモード設定 / 表示範囲の設定 / 画面色 の設定 / バレットの設定 / グラフィック、テ 速連続線分描画、高速円描画、グラフィック画面への文字表示関数を備えています。 ( ノーマル モードのみ ) これらの関数はすべて日 EPLACE / CLEA 日 / 0 日 / XO 日の 4 つの描画モ キスト画面消去 / ドットセット、リセット / ードのいずれかを選択指定することかできます。 (fline, flines, fcircle. g—cha 「 ) ■マ 直線、円、円弧の描画 / ペイント / タイルバ ウス関数 ターンによる塗りつふし他 RS -232C ライプラリ 価格 \ 49 ′ 800 RS -232C ライプラリ / EX 価格 \ 98 ′ 000 間関係関数、および簡易ターミナルエミュレータ、 XMODEM 送受信プログラム等がサンプ 本製品は C 言語から日 S -232C インターフェースを介して、各種周辺装置、コンピュータ等と ルプログラムとして提供されています。製品にはテパイスドライバを含むすべてのソースコー コミュニケーションをとるためのライプラリです。 ドが含まれています。 バッケージには OS を呼び出して行っている「日 S -232C ライプラリムこれに 9861K 用とマ ー用途 / 回線数によって使い分けのできる 3 種類のライプラリ (EX) を装備。・マルチサー ルチサーバ用テパイスドライバ版を追加拡張した「日 S -232C ライプラリ / EX 』の 2 種類があり、 バボードを装着することにより 9 回線までサポート可能 ( EX ) ・「日 S -232C ライプラリで 呼び出し方法は共通になっています。 は "Ve 「 . 3.1 以上かっ型番が PS98-127- ? ? ? 以降の MS - DOS でなければならない - という 「日 S -232C ライプラリ」は主に日 OS を呼び出して、日 S -232C のコントロール、送受信を行 制限があります。第 MS - C のみ対応。 っています。もちろん、 2 、 3 回線もサポートしています。 関数 ( 抜粋 ) 「日 S -232C ライプラリ / EX 」では日 OS 呼び出し版の他に、使用環境に制限かなく本体はデ ■共通回線の選択、初期化 / 受信バッフア内テータ長の検出 / 受信バッフア内のデータを得 バイスドライバ化され、インターフェースライプラリを介して呼び出すテパイスドライバ版と る / 1 文字出力 / 8251 にコマンドを送る / 8251 ステータスを得る / 送信レティ状態の検査 / キ マルチサーバ対応のテパイスドライバか拡張されています。また、各ライプラリ特有の関数 ( ー ャリアティテクトの検出 / 日 S -232C インターフェースのリセット / 文字列入力 / 文字列出力 部 ) を除いて上位関数の入口名、引数は共通なので、リンクするライプラリファイルを変更す / 1 文字受信 / 1 文字送信 / 漢字処理を伴うテータ送信 / モデムの初期化、接続、自動発信 るだけで切り替えることかてきます。この他、オートタイアル / モテムコントロール関数、時 ・ EX 専用プロック受信 / プロック送信 / 八ンドルのクローズ