SAS 9.3 Неверные данные для переменной

У меня проблема с моей программой в SAS, работающей правильно. Что-то не так с тем, как я получаю данные из моего файла, и это все портит внутри. Вот часть моего кода испортилась:

    data Stocks;        
    infile 'location of file.txt';
    input   @1  Stock       :   $4.
            @5  PurDate     :   mmddyy10.
            @15 PurPrice    :   dollar6.1
            @21 Number      :   4
            @25 SellDate    :   mmddyy10.
            @35 SellPrice   :   dollar6.1;

            TotalPur = Number * PurPrice;
            TotalSell = Number * SellPrice;
            Profit = TotalSell - TotalPur;
run;

proc print data=Stocks;
    var Stock PurDate PurPrice Number SellDate SellPrice TotalPur TotalSell Profit;
run;

И вот данные, с которыми я работаю:

IBM  5/21/2006 $80.0 10007/20/2006 $88.5
CSCO04/05/2005 $17.5 20009/21/2005 $23.6
MOT 03/01/2004 $14.7 50010/10/2006 $19.9
XMSR04/15/2006 $28.4 20004/15/2006 $12.7
BBY 02/15/2005 $45.2 10009/09/2006 $56.8

Описание данных выглядит следующим образом:

Stock --> Starting Column: 1, Length: 4, Type: Char.
PurDate --> Starting Column: 5, Length: 10, Type: mm/dd/yyyy.
PurPrice --> Starting Column: 15, Length: 6, Type: Dollar Signs and Commas.
Number --> Starting Column: 21, Length: 4, Type: Num.
SellDate --> Starting Column: 25, Length: 10, Type: mm/dd/yyyy.
SellPrice --> Starting Column: 35, Length: 6, Type: Dollar Signs and Commas.

Каждый раз, когда я запускаю его, он говорит мне "ПРИМЕЧАНИЕ: неверные данные для номера" для каждой строки. Это отключает все мои данные (такие как значения даты и еще много чего). Я понимаю, что мои вычисленные переменные не будут работать, потому что они зависят от числовых данных, которые не собираются должным образом. Я был бы признателен за любое направление, которое люди могут дать мне.

2 ответа

Решение

Избавьтесь от всех двоеточий (:).
Затем добавьте точку ( .) После 4 числа, чтобы прояснить, что это информат.
Это должно делать свое дело.

Вы должны четко указать, какие столбцы получить номер. В противном случае он пытается прочитать часть следующей даты.

data Stocks;        
infile x;

input   @1  Stock       :   $4.
        @5  PurDate     :   mmddyy10.
        @16 PurPrice    :   dollar6.1
        @22 Number      22-24
        @25 SellDate    :   mmddyy10.
        @36 SellPrice   :   dollar6.1;

format PurDate SellDate date9.;

        TotalPur = Number * PurPrice;
        TotalSell = Number * SellPrice;
        Profit = TotalSell - TotalPur;
run;
Другие вопросы по тегам