SAS9

Kompilierung und verzögerte Ausführung in SAS: Ist das möglich?

Simon 7 Aufrufe

Wenn Sie aus einer klassischen Programmierumgebung (wie C, C++ oder COBOL) kommen, sind Sie einen binären Workflow gewohnt: Sie schreiben den Code, kompilieren ihn zu einer ausführbaren Datei (binär) und führen diese Datei später aus.

Eine häufige Frage unter erfahrenen SAS©-Entwicklern lautet: Ist es möglich, SAS©-Code separat zu kompilieren, um ihn später auszuführen, ohne ihn bei jedem Start neu kompilieren zu müssen?

Die kurze Antwort ist ja, aber mit wichtigen Nuancen. Hier erfahren Sie, was Sie über die „Compile-and-Go“-Architektur von SAS© und die Methoden zur Umgehung dieser Funktionsweise wissen müssen.


Das Standardmodell: „Compile and Go“

Im Gegensatz zu einem COBOL-Programm, das ein „Load-Modul“ generiert, arbeitet SAS© traditionell nach einem „Compile and Go“-Modell.

Wenn Sie ein Programm übermitteln, liest SAS© den Code, prüft ihn, kompiliert ihn im Speicher und führt ihn sofort aus. Für die überwiegende Mehrheit der Benutzer sind diese beiden Schritte unsichtbar und gleichzeitig. Es gibt jedoch Mechanismen, um diese Phasen zu trennen, wenn Ihre Anforderungen dies erfordern.


4 Methoden zum Speichern und Ausführen von vorkompiliertem Code

Experten zufolge sind dies die vier wichtigsten Techniken zum Speichern von SAS©-Code, damit er später ausgeführt werden kann, wodurch der Kompilierungsaufwand zur Laufzeit reduziert wird.

1. SAS©-Makros (Stored Compiled Macros)

Dies ist die gängigste Methode. Anstatt Ihr Makro in jeder Sitzung neu zu kompilieren, können Sie Stored Compiled Macro Programs verwenden.

  • Das Prinzip: Sie kompilieren das Makro einmal und speichern es in einem permanenten SAS©-Katalog.

  • Der Vorteil: Beim Aufruf überspringt SAS© den Kompilierungsschritt und führt die Anweisungen direkt aus. Dies wird über die Optionen MSTORED und SASMSTORE gesteuert.

2. Kompilierte DATA-Step-Programme

Nur wenige wissen es, aber man kann einen DATA-Schritt kompilieren und zur späteren Ausführung speichern.

  • Das Prinzip: Verwenden Sie die Anweisung DATA mit der Speicheroption, um eine Ansicht oder ein gespeichertes Programm zu erstellen.

  • Die Verwendung: Dies ermöglicht die Ausführung komplexer Datenverarbeitungslogik, ohne den ursprünglichen Quellcode neu lesen zu müssen.

3. SAS© Stored Processes (Gespeicherte Prozesse)

Wenn Sie mit der SAS© Enterprise Intelligence-Plattform arbeiten, ist dies die moderne Lösung.

  • Das Prinzip: Der Code wird in einem zentralen Repository (Metadaten-Repository) gespeichert.

  • Die Ausführung: Der Code wird bei Bedarf von Client-Anwendungen (Excel, Web, EG) aufgerufen. Obwohl der Code vom Server oft spontan neu kompiliert wird, ermöglicht die Architektur eine zentralisierte Verwaltung, die die Bereitstellung von ausführbaren Dateien imitiert.

4. SAS© Enterprise Guide (EG)-Projekte

Obwohl es sich nicht um „Kompilierung“ im engeren Sinne handelt, fixiert ein EG-Projekt die Logik Ihrer Aufgaben. Einmal entwickelt, kann der Prozessablauf unverändert wiederholt werden, wodurch die Abfolge ohne manuelle Eingriffe oder Neuentwicklung automatisiert wird.

Hinweis für Mainframe-Benutzer: Auf z/OS-Systemen gab es historisch einen spezifischen SAS©/C-Compiler, aber dies bleibt ein sehr spezieller Anwendungsfall.


Die wahre Frage: Sollten Sie es tun?

Nur weil Sie es können, heißt das nicht, dass Sie es sollten.

Warum zögern?

  1. Minimaler Leistungszugewinn: Auf modernen Maschinen ist die Kompilierungszeit von SAS©-Code oft vernachlässigbar im Vergleich zur Verarbeitungszeit von E/A (Lesen/Schreiben von Daten). Vorkompilierung bringt Ihnen nur wenige Millisekunden Gewinn, es sei denn, Ihr Code ist gigantisch.

  2. Komplexität der Wartung: Die Verwaltung von Katalogen kompilierter Makros oder gespeicherter Programme erhöht die Komplexität. Wenn Sie den Quellcode verlieren, können Sie das Ergebnis nicht einfach „dekompilieren“, um es zu ändern.

  3. Risiken unerwarteter Ergebnisse: Die unsachgemäße Verwendung gespeicherter Makros kann zu schwer debugbaren Verhaltensweisen führen, wenn sich die Ausführungsumgebung von der Kompilierungsumgebung unterscheidet.

Wann ist es nützlich?

Der Vorkompilierungsansatz wird nur empfohlen für:

  • Anspruchsvolle und kritische Anwendungen.

  • Umgebungen, in denen die Antwortzeit entscheidend ist und jede Millisekunde CPU zählt.

  • Den Schutz von geistigem Eigentum (um den Quellcode zu verbergen und gleichzeitig dessen Ausführung zu ermöglichen).