infile语句不能以批处理模式SAS工作

时间:2015-05-06 09:34:57

标签: sas etl

我的SAS基础ETL程序有一个奇怪的问题。该程序在SAS base的程序编辑器中运行完美,但它在批处理模式下中止。我目前正在调试整个代码,我遇到了以下问题。我使用infile语句从某个位置读取txt文件。

当我在程序编辑器模式下运行程序时,infile语句运行完美,数据集读取正确数量的数据。但是当程序以批处理模式运行时,似乎完全忽略了infile语句。数据集什么都不读,并且在0次观察时保持为空。

以下是包含日志的代码:

DATA odd.mailables_&monthcode.;
length id_account 8
       language_id $2
       zip $4;
infile &file_name. delimiter='09'x firstobs=2 dsd pad missover end=last; 
load_date_time=datetime();
if _n_=1 then
  do;
    call symputx ('start_load_date_time', load_date_time);
  end; 
format load_date_time datetime20.;
monthcode="&monthcode.";
input id_account
      language_id $
      zip $;
if last then
  do;
    call symputx ('end_load_date_time', load_date_time);
  end;
RUN;

proc sort data=odd.mailables_&monthcode.;
by id_account;
run;  

这是后来的日志:

SYMBOLGEN:  Macro variable FILE_NAME resolves to "D:\mailables.txt"
"D:\mailables.txt"
SYMBOLGEN:  Macro variable MONTHCODE resolves to 20150506
SYMBOLGEN:  Macro variable FILE_NAME resolves to "D:\mailables.txt"
SYMBOLGEN:  Macro variable MONTHCODE resolves to 20150506

NOTE: The data set ODD.MAILABLES_20150506 has 0 observations and 5 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      user cpu time       0.00 seconds
      system cpu time     0.00 seconds
      Memory                            141k
      OS Memory                         7864k
      Timestamp            8/05/2015  14:32:50


SYMBOLGEN:  Macro variable MONTHCODE resolves to 20150506

NOTE: PROCEDURE SORT used (Total process time):
      real time           0.00 seconds
      user cpu time       0.00 seconds
      system cpu time     0.00 seconds
      Memory                            33k
      OS Memory                         7864k
      Timestamp            8/05/2015  14:32:50

批处理模式和程序编辑器模式在读取代码的方式或需要使用的语法方面是否有区别?

感谢您提供的信息

1 个答案:

答案 0 :(得分:0)

标准调试技术是将代码减少到可能仍然导致错误的最小的最简单的部分。尝试运行它,看看程序编辑器和批处理之间的输出是否有差异。

data _null_;
  infile 'D:\mailables.txt';
  input;
  put _infile_;
run;

(抱歉,只允许回答,不予置评。)