Join Now

Juletip #13.2 Simpel tekstfletning med prxchange

by SAS Employee JesperMusaeus on ‎12-13-2014 06:19 AM (264 Views)

Nogle fletter julehjerter andre fletter tekst. Her er en simpel metode til det sidste.

Metoden herunder er brugt i et projekt til generering af SMS-beskeder med dynamisk indhold.

I en tekst er der placeret ’#’ omkring feltnavne hvor man vil indsætte dynamisk indhold fra en tabel.

Koden benytter prxchange-funktionen, som er en af de funktioner hvor sas har implementeret perl regular expressions.

***Simpel tekstfletter med prxchange;

data _null_;

    length tekst $1000;

  tekst="Hej #NAME#, Tilykke med de #AGE# år. Mvh SAS"; ***"Master"-tekst;

  kode=prxchange('s/#(\w+)#/"||strip(vvalue($1))||"/',-1, quote(strip(tekst)));***Danner prxchange udtryk;

     call symput("kode", kode); ***Lægger udtryk i makrovariabel til brug i næste datastep;

     put kode=;

run;

data _null_;

  set sashelp.class(obs=3);

    length tekstflettet $1000;
  tekstflettet=&
kode.;

    put tekstflettet;

run;

LOG:

1 ***Simpel tekstfletter med prxchange;

2 data _null_;

3   length tekst $1000;

4   tekst="Hej #NAME#, Tilykke med de #AGE# år. Mvh SAS";

5   kode=prxchange('s/#(\w+)#/"||strip(vvalue($1))||"/', -1,quote(strip(tekst)));

6   call symput("kode", kode);

7   put kode=;

8 run;

kode="Hej "||strip(vvalue(NAME))||",Tilykke med de "||strip(vvalue(AGE))||" år. Mvh SAS"

NOTE: DATA statement used (Total process time):

      real time           0.01 seconds

      cpu time            0.01 seconds

9

10   data _null_;

11     set sashelp.class(obs=3);

12     length tekstflettet $1000;

13     tekstflettet=&kode.;

14     put tekstflettet;

15   run;

Hej Alfred, Tilykke med de 14 år. Mvh SAS

Hej Alice, Tilykke med de 13 år. Mvh SAS

Hej Barbara, Tilykke med de 13 år. Mvh SAS

NOTE: There were 3 observations read from the data set SASHELP.CLASS.

NOTE: DATA statement used (Total process time):

      real time           0.01 seconds

      cpu time            0.01 seconds

Læs mere om perl regular expressions her: http://www2.sas.com/proceedings/sugi29/265-29.pdf

Og her: http://support.sas.com/rnd/base/datastep/perl_regexp/regexp-tip-sheet.pdf