Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Date 提示:日期,%Sysfunc(年(&;myvar.);_Date_Variables_Macros_Sas_Prompt - Fatal编程技术网

Date 提示:日期,%Sysfunc(年(&;myvar.);

Date 提示:日期,%Sysfunc(年(&;myvar.);,date,variables,macros,sas,prompt,Date,Variables,Macros,Sas,Prompt,我有一个SAS EG 7.1计划,每月生成报告。旧的流程非常手工,其中要求用户使用当前月末(Date9.)更新宏变量(&date.) 我试图通过提示用户选择当前的月末日期,使程序动态化。 提示正在工作,并输出date9。格式 然后我尝试使用宏变量&Prompt\u date。在%sysfunc中: %let Date = '&prompt_date.'; %let year = %sysfunc(year(&prompt_date.)); %let m

我有一个SAS EG 7.1计划,每月生成报告。旧的流程非常手工,其中要求用户使用当前月末(Date9.)更新宏变量(&date.)

我试图通过提示用户选择当前的月末日期,使程序动态化。 提示正在工作,并输出date9。格式

然后我尝试使用宏变量&Prompt\u date。在%sysfunc中:

    %let Date = '&prompt_date.'; 
    %let year = %sysfunc(year(&prompt_date.)); 
    %let month = %sysfunc(month(&prompt_date.));
执行时,我会收到以下错误消息:

(一)

(二)

我尝试为月份和年份创建一个单独的字段,格式为YYMMN6.,输入提示日期(&U)。然后放入(,n.)使值为数字-仍然为零

有没有人遇到过类似的问题? 关于如何得到我想要的东西有什么建议吗

谢谢

您有:

%let Date = '&prompt_date.'; 
%let year = %sysfunc(year(&prompt_date.)); 
%let month = %sysfunc(month(&prompt_date.));
两个问题

  • 您可以指定日期,但不使用它(&D)
  • 提示日期为DDMonyyyyy(date9.)。SAS将把它看作一个字符串。你需要引号和一个
    d
    来确定日期
  • 试一试


    创建提示时,选择了什么提示类型?您可能选择了日期、日期范围或时间戳。您选择了什么方法进行填充?PROMPT_DATE的实际值是多少?添加
    %put&prompt\u日期到您的程序,让SAS将其写入日志。您好!它输出:26%的输入和提示日期。;2018年3月31日,与之前的手动输入格式相同(即2018年2月28日)。提示值为日期,提示指定必须输入的值。他们在提示时从“日历”弹出窗口中进行选择。因此它不是有效的日期值。但可以通过添加引号和尾随字母d将其转换为日期文字(如硬编码示例)<代码>“&prompt_date”d
    正在运行,似乎正在工作!会让你知道的,谢谢!你好!成功了!非常感谢。RE:Date,用作报表表中字段(datadate)的输入。再次感谢你!!伟大的如果它解决了你的问题,请接受答案如果希望月份在一月到九月之间有一个前导零,则使用Z格式生成宏变量<代码>%let month=%sysfunc(月(“&prompt_date.”d),Z2)
        %let Date = '&prompt_date.'; 
        %let year = %sysfunc(year(&prompt_date.)); 
        %let month = %sysfunc(month(&prompt_date.));
    
        35         %let year = %sysfunc(year(&prompt_date.));
        ERROR: Argument 1 to function YEAR referenced by the %SYSFUNC or 
        %QSYSFUNC macro function is not a number.
        ERROR: Invalid arguments detected in %SYSCALL, %SYSFUNC, or %QSYSFUNC 
        argument list.  Execution of %SYSCALL statement or %SYSFUNC 
               or %QSYSFUNC function reference is terminated.
        36         %let month = %sysfunc(month(&prompt_date.));
        ERROR: Argument 1 to function MONTH referenced by the %SYSFUNC or 
        %QSYSFUNC macro function is not a number.
        ERROR: Invalid arguments detected in %SYSCALL, %SYSFUNC, or %QSYSFUNC 
        argument list.  Execution of %SYSCALL statement or %SYSFUNC 
               or %QSYSFUNC function reference is terminated. 
    
        118         lib.great_table_loc_._.
                                        _
                                        22
                                        200
        ERROR 22-322: Syntax error, expecting one of the following: a name, ;, 
        (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, 
              INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, 
        RIGHT, UNION, WHERE.  
    
        ERROR 200-322: The symbol is not recognized and will be ignored.
    
    %let Date = '&prompt_date.'; 
    %let year = %sysfunc(year(&prompt_date.)); 
    %let month = %sysfunc(month(&prompt_date.));
    
    %let year = %sysfunc(year("&prompt_date."d)); 
    %let month = %sysfunc(month("&prompt_date."d));