Hallo, ich habe einen "Namen standardmäßig hier (1)" in einem Haupt-JSL-Skript, das später einige nachgelagerte JSL-Skripte "einschließt".Einige dieser Downstream-JSLs sind nur zur Ansicht verschlüsselt.
Wenn ich das Haupt-JSL-Skript ausführe, tritt ein Fehler auf:
"Name nicht aufgelöst: {13} im Zugriff oder Auswertung von '' , "" /*###*/"
Ist das ein Fehler? (JMP 14.3.0)
Warum sollte es mit einem verschlüsselten Skript beendet werden?Ich möchte auf keinen Fall die anderen JSL-Skripte entschlüsseln, weil ich diesen Befehl verwende.Sonst, gibt es vielleicht eine Möglichkeit, dies zu umgehen?Ich habe Hunderte von Globals, also hatte ich gehofft, einen bestimmten Namensraum für jeden zu vermeiden.
Danke!DJ
Dies ist nur eine Vermutung, aber Sie könnten auf einen Scoping-Fehler stoßen.Wenn man verwendet
Names Default To Here( 1 );
JMP erstellt buchstäblich einen Namensraum namens Here und konvertiert alle Variablen ohne Bereich
Variable Name = 1;
zu
Here:Variable Name = 1;
Das Scoping-Problem kann mit einer grandfathered Scoping-Syntax aufwarten.
JSL, für die zuvor Names Default to Here(1) nicht angegeben war, waren die folgenden Zuweisungsanweisungen äquivalent
Y=1;
::Y=9;
Show(Y, ::Y);
.Die Ergebnisse dieser JSL sind:
Y = 9;
Y = 9;
Allerdings mit der Angabe Names Default to Here(1).
Names Default To Here( 1 );
Y = 1;
::Y = 9;
Show( Y, ::Y, here:Y );
gibt die Ergebnisse
Y = 1;
Y = 9;
here:Y = 1;
All mein Herumschweifen zu diesem Thema führt mich zu der Vermutung, dass irgendwo Ihr verschlüsselter Code, ein doppelter Doppelpunkt, "::" Scoping angegeben und dann darauf verwiesen wurde, ohne dass der doppelte Doppelpunkt angegeben wurde.Wenn Names Default to Here(1) angegeben ist, erzeugt die Referenz ohne den doppelten Doppelpunkt einen Variablennamen, den JSL zuvor noch nicht gesehen hat, und löst einen Ausnahmefehler aus.