DEFINE FUNCTION CEILING(VALUE/D20) CEILING/D20 = INT((VALUE / 10) + .95) * 10; END -* Now use it TABLE FILE EMPDATA PRINT COMPUTE BASENUM/D9 = ABS(RDNORM('D9') * 100); COMPUTE NEWVAL/D9 = CEILING(BASENUM); BY FIRSTNAME NOPRINT ON TABLE SET PAGE NOLEAD ON TABLE SET HTMLCSS ON ON TABLE SET STYLE * GRID=OFF, SIZE=11, FONT=ARIAL, $ ENDSTYLE END
In FOCUS since 1986 | WebFOCUS Server 8.2.01M, thru 8.2.07 on Windows Svr 2008 R2 | ||
WebFOCUS App Studio 8.2.06 standalone on Windows 10 |
DEFINE FUNCTION CEILING(Number/D12.2, Significance/D12.2) -* -* Mimics Excel's CEILING function: -* CEILING(number,significance) -* Returns number rounded up, away from zero, to the nearest multiple of -* significance. For example, if you want to avoid using pennies in your -* prices and your product is priced at $4.42, use the formula -* =CEILING(4.42,0.05) to round prices up to the nearest nickel. -* -* The Excel function requires the two argument to be of like sign. This WebFocus function definition -* relaxes that requirement: The arguments may be of same or opposite sign, with a result equal to the first -* argument, rounded away from zero to an integral multiple of the second argument. -* Multiple /D12 = INT( Number / Significance ) ; Adjust /D12.2 = ( Multiple * Significance NE Number ) * ( ABS (Number) / Number ); CEILING /D12.2 = IF (Significance EQ 0) THEN Number ELSE (Multiple + Adjust) * Significance ; END
-DEFAULT &SIGNIF= 10 TABLE FILE EMPDATA PRINT FIRSTNAME COMPUTE BASENUM/D20.4 = IF LAST FIRSTNAME EQ ' ' THEN 0 ELSE ABS(RDNORM('D9') * 100) - 100; COMPUTE NEWVAL/D20.4 = CEILING(BASENUM,&SIGNIF); BY TOTAL HIGHEST NEWVAL SKIP-LINE NOPRINT BY TOTAL HIGHEST BASENUM NOPRINT ON TABLE SET PAGE NOLEAD ON TABLE SET HTMLCSS ON ON TABLE SET STYLE * GRID=OFF, SIZE=11, FONT=ARIAL, $ ENDSTYLE END
quote:Originally posted by Tony A:
Cathy,
No dedicated function to my knowledge but you can always grow your own -DEFINE FUNCTION CEILING(VALUE/D20) CEILING/D20 = INT((VALUE / 10) + .95) * 10; END -* Now use it TABLE FILE EMPDATA PRINT COMPUTE BASENUM/D9 = ABS(RDNORM('D9') * 100); COMPUTE NEWVAL/D9 = CEILING(BASENUM); BY FIRSTNAME NOPRINT ON TABLE SET PAGE NOLEAD ON TABLE SET HTMLCSS ON ON TABLE SET STYLE * GRID=OFF, SIZE=11, FONT=ARIAL, $ ENDSTYLE END
T
-*CEILING(2.99) = 3 -*CEILING(2.01) = 3 DEFINE FUNCTION CEILING(VALUE/D20) CEILING/D20 = INT(VALUE + 0.99); END
DEFINE FUNCTION CEILING(Number/D12.2, Significance/D12.2) -* CEILING(81.46, 10) = 90 -* CEILING(-20.46, 10) = -20 Multiple /D12 = INT( Number / Significance ) ; CEILING /D12.2 = IF (Significance EQ 0) THEN Number ELSE IF ( Number ) LT 0 THEN Multiple * Significance ELSE IF ( Multiple * Significance EQ Number ) THEN Number ELSE (Multiple + 1) * Significance ; END DEFINE FUNCTION FLOOR(Number/D12.2, Significance/D12.2) -* FLOOR(82, 10) = 80 -* FLOOR(-22, 10) = -30 Multiple /D12 = INT( Number / Significance ) ; FLOOR /D12.2 = IF (Significance EQ 0) THEN Number ELSE IF ( Multiple * Significance EQ Number ) THEN Number ELSE IF ( Number ) LT 0 THEN (Multiple - 1)* Significance ELSE Multiple * Significance ; END -DEFAULT &SIGNIF= 10 TABLE FILE EMPDATA PRINT FIRSTNAME COMPUTE BASENUM/D20.4 = IF LAST FIRSTNAME EQ ' ' THEN 0 ELSE ABS(RDNORM('D9') * 100) - 100; COMPUTE CEILING_VAL/D20.4 = CEILING(BASENUM,&SIGNIF); COMPUTE FLOOR_VAL/D20.4 = FLOOR(BASENUM,&SIGNIF); BY TOTAL HIGHEST CEILING_VAL SKIP-LINE NOPRINT BY TOTAL HIGHEST BASENUM NOPRINT ON TABLE SET PAGE NOLEAD ON TABLE SET HTMLCSS ON ON TABLE SET STYLE * GRID=OFF, SIZE=11, FONT=ARIAL, $ ENDSTYLE END