Hi Daniel, ck,
ich bezweifle, dass das jemand kann. Das ist schonmal kein C.
ich habs mal in gültiges C Übersetzt... dann sollte dem OP das transformieren in PHP ja schonmal leichter fallen *fg*...
#define DO
#define END }
#define WHILE(a) while(a) {
#define THEN
#define BEGIN {
#define AND &&
#define OR ||
#define mod %
#define OF {
#define CASE switch
#define IF if
#define ELSE else
#define KONTO(i) (*(konto+(i)))
#define TAB1(i) (*(tab1+(i)))
#define TAB2(i) (*(tab2+(i)))
char *konto="12345678901"; /* TODO: replace with actual values */
char *tab1="12345678901";
char *tab2="12345678901";
int i,C2,D2,A5,P;
main()
BEGIN
i = 4;
DO WHILE (KONTO (i) == 0)
i = i + 1;
END;
C2 = i mod 2;
D2 = 0;
A5 = 0;
DO WHILE (i < 10)
CASE (KONTO (i)) OF
case 0:
KONTO (i) = 5; break;
case 1:
KONTO (i) = 6; break;
case 5:
KONTO (i) = 10; break;
case 6:
KONTO (i) = 1; break;
END;
/*Seite 42
Kennziffer Berechnungsmethode für Prüfziffern
noch
87*/
IF (C2 == D2) THEN
BEGIN
IF (KONTO (i) > 5) THEN
BEGIN
IF (C2 == 0 AND D2 == 0) THEN
BEGIN
C2 = 1;
D2 = 1;
A5 = A5 + 6 - (KONTO (i) - 6);
END ELSE
BEGIN
C2 = 0;
D2 = 0;
A5 = A5 + KONTO (i);
END
END ELSE
BEGIN
IF (C2 == 0 AND D2 == 0) THEN
BEGIN
C2 = 1;
A5 = A5 + KONTO (i);
END ELSE
BEGIN
C2 = 0;
A5 = A5 + KONTO (i);
END
END;
END ELSE
BEGIN
IF (KONTO (i) > 5) THEN
BEGIN
IF (C2 == 0) THEN
BEGIN
C2 = 1;
D2 = 0;
A5 = A5 - 6 + (KONTO (i) - 6);
END ELSE
BEGIN
C2 = 0;
D2 = 1;
A5 = A5 - KONTO (i);
END
END ELSE
BEGIN
IF (C2 == 0) THEN
BEGIN
C2 = 1;
A5 = A5 - KONTO (i);
END ELSE
BEGIN
C2 = 0;
A5 = A5 - KONTO (i);
END
END;
END;
i = i + 1;
END
/*Seite 43
Kennziffer Berechnungsmethode für Prüfziffern
noch
87*/
DO WHILE (A5 < 0 OR A5 > 4)
IF (A5 > 4) THEN
BEGIN
A5 = A5 - 5;
END ELSE
BEGIN
A5 = A5 + 5;
END
END;
IF (D2 == 0) THEN
BEGIN
P = TAB1 (A5);
END ELSE
BEGIN
P = TAB2 (A5);
END
IF (P == KONTO (10)) THEN
BEGIN
/*Prüfziffer OK*/;
END ELSE
BEGIN
IF (KONTO (4) == 0) THEN
BEGIN
IF (P > 4) THEN
BEGIN
P = P - 5;
END ELSE
BEGIN
P = P + 5;
END
IF (P == KONTO (10)) THEN
BEGIN
/*Prüfziffer OK*/;
END
END;
END
END
Es sieht teilweise so aus wie Pascal...
...(Es ist aber auch kein ADA)
Ich sags ja -- Pseudocode ;-)
die relativ planlos eingestreuten ; nach den END sprechen dagegen, das fehlenden ; nach "C2 : = 0" spricht dafür, dass das ungetestet ist... (ist sonst allerdings der einzige Syntaxerror gewesen, evtl. hat der OP sich da auch nur vertippt?)
Gruß,
Carsten
P.S.: was dieser Gruselcode macht hab ich mir nicht weiter angesehen ...