Type : SASHELP
La macro interroge la vue système `sashelp.vtable` pour obtenir les métadonnées de la table demandée par l'utilisateur. Elle ne crée pas de données et ne lit pas de fichiers externes directement.
| 1 | %macro utl_getTable(lib,dsn) |
| 2 | /des="get table attributes meta data"; |
| 3 | /*--- OUTPUT MACRO VARIABLES |
| 4 | _LIBNAME |
| 5 | _MEMNAME |
| 6 | _MEMTYPE |
| 7 | _MEMLABEL |
| 8 | _TYPEMEM |
| 9 | _CRDATE |
| 10 | _MODATE |
| 11 | _NOBS |
| 12 | _OBSLEN |
| 13 | _NVAR |
| 14 | _FILESIZE |
| 15 | _DELOBS |
| 16 | _NLOBS |
| 17 | _NUM_CHARACTER |
| 18 | _NUM_NUMERIC |
| 19 | ---*/ |
| 20 | /*--- for testing withou macro |
| 21 | %let lib=sashelp; |
| 22 | %let dsn=class; |
| 23 | ---*/ |
| 24 | %global |
| 25 | _libname |
| 26 | _memname |
| 27 | _memtype |
| 28 | _memlabel |
| 29 | _typemem |
| 30 | _crdate |
| 31 | _modate |
| 32 | _nobs |
| 33 | _obslen |
| 34 | _nvar |
| 35 | _filesize |
| 36 | _delobs |
| 37 | _nlobs |
| 38 | _num_character |
| 39 | _num_numeric ; |
| 40 | %local |
| 41 | LIBNAME |
| 42 | memname |
| 43 | memtype |
| 44 | memlabel |
| 45 | typemem |
| 46 | crdate |
| 47 | modate |
| 48 | nobs |
| 49 | obslen |
| 50 | nvar |
| 51 | filesize |
| 52 | delobs |
| 53 | nlobs |
| 54 | num_character |
| 55 | num_numeric ; |
| 56 | |
| 57 | %let dsid=%sysfunc(open(sashelp.vtable |
| 58 | (where=( |
| 59 | upcase("&lib") = upcase(LIBNAME) |
| 60 | and upcase("&dsn") = memname)),i)); |
| 61 | |
| 62 | %syscall SET(dsid); |
| 63 | |
| 64 | %let rc=%sysfunc(fetchobs(&dsid,1)); |
| 65 | %let rc=%sysfunc(close(&dsid)); |
| 66 | |
| 67 | %let _libname = %qtrim(&LIBNAME ); |
| 68 | %let _memname = %qtrim(&memname ); |
| 69 | %let _memtype = %qtrim(&memtype ); |
| 70 | %let _memlabel = %qtrim(&memlabel ); |
| 71 | %let _typemem = %qtrim(&typemem ); |
| 72 | %let _crdate = %qtrim(&crdate ); |
| 73 | %let _modate = %qtrim(&modate ); |
| 74 | %let _nobs = %qtrim(&nobs ); |
| 75 | %let _obslen = %qtrim(&obslen ); |
| 76 | %let _nvar = %qtrim(&nvar ); |
| 77 | %let _filesize = %qtrim(&filesize ); |
| 78 | %let _delobs = %qtrim(&delobs ); |
| 79 | %let _nlobs = %qtrim(&nlobs ); |
| 80 | %let _num_character = %qtrim(&num_character); |
| 81 | %let _num_numeric = %qtrim(&num_numeric ); |
| 82 | |
| 83 | %put ---- inside &=_libname ; |
| 84 | %put ---- inside &=_memname ; |
| 85 | %put ---- inside &=_memtype ; |
| 86 | %put ---- inside &=_memlabel ; |
| 87 | %put ---- inside &=_typemem ; |
| 88 | %put ---- inside &=_crdate ; |
| 89 | %put ---- inside &=_modate ; |
| 90 | %put ---- inside &=_nobs ; |
| 91 | %put ---- inside &=_obslen ; |
| 92 | %put ---- inside &=_nvar ; |
| 93 | %put ---- inside &=_filesize ; |
| 94 | %put ---- inside &=_delobs ; |
| 95 | %put ---- inside &=_nlobs ; |
| 96 | %put ---- inside &=_num_character; |
| 97 | %put ---- inside &=_num_numeric ; |
| 98 | %mend utl_getTable; |