Zeichen innerhalb eines String sortieren
Verfasst von E_Berger am 14 Oktober, 2009 - 07:25
Hallo zusammen,
ich suche eine Funktion, die mir die Zeichen innerhalb einer Variable sortiert.
Beispiel:
aus
name="PETER ARM"
soll werden:
name2="AEEMPRRT"
So eine Funktion sollte es doch geben, ich finde sie aber gerade nicht.
Kann mir jemand helfen ?
Gruß
E.Berger
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Eigene Funktion schreiben
Hallo Herr Berger,
so eine Funktion gibt es nicht, man kann sie sich allerdings selber schreiben.
PROC FCMP OUTLIB = Work.Funcs.Characters;
FUNCTION SortInCharacterVar(Source $)$1023 ;
LENGTH
Dest $ 1024 /* Maximale Länge in FCMP */
T1 T2 $1
;
DEST = SUBSTR(Source,1,1023); /* Um um einen Fehler in Substr
in FCMP herumzuprogrammieren */
Laenge = LENGTH(Dest);
DO i = 1 TO Laenge-1;
T1=SUBSTR(Dest, i, 1);
DO j = Laenge TO i + 1 BY -1;
T2=SUBSTR(Dest, j, 1);
If T1 > T2 THEN DO;
SUBSTR(Dest, i, 1) = T2;
SUBSTR(Dest, j, 1) = T1;
T1=T2;
END;
END;
END;
RETURN(Dest);
ENDSUB;
RUN;
/* Dem System die Funktion bekanntmachen */
OPTIONS CMPLIB = Work.Funcs;
/* Dann Einsetzen, wie jede Funktion */
DATA _NULL_;
LENGTH Name Name2 $20;
Name="PETER ARM";
Name2=Strip(SortInCharacterVar(Name));
PUT name2=;
RUN;
/* führt zu
Name2=AEEMPRRT
*/
Schöne Grüße
Jan
Eigenen Funktionen schreiben
Hallo Herr Heuer,
habe es fast befüchtet, dass man da was selber programmieren muss. Die Prozedur FCMP war mir bis dato unbekannt. Wieder was Neues kennengelernt, das man sicherlich öfter nutzen kann. Danke für die Anegeung .