ISBN alt und neu

Prof. Dr. Dörte Haftendorn Juli 2014  www.mahematik-verstehen.de
Erklärungen weitere Links und  Impressum in der Webversion unten.
http://haftendorn.uni-lueneburg.de/mathe-lehramt/codierung/ean/isbn-alt-neu.htm

Manipulate[DynamicModule[{ isbn9,isbnp,zili,fli,f,pli,prsu,i,},
eanAnhaengenP[eanop_]:=Module[{z,zili,fli,pli,i,prsu,p},
z= eanop*10;
zili=IntegerDigits[z];fli={1,3,1,3,1,3,1,3,1,3,1,3,1};
If[Length[zili]=!=13,Return[Text["EAN ohne Prüfziffer müssen 12 Ziffern sein."]]]; 
pli=Array[f,13];
For[i=1,i<14,i++,
pli[[i]]=zili[[i]]*fli[[i]]    ] (*endfor*); 
prsu=Total[pli];
p=10-Mod[prsu,10];
z+p
];
If[StringLength[ISBN10]=!=10,"Deine ISBN10 hat nicht genau 10 Stellen.",
isbn9=StringDrop[ISBN10,{10}];
isbnp=StringDrop[ISBN10,{1,9}];
zili=IntegerDigits[ToExpression[isbn9]];
fli={10,9,8,7,6,5,4,3,2};
pli=Array[f,10];
For[i=1,i<10,i++,
pli[[i]]=zili[[i]]*fli[[i]]    ]; 
If[isbnp=="x" || isbnp =="X", pli[[10]]=10, If[NumberQ[ToExpression[isbnp]],pli[[10]]=ToExpression[isbnp],pli[[10]]=10000]];
prsu=Total[pli]; (* Dies für ISBN10 *)
(* Nun umwandeln in ISBN13 *)
isbnZahl=ToExpression[StringDrop[ISBN10,{10}]];
ISBN13=eanAnhaengenP[978*10^9+isbnZahl];
(* Ausgabe *)
If[prsu>10000,"In ISBN10 ist der letzte Buchstabe falsch",
Table[{{"Produkte ",ToString[pli]},
         {If[Mod[prsu,11]==0,
   {{"Prüfsumme  ",ToString[prsu], " ok"}},                                   { {"Prüfsumme  ", ToString[prsu], " passt nicht, nächster Elfer ist", ToString[prsu-Mod[prsu,11 ]+11]}}
](*ende If Prüfsumme*)},
{"Falls Prüfsumme 'ok' ist, gilt ISBN13 = " , ISBN13}}]//TableForm(*end Table*)
]]],
{ISBN10,"123457779X"},
FrameLabel->{{None,"Info\nunten"},{"www.mathematik-verstehen.de","ISBN Buchnummer, aus alt wird neu"}},
LabelStyle->Directive[RGBColor[0.7,0,0],Large]
]