Zeichen innerhalb eines String sortieren

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

Eigene Funktion schreiben

Hallo Herr Berger,

so eine Funktion gibt es nicht, man kann sie sich allerdings selber schreiben.

/* Schreiben der Funktion */

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 .