Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/SEDOLs/Seed7/sedols.seed7
Normal file
35
Task/SEDOLs/Seed7/sedols.seed7
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
$ include "seed7_05.s7i";
|
||||
|
||||
const func char: sedolCheckDigit (in string: sedol) is func
|
||||
result
|
||||
var char: checkDigit is ' ';
|
||||
local
|
||||
const array integer: weight is [] (1, 3, 1, 7, 3, 9);
|
||||
var char: ch is ' ';
|
||||
var integer: index is 0;
|
||||
var integer: item is 0;
|
||||
var integer: sum is 0;
|
||||
begin
|
||||
for ch key index range sedol do
|
||||
case ch of
|
||||
when {'0' .. '9'}:
|
||||
item := ord(ch) - ord('0');
|
||||
when {'A' .. 'Z'} - {'A', 'E', 'I', 'O', 'U'}:
|
||||
item := ord(ch) - ord('A') + 10;
|
||||
otherwise:
|
||||
raise RANGE_ERROR;
|
||||
end case;
|
||||
sum +:= item * weight[index];
|
||||
end for;
|
||||
checkDigit := chr(-sum mod 10 + ord('0'));
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var string: sedol is "";
|
||||
begin
|
||||
for sedol range [] ("710889", "B0YBKJ", "406566", "B0YBLH", "228276", "B0YBKL",
|
||||
"557910", "B0YBKR", "585284", "B0YBKT", "B00030") do
|
||||
writeln(sedol <& sedolCheckDigit(sedol));
|
||||
end for;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue