Страница 1 из 1

Контрольная сумма ИНН

Добавлено: 14 Май 2019, 8:18
Admin
Подкиньте пожалуйста функцию у кого есть а то писать лень.
Спасибо.

Контрольная сумма ИНН

Добавлено: 14 Май 2019, 10:05
finsoftrz

Код: Выделить всё

                     MEMBER('fslibs6.clw')        ! Это модуль типа MEMBER
TestINN              FUNCTION (lop:str)           ! Объявление процедуры
FilesOpened          LONG
loc:InnR                     cstring(13)
loc:Gr12                     GROUP,PRE()
loc:C0                         BYTE(3)
loc:C1                         BYTE(7)
loc:C2                         BYTE(2)
loc:C3                         BYTE(4)
loc:C4                         BYTE(10)
loc:C5                         BYTE(3)
loc:C6                         BYTE(5)
loc:C7                         BYTE(9)
loc:C8                         BYTE(4)
loc:C9                         BYTE(6)
loc:C10                        BYTE(8)
                         END
loc:Const12                  BYTE,DIM(11),OVER(loc:Gr12)
loc:s    long
loc:i    long
loc:zn   byte
  CODE                                            ! Начало исполняемого кода
   loc:zn=0
   loc:InnR=clip(lop:Str)
   case len(loc:InnR)
      of 10 ! Резиденты и нерезиденты (без  буквы F)
         loc:S=0
         loop loc:i=1 to 9
            loc:S+=sub(lop:Str,loc:i,1)*loc:Const12[loc:i+2]
         .
         loop while loc:S=>11    ! модуль 11
            loc:S-=11
         .
         if loc:S=10             ! модуль 10
            loc:S=0
         .
         loc:zn=loc:s
         return(loc:zn)
      of 12
         loc:S=0
         loop loc:i=1 to 10
            loc:s+=sub(lop:Str,loc:i,1)*loc:Const12[loc:i+1]
         .
         loop while loc:s=>11    ! модуль 11
            loc:s-=11
         .
         if loc:s=10             ! модуль 10
            loc:s=0
         .
         loc:InnR=sub(lop:str,1,10) & loc:s
         loc:s=0
         loop loc:i=1 to 11
            loc:s+=sub(loc:InnR,loc:i,1)*loc:Const12[loc:i]
         .
         loop while loc:s=>11    ! модуль 11
            loc:s-=11
         .
         if loc:s=10             ! модуль 10
            loc:s=0
         .
         loc:InnR=sub(loc:InnR,1,11) & loc:s
         loc:zn=sub(loc:InnR,11,2)
         return(loc:zn)
   .


Контрольная сумма ИНН

Добавлено: 14 Май 2019, 10:06
Admin
Спасибо