Ciao,
Ho creato uno script che esegue l'analisi dei dati ma richiede vari input dell'utente per la configurazione. Ci sono casi in cui desidero eseguire un'analisi simile in un secondo momento, ma non è necessario reinserire tutte le impostazioni. Lo script principale può già leggere le variabili esistenti e compilare automaticamente quei campi, quindi se ho un modo per salvare e importare quei valori predefiniti, sarò a posto. Voglio essere in grado di avere più configurazioni diverse e non aver bisogno di modificare lo script stesso per crearne uno nuovo.
Un'idea era quella di salvare una tabella con una colonna di nomi di variabili e una colonna di relativi valori, ma ciò non funzionava bene con diversi tipi di variabili (numeri, stringhe, elenchi).
Un'idea migliore è salvare altri file .jsl che contengono le impostazioni predefinite per diversi casi d'uso in uno spazio dei nomi condiviso, quindi eseguire quello pertinente prima di eseguire lo script principale. Mi piacerebbe essere in grado di creare il file di configurazione dal mio script, anziché crearli manualmente.
Ho trovato questo altro post sul salvataggio di nuovi file jsl. https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
Sembra che dovrei essere in grado di impostare una citazione JSL, quindi sostituire i valori correnti delle variabili in quella citazione, ma NameExpr non funziona per questo. Le stringhe vengono sostituite senza virgolette, gli elenchi appaiono semplicemente come Elenco e i numeri vengono ignorati. C'è un leggero cambiamento che potrebbe far funzionare tutto questo o un modo migliore per raggiungere lo stesso obiettivo?
Grazie!
names default to here (1);
//namespace for the shared variables
If( !Namespace Exists( "TestNS" ), New Namespace( "TestNS" ) );
//the variables I want to save for later
TestNS:a = 5;
TestNS:b = "text";
TestNS:c = {1,2,3,4};
TestNS:d = {"a","b","c","d"};
//set up script to save as JSL
script = JSL Quote(
TestNS:a = a_dv;
TestNS:b = b_dv;
TestNS:c = c_dv;
TestNS:d = d_dv;
);
//substitute the dummy values for the current values... this isn't working
substitute Into (script, expr(a_dv), nameexpr (TestNS:a));
substitute Into (script, expr(b_dv), nameexpr (TestNS:b));
substitute Into (script, expr(c_dv), nameexpr (TestNS:c));
substitute Into (script, expr(d_dv), nameexpr (TestNS:d));
show(script);
//save script for later use
Save Text File( "$downloads\MyScript.jsl", script );