よくわからないですが… USEは評価のみ EXECは評価後、実行だそうです。 なのでUSEの場合、A=1が実行されず Aは関数の中のローカル変数扱いとなり、その値は未設定なので初期値0となっているのかと。