ボタンを押した瞬間を取得するためには上記のように前回押したボタン情報が必要です。 そのため前回のボタン情報を引数に入れてグローバル変数に戻すことでこのBUTTON2関数は「DEF内ではローカル変数のみで動作」するようになっています。 しかし、戻り値として欲しいのは「押した瞬間のボタン情報」であり実際のプログラム内では使用しない前回のボタン情報まで取得するためにBUTTON2 A OUT B,Aと長々と書く必要があるというのは使い勝手があまり良くありません。