Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
50
Task/CUSIP/SNOBOL4/cusip.sno
Normal file
50
Task/CUSIP/SNOBOL4/cusip.sno
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/local/bin/snobol4 -r
|
||||
* cusip.sno
|
||||
* -- Committee on Uniform Security Identification Procedures
|
||||
* -r : read data placed after the end label.
|
||||
* Verify check digit and size of cusip code.
|
||||
|
||||
define("cusipt()i") :(cusipt_end)
|
||||
cusipt
|
||||
chars = &digits &ucase "*@#"
|
||||
cusipt = table()
|
||||
i = 0
|
||||
cusipt_1
|
||||
chars pos(i) len(1) . c :f(return)
|
||||
cusipt[c] = i
|
||||
i = i + 1 :(cusipt_1)
|
||||
cusipt_end
|
||||
|
||||
define("check_cusip(line)c,i") :(check_cusip_end)
|
||||
check_cusip
|
||||
eq(size(line), 9) :f(freturn)
|
||||
check_cusip = 0
|
||||
i = 0
|
||||
check_cusip_1
|
||||
line pos(i) len(1) . c
|
||||
value = t[c]
|
||||
value = eq(remdr(i, 2), 1) t[c] * 2
|
||||
check_cusip = check_cusip + (value / 10) + remdr(value, 10)
|
||||
i = lt(i, 7) i + 1 :s(check_cusip_1)
|
||||
check_cusip = remdr(10 - remdr(check_cusip, 10), 10)
|
||||
eq(substr(line, 9, 1), check_cusip) :s(return)f(freturn)
|
||||
check_cusip_end
|
||||
|
||||
*** main ***
|
||||
t = cusipt()
|
||||
|
||||
read line = input :f(end)
|
||||
check_cusip(line) :f(bad_cusip)
|
||||
output = line " valid." :(read)
|
||||
bad_cusip
|
||||
output = line " not valid." :(read)
|
||||
end
|
||||
037833100
|
||||
17275R102
|
||||
38259P508
|
||||
594918104
|
||||
68389X106
|
||||
68389X105
|
||||
68389X10
|
||||
68389X1059
|
||||
68389x105
|
||||
Loading…
Add table
Add a link
Reference in a new issue