Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/CUSIP/Icon/cusip.icon
Normal file
40
Task/CUSIP/Icon/cusip.icon
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# cusip.icn -- Committee on Uniform Security Identification Procedures
|
||||
|
||||
procedure main()
|
||||
local code, codes
|
||||
codes := ["037833100", "17275R102", "38259P508",
|
||||
"594918104", "68389X106", "68389X105"]
|
||||
while code := pop(codes) do {
|
||||
writes(code, " : ")
|
||||
if check_code(code) then
|
||||
write("valid.")
|
||||
else write("not valid.")
|
||||
}
|
||||
end
|
||||
|
||||
procedure check_code(c)
|
||||
local p, sum, value
|
||||
static codetable
|
||||
initial codetable := buildtable()
|
||||
|
||||
sum := 0
|
||||
value := 0
|
||||
every p := 1 to 8 do {
|
||||
if p % 2 = 1 then # odd position
|
||||
value := codetable[c[p]]
|
||||
else # even position
|
||||
value := 2 * codetable[c[p]]
|
||||
sum +:= (value / 10) + (value % 10)
|
||||
}
|
||||
sum := (10 - (sum % 10)) % 10
|
||||
if sum = c[9] then return else fail
|
||||
end
|
||||
|
||||
procedure buildtable()
|
||||
local chars, n, t
|
||||
t := table()
|
||||
chars := &digits || &ucase || "*@#"
|
||||
every n := 1 to *chars do
|
||||
t[chars[n]] := (n - 1)
|
||||
return t
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue