Veröffentlicht am :
Makro EXTERN

SAS-Makro zur Tabellenversionsabfrage (`AHGtabver`)

Dieser Code ist auch verfügbar auf: English Español Français
Attention : Dieser Code erfordert Administratorrechte.
Das Makro `AHGtabver` ist für die Ausführung in einer verteilten SAS©-Umgebung konzipiert und verwendet `rsubmit`, um Code an einen entfernten SAS©-Server zu übermitteln. Es nimmt als Eingabe eine Tabellenidentifikationsnummer (`ltabno`) und den Namen einer Ausgabemakrovariable (`outver`).
Innerhalb des `rsubmit`-Blocks wird ein `DATA _NULL_` Schritt für Schritt verwendet. Es definiert eine `filename pip pipe`, um einen spezifischen Shell-Befehl auszuführen: `cd &root3; tabver &rtabno`. Dieser Befehl navigiert zu einem durch `&root3;` angegebenen Verzeichnis und führt dann ein externes Programm `tabver` mit der Tabellennummer aus. Die Ausgabe dieses externen Befehls wird von der Pipe erfasst.
Das `DATA _NULL_` liest die erste Zeile der Pipe-Ausgabe und verwendet `call symput`, um diese Zeile in einer temporären Makrovariable `rtabver` auf dem entfernten Server zu speichern. Schließlich wird `%%sysrput &outver=&rtabver;` verwendet, um den Wert von `rtabver` an die lokale SAS©-Sitzung zurückzusenden und ihn der Makrovariable zuzuweisen, deren Name im Parameter `outver` übergeben wurde.
Dieser Mechanismus ermöglicht es, Versionsinformationen des Betriebssystems oder eines Versionsmanagers in ein SAS©-Programm einzubinden.
Datenanalyse

Type : EXTERN


Die von diesem Makro verarbeiteten Daten stammen nicht aus traditionellen SAS-Datensätzen (weder SASHELP, intern noch extern zum Skript). Sie werden aus der textuellen Ausgabe eines externen Systembefehls (`tabver`) extrahiert, der über eine UNIX-Pipe ausgeführt wird. Das Ergebnis ist eine textuelle Information (eine Versionsnummer), die in einer Makrovariable gespeichert ist.

1 Codeblock
MACRO DEFINITION
Erklärung :
Dieser Block definiert das Makro `AHGtabver`, das die Logik zur Versionsabfrage kapselt. Es verwendet `%syslput`, um die Parameter von der lokalen Sitzung vor dem `rsubmit` an die entfernte Sitzung zu übertragen. Der Code zwischen `rsubmit;` und `endrsubmit;` wird auf dem entfernten Server ausgeführt. Nach der Ausführung des `DATA _NULL_` auf dem entfernten Server sendet `%%sysrput` den Wert der Makrovariable `rtabver` (auf dem entfernten Server erstellt) an die lokale SAS-Sitzung zurück und weist ihn der Makrovariable zu, deren Name durch `&outver` bereitgestellt wird.
Kopiert!
1%macro AHGtabver(ltabno,outver);
2 %syslput rtabno=<abno;
3 %syslput outver=&outver;
4 
5rsubmit;
6 
7 DATA _null_;
8 filename pip pipe "cd &root3; tabver &rtabno";
9 INFILE pip;
10 LENGTH line $100;
11 INPUT line;
12 call symput('rtabver',line);
13 RUN;
14 %nrstr(%%)sysrput &outver=&rtabver;
15endrsubmit;
16 
17%mend;
2 Codeblock
DATA STEP
Erklärung :
Dieses `DATA _NULL_` wird auf dem entfernten Server (innerhalb des `rsubmit`-Blocks) ausgeführt. Es erstellt keinen permanenten Datensatz. Es wird verwendet, um:
1. Einen `filename` namens `pip` als Pipe (`pipe`) zu definieren, der den Shell-Befehl `cd &root3; tabver &rtabno` ausführt.
2. `infile pip` zu verwenden, um die Ausgabe dieses externen Befehls zu lesen.
3. Die erste Zeile der Ausgabe in die Variable `line` zu lesen.
4. `call symput('rtabver',line);` zu verwenden, um eine Makrovariable namens `rtabver` (auf dem entfernten Server) zu erstellen und ihr den Inhalt von `line` zuzuweisen. Diese Makrovariable enthält die vom Systembefehl `tabver` zurückgegebene Versionsnummer.
Kopiert!
1 DATA _null_;
2 filename pip pipe "cd &root3; tabver &rtabno";
3 INFILE pip;
4 LENGTH line $100;
5 INPUT line;
6 call symput('rtabver',line);
7 RUN;
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 : RCS-Header erkannt: $Source: /Volumes/app/cdars/prod/prjA258/phase3b4/A2581172/saseng/pds1_0/program/RCS/fmd_site_chg.sasdrvr,v $, $Revision: 1.14 $, $Author: Hui Liu $, $Locker: $, $State: Exp $