LINUX.ORG.RU

Алгоритм проверки СНИЛС пенсионного фонда


0

0

Какой алгоритм проверки страхового номера (СНИЛС)
пенсионного фонда?
Нашел пример для 1C, но почему-то не
хочет корректно проверять. Разобраться в
русских "Если/КонецЕсли КонтрольноеЧисло="
нереально :)
Заранее спасибо.


Ответ на: комментарий от stassats

>алгоритм проверки страхового номера

дак писать надо нормально =)

проверки чего? соответствия? несоответствия? совпадение с шаблоном?

anonymous
()
Ответ на: комментарий от anonymous

>дак писать надо нормально =)

>проверки чего? соответствия? несоответствия? совпадение с шаблоном?

Нефиг придираться. Всё понятно написано. Не знаешь - лучше помолчать.

Zmacs
()
Ответ на: комментарий от Zmacs

=)
судя по ответу, умник, ты не знаешь точно

anonymous
()

СНИЛС: 999-999-999 99
Последние две цифры контрольная сумма.
Как проверить правильность контрольной суммы?

WinLin
() автор топика
Ответ на: комментарий от WinLin

если я правильно понял и идет речь об обработке строки
СНИЛС: 999-999-999 99

то

bash-3.00$ cat text.txt
СНИЛС: 999-999-999 99

bash-3.00$ perl -e 'use strict; use Fcntl; sysopen(MF,"./text.txt",O_RDONLY) or die($@); while(<MF>) { if(/^\S+\:\s+\d{1,3}\-\d{1,3}\-\d{1,3}\s+(\d+)\s?$/) { my $a = $1; print "\nЭто контрольная сумма --> $a\nОна уже cохранена в переменную \$a\n";last;} else {print "Контрольная сумма не найдена в искомом файле\n";}}'

Это контрольная сумма --> 99
Она уже cохранена в переменную $a
bash-3.00$

anonymous
()
Ответ на: комментарий от anonymous

FoxPro 2.6 :)

PARAMETERS m.pfr
PRIVATE ALL

* проверка контрольной суммы номера ПФР (СНИЛС)
* входной номер 999-999-999*99 C(14) или 99999999999 C(11)
* преобразуется автоматически

m.ret=.F.

IF LEN(m.pfr)=14
m.pfr=pfr_arm(m.pfr) && удалить разделители
ENDIF

IF VAL(m.pfr)>1001998
m.crs=VAL(RIGHT(m.pfr,2))
m.pfr=LEFT(m.pfr,9)

m.all=0
FOR m.i=1 TO 9
m.all=m.all+VAL(SUBSTR(m.pfr,10-m.i,1))*m.i
ENDFOR
m.ostatok=m.all%101
IF m.ostatok=100
m.ostatok=0
ENDIF

IF m.ostatok=m.crs
m.ret=.T.
ENDIF
ENDIF

RETURN m.ret

WinLin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.