2016-03-20 9 views
1

Ich versuche zu verstehen, wie liest sas diesen Code.Wie funktioniert @@ in Eingabeanweisung?

  data scores; 
    input Grade : $1. @@; 
    check='abcdf'; 
    if verify(grade,check)>0 then 
    put @1 'INVALID ' grade=; 
    datalines; 
a b c b c d f a a q a b d d b z 
    ; 
    run; 

Das Protokoll ergibt folgendes Ergebnis:

INVALID Grade=q 
    INVALID Grade=z 

Kann mir jemand sagen, wie funktioniert SAS die Daten lesen und was tut @@ stehen Ist jede Beobachtung des Feldes - Grad für jede Lese "Note ="?

+0

Was haben Sie getan, um es herauszufinden und herauszufinden? Hast du die Dokumentation gelesen? http://support.sas.com/documentation/cdl/en/lestmtsref/68024/HTML/default/viewer.htm#n0oaql83drile0n141pdacojq97s.htm – Tom

Antwort

0
data scores; 
    input Grade : $1.; 

würde nur das erste Zeichen in jeder Zeile lesen. Dies liegt daran, dass nach jeder Ausführung einer input-Anweisung eine neue Zeile aus der Datei in den Eingabepuffer gelesen wird, auch wenn in der aktuellen Zeile noch viel übrig ist.

Mit Grade : $1. @@; weisen Sie SAS an, keine weitere Zeile zu lesen, es sei denn, alle Daten der aktuellen Zeile werden verarbeitet.