As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only. Moving forward, myibi is our community platform to learn, share, and collaborate. We have the same Focal Point forum categories in myibi, so you can continue to have all new conversations there. If you need access to myibi, contact us at myibi@ibi.com and provide your corporate email address, company, and name. Connect to myibi
Focal Point    Focal Point Forums    WebFOCUS/FOCUS Forum on Focal Point     [SOLVED]PERCENTAGE SIGN WITH ALPHA FIELD

 Go Search Notify Tools
 [SOLVED]PERCENTAGE SIGN WITH ALPHA FIELD
Platinum Member
 posted November 23, 2020 01:03 PM
Hello everyone.

I have searched the forum quite a bit, but I have not found a specific example close to what I need.

In my code below, I need to be able to add the percentage sign for alpha_rate_f when there is a value. If the calculation results in a hyphen, I'll leave it as a hyphen.

I've considered different methods. Is concatenation the best and simplest?

``` TABLE FILE FINDATA
PRINT STORE
DEPT_SORT
DEPT_DESC
COSTS
AND COMPUTE COSTS2/A99=STRREP(100,COSTS,1,',',0,'X',99,COSTS2);
COMPUTE COSTS3/D12=ATODBL(COSTS2, '99', COSTS3);
COMPUTE COSTS4/D12=IF DEPT_SORT EQ '9' AND COSTS3 LT '5' THEN '0' ELSE COSTS3;
SALES
AND COMPUTE SALES2/A99=STRREP(100,SALES,1,',',0,'X',99,SALES2);
COMPUTE SALES3/D12=ATODBL(SALES2, '99', SALES3);
COMPUTE SALES4/D12=IF DEPT_SORT EQ '9' AND SALES3 LT '5' THEN '0' ELSE IF DEPT_SORT NE '9' THEN SALES3 ELSE SALES3;
COMPUTE RATE/D12% MISSING ON=IF SALES4 GT 0 AND COSTS4 GT 0 THEN SALES4/COSTS4 *100 ELSE MISSING;

COMPUTE ALPHA_COSTS/A15 = FTOA(COSTS4, '(D12)', ALPHA_COSTS);
COMPUTE ALPHA_COSTS_F/A15=IF COSTS4 EQ '0' THEN '^' ELSE ALPHA_COSTS;

COMPUTE ALPHA_SALES/A15 = FTOA(SALES4, '(D12)', ALPHA_SALES);
COMPUTE ALPHA_SALES_F/A15=IF SALES4 EQ '0' THEN '^' ELSE ALPHA_SALES;

COMPUTE ALPHA_RATE/A15 = FTOA(RATE, '(D12)', ALPHA_RATE);
COMPUTE ALPHA_RATE_F/A15=IF RATE EQ '0' THEN '-' ELSE ALPHA_RATE;

HOLD AS FINRPT
END
-RUN
-*-EXIT
```

This message has been edited. Last edited by: JulieA,

WebFocus 8.2.04
WebFocus 8.2.04

 Posts: 191 | Registered: September 18, 2015 IP
Virtuoso
 posted November 23, 2020 01:09 PM Hide Post
Since your result is an alpha, not a lot of choices

```COMPUTE ALPHA_RATE_F/A16V=IF RATE EQ '0' THEN '-' ELSE ALPHA_RATE || '%';
```

WF versions : Prod 8.2.04M gen 33, Dev 8.2.04M gen 33, OS : Windows, DB : MSSQL, Outputs : HTML, Excel, PDF
In Focus since 2007

 Posts: 2410 | Location: Montreal Area, Qc, CA | Registered: September 25, 2013 IP
Platinum Member
 posted November 23, 2020 02:05 PM Hide Post
Thank you.

That is exactly what I needed!

WebFocus 8.2.04
WebFocus 8.2.04

 Posts: 191 | Registered: September 18, 2015 IP
Expert
 posted November 24, 2020 03:43 PM Hide Post
FYI,

You could always have used FPRINT, check it out in the function documentation

Waz...

 Prod: WebFOCUS 7.6.10/8.1.04 Upgrade: WebFOCUS 8.2.07 OS: Linux Outputs: HTML, PDF, Excel, PPT In Focus since 1984 Pity the lost knowledge of an old programmer!

 Posts: 6349 | Location: 33°49'23.0"S, 151°11'41.0"E | Registered: October 31, 2006 IP
Platinum Member
 posted November 24, 2020 04:17 PM Hide Post
`COMPUTE ALPHA_RATE_FPRINT/A16V=IF RATE EQ 0 THEN '-' ELSE FPRINT(RATE,'D12%','A16V');`

WebFocus 8.201M, Windows, App Studio

 Posts: 227 | Location: Lincoln Nebraska | Registered: August 12, 2008 IP
Expert
 posted November 24, 2020 04:25 PM Hide Post
I would also suggest, depending on the use, to add LTRIM() around the FPRINT, to remove the leading spaces.

Waz...

 Prod: WebFOCUS 7.6.10/8.1.04 Upgrade: WebFOCUS 8.2.07 OS: Linux Outputs: HTML, PDF, Excel, PPT In Focus since 1984 Pity the lost knowledge of an old programmer!

 Posts: 6349 | Location: 33°49'23.0"S, 151°11'41.0"E | Registered: October 31, 2006 IP