Stock Exchange Daily Official List
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
SEDOL adalah sebuah singkatan untuk Stock Exchange Daily Official List atau daftar pengkodifikasian indentitas dari sebuah sekuritas yang digunakan di Inggris Raya pada lembaga kliring. Penomoran ini diberikan oleh London Stock Exchange atas permintaan penerbit sekuritas dan ketentuan SEDOL ini berlaku sebagai National Securities Identifying Number / NSIN bagi keseluruhan penerbitan sekuritas di Inggris Raya dan juga merupakan bagian dari International Securities Identification Number disingkat ISIN sebagaimana dengan ketentuan kodifikasi penomoran internasional yang berlaku secara global.
Daftar isi |
[sunting] Penjelasan
SEDOL pada periode sebelum 26 Januari 2004 awalnya terdiri atas tujuh buah karater angka yang dibagi kedalam 2 bagian pengertian yaitu enam angka awal dan satu angka akhir sebagai digit pengkontrolan. pemakaian SEDOL untuk Asia dan Afrika dimulai dengan angka 6, sedangkan untuk Inggris Raya dimulai dengan angka 0 atau 3 dan untuk Amerika Serikat dimulai dengan angka 2. Kemudian pada periode sesudah 26 Januari 2004, SEDOL berubah menjaadi campuran karakter huruf dengan angka, seperti dimulai dengan B000009. dalam ketentuan SEDOL yang baru huruf hidup tidak dipergunakan lagi pada posisi capuran huruf dan angka.
Angka pengontrolan pada SEDOL pembuatan penjumlahan keseluruhan tujuh karakter tersebut dengan angka 10. pada angka pengontrolan adalah hasil perhitungan dari penjumlahan enam karakter pendahulunya. pada huruf melekat nilai 9 kemudian ditambahkan dengan nilai urutan huruf, sebagaimana pada B = 11 dan Z = 35. walaupun huruf hidup tidak dipergunakan lagi pada SEDOL akan tetapi pada penghitungan tidak menghilangkan bobot penjumlahan (contoh: H = 17 dan J = 19), guna mempermudahkan perhitungan berikut rangkaian faktor penjumlahannya:
Pertama 1 Kedua 3 Ketiga 1 Keempat 7 Kelima 3 Keenam 9 Ketujuh 1 (digit pengontrolan)
Nilai perkalian karakter pada bobotnya sedangan digit pengontrolan diperoleh dari hasil penjumlahannya dengan nilai 10, dimana dapat disebut keseluruhan enam karakter dikalikan sebagai berikut (10 - (jumlah dari modul 10) modul 10 sebagai penomoran sekuritas di Inggris Raya, SEDOL tetap berinduk pada ISIN dengan penambahan awalan 00 di depan kemudian diberlakukan ketentuan ISIN pada digit pengontrolannya.
[sunting] Contoh
BAE Systems: 0263494
The checksum can be calculated by multiplying the first six digits by their weightings:
(0×1, 2×3, 6×1, 3×7, 4×3, 9×9) = (0, 6, 6, 21, 12, 81)
Then summing up the results:
0 + 6 + 6 + 21 + 12 + 81 = 126
The check digit is then calculated by:
(10 - (126 modulo 10)) modulo 10 = (10 - 6) modulo 10 = 4
[sunting] In Delphi
function GetSedolCheckDigit(const BaseSedol: string): Integer; const Weights: array[1..6] of Integer = ( 1, 3, 1, 7, 3, 9 ); var i, d: Integer; begin if Length(BaseSedol) <> 6 then raise Exception.Create( 'SEDOLs without a check-digit must six characters long'); Result := 0; for i := 1 to 6 do begin case BaseSedol[i] of '0'..'9': d := Ord(BaseSedol[i]) - Ord('0'); 'A'..'Z': d := Ord(BaseSedol[i]) - Ord('A') + 10; else raise Exception.Create( 'SEDOLs must have only digits and uppercase letters'); end; Inc(Result, d * Weights[i]); end; Result := (10 - (Result mod 10)) mod 10; end;
[sunting] In J
(other formulations as possible; some twice as fast[1]):
sn =. '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' NB. SEDOL numerals acs =: (10 | 1 3 1 7 3 9 +/@:* -)&.(sn i. |:) NB. Checksum
[sunting] In Perl
my @weights = (1, 3, 1, 7, 3, 9); sub sedol_check_digit { my ($sedol) = @_; die "invalid SEDOL format: `$sedol'\n" if $sedol !~ /^[0-9A-Z]{6,7}$/; my @chars = split //, $sedol; my $sum = 0; for my $i ( 0 .. $#weights ) { my $char = $chars[$i]; my $value = $char =~ /\d/ ? $char : ord($char) - ord('A') + 10; $sum += $value * $weights[$i]; } return (10 - ($sum % 10)) % 10; }
[sunting] In Python
import string # constants sedolchars = string.digits + string.ascii_uppercase sedol2value = dict((ch, n) for n,ch in enumerate(sedolchars)) for ch in 'AEIOU': del sedol2value[ch] sedolchars = sorted(sedol2value.keys()) sedolweight = [1,3,1,7,3,9,1] def check(sedol): return len(sedol) == 7 and \ all(ch in sedolchars for ch in sedol) and \ sum(sedol2value[ch] * sedolweight[n] for n,ch in enumerate(sedol) ) % 10 == 0 def checksum(sedol): tmp = sum(sedol2value[ch] * sedolweight[n] for n,ch in enumerate(sedol[:6]) ) return sedolchars[ (10 - (tmp % 10)) % 10] sedol = '0263494' print sedol, checksum(sedol)
[sunting] In Visual Basic
Option Explicit Public Function getSedolCheckDigit(str As String) As Variant ' calculates the final digit of a six digit sedol code using the algo described on wikipedia If Len(str) <> 6 Then getSedolCheckDigit = "Six chars only please" Exit Function End If Dim mult(6) As Integer mult(1) = 1: mult(2) = 3: mult(3) = 1: mult(4) = 7: mult(5) = 3: mult(6) = 9 ' didn't use Array() to avoid Option Base problems Dim i, total As Integer Dim s As String total = 0 For i = 1 To 6 s = Mid(str, i, 1) total = total + IIf(IsNumeric(s), Val(s), Asc(s) - 55) * mult(i) Next getSedolCheckDigit = (10 - (total Mod 10)) Mod 10 End Function function IsSedolValid(const Sedol: string): Boolean; function HasOnlyValidChars: Boolean; const ValidChars = ['0'..'9', 'A'..'Z']; var ch: Char; begin for ch in Sedol do begin if not (ch in ValidChars) then begin Result := False; Exit; end; end; Result := True; end; begin Result := (Length(Sedol) = 7) and HasOnlyValidChars and (GetSedolCheckDigit(Copy(Sedol, 1, 6)) = Ord(Sedol[7]) - Ord('0')); end;
[sunting] Referensi
- ^ Bron, Dan; Rich, Henry; Hui, Roger, Check digit utility

