[Q]
fort77 でプログラムをコンパイルすると、必ず
Value of construct can be "0"; test with defined() at /usr/bin/fort77 line 273.
Value of construct can be "0"; test with defined() at /usr/bin/fort77 line 279.
というメッセージがでるのですが

[A]
これは perl が出しているメッセージで、この指示通りに /usr/bin/fort77 の 273 行目と 279 行目に
while (defind($line = ) &&
while (defind($line = ) && ($line !~ '#endif')) {
というように defined を加えてやれば良いです。

いちいち書き換えるのが面倒くさくなって作った パッチ もあったりします。(笑)
/usr/bin にこのファイルをコピーして、root で
$ cd /usr/bin
$ patch < fort77.patch
(fort77.patch はこのパッチのファイル名)
とやればパッチをあてることができます。
パッチをあてる前のファイルは fort77.orig という名前で残っていると 思いますので安心してください。(笑)

[Appendix]
fort77 は perl スクリプトで、 warning がでている部分を抜き出すと、

268: # Separate the prototypes out from the C files.
269:
270: if ($extract_prototypes) {
271: $pfile = ($basefile =~ /([^\/]*\.).$/)[0] . "P";
272: open(CFILE, "$cfile") || die ("$0: Cannot open $cfile\n");
273: while (($line = ) &&
274: ($line !~ '#ifdef P_R_O_T_O_T_Y_P_E_S\n')) {
275: print $line;
276: }
277: if ($_) {
278: open(PFILE, ">$pfile") || die ("$0: Cannot open $pfile\n");
279: while (($line = ) && ($line !~ '#endif')) {
280: print PFILE $line;
281: }
282: close(PFILE);
283: }
284: close(CFILE);

となってます。

# 行頭にある数字は行番号、スペースは適当に省略してます。

この部分は C に変換したファイルをコンパイルするために読み込んでいる? ところのようで、変更を加えなくても結果には影響は及ぼさないと思います。



戻る