20 lines
628 B
Turing
20 lines
628 B
Turing
$$ MODE TUSCRIPT
|
|
check="1'3'1'7'3'9"
|
|
values="123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
value=STRINGS (values,":<%:")
|
|
BUILD r_TABLE/or illegal=":A:E:I:O:U:"
|
|
LOOP input="710889'B0YBKJ'406566'B0YBLH'228276'B0YBKL'557910'B0YBKR'585284'B0YBKT'BOYAKT'B00030",sum=""
|
|
IF (input.ma.illegal) THEN
|
|
PRINT/ERROR input, " illegal"
|
|
CYCLE
|
|
ENDIF
|
|
strings=STRINGS (input,":<%:")
|
|
LOOP d,nr=strings
|
|
c=SELECT (check,#d)
|
|
IF (nr!='digits') nr=FILTER_INDEX (value,":{nr}:",-)
|
|
x=nr*c, sum=APPEND(sum,x)
|
|
ENDLOOP
|
|
endsum=SUM(sum), checksum=10-(endsum%10)
|
|
IF (checksum==10) checksum=0
|
|
PRINT input, " checkdigit: ", checksum
|
|
ENDLOOP
|