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!

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 1245 Aufrufe
  • 1 Kudo
  • 2 in Unterhaltung