コマンドライン引数の解析 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 |
コマンドライン引数の解析
コマンドライン引数の解析を行います.
加えて, ヘルプメッセージの表示に関して便利なサブルーチンも 用意しています.
| 手続名 | 説明 |
|---|---|
| DCArgsOpen | 構造型 ARGS 変数の初期化 |
| DCArgsClose | 構造型 ARGS 変数の終了処理 |
| DCArgsGet | コマンドライン引数の取得 |
| DCArgsNumber | コマンドライン引数の数を返す |
| DCArgsOption | コマンドライン引数オプションを取得するための設定 |
| DCArgsDebug | デバッグオプションの自動設定 |
| DCArgsHelp | ヘルプオプションの自動設定 |
| DCArgsHelpMsg | ヘルプメッセージの設定 |
| DCArgsStrict | 無効なオプションが指定された時に警告を表示するよう設定 |
| DCArgsPutLine | 構造型 ARGS 変数の内容を印字 |
構造型 ARGS の変数を定義し, Open, Get を利用することで コマンドライン引数を取得することができます.
引数にオプションを指定したい場合には, DCArgsOption サブルーチンを 利用してください. オプションの書式に関しては DCArgsOption の 「オプションの書式」を参照してください.
コマンドライン引数に '-h', '-H', '–help' のいづれかのオプションを 指定することで, オプションの一覧が標準出力に表示されます.
ヘルプメッセージの内容を充実させたい場合には DCArgsHelpMsg を 参照してください.
バージョン 20071009 以前に利用可能だった以下の手続きは, 後方互換のため, しばらくは利用可能です.
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" オプションをつける ことでデバッグメッセージを表示するモードに変更することもできる.