Anzahl Spalten ermitteln

Hallo, gibt es einen weg, Anzahl von Spalten zu ermitteln?
Man könnte die Tabelle transponieren und dann die Anzahl Zeilen ermitteln. Da die Tabellen ziemlich gr0ß sind, ist die Laufzeit des Programms dann dementsprechend länger.
Es gibt do sicherlich einen eleganteren weg.
Vielen Dank im Voraus.

SAS I/O Functions

Hallo.

Als macro:

/* SAS Data oeffnen */
%let dsid=%sysfunc(open(&lib..&dsn.,i));
/* Anzahl Beobachtungen */
%let n_obs = %sysfunc(attrn(&dsid,NOBS));
/* Anzahl Spalten */
%let n_vars = %sysfunc(attrn(&dsid,nvars));

Als Datasetfunktionen:

data vars;
dsid=open("mysasdsn","i");
num=attrn(dsid,"nvars");
put num=;
rc=close(dsid);
run;

HTH

Dubravko Dolic

so geht es auch

hallo,

proc contents sollte funktionieren, es gibt aber auch eine "manuelle" Lösung mit Hilfe der Dictonary-Tabellen von SAS in der Library SASHELP:

proc sql;
select count(*)
into :anzahl_spalten
from sashelp.vcolumn
where libname = '' and memname = '';
quit;

In der Macrovariable "anzahl_spalten" steht dann die Anzahl der Spalten der Tabelle.

Viele Grüsse,
Christoph

PROC CONTENTS

Mit PROC CONTENTS dürfte es funktionieren.
Weitere Idee:
Mit IML Datensatz in Matrix speichern, dann mit ncol(Matrix) die Spaltenanzahl bestimmen
PROC CONTENTS dürfte komfortabler sein.

mit proc contents hat's

mit proc contents hat's geklappt) danke-danke!