Page 1 sur 1
Calcul CHECKSUM
Posté : jeu. 07 août 2014, 07:54:41
par ctalhouet
BOnjour
Cherche specialiste pour m'aider dans calcul Checksum en RPGLE
(ASCII HEXA.....) .
C TALHOUET
BERNARD/JEAN FLOC'H
02 97 61 66 21
CHECKSUM
Posté : jeu. 07 août 2014, 09:26:58
par cmasse
Bonjour,
Vous me dites, au téléphone, que le CHECKSUM calculé doit être la somme des différents octets dont on ne garde que la partie droite :
Exemple x'02414243454546' (41=A en ASCII = 65 en décimal, 46 = 66, etc...)
la somme de tout cela doit faire 407, soit x'197', dont on ne garde que 97.
je vous propose le code suivant (qui fonctionne en debug)
Code : Tout sélectionner
dchaine S 40 inz(x'02414243444546')
di S 5 0
* pour placer un octet et le considérer comme une donnée binaire
duncar DS
d binaire 3u 0
* pour faire la somme et ne conserver que l'octet le plus à droite
dchecksumDS DS
d somme 10u 0
d checksum 1 overlay(checksumDS:4)
dreponse S 1
/free
somme = 0;
for i = 1 to %len(%trim(chaine));
uncar = %subst(chaine:i:1);
somme += binaire;
ENDFOR;
// checksum contient 97
reponse= checksum;
*inLR = *on;
/end-free
si vous devez isoler les caractères 9 et 7, le code suivant doit le faire
Code : Tout sélectionner
uncar = checksum;
c1 = %char(%div(binaire : 16));
c2 = %char(%rem(binaire : 16));