☑ coole neue Funktion
☑ könnte vielen Benutzern helfen!
☑ entfernt etwas, das sich wie ein „Bug“ anfühlt
☐ schön zu haben
☐ niemand braucht es
#myTop10_2024
Kurz:
Lassen Sie den JSL-Editor anzeigen, welche Funktion ihre Argumente auswertet und welche nicht!
Lang:
Was hat Sie zu dieser Wunschliste inspiriert?
Es gibt ein sehr mächtiges Verhalten in JSL, das es neuen Benutzern andererseits schwer macht, ohne Probleme loszulegen:
Einige Funktionen werten ihre Argumente aus, andere nicht.
Dies ist sehr wichtig für Funktionen, die zur Ausdrucksbehandlung verwendet werden.
Es gibt einen wunderbaren Vortrag von @joseph_morgan : „Verwenden von JSL zur Entwicklung effizienter, robuster Anwendungen“ (EU 2018 415) über die Unterschiede, wie man mit ihnen lebt und wie man sie zur Entwicklung effizienter und robuster Anwendungen nutzt.
... mit Beschreibung des damaligen Standes: Jmp 14 [2018]:
Dies steht nicht in der Dokumentation.
Dies habe ich [ ] durch Reverse Engineering des Verhaltens von Funktionen zur Ausdrucksbehandlung herausgefunden.
Vertrauen Sie mir, [ ] wenn Sie dabei nicht an diese Funktionen denken, werden Sie sie nie richtig hinbekommen.
Abgesehen von den hier aufgeführten Funktionen zur Ausdrucksbehandlung gilt für alle Funktionen das Gleiche:
Wenn Sie dabei nicht an diese Funktionen denken, werden Sie sie nie richtig hinbekommen:
Es ist äußerst wichtig zu wissen, ob ein Argument vor dem Funktionsaufruf ausgewertet wird oder nicht.
Funktioniert dieser Code oder nicht?!?
dt = Expr(current data table());
myscript = Expr(get script());
dt << myscript
Leider gibt es für den JSL-Skripter keinen Hinweis darauf, wie sich die Funktion verhält – wertet sie ihre Argumente aus oder nicht?
Vielleicht wertet es nur eines der Argumente aus? Wer weiß?
Der Anwender muss es wissen!
… oder: Reverse Engineering des Verhaltens der jeweiligen Funktionen.
Welche Verbesserung würden Sie gerne sehen?
Bitte implementieren Sie eine Syntaxhervorhebung, um die unterschiedlichen Möglichkeiten anzuzeigen, wie eine Funktion ihre Argumente auswertet – oder nicht auswertet.
Ergänzung: Bitte geben Sie die Unterschiede auch im Scripting-Verzeichnis an.

Im JSL-Editor kann die Hervorhebung über eine Tastenkombination aktiviert/deaktiviert werden.
Der Expr(_x_^2) stellt eine Art Dilemma dar:
Das Argument von Expr() wird nicht ausgewertet. Die beiden Argumente von ^ werden jedoch ausgewertet.
Eventuell reagiert die Hervorhebung auf die Position der Maus bzw. des Cursors - es werden also nur die Argumente unterhalb des Zweiges hervorgehoben, wo sich die Maus bzw. der Cursor gerade befindet.
Warum ist diese Idee wichtig?
Mit der neuen Syntaxhervorhebung führt JMP den Benutzer automatisch durch die Generierung des richtigen Codes.
Der Benutzer muss den Code nicht ausführen, um eine Fehlermeldung zu erhalten - oder das falsche Ergebnis zu sehen
... oder die Funktion zurückzuentwickeln – wie es @JosephMorgan zur Vorbereitung seines Artikels tun musste.
weitere Wünsche von 
Es scheint, dass zwischen
1) Argument wird ausgewertet
2) Argument wird nicht ausgewertet
Es gibt noch eine dritte Variante:
1b) das Argument wird „einmal“ ausgewertet
Funktionen, die sich folgendermaßen verhalten:
- Kopf
- Spalte neu kodieren (1. Argument und Argument des Arguments Zielspalte()
- ... ?
Daher wird eine dritte Farbe erforderlich sein.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Name Expr(As Column("name"));
Head(As Column("name"));
Head(col);
dt << Recode Column(AsColumn("name"),{1},Target Column(col));Bewertet Head seine Argumentation?
https://community.jmp.com/t5/Discussions/Begin-Data-Update/mp/753037/highlight/true#M93483
... mit Beschreibung des damaligen Standes: Jmp 14 [2018]:
Dies steht nicht in der Dokumentation.
Dies habe ich [ ] herausgefunden, indem ich das Verhalten von Funktionen zur Ausdrucksbehandlung rückwärts entwickelt habe.
Vertrauen Sie mir, [ ] wenn Sie dabei nicht an diese Funktionen denken, werden Sie sie nie richtig hinbekommen.
Aktueller Stand, Jmp18 (2024):

Hm, es gibt immer noch einige Probleme, die möglicherweise nicht durch erweiterte Syntaxhervorhebung gelöst werden können ...
z.B
from the printed "2" one can see that JMP actually evaluates the argument of the Set File List setting - 3 times !?!
... but at the end, it complains about the "print" ?!?
... and without the print it won't do anything, neither complain nor open the file from Dateiliste.
folder= "$SAMPLE_DATA/../Import Data/";
file= "Animals.txt";
filelist= Eval List({folder||file});
Multiple File Import(
<<SET folder=""></SET><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="hogi_0-1720645070503.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/66063i6C7744FFCF743C3B/hogi_0-1720645070503.png" role="button" title="hogi_0-1720645070503.png" alt="hogi_0-1720645070503.png" /></span></SPAN></SPAN></SPAN>
<STRONG>TS-00152969:</STRONG>
<EM>Ich habe mit der Entwicklungsabteilung über das Problem gesprochen. Es handelt sich um einen Defekt und ich habe es der Entwicklungsabteilung gemeldet, damit es in einer zukünftigen JMP-Version behoben werden kann.<BR /><BR /> vielen Dank -> behoben in JMP19EA5</EM>