Отчета о мерах по повышению эффективности использования бюджетных средств и увеличению налоговых и неналоговых доходов


ОПИСАНИЕ АЛГОРИТМА РАСЧЕТА КОНТРОЛЬНОГО ЧИСЛА ОТЧЕТА



бет3/5
Дата29.02.2016
өлшемі0.51 Mb.
#33891
түріОтчет
1   2   3   4   5

ОПИСАНИЕ АЛГОРИТМА РАСЧЕТА КОНТРОЛЬНОГО ЧИСЛА ОТЧЕТА

При расчёте контрольного числа используется следующий стандартный алгоритм вычисления CRC 16:

int CRCTAB_16[]={

0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,

0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,

0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,

0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7691, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,

0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0

};

ПРИМЕРЫ ТЕКСТОВ ПРОГРАММ РАСЧЕТА

КОНТРОЛЬНОГО ЧИСЛА

На языке программирования Microsoft Visual C (C++)


DWORD calcCRC16(DWORD iPrevSumm, BYTE *btArr, UINT iLen)

{

for (int i=0;i

iPrevSumm=(CRCTAB_16[(iPrevSumm>>8)&0xFF] ^ iPrevSumm<<8 ^ btArr[i])&0xFFFF;

return iPrevSumm;

}
На языке программирования Microsoft Visual Basic 6.0 (SP5)

Предварительно необходимо произвести обработку массива CRCTAB_16


For i = 0 To UBound(CRCTAB_16)

CRCTAB_16(i) = CRCTAB_16(i) And &HFFFF&

Next i

Private Function calcCRC16(ByVal iPrevSumm As Long, ByRef btArr() As Byte, ByVal iLen As Long) As Long



Dim i As Long

For i = 0 To iLen

iPrevSumm = CLng(CRCTAB_16((((iPrevSumm \ 256)) And &HFF)) Xor ((iPrevSumm And &HFF) * 256) Xor (btArr(i))) And &HFFFF

Next i


calcCRC16 = iPrevSumm

End Function


Параметры:

IprevSumm - предыдущая сумма. При начальном вызове должна быть равна 0.

btArr() – байтовый входной массив, контрольное число которого надо получить

iLen – длина вышеуказанного байтового массива.




РАСЧЕТ КОНТРОЛЬНОГО ЧИСЛА И КОНТРОЛЬНОЙ СУММЫ ТЕКСТОВОГО ПРЕДСТАВЛЕНИЯ КОНТРОЛЬНОГО ЧИСЛА XML-ДОКУМЕНТА, СОДЕРЖАЩЕГО ОТЧЕТ ПО ФОРМЕ 691

Расчет контрольного числа производится строго в приведенной последовательности по следующим полям XML-документа, содержащего отчет по форме 691:




№ п/п

Наименование элемента

Обозначение элемента в XML схеме документа

Примечание

1

Регламентная дата отчета

DateRegl




2

Код показателя (№)

KodStr

Данная последовательность элементов повторяется столько раз, сколько строк в разделе 1 (Ed01) Отчета по ф. 691. При этом порядок следования строк, содержащих данные элементы должен соответствовать порядку следования их в XML-документе.


3

На 1 января 2012 г.

Jan

4

На 1 апреля 2012 г.

Apr

5

На 1 июля 2012 г.

Jul

6

На 1 октября 2012 г.

Okt

7

На 1 января 2013 г.

JanNext



№ п/п

Наименование элемента

Обозначение элемента в XML схеме документа

Примечание

8

Номер строки

NumStr

Данная последовательность элементов относится к первой строке (Str02_01) раздела 02 (Ed02) Отчета по ф. 691.

9

Должность руководителя финансового органа

ChiefPost

10

ФИО руководителя финансового органа

ChiefFio

11

Должность исполнителя от финансового органа

ExecutorPost

12

ФИО исполнителя от финансового органа

ExecutorFio

13

Телефон

ExecutorPhone

14

Примечание

Comment

При расчете контрольного числа XML-документа, содержащего отчет по форме 691, все поля приводятся к текстовому представлению без лидирующих и завершающих пробелов.

Алгоритм расчета контрольной суммы текстового представления контрольного числа аналогичен алгоритму расчета контрольного числа, описанному в пункте «4.1. Алгоритм расчета контрольного числа».

Пример расчета контрольного числа Отчета по форме 691 и контрольной суммы текстового представления контрольного числа Отчета по форме 691


Данный пример относится к XML-документу, приведенному в Приложении 6.

Строка, полученная из XML-документа для расчета контрольного числа:


01.04.121.10.00.00.00.01.76122.35680.65682.60.02.12211168.22211168.22211178.20.02.2116603.1116603.1116604.10.03.1-116603.1-263017.3-263017.30.03.20.0130117.3130118.30.04.197097097004.29699699690Министр республикиИванов И.Ш.ведущий сспециалистСидоров Л.Л.(844)144-18-15Отчет по форме 691
Контрольное число: 52081.

Контрольная сумма текстового представления контрольного числа: 17344.






  1. Достарыңызбен бөлісу:
1   2   3   4   5




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет