Ich habe gerade ein Upgrade auf JMP 13 durchgeführt und es hat dazu geführt, dass viele benutzerdefinierte Skripte nicht mehr funktionieren. Ich habe das Problem auf eine Änderung in der Art und Weise zurückgeführt, wie Listen das Ergebnis einer Loc-Abfrage verarbeiten. Der folgende Code gab in JMP 12 früher „pear“ zurück, gibt jetzt aber {„pear“} zurück.
mylist = {"apple","pear"};
mychoice = "pear";
showchoice = mylist[loc(mylist, mychoice)];Ich habe die Syntax list[loc()] verwendet, um durch Kommas getrennte SQL-Zeichenfolgen zum Ausführen gespeicherter Prozeduren zu erstellen.
Das neue Verhalten ist logisch, wenn auch unerwartet. Bedauerlicherweise akzeptiert Loc() immer noch kein Listenargument als Suchwert – das wäre ein vorteilhaftes Ergebnis gewesen. Wie würden Sie empfehlen, um das gewünschte Ergebnis zu erzielen:
- das Loc()-Ergebnis in eine Zahl umwandeln?
- Showchoice durch Showchoice[1] in meinem Code ersetzen?
- andere?
Ich könnte meine Auswahlliste(n) in eine Zeichenfolge umwandeln und { & } & \!" entfernen. Dies wird nicht immer funktionieren, da die Textliste, die ich dem Benutzer zeige, nicht immer mit der Liste übereinstimmt, aus der der entsprechende Schlüssel für die SQL-Anfrage ausgewählt wird.
Dies ähnelt in etwa einer Überanpassung mit Vorhersagemodellen. Ihr Code ist darauf abgestimmt, wie JMP tatsächlich funktioniert, und nicht darauf, wie es funktionieren sollte. Was in Ordnung ist, bis zur nächsten Veröffentlichung 
ich denke, dass Loc() soll eine Matrix nehmen und die Position wahrer Elemente (ungleich Null) zurückgeben.
Enthält( Liste, Element) arbeitet mit Listen und gibt den Speicherort des Zielelements zurück.