[Tokyo.pm] 恥ずかしながらしくじりました。

吉野 yoshino @ mrisys.co.jp
2000年 1月 4日 (火) 23:59:29 CST


こんにちは。吉野 です。

こんなことをして、ミレニアム・バグをばら撒いてしまいました。

#__________________________________________________________
# [Subroutine  ]CreateYYYYMM
# [Usage       ]$yyyymm = &CreateYYYYMM ();
# [Exp.1       ]Define today's year and month
# [Exp.2       ] Y2K Problem will be Clear.
# [Exp.3       ] Return Value to Global parameter "$Corrector::YYYYMM"
# [Created     ]Date:1999/02/05,BY:massa,ON:Perl5(Sol)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Corrector::YYYYMM;
sub main'CreateYYYYMM
{
  my ($ret,$sec,$min,$hr,$dd,$mm,$yy,$week,$days,$isDST);
  ($sec,$min,$hr,$dd,$mm,$yy,$week,$days,$isDST) = localtime();
  if ($yy >70)
  {
     $yy = "19".$yy;
  }
  else
  {
     $yy = "20".$yy;
  }
  $mm = $mm + 1;
  if ($mm < 10)
  {
     $mm = "0".$mm;
  }
  $ret = $yy.$mm;
  $Corrector::YYYYMM = $ret;
  $ret;
}

他で作ったプログラムをコピーして、適当なサブルーチン
を埋め込んでいたのですが、

2000年になると、$yy = 100 になるのですね。
200001 という値がほしいのに、1910001 となってしまい・・・
騒ぎです(泣)

localtime() の年の値の扱いがこうなるとは思いませんでした。
一応実行環境は、
# perl -version
This is perl, version 5.004_04 built for i386-linux
です。

今のところ笑い事で済んでます。

+------------------------------------+
|三菱総合研究所 MRIシステムズ(株) |
|情報技術部 C/S課長代理 吉野 正夫    |
+------------------------------------+




Tokyo-pm メーリングリストの案内