41 lines
836 B
Plaintext
41 lines
836 B
Plaintext
Procedure.s SEDOLs(rawstring$)
|
|
Protected i, j, sum, c, m
|
|
For i=1 To Len(rawstring$)
|
|
c=Asc(Mid(rawstring$,i,1))
|
|
Select c
|
|
Case Asc("0") To Asc("9")
|
|
j=Val(Mid(rawstring$,i,1))
|
|
Default
|
|
j=c-Asc("A")
|
|
EndSelect
|
|
Select i
|
|
Case 1, 3, 7: m=1
|
|
Case 2, 5: m=3
|
|
Case 4: m=7
|
|
Default: m=9
|
|
EndSelect
|
|
sum+j*m
|
|
Next
|
|
sum=(10-(sum%10))%10
|
|
ProcedureReturn rawstring$+Str(sum)
|
|
EndProcedure
|
|
|
|
Define result$, i
|
|
Restore Tests
|
|
For i=0 To 10
|
|
Read.s SEDOL$
|
|
result$+SEDOLs(SEDOL$)
|
|
If i%2
|
|
result$+#CRLF$
|
|
ElseIf i<10
|
|
result$+", "
|
|
EndIf
|
|
Next
|
|
MessageRequester("SEDOLs","Result"+#CRLF$+result$)
|
|
|
|
DataSection
|
|
Tests:
|
|
Data.s "710889","B0YBKJ","406566","B0YBLH","228276"
|
|
Data.s "B0YBKL","557910","B0YBKR","585284","B0YBKT","B00030"
|
|
EndDataSection
|