在SAS宏中执行while循环

时间:2016-10-06 15:29:16

标签: sas sas-macro

这是我的代码:

        private byte[] UploadValues(string method, NameValueCollection data)
        {
            var client = new WebClient();

            try
            {
                ServicePointManager.ServerCertificateValidationCallback +=
                    ServerCertificateValidation;

                returnrclient.UploadValues(uri, method, parameters);

            }
            finally
            {
                ServicePointManager.ServerCertificateValidationCallback -=
                    ServerCertificateValidation;
            }
        }

        private bool ServerCertificateValidation(object sender,
            X509Certificate certificate, X509Chain chain,
            SslPolicyErrors sslPolicyErrors)
        {
            var request = sender as HttpWebRequest;
            if (request != null && request.Address.Host.Equals(
                this.uri.Host, StringComparison.OrdinalIgnoreCase))
                return true;
            return false;
        }

基本上,我想在变量x小于var1的值时创建一个变量yy;

但输出并没有给我变量yy。

任何人都能帮助我吗?

THX!

1 个答案:

答案 0 :(得分:0)

你让%dodo感到困惑。

%do如果你想一遍又一遍地重复一段代码,就像你多次输入一样。在打开数据集之前必须知道继续/结束%do循环的参数 - 它们必须是文本,或者它们必须是宏变量中包含的文本(而不是一个中的数据)。

do是您想迭代数据步变量。继续/结束do循环的参数可以是数据集中的数据,也可以是文本,也可以是数据集变量中的值或存储在宏变量中的文本。

所以,你想要:

%let var1=C;
data want;
    x= 3;
    counter=0;
    do &var1. = 10 to 1 by -1 while ( &var1. > x);
      yy = 1/(1+x);
      counter=counter+1;
    end;

run;

我不知道你为什么要在这里循环。您可以在没有任何循环的情况下确定此答案。