Wie kann ich eine data_table von einer FUNCTION zurückgeben?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Skript
Hallo,
Ich bin ein relativ neuer Benutzer der JMP/SAS-Skriptsprache und nur mit anderen „Standard“-Sprachen wie C, VBA, PASCAL usw. vertraut … also liegt meine Frage vielleicht auf der Hand …
Ich kann nicht herausfinden, wie ich das TABLE-Ergebnis einer Funktion sauber zurückgeben kann.
Wenn ich die Option DEFAULT LOCAL nicht verwende, kehrt die Tabelle natürlich zurück, wenn ich den Namen der Tabelle in der FUNCTION verwende, aber wenn ich versuche, so etwas zu tun
d_result= MyFunction(Input1,Input2;Input3); die Variable d_result ist „.“
Ich möchte die Option {Default LOCAL} verwenden, um sauber zu programmieren und Probleme mit LOCAL/GLOBAL-Variablen zu vermeiden, daher möchte ich die Tabelle ausgeben.
Im Allgemeinen verstehe ich nicht, wie man die zurückgegebenen Ergebnisse einer FUNKTION angibt.
Ich habe es mit RETURN() in den Eingabeparametern versucht, aber es scheint nur mit einem einfachen Parameter (Zahl oder Zeichenfolge) zu funktionieren, nicht mit einer Tabelle (siehe Seite 212 der JSL-Syntaxreferenz):
Funktion({Argumente}, <{lokale Variablen}>, )>, Skript)
Vielen Dank für Ihre Hilfe !!!
Beste grüße.
Alex
Betreff: Wie kann ich eine data_table von einer FUNCTION zurückgeben?Hallo PMRoz,
vielen Dank für die klaren Erklärungen.
Ich wünschte, das wäre in den Handbüchern irgendwie klar erklärt 
Beste grüße,
Alex
Betreff: Wie kann ich eine data_table von einer FUNCTION zurückgeben?Der Tisch bleibt offen.
Die Variable dt , das innerhalb der Funktion verwendet wird, ist lokal und hat keinen Wert mehr.
In meinem Beispiel verwendet das aufrufende Programm die Variable one_dt um die Ergebnisse der Funktion zu erhalten.Daher die Variable one_dt ist für das aufrufende Programm sichtbar.
Wenn Sie ein Argument liefern aktuelle Datentabelle [dh aktuelle Datentabelle (dt) ] wird die aktuelle Datentabelle auf das gesetzt, worauf sie verweist dt und gibt „.“ zurück.
Betreff: Wie kann ich eine data_table von einer FUNCTION zurückgeben?Hallo
PMroz,
Vielen Dank für die schnelle Antwort!
Es ist zwar etwas speziell, aber man muss sich daran gewöhnen... 
Ich habe es in der Zwischenzeit versucht und als ich eine Zusammenfassung (alle Zeilen) oder eine ähnliche „transparente“ Funktion erstellt habe, funktionierte es auch.
Als ich in der letzten Zeile war, ist mir ein Fehler unterlaufen:
aktuelle Datentabelle (dt);
Jetzt verstehe ich, dass tatsächlich die „Ausgabe“ der aktuellen Datentabelle zurückgegeben wird, die wahrscheinlich „.“ ist, also war das wahrscheinlich mein Fehler. Ist das richtig?
Was passiert mit geöffneten Dateien in lokalen Funktionen, nachdem man zum Hauptprogramm zurückkehrt? Anscheinend bleibt die Tabelle offen, obwohl sie „lokal“ ist?
BR,
Alex
Betreff: Wie kann ich eine data_table von einer FUNCTION zurückgeben?JMP-Funktionen verwenden keine Return-Anweisung.Vielmehr wird der zuletzt ausgewertete Ausdruck zurückgegeben.Hier ist ein einfaches Beispiel:
//------------------------------------------------ ----------------
/*
Funktionsname: get_table
Beschreibung: Gibt einen vom Benutzer ausgewählten Tabellenbezeichner zurück
Argumente:
(keiner)
*/
get_table = Funktion ( {} ,
{ Standardmäßig lokal } ,
dt = offen () ;
dt ;
) ;
// teste es aus
one_dt = get_table () ;
Technisch gesehen ist die Zeile der Funktion mit nur „dt;“ ist überflüssig.Ich habe es als Beispiel belassen.