2021年8月20日金曜日

DOSバッチのSET 文で「無効な数字です」と怒られたが、それは先頭0 を勝手に8進数とみなし08は8進数じゃないよと怒るマイクロソフトのバグ。でも直すのは、ワタシのバッチという矛盾に辿り着き、100を足して100を引くまでの物語。

  これまで快調に動作していた、ワタシのDOSバッチ。2021年08月になると、突然、動かなくなってしまった。新型コロナウィルスのせいではない。ワンステップずつ、動かして見ると、

SET /A MM=%DATE:~5,2%*1

のSET文で、

SET /A MM=08*1
「無効な数値です。数値定数は10進(17桁)、16進(0x11桁)、または8進(021桁)です」

というエラーが出る。昨日までちゃんと動いていたのにだ。早速、ググってみた。そして、また、先人たちの教えに助けられた。どうも、先頭に0が付くと、8進数とみなすようだ。つまり、8月になり、DATE関数から得た月を示す定数となる部分である「%DATE:~5,2%」が08という定数になってしまった。先頭に0が付いてる8進数の定数なのに、08とはけしからんというわけだ。08は8進数じゃないよと怒っているのだ、(マイクロソフト)なので、先人の教えどおりに、100を足して、100を引いてみた。つまり、

SET /A MM=1%DATE:~5,2*1-100

とワタシの方が変更してみた。これで定数部分が08になることを回避する訳だ。そしたら、見事に動いた。ここまで辿り着くのに、色々、あって半月も要した。

  先頭に0があるから、8進数だと思うのは、マイクロソフトのバグ(コンピュターの黎明期の低級な言語ではよくある陳腐な前提だが、今の時代でも開き直ってる)だが、結局、直すのは、いつも、ワタシの方で、ワタシのDOSバッチである。 もう1つ疑問なのは、昨年の08月にワタシのバッチは異常を訴えなかった。もしかして、マイクロソフトは、パッチで1回修正したのに、それが最近、ハズレたのかなぁ。

  ここでちょっと一息のコーナー。ベランダ菜園の唐辛子の隣に見慣れない蔓草。パプリカかと思つて引き抜いたら、じゃがいもみたいなので、戻しておいた。しばらく、様子を見ることにする。

  もう1つ。関東圏からから関西圏へ引越し、はや2年。関東の醤油ラーメンが恋しい。あのキレのある、しっかりした醤油味のラーメンは、関西にはない。とても残念だ。なぜ、関西の醤油ラーメンは甘たるい醤油味なんだろうね。

canbusgirl20211001




0 件のコメント:

コメントを投稿