Hallo zusammen, da sich die letzte Code Kata großer Beliebtheit erfreut hat und ich auch außerhalb des Forums positives Feedback bekommen habe, möchte ich für die kommende Woche eine neue Übungsaufgabe stellen. Hierbei handelt es sich sozusagen um die Mutter aller Code Katas: FizzBuzz Hier nocheinmal die Aufgabenstellung aus der verlinkten Seite: Schreibe ein Programm, dass dir die Zahlen von 1 bis 100 ausgibt – ist die Zahl durch 3 teilbar, gib das Wort Fizz anstatt der Zahl aus ist die Zahl durch 5 teilbar, so gib das Wort Buzz anstatt der Zahl aus ist die sowohl durch 3 als auch durch 5 teilbar, so gib das Wort FizzBuzz aus. An dieser Stelle spannender gestaltet sich die Frage, wie man eine solche Code Kata in SAS modelliert und an die Aufgabenstellung herantritt. Eine Möglichkeit besteht darin sich die Ergebnisse in ein Dataset berechnen zu lassen. Um die Verarbeitungslogik zu prüfen, könnte man anschließend die Daten per PROC COMPARE mit den erwarteten Daten vergleichen. Die Vergleichsdaten können Sie sich per Skript erzeugen. Die Kata könnte man daher versuchen testgetrieben zu entwickeln. Neben der reinen Berechnung kann man allerdings auch seine Fähigkeiten testen, um die Berechnungsfunktionalität möglichst wiederverwendbar in unterschiedlichen SAS Techniken bereitzustellen. Mir kommen hierzu spontan drei Lösungsansätze in den Sinn: Stelle die Berechnungslogik als FCMP Funktion bereit Stelle die Berechnungslogik als SAS Format bereit Stelle die Berechnungslogik als reine Makrolösung bereit Zu 3. stelle ich mir das Ergebnis so vor, dass man den Rückgabewert des Makros direkt verwenden kann, als z.B. sollte data ausgabe; result = "%FizzBuzz(10)"; run; direkt vom Makroprozessor in result = "Buzz"; aufgelöst werden. Alle 3 Varianten habe ich bereits implementiert und werde an dieser Stelle kommenden Freitag meine Lösungen vorstellen. Den Schwierigkeitsgrad dieser recht simplen Aufgabe kann jeder für sich selbst bestimmen. Am einfachsten ist natürlich eine Lösung direkt innerhalb eines Datasteps, die nur die Daten erzeugt. Schwieriger wird die Makrolösung. Wer besonders viel auf seine Programmierfähigkeiten hält, versucht sich an der FCMP- und Format-Lösung. Bis dahin viel Vergnügen beim Tüfteln und selbst ausprobieren auf welche Art und Weise sich das Problem in SAS lösen lässt. Viele Grüße, Andreas Menrath
... View more