矢幡と申します。
Procがサブルーチンのように利用できることを知りましたので、Basicから移植しま
した。
しかし、通常のサブルーチンのようにどこに記述してもよいのではないことがわかり
始め、さらに単純化すれば、次の二つのように、動作が異なることに気付きました。
Procの動作をどのように考えればよいのかどなたか教えてください。よろしくお願い
します。

        記
問題点: (A)では、beginでaを定義し、prで内容を変換したつもりでも、変換さ
れない。
      しかし、(B)では、prによってaの内容を3に変更される。

なお、(A)のbegin,endは、ここでは、不要ですが、長い定義を初期化しておこうとい
うつもりです。
#====(A)========
pr=proc{ a=2 }
begin
 a=1
 pr.call
end
pr2=proc{ p a }
pr2.call  #=>1
#====(B)=========
a=1
pr=proc{ a=3 }
pr.call
pr2=proc{ p a }
pr2.call  #=>3