Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander V. Gaiduk                  2:5020/400     15 Feb 2001  18:24:24
 To : All
 Subject : Re: Валидность счета
 -------------------------------------------------------------------------------- 
 
 >> В России банковский расчетный счет состоит из 20 цифр.
 >> Есть ли какой-то алгоритм проверки валидности номера счета?
 >>
 >>-- Hиколай.
 >>ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 >
 >
 >Есть такое понятие как ключ банковского счета. Он
 >однозначно определяет правильность счета и завязан
 >на БИК банка. Подробности мылом.
 сорри, за наглый оффтоп, но переписывать на Perl паскалешную
 функцию слишком лениво было. Кому надо разберуться:
 
 ==================================================
 
 function CalkAccKey(Bic, Acc : ShortString) : Integer;
 
   function CheckLegal(A : ShortString) : Boolean;
   var i : Byte;
   begin
     CheckLegal := False;
     for i := 1 to 20 do if not (A[i] in ['0'..'9']) then Exit;
     CheckLegal := True;
   end;
 
   function C2D(C : Char) : Byte;
   var Cd : Integer; B : Byte;
   begin
     Val(C, B, Cd); C2D := B;
   end;
 
   function CalcSmall(A, B : Char) : Byte;
   begin
     CalcSmall := (C2D(A) * C2D(B)) mod 10;
   end;
 
 const
   VK : String[23] = '71371371371371371371371';
 var
   Key : String[1];
   CAcc : String[23];
   Sa : Word;
   i : Byte;
 begin
   CalkAccKey := -4;
   if Length(Bic) <> 3 then Exit;
   CalkAccKey := -3;
   if Length(Acc) <> 20 then Exit;
   CalkAccKey := -2;
   if not CheckLegal(Acc) then Exit;
   Key := Acc[9];
   Acc[9] := '0';
   Sa := 0;
   CAcc := Bic + Acc;
   for i := 1 to 23 do
     Sa := Sa + CalcSmall(VK[i], CAcc[i]);
   Sa := Sa mod 10;
   Sa := Sa * 3;
   Sa := Sa mod 10;
   CalkAccKey := -1;
   if Key <> Char(Sa + Byte('0')) then Exit;
   CalkAccKey := 0;
 end;
 
 ==================================================
 
 где:
 Bic - три последних цыфры БИКа
 Acc - сам проверяемый счет
 
 писал давно, уже и не помню как это оно работает. HО РАБОТАЕТ !
 
 =GAV
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Валидность счета   Alexander V. Gaiduk   15 Feb 2001 18:24:24 
Архивное /ru.perl/393149ddb780.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional