Hallo, ich habe in einem Haupt-JSL-Skript ein „Namen standardmäßig hier(1)“, das einige spätere „Include“ in einigen Downstream-JSL-Skripten durchführt. Einige dieser Downstream-JSLs sind nur zur Anzeige verschlüsselt.
Wenn ich das JSL-Hauptskript ausführe, tritt folgende Fehlermeldung auf:
„Name ungelöst: {13} beim Zugriff oder bei der Auswertung von ' ' , " " /*###*/"
Ist das ein Fehler? (JMP 14.3.0)
Warum sollte es bei einem verschlüsselten Skript aufhören? Ich möchte auf keinen Fall die anderen JSL-Skripte entschlüsseln, weil ich diesen Befehl verwende. Gibt es sonst vielleicht eine Möglichkeit, dies zu umgehen? Ich habe Hunderte von Globals und hoffte daher, für jedes einzelne einen bestimmten Namensraum zu vermeiden.
Danke! DJ
Dies ist nur eine Vermutung, aber es könnte sein, dass Sie 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 Gültigkeitsbereich aus
Variable Name = 1;
Zu
Here:Variable Name = 1;
Das Scoping-Problem kann zu einer großväterlichen Scoping-Syntax führen.
Für eine JSL, für die zuvor nicht der Names Default to Here(1) angegeben war, waren die folgenden Zuweisungsanweisungen gleichwertig
Y=1;
::Y=9;
Show(Y, ::Y);
.Die Ergebnisse dieser JSL sind:
Y = 9;
Y = 9;
Allerdings mit der angegebenen Namensvorgabe 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;
Mein ganzes Geschwafel zu diesem Thema führt mich zu der Vermutung, dass irgendwo Ihr verschlüsselter Code, ein Doppelpunkt, der „::“-Bereich angegeben wurde und dann darauf verwiesen wurde, ohne dass der Doppelpunkt angegeben wurde. Wenn „Names Default to Here(1)“ angegeben ist, erzeugt die Referenz ohne den Doppelpunkt einen Variablennamen, den JSL zuvor noch nicht gesehen hat, und löst einen Ausnahmefehler aus.