从工具栏运行 JSL下面的代码在脚本窗口中工作,基本上是更改列公式的 3 种不同方法。
当我从自定义 JMP 工具栏运行相同的代码时,它会在 ::dt:helloworld << set formula ("5"); 上崩溃;
为什么是这样?行为不应该是相同的吗?
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");
回复:从工具栏运行 JSL如果它们被确定为错误,它们就会出现。但是,我认为问题在于您的代码无法正常工作,您之前在会话期间定义的全局变量会继续被您的代码找到,从而使您的脚本无法按照您的预期执行。回复:从工具栏运行 JSL您是说日志中没有显示全局错误吗?回复:从工具栏运行 JSL有几个问题。 首先是您需要隔离您的代码不受其他脚本等的影响。正在运行。
名称默认为 Here( 1 );
这样做。
其次,您正在创建不完整的引用,并且您在运行它们时可能没有看到错误,因为它们的值位于全局内存空间中,并且您没有消除它们。
第三,在您的代码上下文中,语句
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>
不会有引用,因为 OBJ 尚未在您的代码中定义。
下面的代码适用于我的系统
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Amplitude 100.jmp" );
dt << New Column( "helloworld", character, set each value( "5" ) );
Caption( "Hello World" );