Type : SASHELP
Par défaut, la macro pointe sur SASHELP.CLASS, mais elle est conçue pour accepter n'importe quelle bibliothèque et table via les paramètres `libin` et `datain`.
| 1 | PROC SQL noprint; |
| 2 | select name into :charvar1 - :charvar9999 |
| 3 | from dictionary.columns |
| 4 | where LIBNAME=upcase("&LIBIN") |
| 5 | and memname=upcase("&DATAIN") |
| 6 | and type='char' |
| 7 | and findw(UPPER("&vars."), STRIP(UPPER(name))) ne 0 |
| 8 | ; |
| 9 | QUIT; |
| 10 | %let numvars=&SQLOBS; |
| 1 | PROC SQL noprint; |
| 2 | create TABLE maxlengths as |
| 3 | select |
| 4 | max(LENGTH(&CHARVAR1)) as max&CHARVAR1 |
| 5 | %IF &NUMVARS > 1 %THEN %DO; |
| 6 | %DO i=2 %to &NUMVARS; |
| 7 | , max(LENGTH(&&CHARVAR&i)) as max&&CHARVAR&i |
| 8 | %END; |
| 9 | %END; |
| 10 | from &LIBIN..&DATAIN |
| 11 | ; |
| 12 | QUIT; |
| 1 | DATA _NULL_; |
| 2 | SET maxlengths; |
| 3 | %DO i=1 %to &NUMVARS; |
| 4 | %global max&&CHARVAR&i; |
| 5 | call symput("max&&CHARVAR&i",max&&CHARVAR&i); |
| 6 | %END; |
| 7 | RUN; |