FUNCTION NumToC( nNum, nRod, Lower ) //Преобразование целого числа в стринг
LOCAL cNum:=STR(nNum,15,0)
LOCAL l,c,c1,cString:=''
IF ValType( Global_Num ) <> 'A'
LoadNumber()
ENDIF
IF !EMPTY(VAL((c:=SUBSTR(cNum,1,3))))
c1:=RIGHT(c,1)
l:=(SUBSTR(c,2,1)='1')
cString:=Num3ToC(c,1)+' '+;
NumRod( 2, 4, IF(l.OR.c1='0'.OR.c1>'4',2,IF(c1='1',1,3)) )
ENDIF
IF !EMPTY(VAL((c:=SUBSTR(cNum,4,3))))
c1:=RIGHT(c,1)
l:=(SUBSTR(c,2,1)='1')
cString+= IF(!EMPTY(cString),' ','')+;
Num3ToC(c,1)+' '+;
NumRod( 2, 3, IF(l.OR.c1='0'.OR.c1>'4',2,IF(c1='1',1,3)) )
ENDIF
IF !EMPTY(VAL((c:=SUBSTR(cNum,7,3))))
c1:=STRTRAN(RIGHT(c,1),' ','0')
l:=(SUBSTR(c,2,1)='1')
cString+=IF(!EMPTY(cString),' ','')+;
Num3ToC(c,1)+' '+;
NumRod( 2, 2, IF(l.OR.c1='0'.OR.c1>'4',2,IF(c1='1',1,3)) )
ENDIF
IF !EMPTY(VAL((c:=SUBSTR(cNum,10,3))))
c1:=STRTRAN(RIGHT(c,1),' ','0')
l:=(SUBSTR(c,2,1)='1')
cString+=IF(!EMPTY(cString),' ','')+Num3ToC(c,2)+' '+;
NumRod( 2, 1, IF(l.OR.c1='0'.OR.c1>'4',2,IF(c1='1',1,3)) )
ENDIF
IF !EMPTY(VAL((c:=SUBSTR(cNum,13,3))))
cString+=IF(!EMPTY(cString),' ','')+Num3ToC(c,nRod)
ENDIF
IF !EMPTY(cString).AND.Lower=NIL
cString:=UPPER(LEFT(cString,1))+SUBSTR(cString,2)
ENDIF
RETURN (cString)
STATIC FUNCTION Num3ToC( cNum, nRod ) //Преобразование 3-значного целого числа в стринг
//nRod=1-мужской род 2-женский 3-сpедний
LOCAL n1,n2,n3,n23
LOCAL cString:=''
IF ((n1:=VAL(LEFT(cNum,1)))>0)
cString:= NumRod( 1, 27+n1, @nRod )
ENDIF
IF ((n23:=VAL(SUBSTR(cNum,2,2)))>=10.AND.n23<20)
cString+=IF(!EMPTY(cString),' ','')+NumRod( 1, n23, @nRod )
ELSE
IF ((n2:=VAL(SUBSTR(cNum,2,1)))>0)
cString+=IF(!EMPTY(cString),' ','')+NumRod( 1, 18+n2, @nRod )
ENDIF
IF ((n3:=VAL(SUBSTR(cNum,3,1)))>0)
cString+=IF(!EMPTY(cString),' ','')+NumRod( 1, n3, @nRod )
ENDIF
ENDIF
RETURN (cString) |