SmileBASIC 3.0~ の文字列変数のコピー A2$=A1$ が浅いコピー(参照のコピー)だということが問題の根にあると思います。普通 BASIC の文字列変数のコピーは常に深いコピー(中身のコピー)なので、こういうことは発生しません。 逃げ道としては、文字列変数を直接代入しないで A2$=A1$+"" のように空文字列を連結してから代入すれば、INC A2$,"#" としても A1$ が変更されなくなります。 ※3.0.2まで INC/DEC の先頭引数が2回評価されていた※のですが、3.1.0では1回になったようです。この変更(修正?)の影響を受けたのかもしれません。 ※ 例えば INC A$[FUNC()],"#" と書くと FUNC() が2回呼ばれていた