Los ejemplos utilizan datos generados (datalines) o tablas creadas dinámicamente.
1 Bloque de código
PROC CAS
Explicación : Este ejemplo más simple muestra cómo usar la declaración SOURCE para asignar un bloque de texto multi-línea a una variable CASL llamada 'maVariableTexte'. El texto entre SOURCE y ENDSOURCE se captura literalmente, incluyendo los saltos de línea. La declaración 'print' se utiliza luego para mostrar el contenido de esta variable en el log SAS.
¡Copiado!
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;
1
PROC CAS;
2
/* Déclare une variable CASL pour stocker le texte */
3
SOURCE maVariableTexte;
4
Ceci est la première ligne.
5
Ceci est la deuxième ligne.
6
Et voici la troisième ligne.
7
ENDSOURCE;
8
9
/* Affiche le contenu de la variable */
10
PRINT maVariableTexte;
11
RUN;
12
QUIT;
2 Bloque de código
PROC CAS / DATA STEP Data
Explicación : Este ejemplo demuestra cómo encapsular un bloque de código SAS completo (aquí, una PROC PRINT) en una variable CASL usando la declaración SOURCE. Después de la creación de una tabla CAS (casuser.produits) para la demostración, el contenido de la variable 'codeSasDynamique' se ejecuta en la sesión CAS con la declaración 'cas cascode / code='. Esto permite la ejecución dinámica de código SAS generado o almacenado programáticamente.
¡Copiado!
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;
1
PROC CAS;
2
/* Crée une table CAS pour l'exemple */
3
DATA casuser.produits;
4
INPUT ID Produit $ Prix;
5
DATALINES;
6
1 Pomme 1.00
7
2 Orange 0.75
8
3 Banane 0.50
9
4 Poire 1.20
10
;
11
RUN;
12
13
/* Encapsule un bloc de code SAS dans une variable CASL */
14
SOURCE codeSasDynamique;
15
PROC PRINTDATA=casuser.produits;
16
var ID Produit Prix;
17
title 'Liste des Produits';
18
RUN;
19
ENDSOURCE;
20
21
/* Exécute le code SAS stocké dans la variable */
22
cas cascode / code=codeSasDynamique;
23
RUN;
24
QUIT;
3 Bloque de código
PROC CAS
Explicación : Este ejemplo avanzado muestra dos usos: primero, la construcción dinámica de una llamada a la acción CASL. Se utiliza una macro-variable SAS ('filtreRegion') para parametrizar la cláusula WHERE de una acción 'builtins.filter'. La variable 'actionCaslDynamique' contiene el código CASL que luego es ejecutado por 'evaluate'. En segundo lugar, ilustra la definición de una función CASL completa dentro de un bloque SOURCE y su ejecución, demostrando la flexibilidad para la programación funcional en CASL.
¡Copiado!
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;
1
PROC CAS;
2
/* Crée une table CAS simple */
3
DATA casuser.ventes;
4
INPUT Region $ Ventes;
5
DATALINES;
6
Nord 100
7
Sud 150
8
Est 120
9
Ouest 180
10
;
11
RUN;
12
13
/* Définit une macro-variable pour un filtre */
14
%let filtreRegion = 'Nord';
15
16
/* Construit dynamiquement un appel d'action CASL avec une macro-variable */
/* Autre exemple : définition et appel d'une fonction CASL */
27
SOURCE maFonctionCasl;
28
function maFonction(msg);
29
PRINT'Message de la fonction : ' || msg;
30
return msg || ' Traité';
31
endfunction;
32
ENDSOURCE;
33
34
evaluate maFonctionCasl;
35
RESULT = maFonction('Bonjour du CAS');
36
PRINT'Résultat de la fonction : 'RESULT;
37
RUN;
38
QUIT;
4 Bloque de código
PROC CAS Data
Explicación : Este ejemplo ilustra el poder de la declaración SOURCE en un entorno Viya/CAS para la gestión de flujos y errores. El primer escenario utiliza una macro-variable para controlar condicionalmente la creación de una tabla CAS a través de un bloque `builtins.loadtable`. El segundo escenario muestra cómo integrar bloques `TRY-CATCH` de CASL directamente en un código SOURCE para gestionar posibles errores durante la ejecución de acciones CAS (aquí, intentar eliminar una tabla inexistente). Estas técnicas son fundamentales para la robustez y adaptabilidad de los programas SAS/CASL en producción.
¡Copiado!
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;
1
PROC CAS;
2
/* Crée une table source */
3
DATA casuser.donnees_source;
4
INPUT Valeur;
5
DATALINES;
6
10
7
20
8
30
9
;
10
RUN;
11
12
/* Scénario 1 : Création de table conditionnelle */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.