Hola, tengo un "nombre predeterminado aquí (1)" en un script JSL principal que luego "incluye" en algunos scripts JSL posteriores.Algunos de estos JSL descendentes están encriptados solo para visualización.
Cuando ejecuto el script JSL principal, se produce un error:
"Nombre sin resolver: {13} en acceso o evaluación de '', "" /*###*/"
¿Es esto un error? (JMP 14.3.0)
¿Por qué debería cerrarse en un script encriptado?Ciertamente no quiero descifrar los otros scripts JSL debido al uso de este comando.De lo contrario, ¿hay alguna forma de evitar esto quizás?Tengo cientos de globales, así que esperaba evitar un espacio de nombre específico para cada uno.
¡gracias!DJ
Esto es solo una suposición, pero lo que puede estar encontrando podría ser un error de alcance.cuando uno usa
Names Default To Here( 1 );
JMP crea literalmente un espacio de nombres llamado Aquí y convierte todas las variables sin ámbito de
Variable Name = 1;
a
Here:Variable Name = 1;
El problema del alcance puede surgir con una sintaxis de alcance protegida.
JSL que anteriormente no tenía especificado Nombres predeterminados aquí (1), las siguientes instrucciones de asignación eran equivalentes
Y=1;
::Y=9;
Show(Y, ::Y);
.El resultado de este JSL es:
Y = 9;
Y = 9;
Sin embargo, con los nombres predeterminados aquí (1) especificados
Names Default To Here( 1 );
Y = 1;
::Y = 9;
Show( Y, ::Y, here:Y );
da los resultados
Y = 1;
Y = 9;
here:Y = 1;
Todas mis divagaciones sobre este tema me llevan a suponer que en algún lugar está su código encriptado, dos puntos dobles, se ha especificado el alcance "::" y luego se hace referencia sin especificar los dos puntos dobles.Con Names Default to Here(1) especificado, la referencia sin los dos puntos dobles producirá un nombre de variable que JSL no ha visto antes y generará un error de excepción.