Die Beispiele verwenden generierte Daten (Datalines) oder dynamisch erstellte Tabellen.
1 Codeblock
PROC CAS
Erklärung : Dieses einfachste Beispiel zeigt, wie die SOURCE-Anweisung verwendet wird, um einer CASL-Variablen namens 'maVariableTexte' einen mehrzeiligen Textblock zuzuweisen. Der Text zwischen SOURCE und ENDSOURCE wird wörtlich erfasst, einschließlich Zeilenumbrüchen. Die 'print'-Anweisung wird dann verwendet, um den Inhalt dieser Variablen im SAS-Log anzuzeigen.
Kopiert!
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 Codeblock
PROC CAS / DATA STEP Data
Erklärung : Dieses Beispiel demonstriert, wie ein vollständiger SAS-Codeblock (hier eine PROC PRINT) in einer CASL-Variablen unter Verwendung der SOURCE-Anweisung gekapselt werden kann. Nach der Erstellung einer CAS-Tabelle (casuser.produits) zu Demonstrationszwecken wird der Inhalt der Variablen 'codeSasDynamique' in der CAS-Sitzung mithilfe der Anweisung 'cas cascode / code=' ausgeführt. Dies ermöglicht die dynamische Ausführung von generiertem oder programmgesteuert gespeichertem SAS-Code.
Kopiert!
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 Codeblock
PROC CAS
Erklärung : Dieses fortgeschrittene Beispiel zeigt zwei Anwendungen: Erstens, die dynamische Konstruktion eines CASL-Aktionsaufrufs. Eine SAS-Makrovariable ('filtreRegion') wird verwendet, um die WHERE-Klausel einer 'builtins.filter'-Aktion zu parametrisieren. Die Variable 'actionCaslDynamique' enthält den CASL-Code, der anschließend durch 'evaluate' ausgeführt wird. Zweitens, es illustriert die Definition einer vollständigen CASL-Funktion innerhalb eines SOURCE-Blocks und deren Ausführung, was die Flexibilität für die funktionale Programmierung in CASL demonstriert.
Kopiert!
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 Codeblock
PROC CAS Data
Erklärung : Dieses Beispiel veranschaulicht die Leistungsfähigkeit der SOURCE-Anweisung in einer Viya/CAS-Umgebung für die Fluss- und Fehlerbehandlung. Das erste Szenario verwendet eine Makrovariable, um die bedingte Erstellung einer CAS-Tabelle über einen `builtins.loadtable`-Block zu steuern. Das zweite Szenario zeigt, wie `TRY-CATCH`-Blöcke von CASL direkt in einen SOURCE-Code integriert werden können, um potenzielle Fehler bei der Ausführung von CAS-Aktionen (hier der Versuch, eine nicht existierende Tabelle zu löschen) zu handhaben. Diese Techniken sind grundlegend für die Robustheit und Anpassungsfähigkeit von SAS/CASL-Programmen in der Produktion.
Kopiert!
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 */
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.