/****************************************************************************** * Programme : SAS Viya : Comment rendre vos formats personnalisés persistants et partageables dans CAS * Reference : PROMOU89DD * Source : https://www.wearecas.eu/en/sampleCode/PROMOU89DD ******************************************************************************/ /* --- BLOC 1 --- */ options casopts=(caslib=casuser timeout=900); cas casauto; proc cas; session casauto.addcaslib / caslib='myglobalformats' path='&_TEMP_/myformats' subdirs=true datasource=(srctype='path'); quit; proc format lib=myglobalformats; value $genderfmt 'M' = 'Masculin' 'F' = 'Féminin'; value agegrpfmt low-<18 = 'Mineur' 18-high = 'Adulte'; run; proc cas; session casauto.addFmtSearchPath / searchPath={'myglobalformats'}; quit; data casuser.clients (promote=yes); input Name $ Gender $ Age; format Gender $genderfmt. Age agegrpfmt.; datalines; Alice F 25 Bob M 17 Carol F 30 David M 20 ; run; proc print data=casuser.clients; run; proc cas; session casauto.removeFmtSearchPath / searchPath={'myglobalformats'}; session casauto.dropcaslib / caslib='myglobalformats'; quit; /* --- BLOC 2 --- */ options casopts=(caslib=casuser timeout=900); cas casauto; proc cas; session casauto.addcaslib / caslib='myglobalformats' path='&_TEMP_/myformats' subdirs=true datasource=(srctype='path'); quit; proc format lib=myglobalformats; value $statusfmt 'A' = 'Actif' 'I' = 'Inactif' 'X' = 'En attente' other = 'Inconnu'; run; proc cas; session casauto.addFmtSearchPath / searchPath={'myglobalformats'}; quit; data casuser.ventes (promote=yes); input Produit $ StatutCommande $ Montant; format StatutCommande $statusfmt.; datalines; PC A 1200 Souris I 25 Clavier A 80 Ecran X 300 ; run; proc print data=casuser.ventes; run; proc cas; session casauto.removeFmtSearchPath / searchPath={'myglobalformats'}; session casauto.dropcaslib / caslib='myglobalformats'; quit; /* --- BLOC 3 --- */ options casopts=(caslib=casuser timeout=900); cas casauto; proc cas; session casauto.addcaslib / caslib='dynamicformats' path='&_TEMP_/dynamicformats' subdirs=true datasource=(srctype='path'); quit; %macro create_and_promote_format(libname, fmtname); proc format lib=&libname; value &fmtname 1 = 'Faible' 2 = 'Moyen' 3 = 'Élevé'; run; proc cas; session casauto.addFmtSearchPath / searchPath={'&libname'}; quit; %mend; %create_and_promote_format(libname=dynamicformats, fmtname=level); proc format lib=dynamicformats; value level 1 = 'Bas' 2 = 'Moy' 3 = 'Haut'; run; data casuser.evaluations; input ID Niveau; format Niveau level.; datalines; 101 1 102 2 103 3 ; run; proc print data=casuser.evaluations; run; proc cas; session casauto.removeFmtSearchPath / searchPath={'dynamicformats'}; session casauto.dropcaslib / caslib='dynamicformats'; quit; /* --- BLOC 4 --- */ options casopts=(caslib=casuser timeout=900); cas casauto; proc cas; session casauto.addcaslib / caslib='temp_formats' path='&_TEMP_/temp_formats' subdirs=true datasource=(srctype='path'); quit; proc format lib=temp_formats; value $yesnofmt 'Y' = 'Oui' 'N' = 'Non'; run; proc cas; session casauto.addFmtSearchPath / searchPath={'temp_formats'}; quit; proc cas; session casauto.listFmtSearchPath; quit; data casuser.sondage; input Question $ Reponse $; format Reponse $yesnofmt.; datalines; Q1 Y Q2 N ; run; proc print data=casuser.sondage; run; proc cas; session casauto.removeFmtSearchPath / searchPath={'temp_formats'}; quit; proc cas; session casauto.listFmtSearchPath; quit; proc cas; session casauto.dropcaslib / caslib='temp_formats' _all_=true; quit;