// ******************* Start CF ****************************
// By KreAktiv.ch - 2009 - GNU Lizenz
// Dieser Code untersteht der GNU-Lizenz. (General Public License)
// Dieses Script darf von jedermann kostenlos benutzt und geändert werden,
// solange der Copyright-Verweis und die restlichen Kommentare erhalten bleiben.
// Mit dem Einsatz dieses Skripts akzeptieren Sie, dass KreAktiv von jeglicher
// Haftung und Gewährleistung hinsichtlich des Einsatzes befreit ist.
// Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne
// vorherige Absprache ausdrücklich untersagt.
// In jeden Fall muss der Copyright-Verweis und die restlichen Kommentare
// erhalten bleiben.
// *********************************************************
// Filemaker 10
// cfDefinition für Code EAN13
// Version 1.2 / Läuft 7.1.2010rh
// *********************************************************
//
// Aufruf:	[ Zahl, Resultat -> (Text) ]
Name:		cfEAN13
Parameter:	Zahl

SetzeVars([
 CheckSum = Mod( 10 - Mod(
 (ZeichenMitte( Zahl; 2; 1) + ZeichenMitte( Zahl; 4; 1) + ZeichenMitte( Zahl; 6; 1) 
 + ZeichenMitte( Zahl; 8; 1) + ZeichenMitte( Zahl; 10; 1)+ ZeichenMitte( Zahl; 12; 1)) * 3
 + ZeichenLinks( Zahl; 1) + ZeichenMitte( Zahl; 3; 1) + ZeichenMitte( Zahl; 5; 1) 
 + ZeichenMitte( Zahl; 7; 1) + ZeichenMitte( Zahl; 9; 1) + ZeichenMitte( Zahl; 11; 1)
 ; 10); 10);
 EAN13 = Wenn( Länge( Zahl) ≠ 12; // Unser Code hat 12 Zeichen + Checksumme
  Wenn( Länge( Zahl) = 13;
   ZeichenLinks( Zahl; 12);
   ZeichenRechts ( "000000000000" & Zahl; 12));
  Zahl) & CheckSum
]; 
SetzeVars( $first = ZeichenLinks( EAN13; 1) ; $first) // Ende SetzeVars
& Char( 65 + ZeichenMitte( EAN13; 2; 1))
& Wenn( $first < 4; Char( 65 + ZeichenMitte( EAN13; 3; 1));
  Char( 75 + ZeichenMitte( EAN13; 3; 1)))
& Wenn( $first = 0 ODER $first = 4 ODER $first = 7 ODER $first = 8;
  Char( 65 + ZeichenMitte( EAN13; 4; 1)); Char( 75 + ZeichenMitte( EAN13; 4; 1))) 
& Wenn( $first < 2 ODER $first = 4 ODER $first = 5 ODER $first = 9;
  Char( 65 + ZeichenMitte( EAN13; 5; 1)); Char( 75 + ZeichenMitte( EAN13; 5; 1)))
& Wenn( $first = 0 ODER $first = 2 ODER $first = 5 ODER $first = 6 ODER $first = 7;
  Char( 65 + ZeichenMitte( EAN13; 6; 1)); Char( 75 + ZeichenMitte( EAN13; 6; 1)))
& Wenn( $first = 0 ODER $first = 3 ODER $first = 6 ODER $first >7;
  Char( 65 + ZeichenMitte( EAN13; 7; 1)); Char( 75 + ZeichenMitte( EAN13; 7; 1))) 
& "*" 
& Char( 97 + ZeichenMitte( EAN13; 8; 1)) 
& Char( 97 + ZeichenMitte( EAN13; 9; 1)) 
& Char( 97 + ZeichenMitte( EAN13; 10; 1)) 
& Char( 97 + ZeichenMitte( EAN13; 11; 1)) 
& Char( 97 + ZeichenMitte( EAN13; 12; 1)) 
& Char( 97 + ZeichenMitte( EAN13; 13; 1)) 
& "+") // Ende SetzeVars
// ******************* Ende CF *****************************

// ************* Start FormelFeldDefinition ****************
// By KreAktiv.ch - 2009 - GNU Lizenz
// FormelFeldDefinition für Code EAN13
// *********************************************************
//
cfEAN13 = Formel (Text)
/*-------------------*/
/* Code EAN13        */
/* 07.01.10rh        */
/*-------------------*/
// By KreAktiv.ch - 2009 - GNU Lizenz
cfEAN13( Zahl)
// ************* Ende FormelFeldDefinition *****************