End Stamement无法在SAS中使用

时间:2018-02-09 00:58:31

标签: sas

你能在set语句中只在SAS中使用END St​​amement吗?例如......为什么这不起作用?

filename FS '/folders/myfolders/list4.txt';
data steward;
infile FS dlm = ',' END = EOF;
input Name $ Age Gender $;
if EOF = 1;
run;

2 个答案:

答案 0 :(得分:1)

INPUTSET语句读取超过文件末尾时,大多数SAS数据步骤实际停止。

我怀疑您的输入文件是空的,或者没有足够的数据来满足您的INPUT语句。

答案 1 :(得分:0)

您不需要检查EOF或IF,因为数据步骤一旦到达最后一条记录就会自动终止。

解决方案:

DATA WORK.input1;
    LENGTH
        name             $ 5
        age                8
        gender           $ 1 ;
    FORMAT
        name             $CHAR5.
        age              BEST2.
        gender           $CHAR1. ;
    INFORMAT
        name             $CHAR5.
        age              BEST2.
        gender           $CHAR1. ;
    INFILE 'E:\saswork\Input.txt'
        LRECL=256
        FIRSTOBS=2 /*I am skipping first row, as it containts column names*/
        ENCODING="WLATIN1"
        DLM='2c'x /* this is "," delimiter; I am using windows*/
        MISSOVER
        DSD ;
    INPUT
        name             : $CHAR5.
        age              : ?? BEST2.
        gender           : $CHAR1. ;
    put _all_; 
RUN;
/*Contents of the Input.txt*/
/*name, age, gender*/
/*jack,32,M*/
/*John,45,M*/
/*Sally,38,F*/

输出:

name=jack age=32 gender=M _ERROR_=0 _N_=1
name=John age=45 gender=M _ERROR_=0 _N_=2
name=Sally age=38 gender=F _ERROR_=0 _N_=3