Page 1 sur 1

EBCDIC, ASCII, Décimal et PHP

Posté : 23 déc. 2010, 16:15
par MwOuAaa
Bonjour,

J'ai un problème plutôt sympa.

Je vous explique la situation, je travail sur une appli web synchronisé avec un systeme AS400.
Nous avons créé un systeme d'echange de données AS400 -> Serveur WEB.

Le petit souci que j'ai, c'est avec un décimal stocké sur le 400 en NUMERIC étendu.
Lors de la création du fichier d'échange sur le serveur mainframe, il y aurais une conversion EBCDIC > ASCII.

Lorsque je reçois le fichier sur le serveur WEB j'obtiens une chaine comme ceci.

Code : Tout sélectionner

00001105K
Ce qui signifie en décimal -110.52...

Je ne comprends pas comment le caractère K pourrais siginifier que mon float est négatif et que le dernier chiffre est egale a 2 ...

Avez-vous une idée ??

D'avance merci

Re: EBCDIC, ASCII, Décimal et PHP

Posté : 23 déc. 2010, 16:54
par Mazarini
Bonjour

00001105K
FFFFFFFFD
000011052
---------
000011052
FFFFFFFFF
000011052
---------
00001105B
FFFFFFFFC
000011052

C'est le codage des nombres sur les systèmes IBM

1105K => -11052
11052 => 11052 (non signé)
1105D => +11052

En général, je transfert les données sous la forme -1152 pour éviter les problèmes de convertion

Re: EBCDIC, ASCII, Décimal et PHP

Posté : 23 déc. 2010, 17:06
par MwOuAaa
Oui c'est bien ce que j'avais compris le dernier caractére indique si le nombre est signé.
S'il est signé, et que la lettre est > a J c'est un négatif, sinon c'est un positif, c'est bien ça ou me trompe-je ?

Le probléme étant qu'on ne peux pas envoyer directement -110.52 car le fichier d'echange est un fichier plat, sans séparateur
DONNEE1DONNEE200001105KDONNEE3
Et je me base sur les positions des caractères pour découper les données en PHP.

As-tu déjà vu une solution de conversion ?