D_msg - Dコマンドのメッセージ
Dコマンドは寡黙なプログラムで必要のないメッセージは出力しない。
しかし、それでもエラーメッセージに加えいくつかの警告メッセージもある。
メッセージのフォーマットは次のようになっている。
コマンド: メッセージテキスト.
command
は、コマンドラインから入力したコマンド名。
メッセージテキストは以下にリスとしたものである。
これがもっともやっかいな場合である。
バグだと疑うことも多いだろう。
しかし、それを疑う前に、チェックすべき事がある。
- 1.
- 入力待ちになっていないか?
著者でさえ、次のような間違いを時々おかす。
Djoin -o xx file-1 file2
DfromLine file-1
いずれの場合も、必須引数が指定されていないため、
file-1をフィールド名と思って標準入力からの入力を待つことになる。
- 2.
- 正常に実行中ではないか?
たとえば、
Dfd、
Dfreq、
Dmeans、
や
Dsort
は、全入力レコードを読んで処理をした後でないと出力を行わない。
入力ファイルがそれなりに大きければ、処理時間もそれなりにかかる。
小さいで同じコマンドを実行して、処理時間の目安をつけることは
しばしば有効な方法である。
- 3.
- 本当にバグのとき。著者にメールを書くか、
自分で直す。(ソースも公開されている。)
- absolute position of the field field is not allowed in Dpack/Dunpack.
- (Dコマンド:
Dpack、
Dunpack)。
これらのコマンドの仕様である。フォーマット指定を間違えていないかチェックせよ。
- can't allocate necessary memory!
- (Dコマンド:
Ded、
Dpr、
Dselect、
Dtail、
Dupdate)。
プログラムの初期化またはDlの実行中に
何らかの理由でメモリの確保ができない。
通常、こういう事は起きないはずである。
したがってバグの可能性がある。
あるいは
Dprで
非常に大きなページを出力しようとすると起きる。
この場合
-x
や
-y
に小さい値を指定してやると解決する(かもしれない)。
- can't allocate storage for storage-name=size.
- (Dコマンド:
すべて)。
プログラム初期化時に、この名前の変数を割り当てようとして
割り当てられなかった。通常こうい事とは起きないはずである。
- can't create tmpfile number.
- (Dコマンド:
Dsort)。
Dsort
が、一時ファイルを割り当てようとして失敗した。
一時ファイル用ディレクトリのあるディスクが満杯の可能性が多い。
-TオプションやTMPDIR、TEMP環境変数で与えたディレクトリが
適当でなかったかもしれない。
- can't open file-name.
- (Dコマンド:
すべて)。
入力ファイル名を間違えるとでる、よく見るメッセージ。
あるいは、オプションの指定を間違えて入力ファイルにとられてしまった可能性もある。
- can't resize storage-name
- (Dコマンド:
すべて)。
このメッセージがでるのは、メモリーに読み込めないほど大きなDレコードを処理
しようとした場合、あるいは、処理に要するメモリー量が足りない場合である。
たとえば、Djoinで同一キー値のレコードが
非常に多くあった場合などにおこる。
また、(まちがえて)存在しないフィールド名を
上記のコマンドに与えた場合にもおこる。
(全レコードがNULLキー値として扱われるため)。
本当に実行したいのならば、、システムの仮想記憶を拡げるという手はあるが、
あまり有効でないことがほとんどのようである。
バグで出たのでない限り、能力を超えていると考えて
迂回する方法を見つける方が効果的と思われる。
- cfmt is not allowed with f option in the field field-name.
- (Dコマンド:
DfromLine、
Dpack、
Dtie、
Dunpack、
Duntie)。
Dフォーマットの仕様である。
- code error in the type argument.
- (Dコマンド:
すべて)。
type引数がカレントロケールのもとで正しいエンコーディングに
なっていない。これが起こるのは異なるロケールのもとで作られた
シェルスクリプトを走らせた場合であろう。
- code error in the option option.
- (Dコマンド:
すべて)。
option引数がカレントロケールのもとで正しいエンコーディングに
なっていない。これが起こるのは異なるロケールのもとで作られた
シェルスクリプトを走らせた場合であろう。
- code error in the file file-name(line).
- (Dコマンド:
Ded、
Dgrep、
DfromLine),
Dselect)。
file-nameファイルのline行目に
カレントロケールでエンコーディングの正しくない
データがある。
これは
Ded、
Dselect
のDl入力ファイル、
Dgrep
のパターン入力ファイル、
または
DfromLine
の入力ファイルで、
これらのファイルがテキストファイルでなかったり、
異なるロケールのもとで編集されたりした場合におこる。
入力Dファイルでのコードエラーの場合は、
このメッセージを出さずに無視されるので注意。
- -D name is unknown.
- (Dコマンド:
すべて)。
Dsort
コマンドでは
-D xmem=
オプションが使われるが、
この"xmem"を打ち間違えた場合であろう。
- end position and * conflicts in the format of the field field-name.
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
Dフォーマットの仕様である。
Dフォーマットの指定をどこかで間違えている可能性が大きい。
- exclusive list is not allowed for -L/S option.
- (Dコマンド:
Dunbundle、
Dtie)。
リーディングフィールドアルゴリズムやシーケンスブレークアルゴリズムでは
リーディングフィールドやフィールド順が明示されなければならないが
排他フィールドリストではこれができない。
リーフフィールドリストにすべてのフィールドを明示しなければならない。
D_lsa参照。
あるいは、フィールド名に"^"を含んでいるのなら、
"\"を使ってエスケープしなければならない。
- exclusive list is not allowed in -f/-i.
- (Dコマンド:
Dpr)。
識別用フィールドやフィールドフォーマットリストは
排他であってはならない。
オプションを間違えていないか確認する。
あるいは、フィールド名に"^"を含んでいるのなら、
"\"を使ってエスケープしなければならない。
- field field-name cfmt has more than one % at file-name(rec#).
- (Dコマンド: DfromLine、
Dunpack、
Duntie)。
Dフォーマットの仕様による。
単にフォーマットの指定を間違えただけでないかチェックせよ。
- field field-name current position exceeds end position at file-name(rec#).
- (Dコマンド: DtoLine、
Dpack、
Dtie)。
出力フォーマットにおいて、出力を行おうとしたところ、
カレントポジションが既にエンドポジションより大きかった。
出力フォーマット指定においてミスをした可能性が大きい。
- field field-name end position is smaller than the start at file-name(rec#).
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入六フォーマットにおいて、入力をしようとしたところ
カレントポジションが既にエンドポジションを越えていた。
前のフォーマット指定を間違えた可能性が高い。
- field field-name start position exceeds the end of line at file-name(rec#).
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入力フォーマットにおいて入力しようとしたとき
スタートポジションが行の終端より大きかった。
入力データが予定したものでなかったか、
カラムの計算を間違ったかした可能性が高い。
なお、文字位置はバイトでなく文字で数えられることに注意。
- field field-name start position over at file-name(rec#).
- (Dコマンド:
DtoLine、
Dpack、
Dtie)。
出力フォーマットにおいて出力しようとしたとき
スタートポジションが既に出力された行長より小さかった。
以前のフィールドでフォーマット指定を間違えた可能性が大きい。
- field field-name truncated by the end of line at file-name(rec#).
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入力フォーマットにおいて入力しようとしたとき
入力文字列が指定のエンドポジションより短かった。
入力行が考えていたものと違った、あるいは
フォーマット指定のミスをした可能性が高い。
- field-list is required for -g/p.
- (Dコマンド:
Dpr)。
これらのフィールドリストはNULLリストではいけない。
- f option of the field field-name is not allowed in Dpack/Dunpack.
- (Dコマンド:
Dpack、
Dunpack)。
これはDコマンドの仕様である。
フォーマット指定の中で間違っていないか確認せよ。
あるいは-zオプションの中でf
オプションを使っていないか確認する。
- format delimiter or pattern matches null in the field field-name.
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入力フォーマット中で
delimiter(/../)やpattern(@..@)
はNULL文字列にマッチしてはならない。
(そうでないとNULL文字列値ばかりしか読み込めない)。
たとえば/\ */(0個以上のスペース)
はNULL文字列にマッチする。このような場合、
/\ +/(1個以上のスペース)を使用すること。
フォーマットの区切り字パターンをチェックすること。
- format syntax error in the field field-name at 'char'.
- (Dコマンド:
Dunbundle、
DfromLine、
DtoLine、
Dpack、
Dunpack、
Dtie、
Duntie、
Dpr)。
D_fmtのマニュアルを勉強すること。
-t
オプションを使うことも有効である。
- insufficient storage-name
- (Dコマンド: すべて)。
現在のバージョンではこのメッセージは出ないはずである。
著者に連絡せよ。
- insufficient xmem(size) at file-name(rec#).
- (Dコマンド: Dsort)。
file-nameのrec#番目のレコードが
-D xmem=で与えられた(またはでフォールトの)
メモリサイズに入らない。
xmemの値を大きくする。
あるいは入力ファイルが考えていたものと違っていないか?
- invalid left hand of '=' for Dselect.
- (Dコマンド:
Ded、
Dselect)。
代入演算をDselectの中で使えるのは
VARまたはSTATICに対してのみである。
- key sequence error, stop at file-name(rec#)!
- (Dコマンド:
Djoin、
Dupdate)。
これらのコマンドでは、入力ファイルは与えられたキー順に
なっている必要がある。
しかし、file-nameファイルのrec#番目のレコードで
キー順が崩れていた。
- missing '}' after … .
- (Dコマンド:
Ded、
Dselect)。
与えられたDlで
'{'があるのに対応する'}'がない。
これらのトークンは空白文字で区切らなければならないことに注意。
- missing arg after 'CONST' at … .
- (Dコマンド:
Ded、
Dselect)。
与えられたDl
の最後の語が"CONST"であった。
連続行の間違いをしていないかチェック。
この語をリテラルとしてあるいはフィールド名として
使いたい場合、しかるべきキーワードの後ろに置くこと。
- missing field name after 'FIELD' at … .
- (Dコマンド:
Ded、
Dselect)。
与えられたDl
の最後の語が"FIELD"であった。
連続行の間違いをしていないかチェック。
この語をリテラルとしてあるいはフィールド名として
使いたい場合、しかるべきキーワードの後ろに置くこと。
- missing variable name at … .
- (Dコマンド:
Ded、
Dselect)。
与えられたDl
の最後の語が"STATIC"であった。
連続行の間違いをしていないかチェック。
この語をリテラルとしてあるいはフィールド名として
使いたい場合、しかるべきキーワードの後ろに置くこと。
- no new field name for the field field-name.
- (Dコマンド:
Drename)。
フィールドリネームリストはold-name:new-name
の形である。
- OUTPUT is not allowed in Dselect.
- (Dコマンド:
Dselect)。
OUTPUTはDselectでは使えない。
- pattern is not allowed in output format in the field field-name.
- (Dコマンド:
Dunbundle、
DfromLine、
DtoLine、
Dpack、
Dunpack、
Dtie、
Duntie、
Dpr)。
フォーマットリストをチェックせよ。
あるいはコマンド名を間違えていないかチェックせよ。
- program error (identifier).
- (Dコマンド:
Ded、
Dselect)。
乞連絡 - 著者。
- -r and -g is exclusive.
- (Dコマンド:
Dmeans)。
Dmeansの仕様による。
双方の結果がほしい場合、
-r指定
と
-g指定
との2回実行すること。
- record-number-list syntax error at position.
- (Dコマンド:
Dextract)。
レコード番号リストのミスタイプかコマンドのミスタイプであろう。
- regular expression error (detail) in position
- (Dコマンド:
Ded、
DfromLine、
Dgrep、
Dselect、
Dunpack、
Duntie)。
正規表現パターンは必要な時点でコンパイルされる。
このコンパイル時detailで示されるエラーが起こった。
positionはエラーの起こったの正規表現、
ファイル名とレコード番号、
オプション名などを示す。
- skips a NULL character in the file file-name(rec#).
- (Dコマンド:
Dgrep、
DfromLine)。
file-nameファイルのrec#番目の行でNULL文字が
あったことを示す。その文字は無視される。
これがおこるのは
Dgrepのパターンファイルや
DfromLineの入力ファイルが
テキストファイルでなかったか、異なるロケールで作成された場合であろう。
入力DファイルにおけるNULL文字は報告されずに除去される事にも注意。
- start > end error in the field field-name.
- (Dコマンド:
Dunbundle、
DfromLine、
DtoLine、
Dpack、
Dunpack、
Dtie、
Duntie、
Dpr)。
field-nameフィールドの絶対位置指定が終了位置より大きい。
何かの間違いでしょう。
- syntax error at the arguemnt number (value).
- syntax error at the end of arguemnt (number).
- syntax error at line number, char position.
- (Dコマンド:
Ded、
Dselect)。
Dlのシンタックスエラー。
フィールド名や定数と思っているものが予約語でないかチェックする。
演算子や括弧などにクォーティングの必要がないかチェックする。
- -t delimiter matches null string.
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入力フォーマットで
-tオプションで与えた区切り字パターンは、
ほかの区切り字パターンやパターンと同様NULL文字列にマッチしてはならない。
(さもないと、NULL文字列値しか読み込めない。)
たとえば/ */(0個以上のスペース)
はNULL文字列にマッチする。このような場合、
/ +/(1個以上のスペース)を使用すること。
- tmpfile exhausted (number).
- (Dコマンド:
Dsort)。
このメッセージがでるのは一時ファイルの数が21176個をこえて
必要となったときである。ソートしているファイルはよほど大きいに違いない。
もし、本当にそうであればxmemを増やす必要がある。
- too long -i fields!
- (Dコマンド:
Dpr)。
識別用フィールドが1ページの幅に入らない。
識別用フィールドが考えているようなものでない可能性はないか?
- too small page size, stop!
- (Dコマンド:
Dpr)。
ページの高さ(-yオプション)がヘッダー行も入らない大きさである。
-yの値を増やすか、ヘッダー行を減らすこと。
- unexpected eof after continuation line at file-name(rec#).
- (Dコマンド:
DfromLine)。
-cオプション付きで入力中、
入力ファイルの最後の行が連続行であった。
この最後の行は無視される。
- unknown key flag 'flag' in position.
- (Dコマンド: Dcat、
Dfd、
Dfreq、
Dbundle、
Dmeans、
Dsort、
Djoin、
Dupdate、
Dpr)。
キーフラグは"b", "d", "f", "i", "n", "r"の組み合わせでなければならない。
- unknown token word at &hellip .
- (Dコマンド:
Ded、
Dselect)。
Dlの非予約語wordが予期せぬ場所に現れている。
キーワードをミスタイプした可能性が高い。
- unknown qualifier.
- (Dコマンド:
Ded、
Dselect)。
Dlのフィールド名の後ろにCOLONでつけられるのは
数値限定子:nだけである。
これはキーフラグやフォーマットではない。
- unterminated quotation from line number char position.
- (Dコマンド:
Ded、
Dselect)。
Dl入力ファイル中、クォーティングが閉じられていない。
QUOTATION MARK、APOSTROPHEまたはREVERSE SOLIDUSをどこかで
ミスタイプしていないかチェックせよ。
- -z option error 'character'.
- (Dコマンド: Dunbundle、
DfromLine,
DtoLine,
Dpack、
Dunpack、
Dtie、
Duntie、
Dpr)。
フォーマットオプションが正しくない。
D_fmt参照。
- zero division at file-name(rec#).
- (Dコマンド:
Ded、
Dselect)。
Dl式の評価中、ゼロによるわり算が発生。
もしfile-nameとrec#とがでていない場合、
実行前の定数評価中に発生している。
- zero length field repeats in the field field-name.
- (Dコマンド:
DfromLine、
Dunpack、
Duntie)。
入力フォーマットのlengthはリピートのない場合のみゼロで
あり得る。さもなければ、ループしてしまう。
Dintro。
AUTHOR
MIYAZAWA Akira
miyazawa@nii.ac.jp
2003