× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Jim,
Sorry, as far as I know there are no such functions available to VARPG.
There maybe a WIN32 API you could use, but I don't know what it would be.
Below is the code I have always used to convert a character field to a
numeric. It is early RPG IV, so it should work with VARPG.

-- Scott P. Johnson


 *  Convert Character to Number
D $CvtChrNbr      PR            30  9
D StrIn                         32    CONST

 *===============================================================*
 * Convert Character to Number Sub-Procedure                     *
 *---------------------------------------------------------------*
P $CvtChrNbr      B

D $CvtChrNbr      PI            30  9
D StrIn                         32    CONST

D CurChar         s              1
D DecOut          s             30  9
D Left            s             21
D Right           s              9
D Side            s              5
D Sign            s              1  0
D X               s              3  0

 * Set inital values
C                   Eval      left = *all'0'
C                   Eval      right = *blanks
C                   Eval      Side = 'left'
C                   Eval      Sign = 1

 * Extract parts of number to left & right of decimal point
C     1             Do        32            x
C                   Eval      CurChar = %subst(StrIn:x:1)
C                   Select
C                   When      CurChar >= '0' and CurChar <= '9'
C                   If        Side = 'left'
C                   Eval      Left = %subst(Left:2:20) + CurChar
C                   Else
C                   Eval      Right = %trimr(Right) + CurChar
C                   EndIf
C                   When      CurChar = '.'
C                   Eval      Side = 'right'
C                   When      CurChar = '-' or CurChar = '<'
C                   Eval      Sign = -1
C                   EndSl
C                   EndDo

 * Combine the left & right strings to get the entire number
C                   MoveL     Left          DecOut
C                   Eval      Right = %trimr(Right) + '000000000'
C                   Move      Right         DecOut

 * If a hyphen or less-than was found, negate the number
C                   If        Sign = -1
C                   Eval      DecOut = (- DecOut)
C                   EndIf
C
C                   Return    DecOut

P $CvtChrNbr      E



I have a, seemingly, fairly simple problem, convert an alpha field to
numeric.

My Alpha Field comes out like '89        '
I need to convert this to numeric, atoi or even atof would be the way to do
it, and would be the solution on the AS/400.

Do we have QCTOLE in VARPG?  It looks like I'm going to have to write some
complex numeric parser to do this since it's left justified and I don't
seem
to have atoi in VA-RPG.

When in the heck is IBM going to write a simple %Val or %Value BIF so we
don't have this problem?

Regards,

Jim Langston





As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.