Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
61
Task/CUSIP/QuickBASIC/cusip.basic
Normal file
61
Task/CUSIP/QuickBASIC/cusip.basic
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
' CUSIP
|
||||
DECLARE SUB PrintVerdict (Cusip$)
|
||||
DECLARE FUNCTION CusipCheckDigit% (Cusip$)
|
||||
DECLARE FUNCTION IsValidCusip% (Cusip$)
|
||||
CONST TRUE% = -1, FALSE% = 0
|
||||
PRINT "CUSIP Verdict"
|
||||
PrintVerdict "037833100"
|
||||
PrintVerdict "17275R102"
|
||||
PrintVerdict "38259P508"
|
||||
PrintVerdict "594918104"
|
||||
PrintVerdict "68389X106"
|
||||
PrintVerdict "68389X105"
|
||||
END
|
||||
|
||||
FUNCTION CusipCheckDigit% (Cusip$)
|
||||
I% = 1
|
||||
Sum% = 0
|
||||
L% = LEN(Cusip$)
|
||||
DO WHILE I% < L%
|
||||
IF ("0" <= MID$(Cusip$, I%, 1)) AND (MID$(Cusip$, I%, 1) <= "9") THEN
|
||||
V% = ASC(MID$(Cusip$, I%, 1)) - 48 ' 0
|
||||
ELSEIF ("A" <= MID$(Cusip$, I%, 1)) AND (MID$(Cusip$, I%, 1) <= "Z") THEN
|
||||
V% = ASC(MID$(Cusip$, I%, 1)) - 65 + 10
|
||||
ELSEIF MID$(Cusip$, I%, 1) = "*" THEN
|
||||
V% = 36
|
||||
ELSEIF MID$(Cusip$, I%, 1) = "@" THEN
|
||||
V% = 37
|
||||
ELSEIF MID$(Cusip$, I%, 1) = "#" THEN
|
||||
V% = 38
|
||||
ELSE
|
||||
CusipCheckDigit% = -1
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
IF (I% - 1) MOD 2 = 1 THEN V% = 2 * V%
|
||||
IF I% <= 8 THEN Sum% = Sum% + (V% \ 10) + (V% MOD 10)
|
||||
I% = I% + 1
|
||||
LOOP
|
||||
IF I% <> 9 THEN
|
||||
CusipCheckDigit% = -1
|
||||
ELSE
|
||||
CusipCheckDigit% = (10 - (Sum% MOD 10)) MOD 10
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION IsValidCusip% (Cusip$)
|
||||
Check% = CusipCheckDigit%(Cusip$)
|
||||
IF Check% < 0 THEN
|
||||
IsValidCusip% = FALSE
|
||||
ELSE
|
||||
IsValidCusip% = (MID$(Cusip$, 9, 1) = CHR$(48 + Check%))
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
SUB PrintVerdict (Cusip$)
|
||||
PRINT Cusip$;
|
||||
IF IsValidCusip%(Cusip$) THEN
|
||||
PRINT " : Valid"
|
||||
ELSE
|
||||
PRINT " : Invalid"
|
||||
END IF
|
||||
END SUB
|
||||
Loading…
Add table
Add a link
Reference in a new issue