Ded [ options ] Dl-program [ input-file.. ]
Ded [ options ] [ -f Dl-program-file ].. [ input-file.. ]
Ded はDlの処理系である。 入力ファイルからDレコードを読み込んで,与えられたDl プログラムを実行する。 実行後,(多くの場合)修正されたカレントレコードを 標準出力に書き出す。ただし,カレントレコードが空値になって いた場合は書き出さない。
入力ファイルの全レコードを処理した後, Ded は,与えられたDlプログラムを,入力レコードなしで実行する。 これをエピローグモードと呼ぶ。このモードでは,実行後の自動書き出しもない。 エピローグモードは,通常積算結果の出力のような終了処理に使う。 また,NULLファイルを入力して新しいDファイルを生成するのにも使える。 エピローグモード中でレコードの書き出しをするには OUTPUT特別変数を用いる。 またDlプログラム中でEPILOGUE特殊変数を評価することにより エピローグモードかどうかテストすることができる。
"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 はもっと簡単に同様のことを行う。
マニュアル D_msg参照。
MIYAZAWA Akira