2016-05-26 10 views
0

Ich muss einen Datensatz als Textdatei für einen alten Batch-Prozess exportieren, der wahrscheinlich unter Unix läuft. Die Datei hat eine Spalte und alle Felder sind numerisch.SAS-Dataset im Excel-Format "Text (MS-DOS)" exportieren

Ich möchte eine Textdatei erstellen, die die Art und Weise emuliert Excel erstellt Text (MS-DOS) Dateien:

Speichert eine Arbeitsmappe als getabulatortrennte Textdatei für die Verwendung auf dem MS-DOS Betriebssystem und stellt sicher, dass Tabulatorzeichen, Zeilenumbrüche und andere Zeichen richtig interpretiert werden. Speichert nur das aktive Blatt .

Was ist der beste Weg, dies zu erreichen?

+0

MS-DOS ?! Sie meinen das Microsoft Betriebssystem, das vor 21 Jahren durch Windows 95 ersetzt wurde? – MSalters

+0

Ich glaube, dass ein alter Stapelprozess diese Datei aufnimmt. Tut mir leid, ich weiß nicht, ob es msdos ist, wahrscheinlich Unix. –

+0

Ich brauche nur die Datei auf die gleiche Weise wie Excel exportieren würde –

Antwort

2

DOS uses encoding page 437, die eine sehr begrenzte Anzahl von Zeichen ist. Wenn Sie keine Sonderzeichen haben, sind Sie gut. Wenn Sie Sonderzeichen haben, müssen Sie die Codierungsseite in 437 ändern, um Zeichenkompatibilität zu gewährleisten. Dies kann als dataset Option durchgeführt werden.

SAS internally names this pcoem437. Sie können den Unterschied in der Ausgabe sehen, indem Sie die Option encoding= ändern.

data have; 
    input var$; 
    datalines; 
ElNiño 
ElNino 
; 
run; 

proc export data=have(encoding=pcoem437) 
      file='C:\Directory\want.txt' 
      dbms=tab 
      replace; 
run; 
+0

Was ist mit Wagenrücklauf und Zeilenvorschub? Welcher sollte benutzt werden? –

+0

In Hex wird Wagenrücklauf '0D' sein, und Zeilenvorschub wird '0A' sein. Sie sollten die Kodierungsoption verwenden, die mit Ihrem System kompatibel ist. –

1

Wenn Sie nur eine Spalte haben, spielt das Trennzeichen keine Rolle. Sie können die Datei sehr einfach mit einem DATA-Schritt schreiben.

data _null_; 
    set have ; 
    file 'myfile.txt' ; 
    put VAR1 ; 
run; 

Wenn Sie eine zusätzliche Zeile mit dem Spaltennamen hinzufügen möchten, fügen Sie diese vor der PUT-Anweisung hinzu.

if _n_=1 then put 'VAR1'; 

Wenn Sie besorgt sind, ob Sie für das Ende der Linie LF oder CRLF müssen erzeugen Sie, dass mit der TERMSTR= Option auf der FILE-Anweisung steuern kann.