Veröffentlicht am :
CASL INTERNE_ERSTELLUNG

PROC CAS SOURCE Anweisung

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die SOURCE-Anweisung wird in der PROC CAS-Umgebung verwendet, um eine CASL-Variable zu definieren, deren Wert ein mehrzeiliger Textblock ist. Dieser Textblock kann eine beliebige Zeichenkette sein, einschließlich SAS©- oder CASL-Code. Der Text wird durch die Schlüsselwörter `SOURCE` (gefolgt vom Variablennamen) und `ENDSOURCE` begrenzt. Sobald der Text der Variablen zugewiesen wurde, kann er dynamisch manipuliert oder ausgeführt werden. Dies bietet große Flexibilität für fortgeschrittene Programmieraufgaben, wie die Generierung dynamischer Berichte, die Erstellung benutzerdefinierter Funktionen 'on the fly' oder die bedingte Ausführung längerer Codeblöcke.
Datenanalyse

Type : INTERNE_ERSTELLUNG


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!
1PROC 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;
11RUN;
12QUIT;
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!
1PROC 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 PRINT DATA=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;
23RUN;
24QUIT;
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!
1PROC 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 */
17 SOURCE actionCaslDynamique;
18 BUILTINS.filter(TABLE={name='ventes', caslib='casuser'},
19 where='Region = &filtreRegion.');
20 ENDSOURCE;
21 
22 /* Affiche et exécute le code CASL généré */
23 PRINT 'Code CASL généré: ' actionCaslDynamique;
24 evaluate actionCaslDynamique;
25 
26 /* 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;
37RUN;
38QUIT;
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!
1PROC 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 */
13 %let creerTable = 1;
14 
15 SOURCE creationTableConditionnelle;
16 IF &creerTable. = 1 THEN DO;
17 BUILTINS.loadtable(path='donnees_source.sashdat', caslib='casuser', casout={name='donnees_chargees', replace=true});
18 PRINT 'Table donnees_chargees créée avec succès.';
19 END;
20 ELSE DO;
21 PRINT 'Création de table ignorée.';
22 END;
23 ENDSOURCE;
24 
25 evaluate creationTableConditionnelle;
26 
27 /* Scénario 2 : Exécution d'une action avec gestion d'erreur simulée */
28 SOURCE testActionAvecErreur;
29 try {
30 BUILTINS.droptable(name='table_non_existante', caslib='casuser', quiet=false);
31 PRINT 'Cette ligne ne devrait pas s''afficher.';
32 } catch (e) {
33 PRINT 'Erreur attrapée : ' || e.message;
34 }
35 ENDSOURCE;
36 
37 evaluate testActionAvecErreur;
38 
39 /* Nettoyage */
40 BUILTINS.droptable(name='donnees_source', caslib='casuser', quiet=true);
41 BUILTINS.droptable(name='donnees_chargees', caslib='casuser', quiet=true);
42RUN;
43QUIT;
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved.