環境 - みる会図書館


検索対象: 月刊 C MAGAZINE 1993年12月号
60件見つかりました。

1. 月刊 C MAGAZINE 1993年12月号

ln 川 a ⅱ行町ⅱ計 Ma れ門 ライフボート WATCOM C / 386 WATCOM C32 ません。また , セグメントレジス Q タて、ある ES レジスタにリアルモー putenv 関数を使用して環境変 数を追加しても , プログラムが終 ドアドレスが入ってきますから , 直接 int21H を実行すると , 一般保 了したあと , SET コマンドで , 環 境変数を見ても , プログラムが追 護例外が発生します。そこて、 , リ 加した環境変数が追加されていま アルモード割り込みを呼び出すフ せん。どのようにすれば , プログ アンクション int31H/AX=300H を使って呼び出します。 ラム終了後も環境変数を残すよう 返ってきたポインタは , リニア にできますか。 アドレスに変換 ( DOS / 4G て、は 4 ビ A MS-DOS て、は , プログラム自 ット左シフトすることて、リニアア 身のプロセスの環境およびその子 ドレスになります ) して , 参照して いきます。 MS-DOS Ver. 5 て、は , プロセスの環境を変更することは て、きますが , 親プロセスの環境を MCB のオーナ名が MCB の 8 バイト 目からの 8 バイトの大きさて、入って 変えることはて、きません。そのた いるのて、 , ここを参照して COMM め , putenv 関数を使用して環境を 変えても , プロセスが終了し , 親 AND.COM を探します。 emory ( メモリが不足しています ) 」 MCB を追跡するには , MCB のア プロセス ( 通常 , COMMAND. CO A スタブプ 0 グラムは , DOS/4 ドレスに MCB の大きさ (MCB 十 3 というメッセージを出すコマンド M) に戻ると , 環境も親プロセスの G が立ち上がる前の準備をするプロ ~ 2 バイト , パラグラフ単位 , MC があります。 WMAKE が使用するメ 状態に戻ってしまいます。 グラムて、すから , プロテクトモー B 自体は含まれない ) を加えます。 モリを減らす方法がありますか。 COMMAND.COM の環境を変 ド用のコードを出す WATCOM C/ えるには , メモリコントロールプ COMMAND.COM の MCB が見つ A 386 て、は , コンパイルすることがて、 ロック ( MCB ) を追跡して , オーナ WMAKE は , 約 70K バイトの かれば , その MCB のオーナの PSP きません。従来のリアルモードの が COMMAND.COM て、あるメモ (MCB 十 1 から 2 バイト ) を求めま メモリを必要とします。これを減 MS-DOS 用コンパイラて、コンパイ らす方法はありませんが , 次のよ す。 PSP 十 2CH から環境変数領域 リを見つけ , そのプログラムセグ うな方法て、回避してください が求められますから , そこを書き ルする必要があります。 メントプレフィックス (PSP) から WATCOM C / 386 に添付されて /n と /h オプションをつけて WM 変えます。 環境変数領域を求めて (PSP のオフ いるスタブプログラムのソースコ AKE を起動し , WMAKE の標準出 環境変数を探して , 値を追加す セット 2CH から 2 バイトに環境変数 ードは , WATCOM C16 用て、す。 力をリダイレクトして , バッチフ るサンプルプログラムを付録ディ 領域へのセグメント値 ) , 直接書き ァイルを作成します。オプション / 弊社から英語版 ( AT 用 ) パッケー スク ( Iist0. c ) に収録します。 PAT 換える以外に手段はありません。 n は , コマンドを実行する代わり H に 126 バイト以上の値を設定する ジとして販売されていますが , M しかし , MCB は低位アドレスか に , 実行するコマンドを標準出力 S-C-C もコンパイルて、きます。しか らの追跡は可能て、すが , 逆方向に のに便利て、す。 し , WATCOM C16 固有の関数 ge に表示するものて、す。 / h オプション は追跡て、きません。最低位の MCB は , WMAKE の起動メッセージを tcmd を使っていますのて、 , これを を求めるには , マニュアルに載っ Q WATCOM C / 386 には , DOS/ 表示しないオプションて、す。こう 作成して追加しなければなりませ ていない DOS のファンクション 52 4G 用のスタブプログラム ( ユーザプ して作成されたバッチファイルに H を使います。 ん。 getcmd 関数の例を List 1 にあ は , WMAKE が実行するコマンド ログラムに結合され , 自動的にプ げます。 このファンクションは , ES : B ログラム自身を引数として , DOS/ X レジスタにアドレスを返してきま が並んて、います。 このようにコマンドの実行をバ 4G を立ち上げるプログラム ) とその すが , マニュアルに載っていない Q ッチファイル化することて、 , WM ソースコードがついていますが , WATCOM C / 386 に入ってい DOS のファンクションなのて、 , DO AKE が消費するメモリを節約する これは , WATCOM C / 386 でコンバ るメイクユーティリティ WMAKE を S 工クステンダはこのポインタを , 使っていますが , 「 NOt enough m ことがて、きます。 イルできますか。 自動的には論理アドレスに変換し Fig. 1 MS-DOS Ver. 5 の MCB の構造 0 1 2 3 4 5 6 7 8 9 1 01 1 1 2131415 MCB Owner SIZE Name ↑ M または Z List 1 / * getcmd: * char *getcmd( char *buf ) : buf : コマンドラインを受け取るパッファ * 戻り値 : buf と同じ。 * 概要 : コマンドラインの引数をコマンド自体を除いて , そのまま取得する。 * / char * getcmd(char *P) unsigned char far *fp; i nt i コ mt : char *ret (unsigned char far * ) ( (uns igned long)-psp くく (6) 十 0X80 ; *fp 十十 ; for(i=0;i<lmt;i 十十 ) * p 十十 = * fp 十十 : return ret; lnformation from Compiler Makers 163

2. 月刊 C MAGAZINE 1993年12月号

櫛 d カリ お手軽 大作戦 MS-VisuaI シリ 活用 ビジュ刀レを名のるプログラミンク環境 いっ果てるともない格闘をつづけるプログラマの 悲壮な姿かありました。 時節到来。 そんな暗黒時代も、ついに終わりを告げ、 •- れ 0 の女神か、 私たちプログラマにも微笑みを投けかけてくれる 時代がやってきたようです。 その女神の名は、「Ⅱ」 「笑って、お仕事」 鳴りもの入りで登場した 0 。 笑ってお仕事している アプリケーションユーザの幸せそうな顔の蔭には、 「泣きなから、お仕事」 あいかわらず、百科事典のような 膨大なのマニュアル群と首っぴきで、 怒涛のこときーの大軍団と、 の 山本浩文・白倉伸一郎 逆説的にいえば , 現在の「言語」優先三プログラミング環境として生まれた ともいえるプログラミング環境の問 ! Visual Basic, ViSL.lal C 十十 題点を浮き彫りにしたのが , Windo ! を掘り下げる前に , ビジュアルなプ ws である。ここでは , Windows 三ログラミングというものを考察する。 32 C MAGAZINE 1993 12

3. 月刊 C MAGAZINE 1993年12月号

十分な情報を得ているものと思う。 Symantec C 十十は AT & T の日 el. 3 に準拠した , 待望の Macinto そこで , 本記事では , それ以外の sh 用 C 十十処理系である。ただし , 人々 , とくに MS - DOS の上で C / Mac プログラミングのエキスノヾート C 十十コンバイラを使って開発して であれば , すでに使っているか , そ いるが , Mac に乗り換えてプログラ うでなくても , 旧バージョン ( T N ム開発をしてみたいと考えている人 K C Ve 「 . 5.0 ) との差異について , のために , この処理系の紹介をする。 Symantec C 十十 Veru 圧 0 に見る dMacintosh プログラミング きだあきら り , 正規の C 十十も供給することにしたのて、 するようになっている ( ただし , 拡張子を具 あろうか。いずれにせよ , この原稿執筆時 体的にどのようなものにするかは , 自由に 設定て、きるようになっている ) 。当然なが 点て、は , Apple 社の純正 C 十十て、ある MPW ら , 使い勝手を左右する環境部分のプログ C 十十は , まだ ReI. 2.1 べースて、あり , ReI. Symantec C 十十は , 米国 Symantec 社が 3 準拠の処理系は Symantec C 十十だけて、あ 発表した Mac 用の統合 C 十十開発環境て、あ ラムはまったく同じものて、あり , したがっ て , その部分の機能も同じて、ある。両者の る (Symantec C 十十 for MPW というのも る。 Symantec 社は , THINK C, THINK 存在する ) 。この点て、も SymantecC 十十は PascaI という処理系を供給している会社て、 マニュアルも , 環境に関しては一冊て、共通 ある。この THINK シリーズは , Mac 用コン 貴重な存在といえるだろう。 て、ある。 パイラのビッグネームて、あり , ちょうど M 言語仕様的には , ややこしいことに , TH INK C はオーソドックスな C 言語てはなく , S-DOS 上のプログラマには Microsoft C(M それ自身すて、に C 十十によく似たオプジェク S-C) や Borland C の存在が知れ渡っている こて、 , Mac のプログラム開発環境の変 ように , Mac 上て、開発をしている人て、あれ ト指向拡張が施されている。実際 , THINK ば知らない人はいないと思われる。 CVer. 5.0 まて、は , THINKC は C 十十のア 遷の歴史を , 記憶をたどりながらざっと紹 ップワードコンパチて、あり , だから C 十十は 介しておこう。 SymantecC 十十は , 形式的には THINK 初代 Mac の場合 , ROM64K バイト /RAM いらないというようなニュアンスて、あった C Ver. 5.0 のバーションアップということ ( 「アップワードコンパチ」という表現は TH 128K バイトという , 現在の常識からいうと になる。実際には , 同時に THINKCVer. RAM の容量など 2 桁も少ない , 極くわずか INK C のマニュアルなどに記されているも 6.0 も発売開始されていて , THINK C Ve なメモリしか装備していなかった。このた のて、あるが , 筆者としてはいささか疑間が r. 5.0 のユーザには , C 十十にするか Ver. 6.0 にするか , 2 通りのアップグレードバス め , 初代 Mac には純正のセルフ開発環境は ないて、もない ) 。ただし , THINK C Ver. が存在することになる。具体的に両者の違 5.0 がアップワードコンパチだといっている 提供されず , Lisa を用いてのクロス開発環 対象は , あくまて、 AT & T の ReI. 2 の C 十十て、 境が存在するだけて、あった。これはとうて いは , コンパイラ本体のみだけだといって もよいだろう。より正確にいえば , Syman ある。 いアマチュアレベルては対応て、きないため , それに対して , 今回の SymantecC 十十は Forth 系の言語がセルフ開発環境として使わ tec C 十十には , 実は THINK C Ver. 6.0 れたこともあった。 Forth という言語の省メ が含まれている。つまり THINK C と Sym AT&T の ReI. 3 に準拠したものて、あり , te モリ性からて、ある。 mplate も備えている。ただし , exception h antecC 十十のふたつの独立したコンパイラ その後 , Mac 自身のハードウェアも拡張 andling は実装されていない。 C 十十の標準 が伺しているのて、ある。 され , IM バイトの RAM を備える MacPlu が進化してしまったために , さすがに THI ふたつのコンパイラのどちらを使用する NK C をアップワードコンパチといえなくな s が発表された。 RAM の容量の制限は大幅 かは , ソースファイルの拡張子を見て判別 122 C MAGAZINE 1993 12 れ t C 十十の位置づげ a c のログラミンク環境 歴史と現状

4. 月刊 C MAGAZINE 1993年12月号

&\-WINWW プログラミング X68k 活用講座 第 2 回 SX-WIN DOW プログラミングの現状 実際のプログラミングを進めていくこ ライプラリ依存はいっさい行わないて、連載 指針のない現状 します。 を進めます。したがって , 本連載て、扱う内容 したがって , SHARP 純正の SX-WINDO は今回付録ディスクに収録された内容だけ W 開発キットは , 連載記事中て、直接扱わな て、すべてコンパイル実行可能になります。 C 言語を開発言語として , SX-WINDOW プログラミングを行う場合 , 現時点て、の指 ことにします。 ただし , 今回配布したファイルだけて、は , 一般の C プログラムをコンパイル , 実行する 針らしきものは近々発売される SHARP 純正 付録ディスクの内容に ことはて、きません。有名な K & R のサンプル の SX-WINDOW 開発キットしかないと思わ れます。 、、 HelIoworId クて、さえ , コンパイルて、きない 付録ディスクには , 「 X68000 Develop # のて、す。 GCC を用いて , 一般の C プログラミ パソコン通信などて、はすて、にたくさんの ングを行うためには , XC または『 X68000 SX-WINDOW のアプリケーションが流通し 1 』 ( ソフトバンク刊 ) に収録されている主要 libc 』を購入し , これらのライプラリを使用す ていますが , それらの開発環境は各個人て、 なファイルのうち , GDB. X に関するものを 異なっているのが現状て、す。おそらく , 除いてほとんど収録しています。一部のツ る必要があります。 ールは , バージョンアップしたものになっ こて、 SHARP 純正の環境が提示されても , また , 今回収録した各プログラムに添付 般の C のライプラリやシステムヘッダのよう ています。 Fig. 1 がその内容て、す。 されているファイルに記述されていない技 術情報については , 『 X68000 Develop # 1 』 な、、規格クがない SX ー WINDOW の世界て、は即 付録ディスクに収録されているファイル 座にその環境に対応するのは無理て、しよう。 は , 高圧縮書庫管理プログラム LHA の、、 -rx" を参照してください オプションにより圧縮されているのて、 , 解 XC や「 X68000 libc 』を持っていない方は , 実際 , 私のサポートの不備もありますが , XGCC の SX-WINDOW 用の拡張機能を使 各ファイルを Fig. 2 に示すようにインストー 凍後生成されるファイルを Fig. 1 の指示に従 える開発環境を構築するにはかなりの労力 って該当するディレクトリにコヒ。ーしてく ルしてください。 Fig. 2 のようにインストー を要し , XGCC のコンパイラ本体を手に入 ルした場合の環境変数は Fig. 3 のような内容 ださい れても , 、、一 SX 〃オプションを指定したコンパ のバッチファイルて、設定するとよいて、しよ イルによって , 実行可能なプログラムを作 う。または , Fig. 3 の内容をあらかじめ aut oexec. bat に追加しておくと便利て、す。 成て、きるだけの環境を整えるのはたいへん て、す。 本連載て、扱うプログラムのコンパイルに 以上の作業て , 本連載のプログラムだけ そこて、 , 今回 , XGCC の最新版と最低限の は原則として , XC ライプラリおよびⅨ 68 ならコンパイル , 実行が可能になります。も 000 libc 』 ( ソフトバンク刊 ) のライプラリ ちろん , SX ー WINDOW システムは必要て、す。 機能を持った、、一 SX クオプション対応のスター libc は使用しません。記事中て、は , 簡単なスト トアップおよびヘッダを付録ディスクに収 また , メインメモリ 2M バイトの X68000 リング操作関数を含めて全部自前て、記述し , て、 , SX-WINDOW システム本体 (FSX. X) 録しました。本連載は , 今後これらを使って 142 C MAGAZINE 1993 12 今回は ,XGCC で SX-WINDOW アプリ ケーションを開発するために必要なプログ ラム類を付録ティスクに収録しました。そ の内容について概略説明を行います。 使用方法 ロ

5. 月刊 C MAGAZINE 1993年12月号

シャ文字だが , 英語て、 Project の頭文字の p に もて、きないという状態になっている。今や マクロの機能は備わっていない 当たるからてある。しかし , の文字コード ここて、少し注意しなければならないのは , Mac は C 十十マシンて、あり , ソフトウェア開 ライプラリもプロジェクトファイルの中て、 発には C 十十を使うのが標準て、あると考えざ は , Mac の日本語 OS 環境て、ある漢字トーク の下て、はカタカナの「ケ」に割り当てられて 明示的に指定しておかなければならないと るを得ない状況なのて、ある。 いるため , 素直に「 . p 」を使うほうがよいか いうことて、ある。 MS ー DOS のコンパイラて、 Symante 印十十の機能と特威 は , 自動的にデフォルトのライプラリをサ もしれない プロジェクトファイルは以下の役目を果 ーチに行くように構成されているのが普通 こて、は , SymantecC 十十の使い勝手に だが ,SymantecC-t 十にはそのような機能 ・目的とするプログラムが , どのソースフ 関する , おおまかな説明を試みる。 Syman はない。これは , アプリケーションの性格 ァイルと , どのライプラリをリンクして によってリンクするライプラリが大幅に変 tecC 十十の開発環境は非常に豊富な機能を 形成されるのかを指定する。 化するために , デフォルトを一意に定める 備えていて , かぎられた誌面て、はとてもす ・ファイルの依存関係を調べて , 必要に応 ことが困難だからて、はないかと想像してい べてを説明するのは無理て、ある。ただし , 基本的な使い勝手は一連の THINK シリーズ じて再コンパイルするという , makefile の延長線上に存在するため , これまて、に TH の役割を果たす。 特定のライプラリ関数を利用した場合に , INK シリーズの言語を使った経験がある人 ・コンノヾイル済みのオプジェクトファイル どのライプラリをリンクしなければならな を格納する。 てあれば , とくに苦労することはないだろ いかは , 慣れないうちはよくわからずに苦 ・コードセグメントの分割を指定する。 う。また , 若干の基本的な概念さえ理解し 労させられる点て、ある。そのような間題を ・コンパイラ / デバッガなど各種の設定状態 てしまえば , 後の使い方は , 直観的てよく 解決するために , SymantecC 十十て、は , ラ を保存する。 練られているため , 機能の割にはたいへん イプラリに関するオンラインヘルプが独立 これだけの機能を果たすプロジェクトフ 使いやすい環境て、あると思う。 したアプリケーションとして供給されてい ァイルて、あるが , 作成するのはメニューを る。この中を見ればリンクすべきライプラ もし読者が Mac 用のアプリケーションプ 出してマウスて、クリックしていくだけて、あ ログラムを開発しようとしているならば , リが何て、あるかがわかる。 る。何も難しい知識はいらない。指定した プロジェクトファイルて、依存関係を指定 Symantec C 十十を購入するだけて、はだめて、 ファイルは専用のウインドウの中に表示さ して , makefile 風の機能を提供していると ある。 flnside Macintosh 』は必須と考えて れる。いったんプロジェクトファイルの中 述べたが , ヘッダファイルは明示的に指定 いただきたい。 UNIX や MS-DOS て、のプロ する必要はない。それにも関わらず , ヘッ に指定されたならば , 後はそのファイル名 グラミング経験がそれなりにある人て、あれ をダブルクリックするだけて、 , 該当のファ ダの依存関係はきちんとチェックされる。 ば , Symantec C 十十の環境を理解するの イルをオープンしてエディッタのウインド ヘッダを更新した場合には , きちんとそれ は , それこそ 1 日もかければ十分だと思う。 を # include したファイルが再コンパイルされ しかし flnside Macintosh 』を読み通すの ウが開くようになっている (Fig. 1 ) 。 るのて、ある。そして SymantecC 十十のプロ 工デイタは , よくある Mac のテキスト工 は , どんなに少なく見積っても数週間はか ジェクトファイルの独創的な機能が , コン デイタ十程度の機能て、 , 取り立ててすばら かるものと考えておいてほしい しく機能が豊富ということはない パイル済みのオプジェクトファイルがプロ もちろ プロジェクトマネージャ ジェクトファイルの中に格納されるという ん , ソースの一部分を指定して , 先頭にタ プを一斉に挿入したり , 先頭のタブを一斉 機能て、ある。これがあるために , コンパイ いわゆる SymantecC 十十環境とは , プロ ルした後て、は , ソースの数と同じだけオプ ジェクトマネージャと呼ばれるアプリケー に削除したりして , インデントを深くした ジェクトファイルが生成されて , ファイル り浅くしたりする機能など , プログラムソ ションて、ある。プロジェクトとは , 一部の の数が一気に倍になるというような事態が MS-DOS の C コンパイラの統合環境て、も使わ ースをエディットするための機能拡張は , れている概念て、あるが , それとは似て非な 避けられる。そして再コンパイルしなくて そこそこ行われている。 また , 正規表現を利用した grep サーチが るものだとお考えいただきたい よいときには , そのオプジェクトをそのま て、きたり , それをマルチファイルにわたっ まリンクするわけて、ある。 SymantecC 十十て、 , なんらかのプログラ て実行て、きる機能がある。これは MS-DOS たとえば , 次に述べるデバッグ情報の設 ムを作成する場合には , まずプロジェクト や UNIX て、は当たり前だが , Mac の統合環境 定などもプロジェクトファイルの中に記憶 ファイルを作成しなければならない。プロ アプリケーションの中には , 意外にない場 されていて , かっオプジェクトファイルの ジェクトファイルのファイル名は ( 実際には 中のデバッグ情報もプロジェクトファイル 合も多い。しかし , たとえば Emacs に見ら 何てもかまわないのだが ) マニュアルによれ れるような強力なカスタマイズの機能や , の中に記録されるのて、 , 相互に誤解する恐 ば「 . 司て、終えることになっている。はギリ 124 C MAGAZINE 1993 12

6. 月刊 C MAGAZINE 1993年12月号

に緩和され , 各種のコンパイラ処理系が発 表された。 AppIe 社自身が発表したのが MP W て、ある。 MPW は実際には環境の名前て、あ り , UNIX とか MS-DOS て、いうところのコ マンドインタブリタ (shell) に相当すると思 えばよい。 MPW の特徴は , Mac のウインド ウインタフェイスと UNIX の shell が提供し ているコマンドラインインタフェイスの妥 協点を提供したことにある。 MPW て、はウィ ンドウの中て、コマンドをタイプし , 工ンタ ーキーを押すことて、その行が実行されるの て、ある。この MPW の環境下て、動くコンパイ ラがいくつも発表されている。 AppIe 社純正 のものとして , PascaI, C があり , 後に C 十十 も発表された。サードバーテイからも , C, C 十十 , PascaI が出されており , そのほかに も Ada, Fortran, Modula-2 などが発売さ れている。 Mac のプログラミング環境は , MS-DOS や UNIX の環境とはかなり違う。これにはい くつものファクターが関係している。なか て、もいちばんの違いは , ユーザインタフェ イスを初めとして , OS の設計概念そのもの が根本的に異なっているという点だろう。 このため , Mac には標準て、コマンドライン インタフェイスというものは存在しない 純正環境としての MPW は , この「コマンド ラインインタフェイスがない」という「欠点」 を補うために開発されたようて、ある。 しかし , これは「欠点て、はない」と考えて いる人が多いのも事実て、ある。とくに , 熱 心な Mac フリークて、あればあるほど , 「コマ ンドラインは邪悪だ」と考える傾向があるよ うだ。そして MPW は , コマンドラインイン タフェイスの文化を引きずったものて、ある だけて、なく , 少なくとも初期のシステムは 総合的に傑出した性能を示していたとはい えず , 必ずしも高い評価を得ていたわけて、 はなかった。 そのような背景からサードバーティの Pa scal コンパイラがいくつもリリースされるよ うになった。 Light Speed PascaI (LSP) , TML Pascal, Turbo Pascal ( ポーランド 社 ) などが登場した。なかて、も急速に普及 し , 標準となったのは LSP て、あり , これが 現在の THINK Pascal の前身て、ある。 LSP は , その名 ( 光速 ) のとおり極めてコンパイ ル速度が速いのが特徴て、みったが , それだ けて、なく , 洗練された統合環境を提供して いた点が最大の特徴て、あると考える。プロ ジェクトマネーシャ , 工デイタ , デノヾッガ などを統合し , 現在の統合環境のスタンダ ードを築いたと評価て、きるだろう。 このように , 初期の Mac 用コンパイラは PascaI が主流て、あり , C は傍流て、あった。 れは MacOS のシステムコールのコーリング コンべンションが Pascal 形式て、あったこと が理由て、あると考えられる。たとえば , 文 字列は先頭のバイトに全体の長さを格納し なければならない。このため , NUL-term ⅲ ated て、文字列を表す C との相性はよくな い。それに伴って , Mac のプログラミング におけるバイプルて、あるところの TInsideM acintosh 』というマニュアルの中のプログラ ムソースも PascaI て、記述されていた このように , Pascal 形式が使われている 理由は , しばしば TooIBox(Mac の ROM に 入っているサプルーチン群 ) や MacOS が Pa scal て、記述されていたからといわれる。 だが , これは正確には正しくないようて、 ある。 Pascal はプロトタイピングに用い て , 機能仕様を決定したのは確かなようて、 あるが , 少なくとも ROM 内のルーティン は , アセンプラを用いてハンドコーディン グされているらしい。そうしないと処理速 度的にも , プログラムサイズ的にも , 満足 な結果が得られなかったからて、あろう。そ して , Mac の CPU て、ある 68K ( 当時 ) は , 見エレガントて、対称的なレジスタセットと アドレスモードを有しているようだが , 意 外にもアセンプラレベルて、技巧をこらすこ とがて、きる余地はかなり大きくて , 巧妙な コーディングをすることて、 , 処理速度もプ ログラムサイズも大きく改善て、きるのて、あ 話を元に戻すと , このように Mac のプロ グラム言語としては , しばらくの間 Pascal が主流を占めていて , C の地位は低かった。 当時の Mac のプログラマたちは C を一段劣っ た言語て、あると考えているフシがあった。 少なくともそのような見解を表明したがる ような気がしたものて、ある。 しかしながら , これは無理からぬことだ ったのかもしれない。当時の C は K & R べー スだったこともあり , 現在に比べると文法 的に型チェックが甘かったし , また処理系 自身の完成度も決して高くなかった。たと えば当時の THINK C と THINK Pascal を 比べると , デバッグ機能などは明らかに TH INK PascaI のほうが上をいっていた ( 今も そうだという主張もあるようだ ) 。 しかしながら , 徐々に Mac のプログラミ ングにおいても Pascal は衰退し , 代わって C が台頭してきた。その理由がどこにあるの か , 筆者には正確なところはわからない しかし , Mac 以外のコンヒ。ューティング環 境における C の圧倒的な強さというのが背景 にあるのは間違いないだろう。そして , C 十十 という標準的な OOP 拡張が行われたことも 無視て、きないだろう。 Mac て、使われていた Pascal も , もちろん OOP 拡張は行われてお り , Object Pascal と呼ばれるものだった が , それはローカルな規格て、あり , Mac の 外の世界の PascaI 処理系との互換性はなか った (MS-DOS の TurboPascal の OOP 機能 は , Object Pascal のそれに似てはいるが , 細かい部分て、はかなり違う ) 。 そうして , MacOS が Ver. 7.0 ( いわゆる S ystem7) ヘアップグレードされた時点て、 , 決 定的なパンチが繰り出された。 AppIe 社が「 S ystem7 は C 十十を使って開発した」と発表し たのて、ある。もちろん OS のシステムサービ スのコーリングコンべンションは , 従来と のコンパチビリティを保っために PascaI 形 式が継承されている。しかし , OS そのもの カ℃十十て、開発されたという事実がプログラ マに与えた精神的な影響は少なくなかった と思う ( 筆者は , いろいろな意味てかなりの 衝撃を受けた ) 。 また , AppIe 社自身が出版する fMacint osh Developer's Journal 』というテクニカ ル雑誌 ( 日本語版は技術評論社から刊行され ている ) の記事も , 掲載されているソースプ ログラムのほとんどカ℃十十による記述てあ り , C 十十が読めないと内容を理解すること 特別記事 Symantec C 十十 ver. 6.0 に見る Macintosh プログラミング 123

7. 月刊 C MAGAZINE 1993年12月号

0 コンバイラ さらにグレ An Optimizing ( Compiler ーロ。囘圄 それぞれの商標です。その他、 cpu 名、製品名等は一般に各開発メーカーの商標です。 ※ MS-DOS は Microsoft 社、 Z80 は Zilog,lnc. , 日経 M Ⅸは日経 BP 社、 NlFTY-Serve はエヌ・アイ・エフ株式会社の ※表示価格に消費税は含みません。 NlFTY-Se 「 ve : FLABO 日経 M Ⅸ :lsi. J 会議 ドできます。 LSI C -86 体験 ( 試食 ) 版が、下記ノヾソコン通信でダウンロー ・価格 48 , 000 円 ・供給メデンア : 5 " 2HD 、 3.5 " 2HD 他。 ■コンパイラ走行環境 : MS-DOS Ver. 2.11 以上、メモリ 384KB 以上必要。 付き。 アセンプラ、リンカ、標準装備。 ROM イヒのための初期設定モジュールのソース ■ ANSI 標準規格に準拠した 8086 のソフトウェア開発をサポートする C コンパイラ。 0 An Optimizing ( ( 「 0 Compiler 『 C プログラミング 技術養成コース』 開催場所 : 東京 ・詳しくは、営業企画部 までお問合せ下さい。 ・ ANSI 標準規格に準拠した 8080 / 8085 / Z80 / 64180 のソフトウェア開発をサポー トする C クロス・コンパイラ。レジスタの自動割り付け。 ROM 化に最適。 ■コンパイラ走行環境 : MS-DOS Ver. 2.11 以上、メモリ 384KB 以上必要。 ■供給メディア : 5 " 2HD 、 3.5 ・ '2HD 他。 ・価格 98 , 000 円 Debugger FO 「 [ 引 ( -80 •LSI C -80 て、開発したソフトウェアのデバッグ環境を、 MS - DOS 上て、実現するた めのソースレベル・クロスデバッガてす。ソフト開発の生産性が向上します。 ・デバッガ走行環境 : MS-DOS Ver. 2 . 11 以上、メモリ 384KB 以上必要。 ・対応機種 : NEC PC -9800 シリーズ ( XA , XL, XL,2 RL のハイレゾリューション LDB-80X は LSI C -80 専用デノヾッガのため、単体売りは致しません。 ・セット価格 128.000 円 (LSI C-80 十 LDB-80X) ・供給メデンア : 5 " 2HD 、 3.5 " 2HD EPSON PC -286 シリーズ、℃ -386 シリーズ、 PC -486 シリーズ。 モード含む ) 、 PC - H98 シリーズ、 谷 ( 03 ) 3404 ー 1341 ( 代 ) ・ FAX ( 03 ) 3478 ー 0576 〒 151 東京都渋谷区千駄ヶ谷 1 丁目 8 番 14 号 = ~ 0 = ・アイジ 0 株式会社 く資料請求番号 F03 〉

8. 月刊 C MAGAZINE 1993年12月号

TabIe 1 56 ~ 1 1 1 49 ~ 54 48 32 ~ 46 541 18 ~ 31 129 ~ 132 418 ~ 540 252 ~ 417 234 ~ 244 224 ~ 230 198 ~ 222 136 ~ 194 115 ~ 123 スタートアップソースリスト ( List 1 ) の解説 説明 SlZe 外部定義ラベルを宣言しています ベルです。 main は関数 main( ) です 外部参照ラベルを宣言しています。 rsize, info は , HLK.X が内部て生成するラ コモンテータ工リアテータを宣言しています。これらのテータは同一プログラムでもタス クことに独立したエリアに割り当てられます ここからは . text です。このエリアは , 同一プログラムてあればタスクことに共有されます SX ー W 爪 DOW システムが参照するヘッダです。意味はコメントを参照してください Human68K から直接起動された場合の処理です。本文で説明したように SXKERNEL Ⅸを 起動しています。 NO DEBUGhi 当″の場合 , SX-WlNDOWVer2. * * では普通にプ ログラムが起動され , Ve 「 3. * * では、、 SX ー SHELL から起動してください″というメッセ ージを表示して終了します。 Ve 「 3. * * では $ a350 ( 未公開 SX コール ) の処理が変更になっ たようです HLK.X が生成したテープルに従って , SX ー W 爪 DOW に与えられたメモリに C での初期化デ ータを設定しています。これを行うことで , 普通の C 言語記述で , SX ー W DOW システム に対する完全なリエントラントを実現しています XGCC スタックチェックオプションのための処置です。実際には , 肝心のエラーリポート サプルーチンかないので , スタックチェックは無意味です 環境変数関係のセットアップと , XC 互換モドキの m 訓 oc 関係の初期化を行っています main(int argc, char * *argv) の argc, a 「 gv の設定を行っています 実際に main ( ) を呼び出します 終了処理です GCC でコンバイルされた変数初期化関数をそのまま挿入しています。この部分は GCC がよ り速いコードを生成できるように , HLK. X 作者の石丸氏のソースを改変して挿入していま す。 252 行 ~ 417 行までの C でのソースリストです。 main からスタートさせる疑似命令です。 test. C $include く sxdef. h> #include く sxlib. h> 2 : 3 : 4 : 5 : 7 : 8 : V 0 i d main(void) DMError ( 1 , DMError ( 1 , X68k 活再講 て、必ず行ってください。作成したアプリケ ーションの起動→終了を繰り返すたびにフ リーメモリが減少する場合は , 明らかに確 保したメモリをシステムに返却していませ ん。 このような場合には必ずすべてのソース をチェックしてシステムに返していないメ モリをシステムに返すようにしてください ( 今はよく理由がわからなくてもいいのて、 す。まだ連載は始まったばかりて、すから ) 。 インストールが終わったら簡単なプログ ラムをコンパイルしてみましよう。 付録ディスク収録の test. c(List 2 ) を用意 して Fig. 6 のようなコマンドラインて、コンパ トラブルが発生したら イルしてください 以下の点をチェックしてください 10 コマンドまたはファイルが見つかりませ ん″というメッセージがでる gcc. x をコヒ。ーしたディレクトリにノヾスが 通っているかをチェックしてください 2. 、、 Error : test. c : ? ? ? : ファイルまたはディ レクトリがみつかりません″というメッセ ージがでる 環境変数 include が示すディレクトリに sx def. h などが入っていないか , 環境変数 inclu de が設定されていません。 3. 、、 Error : test. c : ? ? ? : メモリが足りませ ん″というメッセージがでる メインメモリ 2M バイトて、は , GCC を使う にはギリギリの環境て、す。て、きるだけ余計 なデバイスドライバなどを外して , 最大限 のメモリを確保してください。根本的には メモリを増設してしまうのが最良の解決策 て、す。 コンバイルチェッ 来月はいよいよ実際的なプログラミング を行ってみたいと思っています。今回の付 録ディスクを利用して環境を整備しておい てくださいね。 来月は 148 C MAGAZINE " サンプルプログラムです " ) : " 工ラーダイアログで遊んでみました " ) : 1993 12

9. 月刊 C MAGAZINE 1993年12月号

「 VB-Scripting 」 株トムズコンピュータ ・対応言語日本語 Visual Basic Ver. 2.0 IBM 版 Windows 3.02 以上 ・対応 OS Windows 3.0A 以上 するマシン ・対応機種 Windows 3.0A 以上が動作 く動作環境 > 管理システム」 ルから指定文字列を探し出す「文字列検索 ・任意のディレクトリ中のテキストファイ 刺管理システム」 ・個人情報の保管とデータの検索を行う「名 テム」 を行う「ディレクトリとファイル管理シス コピー , 移動 , 削除などのファイル管理 ・ディレクトリのツリー表示とファイルの おり。 いるおもなサンプルプログラムは以下のと 集として使用することも可能。収録されて ログラムて、 , そのまま Windows アクセサリ 管理システム , 関数電卓などの実用的なプ ラムは , 簡易画像工デイタ , スケジュール として使用て、きる。また , サンプルプログ VisuaI Basic プログラミング入門の教材 属。 は , Visual Basic て、の作成方法の解説が付 のサンプルプログラム集。各プログラムに 用して作成した Windows アプリケーション 同ソフトは , Visual BasicVer. 2.0 を使 を発売した。 用のサンプルプログラム集「 VB-Scripting 」 株トムズコンヒ。ュータは , VisuaI Basic C-MAGA 「 Win Batch インタブリタ / TEL 045 ( 716 ) 0680 チ処理言語「 W ⅲ Batch インタブリタ / コンパ が開発した Windows 環境用パッ 株工ージーテックは , Wilson WindowW 株工ージーテック コンバイラ」 are, lnc. ・対応機種 Windows 3. IJ 動作マシン く動作環境 > ケーションの実行が可能 ド操作の貼り付けや特定条件て、のアプリ ・指定したアプリケーションへのキーポー 報の取得 , 設定が可能 ・動作中の DOS, Windows に関する各種情 化 , 移動 , サイズ変更などの操作が可能 ・ウインドウに対して , 最大化 , アイコン おもな機能は , 以下のとおり。 環境下て、自動的に実行することがて、きる。 起動 , ファイル操作などの作業を Windows が含まれ , アプリケーションやコマンドの リプト言語。 200 種類以上のファンクション による自動実行機能を追加するためのスク 同ソフトは , Windows 環境にバッチ処理 ノし、 0 イラ」を発志した ・対応 OS Windows 3. IJ く価格 > WinBatch インタブリタ WinBatch コンパイラ 18 , 000 円 68 , 000 円 ケーション開発が可能な ANSI FORTRAN 77 標準規格準拠の 32 ビット専用 FORTRA N コンパイラ。 640K バイトの制限がないた め , いままて、移植不可能だった大規模な FO RTRAN アプリケーションをパソコン上に 移植することが可能となる。おもな特徴は 以下のとおり。 ・ ANSI FORTRAN77 標準規格に準拠し , VAX, FORTRAN90, IBM SAA など各 種言語拡張機能もサポート ・ CPU i386 , i486 のほか Pentium プロセッ サにも対応 ・ WATCOM C のオプジェクト , および ランタイムライプラリと互換性があり , C と FORTRAN を用いたミックスドラン ゲージ開発が可能 ・ DOS 工クステンダ用 , OS / 2 用の両方のコ ンパイラとリンカを搭載し , どちらの環 境て、も各種プラットホーム対応のアプリ ケーション開発が可能 く動作環境 > ・対応機種 PC ー 9801 シリーズ , DOS/V マ シン , PS / 55 シリーズ , J3100 シリーズ ( ただし , いずれも i3 86 以上搭載機種 ) ・対応 OS MS-DOS Ver. 3.1 以上 OS/2 Ver. 2.0 以上 ・ターゲットプラットホーム DOS/4G, 386 ー DOS-EXTENDER, Windows 3.0 以上 , OS/2 Ver. 2.0 以 上 , NetWare v3.11 / v4.0 , AutoCAD R12J ・必要メモリ 3M バイト以上 間い合わせ先株工ージーテック 〒 461 愛知県名古屋市東区東桜 1 ー 10 ー 9 ベルエースビル 4F TEL 052 ( 95D 2706 「 WATCOM FORTRAN7732 J9.5 」 株ライフボート 株ライフポートは , マルチプラットホー ム対応の 32 ビット専用 FORTRAN コンパイ ラ「 WATCOM FORTRAN7732 J9.5 」を発 、 0 同ソフトは , 最大 4G バイトまて、のアプリ く価格 > 198 , 000 円 く価格 > VB-Scripting 19 , 800 円 VB-Scripting&Visual Basic 59 , 800 円 く発売記念価格 > ( ' 93 年 12 月末日まて、 ) VB-Scripting 13 , 800 円 VB-Scripting&Visual Basic 39 , 800 円 問い合わせ先株トムズコンヒ。ュータ 〒 232 神奈川県横浜市南区別所 4-14-32 156 C MAGAZINE 1993 12 問い合わせ先株ライフポート 〒 101 東京都千代田区神田錦町 3 ー 6 TEL 03 ( 3293 ) 4711 ハーソナルメディア株は , FMR ー 50 シリー ノヾーソナルメティア株 ソフトウェアキット」 「電房具 IB / FMR

10. 月刊 C MAGAZINE 1993年12月号

ないのだが , C 十十は多重継承を許すために 話はそう簡単て、はない。筆者は性格的に何 て、もやってみなければ気がすまない性質な のて、 , 多重継承を行うとどのように表示さ れるのかを検証してみた。その結果が Fig. 6 て、ある。 Qu5x など , 一部に線が重なって美 しくない部分があるが , あまり多くを望み すぎてはいけないのかもしれない。ちなみ に ,Qu5x は Qux と Quux とを継承したクラス て、ある。 さらに , Fig. 6 て、示すものよりも , もう少 し複雑な継承を行わせると , なんと基底ク ラスが図て、右側に , 派生クラスが左側に描 かれるという事態も発生してしまった。 れはさすがにちょっと問題のような気がす る ( どちらが派生したクラスて、あるかが一暼 しただけて、はわからない ) 。 ソースサーバ SymantecC 十十て、は , ソースのリビジョ ンコントロールシステムも環境の中に統合 してしまった。この機能はソースサーバと 呼ばれている。リビジョンコントロールの 機能としては , UNIX/MS-DOS て、もよく使 われている RCS の機能に似ている。 RCS の 中から , check in/check out の機能を中心 にサポートしていると思えばいいだろう ( つ まりサプセットて、ある ) 。ただし , ソースサ ーは独立した MPW ツールとして動作さ せることが可能て、ある。 計時型のプロファイラがサポートされて いる。ただし使用するには , コンパイラオ プションて、コード生成を変えると同時に ソースの修正も必要て、ある。ヘッダファイ ルの # include に加えて , プロファイラの初期 化と結果の出力のための関数呼び出しを付 加する必要がある。結果も , デフォルトて、 は表の形て、コンソールに表示されるだけて、 ある。もしこれ以外の表示が必要て、あれば , ューザが自らプログラミングする必要があ る。総じて , あまり使いやすいプロファイ ラだとは思えない。 UNIX にすらプロファイ ラの結果をグラフ表示してくれるツールが プロファイラ 備わっているのて、ある。 Mac ならば , 当然 このような出力結果はグラフィカルに表示 してくれることが望まれる。 リソースコンバイラ / デコンバイラ MacOS の特徴として , リソースの概念を 導入したことがある。その後のウインドウ システムて、は大なり小なりこの考え方の影 響を受けているように見受けられる。リソ ースを作るには , おおまかにいってふたっ の方法がある。ひとつは , テキストエディ タて、リソースを表現したソースファイルを 作成し , それをリソースコンパイラと呼ば れる一種のトランスレータに通して , バイ ナリ表現のリソースを得るやり方て、ある。 もうひとつは , リソースを直接工ディット て、きる専用のツール ( たとえば Apple 社が供 給している ResEdit というツール ) を用い て , グラフィカルなインタフェイスを利用 しつつ , 直接作成する方法て、ある。 いうまて、もなく , 後者のアプローチのほ うが容易て、ある。前者て、は , リソースを表 現するための特別の言語の文法に精通して いなければならず , かっ , リソースの具体 的な数値的データ ( たとえば , ウインドウの サイズとか表示位置など ) は , 何度か試行錯 誤を繰り返さなければ , 思うような値が得 られないこともある。それに比べて ResEdi t を使う場合には , それこそマウスさえ使え る人て、あれば , 容易にリソースを作成て、き るからて、ある。それにも関わらず , やはり リソースをテキストファイルの形て、取り扱 いたいという要望はある。このため , Sym antec C 十十には Rez というリソースコンノヾ イラと SADeRez というリソースデコンパイ ラ ( 逆コンパイラ ) が付属している。 MPW に Rez/DeRez という名前て、付属し ていたツールがあり , リソースの記述文法 をそれに合わせているために この名前に なっている。 余談だが , 以前は現在とはリソース記述 の文法が異なっていた。以前はどちらかと いうとアセンプラ風の文法て、あった。 ろが現在の文法は何となく C の影響を受けて いるような構文になっている。こんなとこ ろにも , Mac のソフトウェア開発における C の影響力の増大が感じられる。 Rez のほうは , 統合環境の中から , ファイ ルの拡張子を識別して自動的に呼び出され る。 SADeRez のほうは , スタンドアロンて 使うように設計されている ( 最初の SA はこの 頭文字て、ある ) 。ひとつの効率的な利用法と しては , ResEditC 、まずリソースをインタラ クテイプに作成しておき , SADeRez て、ソー スを作成し , それを修正して Rez のためのソ ースとして完成させるという技法が考えら れる。 以上 , ざっと SymantecC 十十の機能を , 主として環境に焦点を当てて紹介した。 M S ー DOS の統合環境も , かなり進歩している とはいえ , やはり Symantec C 十十と比べる と , 一歩も二歩も見劣りするのは事実て、あ る。 Makefile の書き方に凝るのが趣味のハ ッカーさんたちとか , shell 上て、各種のツー ルをパイプて、組み合わせることに喜びを覚 えるグールーさんたちには統合環境は評判 がよろしくない だが , Mac て、のプログラミングて、は , 何 よりもまず , 本来のプログラムのコーディ ングそのものに集中て、きるような環境が提 供されているのだということに注目してほ しい。それ以外のことはて、きるかぎりにお いて容易に処理て、きるようになっているの て、ある。そして , 数ある Mac 用の言語処理 系の中て、 , やはり SymantecC 十十の系統は もっとも広く支持され , 幅広い実績を重ね てきていて , 文中て、も指摘したように , 呰 細な不満はまだ残ってはいるものの , 全体 としては , ほば完成された機能を提供して いるといってもいいだろう。 Symantec C 十十 fo 「 Macintosh まとめ 価格 : Ver. 6.0 英語版 72 , 000 円 ( 税別 ) 問い合わせ先 : システムソフト 〒 8 田福岡市中央区天神 3 ヨ 0 ー 30 TEL092 ー 722 ー 4857 特別記事 Symantec C 十十 Ver. 6.0 に見る Macintosh プログラミング 127