50 lines
1.7 KiB
Text
50 lines
1.7 KiB
Text
|
|
<br/>
|
|||
|
|
|
|||
|
|
A '''CUSIP''' is a nine-character alphanumeric code that identifies a North American financial security for the purposes of facilitating clearing and settlement of trades. The CUSIP was adopted as an American National Standard under Accredited Standards X9.6.
|
|||
|
|
|
|||
|
|
|
|||
|
|
;Task:
|
|||
|
|
Ensure the last digit (i.e., the ''check digit'') of the '''CUSIP''' code (the 1<sup>st</sup> column) is correct, against the following:
|
|||
|
|
* 037833100 Apple Incorporated
|
|||
|
|
* 17275R102 Cisco Systems
|
|||
|
|
* 38259P508 Google Incorporated
|
|||
|
|
* 594918104 Microsoft Corporation
|
|||
|
|
* 68389X106 Oracle Corporation (''incorrect'')
|
|||
|
|
* 68389X105 Oracle Corporation
|
|||
|
|
|
|||
|
|
|
|||
|
|
;Example pseudo-code below.
|
|||
|
|
<syntaxhighlight lang=text>algorithm Cusip-Check-Digit(cusip) is
|
|||
|
|
Input: an 8-character CUSIP
|
|||
|
|
|
|||
|
|
sum := 0
|
|||
|
|
for 1 ≤ i ≤ 8 do
|
|||
|
|
c := the ith character of cusip
|
|||
|
|
if c is a digit then
|
|||
|
|
v := numeric value of the digit c
|
|||
|
|
else if c is a letter then
|
|||
|
|
p := ordinal position of c in the alphabet (A=1, B=2...)
|
|||
|
|
v := p + 9
|
|||
|
|
else if c = "*" then
|
|||
|
|
v := 36
|
|||
|
|
else if c = "@" then
|
|||
|
|
v := 37
|
|||
|
|
else if' c = "#" then
|
|||
|
|
v := 38
|
|||
|
|
end if
|
|||
|
|
if i is even then
|
|||
|
|
v := v × 2
|
|||
|
|
end if
|
|||
|
|
|
|||
|
|
sum := sum + int ( v div 10 ) + v mod 10
|
|||
|
|
repeat
|
|||
|
|
|
|||
|
|
return (10 - (sum mod 10)) mod 10
|
|||
|
|
end function</syntaxhighlight>
|
|||
|
|
|
|||
|
|
;See related tasks:
|
|||
|
|
* [[SEDOLs|SEDOL]]
|
|||
|
|
* [[Validate_International_Securities_Identification_Number|ISIN]]
|
|||
|
|
<br>
|
|||
|
|
|