17 ARGV

C や C++ を知っていると使いたくなる argc, argv[] に相当する ARGV がある。

ARGV.nargc の代わりになる。 また、ARGV[]argv[] の代わりになる。 ただし ARGV[0] は FreeFem++ プログラムを実行している プログラムの名前 (FreeFem++ であることが多い)。

mytest.edp
int i;
for (i=0; i< ARGV.n; i++)
    cout << i << " " << ARGV[i] << endl;
というプログラム mytest.edp があるとき

[katsurada-no-MacBook-Air:~/work] mk% FreeFem++ mytest.edp two 3 yon
とすると
0 FreeFem++
1 mytest.edp
2 two
3 3
4 yon
という出力を得る。

ARGV[$ n$] は string であるが、数値に変換するには、 atoi(), atof() を使えば良い。
int n;
real mu;
n = atoi(ARGV[2]);
mu = atof(ARGV[3]);

オプション -某 何とか の解析は getARGV(,) で出来る。
include "getARGV.idp";
...
int n=getARGV("-n", 10);
つまり -n 20 のような指定が出来て、変数 n に代入が出来る。 指定が無かった場合は $ 10$ がデフォールト値として 変数 n に代入される。



桂田 祐史