Proc Report: Unterschiedlich Nachkommastellen in Zeilen

Da der Proc Tabulate keine unterschiedlichen Formatierungen in den einzelnen Zeilen zulässt, wollte ich es mal mit Proc Report versuchen. Dabei habe ich folgenden Weg gewählt:

PROC REPORT DATA=ENDE;
COLUMN PRBERID BEZ1 PRKATID BEZ2 RF SP01;
DEFINE PRBERID / NOPRINT;
DEFINE BEZ1 / ' ';
DEFINE PRKATID / NOPRINT;
DEFINE BEZ2 / ' ';
DEFINE RF / ' ' ;
DEFINE SP01 / 'REGION' COMPUTED;

SP01 soll nun in Abhängigkeit von PRKATID ohne, mit einer oder mit drei Nachkommastellen angezeigt werden:

COMPUTE SP01;
SP01=RF.SUM;
IF PRKATID='04'
THEN CALL DEFINE(_COL_,"FORMAT","FORMAT=COMMAX7.0");
ELSE IF '91'

Da fehlt noch was, sorry

COMPUTE SP01;
SP01=RF.SUM;
IF PRKATID='04'
THEN CALL DEFINE(_COL_,"FORMAT","FORMAT=COMMAX7.0");
ELSE IF PRKATID<'95'
THEN CALL DEFINE(_COL_,"FORMAT","FORMAT=COMMAX7.3");
ELSE CALL DEFINE(_COL_,"FORMAT","FORMAT=COMMAX7.1");
ENDCOMP;
Fehlerhinweis:
ERROR: Unable to set value for FORMAT in CALL DEFINE.
NOTE: Argument 3 to function DEFINE at line 3 column 12 is invalid.

FORMAT= weglassen

Wenn man im dritten Parameter von CALL DEFINE das "FORMAT=" weglässt, funktioniert es. Wenn ich es richtig rekonstruiere, sieht das Programm dann so aus (mit rudimentären Beispieldaten):

DATA ENDE ;
INPUT PRBERID $ BEZ1 $ PRKATID $ BEZ2 $ RF;
DATALINES;
01 prberbz1 04 prkatbz1 123
02 prberbz2 94 prkatbz2 124
03 prberbz3 95 prkatbz3 125
;

PROC REPORT DATA=ENDE NOWINDOWS;
COLUMN PRBERID BEZ1 PRKATID BEZ2 RF SP01;
DEFINE PRBERID / NOPRINT;
DEFINE BEZ1 / ' ';
DEFINE PRKATID / NOPRINT;
DEFINE BEZ2 / ' ';
DEFINE RF / ' ' ;
DEFINE SP01 / 'REGION' COMPUTED;
COMPUTE SP01;
SP01=RF.SUM;
IF PRKATID='04'
THEN CALL DEFINE(_COL_,"FORMAT","COMMAX7.0");
ELSE IF PRKATID<'95'
THEN CALL DEFINE(_COL_,"FORMAT","COMMAX7.3");
ELSE CALL DEFINE(_COL_,"FORMAT","COMMAX7.1");
ENDCOMP;
RUN;

und das Ergebnis ist dann

                                    REGION
  prberbz1  prkatbz1        123        123
  prberbz2  prkatbz2        124    124,000
  prberbz3  prkatbz3        125      125,0

Funktioniert super, Danke!

Funktioniert super, Danke! Existiert ein ähnlicher "Trick" auch für den Proc Tabulate?