SEDOLs: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
|||
Line 4,146: | Line 4,146: | ||
B00030 -> B000300 |
B00030 -> B000300 |
||
I23456 -> not valid |
I23456 -> not valid |
||
</pre> |
|||
=={{header|XPL0}}== |
|||
<lang XPL0>string 0; \use zero-terminated strings |
|||
func CheckDigit(Str); \Return the check digit for a SEDOL |
|||
char Str; |
|||
int Sum, I, C, V; |
|||
[Sum:= 0; |
|||
for I:= 0 to 6-1 do |
|||
[C:= Str(I); |
|||
case of |
|||
C>=^0 & C<=^9: V:= C-^0; |
|||
C>=^A & C<=^Z: V:= C-^A+10 |
|||
other V:= -1; |
|||
case I of |
|||
1, 4: V:= V*3; |
|||
3: V:= V*7; |
|||
5: V:= V*9 |
|||
other []; |
|||
Sum:= Sum+V; |
|||
]; |
|||
return rem( (10 - rem(Sum/10)) / 10 ) + ^0; |
|||
]; |
|||
int Sedol, N; |
|||
[Sedol:= ["710889", |
|||
"B0YBKJ", |
|||
"406566", |
|||
"B0YBLH", |
|||
"228276", |
|||
"B0YBKL", |
|||
"557910", |
|||
"B0YBKR", |
|||
"585284", |
|||
"B0YBKT", |
|||
"B00030"]; |
|||
for N:= 0 to 11-1 do |
|||
[Text(0, Sedol(N)); |
|||
ChOut(0, CheckDigit(Sedol(N))); |
|||
CrLf(0); |
|||
]; |
|||
]</lang> |
|||
{{out}} |
|||
<pre> |
|||
7108899 |
|||
B0YBKJ7 |
|||
4065663 |
|||
B0YBLH2 |
|||
2282765 |
|||
B0YBKL9 |
|||
5579107 |
|||
B0YBKR5 |
|||
5852842 |
|||
B0YBKT7 |
|||
B000300 |
|||
</pre> |
</pre> |
||