Ciao, ho un "nome predefinito qui (1)" in uno script JSL principale che in seguito "include" su alcuni script JSL downstream.Alcuni di questi JSL downstream sono crittografati solo per la visualizzazione.
Quando eseguo lo script JSL principale, si verifica un errore:
"Nome irrisolto: {13} in accesso o valutazione di '' , "" /*###*/"
è un insetto? (JMP 14.3.0)
Perché dovrebbe chiudersi su uno script crittografato?Certamente non voglio decrittografare gli altri script JSL a causa dell'utilizzo di questo comando.Altrimenti, c'è forse un modo per aggirare questo?Ho centinaia di globali, quindi speravo di evitare uno spazio dei nomi specifico per ognuno.
Grazie!DJ
Questa è solo un'ipotesi, ma quello che potresti incontrare potrebbe essere un errore di scoping.Quando si usa
Names Default To Here( 1 );
JMP crea letteralmente uno spazio dei nomi chiamato Here e converte tutte le variabili senza ambito da
Variable Name = 1;
A
Here:Variable Name = 1;
Il problema dell'ambito può venire fuori con una sintassi di scoping precedente.
JSL che in precedenza non aveva specificato Names Default to Here(1), le seguenti istruzioni di assegnazione erano equivalenti
Y=1;
::Y=9;
Show(Y, ::Y);
.Il risultato di questo JSL è:
Y = 9;
Y = 9;
Tuttavia, con i nomi predefiniti a Here(1) specificati
Names Default To Here( 1 );
Y = 1;
::Y = 9;
Show( Y, ::Y, here:Y );
dà i risultati
Y = 1;
Y = 9;
here:Y = 1;
Tutte le mie divagazioni su questo argomento mi portano a supporre che da qualche parte ci sia il tuo codice crittografato, sono stati specificati i doppi due punti, l'ambito "::" e quindi referenziato senza specificare i doppi due punti.Con Names Default to Here(1) specificato, il riferimento senza i doppi due punti produrrà un nome di variabile che JSL non ha mai visto prima e genererà un errore di eccezione.