- Международный идентификационный код ценной бумаги
-
Международный идентификационный код ценной бумаги (англ. International Securities Identification Number, общепринятое сокращение — ISIN) — 12-разрядный буквенно-цифровой код, однозначно идентифицирующий ценную бумагу. ISIN присваивается следующим финансовым инструментам:
Структура ISIN 1 2 3 4 5 6 7 8 9 10 11 12 Код
страныNSIN Контр.
цифраСтруктура ISIN-кода определяется стандартом ISO 6166. Первые два символа — буквы, определяющие код страны эмитента согласно стандарту ISO 3166-1 (российские ISIN-коды начинаются буквами RU). Далее следуют 9 букв и цифр национального идентификационного кода ценной бумаги (англ. National Securities Identifying Number, NSIN). Завершает код контрольная цифра.
ISIN-код присваивается национальными нумерующими агентствами (англ. National numbering agency, NNA).
Содержание
Методология расчёта ISIN
PL/SQL функция проверки корректности кода ISIN
-- используется в продуктах СофтВел (http://www.softwell.ru) CREATE OR REPLACE FUNCTION f_isin_check (isin_code VARCHAR2) RETURN INTEGER -- проверка ISIN кода: -- 0 - правильный код -- -1 - неправильный формат (надо 2 буквы + 9 букв/цифр + 1 цифра) -- >0 - неправильная контрольная сумма AS visin_code VARCHAR (40); -- исин код digit_code VARCHAR (80); -- цифровое представление исин кода control_summ INT; -- контрольная сумма p VARCHAR (1); -- текущий символ t INT; -- текущая цифра i INT; -- индекс BEGIN -- форматируем все буквы в заглавные visin_code := UPPER (isin_code); -- проверка длины IF ( (LENGTH (visin_code) <> 12) OR (visin_code IS NULL)) THEN RETURN -1; END IF; -- проверка формата IF ( (SUBSTR (visin_code, 1, 1) < 'A') OR (SUBSTR (visin_code, 1, 1) > 'Z') OR (SUBSTR (visin_code, 2, 1) < 'A') OR (SUBSTR (visin_code, 2, 1) > 'Z') OR (SUBSTR (visin_code, 12, 1) < '0') OR (SUBSTR (visin_code, 12, 1) > '9')) THEN RETURN -1; END IF; -- превращаем буквы в цифры digit_code := ''; FOR i IN 1 .. LENGTH (visin_code) LOOP p := SUBSTR (visin_code, i, 1); IF ( (p >= '0') AND (p <= '9')) THEN digit_code := digit_code || p; ELSIF ( (p >= 'A') AND (p <= 'Z')) THEN -- A -> 10, B -> 11, ... , Z -> 35 digit_code := digit_code || LTRIM (TO_CHAR (ASCII (p) - 55, '99')); ELSE RETURN -1; END IF; END LOOP; -- расчет контрольной суммы -- control_summ := 0; FOR i IN 1 .. LENGTH (digit_code) LOOP t := ASCII (SUBSTR (digit_code, i)) - 48; t := t * (MOD (LENGTH (digit_code) - i, 2) + 1); IF (t > 9) THEN t := t - 9; END IF; control_summ := control_summ + t; END LOOP; -- выводим остаток от деления контрольной суммы на 10 -- у правильных ISIN кодов этот остаток равен 0 RETURN MOD (control_summ, 10); END f_isin_check
Пример
ISIN акции Газпрома номиналом 5 руб. RU0007661625.
См. также
Ссылки
- Официальный сайт Российского Национального Нумерующего Агентства
- Официальный сайт Ассоциации Национальных Агентств по Нумерации (на английском)
Категория:- Ценные бумаги
Wikimedia Foundation. 2010.