So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einHallo zusammen,
Ich versuche, einen Teil eines Skripts basierend auf der Bedingung einer Spalte auszuführen. Wenn diese Bedingung fehlschlägt, sollte ein anderer Teil des Skripts ausgeführt oder ein anderes Skript einbezogen werden.
Es scheint sehr einfach zu sein, aber ich bin dazu nicht in der Lage. Ich habe zwei Ansätze verfolgt: die Funktion „include“ zum Aufrufen eines Skripts und die Funktion „Expr“ zum Aufrufen eines Teils des Codes. Keiner funktioniert. Gibt es hier Hilfe?
1. Ansatz -
dt = Data Table( "Data" ) << If ( PRODUCT == "A", include("C:\....\Script1.jsl"), include("C:\....\Script2.jsl"), );
Dies funktioniert nicht, solange beide Skripte 1 und 2 unabhängig voneinander arbeiten.
Der 2. Ansatz ähnelt dem 1., verwendet jedoch „Expr“, wie in beschrieben: Abschnitts- oder Segmentierungscode in JSL
Vielen Dank,
Automatisierung und SkripterstellungBetreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einDanke Jarmo,
Ich habe das Benutzen gelernt
Names Default To Here(1);
von Nelson ( @txnelson ) vor ein paar Jahren und ich benutze es. Ich werde mir die Richtlinie noch einmal ansehen.
Danke Jungs.
Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einPassiert von Zeit zu Zeit. Wenn Sie es noch nicht getan haben, empfehle ich Ihnen, alle Ihre Skripte mit zu beginnen
Names Default To Here(1);
Es bietet Ihnen einen gewissen Schutz vor Namespace-Kollisionen. Dieser Link ist ziemlich hilfreich bezüglich Names Default To Here(1) (es gibt mehrere Seiten) Skripthandbuch > Programmiermethoden > Erweitertes Scoping und Namespaces (jmp.com)
Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einHallo @txnelson Und @jthi ,
Eigentlich funktionieren beide Ihrer Codes einwandfrei (und tatsächlich funktioniert auch mein eigener Weg). Das Problem lag bei der JMP-Sitzung.Nach einigen weiteren Versuchen stürzte mein JMP ab und ich gab auf. Heute, nach dem Neustart des JMP, funktioniert derselbe Code einwandfrei. Ich glaube, dass es sich bei der JMP-Sitzung möglicherweise um dasselbe Speicher-/Cache-/Pfad-/Variablenproblem handelt. Nach dem Neustart funktionierte es einwandfrei.
Ich bin Ihnen beiden sehr dankbar für Ihre Unterstützung.
Reards, HSS
Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einIch habe diesen Code ohne Fehler ausgeführt
Names Default To Here( 1 );
b = 1;
If( b == 1,
Include( "path to one of the includes" ),
Include( "path to the second include" )
);
Der erste Include-Code war
a=1;
show(a);
Der zweite Include-Code war:
a=2;
show(a);
und es hat wie erwartet funktioniert
Als @jthi hat vorgeschlagen, dass Sie wahrscheinlich weitere Informationen zu den Includes bereitstellen müssen.
Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einIch denke, wir benötigen möglicherweise etwas mehr Informationen darüber, was Sie tun möchten und was die „externen“ Teile sind. Include() und Ausdrücke sollten beide einwandfrei funktionieren, wenn Sie nur Teile eines Codes ausführen.
Names Default To Here(1);
exprA = Expr(Show("A"));
exprB = Expr(Show("B"));
PRODUCT = "B";
If(PRODUCT == "A",
exprA;
,
exprB;
);Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einHallo Nelson,
Das habe ich auch versucht. Das funktioniert auch nicht.
Betreff: So führen Sie einen Teil eines Skripts aus oder fügen ein Skript basierend auf einer Bedingung einIch glaube, das Problem, das Sie haben, besteht darin, dass Sie versuchen, die If()-Anweisung an die Datentabelle zu übergeben.Was funktionieren sollte ist
dt = Data Table( "Data" );
If ( PRODUCT == "A", include("C:\....\Script1.jsl"), include("C:\....\Script2.jsl"), );