'Copyright 2000 The American Cryptogram Association (ACA) '3613 Piedmont Drive, Plano TX 75075-6234 'All rights reserved. 'DiAvg.Bas contains the function 'DiAvg() and DiSum() introduced 'in May/Jun 2001 and corrected 'in the Nov/Dec 2001 Computer Column. 'See those two Columns as well as 'Sep/Oct 2001 for details about how 'to use these functions in programs. 'Corrected Nov/Dec 2001 Function DiAvg(S$,A) DLen%= Len(S$) - 1 If A<>1 then Dlen%=((Dlen%-1)\2)+1 DiAvg = Int(100*(DiSum(S$,A)/Dlen%)) End Function 'DiAvg Function DiSum(S$,A) Static IF Init%=0 Then DIM Di%(26,26) d$=d$+"47874675736879373989676574742" d$=d$+"08111630721710653712060825273" d$=d$+"28727621822647613040765686558" d$=d$+"43665753677656062978887667458" d$=d$+"79775998577673745376447226538" d$=d$+"40757624050755475577326557527" d$=d$+"66635051854494348315548426576" d$=d$+"25050758777744258797647884735" d$=d$+"05500040003000005000006000005" d$=d$+"43274246224365313653040508557" d$=d$+"85448258548524666550718643842" d$=d$+"47104647613656140608678869684" d$=d$+"66568535896563626677686663678" d$=d$+"97729789684537333732672173276" d$=d$+"07666030400000000000000000000" d$=d$+"06000008667966583666686368865" d$=d$+"60718676865784666687458974706" d$=d$+"28665865983366596278874707266" d$=d$+"76646462377856088833434361008" d$=d$+"00070000050001021003073347328" d$=d$+"72244673055521403141424203510" d$=d$+"11035012520223066666655633565" d$=d$+"86357643624240005000300200300" d$=d$+"010200044" For I%=0 to 675 'Build Di% Table C$=Mid$(D$,I%+1,1): V% = Val(C$) Di%((I%\26)+1,(I% mod 26)+1)=V% Next I% d$="" : Init%=1 'Initialization done End If TLen%=Len(S$)-1 : Sum%=0 :Stp%=2 If A=1 Then Stp%=1 For I%=1 to TLen% Step Stp% R%=Asc(Mid$(S$,I%,1))-64 C%=Asc(Mid$(S$,I%+1,1))-64 Sum%=Sum%+Di%(R%,C%) Next I% DiSum = Sum% End Function 'DiSum