Script di tabella - completato?Quando si attiva uno script di tabelle da un altro script, come posso verificare se uno script di tabelle è stato completato (senza errori)?
L'aggiunta di una funzione di ritorno non è consentita:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << run Script( "Bivariate" );
dt << New Script(
"test", JSL Quote(
print(1);
return(1);
),As String( 1 ));
dt << New Script(
"test2", JSL Quote(
New Namespace("myScript");
myScript:finished=0;
print(1);
myScript:finished=1;
),
As String( 1 )
);
If( Not( dt << run Script( "test" ) ),
Stop()
);
dt << run Script( "test2" );
If( Not( myScript:finished ),
Stop()
);
Automazione e scriptingRi: Script di tabella - completato?dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << deletescripts( "test" );
dt << New Script(
"test", JSL Quote(
if(test<0,
0 // either this is the last value from the if
,
print("ok");
1 // or this is the last value from the if
); // the if() value is either 0 or 1
), // the script's value is the last statement executed value
As String( 1 )
);
test = 37;
Show( test, dt << run Script( "test" ) ); // "ok",1
test = -42;
Show( test, dt << run Script( "test" ) ); // 0
edit: include() funziona allo stesso modo.
Ri: Script di tabella - completato?Oh, così semplice 
Grazie @Craige_Hales
Ri: Script di tabella - completato?Per le funzioni non c'è differenza tra le due varianti?
testFunc1= Function({},return(1));
testFunc2= Function({},1);
show(testFunc1);
show(testFunc2);Ri: Script di tabella - completato?return(1) ha un grande vantaggio se è annidato all'interno di cicli for e istruzioni if: restituisce la risposta senza bisogno di essere altrimenti posizionato per essere l'ultima espressione valutata. L'implementazione di return(1) in C++ è più lenta rispetto alla semplice conclusione con l'espressione desiderata; noterai su funzioni brevi che vengono chiamate milioni di volte. Quindi nel tuo esempio tendo a scrivere
testFunc2= Function({},
/*return*/ 1
);
con il commento. Oppure usa return(1) se la chiarezza è più importante. Le istruzioni break() e continue() funzionano più o meno allo stesso modo. Usarli per chiarezza o in un modo che li esegua raramente è perfetto.
Ri: Script di tabella - completato?Bella idea con il commento /*return*/.
Ho già cancellato uno dei miei "1" - perché sembrava così inutile;)
Alcuni giorni dopo, senza il collegamento diretto con l'"1" cancellato, è stato abbastanza difficile scoprire cosa non andava...