可能 - みる会図書館


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

1. 月刊 C MAGAZINE 1990年8月号

ッダがおかれている ) 部からファイル ( コン パイル単位 ) の最後まててある。したがっ て , 以下ては両者をまとめてたんに ( 関数 ) プロトタイプ宣言と呼ぶことにしよう。 関数プロトタイプのメリット 関数プロトタイプによって次の点に関す るチェックが可能になった。 ( 1 ) 実引数と仮引数の型カ致しているか どうかのチェック。もし一致していな い場合には , 可能であれば自動的な型 変換が行われる ②実引数と仮引数の個数カ致している かどうかのチェック ( 3 ) 引数が固定個であるか , 可変であるか のチェック 実引数と仮引数の型チェックが可能だと いうことは大きなメリットてある。すなわ ちプロトタイプ宣言によって引数の型情報 をあらかじめ宣言しておけば , 実引数と仮 引数の型の不整合の問題は解決する。プロ トタイプ宣言がなされていたら「標準的な引 数の格上げ」は行われない。各実引数は , 対 応する仮引数へ「あたかも代入されるのと同 様に」変換される。これによって long や doub の仮引数に対して int の実引数を渡してしま っても , コンパイル時に型の違いが検出さ れて型変換を行うコードが生成されるのて、 ある。 ところ CANSI C ては , long double なる 型が新設された。従来実数系の仮引数は標 準的な引数の格上げによってすべて dou e 扱いとなり , 少なくとも実数てあることが 示されている以上 , 型の整合に関しては安 全てあったのだが , 今後は必ずしもそうて はないことになる。したがってプロトタイ プによって適切な型変換が行われることの メリットは , これまて以上に重要になる。 さらに ANSI C ては , cha 「の仮引数は確実 に真実 char< あることが要求される。古い C のように int に読み換えてコンパイルするな もはや許されないのてあ これはまた , 不要な変換処理がなくな 19 8 どということは , り , 高速に実行てきる可能性があることを 意味している。たとえば , 利 oat の値を dou e に変換するのには少なからぬ時間を要する 処理系がある。そのような場合に , 実引数 が float< あり仮引数も float< あれば , 変換 は行われずそのまま渡されることになり速 度が向上することになる。 ては , 2 番目のチェックがもたらすメリッ トはなんだろうか ? 実引数の個数と仮引 数の一致は当然のこととして , 最低限必要 とされるものてある。古い C てはこの最低の ことすら保証されていなかったことを考え てみると , なかなか怖いものがある。しか し , 逆にそれが C の柔軟性を生んていたのだ から一概に悪口はいえない。 ANSI C て、は ( 後に述べる例外を除いて ) , とりあえず実 引数の個数と型にれは 1 番目のチェックに よる ) が仮引数と一致していることは保証さ れる。このことによって実は , オプジェク トコード形式の改良への可能性が生まれる のてある。 伝統的な C コンパイラが生成するオプジェ クトコードては , パラメータはスタックに 積んて、渡される。ところが , ある関数が受 け取る実引数の個数 ( 正確にはバイト数・・・ 個数が同じてもバイト数が異なる場合があ り得る ) が , つねに一定てあるという保証が なかったために , スタックに積まれたパラ メータ領域の解放は呼び出し側て行わねば ならなかった。 これに対して , Pascal など , 必ずある手 続き ( 関数 ) に渡される実引数のバイト数が 一定てあることが保証される言語ては , 呼 び出された手続き ( 関数 ) 側て行うのがふつ うてある。コードサイズの点から , そのほ うがずっと有利になる。なぜなら 1 か所だけ にスタック領域を解放するコードがあれば よいからだ。 C のやり方だと , 関数呼び出し のたびにコードが展開される。また , ある 種の CPU( たとえば 8086 や 68010 以降など ) て は , サプルーチンからのリターン命令て同 時にスタックを解放てきるものがある。 れらを利用てきれば実行速度的にも有利に なることが予想される。 プロトタイプによる引数のチェックは , C< も安全にこの種の呼び出し形式 ( コーリ ングコンべンション ) を利用てきることを保 証するものてある。もっともこの形式を利 用する場合には , 徹頭徹尾プロトタイプを 用い , 全ライプラリ関数をその仕様て再コ ンパイルする必要がある。現状て、は , 必ず しもプロトタイプを記述しなくてもかまわ ない仕様になっているため , 残念ながらこ れを実践するにはまだ危険が多い 3 番目のチェックについては若干補足した ほうがよいかもしれない。 ANSI C ては , 関 数のパラメータ型リストに次の形式を許し ている。 int printf(char *format, こての「 ... 」とは , この部分に引数が 0 個以上くるという意味てある。したがって 個数は可変てあり , また型の情報もない なお , 最低 1 個は固定引数が必要とされる。 もちろん 2 個以上の固定引数があってもよ い。この形式以外のプロトタイプ宣言ては 引数の個数は固定となる。当然のことなが ら , 可変個の引数の部分ては型の情報がな いため , その呼び出しに際しては , 実引数 に関する古い C と同様の標準的な引数の格上 げが行われることになる。 固定個 / 可変個のチェックが可能なため比 較的容易に利用てきるのは , 引数のレジス タによる引き渡しだろう。関数の引数の個 数が一定てあれば , ほとんどの CPU てはレ ジスタに入れて渡すほうが効率がよい と ころが , 可変個の引数をとる場合に , 引数 を効率的にアクセスするためには , スタッ クに積んだほうが , 処理が楽になることが 多い。実際に C の関数には可変個の引数を取 るものがある。その代表例が printf てある。 古い C て、は関数呼び出しをする時点て、 , その 関数が固定個の引数しか取り得ないのか , あるいは可変個の引数を取り得るのかの見 分けがつかなかった。そのため , 引数はス タックに入れて渡すほうが無難てある ( それ てもあえてレジスタて、渡すという大胆なコ ンパイラもあったけれど ANSI C てはプロトタイプがあれば引数の る。 124 CMAGAZINE

2. 月刊 C MAGAZINE 1990年8月号

P A R T S ( 対応機種 ) PC-9801 シリーズ ( 実行例 ) ( フォーマット例 ) 0 ℃ PARTS 」は C 言語で様々なアプリケーションを開発するために必要 な関数を提供しま魂℃ PARTS 」の関数を組み合わせて使用するだけ で通常業務に必要な殆どの機能を満足することができます。 0 ℃ PARTS 」は AN 引規格対応の関数を用いて作成されているので、 MS-C 、 Lattice C 、 Turbo C 、 Quick C の各 C コンパイラーで使用 可能です。 0 ℃ PARTS 」はすべてソースコードで提供しておりまた、ライセンスフリー 0 0 ℃ PARTS 」にはそれぞれのパッケージに含まれた関数を用いた実用 的な参考プログラムが付属しています。 0 付属マニュアルには各関数についての仕様及びサンプルプログラムに ついての説明が記されています。 VOL. 1 帳票作成ソースライプラリー 一般的に、帳票を作成する場合印字位置、印字桁数、タイトル文字、罫線の 印字など、一表の帳票を作成する場合本体のプログラム、つまりテータの 集計などの処理よりも、前記の項目についての調整に多大な労力を費やす のか普通です。 そこで、本「 C PARTS VOL. 1 」では、印字位置、印字桁数、タイトル ( 固 定文字テータ ) 、罫線の有無については、あらかじめフォーマットファイルで 作成しておき、プログラム本体の作業は、単に順番にテータを出力すること のみとすることを可能としています。 また、フォーマットファイルは、一般的なエテイターで作成することが出来る ため、アプリケーションプログラム完成後でも、次の項目の変更か可能とな っています。 1 ) 印字位置 2 ) 印字桁数 3 ) 罫線の有無及び罫線の種類 ( 太線、細線 ) 4 ) 固定文字 更に本体プログラム中では次の項目の指定か可能となっています。 1 ) 日付文字列の出力 ( 5 種類 ) 2 ) 時間文字列の編集 ( 4 種類 ) 3 ) 数値テータの編集 ( カンマ付、¥付、円付、 $ 付 etc) 4 ) 位置設定 ( 左詰め、右詰め、センタリンク ) ( 縦倍角、横倍角、縦横倍角 ) 5 ) 文字の大きさ 6 ) 文字の強調 7 ) 網かけ 8 ) アンダーライン付 ー・印刷、一 発売中 本ライプラリーでは、パソコン用プリンターでバーコードを印刷するための関数を提 供します。 提供する関数の主な機能は次のとおりです。 >JAN 、げ F 、 NW7 、 CODE39 の各八一コートをサホート 使用可能プリンターは P 日 201 系のプリンター ( 印字処理を変更すれは他のフリンター ても使用可能。ただし、印字精度の高いプリンターを使用して下さい ) バーコード印刷後に対応するコートを縮小印字可能 サンプルプロクラム・・・・・ハーコート印刷プロクラム 対応フリンタ P 日 201 系 発売中¥ 14 C ARTS VOL.3 ( 画面制御カソースライプヲー ) 本ライプラリーでは画面表示、キーボード入力サポート関数を提供します。 本ライフラリーでは、市販工テイターを使用して作成したフォーマットファイルを使用 し、画面を表示し、入力を行います。従って、プログラム作成後でも、画面のレイアウ ト、表示桁数、入力桁数、タイトル等を自由に変更できます。 提供する関数の主な機能は次のとおりです。 文字表示属性の指定 ( シークレット、プリンク、リバース、アンダーライン、バーチィ カルライン、色指定 ) 文字列の入力編集 ( アルファベット、カナ、漢字、数値 ) ウインドーのサポート ( ウインドー数はメモリー容量に依存 ) サンプルプログラム・・簡易顧客管理プロクラム Z. 上ル一一 下のとおり第 & しました 下紀のとり齢しま C - P A R T 0 し . 2 一三新 ーー・ 00 ~ ・・ 00 ー当・いげ鋼・・して員に、 の物に々てようなの第興に アイセル設一角 ARTS OL. 4(lSAM ソースライプラリー 発売中判 9 本ライフラリーでは一 SAM 形式のテータベース構築用関数を提供します。 日 + t 「 ee 構造のテータベースなのでテータの高速検索か可能です。 提供する関数の主な機能は次のとおりです。 同時オープンファイル数は最大 10 ファイル 最大レコート長は 32K 日 1 ファイルに設定可能なキー数は 45 キー 次候補、前候補テータの呼ひ出し キータイプは文字及ひ数値 同時アクセス可能キーは川キー (int 、 long 、 double) キーテータの最大長は 128B 最大レコード数は約 10 億件 キー名称の最大長は 16B サンフルプログラム簡易テータヘース C ARTS VOL.5( ラフ表示ソースプヲー集月発売予定¥ 1 ま 本ライフラリーでは、アプリケーションプログラム中で持っている、様々なテータをグ ラフイヒするための関数を提供します。 主な機能は次のとおりです。 1 7 種類のクラフ表示 ( 棒、折線、円、バイなと ) フォーマットファイルを使用するので、表示位置、タイトルなどのバラメータの変更がプログ ラム作成後でも可能 テータ予測分析関数を装備 拡大、縮小、斜体、網かけなどの文字テータに対する修飾が可能 ・プログラム開発ツールシリーズ C DAT SOOPE 木発売予 9 通常、プロクラムを作成しても、テスト用テータの作成、作成後のテータの内容の確認な と、本体プログラムの作成以外の労力で結構手間取ることかあるものです。そこで、登場 したのか、「 C DATA SCOPE 」です。 「 C DATA SCOPE 」は、 C での st 「 uct の表記で、レコードのフォーマットを記述す ることにより、プログラムで使用するファイルのテータをアクセス可能にするもので、次の ような特徴かあります。 1) レコードの定義はプログラム起動後に定義する方法と、 include ファイルで指定 する方法がある 2 ) 使用可能テータファイルは固定長テータファイル 3 ) レコードの初期設定 ( 一括指定、部分テータの設定 ) 4 ) レコードテータの変更 ( st 「 uct で記述された型での入力が可能 ) 5 ) レコードテータの削除 6 ) レコードテータの追加 7 ) 画面上での指定テータの検索、表示 8 ) レコードテータのダンプ ( 打ち出しフォーマット、打ち出しテータの指定か可能 ) ~ セ ~ 株式会社 〒 171 東京都豊島区池袋 2 丁目 53 番 8 号秋島ビル 5F TEL. ( 988 ) 6973 ( 代表 ) ( 3 種類 )

3. 月刊 C MAGAZINE 1990年8月号

0 十十 Version20 お待たせしました′ Version 2.0 新発売 そして、 AT@T C 十十日 e 肥 .0 準拠の完全日本語対応 C 十十、 MIWA C 十十 Ve 「 sion2.0 が発売となりました。 ・導出クラスが直接ーっ以上の基底クラスを持つような多重継承か可能。 ・非 C 十十コードとのリンクを明示的に宣言可能。 ・ ANSI C との互換性を向上させるためにキーワード v at ⅱ e か追加。 ・ static. const. および volatile なメンヾ関数を宣言可能。 ・純粋仮想関数を用いて、抽象クラスを宣言可能。 ・演算子 new と d ete を多義化して、クラスことに宣言可能。 ・テストラクタを明示的に呼び出せる。等々・ For More Advanced Serious Programmers C 十十は、 AT&T ベル研の BJa 「 ne St- 「 oust 「 uD 博士により C の後継言語として設 計されたオプジェクト指向型の汎用プログラ ミング言語です。プログラミング言語として 広く普及している C の機能を全て継承しなが ら、更にクラス概念や仮想関数、多重継承な どの、数々の新機能を盛り込み、今や C に代 わる言語として全世界を席捲しつつあります。 MIWA C 十十は、 AT & T よりリリースされ ている AT@T Standa 「 d C 十十をベースに ミワシステムズコンサルティングが国産の PC 、 WS 向けにチューンアップを施した最新のプロ グラミング言語です。先進のオプジェクト指向 プログラミングのサポート、 C との互換性など の特徴はそのままに、さらに日本語処理関数に も対応しており、 90 年代のオプジェクト指向 型ソフトウェアの開発に欠かせない数多くの 新機能が拡張されていま魂 ・ MIWA C 十十の全製品が C 十十のソース・レ ベルで互換性あり。 ・コメント、リテラルに日本語の使用が可能。 ・日本語 F EP との共存が可能。 ・ MIWA C 十十に標準添付のライプラリの他 に、対応する C コンバイラの標準ライプラリ に含まれる関数も使用可能。 ・ MS - DOS のシステム・コールをサポート。 (MS-DOS 版 ) ・ Mic 「 0S0 仗 C 準拠の日本語処理関数が使 用可能 0(NEWS 版 , 2 ロ 50G 版 ) 0 MIWA C 十十のラインアップ Mic 「 osoft C V4.O & V5.1 対応版・・発売中 SONY NEWS 対応版・ ・新発売 / TURBO C VI. 5 & V2. O 対応版・・・・・発売中 SONY 日旧 C NEWS 対応版・ ・新発売 / N E C EWS ー 4800 対応版・・ 新発売 / 日立 2 ロ 5 ロ G , 2 ロ 5 ロ / 32 ( 開発予定 ) 日立 2050G, 2 ロ 5 ロ / 32 対応版・発売中 ・ LJNIX は AT@ T 社の開発した OS です。・ Mic 「 OSOft 0. MS - DOS は、 Mic 「 OSOft 社の製品で魂・ TLJRBO C は、 Borland lnte 「 nation 引社の製品てす。 ※ NEWS 版のユーサ登録がお済みでない方は、お早目にユーザ登録カードをこ返送願いま魂バージョン・アップのこ案内をお送りいたしま ※ BBS を開局しました。こ質問、こ相談等お気軽にどうぞ。 ( Ⅵ WA - NET , 045 ー 321 ー 675 ス 1200 / 2400bPS MNP5) MS—DOS 版統一価格 59800 円 IJNIX 版 CJNIX 版 〒 221 横浜市神奈川区台町 10 ー 15 株式会社ミワシステムスコンサルティンク Tel. ( 045 ) 312 ー 5418 ( 代表 ) ・ ( 045 ) 312-2589 ( テック・サポート ) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 新登

4. 月刊 C MAGAZINE 1990年8月号

X-Final SPARC シリーズ版発売 株工ー・エス・ピー 株工ー・エス・ピーは , UNIX ワークステ ーション上て稼働する日本語スクリーンエ デイタ「 X-Final 」 SPARC シリーズ (Sta tionl, AS4000 , Sun4 互換機 ) 対応版を発売 発売中の X ー Window 対応の X ー Final Ver. 1.1 を SPARC ステーションに移植した ものて , ウインドウシステムは SunView, 日本語環境は JLE , OS は Sun OS R4.0.3 以 上に対応している。すてに NEWS, LUNA, EWS4800 などに供給され , 今回の SPARC シリーズへの対応により開発環境の 統一が促進される。 X-FinaI は , UNIX 開発環境の特長を生か した漢字コードの自動判別や変換機能をも ち , 3 種類ある UN Ⅸ漢字コードすべてに対 応 , 異機種間ネットワークての開発環境を 実現している。またパイプ機能の活用など , UN Ⅸの環境を利用した機能拡張が行われて いる 0Ver. 1.1 て追加されたおもな機能は 以下のとおり。 ・テキスト編集画面てのシェルコマンドの 実行 ・漢字コードの自動判別 / 変換 ・ポップアップメニューのカスタマイズ機 能 ・ UN Ⅸコマンドとのパイプ接続 ・カットバッフアの編集 なお RISC ワークステーション対応 X-Final として , ソニ—RISC-NEWS 版を発売中て あり , 近日中に NEC EWS4800 RISC 版を 発売する予定。 く価格 > 98 , 000 円 ( 2 台以上ての使用は割引制度あり ) 間い合わせ先株工ー・エス・ヒ。ー 〒 143 東京都大田区大森北 5 ー 8 ー 11 ー 106 TEL 03 ( 767 ) 1451 FAX 03 ( 767 ) 1453 C-MAGA ーズ ・ COM ファイルや EXE ファイルの編集を行 ファレンスを表示するガイダンス機能 ・ ANSI C に準拠した 400 種以上の C 関数リ ・ハイレゾ / ノーマルモード自動判別機能 ・最高 20 ファイルを同時オープン ・ MS-DOS 版と上位互換 を向上させている。おもな機能は以下のと 版と同様の編集環境を実現し , さらに機能 タ「 RED2 」の OS / 2 版を発売した 0MS-DOS 株 LIFEBOAT はマルチスクリーンエディ 株凵 FEBOAT RED2 OS / 2 版 く適応 OS 〉 PC ー 9800 シリ M シリーズ く ) , FM シリー く対応機種 > PC ー 9800 シリーズ ()T を除 ・漢字 /ASCII コード表示 うバイナリエディット ス : Panacom FM/Panacom M シリーズ MS OS / 2 Ver. 1.0 以上 工ル・エス・アイジャパン株は , 工ル・エス・アイジャパン株 ソースレベルクロステパッが LDB -80X 」 TEL 03 ー 293 ー 4711 〒 101 東京都千代田区神田錦町 3 ー 6 問い合わせ先 #LIFEBOAT く価格〉 38 , 000 円 く必要メモリ〉 5MB 以上 MS OS / 2 Ver. 1.1 以上 プログ 社の Turbo-V システム , Turb018011 システ スデバッガて , 京都マイクロコンピュータ ー DOS 上て実現するためのソースレベルクロ 発したソフトウェアのデバッグ環境を , MS LDB-80X は , LSI C ー 80 (MS-DOS) て開 ノし 0 グラム開発が行える LDB ー 80X を発古した ラを意識することなく C 言語レベルてのプロ ラム環境からデバッグエ程まて , アセンプ ムと併用することにより , CP/M-80 のアプ リケーションプログラムもデバッグが可能。 おもな機能は以下のとおり。 ・ LSI C-80(MS-DOS)< 開発したプログラ ムのデノヾッグをソースレベルて行える ・ 5 つのウインドウ ( コード , レジスタ , ウ オッチ , コマンドおよびオプションウイ ンドウ ) , ポップアップメニュー , ファン クションキーなどによるデバッグ時に必 要な情報を変更 , 参照可能 ・強制プレーク機能により , リセットする ことなく実行中またはループに入ってし まったプログラムを中断てきる く対応機種〉 PC ー 9800 シリーズ ( ハイレゾモード可能 ) PC ー 286 / 386 シリーズ く対応 OS > MS-DOS Ver. 2.11 以上 384KB 以上 く必要メモリ〉 くメディア > 5 〃 2HD, 3.5 ク 2HD く価格〉 LSI C ー 80 (MS-DOS) 98 , 000 円 LSI C ー 80 (MS-DOS) , LDB-80X セット 128 , 000 円 問い合わせ先工ル・エス・アイジャパン株 〒 151 東京都渋谷区千駄ヶ谷 1 ー 8 ー 14 TEL 03 ー 404 ー 1341 低価格 EMS カード 株メルコ 株メルコは NEC 98NOTE 用 , EPSON ラ ップトップ用 EMS ポード 2 機種 , RCN シリ ーズ , EMP シリーズを発売した。それぞれ の特徴は , 以下のとおり。 NEC 98NOTE 用 ・実装 1.5MB を , RAM ( 標準 ) とノートド ライプの 2 ドライプて利用可能 ・ RAM ドライプとノートドライプは , 相 互可変て容量コントロール可能 ・ノートドライプは不揮発 RAM ディスク ・プリンタスプーラ , プリントユーティ C-MAGA News square 145

5. 月刊 C MAGAZINE 1990年8月号

N more 作るときには , どんなマクロ置換を行うか を把握しているため , これほど神経質にな る必要は感じない。しかし , 不特定多数に 数が可変かどうか判別が可能なため , これ を利用してパラメータの渡し方を変えるこ とが可能だ。しかし , これも古いスタイル と混合されてしまうと困ったことになる。 ANSI C ては過去との互換性を重視している ため , このような部分て思い切った改善を 施すには多大な苦労がある。 ところて , printf 系 ( printf, fprintf, sprintf, vprintf, vfprintf, vsprintf など ) の 関数は , もちろん可変個の引数を取る。そ の結果 , たとえ ANSI C てあっても ( 最初の いくっかの引数を除けば ) , 実引数に対して 旧来の引数の格上げ処理が行われる。この 引数の格上げによる float → doub 厄への拡幅 の結果として , 少々注意すべき現象が発生 する。それは printf 系の関数において , % f と いう変換仕様と % けという変換仕様は同じ意 味をもっという点てある。すなわち , どち らも doub 厄の値を変換するのてある。そも そも , 変換仕様におけという文字の意味 は「 long 」を意味している。 % d ては int を変換 し , % は long を変換するという具合だ。そ して int と long の幅が異なる環境て、は , この 両者は注意深く使い分けなければならない ( 注 6 ) 。 これに従えば % f は float 型の , % けは doub 厄 型の変換仕様のはずてある。しかし , 上述 したように引数の格上げがなされる結果 , p 「 intf 系関数に float 型が渡されることはな い。したがって % f というのは本来無意味な 指定てある。しかし , ューザの便宜 ( ? ) を考 えて p ⅱ ntf 系てはあえて % f を % けと同じ解釈 にしているてある。 これだけてあれば , 別段問題はなかった のだろうが ; 困るのは scanf 系と混合使用す る場合の話てある。 scanf 系ては %f と % けは本来の意味 , すな わち % f が float の変換に使われ , % けが doub の変換に使われ両者は区別されている。と ころが安易な p ⅱ ntf 系になれてしまったユー ザはこの使い分けがてきなくなってしまっ ているのてある。この問題はプロトタイプ と直接関係してはいないが , 困った問題て、 あることは確かだ。 ANSI C といえども , ま だまだたくさんの落とし穴が残されている のて、ある。 ふたつのプロトタイプ のようになっていたらどうなるだろうか ? 仮引数名を指定しているほうだが , もし次 論旨はこうてある。たとえば , 先の例て、 味の一文を発見した。 引数名は書かないほうが安全だ , という意 書 ) に , 関数プロトタイプ宣言においては仮 る , 先日 ANSI C 規格の RationaIe( 補助文 多くの読者も同様てあろう。ところがて、あ されている。私もこれまてそう信じてきた。 がドキュメント性が増すのて、望ましいと記 K & R 第 2 版ては , 仮引数名を記述するほう さて , どちらの形式が望ましいだろうか ? cha 「 *strcpy(char * , const cha 「 * ) ー . ; *src) ; cha 「 *st 「 cpy(char * dst, const cha 「 イプは同じ意味をもつ。 ョンてある。つまり次のふたつのプロトタ トタイプにおいて , 仮引数の名前はオプシ 言における仮引数の話をしておこう。プロ 最後にもう 1 点。 ( 真の ) プロトタイプ宣 #define src #define dst 自作プログラムのためにプロトタイプを あるだろうか ? だが , こまて心配する必要がはたして に盲点てはあった。 s 「 c など ) を使えと薦めている。これはたしか 約された名前空間の識別子 ( たとえば dst, 仮引数名を書かないておくか , あるいは予 いのだ。このようなことを防ぐためには , にも関わらず , 構文的になんら誤りてはな これは意図していたものとまったく違う char *strcpy(char * * , const char * くなる。 これは当然次のプロトタイプ宣言と等し *src) ; char * strcpy(char * dst, const char 提供するライプラリの記述には , な配慮が必要になるかもしれない 断は読者にお任せする。 このよう この判 ( 注 1 ) プロトタイプを利用すれば , 関数定 義そのものはトラディッショナルスタイル を用いていても , モダンスタイルのメリッ トを享受てきるコンパイラが一般的。ただ し , GCC のように例外もある。 ( 注 2 ) 実引数 : 関数を呼び出す際に実際に 渡す引数。たんに引数と呼ぶこともある。 仮引数 : 関数定義て使用する , 実引数の値 を受ける変数。たんにパラメータと呼ぶこ ともある。 ( 注 3 ) cha 「などが int に拡幅されて関数に渡 されるのには , 実はもうひとつ歴史的な理 由がある。最初に C がインプリメントされた CPU は PDP ー 11 という 16 ビットマシンてあっ たが , このマシンはバイト単位のスタック オペレーションがてきなかった いちおう 1 バイトのデータをブッシュすることはてき るのだが , その場合にもスタックポインタ は一 2 され , ワード境界にアラインされるの て、ある。このことも int に拡幅する動機のひ とつになったてあろう。 ( 注 4 ) この問題はプロトタイプ宣言を行わ なければ ANSI C て、も同様てある。しかし ANSI C< は , 適切なヘッダファイルをイン クルードすることによってプロトタイプ宣 言がヘッダ内て、行われるのて , 正しくイン クロードすればたんに 0 と書いても問題はな くなる。 ( 注 5 ) あるいは (float) 2 と記述しても , 引 数の格上げの結果 dou e になって渡される のてよいことになる。 ( 注 6 ) int と long の幅が等しい環境ては , 整 数の変換仕様はたとえば % d の一種類だけて すませてしまうことも可能だが , 好ましい スタイルとはいえないだろう。 ANSI C ー more 125

6. 月刊 C MAGAZINE 1990年8月号

BGM グラフ作成プログラ 価格 \ 98 ′ 80 価格 \ 148 ′ OOO ため、多彩な表現が可能です。■すく使える、拡張もできる 24 種類のタイルバターン、 10 12 種類のグラフ作成機能を提供するパッケージです。例えば、必要なノヾラメータを設定し、関 種類のラインバターンを登録済み、さらにユーザー登録も可能■ハードコビーグラフィッ 数を呼び出すだけで円グラフや棒クラフを簡単に描画することかてきます。さらに、タイルバ ク画面、テキスト画面、グラフィック画面とテキスト画面の重ね合わせが可能。日本語コード ターン、ラインバターンとの対応、日本語コード文字列をグラフィック画面に表示する機能を (Shift-Jis: 全角、半角、 1 / 4 角 ) 文字列をグラフィック画面に表示できるので、ガイドメ サポートしているので、ピジネスアプリケーションて必要とされるあらゆるグラフ情報を表現 ッセージ等をテキスト画面に表示したままの状態でもグラフィック画面だけの八一ドコピーを できます。 印刷することができます。 ■必要なバラメータを設定し、関数を呼び出すだけで簡単にグラフを描画できます。サンプル ◆「日 GM / EX 」ては XL 、 XL2 、日 L の八イレゾリューション / ノーマルの両モードに対応し プログラムを見れはすぐ理解てきます。円グラフの例 cg(vlist. vcnt. cx. cy.r.scalel, ており、さらにどちらのモードでも動作する互換モード ( 自動判別 ) もあります。 scale 2 ) : ■ 12 種類のグラフ作成機能ー描画位置、大きさを好みに合わせて描画できる 以下の関数に「 G 「 a ロ hic & MouseJ または CG 「 aphic & Mouse / EX 』の一部の関数が ■サポート関数を用意タイルノヾターン ( 塗りつぶしパターン ) 、ラインバターンの一覧を表示 含まれます。 する関数により、例えはタイルバターンとその内容 ( 例えは“商品名” ) との対応を簡単に表示で 円グラフ / ドーナツッグラフ / バイチャート / 横棒グラフ / 横棒グラフ ( 複数 ) / 橫棒グラフ ( 積 きます。■多彩な表現が可能円グラフ、ドーナツッグラフ、バイチャート、帯グラフでは み重ね ) / 縦棒グラフ / 縦棒グラフ ( 複数 ) / 縦棒グラフ ( 積み重ね ) / 帯グラフ / 折線グラフ / レ % または数値の表示 / 非表示の選択が可能、縦棒グラフ、横棒グラフ、折線グラフではスケー ーダーチャート / ラインノヾターンリストの表示 / タイルバターンリストの表示 / タイルバター ルの表示 / 非表示の選択が可能、タイルノヾターン、ラインバターンと表示色の組み合わせ、ホ ンの作成 ーダーカラー ( 円、棒等の外枠の色 ) 、スケールカラー、 % または数値の表示色の指定が可能な Key & DispIay 価格 \ 29 を 800 現在表示されているすべての 1 バイトキャラクタコード / 漢字の文字列を V 日 AM から取り出 し ASCll/Shift-Jis コードへの変換が可能です。■指定座標の表示文字が漢字か否か、 Key & Dis ay はソフト開発で欠かせないファンクションキー及び ANK 、漢字の入力、 V 日 AM を直接アクセスしての文字表示等 100 を越える関数て構成されています。ファンクション また漢字の 2 バイト目か等の識別機能により、現在表示されている文字を検査することができ キー自身には一切特別な値や文字列を設定せすに、日 OS レベルの処理て行っているため、ど ます。・カーソルコントロールシステム 2 種類のカーソル移動関数群とカーソル移動範囲 のレベルの関数でも同じ処理でファンクションキーの取得も可能てす。また、 V 日 AM を直接 限定機能により、多彩なカーソルワークが可能になりました。通常の上下左右移動、座標指定 アクセスして表示するので 25 行目に文字列を表示してもスクロールしてしまうことはなく、す 移動、カーソル位置取得機能はもちろん、表示文字列のコード識別機能を使用したカーソル移 べての 1 バイトキャラクターコード ( 0X01 ー 0xf7 ) を表示することができます。文字表示、文 動関数群を用意しました。この関数群は移動位置が漢字の 2 バイト目か否かの検査を行い、移 字属性の設定 ( 色 / 属性 ) 、 V 日 AM 上の指定領域を切取り、貼り戻し、表 / 裏画面の切り替え 動位置か漢字の 2 バイト目の場合はスキップし、次の位置へ移動する関数群です。カーソル移 表示、全画面 / 部分スクロール、ファンクションキー表示等の機能を持っています。 動範囲を一定領域に定する関数も用意しました。■まだまだある、こんな機能、こんな関数 ーキー入力ファンクションキー及び ANK 、漢字の入力。ファンクションキーと SH 旧 T 、 指定文字 / 文字属性による V 日 AM の消去関数、指定座標から n 文字を消去する関数、カーソ CT 日 L キー等のシフトキーとの組合せで、別のキーコードを得ることもできます。■日本語 ルの表示 / 非表示切り替え、カーソルプリンクの ON / OFF 、ファンクションキー表示のセー 入力フロントエンドプロセッサ ( FEP ) のコントロール日本語入力 FEP の ON / OFF 、入 プ / リストア / 設定 / 消去 etc ・ カモードの切り替え等のコントロールができます。対象となる日本語入力 FEP は ATOK4 関数 ( 抜粋 ) 5 / 6 / 7 ( 6 モード ) 、 VJE - 夜 / です。・漢字の入力は FEP 等を介して行なわれ、 2 バイト ATOK 、 VJE のコントロール / ファンクションキーの退避、設定 / * 漢字、ファンクション で返されます。・ V 日 AM を直接アクセスして文字表示を行っているので非常に高速です。 キーを 2 バイトコードで返すキー入力 / 全角、 ANK 文字キー入力 / * ファンクションキーの直 ・すべての 1 バイトキャラクターコード ( 0X01 ー 0Xf7 ) を表示することかできます。・全画 接入力 / * テキストを箱型に消去 / * テキストの指定範囲のイメージの取得、貼り戻し / テキス トから箱型の文字列をコピー、移動 / * テキストから箱型に文字属性を取得、貼り戻し / * カー 面に表示可能 25 行目に文字列を表示してもスクロールしてしまうことはありません。■裏 画面を有効に利用できる表 / 裏画面を切り替えて表示選択できるのでスピードアップ、 V 日 ソルを指定座標に移動 / * カーソル座標の取得 / カーソルを移動範囲内で移動 / カーソルを上下 左右に移動 / カーソルホームボジションを設定 / カーソルをホームボジションへ移動 / 全部、 AM の有効利用か可能です。・画面の指定領域を切取ったり / 貼り戻したりか簡単にできま す。ー画面上に表示されている内容をそのままファイルにセープしたり、ファイルにセープ 部分、文字単位での消去 / ファンクションキー表示の退避、再設定、表示、消去 / * テキスト された画面内容を再表示することか可能です。セープ / ロードする領域を指定することができ に ASCIIS 全角、文字列を直接表示 / 指定されたバイト数分文字列を表示 / 現在のカーソル位 るので全画面 / 部分のどちらも可能です。・すべての文字属性 ( シークレット、プリンク、リ 置に文字列を直接表示 / * 表示文字か漢字か否かの検査 / テキストの文字、文字列コードの取 バース、アンダーライン、バーチカルライン、色指定 ) を画面上の指定領域に対して設定できる 得 / カーソルプリンク、表示の ON 、 OFF/ * テキストの切り替え / C 日 T のモードの検査、 ので表現力豊かな画面表示が可能です。・多彩な画面操作機能を装備画面上の指定領域に 変更 / スクロールし、文字列を表示 / * 上、下、左、右スクロール ( 日本語入力 FEP 制御関数は 対する文字 / 文字属性のコピー、移動、消去を行う関数が用意されています。・画面上の指 ノーマルモードでのみ使用可能。 * は CWindow & Men1-JJ および CWindow & Menu/ 定領域に対する上下左右スクロール機能により、全画面 / 部分のスクロールが可能です。・ EX 」ても提供 ) ~ 価格 \ 98 ′ 80 C odeBase 4 タベースを選択後、ロックする / レコードを書き出す / 指定された範囲のレコードの削除・ [exep 「 ession] d 日 ASE の式を評価し、結果を得る / dBASE の式を中間コンパイルす CodeBase 4 は C 言語から dBASE Ⅲ、 dBASEIII plus 、 dBASEIV 、 C ⅱロロ e 「のファ イルシステム ( テータベース、インテックス、メモ ) とコンノヾチプルなテータベースライプラリ る / 演算子の優先順位の取得•tfield] 10 進数の桁数の取得 / フィールドリファレンス番号 の取得 / フィールド名の取得 / カレントテータベースのフィールド数の取得 / レコードバッフ です。これらのテータベース言語にコンバチプルな関数を用意しているので dBASE Ⅲ / P 旧 s からの移植も簡単にできます。 dBASE Ⅳ - と比較してテータアクセスは 5 倍速く、ループては アの先頭ポインタの取得 / レコードバッフア内の文字の総数の取得 / フィールドリファレンス 番号の取得 / 論理フィールドが T 日 LJE か FALSE かの検査 / 指定フィールドの型の取得 / 数 なんと 330 倍も速くなります。 ・高速処理・最大 L022 フィールド、 2 , 000 , 000 , 000 レコード ( 論理値 ) ーメモリモテル S 値フィールドの値を dou e 得る / 指定フィールドのバイト数の取得 E[index file] イ ンテックスファイルを作成、オープン、クローズ、ロック、ロックの解除、選択キーの追加 / ( 一部機能が限定 ) / M / L ■ 2.000 行程度のソースプログラムで 100kb 程度の . exe ファイル を作成可能・マルチューザー対応ー PC ー 9800 シリーズではテータベースライプラリて漢字 ポインタを最後尾に移動、指定キーに設定 / ファイルリファレンス番号の取得 / インデックス し直す / キーをサーチ / ポインタを先頭へ設定 / インデックスファイルの型を文字て返す / ロ の使用は可能■旧 M - pc 版ではウインドう、メニュー関数も付属・英文マニュアル◆対 ックの解除 nrnemo] 内部的にテータが格納されているかを検査 / メモファイルにある情 応 C 言語 : Mic 「 osoft-C 4.0 / 5.1 または Tu 「 bo - C2.0 報を書き出す / メモフィールドを読む、テータが存在するか調べる B[utility] 次の該当フ 関数 ( 抜粋 ) •tblock] プロックキーを追加、削除 / プロックを検索 / キー番号のスキップ ECconve 「 アイル名を探す / セクションのロック、解除 / ファイル名に適した文字か調べる / ファイル名 sion] 指定長の ASC ⅱ文字列を dou e / int / ng に変換•Cdatabase] テータ と拡張子を結合する / ファイル名から拡張子、ティレクトリ名を取り除く / ファイルをオープ べースファイルの作成、オープン、選択 / 指定レコードに削除マークを付加 / 削除マークか付 ンする u[extended] レコードがプランクかどうか調べる / メモリバッフアに入るだけの レコードをシーケンシャルに読む / レコードバッフア内のレコードを n 番目とする / テータベ 加されているかの検査 / レコードを読む / ロック / 削除マーク付きのレコードを削除 / レコー ド数、番号の取得 / 参照番号の取得 / データベースの選択 / インテックスファイル内の先頭レ ースの内容を出力テパイスに書き出す / 関連テータベースと管理テータベースを関連付ける / コードを読む / カレントテータベースのロックの解除 / テータベースのオープン、選択 / テー フィールドリファレンス番号によって指定されたフィールドの総計を得る ・走行環境等 ・まだまだあるこんなライプラリ 価格 \ 98 ′ 000 ー Lisp ライク関数ライプラリー ECIisp ・機種 一本格的データベースライプラリ 価格 \ 128 ′ 000 一円 NNAC し E 日し E MANAGER ー AX マシン用テキストウインドウ / メニューライプラリ - 価格 \ 98 ′ 000 •AX-WINDOW ー FMR - 50 / 60 用テキストウインドウ / メニューライプラリー 価格 \ 98 ′ 000 •FMR-WINDOW ー FMR-50 用グラフィックライプラリー 価格 \ 98 ′ 000 •FMR-GRAPHIC ー構文解析 / シンポルテーカレモジュールー 価格 \ 69 00 ■ Ptree & Symtab ー CCF / 総合コンソールコントロールライプラリ fo 「 FORTRAN 価格 \ 79 ′ 800 ・・ NEC PC -9800 シリーズ ( LT 、八イレゾ リューションモードを除く ) CCCF/EXJS CBGM/EXJS CG 「 aohic & Mouse/EXJs CWindow & Menu / EX 」は XL 、 XL2 、日 L のハイレゾリューシ ョン / ノーマルの両モードに対応。 ・ MS-DOS ・・ Ve 「 sion 2.11 / 3.1 / 3.3 ・対象 C 言語・・ Mic 「 osoft-C 4.0 / 5.1 Quick-C 1 . 1 / 2.0 Lattice-C 3.1 / 4.0 Tu 「 bo-C 2.0 5 ″ D 、 3.5 " 2HD 、 5 " ( 旧 M - pc フォーマント ) 株式会社ティッフス ・〒 111 東京都台東区蔵前 2 ー 8 ー 10 ・ PHONE 03 ー 866 ー 8635 ・ FAX 03 ー 866 ー 8637 クイック資米斗送イ寸サ・一ヒス お求め方・去 ・いますぐ、資料をこ希望の方はお電話ください。 ・お近くのパソコンソフト取扱店または弊社までこ注文ください。 ・こ注文の際に製品名、対象コンバイラ ( ウアージョン ) 、メティアを指定してください。 FAX て資料をお送りいたしま魂

7. 月刊 C MAGAZINE 1990年8月号

DSP チップ標準搭載で CD と同等の高音質。 0 年代のスタンタドになります NeXT のサウンドが グラ刀ックスからサウンド入。 1990 年 代、コンヒュータの世界が拡大します コンピュータグラ刀ックスという考え方 は、かって途方もないことだと思われて いました。しかし今日て、は、文字、数字 にくわえてグラ刀ックスをコンビュータて、 処理することが当たり前になっています 現在、サウンドがひと昔則のグラフィッ クスと同じようなポジションにあるのかも しれません。サウンドは、これまて、コン ヒ。ュータにとってあまり必要のないもの と考えられてきました。ところコン ピュータの使用領域が広がるにつれて、 サウンドの持っ多様なアプリケーション の可能性が注目されるようになってきた のてすサウンドを無視したコンピュータ は、まったく時代遅れのものになってし まうて、しよう。 1990 年代のコンヒ。ュータ シーンを想定し、 NeXT はいちはやく高 度なサウンド機能を取り入れました。 NeXT は、 DSP チップを標準搭載。 サウンド処理を CD 並の高音質 サウンドを自由自在に操るためには、 高度なマトリクス処理能力が必要とさ れます NeXT は、 CPU68030 、 FPU 68882 とともに、コンヒ。ュータて、初めてデ ジタル信号プロセッサ (DSP) 56001 を 標準搭載しました。この DSP チップが、 大量のマトリクス計算を 25MHz の高 速て、実行。 44.1KHz のサンプリング レート、 16 ビットの分解能、そして完全 ステレオという、 CD と同じクオリティの サウンドを作成することがて、きますまた、 特定の目的のために、 DSP チップそ のものをプログラムすることも可能てす たとえば、ファックスや高速モデムの機 能。さらには、音声合成や音声認識 の機能などを構築することがて、きるの て、すある日、 NeXT が口頭の命令を 理解するようになるかもしれません。 高音質のサウンド処理カミさまざまな アプリケーションを可能にしました。 NeXT のサウンド機能は、さまざまな 可能性を持っていますひとつの例と して、テキストとグラフィックスだけて、 なく、サウンドや音声を組み合わせた 電子メーノ % あるいは、ビジュアルによる フィードバックと同時にサウンドによる 刀ー鬱ヾックを行う科学的なシミュレー ションモデン % さらに、 NeXT はヘッドホ ン用ジャックとステレオ RCA ジャックを 装備しているのて別のオーテンオシス テムと簡単に接続することがて、きます TM Cd11 ①第 キヤノン株式会ネ土〒 21 1 神奈川県川崎市幸区鹿島田 890-12 新川崎三井ヒル TEL. ( 044 ) 549-5295 キヤノンソフトウェア株式会社〒 108 東京都港区三田 3-9-7 TEL. ( 03 ) 455-9920

8. 月刊 C MAGAZINE 1990年8月号

関数プロトタイプ 引 mo 第 2 回 きたあきら ANS 槻格の制定により , それまでの「古い C 」と文法がもっとも大きく変わった点は , プ ロトタイプの導入と , 関数定義のバラメータ型リスト ( pa 「 amete 「 type ⅱ st ) の導入で ある。今回はプロトタイプを中心に「新しい C 」と「古い C 」との違いを解説しよう。 関数定義のスタイル 古い C て、は関数定義は , たとえば次のよう な形式て、行われた。このような定義は現在 て、は「トラディショナルスタイル」などと呼 return a * a 十 b * b : int foo(int a, int b) することがて、きる。 ANSI C て、は , 同じ関数を次のように記述 return a * a 十 b * b ; int a, b ; int foo(), b) ばれることがある。 122 CMAGAZINE 19 8 略した次のプロトタイプ宣言て、も同様て、あ 名は必須て、はない。したがって , それを省 なお , プロトタイプ宣言においての引数 extern int foo(int a, int b) ; ことがて、きる。 に代えて次の形式のプロトタイプ宣言を使 extern int f00 ( ) ; 使う場合には , 従来の外部関数宣言 ある。この関数を ( たとえば別なファイルて、 ) これが , 「モダンスタイル」の関数定義て、 る ( また , 関数宣言て、は exte 「 n はデフォルト なのて、省略してもかまわない ) 。 extern int foo(int, int) ; プロトタイプやパラメータ型リストは , たんにスタイル上の変化というだけてはな く , C コンパイラに有用な情報を与え , 積極 的にエラーを検出し , 引数の適切な自動変 換を可能とし , さらに最適化を推し進めよ うという意図から導入されたものてある。 まだこの記法になれない人もいるかもし れない。幸いにも , ANSI C ては可能なかぎ り従来の C とのコンパチビリティを保つよう に設計されている。関数のパラメータ型リ ストとプロトタイプは , そのなかてコンパ チビリティの確保がきれいに成功している 部類に入るだろう。従来の記法のソースを コンパイラは問題なく受け入れ , おそらく は正しいコードを生成してくれる。 しかし , 今後新しくプログラムを書く場 合にはてきるかぎり新しい記法 ( モダンスタ イル ) を使ったほうがよいだろう。少なくと もプロトタイプは用いたほうがいい ( 注 1 ) 。 なぜならば仮に ANSI 準拠の新しいコンパイ ラを使っていたとしても , トラディショナ ルスタイルの関数定義を使用し , かっプロ トタイプも利用しないならば , 関数呼び出 しに関しては古い C の規約に準じたルールが 適用されるからてある。後述する理由によ り , それては ANSI C を使うメリットが半減 してしまう。 てはなぜこれらの変化が必要てあったの か , またこれらの新しい記法の導入により 何が可能となったか , そして何が問題とな り得るのかを考察しよう。 関数プロトタイプ宣言 古い C の関数て、は , それが関数て、あるとい うことと , 返り値の型が何て、あるかという ことだけが宣言可能てあった。これは最初 の C の設計思想からいって当然の選択てあ る。関数はデフォルトて外部リンケージを もっている。すなわち , リンカに対してグ ローバルシンポルとして関数名を指定する ことになる。ところが , リンカては引数の 情報はいっさい考慮されない。そもそもリ ンカにはそのような引数の個数や型をチェ ックするといった機能はなかったのて、ある ( 今ても , 普通はそんな機能はない ) 。リン 力が提供していないものをあえて言語が実 現する必要はないというのが , おそらく C 言 語設計者の判断だったのだろう。 だが , 引数の情報がいっさいないという 事実は , いささかまずい問題を引き起こす 可能性をはらんている。実引数と仮引数 ( 注 2 ) の型の整合がとれなくなる危険性が完全

9. 月刊 C MAGAZINE 1990年8月号

問題解決のトリック を超えた場合にはうまくいかなくてもよい ログラムがインプリメンテーションの制限 正しく翻訳し実行て、きなければならない ( プ ョンは厳格に準拠したプログラムすべてを 利用て、きる ) 。準拠したインプリメンテーシ 環境は OS を使用し , すべてのライプラリが ンプリメンテーション依存て、ある。ホスト 関数名や利用て、きるライプラリがすべてイ 使用しない環境て、 , C プログラム実行開始の ている。フリースタンディング環境は OS を スタンディングとホストのふたつに分類し ANSI C て、はプログラムの実行環境をフリー かまわない。これは別問題だ ) 。 ( 訳注 : タンディング環境用て、もホスト環境用て、も だ ( このインプリメンテーションはフリース インプリメンテーション」を定義すること 次のステップは「適合した (conforming) 同じ意味になる。 C コンパイラてもコンパイルし , 実行可能 ) と ってこのプログラムはそのままて、どの ANSI 実質的には「ポータブル」 ( 訳注 : したが とする。いい換えれば「厳格な準拠」とは の動作に依存するような出力をしないこと 未定義またはインプリメンテーション依存 する。さらにこのプログラミングは未指示 , 拡張を使っていないプログラミングと定義 (strictly conforming) したプログラム」を トリックに落着した。まずは「厳格に準拠 スマートて、小さな 3 つのステップを使った るのだろう。 る。どうしたら満足のいくバランスが取れ もしいくらて、も拡張を許したら歯なしにな あったらそんなものは無視されるだろう。 ってしまう ) 。もし拡張を許可しない標準が しないと彼らのコードが本当にエラーとな 使っているし , だれも捨てたがらない ( そう 拡張を中心にした問題だ。拡張はだれて、も リメンテーションの特長づけて、あり , これは 私が挙げたもうひとつの大問題はインプ これも別問題だ ) 。 最後のステップはなかなか賢い。「準拠し たプログラム」を適合したインプリメンテ ーションが受け付けるプログラムと定義す る。このプログラムは必ずしもポータブル て、ある必要はない。あらゆる種類の拡張が 利用可能だ。たんに翻訳と実行が可能て、あ ればよい 一見ゴムの歯に思えるかもしれない。 C コ ンパイラカ℃ OBOL や BASIC を拡張として受 け入れないようにするにはどうするのか ? インプリメンタの拡張はふたつの方法て、制 約を受ける。 ひとつ目は適合したインプリメンテーシ ョンの定義から受ける。「厳格に準拠したプ ログラムの意味を変更するような C の拡張は いかなる方法て、も許されない。厳格に準拠 した」プログラムは未定義動作を行えない のて、未定義の動作が意味づけ可能になる ( 訳 注 : したがって拡張が利用可能になる。し かしその拡張は , 決っしてプログラムの意 味を変更することはて、きない ) 。たとえば , if や p 「 intf を再定義することはて、きない 2 番目の制約は文法的に誤った動作からく る。 C 標準て、はシンタックスルールや , とく に指定した制約に対する違反を誤った動作 としてリストアップしてある。インプリメ ンテーションはこのような違反を検出する 義務がある。この義務によってインプリメ ンタが C を拡張して洗濯物リストやほかのプ ログラミング言語を構文解析させるのが困 難になる。 このバランス効果によって拡張の余地が 残り , 同時に拡張の形式と範囲が限定され る。ポータビリティを意図したプログラム は「準拠した」インプリメンテーションて、 は必ずコンパイルて、きる。 この点は安心してよい。明白なまちがい も検出してくれる。この点も安心してよい そしてどんな拡張を行ったらつまずくかも わかる。 こまて、はよろしい C 、目指すファイティングチャンス 以上カⅨ 3J11 が最初から貫いた哲学の最終 部分だ。私たちは C を使えば驚くほどパワフ ルて、ポータブルな移植性のあるプログラム が書けることを知っている。このようなプ ログラムの潜在的パワーを増強したかった のだ。 C を使ってわざとポータブルて、ないプ ログラムが書けるのもわかっているが , 私た ちはこれを保証こそすれ , 罰則は課さない 私たちのゴールはプログラマにポータブル なプログラムを書くファイティングチャン ス ( 訳注 : よりポータブルなプログラムを 書くと多くの環境て、同一のプログラムが利 用可能になる。これによりそのプログラム が差別化て、き , ビジネス上も有利になる ) を 与えることて、あり、ポータブルて、ないもの を非合法化することが目的て、はない ろんランタイムシステムに過酷な要求をす ることて、もない。たんなるファイティング チャンスが目的て、あったのだ。 C てのファイティングチャンスは , ほかの ほとんどの言語よりも多いだろう。それが ほとんどの C プログラマが要求することのす べてだ。そのような要求を満たせたと思っ ている。 Programming on purpose 21 出版 HaIl , 1978. 「プログラミング言語 C 」共立 Prentice ewood Cliff s,N . J . C Programming Language . Engl 2 Kernighan, B . , and D. Ritchie. The F . R, G. : Springer VerIag, 1974. User Manual and Report 』 Heidelberg , 1 Jensen , K . , and N . Wirth . 「 PASCAL 参考文献

10. 月刊 C MAGAZINE 1990年8月号

P 0 ℃ 統合環境 ・日本語 P 日 0 ー C は、 C のソースコー ドを自動生成し、アプリケーション プログラムの生産性向上を図る画期 的な開発支援ツールです。 ・メニュー対話方式で簡単に操作で き、 C 言語を意識することは全くあ りません。 The C Source Code ・マンマシンインタフェース部分を自 由にしかも簡単に作成可能で魂 ・作成したプログラムの仕様書を自動 印刷しま魂 アプリケーション開発支援ツール レコード定義モジュール C 言語のプログラムを自動生成するので、 レコードのレイアウトを決定しま魂 ISAM ファイルマネージャー Bt 「 ieve をサホートし プログラミングの生産性を高め、同時にプログラムの標準化を推進しま魂 たアプリケーションを作成可能で魂 SUPER ー VERSION Applications Generator. プロクラ ムの作成 スクリーンモジュール レポートモジュール ポップアップ画面の設定等、相互 タックシール印刷等、自由なフォ 参照されたファイルを画面上の任 ーマットの帳票が作成できます。 意の場所に設定可能です。 ( ボップ アップ画面では最大 23 レコードま で表示 ) 導入効果 ・ C 言語が分からなくても操作可能です。 即戦力教育用 ・ C 言語のソースプログラムを出力します。 テパッグ不要プログラムの標準化 ・画面のレイアウト等が容易に設定できます。 イメージどおりの実行結果メンテナンス時間削減 開発効率か大幅アツア 対応機種 対象コンバイラ MS-C V5.1 日本語 P 日 0- O Lattice C/DOS Ⅵ」 PC -98 SUPER VERSION TURBO C2.0 MS-C V5 」 本語 P 日 0-0 FM 日、 J 田 00 、 AX 、その他 Lattice O VJ4.0 TURBO C2.0 日本語 P 日 0- C Sun 版新登場 Sun8 Sun4 ( 日本語対応機種 ) ・対象機種 Sun OS 4. O. 3 以上 ・ OS JLE 1 . O. 3 以上 ・日本語表示 ・ウインドウシステム Sun View ・プリンタ Sun 純正プリンタ ※カセットテープへの媒体変換は有償で行います。 標準価格 480 , 000 円 ・記載の名称は一般に商標です。・製品の仕様は予告なく変更する場合があります。・表示の価格に消費税は含まれていません。 〒 150 東京都渋谷区渋谷 3-27-11 祐真ビル PC ソフトウェア販売部 お問い合わせは容 03-407-7481 Computer ど g ′ g CO 4 ″ g アップテートモジュール メニューモジュール マルチファイル・アップテートプ サプメニュー等の設定も可能なメ ログラムを作成します。月次処理 ニュープログラムを作成します。 等のプログラムに便利です。 最適化・注釈文付の C 言語のソースプログラムを生成しま魂 日本語 P 日 0- C で生成されたソースコードの中には、日本語 P 日 0- C 独自の関数群か含まれていま魂それらの関数群 ( ワーク・べン チ ) は、すべてソースコードで提供しま魂 標準価格 21 圧 0 円 ☆アドオンソフト 日本語 P 日 0- C スクリーン・プロセッサー 標準価格 SUPER V 田 SION 用 30.000 円 V2.2J PC 、 FM 日、 J31 圓用 30 , 000 円 ・日本語 PRO ー C で生成されたプログラム の再販に際しての RUN 引 ME フィーは一 切必要ありません。 必要ソフト 機器構成 ノ、一ドディスク必須 メモリ OKB 以上 FD ユニット 2 台 ハードティスク対応 メモリ 384K 日以上 MS-DOS V3 」以上 19 日 .000 円 サン引 ! cp C98 負料求券を ) 、カ製 氏名務先、名し 話番号 う下さし、。