вот вам функция деления числа на разряды
f_math_cathegory 12345678
возвращает результат 12.345.678
немножко про этот долбанутый алгоритм.
я ж не могу сразу проверить открыт local.cat или нет, он же всегда возвращает 0, а у меня внутри может и 0 хранится.
поэтому я ввожу еще один дополнительный параметр local.h, чтобы просто приравнять его к 1.
еще мне к local.cat в конце приходится приписывать букву Z, чтобы сумасшедшяя сфера поняла что у меня string.
в конце я избавлюсь от этой буквы с помощью STRSUB.
Пользуйтесь...
Код
[FUNCTION f_math_cathegory] //делит число на разряды
if strlen(<argn>) <= 3
return <eval <argn>>
endif
local.cat_argn = <argn>
if (<local.cat_argn> < 0)
local.cat_m = 1
local.cat_argn = "<eval(<local.cat_argn> * -1)>"
endif
local.cat_lng = <eval strlen(<dlocal.cat_argn>)>
FOR m <local.cat_lng>
local.cat_i = "<eval <local.cat_lng> - <local.m>>"
local.cat_j = "<eval(0<local.cat_j> + 1)>"
local.cat_chart = "<STRSUB <local.cat_i> 1 <eval(<dlocal.cat_argn>)>>"
if !(0<local.h>)
local.h = 1
local.cat = "<dlocal.cat_chart>z"
elseif (<local.cat_j> == <eval((<local.cat_j> / 3) * 3)>) && (<local.cat_i> != 0)
local.cat = ".<dlocal.cat_chart><local.cat>"
else
local.cat = "<dlocal.cat_chart><local.cat>"
endif
ENDFOR
local.cat_lng = <eval strlen(<local.cat>)>
local.cat = "<STRSUB 0 <eval <local.cat_lng> - 1> <local.cat>>"
if 0<local.cat_m>
local.cat = "-<local.cat>"
endif
return <local.cat>