4. 不具合と対処法

上りの路線時刻表・駅時刻表が表示されない場合がある(Ver.2.20)
Ver.2.20で「バグ修正版」でないスクリプトは、上りの路線時刻表・駅時刻表が表示できないバグがありました。
申し訳ありませんが、バージョンアップをするか、以下の方法でスクリプトを集成してください。

修正方法:
下はwebdia.cgiの120行目からの部分ですが、太字下線の3ヶ所の「my」を削除してください。

# モードによる分岐(0…路線時刻表下り 1…路線時刻表上り 2…駅時刻表)
if( $mode == 0 || $mode eq ''){
   my $ud = 0; #$ud…上り/下りのフラグ(0=下り 1=上り)
   &timetable;
}
elsif( $mode == 1 ){
   my $ud = 1;
   &timetable;
}
elsif( $mode == 2 ){
   my $ud = $updown;
   &station_timetable;
}

→ホーム

「当駅始発」表示がされない駅がある(Ver.2.10〜2.11)
発車時刻のみ表示する駅で発車時刻しか入力されていない場合、発車時刻=到着時刻と解釈してしまうため、当駅始発として処理されない問題がありました。

データの解釈の仕方に問題があり、この部分を全面的に書き直したため、スクリプトの小手先の修正では対応できません。恐れ入りますが、もしこの問題が発生する場合には、バージョン2.20へのバージョンアップをお願いします。

→ホーム

駅時刻表から路線時刻表へのリンクがおかしい(Ver.2.10)
Ver.2.00から追加した、駅時刻表から路線時刻表への時間帯別リンクが、Ver.2.10ではすべて路線時刻表最初の方へのリンクになっていました。
恐れ入りますが、Ver.2.10の652行目(「# 別ウィンドウの時は路線時刻表へのリンクを設けない」というコメントの2行下です)を、次のように修正をお願いします。

      else { print "$end_line<TR><TD><B><A href=\"$cgi_name?f=$settei$figlink[$ud]&s=$p[5]\">$hr[$hour]</A></B></TD>\n<TD>"; }

上の太字部分($p[5])を、「$t_num」と修正してください。
なお、Ver.2.11以降ではこのミスは修正されています。

→ホーム

「推定時刻を完全に隠す」機能が使えない(Ver.2.00)
設定ファイルの説明文中には、「on」または「ON」と設定すると使える、という旨の記述をしていまいたが、プログラム上のミスで、「ON」では使えなくなっていました。
大変申し訳ありません。
小文字の「on」を使い、

hide_suitei<>on

と記述すれば、推定時刻を完全に隠すことができますので、この方法で対応していただくようお願いいたします。
なお、Ver2.01以降では修正されています。また、この機能はVer.1では使えません。

→ホーム

「上り着表示」駅の表示がおかしい(Ver.1.00〜1.02)
上り路線時刻表では、「上り着表示」駅が着発とも表示されてしまうようです(それも別々に)。
これはスクリプトの単純な記述ミスとテスト不足です。申し訳ありません。
1.10以降のバージョンでは修正済みですが、以下の方法で簡単に修正することもできます。

295行目を修正します。
「#着表示駅の発表示無し」というコメント文の2行下です。 周囲に、似たような文が並んでいるのでご注意ください。

elsif ( $ud == 0 && $stn_print[$i] =~/u/ && $j == 1){next;}

上の太字下線の「0」を、「1」に直してください。
お手数をおかけいたしますが、よろしくお願いします。

→ホーム

着時刻表示駅で、駅時刻表に列車が表示されない
着時刻のみ表示するよう設定してある駅で、駅時刻表に列車が全く表示されない、もしくは一部しか表示されない場合があります。

これは、WinDIAでの入力の際、この駅の発車時刻を入力しなかったのが原因です。
Ver.2.11以降では、着時刻=発車時刻として扱うことで対応しています。

→ホーム

Ver.1.00、1.01でのURL表記ミス
駅時刻表で、「[反対方向の時刻表]」をクリックした時に表示されるURLに問題がありました。なお、ただ冗長であるというだけで、機能的な問題ありません。
お手数ですが、バージョンアップか、下の方法でのスクリプトの修正をお願いします。

[修正方法]
スクリプト406行目(広告などがある場合はもう少し下)を修正します。
「#反対方向の時刻表へのリンク」というコメント文の少し下です。

print "[<A href=\"$cgi_name?f=$settei&f=$settei&m=2&d=$opp&s=$st\">反対方向の時刻\表\] ";

上のうち、太字下線の部分を取り除いてください。

→ホーム

Ver.1.00で、設定した駅の下に、入力した覚えのない、空欄の駅名や数字の駅名が表示される
WinDIAでの入力の際、「線種別」の欄を一切エディットしなかった場合に起こるようです。WinDIAデータファイルの形式のチェックが不十分だったための不具合と思われます。
対処してVer.1.01としましたが、スクリプトの修正で済ませたい方は以下のようにしてください。

710行目(広告HTMLなどカスタマイズしている場合はその分もう少し下の行番号になります)、「#[駅]読み込み」というコメント行の3行下の文を修正します。

if ( $data[$i] eq "[線種]\n"){last;}

を、そのまままるごと、

if ( $data[$i] eq "[線種]\n" || $data[$i] eq "[下り]\n"){last;}

に置き換えてください。
お手数をおかけし、まことに申し訳ありません。

→ホーム

CGIモジュール(CGI.pm)が提供されておらず、自分でダウンロードして読み込むこともできない(Ver.1.00、1.01)
@niftyがそういう仕様のようです。
この場合は、CGI.pmに依存しないスクリプトに書き替える必要があります。
具体的には、以下の部分を置き換えれば動くと思います。
なお、現在公開中のバージョンではCGI.pmは必要ありません。

■変更前
(19〜20行目)

use CGI;
$CGI = new CGI;
(95〜103行目・広告など入れた場合はもう少し下)
#引数の読み込み
$settei = $CGI->param('f'); #読み込む設定ファイル
$settei =~s/\/|\||:|\.|\?//g;
$settei_file = $path_settei.$settei.".txt";
$mode = $CGI->param('m'); #モード選択(0=下りダイヤ・1=上りダイヤ・2=各駅時刻表)
$st = $CGI->param('s'); #全線ダイヤでは、列車の表示開始位置、
                        #駅時刻表では、表示する駅を指定します。
$suitei = $CGI->param('gs'); #推定時刻の表示・非表示(デフォルトで非表示)
$updown = $CGI->param('d'); #駅時刻表を表示する時の上り/下り指定(0=下り 1=上り)

■変更後(上の部分をそっくり下のものに置き換えます)
(19〜20行目)

# use CGI;
# $CGI = new CGI;
(95〜103行目)
#引数の読み込み
@qs = split ( /&/ , $ENV{'QUERY_STRING'} ); #環境変数からの読み込み
foreach ( @qs ){
   @q = split ( /=/ , $_ );
   chomp( $q[1] );
   $par{$q[0]} = $q[1];
}

$settei = $par{'f'}; #読み込む設定ファイル
$settei =~s/\/|\||:|\.|\?//g;
$settei_file = $path_settei.$settei.".txt";
$mode = $par{'m'};    #モード選択(0=下り路線時刻表・1=上り路線時刻表・2=駅時刻表)
$st   = $par{'s'};    #路線時刻表では、列車の表示開始位置、
                      #駅時刻表では、表示する駅を指定します。
$suitei = $par{'gs'}; #推定時刻の表示・非表示(デフォルトで非表示)
$updown = $par{'d'};  #駅時刻表を表示する時の上り/下り指定(0=下り 1=上り)

→ホーム

ホームへもどる