|
Apparently the attachment was not processed somehow. Here are the sources:
Service program NbrToWords follows:
* =============================================================
* = Service program... NbrToWords =
* = Description....... Service program to convert a number =
* = to words =
* = =
* = CrtRPGMod Module( YourLib/NbrToWords ) + =
* = SrcFile( YourLib/YourSrcFile ) =
* = =
* = CrtSrvPgm SrvPgm( YourLib/NbrToWords ) + =
* = Export( *All ) + =
* = ActGrp( *Caller ) =
* =============================================================
H NoMain
* -------------------------------------------------------------
* - Procedure prototypes -
* -------------------------------------------------------------
D CvtNbrToWords PR 200
D 15 0 Value
* -------------------------------------------------------------
* - Global variables -
* -------------------------------------------------------------
D MaxGrps C 5
D Words S 13 Dim( 99 )
D CtData
D Grps S 8 Dim( MaxGrps )
D CtData
* =============================================================
* = Procedure: CvtNbrToWords =
* = Description: Convert number to words =
* =============================================================
P CvtNbrToWords B Export
* -------------------------------------------------------------
* - Procedure interface -
* -------------------------------------------------------------
D CvtNbrToWords PI 200
D Nbr 15 0 Value
* -------------------------------------------------------------
* - Variable declarations -
* -------------------------------------------------------------
D AlphaNbr S 15
D WorkFld DS
D Work3 3
D Work2 2 Overlay( Work3 : 2 )
D Work1 1 Overlay( Work3 : 1 )
D Count S 5I 0
D Pos S 5I 0
D Idx S 5I 0
D RtnWords S 200 Inz( *Blank )
* -------------------------------------------------------------
* - Convert number to words -
* -------------------------------------------------------------
C Select
C When Nbr = *Zero
C Eval RtnWords = 'zero'
C Other
C If Nbr < *Zero
C Eval RtnWords = 'negative'
C Eval Nbr = Nbr * -1
C EndIf
C Move Nbr AlphaNbr
C Do MaxGrps Count
C Eval Pos = ( Count * 3 ) - 2
C Eval Work3 = %Subst( AlphaNbr :
C Pos :
C 3 )
C If Work3 <> '000'
C If Work1 <> '0'
C Clear Idx
C Move Work1 Idx
C Eval RtnWords = %TrimR( RtnWords ) +
C ' ' +
C %TrimR( Words( Idx ) ) +
C ' hundred'
C EndIf
C If Work2 <> '00'
C Clear Idx
C Move Work2 Idx
C Eval RtnWords = %TrimR( RtnWords ) +
C ' ' +
C %TrimR( Words( Idx ) )
C EndIf
C Eval RtnWords = %TrimR( RtnWords ) +
C ' ' +
C %TrimR( Grps( Count ) )
C EndIf
C EndDo
C EndSl
C Eval RtnWords = %Trim( RtnWords )
C Return RtnWords
P CvtNbrToWords E
** CtData Words
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
twenty-one
twenty-two
twenty-three
twenty-four
twenty-five
twenty-six
twenty-seven
twenty-eight
twenty-nine
thirty
thirty-one
thirty-two
thirty-three
thirty-four
thirty-five
thirty-six
thirty-seven
thirty-eight
thirty-nine
forty
forty-one
forty-two
forty-three
forty-four
forty-five
forty-six
forty-seven
forty-eight
forty-nine
fifty
fifty-one
fifty-two
fifty-three
fifty-four
fifty-five
fifty-six
fifty-seven
fifty-eight
fifty-nine
sixty
sixty-one
sixty-two
sixty-three
sixty-four
sixty-five
sixty-six
sixty-seven
sixty-eight
sixty-nine
seventy
seventy-one
seventy-two
seventy-three
seventy-four
seventy-five
seventy-six
seventy-seven
seventy-eight
seventy-nine
eighty
eighty-one
eighty-two
eighty-three
eighty-four
eighty-five
eighty-six
eighty-seven
eighty-eight
eighty-nine
ninety
ninety-one
ninety-two
ninety-three
ninety-four
ninety-five
ninety-six
ninety-seven
ninety-eight
ninety-nine
** CtData Grps
trillion
billion
million
thousand
Here's a sample program, Example, that uses procedure CvtNbrToWords from service
program NbrToWords:
* =============================================================
* = Program....... Example =
* = Description... Convert numbers to words example =
* = =
* = CrtRPGMod Module( YourLib/Example ) + =
* = SrcFile( YourLib/YourSrcFile ) =
* = =
* = CrtPgm Pgm( YourLib/Example ) + =
* = BndSrvPgm( YourLib/NbrToWords ) =
* =============================================================
* -------------------------------------------------------------
* - Procedure prototypes -
* -------------------------------------------------------------
D CvtNbrToWords PR 200
D 15 0 Value
* -------------------------------------------------------------
* - Variable declarations -
* -------------------------------------------------------------
D MyNbr S 10I 0
D MyWords S 200
* -------------------------------------------------------------
* - Sample number-word-conversion -
* -------------------------------------------------------------
C Eval MyNbr = 1234567898
C Eval MyWords = CvtNbrToWords( MyNbr )
C Eval *InLR = *On
Peter Vidal
Programmer Analyst
PALL Aeropower Corp.
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.