calculateChkDigitMod10()

Die Systemfunktion 'sysLib.calculateChkDigitMod10()' stellt eine Modulus-10-Prüfziffer in eine numerische Variable (NUM) oder in eine Zeichenvariable (CHAR), die mit einer Reihe von numerischen Zeichen beginnt.

Syntax

  sysLib.calculateChkDigitMod10(
    Text CHAR | NUM inOut,
    Prüflänge INT in,
    Ergebnis SMALLINT inOut)
Text
Eine Variable vom Typ NUM oder eine Variable vom Typ CHAR, die mit einer Reihe von numerischen Zeichen beginnt. Die Variable muss eine zusätzliche Position für die Prüfziffer enthalten, die unmittelbar rechts von den anderen Zeichen eingefügt wird. Die ersten Zeichen (bis Prüflänge - 1) müssen Ziffern sein. Andernfalls löst EGL eine Laufzeitausnahmebedingung (RuntimeException) aus.
Prüflänge
Eine Variable vom Typ INT, die die Anzahl der Zeichen enthält, die im Parameter Text geprüft werden sollen, einschließlich der Position für die Prüfziffer. Bei NUM-Variablen, die als Parameter Text übergeben werden, werden führende Nullen gezählt, sodass Prüflänge in den meisten Fällen mit der Länge der NUM-Variablen übereinstimmt.
Ergebnis
Eine Variable vom Typ SMALLINT, die einen der beiden folgenden Werte empfängt:
  • 0, wenn die Prüfziffer erstellt wurde
  • 1, wenn die Prüfziffer nicht erstellt wurde

Beispiel

program CheckDigit10 type BasicProgram
	acctNo CHAR(10) = "1734289";   
	len SMALLINT = 7;
	result SMALLINT = 0;   
  
	function main()
		sysLib.calculateChkDigitMod10 (acctNo, len, result);
		if (result != 0)
			sysLib.writeStdout("Check digit not created");
		end
		sysLib.writeStdout(acctNo);
    // 'acctNo' ist nun 1734284
	end // Ende von 'main'
		
end  // Ende von 'program'
Die Modulus-10-Prüfziffer wird anhand eines Algorithmus abgeleitet. Die Zahl an der Prüfzifferposition wird in keinem Fall berücksichtigt. Der Algorithmus wird mit Bezug auf die Beispielwerte beschrieben:
  1. Multiplizieren Sie die Einheitenposition der eingegebenen Zahl mit 2 und jede zweite Position von rechts nach links ebenfalls mit 2:
      8 x 2 = 16
      4 x 2 = 8
      7 x 2 = 14
  2. Addieren Sie die Ziffern der Produkte (1,6,8,1,4) zu den bisher nicht mit 2 multiplizierten Ziffern der eingegebenen Zahl (1,3,2):
      1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26   
  3. Subtrahieren Sie die Summe von der nächsthöheren Zahl, die auf 0 endet, um die Prüfziffer zu berechnen:
      30 - 26 = 4

    Ergibt die Subtraktion 10, lautet die Prüfziffer 0.

In diesem Beispiel ändert die Funktion die ursprünglichen Zeichen in acctNo in die folgenden Zeichen:
  1734284

Hinweise zur Kompatibilität

Tabelle 1. Hinweise zur Kompatibilität
Plattform Problem
JavaScript-Generierung Die Funktion 'sysLib.calculateChkDigitMod10()' wird nicht unterstützt.

Feedback