27 lines
813 B
Plaintext
27 lines
813 B
Plaintext
[ -1 split 0 peek char 0 -
|
|
swap 0 swap
|
|
witheach
|
|
[ [ dup char 0 char 9 1+ within iff
|
|
[ char 0 - ] done
|
|
dup char A char Z 1+ within iff
|
|
[ char A - 10 + ] done
|
|
dup char * = iff
|
|
[ drop 36 ] done
|
|
dup char @ = iff
|
|
[ drop 37 ] done
|
|
dup char # = iff
|
|
[ drop 38 ] done
|
|
$ "Unexpected character '" swap
|
|
join $ "' in CUSIP." join fail ]
|
|
i^ 1 & if [ 2 * ]
|
|
10 /mod + + ]
|
|
10 mod 10 swap - 10 mod = ] is cusip ( $ --> b )
|
|
|
|
[ dup echo$ cusip iff
|
|
[ say " is correct." ]
|
|
else [ say " is incorrect." ]
|
|
cr ] is task ( $ --> )
|
|
|
|
$ "037833100 17275R102 38259P508 594918104 68389X106 68389X105"
|
|
nest$ witheach task
|