Die besten Scripting-TippsHallo Community,
Ich habe mit dem Skriptkurs begonnen, an dessen Erstellung Monica Beals mitgewirkt hat: Einführung in die JMP-Skriptsprache - JMP User Community
Ich lerne noch, aber ich habe eine grundlegende Frage
Welchen Skriptbefehl/Tipp sollte Ihrer Meinung nach jeder kennen oder hätten Sie gern schon früher gekannt?
Beispiel: Es ist gut, die Pickfile-Funktion zu kennen, da Sie damit jede beliebige Datei auswählen können, für die Sie einen Satz von Befehlen ausführen möchten.
Betreff: Die besten Scripting-TippsDrei Dinge, die ich gerne früher gewusst hätte:
- Open() ermöglicht es einem Skriptersteller häufig, das Pick File()-Skripting zu überspringen
- Alt+Doppelklick auf eine beliebige Funktion im Skriptfenster bringt Sie direkt zum Skriptindex für diese Funktion
- Das Skripten der Berichtsebene ist einfacher als es auf den ersten Blick scheint, insbesondere durch die kürzliche Ergänzung des Abschnitts „Box Path“ im Eigenschaften-Viewer:
-

Betreff: Die besten Scripting-TippsIch füge 3 zu @Jed_Campbells drei hinzu:
- Unter keinen Umständen sollte Current Data Table verwendet werden, um die aktuelle Datentabelle festzulegen. Auf Tabellen sollte explizit über eine Variablenreferenz zugegriffen werden, die beim Erstellen der Tabelle instanziiert wird. Viele Skriptersteller haben Schwierigkeiten, den Überblick darüber zu behalten, welche Tabelle die aktuelle Tabelle ist, insbesondere wenn viele Joins , Stacks oder Subsets vorhanden sind. Darüber hinaus hat sich die Tabelle, die als aktuelle Tabelle festgelegt wird, im Laufe der Jahre je nach Vorgang geändert. Ich habe gesehen, dass dies wahrscheinlich mehr Skriptfehler verursacht hat als alles andere.
- Machen Sie keine Scherze mit SendToReport . Seine Funktionen sind nicht gut dokumentiert und es gibt (fast?) immer eine Meldung, die die Aufgabe einfacher erledigt und Ihren Code lesbarer macht.
- Erfahren Sie, wie Sie die Ausdrucksbehandlung ( Substitute , Eval , Expr und Name Expr ) verwenden. @joseph_morgan ( hier ) und @drewfoglia ( hier und hier ) haben Discovery-Material, das dieses Konzept hervorragend erklärt. Ich habe zwei Rezepte im JSL Cookbook, die es hier und hier ansprechen. Es ist ein schwieriges Thema, das man kaum klar verstehen kann. Wenn Sie es jedoch einmal beherrschen, werden Sie Dinge tun können, die anders nicht möglich sind. Wenn es mit der Ausdrucksbehandlung nicht geht, geht es in JSL nicht.
Betreff: Die besten Scripting-TippsIch möchte nichts abwerten, was bereits gesagt wurde, aber Punkt 3 von @DonMcCormack ist das Wichtigste, was Sie als Nächstes lernen können. Die Ausdrucksbehandlung ist unglaublich leistungsstark und bietet Ihnen Zugriff auf atemberaubende Funktionen in JSL. Sobald Sie erkennen, dass alles in JSL ein Ausdruck ist, beginnen Sie, Ihre Skripte völlig anders zu betrachten. Ich würde als Nächstes die Materialien von Joseph und Drew studieren und ihre Beispiele durcharbeiten.
Danach sind meine persönlichen Favoriten:
- Die neuen For Each()-Schleifen (und ihre Verwandten Filter Each() und For Each Row()). Sofern Sie kein Skript benötigen, das auf wirklich alten JMP-Versionen ausgeführt werden kann, würde ich einfach vergessen, dass die alte For()-Schleife existiert.
- Bezogen auf 1 ist dies die Kurzform der Indexfunktion: d. h. 1::10::2 würde einen Vektor erstellen, der bei 1 beginnt und in Zweierschritten bis 10 zählt (würde Ihnen 1,3,5,7,9 geben), den Sie in der For Each()-Schleife verwenden könnten.
- Das assoziative Array und wie man damit arbeitet (einschließlich seiner Behandlung durch die For Each()-Schleife).
- Lernen Sie, für alles Mögliche Matrizen anstelle von Datentabellen zu verwenden (und wie Sie sie mit der For Each()-Schleife verwenden).
Betreff: Die besten Scripting-TippsDa Sie neu sind:
- Semikolons. Wenn in JMP (oder SAS) etwas kaputt geht, schauen Sie zuerst hier nach. Einfache Lösung und Kästchen zum Abhaken, und daher häufig der Übeltäter. Als nächstes Klammern und eckige Klammern. [1b. Das Protokoll kann diese Bandwurmsätze oft nicht richtig darstellen. Sehen Sie sich normalerweise auch die vorherigen Codezeilen an.]
- Verwenden Sie Print() großzügig, während Sie Ihr Skript erstellen/testen. „Ist diese Variable der Wert, den ich in dieser Phase der Schleife erwarte?“: Print(„Varname: ” || varname). „In welcher Phase hängt der Prozess (z. B. Endlosschleife)?“ Print(„Schritt 3 abgeschlossen, vor Schritt 4“). [2b: Wenn das Projekt voraussichtlich weiter wächst, erstellen Sie eine Variable, die Sie als Indikatorflagge verwenden können (0/1 oder T/F), und verwenden Sie If()-Anweisungen, um Ihre Print()-Anweisungen zu aktivieren, wenn Sie debuggen möchten.]
- Fangen Sie wie bei DoE klein an. Wenn Sie beispielsweise 100 Elemente durch eine For Each()-Schleife laufen lassen möchten, testen Sie die Schleife nur mit den ersten 2-4. Sparen Sie sich das Warten und mögliche Abstürze.
Mike hat auch eine Blogserie, in der er seine Gedanken hier weiter ausführt: https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting-There-are/ba-p/276580
Bezüglich der Eval/Expr-Funktionen habe ich noch nicht genug JSL geschrieben, um mich damit wohlzufühlen. Aber nichts in meiner Programmiererfahrung war so weltbewegend wie die Möglichkeit, & (und &&& … schöne Erinnerungen!) in der Makrofunktion von SAS zu verwenden, und bisher habe ich Eval/Expr als das Gegenstück zu JSL betrachtet. (Kontext: Den Großteil meiner Karriere vor JMP habe ich mit SAS-Programmierung verbracht, aber ich habe mich auch ein bisschen damit beschäftigt).
Betreff: Die besten Scripting-TippsIhr Punkt Nr. 1 erinnert mich an einen tollen Trick, den jeder kennen sollte: Strg-[ wählt alles in einer Klammer aus. Das ist sehr nützlich zum Debuggen, zur Vollständigkeitsprüfung und insbesondere für Codeänderungen (Kopieren/Einfügen/Ersetzen).