SAS - eine mächtige Programmiersprache aus dem Statistikbereich

Links - Snippets

Snippets:


Meldungen ausgeben - Löschen - Daten auskoppeln - Daten einlesen - Verzeichnis anlegen - Zugriff auf DB - Dialogboxen mit SAS - Perlskript von SAS aus starten - Perlskript als Pipe öffnen
  1. Alle 10.000 Zeilen eine Meldung ausgeben damit man sieht, wie weit der Schritt ist.


    meld1.sas
    if mod(_N_,10000)=0 then put "Schritt xyz: " _N_ commax15.;

    Falls man weiß, wieviele Datensätze bearbeitet werden (diese Information erhält man etwa mit nobs=ende hinter der Datenquelle (set blablubb nobs=ende)), kann man diese Information mit ausgeben:

    meld2.sas
    if mod(_N_,10000)=0 then put "Schritt xyz: " _N_ commax15. " von " ende commax15.;


  2. Löschen von nicht mehr benötigten Datasets


    loesch1.sas
    proc sql;
        drop table LIBRARY.DATASET;
    quit;

    Oder so:
    loesch2.sas
    proc datasets lib=LIBRARY nolist;
        delete DATASET;
    quit;

    Oder so:
    loesch3.sas
    %include '...\pfad\pfad\pfad\m_loesch_ds.sas';
    %m_loesch_ds(LIBRARY, DATASET);

    Mit
    m_loesch_ds.sas
    %macro m_loesch_ds(lbname, dsname);
        %if %sysfunc(exist(&lbname..&dsname.)) %then
            %do;
                proc datasets lib=&lbname. nolist;
                    delete &dsname.;
                quit;
                %put Der Datensatz "&dsname." wurde gelöscht.;
            %end;
        %else
            %put Der Datensatz "&dsname." existiert nicht.;
    %mend;


  3. Daten in Tab-getrennte Textdatei auskoppeln


    auskoppeln.sas
    options missing=" ";
    data _null_;
        file "...\pfad\pfad\pfad\meine_text_datei.txt" ls = 1000;
        set MEINELIB.MEINDATASET;
        put variable1 '09'x
            variable2 '09'x
            variable3
            ;
    run;
    options missing=".";


  4. Daten aus Tab-getrennte Textdatei einlesen


    einlesen.sas
    data NEUESDATASET;
        format var1      15.
               var2    $254.
               var3    $500.
               var4       1.
               ;
        informat var1      15.
                 var2    $254.
                 var3    $500.
                 var4       1.
                 ;
        infile "...\pfad\pfad\pfad\meine_text_datei.txt"
               linesize = 1000
               dlm      = '09'x
               dsd
               missover
               ;
        input var1
              var2      $
              var3      $
              var4
              ;
    run;
    


  5. Verzeichnis anlegen


    mkdir.sas
    options noxwait;
    x "mkdir ...\pfad\pfad\pfad";
    options xwait;


  6. Zugriff mit SAS auf Oracle DB


    oracle.sas
    libname x oracle path=DBNAME user=USERNAME preserve_tab_names=no;


  7. Dialogboxen aus SAS heraus öffnen


    dialog.sas
    filename sascbtbl 'pfad/zu/der/Datei/winapi.txt';
    data _null_;
           length rc
               hWnd
               style 8
               text
               caption $200
               ;
        hWnd    = 0;
        text    = "ANZUZEIGENDER TEXT";
        caption = 'ANZUZEIGENDER TITEL';
        style   = 0*4096 + 0*256 + 2*16 + 0*1;
            /* -------------------------------------
                  0020 = Question mark icon + OK
               -------------------------------------     */
    
            /* -------------------------------------
             Buttons: OK                 =  0
                      OK/Cancel          =  1
                      Abort/Retry/Ignore =  2
                      Yes/No/Cancel      =  3
                      Yes/No             =  4
                      Retry/Cancel       =  5
             Icons:   Stop Sign          = 10
                      Question Mark      = 20
                      Exclamation Mark   = 30
                      Informing Sign     = 40
             Return:  Error state        =  0
                      OK                 =  1
                      Cancel             =  2
                      Abort              =  3
                      Retry              =  4
                      Ignore             =  5
                      Yes                =  6
                      No                 =  7
             -------------------------------------     */
    
        rc = modulen('*e', 'MessageBoxA', hWnd, text, caption, style);
        if (rc=0) then put 'ERROR: Cannot create message box';
        put rc=;
    run;

    Die oben angezogene Datei pfad/zu/der/Datei/winapi.txt sieht so aus:

    winapi.txt
    routine MessageBoxA
       module=USER32
       returns=SHORT
       stackpop=CALLED
       minarg=4
       maxarg=4
       ;
    arg 1 input format=pib4. byvalue;
    arg 2 input format=$cstr200.;
    arg 3 input format=$cstr200.;
    arg 4 input format=pib4. byvalue;


  8. Perlprogramm aus SAS heraus starten:


    perl1.sas
    x "perl \\pfad\zum\perlskript.pl PARAMETER1 PARAMETER2 ...";


  9. Perlprogramm als Pipe öffnen und einlesen:

    Hierbei muss das Perlprogramm das Ergebnis nach STDOUT schreiben.


    perl2.sas
    filename rb pipe "perl \\pfad\zum\perlskript.pl PARAMETER1 ..." console=min;
    
    data RUECKLES;
        format var1      15.
               var2    $254.
               var3    $500.
               ;
        informat var1      15.
                 var2    $254.
                 var3    $500.
                 ;
        infile rb
               linesize = 1000
               dlm      = '09'x
               dsd
               missover
               ;
        input var1
              var2      $
              var3      $
              ;
    run;


zu meiner Homepage zu meiner Homepage

zur Startseite des Servers zur Startseite des Servers

Impressum

Valid CSS! Valid XHTML 1.0!

TOP Zum Seitenanfang

zuletzt geändert: