G
Guest
Добрый день, пытаюсь перевести некую функцию на Паскаль. Сама функция написана на foxpro.
FUNCTION inn2reg
LPARAMETERS L_INN, L_KPP, NYEAR
LOCAL CK, NK, CKFULL
IF EMPTY(L_KPP)
L_KPP = "99"
ENDIF
NK = VAL(L_INN)*VAL(L_KPP)/(NYEAR-2000)
NK = NK*3
NK = LOG10(NK)
NK = MOD(NK, 1) // вот здесь у меня стоп
CK = STR(NK, 17, 15)
CK = RIGHT(CK, 15)
CKFULL = LEFT(CK, 3)+"-"+SUBSTR(CK, 4, 3)+"-"+SUBSTR(CK, 7, 3)+"-"+SUBSTR(CK, 10, 3)+"-"+SUBSTR(CK, 13, 3)
RETURN CK
ENDFUNC
вот что получилось:
function inn2reg(L_INN:real; L_KPP:real; NYEAR:real):string;
var CK:string; NK:real; CKFULL:string;int:integer;
begin
if L_KPP=0 then L_KPP:=99;
NK:= L_INN*L_KPP/NYEAR-2000;
NK:= NK*3;
NK:= LOG10(NK);
nk:=nk mod 1; // здесь получаю 0 но это не так. Mожет-быть здесь получить дробную часть числа frac()?
str(nk:17:15,ck);
ck:=ansirightstr(ck,15);
CKFULL:=ansileftstr(ck,3)+'-'+copy(CK, 4, 3)+'-'+copy(CK, 7, 3)+'-'+copy(CK, 10, 3)+'-'
+copy(CK, 13, 3);
result:=CKFULL;
end;
FUNCTION inn2reg
LPARAMETERS L_INN, L_KPP, NYEAR
LOCAL CK, NK, CKFULL
IF EMPTY(L_KPP)
L_KPP = "99"
ENDIF
NK = VAL(L_INN)*VAL(L_KPP)/(NYEAR-2000)
NK = NK*3
NK = LOG10(NK)
NK = MOD(NK, 1) // вот здесь у меня стоп
CK = STR(NK, 17, 15)
CK = RIGHT(CK, 15)
CKFULL = LEFT(CK, 3)+"-"+SUBSTR(CK, 4, 3)+"-"+SUBSTR(CK, 7, 3)+"-"+SUBSTR(CK, 10, 3)+"-"+SUBSTR(CK, 13, 3)
RETURN CK
ENDFUNC
вот что получилось:
function inn2reg(L_INN:real; L_KPP:real; NYEAR:real):string;
var CK:string; NK:real; CKFULL:string;int:integer;
begin
if L_KPP=0 then L_KPP:=99;
NK:= L_INN*L_KPP/NYEAR-2000;
NK:= NK*3;
NK:= LOG10(NK);
nk:=nk mod 1; // здесь получаю 0 но это не так. Mожет-быть здесь получить дробную часть числа frac()?
str(nk:17:15,ck);
ck:=ansirightstr(ck,15);
CKFULL:=ansileftstr(ck,3)+'-'+copy(CK, 4, 3)+'-'+copy(CK, 7, 3)+'-'+copy(CK, 10, 3)+'-'
+copy(CK, 13, 3);
result:=CKFULL;
end;