El siguiente código funciona a partir de una secuencia de comandos, y es básicamente 3 formas diferentes de cambiar una fórmula de columna.
Cuando ejecuto el mismo código desde una barra de herramientas JMP personalizada, se bloqueará en :: dt: helloworld << set formula ("5");
¿Por qué es esto? ¿No debería ser el comportamiento idéntico?
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");
Hay un par de problemas. La primera es que necesita aislar su código para que no se vea afectado por otros scripts, etc. que se están ejecutando.
Nombres predeterminados aquí (1);
hace eso.
En segundo lugar, estaba haciendo referencias incompletas y probablemente no estaba viendo errores cuando los estaba ejecutando, porque sus valores estaban en el espacio de la memoria global y no los había eliminado.
Tercero, en el contexto de su código, la declaración
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>
no tendría una referencia, ya que OBJ no se había definido en su código.
El siguiente código funciona en mi sistema
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Amplitude 100.jmp" );
dt << New Column( "helloworld", character, set each value( "5" ) );
Caption( "Hello World" );