Der folgende Code funktioniert von einem Skript-Fenster aus. Es gibt drei Möglichkeiten, eine Spaltenformel zu ändern.
Wenn ich denselben Code von einer benutzerdefinierten JMP-Symbolleiste aus ausführe, stürzt er ab :: dt: helloworld << set formula ("5");
warum ist das? Sollte das Verhalten nicht identisch sein?
open("$SAMPLE_DATA/Amplitude 100.jmp");
dt = datatable("amplitude 100");
obj = new column("helloworld");
:helloworld << set formula("3");
dt :helloworld << set formula ("4");
::dt:helloworld << set formula ("5");
caption("Hello World");
Es gibt ein paar Probleme. Der erste ist, dass Sie Ihren Code von den Auswirkungen anderer Skripte usw. abgrenzen müssen. das werden ausgeführt.
Namensvorgabe für Hier (1);
macht das.
Zweitens haben Sie unvollständige Verweise gemacht, und Sie haben wahrscheinlich beim Ausführen keine Fehler festgestellt, da sich deren Werte im globalen Speicherbereich befanden und Sie sie nicht beseitigt hatten.
Drittens im Zusammenhang mit Ihrem Code die Anweisung
obj <SPAN class="token operator">=</SPAN> <SPAN class="token function">new column</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"helloworld"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
hätte keine Referenz, da OBJ nicht in Ihrem Code definiert wurde.
Der folgende Code funktioniert auf meinem System
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Amplitude 100.jmp" );
dt << New Column( "helloworld", character, set each value( "5" ) );
Caption( "Hello World" );