Command line arguments parser. More...
Data Types | |
| type | args |
| interface | dcargsopen |
| interface | dcargsclose |
| interface | dcargsoption |
| interface | dcargsputline |
| interface | dcargsdebug |
| interface | dcargshelp |
| interface | dcargshelpmsg |
| interface | dcargsstrict |
| interface | dcargsget |
| interface | dcargsnumber |
| interface | open |
| interface | close |
| interface | option |
| interface | putline |
| interface | debug |
| interface | help |
| interface | helpmsg |
| interface | strict |
| interface | get |
| interface | number |
Command line arguments parser.
This module parses command line arguments.
In addition, convenient subroutines for displaying help messages are provided.
| Procedure | Description |
|---|---|
| DCArgsOpen | Initialize ARGS derived type variable |
| DCArgsClose | Finalize ARGS derived type variable |
| DCArgsGet | Get command line arguments |
| DCArgsNumber | Return number of command line arguments |
| DCArgsOption | Configure for getting command line option |
| DCArgsDebug | Auto-configure debug option |
| DCArgsHelp | Auto-configure help option |
| DCArgsHelpMsg | Configure help message |
| DCArgsStrict | Configure to show warning when invalid option is given |
| DCArgsPutLine | Print contents of ARGS derived type variable |
Fortran コンパイラのほとんどには IARGC, GETARG といった コマンドライン引数取得のための副プログラムが用意されている. これらの副プログラムの利用によって, コマンドラインの引数を 単に取得することは簡単である.
しかしこの IARGC, GETARG の使用に際し, 2 つほど面倒な点がある.
1 つはコンパイラ依存による IARGC, GETARG の仕様の違いである. これらの副プログラムは Fortran 規格に含まれないサービスルーチン であるため, たいていのコンパイラにはこの副プログラムは 存在するものの, 仕様が微妙に異なる場合がある. (大抵のコンパイラは GETARG の第一引数を 1 にすると一つ目の引数を取得するが, 古い HITACHI のコンパイラは第一引数を 2 にしないと一つ目の 引数を取得できない, など). そこで gtool5 ライブラリでは これらのコンパイラ依存性を吸収する設計を行っている. dc_args モジュールを使用する際には, これらのコンパイラ依存は 気にしなくてよい. (なお, コンパイラ依存性を実際に 吸収しているのは sysdep モジュールである).
2 つ目は, コマンドライン引数におけるオプション引数 (-h や –version など) の取り扱いの不便さである. IARGC や GETARG は単に引数を取得するための副プログラムであり, Perl や Ruby などのインタプリタ言語のように, コマンドライン引数にオプション引数を処理するための ライブラリ (Getopt や OptionParser など) が用意されていない. dc_args モジュールは, Fortran プログラムでもオプション引数を 手軽に扱えるよう, オプション引数処理の ためのコーディングをできるだけ簡素にするべく整備したプログラムである.
設計思想は, Ruby の OptionParser を真似ており, OptionParser クラスのオブジェクトを構造型 ARGS に, new (initialize) メソッドを DCArgsOpen サブルーチンに, on メソッドを DCArgsOption サブルーチンに, parse メソッドを DCArgsGet サブルーチンに見立てている. 言語仕様の違いにより実装や仕様は それなりに異なるが, 構造型 ARGS の変数をオブジェクトに見立て, この変数に対してサブルーチンを作用させることによって オブジェクトへの操作やオブジェクトからの引数情報の取得を行うという点では OptionParser と同様である.
おまけ的機能であるが, dc_trace モジュールとの連携も図られており, Debug サブルーチンを使用することにより (使用法は上記参照), 再コン パイルすることなく, プログラムの実行の際に "-D" オプションをつける ことでデバッグメッセージを表示するモードに変更することもできる.