如果那么输出在 UNIX SAS 中不起作用
If then output not working in UNIX SAS
一段代码在 Unix 服务器上不工作,但在 PC SAS 上工作。在 UNIX SAS 中执行时,输出数据集 pc_pf_yes_1 和 pc_pf_no_1 都有 0 个观察值,但没有观察到错误。在 PC SAS 中,代码运行良好并按预期填充数据集。
下面的数据步在一个宏中。
data pc_pf_yes_1 pc_pf_no_1;
set pc_&month._2;
if primary_flag = "Y" then output pc_pf_yes_1;
else if primary_flag = "N" then output pc_pf_no_1;
run;
primary_flag 是一个二进制变量,值为 Y 和 N,存储为长度为 1 的字符串。 &month。是一个宏变量,存储月份名称,供数据选择。
宏中是否存在我不知道的 UNIX SAS 怪癖?
查资料。如果 primary_flag 的值有前导空格或者是小写,那么它将不匹配 'Y' 或 'N'。请注意,尾随空格无关紧要。要查看前导空格,请尝试使用 $QUOTE.
格式打印变量。
如果您从文本文件中读取数据,那么 primary_flag 的末尾可能会有回车符 return,这在普通打印输出中也很难看到。在 PC 上,回车 return 是行尾标记的一部分,但 Unix 仅使用换行符作为行尾标记,因此回车 return 可以在数据中结束。在 INFILE 语句中使用 TERMSTR=CRLF 选项。或者您可以使用 compress(primary_flag,'0d'x)
删除回车 return 字符。要查看这些和其他隐藏字符,您可以使用 $HEX.
格式打印数据。或者在读取文本文件的数据步骤中使用LINE
语句。
一段代码在 Unix 服务器上不工作,但在 PC SAS 上工作。在 UNIX SAS 中执行时,输出数据集 pc_pf_yes_1 和 pc_pf_no_1 都有 0 个观察值,但没有观察到错误。在 PC SAS 中,代码运行良好并按预期填充数据集。
下面的数据步在一个宏中。
data pc_pf_yes_1 pc_pf_no_1;
set pc_&month._2;
if primary_flag = "Y" then output pc_pf_yes_1;
else if primary_flag = "N" then output pc_pf_no_1;
run;
primary_flag 是一个二进制变量,值为 Y 和 N,存储为长度为 1 的字符串。 &month。是一个宏变量,存储月份名称,供数据选择。
宏中是否存在我不知道的 UNIX SAS 怪癖?
查资料。如果 primary_flag 的值有前导空格或者是小写,那么它将不匹配 'Y' 或 'N'。请注意,尾随空格无关紧要。要查看前导空格,请尝试使用 $QUOTE.
格式打印变量。
如果您从文本文件中读取数据,那么 primary_flag 的末尾可能会有回车符 return,这在普通打印输出中也很难看到。在 PC 上,回车 return 是行尾标记的一部分,但 Unix 仅使用换行符作为行尾标记,因此回车 return 可以在数据中结束。在 INFILE 语句中使用 TERMSTR=CRLF 选项。或者您可以使用 compress(primary_flag,'0d'x)
删除回车 return 字符。要查看这些和其他隐藏字符,您可以使用 $HEX.
格式打印数据。或者在读取文本文件的数据步骤中使用LINE
语句。