Formate aus einer Variablen zuweisen

Liebe REDSCOPE.org user,

Ich habe folgendes Problem. In einem Datensatz ist pro Zeile ein Wert und ein gewünschtes Format gespeichert. Daraus soll ein Datensatz erzeugt werden, der den Wert in einer Stringvariablen mit dem gewünschten Format abspeichert. Leider akzeptiert die Funktion PUT() keine Variable als Format. Wie muss ich vorgehen?

Beispieldatensatz:

/* Eingangsdatensatz */
DATA test;
value =
1.03591; _format = 12.2; OUTPUT;
value =
334.1;   _format = 12.;  OUTPUT;
value =
546.91;  _format = 12.;  OUTPUT;
value =
3.4;     _format = 12.2; OUTPUT;
value =
0.03591; _format = 12.4; OUTPUT;
RUN;

/* Fehler: eine Variable kann nicht als Format benutzt werden. */
DATA _put_num;
  
SET test;
  value_c = PUT(value, _format);
RUN;

Bei der Verwendung von PUTC

Bei der Verwendung von PUTC oder PUTN kann das Format in einer Variablen stehen. Dazu muss man aber wissen ob die Variable numerisch ist, dann PUTN oder vom Typ Character ist, dann PUTC. Die Syntax ist die gleiche wie bei PUT.

Gruß
Klaus Landwich

Vielen Dank

Danke für die schnelle Beantwortung. Die beiden Funktionen habe ich glatt übersehen. Also hier nochmal die richtige Lösung.

/* Eingangsdatensatz */
DATA test;
value =
1.03591; _format = "12.2"; OUTPUT;
value =
334.1;   _format = "12.";  OUTPUT;
value =
546.91;  _format = "12.";  OUTPUT;
value =
3.4;     _format = "12.2"; OUTPUT;
value =
0.03591; _format = "12.4"; OUTPUT;
RUN;

/* Je nachdem, ob das Format numerisch oder
alphanumerisch ist, muss entweder PUTN oder PUTC verwendet werden. */
DATA _put_num;
  
SET test;
  value_c = PUTN(value, _format);
RUN;
/*******************************************************************/
/*Beispiel mit PUTC */
/* Format erstellen */
PROC FORMAT;
  
VALUE $sex
    
"1" = "male"
    
"2" = "female";
RUN;

/* Eingangsdatensatz */
DATA test2;
value =
"1"; _format = "sex."; OUTPUT;
value =
"1"; _format = "sex."; OUTPUT;
value =
"2"; _format = "sex."; OUTPUT;
value =
"1"; _format = "sex."; OUTPUT;
RUN;

/* Umwandlung mit PUTC */
DATA _put_num2;
  
SET test2;
  value_c = PUTC (value, _format);
RUN;
<\sascode>