Veröffentlicht am :
Makro EXTERNE

Prüfung auf Nicht-Leerheit eines Datensatzes

Dieser Code ist auch verfügbar auf: English Español Français
Dieses Makro, `assert_not_empty`, dient als Assertionsroutine. Es überprüft zuerst die Existenz des über den Parameter `DS` übergebenen Datensatzes. Wenn der Datensatz nicht existiert oder existiert, aber keine Beobachtungen enthält, wird ein Ereignis durch den Aufruf eines externen Makros `%generate_event` ausgelöst. Die Details dieses Ereignisses (Nachricht, Stufe, Typ usw.) können über Parameter angepasst werden. Wird keine benutzerdefinierte Nachricht bereitgestellt, wird automatisch eine Standardnachricht generiert, die die Art des Problems (nicht existent oder leer) angibt.
Datenanalyse

Type : EXTERNE


Das Makro ist darauf ausgelegt, auf einem Datensatz zu operieren, dessen Name über den Parameter `DS` bereitgestellt wird und somit extern zum Makro selbst ist. Seine Funktionsweise hängt auch vom Makro `%generate_event` ab, das in diesem Skript nicht definiert ist und in der SAS-Umgebung verfügbar sein muss.

1 Codeblock
Macro
Erklärung :
Dieser Block definiert das Makro `assert_not_empty`. Es verwendet die Makrofunktionen `%exist`, um zu überprüfen, ob der Datensatz existiert, und `%obs`, um seine Beobachtungen zu zählen. Wenn der Datensatz nicht existiert oder leer ist, wird eine lokale Variable `EVENT_COUNT` auf 1 gesetzt. In diesem Fall wird das externe Makro `%generate_event` aufgerufen, um die Anomalie zu melden und die entsprechenden Parameter zu übermitteln. Die globale Variable `futs_tst_cnt` wird inkrementiert, was darauf hindeutet, dass dieses Makro Teil eines größeren Testframeworks ist.
Kopiert!
1%macro assert_not_empty( DS,
2 MESSAGE=,
3 TYPE=,
4 LEVEL=,
5 ATTACHDATA=,
6 ATTACHFILE=,
7 METRIC=,
8 PROPERTIES=,
9 ON_EVENT=,
10 DESCRIPTION=, ABORT= );
11 
12%local EVENT_COUNT DS_EXIST;
13%let EVENT_COUNT = 0;
14%let DS_EXIST = %exist(&DS);
15%*put LOG: ds_exist = <&DS_EXIST.>;
16 
17%IF &DS_EXIST eq 0 %THEN %DO;
18 %let EVENT_COUNT = 1;
19 %IF &MESSAGE = %str() %THEN %let MESSAGE = DATA SET &DS does not exist;
20%END;
21%ELSE %DO;
22 %IF %obs(&DS) eq 0 %THEN %DO;
23 %let EVENT_COUNT = 1;
24 %IF &MESSAGE = %str() %THEN
25 %let MESSAGE = DATA SET &DS is empty;
26 %END;
27%END;
28 
29%let futs_tst_cnt = %eval(&futs_tst_cnt.+1);
30 
31%IF &EVENT_COUNT gt 0 %THEN
32 %generate_event(TYPE=&TYPE, LEVEL=&LEVEL,
33 MESSAGE=&MESSAGE,
34 ATTACHDATA=&ATTACHDATA, ATTACHFILE=&ATTACHFILE,
35 METRIC=&METRIC,
36 PROPERTIES=&PROPERTIES,
37 ON_EVENT=&ON_EVENT,
38 DESCRIPTION=&DESCRIPTION, ABORT=&ABORT);
39 
40%mend assert_not_empty;
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 (c) 2015 John Jacobs. All rights reserved.