LesezeichenAbonnierenRSS-Feed abonnieren
Ina
Calcite | Level 5 Ina
Calcite | Level 5

Hallo,

 

ich muß alle Dateinamen (SAS-Dateien) in einer Bibliothek auf gleiche Weise ändern. Die Dateien sollen nun heißen: a_[memname]. Es kommt also 'a_' vorne mit dazu. [memname] ist der urpsrüngliche Name und wird an 'a_' hinten drangehängt. Gibt es dafür eine elegante kompakte Lösung?

2 ANTWORTEN 2
FreelanceReinh
Jade | Level 19

Hallo Ina,

 

jedenfalls funktionsfähig ist folgende Lösung, in der eine RENLIST genannte Makrovariable mit der Liste der Umbenennungen erzeugt wird:

proc sql;
select cats(memname,'=a_',memname) into :renlist separated by ' '
from dictionary.members
where libname='MYLIB';
quit;

proc datasets lib=mylib;
change &renlist;
quit;

"MYLIB" ist natürlich durch die betreffende Libref zu ersetzen. Umbenannt werden dann nicht nur SAS-Datasets, sondern auch SAS-Views, -Kataloge usw. Eine Beschränkung z. B. auf Datasets ist aber problemlos durch Erweiterung der WHERE-Bedingung und des CHANGE-Statements möglich:

where libname='MYLIB' & memtype='DATA';
change &renlist / mt=data;
Ina
Calcite | Level 5 Ina
Calcite | Level 5

es hat super geklappt. Vielen Dank für schnelle Hilfe!