†REXXのどろぬま†

作成開始日
最終更新日

PARSE VARには、末尾項目のみ、ホワイトスペースの扱いがおかしくなる、というバグが存在する。たとえば、下記のようになる。
st='25-05-05  23:05       8264           0  ftp.htm' /* DIRの実行結果の1行 */
PARSE VAR st dt tm sz ea fn
say dt		/*25-05-05*/
say tm		/*23:05*/
say sz		/*8264*/
say ea		/*0*/
say fn		/* ftp.htm ←ここだけなぜか先頭にスペースが…*/
本来、区切りのホワイトスペースは、いくつあっても1つとして扱われるはずなのに、ファイル名にのみ、余分なスペースがくっつく。なんだ、これは?てんで、簡単な実験をしてみたとろ、

PARSEの末尾項目に限り、先行スペースが文字として認識されてしまう

と言うことが判った。この例では「ftp.htm」の前にスペースが2つあるので、1つは区切りのホワイトスペースとして、もう1つは文字列の一部としてして認識される。同様に、スペースが3つあれば2つが、4つあれば3つが文字列として項目の前に付いてしまう。

このバグを回避するには、末尾にダミー変数を追加しておけば良い。バグはダミー変数が引き受けてくれる。

st='25-05-05  23:05       8264           0  ftp.htm' /* DIRの実行結果の1行 */
PARSE VAR st dt tm sz ea fn dmy
say dt		/*25-05-05*/
…… 中略 ……
say fn		/*ftp.htm*/


【REXXのどろぬま目次】 【ホーム】