2008-09-20 4 views
9

Als Basis-SAS-Programmierer kennen Sie den Drill:Was ist Ihr bester Trick, um aus einer unausgeglichenen Angebotskondition in BASE SAS auszubrechen?

Sie reichen Ihren SAS-Code ein, der ein unausgeglichenes Zitat enthält, also haben Sie jetzt nicht nur und nicht geschlossenes Zitat, sondern auch nicht geschlossene Kommentare, Makrofunktionsdefinitionen, und ein fehlender Lauf; oder beenden; Erklärung.

Was ist Ihr bester Trick, wenn Sie diese unausgeglichenen Zitate nicht stört?

+0

% str (% ") ist sehr praktisch –

Antwort

3

Unternehmen Führung 3 verwendet, um die folgende Zeile an der Spitze seines automatisch generierten Code zu setzen:

*';*";*/;run; 

jedoch den einzigen Weg, um wirklich „Reset“ aus allen Arten von etwas unausgeglichen Problemen sind die beenden Sas Sitzung, und balancieren Sie, was unausgeglichen ist, bevor Sie den Code erneut einreichen. Die Verwendung dieser Art von schnellen (billigen?) Hacks behebt nicht die Ursache.

übrigens, ods _all_ close; schließt alle die ods Ziele, einschließlich der Standard, Ergebnisse Ziel. In einer interaktiven Sitzung sollten Sie es mindestens erneut mit der Nummer ods results; oder ods results on; öffnen. aber wenn ich es auf meine 9.2 getestet, hat es nicht funktioniert, wie unten dargestellt:

%put sysvlong=&sysvlong sysscpl=&sysscpl; 
/* sysvlong=9.02.01M0P020508 sysscpl=X64_VSPRO */ 

ods _all_ close; 
proc print data=sashelp.class; 
run; 
/* on log 
WARNING: No output destinations active. 
*/ 

ods results on; 
proc print data=sashelp.class; 
run; 
/* on log 
WARNING: No output destinations active. 
*/ 
6

Was mich betrifft, ich in der Regel Google for "SAS unbalanced quote", und am Ende mit etwas wie this einreichen:

*); */; /*’*/ /*”*/; %mend; 

... aus unverschlossenen Kommentare zu brechen, Zitate und Makrofunktionen.

-1

Ja, ich glaube, die offizielle SAS-Dokumentation empfiehlt die Lösung, die Sie selbst vorgeschlagen haben.

+0

Ich glaube, einige Ein-Zeilen-Lösungen gesehen zu haben" run; "und/oder" quit; ", also fragte ich mich, ob mein Beispiel vollständig war. –

0

Sie könnten immer nur einen Befehl zum Absetzen von übermittelten Anweisungen absetzen und das, was Sie ausführen möchten, erneut einreichen.

+0

Wie was meinen Sie?Ist dieser Befehlszeilencode? –

5

Hier ist der, den ich benutze.

;*';*";*/;quit;run; 
ODS _ALL_ CLOSE; 
QUIT; RUN; 
+0

Ich benutze dies als eine Anmerkung in SAS - wenn ich unausgeglichene Angebotsprobleme bekomme, gibt die Eingabe von 'fix' diesen Code zurück, um das Problem schnell zu beheben – Bendy

0

wollte nur AFHood Vorschlag zu verwenden, um die ODS _ALL_ CLOSE; Aussage bekräftigen. Das ist ein Schlüssel, den man einbeziehen sollte. Und stellen Sie sicher, dass Sie es jedes Mal verwenden, wenn Sie mit ODS fertig sind.

1

hatte ich eine Situation mit unsymmetrischen Anführungszeichen in einem Makro und die einzige Lösung war die Instanz von SAS zu schließen und neu beginnen.

Ich denke, das ist ein inakzeptabler Fehler in SAS.

Allerdings habe ich die Methoden von BEIDE # 2 und # 5 verwendet und es hat funktioniert. # 2 zuerst und dann # 1. Ich legte sie über den ALLEN Code, einschließlich meines Code-Headers, und erklärte, was dieses Programm tat.

Arbeitete wie ein Charme.

0

Das Schließen der SAS-Sitzung funktionierte in meinem Fall. Ich denke, Sie können dies einmal versuchen, bevor Sie andere hier erwähnte Methoden ausprobieren.

Verwandte Themen