2016-04-21 11 views
0

Ich bin verwirrt darüber, was DSD tatsächlich in Bezug auf "Bewegen des Zeigers" und das Einlesen von Daten tut. Um besser zu erklären, schauen Sie sich den folgenden Code:SAS: DLM und DSD?

data one; 
    infile cards dlm=',' TRUNCOVER ; /*using dlm','*/ 
    input cust_id date ddmmyy10. A $ B $ C $; 
    cards; 
    1,10/01/2015,5000,dr 
    ; 
run; 

data two; 
    infile cards dsd TRUNCOVER ; 
    input cust_id date ddmmyy10. A $ B $ C $; 
    cards; 
    1,10/01/2015,5000,dr 
    ; 
run; 

Der Datensatz ein enthält Werte für A und B von 5000 und dr aber der Datensatz zwei enthält Werte von A als fehlend während B und C 5000 und dr. Ich verstehe nicht, warum die DSD A zu vermisst.

Danke!

Antwort

0

Ihr Problem ist nicht DLM oder DSD ist es "DATE ​​DDMMYY10." das ist eine INFORMATTED-Eingabe, die nicht mit einer Eingabe mit Begrenzern in irgendeiner Form DSD oder NO kompatibel ist.

Sie benötigen eine INFORMAT-Anweisung oder: informat modified.

Datum: DDMMYY10.

+0

Warum ist die Hilfe im dsd-Format aber egal, wenn dsd nicht da ist? Ich verstehe einfach nicht, warum ein Fall A und B ausfüllt und der andere überspringt es und füllt stattdessen B und C aus. – kyro1021

+0

Wenn Sie nach dem Lesen einer bestimmten Variablen herausfinden möchten, wo sich der Spaltenzeiger befindet, verwenden Sie die Option COLUMN = INFILE. Brechen Sie Ihre Eingabeanweisung durch variable Eingabe var @; col1 = c; Eingabe var2 @; col2 = c; etc. –