Ded - 言語DlによるDファイルエディタ

[ 英語 | 日本語 ]

[Dホームページへ]

形式

Ded [ options ] Dl-program [ input-file.. ] Ded [ options ] [ -f Dl-program-file ].. [ input-file.. ]

説明

DedDlの処理系である。 入力ファイルからDレコードを読み込んで,与えられたDl プログラムを実行する。 実行後,(多くの場合)修正されたカレントレコードを 標準出力に書き出す。ただし,カレントレコードが空値になって いた場合は書き出さない。

入力ファイルの全レコードを処理した後, Ded は,与えられたDlプログラムを,入力レコードなしで実行する。 これをエピローグモードと呼ぶ。このモードでは,実行後の自動書き出しもない。 エピローグモードは,通常積算結果の出力のような終了処理に使う。 また,NULLファイルを入力して新しいDファイルを生成するのにも使える。 エピローグモード中でレコードの書き出しをするには OUTPUT特別変数を用いる。 またDlプログラム中でEPILOGUE特殊変数を評価することにより エピローグモードかどうかテストすることができる。

オプション

-f Dl-program-file
Dl-programをコマンド引数からでなく, Dl-program-fileから読み込む。 このオプションは繰り返し可で, その場合,全ファイルを連結してプログラムを読み込む。
-F
"filename" フィールドを出力レコードに付加する。
-D [i/o]datautf=8|16|32
UTF入出力機能参照。

環境変数

Ddatautf, Didatautf, Dodatautf
UTF入出力機能参照。

使用例

"foo"フィールドの繰り返し数をフィールド"foocount" というフィールド名で付加する。

Ded foocount = COUNT foo

"count"フィールドが非負整数でないとき,このフィールドを削除する。

Ded IF count UNLIKE "^[0-9]+$" THEN count = { } FI

"seq"フィールドが1から10までの10レコードを持ったDファイルを出力する。

Ded FOR i IN 1 .. 10 DO seq = VAR i ; OUTPUT DONE < NUL

このプログラムは,NULファイル(UNIXでは/dev/null) を入力としているため,エピローグモードだけで実行する。

次のようなDファイルを読み:

title:Introduction to D
price:2400

title:D tutorial
price:2800

........

全レコードの後ろにトータルを計算して"price.sum"フィールド にいれたサマリーレコードを出力する。

Ded -f prog.dl input-file

prog.dlファイルの内容:

IF EPILOGUE THEN FIELD price.sum = STATIC sum ; OUTPUT FI ;
IF NR == 1 THEN STATIC sum = 0 FI ;
STATIC sum = STATIC sum + FIELD price

なお,Dmeans はもっと簡単に同様のことを行う。

既定フィールド名

filename:
-Fオプションが指定されたとき,各レコードの先頭。

メッセージ

マニュアル D_msg参照。

参照

DlDselectDintro

AUTHOR

MIYAZAWA Akira


miyazawa@nii.ac.jp
2003-2007