/****************************************************************************** * Programme : PROC CAS SOURCE Anweisung * Reference : PROCCA3BE7 * Source : https://www.wearecas.eu/en/sampleCode/PROCCA3BE7 ******************************************************************************/ /* --- BLOC 1 --- */ proc cas; /* Déclare une variable CASL pour stocker le texte */ source maVariableTexte; Ceci est la première ligne. Ceci est la deuxième ligne. Et voici la troisième ligne. endsource; /* Affiche le contenu de la variable */ print maVariableTexte; run; quit; /* --- BLOC 2 --- */ proc cas; /* Crée une table CAS pour l'exemple */ data casuser.produits; input ID Produit $ Prix; datalines; 1 Pomme 1.00 2 Orange 0.75 3 Banane 0.50 4 Poire 1.20 ; run; /* Encapsule un bloc de code SAS dans une variable CASL */ source codeSasDynamique; proc print data=casuser.produits; var ID Produit Prix; title 'Liste des Produits'; run; endsource; /* Exécute le code SAS stocké dans la variable */ cas cascode / code=codeSasDynamique; run; quit; /* --- BLOC 3 --- */ proc cas; /* Crée une table CAS simple */ data casuser.ventes; input Region $ Ventes; datalines; Nord 100 Sud 150 Est 120 Ouest 180 ; run; /* Définit une macro-variable pour un filtre */ %let filtreRegion = 'Nord'; /* Construit dynamiquement un appel d'action CASL avec une macro-variable */ source actionCaslDynamique; builtins.filter(table={name='ventes', caslib='casuser'}, where='Region = &filtreRegion.'); endsource; /* Affiche et exécute le code CASL généré */ print 'Code CASL généré: ' actionCaslDynamique; evaluate actionCaslDynamique; /* Autre exemple : définition et appel d'une fonction CASL */ source maFonctionCasl; function maFonction(msg); print 'Message de la fonction : ' || msg; return msg || ' Traité'; endfunction; endsource; evaluate maFonctionCasl; result = maFonction('Bonjour du CAS'); print 'Résultat de la fonction : ' result; run; quit; /* --- BLOC 4 --- */ proc cas; /* Crée une table source */ data casuser.donnees_source; input Valeur; datalines; 10 20 30 ; run; /* Scénario 1 : Création de table conditionnelle */ %let creerTable = 1; source creationTableConditionnelle; if &creerTable. = 1 then do; builtins.loadtable(path='donnees_source.sashdat', caslib='casuser', casout={name='donnees_chargees', replace=true}); print 'Table donnees_chargees créée avec succès.'; end; else do; print 'Création de table ignorée.'; end; endsource; evaluate creationTableConditionnelle; /* Scénario 2 : Exécution d'une action avec gestion d'erreur simulée */ source testActionAvecErreur; try { builtins.droptable(name='table_non_existante', caslib='casuser', quiet=false); print 'Cette ligne ne devrait pas s''afficher.'; } catch (e) { print 'Erreur attrapée : ' || e.message; } endsource; evaluate testActionAvecErreur; /* Nettoyage */ builtins.droptable(name='donnees_source', caslib='casuser', quiet=true); builtins.droptable(name='donnees_chargees', caslib='casuser', quiet=true); run; quit;