| 
 | 
>My colleague wants to code a program to generate nagative values in
>brackets and not with a minus sign nor with a CR sign. Problem is that
>she wants the leading bracket to float like the $ sign.
>Eg.
>        (89.00)
>   (2,341.00)
I use this method to output and retrieve numerics from html entry fields.
It's a little cludgy, but it works and might be just what you need:  
The screen field is alpha, so you may need to do a little extra editing if it 
is input capable to keep them from entering anything
other than 0-9, ( ) , . and $.  the sub-procedure "str2flt is a standard "C" 
routine that converts an alpha string to a floating
point decimal.
to output to screen:
DDS:
A           EDITFLD    12A  B  2  2
........
RPG4:
To output to screen:
 * if negative, append parenteses before and after edited numeric.
C                   IF        NUMFLD < 0
C                   EVAL      EDITFLD = '(' + %trim(%editc(NUMFLD:'1')) + ')'
C                   ELSE
C                   EVAL      EDITFLD = %trim(%editc(NUMFLD:'1'))
C                   END
If you need to read from screen:
D Str2Flt         Pr             8F   ExtProc('cvtefnd')      
D  Str                            *   Value                   
D  StrLen                       10U 0 Value                   
D  Mask                          3    Const
D FltResult       S              8F
....
 * check if field is numeric.
                                                                 ==
C    '('            CHECK     EDITFLD         POS                10
 *  replace parentheses with zeroes.
C    '()':'00'      XLATE     EDITFLD         EDITFLD
 * convert alpha string to floating point, then to numeric 
C                   Eval      FltResult = Str2Flt( %Addr(EDITFLD) :       
C                                                  %Len(%trimr(EDITFLD)) :
C                                                  '$,.' )               
C                   Eval      NUMFLD = FltResult                         
C                   END                                                  
 * if value had parentheses, make negative.
C                   IF        *IN10 = *on
C                   Z-SUB     NUMFLD       NUMFLD
C                   END
You will need to compile this program with parameter "BNDDIR(QC2LE)".
Hope this helps a little,
Rick
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.