2 身の回りの環境での使い方

数学科計算機室 (6701号室) にある Solaris 2.6 で動いているワークステーションや、 Linux マシン、 さらには桂田研のノートパソコン (Cygwin であったり、Knoppix であったり) には、 GLSC がインストールされています。

(ソース・ファイルからのインストールの仕方を付録にでも書いておきたい…)

具体的には
1. インクルード・ファイル /usr/local/include/glsc.h
2. インクルード・ファイル /usr/local/include/glsc_ftn.h
3. ライブラリィ・アーカイブ /usr/local/lib/libglscd.a
4. ライブラリィ・アーカイブ /usr/local/lib/libglscs.a
5. 画像変換ユーティリティ /usr/local/bin/g_out
という 5 つのファイルです。

また、PostScript 形式のマニュアルが用意されています。 これは ftp://ftp.st.ryukoku.ac.jp/pub/ryukoku/software/math/から入手できます。 桂田研の学生には印刷したものを配布することにしています。

プログラムの書き方(1)
詳しくは GLSC のマニュアルを読むべきですが4、 インクルード・ファイルの読み込みと、 C や C++ の場合の浮動小数点数の宣言の問題を 解決するおまじないについて説明しておきます。
(i)
C の場合は、 “#define G_DOUBLE5、 それに続けて “#include <glsc.h>” とする。
(ii)
C++ の場合も “#define G_DOUBLE”、それに続けて
  extern "C" {
  #include <glsc.h>
  };

とする (まあ、C++ で C のファイルをインクルードするときの定跡ですが)。
(iii)
UNIX 伝統の FORTRAN (f77) の場合は、
  include '/usr/local/include/glsc_ftn.h'

とする。
プログラムの書き方(2)
以下述べることはどの言語にも共通しています。
(i)
最初に “g_init("metafilename", ウィンドウの横幅, ウィンドウの高さ)” を呼び出します (サイズの単位は mm で、 引数の型は浮動小数点型です)。 メタファイルというのは、 描画した図形を記録するためのファイルのことです。
(ii)
出力デバイスを “g_device(出力先)” 呼び出しで指定します。 G_BOTH とすると、画面とメタファイルの両方に出力するようになります。
(iii)
g_def_scale()” で座標系を定義します。 座標系は複数個定義できて、 以下は番号を使って g_sel_scale(番号); として指定できます。
→ GLSC の中で、マルチ・ウィンドウもどきが簡単に実現できます。
(iv)
g_def_line()” を呼び出して、 使用する線 (色、太さ、線種) を定義します。 複数の線が定義できて、後から番号で呼び出せます。
(v)
g_cls()” で画面のクリアをします。
(vi)
既に “g_def_ほげほげ” で定義したものを “g_sel_ほげほげ” で指定します。
(vii)
色々な描画命令を並べます。
(viii)
g_sleep()” で停止します。
(ix)
g_term()” で GLSC を終了します。
コンパイルの仕方
最もフツーのコンパイルの仕方。
倍精度の場合
-I/usr/local/include” と “-L/usr/local/lib -L/usr/X11R6/lib -lglscd -lX11 -lm” を 指定するのが基本です6(Solaris 2.6 の場合は -lsocket というのも必要になります)。
(i)
gcc の場合は
gcc -o myprog -I/usr/local/include myprog.c -L/usr/local/lib -L/usr/X11R6/lib
     -lglscd -lX11 -lm     (2行に分けてますが、1行コマンドです。)
(ii)
g++ の場合は
g++ -o myprog -I/usr/local/include myprog.C -L/usr/local/lib -L/usr/X11R6/lib
    -lglscd -lX11 -lm     (2行に分けてますが、1行コマンドです。)
(iii)
FORTRAN の場合は
f77 -o myprog myprog.f -L/usr/local/lib -L/usr/X11R6/lib -lglscd -lX11
いずれも少々面倒なので、エイリアスを定義したり、 Makefile を作ったりして、手間を軽減すべきでしょう。 筆者は次のような行を .cshrc に書き加えています。
  alias ccmg 'gcc -O -o \!^:r -I/usr/local/include \!* -L/usr/local/lib
    -L/usr/X11R6/lib -lmatrix -lglscd -lX11 -lm'
単精度の場合
-lglscd” の代わりに “-lglscs” を指定するのが基本です。

桂田 祐史