SEDOLs: Difference between revisions

Added XPL0 example.
(Added XPL0 example.)
Line 4,146:
B00030 -> B000300
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>
 
772

edits