JMP vs. SAS<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我是一个长期的SAS用户,他使用宏变量作为路径,文件名,数组列等程序中重复使用的字符串的占位符。
JSL是否具有类似的功能?
非常感谢几个例子。
回复:JMP vs. SAS也。请注意,您可以将代码块放入表达式中(可以将其放入外部文件中,如果需要,可以将其包含在内)。然后你可以使用'Substitute()':
名称默认为此处 ( 1 ) ;
代码块 = EXPR ( 打印 ( “宏变量是” || 烧焦 ( 一个% ))) ;
EVAL ( 替代 ( NameExpr ( 代码块 ) , EXPR ( 一个% ) , 10 )) ;
EVAL ( 替代 ( NameExpr ( 代码块 ) , EXPR ( 一个% ) , 20 )) ;
回复:JMP vs. SAS这是一个更简单的示例,它更直接地解决了字符串占位符的概念。 所以没有直接等效的SAS宏变量,但你可以用JSL变量完成同样的事情,用“||”做你自己的连接连接运算符(“+”不用于在JMP中连接字符串):
path =“c:\ users \ public \ temp \”;
dt1 = Open(path ||“bc_mcv.jmp”);
dt2 = Open(path ||“airports_by_state.jmp”);
希望这可以帮助。
埃里克
回复:JMP vs. SAS谢谢,伊恩。这指向了我正确的方向。
我正在以互补的方式使用JMP和SAS。
回复:JMP vs. SASSAS语言和JSL在语法,结构和意图上有很大差异(反映了SAS系统和JMP的非常不同的性质)。
可能最接近的并行是能够在JSL中定义函数,传递的参数类似于宏变量的值。一个例子可能是:
NamesDefaultToHere ( 1 ) ;
//在其中给出一个表和一列,进行分配并返回对它的引用
//结果对象
doDistribution =
功能 ({ 于表 , inCol } , { 默认本地 } ,
thisDistribution = 于表 << 分配 ( 柱 ( inCol ))
) ;
//打开一张桌子
DT = 打开 ( “$ SAMPLE_DATA / Big Class.jmp” ) ;
//进行分发并关闭它
myDistribution = doDistribution ( DT ,柱 ( DT , “高度” )) ;
等待 ( 3 ) ;
报告 ( myDistribution ) << 关闭窗口 ;
等待 ( 3 ) ;
//制作两个发行版并以相反的顺序关闭它们
DIST1 = doDistribution ( DT ,柱 ( DT , “重量” )) ;
等待 ( 3 ) ;
DIST2 = doDistribution ( DT ,柱 ( DT , “高度” )) ;
等待 ( 3 ) ;
报告 ( DIST2 ) << 关闭窗口 ;
等待 ( 3 ) ;
报告 ( DIST1 ) << 关闭窗口 ;
鉴于该主题的标题,我觉得有义务也提到SAS和JMP没有任何意义相反。事实上,当用例要求时,JMP和SAS可以很好地互操作。