2.1. 運用方法

ANGEL は、Windows系、各種UNIX系マシンで利用可能です。 どのマシンでも同じ結果を得ることができます。 パッケージの中に、代表的なマシンとOS毎に実行形式の ファイルが梱包されていますので、 まず動かしてみてください。 それらが利用できれば問題ありませんが、そうでない場合は、 以下にコンパイルの仕方も説明します。 まず、ANGEL 起動から説明します。

2.1.1. 本体起動

実行形式の ANGEL の本体は、梱包されているもので、 angel400.exe, angel400.alp, angel400.hp, angel400.g77, angel400.pgf など、angelの後にバージョン番号とマシン識別子が ついています。 例えば、識別子がexeのものはWindows系の ものです。 ANGEL を利用するには、最低限この実行ファイルだけで運用できます。 次に述べる ANGEL 本体を動かすシェルスクリプトや、バッチファイルを 使わなくても、ちょっと不便ですが利用できます。

まず本体の起動パラメーターを説明します。 本体を起動すると、

List 1.3 ● ANGEL 起動場面

1:  > angel400
2:  >
3:  > ANGEL     (R) Graphic Program Version  4.00
4:  > Copyright (C) Koji NIITA  1993-2002. All rights reserved.
5:  >
のように商標とコピーライトが標準出力に 書かれ、その後、起動パラメーターの入力待ちの 状態になります。 ここで、入力ファイル名、処理するページの指定、 出力ファイル名などを入力します。 これらは、空白で区切って一行入力です。 入力後、Enter を押すと ANGEL の処理が行われます。 入力の書式は、

input_filename  [ -f \(n_1\) ]   [ -t \(n_2\) ]   [ -o output_filename ]   [ -a ]   [ -v12 ]   [ -exp ]


ここで、[   ] の付いているものは省略可能です。最低インプットの ファイル名が必要です。 これらのパラメーターは、空白 で区切られている限り順番は 自由です。 各パラメーターは次のような働きをします。

表 2.1 起動パラメーター

パラメーター

 説明

input_filename

ANGEL で処理する入力ファイル名。必須です。

-f \(n_1\)

処理する最初のページ \(n_1\)
これを省略すると1ページから処理します。

-t \(n_2\)

処理する最後のページ \(n_2\)
これを省略すると最後のページまで処理します。

-o output_filename

出力するEPSファイル名。これを省略すると、入力ファイル名の 拡張子を eps に変えたファイルに出力します。

-a

A4 横置きか縦置きかの情報をGhostviewの立ち上げに反映するための 起動シェルを書き出します。 起動シェルのファイル名は、angelbat です。 デフォルトは書き出しません。 UNIXユーザーのためのものです。

-v12

ANGEL バージョン2以前のインプットをバージョン3のインプットに 変換します。ギリシャ文字などの特殊文字の記述の仕様が

大幅に変わったので、それらを変換します。 変換したインプットは、入力ファイル名の拡張子を an2 に 変えたファイルに出力します。変換後、通常の ANGEL の処理も 行います。

-exp

入力ファイルにインクルードファイルのある場合、 それを展開した新たな入力ファイルを作成し、ANGEL の処理を 行います。展開した結果は、入力ファイル名の拡張子を new に変えたファイルに出力します。

2.1.2. 本体起動シェル

本体を直接起動しても運用できますが、本体を起動するシェルや バッチファイルを利用すれば、より便利な使い方ができます。 以下に、Windows系バッチファイルとUNIX系の起動シェルの 例題を示します。これらは、ANGEL のパッケージの中に含まれています。

List 1.4 ● Windows系バッチファイル

 1:  @echo off
 2:  if "%1"=="" goto man
 3:  goto start
 4:  :man
 5:  echo ANGEL     (R) Graphic Program Version 4.00
 6:  echo Copyright (C) Koji NIITA  1993-2002. All rights reserved.
 7:  echo usage:
 8:  echo   angel4 INPUT [-a] [-f N1] [-t N2] [-o OUTPUT] [-v12] [-exp]
 9:  echo   -----------------------------------------------------------
10:  echo              INPUT  : input file name
11:  echo              N1     : first page
12:  echo              N2     : terminate page
13:  echo              OUTPUT : output file name
14:  goto end
15:  :start
16:  if exist error.ang del error.ang
17:  echo %1 %2 %3 %4 %5 %6 %7 %8 %9 > input.ang
18:  c:\angel\angel400.exe < input.ang
19:  del input.ang
20:  :end

パラメータがない場合は、商標とコピーライト、簡単な使い方を 示して終わります。 16行で消している error.ang は、ANGEL のエラー出力ファイルです。 古いものが残っているときに消します。 17行で最大9個のパラメーターを input.ang に書き込んでいます。 次の行でこのファイルを ANGEL にリダイレクトして起動しています。 ANGEL 本体が、c:\angel にあるとして書いていますが、 PATH を切っていれば実行ファイル名だけで十分です。 処理後 input.ang を消します。

UNIX系の起動シェルもほぼ同様ですが、-a パラメーターに 関してUNIX独特のものもあります。

List 1.5 ● UNIX系シェルファイル

 1:  #!/bin/sh
 2:  if [ "$1" = "" ]
 3:  then
 4:  echo 'ANGEL     (R) Graphic Program Version 4.00'
 5:  echo 'Copyright (C) Koji NIITA  1993-2002 All rights reserved.'
 6:  echo 'usage:'
 7:  echo '  angel4 INPUT [-a] [-f N1] [-t N2] [-o OUTPUT] [-v12] [-exp]'
 8:  echo '  -----------------------------------------------------------'
 9:  echo '             INPUT  : input file name'
10:  echo '             N1     : first page'
11:  echo '             N2     : terminate page'
12:  echo '             OUTPUT : output file name'
13:  exit
14:  fi
15:  if [ -r error.ang ]
16:  then
17:     rm error.ang
18:  fi
19:  if [ -r angelbat ]
20:  then
21:     rm angelbat
22:  fi
23:  echo $1 $2 $3 $4 $5 $6 $7 $8 $9 > input.ang
24:     angel400 < input.ang
25:     rm input.ang
26:  if [ -r error.ang ]
27:  then
28:     if [ -r angelbat ]
29:     then
30:        rm angelbat
31:     fi
32:     exit
33:  else
34:     if [ -r angelbat ]
35:     then
36:        . angelbat
37:     fi
38:  fi

25行目までの ANGEL の処理とinput.ang の消去までは ほぼ同じですが、その後で、エラーがない場合は、 angelbat を起動するようになっています。 このシェルの中でGhostviewなどを起動するように ユーザーが設定できます。

2.1.3. Ghostview起動シェル

起動パラメーターで -a を指定した時には、angelbat という ファイルが作られます。 ANGEL では、A4用紙を横置きに使うLandscapeと縦置きに使う Portraitを選択できます。その選択に合わせてビューアーを 起動する時に使います。 angelbat の中身は、

List 1.6 ● angelbat for Landscape

1:  angel-gs output_filename >/dev/null &
2:  rm angelbat

List 1.7 ● angelbat for Portrait

1:  angel-gp output_filename >/dev/null &
2:  rm angelbat

これらは、Landscapeの時にはangel-gs、Portraitの時には angel-gpというシェルに出力ファイル名を渡して 起動し、自分自身を消去するというものです。 ユーザーは、angel-gs, angel-gp というシェルを 用意してGhostviewなどのビューアーを起動することになります。 これらの例題を以下に示します。

List 1.8 ● angel-gs

1:  #!/bin/sh
2:  if [ "$1" = "" ]
3:  then
4:     exit
5:  fi
6:  ghostview -fg black -bg white -a4 -magstep 1 -landscape $1 -display myscreen &

List 1.9 ● angel-gp

1:  #!/bin/sh
2:  if [ "$1" = "" ]
3:  then
4:     exit
5:  fi
6:  ghostview -fg black -bg white -a4 -magstep 1 $1 -display myscreen &

ふたつの違いは、angel-gs-landscape があるだけです。 これにより出力を即座に正しい方向から見ることができます。 大きさ-magstep、色などのパラメーターは各自の好みで決めてください。 -display のパラメーターmyscreen は、画像を 出したい画面のIPを入れると便利です。

2.1.4. エラー出力

ANGEL の処理中にエラーが生じた場合は、error.ang というファイルに、 エラーの原因、起こったファイル名と行番号が示されます。 タグジャンプ形式にしてありますのでご利用ください。 エラーファイルの名前は変えられませんので注意してください。

2.1.5. ソースファイル

パッケージの中にある実行形式のファイルでは動かない場合、 また、入力パラメーターでは動かせないデフォルト値を 変えたい場合など、コンパイルが必要になることがあります。 そのような時は、パッケージの中の source ディレクトリーから ソースファイルとmakefileをコピーしてコンパイルしてください。

ソースは、Fortran77 で書かれています。特殊なことや、 機種依存することは殆ど使っていないので、どんなFortranのコンパイラでも メイクできると思います。ただし、日付と時間を取る関数が含まれますので、 うまく動かない時は、mdp-uni.fmdp-win.f に変えるか、 これらのプログラムの中身を変更して下さい。 ソースファイルとインクルードファイルは、
a-alone.f  a-main0.f  a-main1.f  a-hsect.f  a-line.f  a-func.f   a-utl00.f
a-wtext.f  mdp-uni.f

の9つのファイルからなります。

改造、改変は自由です。ただし、それらのものを別名で配布することは 禁止します。また、無断でソースの一部を転用することを禁止いたします。

2.1.6. インクルードファイル

上のソースファイルには、angel00.inc, angel01.inc の 2つのインクルードファイルが必要です。

まず、angel00.inc では、コード全体のメモリー量を定義する mdas を記述しています。デフォルト値は5000000で、 40Mb取っています。大きな2次元表示や点数の非常に大きな グラフの時に足りなくなり、メッセージをだして止まりますので、 この値を大きくして下さい。また、デフォルト値では、メモリーが大きすぎて 動かないマシンの時はこの値を小さくしてコンパイルして下さい。

List 1.10 ● angel00.inc

 1:  ************************************************************************
 2:  *                                                                      *
 3:  *     angel00.inc                                                      *
 4:  *                                                                      *
 5:  ************************************************************************
 6:
 7:  *-----------------------------------------------------------------------
 8:
 9:        parameter ( mdas = 5000000 )
10:
11:        common /mdasa/ das( mdas )
12:        common /mdasb/ mmmax
13:
14:  *-----------------------------------------------------------------------

次に、angel01.inc では、入力の数値データの最大コラム数、 読み込みの最大コラム数、コメントや矢印の最大数などが定義されます。 特殊な入力ファイルの時などに、これらの値を変更してコンパイルして下さい。

List 1.11 ● angel01.inc

 1:  ************************************************************************
 2:  *                                                                      *
 3:  *     angel01.inc                                                      *
 4:  *                                                                      *
 5:  ************************************************************************
 6:
 7:  *-----------------------------------------------------------------------
 8:
 9:        parameter ( mh = 30 )
10:  *                 max column terms in one h: section
11:
12:        parameter ( mfc = 100 )
13:  *                 mfc : max number of constant
14:  *                       and max terms of equation
15:
16:  *-----------------------------------------------------------------------
17:
18:        parameter ( icolm = 200 )
19:  *                 icolm : max column number, should be less than ichrl
20:
21:        parameter ( ichrl = 2048 )
22:  *                 ichrl : length of character for dimension
23:  *                         and max column number for ps file
24:
25:  *-----------------------------------------------------------------------
26:
27:        parameter ( inig = 500 )
28:  *                 inig : length of character for dimension
29:
30:        parameter ( mc = 500 )
31:  *                 mc : max number of line comments (total)
32:  *                      max number of arrows
33:  *                      max number of multi records
34:
35:        parameter ( numtic = 1000 )
36:  *                 numtic : max number of tic number
37:
38:        parameter ( ipsm = 100 )
39:  *                   max number of include ps file in one graph
40:
41:        parameter ( nr = 50 )
42:        parameter ( nc = 50 )
43:
44:  *     nr: maximum number of row in one table
45:  *     nc: maximum number of column in one table
46:
47:  *-----------------------------------------------------------------------
48:
49:        parameter ( r0max = 1.0d+40,  r1max = 1.0d+41 )
50:  *                   max real number
51:
52:        parameter ( r9max = 1.0d+39 )
53:        parameter ( r9min = 1.0d-39 )
54:
55:        parameter ( pi = 3.1415926535898d0 )
56:
57:  *-----------------------------------------------------------------------
58:
59:        parameter (jol=18)
60:  *                   output temporary file of lines
61:        parameter (jil=19)
62:  *                   output temporary file of region line
63:        parameter (jhc=20)
64:  *                   output temporary file of 3D color plot
65:        parameter (jhl=21)
66:  *                   output temporary file of 3D cluster plot
67:        parameter (jer=22)
68:  *                   for error message
69:        parameter (jps=23)
70:  *                   input ps file
71:        parameter (jab=24)
72:  *                   angelbat for psview only for unix
73:        parameter (jht=25)
74:  *                   final eps output for angel
75:        parameter (jhs=26)
76:  *                   temporary file of gauss smearing for contour plot
77:  *                   temporary new input file
78:  *                   temporary file for wtab
79:        parameter (jwt=71)
80:  *                   temporary file for wtab:
81:        parameter (jhm=72)
82:  *                   temporary file for w: wt:
83:        parameter (jha=73)
84:  *                   temporary file for aw:
85:        parameter (jhy=74)
86:  *                   temporary file for y-comment
87:
88:  *-----------------------------------------------------------------------

2.1.7. メイクファイル

パッケージに入っているMakefileを以下に示します。 機種依存のところのコメントを目的のものに合わせて外してください。 全てPATHが通っているとして書いてあります。 またオプションは、コンパイラに合わせて変えてください。 ANGEL としては、特別なオプションは必要ありません。 ライブラリーとしては、日時をとるためにdate( ), time( )を 使っています。これが利用できるようにしてください。

List 1.12 ● Makefile

 1:  #------------------------------------------------------------------------
 2:  #
 3:  #       @(#)Makefile  2002/08/06
 4:  #
 5:  #       Makefile for ANGEL
 6:  #
 7:  #------------------------------------------------------------------------
 8:  ##### sources #####
 9:  #------------------------------------------------------------------------
10:
11:  OBJ1 = \
12:        a-alone.o
13:
14:  OBJ2 = \
15:        a-main1.o  a-hsect.o  a-line.o  a-func.o  a-utl00.o  \
16:        a-main0.o  a-wtext.o  mdp-uni.o
17:
18:  #------------------------------------------------------------------------
19:  ##### set executable file name #####
20:  #------------------------------------------------------------------------
21:
22:  TERGET = angel400
23:
24:  #------------------------------------------------------------------------
25:  ##### set compile options #####
26:  #------------------------------------------------------------------------
27:  #Alpha
28:  # FFLAGS = -O4 -warn noalignments -warn nousage
29:  # FC = f77
30:  #------------------------------------------------------------------------
31:  #Linux pgf
32:    FFLAGS = -O4
33:    FC = pgf77
34:  #------------------------------------------------------------------------
35:  #Linux g77
36:  # FFLAGS = -O4 -fno-automatic
37:  # FC = g77
38:  #------------------------------------------------------------------------
39:  #Sun
40:  # FFLAGS = -O
41:  # FC = f90
42:  #------------------------------------------------------------------------
43:  #HP
44:  # FFLAGS = +DA1.1 +O0 +e +U77 +Onolimit
45:  # FC = f77
46:  #------------------------------------------------------------------------
47:
48:  MAKE    = Makefile
49:  CC      =  cc
50:  CFLAGS  = -O0
51:
52:  OBJS = $(OBJ1) $(OBJ2)
53:
54:  .f.o    :
55:          $(FC) $(FFLAGS) -c $*.f
56:  .c.o    :
57:          $(CC) $(CFLAGS) -c $*.c
58:
59:  all     :$(OBJS)
60:          $(FC) -o $(TERGET) $(OBJS)
61:
62:  $(OBJ1) : angel00.inc
63:  $(OBJ2) : angel01.inc
64:
65:  clean   :
66:          rm -f $(OBJS)