【发布时间】:2019-09-30 19:05:13
【问题描述】:
我有一个在数据步骤(宏之外)中工作的示例代码,但是当我尝试将其转换为宏时它不起作用。我尝试了不同类型的方法来使用 CALL SYMPUTS、SYSFUNC、LET 等。下面列出的代码是我试图将其放入输入 T_Test2 的宏中的代码。
DATA asdhjkl;
SET T_Test2;
IF INPUT(SCAN(COL1, 1, "-"), best.)=0 THEN COL1=SUBSTR(COL1, INDEX(COL1,"-")+1);
string="-00000000000000000000";
DO I = 1 TO 20;
COL1 = TRANWRD(COL1, trim(string), " ");
string = substr(string, 1, length(string)-1);
PUT string;
END;
COL1=COMPRESS(COL1);
RUN;
基本上我要做的是从另一个字符串(例如 65-03)中取出“-0”的子字符串变体并删除 03。但它也更通用,因此如果它是 65-003 和 65- 则它可以工作0003等
【问题讨论】:
-
请添加示例输入数据和预期结果。还要解释你打算如何在宏中使用它。如果您知道这行得通,为什么不让宏生成您已经展示过的相同 SAS 代码?
-
所以你的字符串可以分成由连字符分隔的部分?每个字符串可以有多少个部分?它总是两部分吗?可以将每个单独的部分转换为整数吗?或者它们可以包含非数字字符吗?任何部分都可以超过 15 位吗?