Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带字符串屏蔽的SAS假脱机错误_Sas - Fatal编程技术网

带字符串屏蔽的SAS假脱机错误

带字符串屏蔽的SAS假脱机错误,sas,Sas,这让我快发疯了。我试图屏蔽在网格安装期间使用的SAS计划文件特定行中的所有特殊字符,我已将其拉入数据集中: if test_item = %str(<Machine Id=%'$machine:)&mach_num.%str(' Name=')&mach_name.%str(%'>) then end2 = end1; 谁能告诉我我做错了什么 守则: %macro test(func_var, mach_num, mach_name); data &fun

这让我快发疯了。我试图屏蔽在网格安装期间使用的SAS计划文件特定行中的所有特殊字符,我已将其拉入数据集中:

if test_item = %str(<Machine Id=%'$machine:)&mach_num.%str(' Name=')&mach_name.%str(%'>) then end2 = end1;
谁能告诉我我做错了什么

守则:

%macro test(func_var, mach_num, mach_name);

data &func_var._plan4;
set &func_var._plan3;
by ret_sort;
retain end2;
if test_item = %str(<Machine Id=%'$machine:)&mach_num.%str(' Name=')&mach_name.%str(%'>) then end2 = end1;
else if end1 = 1 then end2 = end1 + end2;
run;

%mend;

%test(test, 2, Metadata Server);

谢谢

我不知道你为什么认为你需要面具。这可能比我想象的要复杂,但对我来说,这似乎是很多不必要的工作

这对我来说就像预期的一样,让我知道如果它对你想要做的事情有效的话

test_item = "<Machine Id='$machine:&mach_num.' Name='&mach_name'>"
test_item=“”
在数据步骤中进行测试:

%let mach_name=Metadata Server;
%let mach_num=2;

data test;
test_item = "<Machine Id='$machine:&mach_num.' Name='&mach_name'>" ;
run;

proc print data=test;
run;
%let mach_name=元数据服务器;
%设马赫数=2;
数据测试;
测试项目=”;
跑
proc打印数据=测试;
跑
结果:

测试项目=


为什么在数据步骤中使用宏逻辑。您需要发布更多的代码,以便我们了解您的日志。另外,您希望代码解析为什么?datastep在宏循环中…我现在将编辑问题以显示循环…显示您正在测试的已实现的完整字符串,以及字符串值的结构构造(不同的嵌入字段、它们的值和它们的值源)(数据集变量和/或宏变量)我现在进行了编辑,以包括问题所需的组件。我的问题是以下内容正在打印到日志中:MPRINT(PLAN_FINDER):如果test_item=“”,则end2=end1;这是否意味着它认为引号是宏变量的一部分?因为如果我通过了该测试,则我得到了我想要的结果…使用宏变量,尽管retain语句没有识别出所讨论的行是从宏输入解析到所需字符串的…我确信我以前在宏循环的数据集中搜索引用的宏变量时遇到过这个问题…代码中没有显示retain,这听起来很简单这是一个单独的问题。对不起,我看到了保留,但我没有看到你在日志中发布的问题。你能澄清问题是什么吗?你应该在日志中看到引号。
test_item = "<Machine Id='$machine:&mach_num.' Name='&mach_name'>"
%let mach_name=Metadata Server;
%let mach_num=2;

data test;
test_item = "<Machine Id='$machine:&mach_num.' Name='&mach_name'>" ;
run;

proc print data=test;
run;