GKSによる2次元グラフィックス

例文についての注意: include文

この教材では、ひとつのプログラムが複数のファイルからなる場合に、 プログラム言語の include 機能を使っている。 プログラムをコンパイルする際には、Includeされているファイルも 自分のところに用意しておく必要がある。 また、include文のファイル名のところにパス指定(ディレクトリ名) がついているときは、自分がそれを置いた場所に応じて修正してから コンパイルすること。

Fortran
77標準ではないが、g77や、90標準では、 次のようなINCLUDE文がある。(文なので、7桁め以降から書き始める。)
       INCLUDE 'ファイル名'
ファイル名には、Cシェルの場合と違って、「~」による指定は使えない。
C
Cでのinclude文の文法は
#include "ファイル名"
ただし、コンパイラあるいは共用ライブラリ(この教材では NCAR Graphics)とともに 用意されているヘッダファイルを取りこむ場合は
#include <ファイル名>
である。後者の形のものについては、ファイルを自分のところに用意する 必要はない。

Include機能のおもな趣旨は、別の項目で述べるように、 変数や手続きの宣言などを書いたプログラムの断片(ヘッダファイル)を プログラム単位間で共通にすることである。

わたしの例文では、

Fortran
datapath.fi
C
datapath.h
は、例文で読むデータファイルを置く場所のディレクトリ名を文字定数 として宣言したものである。例文をほかの計算機に持っていって実行する 場合に、ここだけ変えればすむようにしたのである。

Unix上では複数のプログラム単位(Fortranのサブルーチン、Cの関数) は別々にコンパイルして(コンパイラのコマンドに -c をつける)、 あとでリンク(結合)して実行可能プログラムにするのがふつうである。 そのために、makeコマンドを使う(makeコマンドへの指示を書くファイル にはMakefileという名前をつけるのがふつうである)。 しかし、わたしの例文では、便宜上、includeで取り込んでいっしょに コンパイルすることにした。 includeされる対象の、{.f, .c}で終わるファイル名はこの種のものである。


include機能の趣旨

プログラムを複数の手続きに分けて開発すると、同じ変数の宣言などが それぞれの手続きごとに出てくることがある。多くの場合、同じ名前の変数は 同じ型や値で使いたいのだが、別々に書いておくと、プログラムの修正の 過程で食い違ってしまうおそれがある。そこで、そういった宣言はプログラム 本体とは別に書いておき、コンパイル時に取りこんだほうがよいという考え方 が出てきた。特にC言語では、このような取り込みをしないとプログラムが 書けないことが多い。取り込まれるのを目的に用意されたプログラムの断片を ヘッダファイル(header file)という。他の言語ではこのような取り込み機能 が言語の標準として備わっているとは限らないが、それぞれのコンパイラが そういう機能を提供しているのがふつうである。

しかし、このような取り込み機能では、ヘッダファイルは取り込まれて はじめてプログラム言語の文法に合っているかどうかを検査されるので、 ヘッダファイルとプログラム本体の開発が独立にできない。 「モジュール化」の考えの進んだプログラム言語では、ソースプログラム での取り込みではなく、共通の変数などは別にモジュールとしてコンパイル しておき、プログラム本体からそのモジュールを参照する方式がよいとされる。 たとえば、Fortranの90年標準では、取り込み機能のINCLUDE文があるものの、 あまり勧められないとされ、モジュール機能が勧められている。


1996-12-04; 2000-04-23; 2005-08-10
増田 耕一
[目次へ]