Der Speicher von übergebenen bzw. empfangenen Variablen befindet sich im aufrufenden Programm. Und der von den beiden Variablen &LIB und &SAVF ist in diesem Fall der Speicher von &ODOBNM. Es wird jeweils nur ein Zeiger auf diesen Speicherbereich übergeben. Deshalb schlägt eine Änderung der Variable &SAVF direkt auf die Variable &LIB durch und umgekehrt. Siehe hier.

Am besten du übergibst und empfängst &SAVF nicht mehr als Parameter, sondern machst stattdessen im aufgerufenen Programm ein CHGVAR VAR(&SAVF) VALUE(&LIB).