Come restituire un data_table da una FUNZIONE?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />sceneggiatura
CIAO,
Sono un utente relativamente nuovo del linguaggio di scripting JMP/SAS e sono abituato solo ad altri linguaggi "standard" come C, VBA, PASCAL, ecc... quindi forse la mia domanda è ovvia...
Non riesco a capire come restituire in modo pulito il risultato TABLE da una funzione.
Se non utilizzo l'opzione DEFAULT LOCAL, ovviamente la tabella ritorna se utilizzo il nome della tabella nella FUNZIONE, ma quando provo a fare qualcosa del tipo
d_result= MiaFunzione(Input1,Input2;Input3); la variabile d_result è "."
Vorrei utilizzare l'opzione {Default LOCAL} per programmare in modo pulito ed evitare problemi con le variabili LOCAL/GLOBAL, quindi vorrei visualizzare la tabella.
In generale non capisco come specificare i risultati restituiti di una FUNZIONE.
Ho provato con RETURN() nei parametri di input, ma sembra funzionare solo con un parametro semplice (numero o stringa), non con una tabella (vedere Pagina 212 del riferimento alla sintassi JSL):
Funzione({argomenti}, <{variabili locali}>, )>, script)
Grazie mille per il vostro aiuto !!!
Distinti saluti.
Alex
Ri: Come restituire un data_table da una FUNZIONE?Ciao PMRoz,
grazie mille per le chiare spiegazioni.
Vorrei che questo fosse spiegato chiaramente da qualche parte nei manuali 
Distinti saluti,
Alex
Ri: Come restituire un data_table da una FUNZIONE?Il tavolo resta aperto.
La variabile dt , che viene utilizzato all'interno della funzione, è locale e non ha più un valore.
Nel mio esempio, il programma chiamante utilizza la variabile uno_dt per ottenere i risultati dalla funzione.Quindi la variabile uno_dt è visibile al programma chiamante.
Quando fornisci un argomento a tabella dati corrente [cioè tabella dati corrente(dt) ], imposta la tabella dati corrente su qualunque cosa punti dt e restituisce ".".
Ri: Come restituire un data_table da una FUNZIONE?Ciao
PMroz,
grazie per aver risposto così velocemente!
In effetti è un po' speciale, ma ci si abitua... 
Nel frattempo ho provato e quando ho eseguito un riepilogo (tutte le righe) o una funzione "trasparente" simile, funziona anche.
Ho commesso un errore quando stavo leggendo l'ultima riga:
tabella dati corrente(dt);
Ora capisco che in realtà ciò che viene restituito è l '"output" della tabella dati corrente, che probabilmente è ".", quindi probabilmente è stato un mio errore. È giusto?
Cosa succede con i file aperti nelle funzioni locali dopo essere tornati al programma principale? Apparentemente il tavolo rimane aperto, nonostante sia "locale"?
BR,
Alex
Ri: Come restituire un data_table da una FUNZIONE?Le funzioni JMP non utilizzano un'istruzione return.Piuttosto, l'ultima espressione valutata è quella restituita.Ecco un semplice esempio:
//------------------------------------------------ -------------------------------
/*
Nome funzione: get_table
Descrizione: restituisce un identificatore di tabella selezionato dall'utente
Argomenti:
(nessuno)
*/
get_tabella = Funzione ( {} ,
{ Locale predefinito } ,
dt = aprire () ;
dt ;
) ;
// provalo
uno_dt = get_tabella () ;
Tecnicamente la riga della funzione con solo "dt;" è ridondante.L'ho lasciato come esempio.