Ìåæäóíàðîäíûé èäåíòèôèêàöèîííûé êîä öåííîé áóìàãè
Ìåæäóíàðîäíûé èäåíòèôèêàöèîííûé êîä öåííîé áóìàãè (àíãë. 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.
[ïðàâèòü] Ñì. òàêæå
[ïðàâèòü] Ññûëêè
- Îôèöèàëüíûé ñàéò Ðîññèéñêîãî Íàöèîíàëüíîãî Íóìåðóþùåãî Àãåíòñòâà
- Îôèöèàëüíûé ñàéò Àññîöèàöèè Íàöèîíàëüíûõ Àãåíòñòâ ïî Íóìåðàöèè (íà àíãëèéñêîì)
| Ýòî çàãîòîâêà ñòàòüè ïî ôèíàíñàì. Âû ìîæåòå ïîìî÷ü ïðîåêòó, èñïðàâèâ è äîïîëíèâ å¸. |