Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
63
Task/CUSIP/ANSI-BASIC/cusip.basic
Normal file
63
Task/CUSIP/ANSI-BASIC/cusip.basic
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
100 REM CUSIP
|
||||
110 DECLARE EXTERNAL SUB PrintVerdict
|
||||
120 DECLARE EXTERNAL FUNCTION CusipCheckDigit
|
||||
130 DECLARE EXTERNAL FUNCTION IsValidCusip
|
||||
140 PRINT "CUSIP Verdict"
|
||||
150 CALL PrintVerdict("037833100")
|
||||
160 CALL PrintVerdict("17275R102")
|
||||
170 CALL PrintVerdict("38259P508")
|
||||
180 CALL PrintVerdict("594918104")
|
||||
190 CALL PrintVerdict("68389X106")
|
||||
200 CALL PrintVerdict("68389X105")
|
||||
210 END
|
||||
220 REM **
|
||||
230 EXTERNAL FUNCTION CusipCheckDigit(Cusip$)
|
||||
240 LET I = 1
|
||||
250 LET Sum = 0
|
||||
260 LET L = LEN(Cusip$)
|
||||
270 DO WHILE I < L
|
||||
280 LET C$ = Cusip$(I:I)
|
||||
290 IF ("0" <= C$) AND (C$ <= "9") THEN
|
||||
300 LET V = VAL(C$)
|
||||
310 ELSEIF ("A" <= C$) AND (C$ <= "Z") THEN
|
||||
320 LET V = ORD(C$) - 65 + 10
|
||||
330 ELSEIF C$ = "*" THEN
|
||||
340 LET V = 36
|
||||
350 ELSEIF C$ = "@" THEN
|
||||
360 LET V = 37
|
||||
370 ELSEIF C$ = "#" THEN
|
||||
380 LET V = 38
|
||||
390 ELSE
|
||||
400 LET CusipCheckDigit = -1
|
||||
410 EXIT FUNCTION
|
||||
420 END IF
|
||||
430 IF MOD(I - 1, 2) = 1 THEN LET V = 2 * V
|
||||
440 IF I <= 8 THEN LET Sum = Sum + INT(V / 10) + MOD(V, 10)
|
||||
450 LET I = I + 1
|
||||
460 LOOP
|
||||
470 IF I <> 9 THEN
|
||||
480 LET CusipCheckDigit = -1
|
||||
490 ELSE
|
||||
500 LET CusipCheckDigit = MOD(10 - MOD(Sum, 10), 10)
|
||||
510 END IF
|
||||
520 END FUNCTION
|
||||
530 REM **
|
||||
540 EXTERNAL FUNCTION IsValidCusip (Cusip$)
|
||||
550 LET Check = CusipCheckDigit(Cusip$)
|
||||
560 IF Check < 0 THEN
|
||||
570 LET IsValidCusip = 0
|
||||
580 ELSEIF Cusip$(9:9) = CHR$(48 + Check) THEN
|
||||
590 LET IsValidCusip = -1
|
||||
600 ELSE
|
||||
610 LET IsValidCusip = 0
|
||||
620 END IF
|
||||
630 END FUNCTION
|
||||
640 REM **
|
||||
650 EXTERNAL SUB PrintVerdict (Cusip$)
|
||||
660 PRINT Cusip$;
|
||||
670 IF IsValidCusip(Cusip$) <>0 THEN
|
||||
680 PRINT " : Valid"
|
||||
690 ELSE
|
||||
700 PRINT " : Invalid"
|
||||
710 END IF
|
||||
720 END SUB
|
||||
Loading…
Add table
Add a link
Reference in a new issue