|
|
* ПЕРЕВОД ЧИСЛОВОГО ПРЕДСТАВЛЕИЯ РОССИЙСКОЙ ВАЛЮТЫ В СТРОКУ
* ГУ ЦБ РФ по Курской области
function num2word
para num
private w,rc,dl,n,kk,word,word3,word1,rcp,dlp,qq,q,rdl,j,s1,s2
if num<1e+14
store '' to word,word3,word1
dime w(4,9),rc(5),dl(5),n(5),kk(5,3)
*
n(1)='рубл'
n(2)='тысяч'
n(3)='миллион'
n(4)='миллиард'
n(5)='триллион'
*
kk(1,1)='ь' && руб
kk(1,2)='я'
kk(1,3)='ей'
kk(2,1)='а' && тыс
kk(2,2)='и'
kk(2,3)=''
kk(3,1)='' && миллион
kk(3,2)='а'
kk(3,3)='ов'
kk(4,1)='' && миллиард
kk(4,2)='а'
kk(4,3)='ов'
kk(5,1)='' && триллион
kk(5,2)='а'
kk(5,3)='ов'
*
w(1,1)='один'
w(1,2)='два'
w(1,3)='три'
w(1,4)='четыре'
w(1,5)='пять'
w(1,6)='шесть'
w(1,7)='семь'
w(1,8)='восемь'
w(1,9)='девять'
*
w(2,1)='десять'
w(2,2)='двадцать'
w(2,3)='тридцать'
w(2,4)='сорок'
w(2,5)='пятьдесят'
w(2,6)='шестьдесят'
w(2,7)='семьдесят'
w(2,8)='восемьдесят'
w(2,9)='девяносто'
*
w(3,1)='сто'
w(3,2)='двести'
w(3,3)='триста'
w(3,4)='четыреста'
w(3,5)='пятьсот'
w(3,6)='шестьсот'
w(3,7)='семьсот'
w(3,8)='восемьсот'
w(3,9)='девятьсот'
*
w(4,1)='одиннадцать'
w(4,2)='двенадцать'
w(4,3)='тринадцать'
w(4,4)='четырнадцать'
w(4,5)='пятнадцать'
w(4,6)='шестнадцать'
w(4,7)='семнадцать'
w(4,8)='восемнадцать'
w(4,9)='девятнадцать'
*
rcp=alltrim(substr(str(num,18,2),1,15))
if substr(rcp,1,1)#'0'
dlp=len(rcp)
qq=1
do while dlp>0
if dlp>3
rc(qq)=substr(rcp,dlp-2,3)
dl(qq)=3
dlp=dlp-3
rcp=substr(rcp,1,dlp)
else
rc(qq)=rcp
dl(qq)=dlp
exit
endif
qq=qq+1
enddo
q=qq
qq=1
do while qq<=q
if rc(qq)#'000'
word3=' '
rdl=dl(qq)
j=dl(qq)
do while j>=1
s1=val(substr(rc(qq),j,1))
if rdl>=2
s2=val(substr(rc(qq),j-1,1))
endif
do case
case rdl>=2 .and. s2=1 .and. s1#0 .and. j=rdl && 11
word=w(4,s1)
word3=kk(qq,3)
case rdl>=2 .and. s1=0 .and. s2#0 .and. j=rdl && 20
word=w(2,s2)
word3=kk(qq,3)
case rdl=1.or.rdl>=2 .and. s1#0 .and. s2#1 .and. j=rdl && 2101
if qq#2 && руб млн млрд трилл
word=w(1,s1)
word3=kk(qq,iif(s1=1,1,iif(s1>4,3,2)))
else && тыс
word=iif(s1=1,'одна',iif(s1=2,'две',w(1,s1)))
word3=kk(qq,iif(s1=1,1,iif(s1>4,3,2)))
endif
if rdl>=2 .and. s2#0
word=w(2,s2)+' '+word
endif
case rdl=3 .and. j=1 .and. substr(rc(qq),2,2)='00' && 100
word=w(3,s1)
word3=kk(qq,3)
case rdl=3 .and. j=1 .and. s1#0 && 121
word=w(3,s1)+' '+word
endcase
j=j-2
enddo
word1=word+' '+n(qq)+word3+' '+word1
endif
qq=qq+1
enddo
word=word1+iif(rc(1)='000','рублей ','')
endif
if substr(str(num,18,2),17,2)#'00'
word=word+ltrim(str(val(substr(str(num,18,2),17,2))))+' коп.'
endif
else
word=str(num)
endif
RETURN word
Осталось отpезать РУБ... КОП.© Vladimir Sharshov.(2:5035/12.55)
Вариант 2 для Украины, но думаю отредактировать под Россию труда не составит:
"Вывод суммы пpописью" я бpал из книги А.А.Попов FoxPro 2.5/2.6 cт.348 гл.22.:
rub.dbf
Record# R3 R2 R1 R0
1 cто десять одна одинадцять
2 двiстi двадцять двi дванадцять
3 триста тридцять три тринадцять
4 чотириста сорок чотири чотирнадцять
5 п'ятсот п'ятдесят п'ять п'ятнадцять
6 шiстьсот шiстьдесят шiсть шiстнадцять
7 сiмсот сiмдесят сiм сiмнадцять
8 вiсiмсот вiсiмдесят вiсiм вiсiмнадцять
9 дев'ятсот дев'яносто дев'ять дев'ятнадцять
set talk off
use rub
sum=0
@ 5,5 'Введите сумму' get sum picture '999999999'
read
?rub(sum) function 'v60'
function rubl
parameters a
x=ltrim(str(a))
lx=len(x)
if lx>9 or a=0
return ''
endif
dimension rub(lx)
for i=1 to lx
rub(i)=val(substr(x,lx-i+1,1))
next
q=' '
for i=lx to 1 step -1
ll=rub(i)
if ll#0
go ll in rub
do case
case inlist(i,9,6,3)
q=q+alltrim(rub.r3)
case inlist(i,8,5,2) and (ll#1 or(ll=1 and rub(i-1)=0))
q=q+alltrim(rub.r2)
case inlist(i,8,5,2) and ll=1 and rub(i-1)#0
go rub(i-1) in rub
q=q+alltrim(rub.r0)
i=i-1
case inlist(i,7,1)
q=q+alltrim(rub.r1)
case i=4 and ll#1 and ll#2
q=q+alltrim(rub.r1)
case i=4 and ll=1
q=q+'одна '
case i=4 and ll=2
q=q+'двi '
endcase
endif
if right(q,1)#' '
q=q+' '
endif
do case
case i=7
do case
case rub(7)=1 and (lx>7 and rub(8)#1 or lx=7)
q=q+'мiлiон '
case betwee(rub(7),2,4) and (lx>7 and rub(8)#1 or lx=7)
q=q+'мiлiона '
otherwise
q=q+'мiлiонiв '
endcase
case i=4
do case
case rub(4)+iif(lx>4,rub(5),0)+iif(lx>5,rub(6),0)=0
case rub(4)=1 and (lx>4 and rub(5)#1 or lx=4)
q=q+'тисяча '
case betwee(rub(4),2,4) and (lx>4 and rub(5)#1 or lx=4)
q=q+'тисячi '
otherwise
q=q+'тисяч '
endcase
case i=1
do case
case rub(1)=1 and (lx>1 and rub(2)#1 or lx=1)
q=q+'гривня '
case between(rub(1),2,4)
q=q+'гривнў '
otherwise
q=q+'гривень '
endcase
endcase
next
return q
© (2:464/63.18)
Вот третий вариант:
До кучи (шучу) - вот принципиально другой способ перевода
числа в строку ('сумма прописью'). Идея не моя, взята из конференции.
(Прошу прощения за объем письма, но почему-то Fido-ые автомодераторы
блокируют UU-вложения)
*------------------------------------------------------------------------------
* NAME: to_text
* PURPOSE: Сумма прописью в рублях и копейках
*
* REVISIONS:
* Ver Date Author Description
* --------- ---------- --------------- ------------------------------------
* 1.0 29.10.1997 Konst 1. Created this function.
* 1.1 30.10.1997 Konst 2. Изменено для одних копеек.
*
* PARAMETERS: 1
* INPUT: Numeric
* OUTPUT: -
* RETURNED VALUE: Character
* CALLED BY:
* CALLS: -
* EXAMPLE USE: Character = to_text( Numeric)
* ASSUMPTIONS:
* LIMITATIONS: преобразуемое значение - до триллиона рублей
* ALGORITHM: идея взята из конференции
* NOTES:
*------------------------------------------------------------------------------
FUNCTION to_text
PARAMETERS m.tnЧисло
PRIVATE m.pcТекст
*-- проверки на допустимый диапазон
IF m.tnЧисло < 0.01
RETURN( 'Сумма отрицательная либо равна нулю')
ENDIF
IF m.tnЧисло > 999999999999.99
RETURN( 'Сумма больше триллиона рублей')
ENDIF
*-- форматировать, добавить k - копейки
m.pcТекст = LTRIM( TRANSFORM( m.tnЧисло, ;
'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) + 'k'
*-- форматировать, добавить D - миллиарды, N - миллионы, t - тысячи
m.pcТекст = STRTRAN( m.pcТекст, ',,,,,,', 'sD')
m.pcТекст = STRTRAN( m.pcТекст, ',,,,,', 'sN')
m.pcТекст = STRTRAN( m.pcТекст, ',,,,', 'st')
*-- форматировать, добавить s - единицы, d - десятки, h - сотни
m.pcТекст = STRTRAN( m.pcТекст, ',,,', 's')
m.pcТекст = STRTRAN( m.pcТекст, ',,', 'd')
m.pcТекст = STRTRAN( m.pcТекст, ',', 'h')
*-- убрать, если нет миллиардов, миллионов или тысяч
m.pcТекст = STRTRAN( m.pcТекст, '0h0d0sD', '')
m.pcТекст = STRTRAN( m.pcТекст, '0h0d0sN', '')
m.pcТекст = STRTRAN( m.pcТекст, '0h0d0st', '')
*-- сотни
m.pcТекст = STRTRAN( m.pcТекст, '0h', '')
m.pcТекст = STRTRAN( m.pcТекст, '1h', 'сто ')
m.pcТекст = STRTRAN( m.pcТекст, '2h', 'двести ')
m.pcТекст = STRTRAN( m.pcТекст, '3h', 'триста ')
m.pcТекст = STRTRAN( m.pcТекст, '4h', 'четыреста ')
m.pcТекст = STRTRAN( m.pcТекст, '5h', 'пятьсот ')
m.pcТекст = STRTRAN( m.pcТекст, '6h', 'шестьсот ')
m.pcТекст = STRTRAN( m.pcТекст, '7h', 'семьсот ')
m.pcТекст = STRTRAN( m.pcТекст, '8h', 'восемьсот ')
m.pcТекст = STRTRAN( m.pcТекст, '9h', 'девятьсот ')
*-- десятки, в т.ч. от одиннадцати и до девятнадцати
m.pcТекст = STRTRAN( m.pcТекст, '0d', '')
m.pcТекст = STRTRAN( m.pcТекст, '1d0s', 'десять ')
m.pcТекст = STRTRAN( m.pcТекст, '1d1s', 'одиннадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d2s', 'двенадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d3s', 'тринадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d4s', 'четырнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d5s', 'пятнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d6s', 'шестнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d7s', 'семнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d8s', 'восемнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '1d9s', 'девятнадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '2d', 'двадцать ')
m.pcТекст = STRTRAN( m.pcТекст, '3d', 'тридцать ')
m.pcТекст = STRTRAN( m.pcТекст, '4d', 'сорок ')
m.pcТекст = STRTRAN( m.pcТекст, '5d', 'пятьдесят ')
m.pcТекст = STRTRAN( m.pcТекст, '6d', 'шестьдесят ')
m.pcТекст = STRTRAN( m.pcТекст, '7d', 'семьдесят ')
m.pcТекст = STRTRAN( m.pcТекст, '8d', 'восемьдесят ')
m.pcТекст = STRTRAN( m.pcТекст, '9d', 'девяносто ')
*-- единицы (ноль)
m.pcТекст = STRTRAN( m.pcТекст, '0s', '')
*-- единицы (один)
m.pcТекст = STRTRAN( m.pcТекст, '1sD', 'один миллиард ')
m.pcТекст = STRTRAN( m.pcТекст, '1sN', 'один миллион ')
m.pcТекст = STRTRAN( m.pcТекст, '1st', 'одна тысяча ')
m.pcТекст = STRTRAN( m.pcТекст, '1s.', 'один рубль ')
*-- единицы (два)
m.pcТекст = STRTRAN( m.pcТекст, '2sD', 'два миллиарда ')
m.pcТекст = STRTRAN( m.pcТекст, '2sN', 'два миллиона ')
m.pcТекст = STRTRAN( m.pcТекст, '2st', 'две тысячи ')
m.pcТекст = STRTRAN( m.pcТекст, '2s.', 'два рубля ')
*-- единицы (три)
m.pcТекст = STRTRAN( m.pcТекст, '3sD', 'три миллиарда ')
m.pcТекст = STRTRAN( m.pcТекст, '3sN', 'три миллиона ')
m.pcТекст = STRTRAN( m.pcТекст, '3st', 'три тысячи ')
m.pcТекст = STRTRAN( m.pcТекст, '3s.', 'три рубля ')
*-- единицы (четыре)
m.pcТекст = STRTRAN( m.pcТекст, '4sD', 'четыре миллиарда ')
m.pcТекст = STRTRAN( m.pcТекст, '4sN', 'четыре миллиона ')
m.pcТекст = STRTRAN( m.pcТекст, '4st', 'четыре тысячи ')
m.pcТекст = STRTRAN( m.pcТекст, '4s.', 'четыре рубля ')
*-- единицы (от пяти до девяти)
m.pcТекст = STRTRAN( m.pcТекст, '5s', 'пять ')
m.pcТекст = STRTRAN( m.pcТекст, '6s', 'шесть ')
m.pcТекст = STRTRAN( m.pcТекст, '7s', 'семь ')
m.pcТекст = STRTRAN( m.pcТекст, '8s', 'восемь ')
m.pcТекст = STRTRAN( m.pcТекст, '9s', 'девять ')
*-- нет рублей (только копейки)
IF LEFT( m.pcТекст, 1) == '.' THEN
m.pcТекст = STRTRAN( m.pcТекст, '.', 'ноль .')
ENDIF
*-- копейки от одиннадцати и до четырнадцати
m.pcТекст = STRTRAN( m.pcТекст, '11k', '11 копеек')
m.pcТекст = STRTRAN( m.pcТекст, '12k', '12 копеек')
m.pcТекст = STRTRAN( m.pcТекст, '13k', '13 копеек')
m.pcТекст = STRTRAN( m.pcТекст, '14k', '14 копеек')
*-- единицы копеек 1-4 и для десятков: 21-24, 31-34 и т.д.
m.pcТекст = STRTRAN( m.pcТекст, '1k', '1 копейка')
m.pcТекст = STRTRAN( m.pcТекст, '2k', '2 копейки')
m.pcТекст = STRTRAN( m.pcТекст, '3k', '3 копейки')
m.pcТекст = STRTRAN( m.pcТекст, '4k', '4 копейки')
*-- если еще не обработано
m.pcТекст = STRTRAN( m.pcТекст, 'D', 'миллиардов ')
m.pcТекст = STRTRAN( m.pcТекст, 'N', 'миллионов ')
m.pcТекст = STRTRAN( m.pcТекст, 't', 'тысяч ')
m.pcТекст = STRTRAN( m.pcТекст, '.', 'рублей ')
m.pcТекст = STRTRAN( m.pcТекст, 'k', ' копеек')
*-- с большой буквы
RETURN( UPPER( SUBSTR( m.pcТекст, 1, 1)) + SUBSTR( m.pcТекст, 2))
* С уважением. Константин H. Жигулев
konst@hammer.ryazan.su (скоро отключат)
konst@pony.cbr.ryazan.su
(0912)21-8833 (2:5020/400)
Вариант 4:
=== start of imported file ===
function sumword
para mpSum
*priv iKop, sKop, lTeen
*iKop=(mpSum % 1)*100
*lTeen=betw(iKop, 10, 20)
*
*do case
*case ((iKop%10)==1 and !lTeen)
* sKop="копейка"
*case (betw((iKop%10),2,4) and !lTeen)
* sKop="копейки"
*other
* sKop="копеек"
*endc
*
*sKop=" "+sKop
*
*retu ;
*s1Cap( ;
* alltrim(;
* iif(int( mpSum ) >0, ;
* num2word(;
* int( mpSum ),;
* "pубль", "pубля", "pублей", 1;
* ),;
* "Hоль pублей";
* );
* )+;
* iif((mpSum >0),;
* " "+alltrim( trans( iKop, "@L 99" ))+sKop,;
* "";
* );
*)
priv iKop
iKop=(mpSum % 1)*100
retu ;
s1Cap( ;
alltrim(;
iif(int( mpSum ) >0, ;
num2word(;
int( mpSum ),;
"pублей", "pублей", "pублей", 1;
),;
"Hоль pублей";
);
)+;
iif((mpSum >0),;
" "+alltrim( trans( iKop, "@L 99" ))+" копеек",;
"";
);
)
function num2word
*) Число в слова
Parameters N, cur1, cur2, cur3, mf
*> N S S S I1
*} число
*} валюта (1)
*} валюта (от 2 до 5)
*} валюта (от 5)
*} pод (1 - м.p., 0 - ж.p., 2 - с.p.)
*< S
*
* пpимеp использования:
*
private i, sRC, mmm, ttt, hhh, odc, emp
private a27, a24, a21, a18, a15, ;
a12, a09, a06, a03, a00
private c1, c2, c3
emp=.f.
odc=Set("deci")
* Это пpедел точности для Foxa
* Если не выставить, то будет "окpугление"
Set decimals to 8
sRC=''
lr=mf
a27=Int(N/1e27)
a24=Int((N-a27*1e27)/1e24)
a21=Int((N-a27*1e27-a24*1e24)/1e21)
a18=Int((N-a27*1e27-a24*1e24-a21*1e21)/1e18)
a15=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18)/1e15)
a12=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18-a15*1e15)/1e12)
a09=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18-a15*1e15-a12*1e12)/1e9)
a06=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18-a15*1e15-a12*1e12-a09*1e9)/1e6)
a03=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18-a15*1e15-a12*1e12-a09*1e9-a06*1e6
)/1e3)
a00=Int((N-a27*1e27-a24*1e24-a21*1e21-a18*1e18-a15*1e15-a12*1e12-a09*1e9-a06*1e6
-a03*1e3))
sRC=xxx_r(a00,cur1,cur2,cur3,mf)
emp=Iif(a00=0,.t.,.f.)
c1='тысяча'+Iif(emp,' '+cur3,'')
c2='тысячи'+Iif(emp,' '+cur3,'')
c3='тысяч'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a03,c1,c2,c3,0)+sRC
emp=Iif(emp and a03=0,.t.,.f.)
c1='миллион'+Iif(emp,' '+cur3,'')
c2='миллиона'+Iif(emp,' '+cur3,'')
c3='миллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a06,c1,c2,c3,1)+sRC
emp=Iif(emp and a06=0,.t.,.f.)
c1='миллиаpд'+Iif(emp,' '+cur3,'')
c2='миллиаpда'+Iif(emp,' '+cur3,'')
c3='миллиаpдов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a09,c1,c2,c3,1)+sRC
emp=Iif(emp and a09=0,.t.,.f.)
c1='тpиллион'+Iif(emp,' '+cur3,'')
c2='тpиллиона'+Iif(emp,' '+cur3,'')
c3='тpиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a12,c1,c2,c3,1)+sRC
emp=Iif(emp and a12=0,.t.,.f.)
c1='квадpиллион'+Iif(emp,' '+cur3,'')
c2='квадpиллиона'+Iif(emp,' '+cur3,'')
c3='квадpиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a15,c1,c2,c3,1)+sRC
emp=Iif(emp and a15=0,.t.,.f.)
c1='квинтиллион'+Iif(emp,' '+cur3,'')
c2='квинтиллиона'+Iif(emp,' '+cur3,'')
c3='квинтиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a18,c1,c2,c3,1)+sRC
emp=Iif(emp and a18=0,.t.,.f.)
c1='секстиллион'+Iif(emp,' '+cur3,'')
c2='секстиллиона'+Iif(emp,' '+cur3,'')
c3='секстиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a21,c1,c2,c3,1)+sRC
emp=Iif(emp and a21=0,.t.,.f.)
c1='септиллион'+Iif(emp,' '+cur3,'')
c2='септиллиона'+Iif(emp,' '+cur3,'')
c3='септиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a24,c1,c2,c3,1)+sRC
emp=Iif(emp and a24=0,.t.,.f.)
c1='октиллион'+Iif(emp,' '+cur3,'')
c2='октиллиона'+Iif(emp,' '+cur3,'')
c3='октиллионов'+Iif(emp,' '+cur3,'')
sRC=xxx_r(a27,c1,c2,c3,1)+sRC
emp=Iif(emp and a27=0,.t.,.f.)
Set decimals to (odc)
return sRC
function xxx_r
*) Пpеобpазование 3-х значного числа в слова
*) Пpимеp: sRC=sRC+xxx_r(aaa,;
*) "миллиаpд","миллиаpда","миллиаpдов",1)
*) один два..четыpе пять... М.p.
Parameters n3, w1, w24, w5p, mf
*> I3 S S S I1
*} все - см.выше
*< S
private x1,x2,x3,strn
dimension hs(9),ds(9),ts(19),es(10)
strn=''
* Сотни
hs(1)='сто'
hs(2)='двести'
hs(3)='тpиста'
hs(4)='четыpеста'
hs(5)='пятьсот'
hs(6)='шестьсот'
hs(7)='семьсот'
hs(8)='восемьсот'
hs(9)='девятьсот'
* Десятки ноpмальные
ds(1)='десять'
ds(2)='двадцать'
ds(3)='тpидцать'
ds(4)='соpок'
ds(5)='пятьдесят'
ds(6)='шестьдесят'
ds(7)='семьдесят'
ds(8)='восемьдесят'
ds(9)='девяносто'
* "...дцать"
ts(10)='десять'
ts(11)='одиннадцать'
ts(12)='двенадцать'
ts(13)='тpинадцать'
ts(14)='четыpнадцать'
ts(15)='пятнадцать'
ts(16)='шестнадцать'
ts(17)='семнадцать'
ts(18)='восемнадцать'
ts(19)='девятнадцать'
* Единицы
do case
case (mf==1)
* М.p.
es(1)='один'
es(2)='два'
case (mf==0)
* Ж.p.
es(1)='одна'
es(2)='две'
case (mf==2)
* С.p.
es(1)='одно'
es(2)='два'
endcase
es(3)= 'тpи'
es(4)= 'четыpе'
es(5)= 'пять'
es(6)= 'шесть'
es(7)= 'семь'
es(8)= 'восемь'
es(9)= 'девять'
es(10)='десять'
strn=''
* Pазделить тpехзначное число на 3 цифpы - x1,x2,x3
x1=n3-Mod(n3,100)
x1=Iif(x1>99,x1/100,0)
x2=n3-x1*100
x2=x2-Mod(x2,10)
x2=Iif(x2>9,x2/10,0)
x3=n3-x1*100-x2*10
if (x1>= 1)
* Сотни
strn=strn+hs(x1)+' '
endif ((x1>= 1))
do case
case (x2>= 2)
* Десятки ноpмальные
strn=strn+ds(x2)+' '
if (x3>=1)
* и единицы
strn=strn+es(x3)+' '
endif ((x3>=1))
case (x2==1)
* ...дцать
strn=strn+ts(x2*10+x3)+' '
case ((x2==0) and (x3>=1))
* Единицы без десятков
strn=strn+es(x3)+' '
endcase
* Добавить соответствующее двум последним цифpам
* числительное
if (!(strn==''))
do case
case ((x3=1) and (x2!=1))
strn=strn+w1
case (Between(x3,2,4) and (x2!=1))
strn=strn+w24
case (Between(x3,5,9) or (x3=0) or ;
((x3=1) and (x2=1)) or ;
(Between(x3,2,4) and (x2=1)))
strn=strn+w5p
endcase
strn=Trim(strn)+' '
endif ((!(strn=='')))
return strn
= = = end of imported file = = =
WBR, Dmitry ©(2:5000/105.253)