![]() ![]() |
Transcodage, Convertir un fichier déjà transcodé... |
Mar 30 2010, 03:20 PM
Post
#1
|
|
|
Visitor ![]() Group: Members Posts: 6 Joined: 19-March 10 From: Paris - France Member No.: 1,141 |
Hello,
A MVS client sends me a file U.S. ebcdic (table 000037) I suppose, and transcodes it to French ebcdic (table 000297) to the ascii European (ISO 8859-1) for my UNIX. Accordingly, some special characters are poorly translates as degrees ° which appears as a square bracket [. Have you a way to help me convert this feed to his arrival ? I thank you in advance. Best regards, Niko. Same question in french Bonsoir, Un client MVS m'envoie un fichier en ebcdic américain (table 000037) je suppose, et le transcode d'ebcdic français (table 000297) vers de l'ascii européen (ISO 8859-1) pour mon UNIX. En conséquence, quelques caractères spéciaux sont mal translatés, comme degrès ° qui apparaît sous forme de crochet ouvrant [. Avez vous un moyen de m'aider à retranscoder ce flux à son arrivé ? Je vous en remercie par avance. Bien à vous, Niko. |
|
|
|
Mar 31 2010, 09:39 AM
Post
#2
|
|
|
Contributor ![]() Group: Axway Moderator Posts: 25 Joined: 9-November 08 From: Berlin - Germany Member No.: 166 |
Hello,
For the transcoding, much more that a character, we have to find out which hexadecimal we expect. In our example : Partner uses EBCDIC (codepage 00037), what means ° = x90. Partner transcodes to EBCDIC (codepage 000297), what means x90 becomes '['. You want '°' in ASCII (ISO 8859-1), means xB0. You have to transcode EBCDIC x90 to ASCII xB0. For this purpose you have to create a XLATE table. The tool for this purpose is 'xvi'. 1. Create a xlate table EBCDIC -> ASCII, calling "xvi -e e000297_iso8859-1.xlat". 2. Edit the table with "xvi e000297_iso8859-1.xlat". 3. Change the value '90' to 'BO'. 4. Save the table. For the configuration of this table within CFT, some hints are to be find there : http://forums.axway.com/index.php?showtopic=311 I think we are now several "forumer" wainting for your feedback Benoit. |
|
|
|
Mar 31 2010, 10:23 AM
Post
#3
|
|
|
Visitor ![]() Group: Members Posts: 6 Joined: 19-March 10 From: Paris - France Member No.: 1,141 |
Hello Benoît,
The case is resolved. My partner has changed its PELICAN and files comes now correctly. I just kept the parameter "syst=MVS" in my CFT. To answer you, I had already set up a table ebcdic to ascii transcoding with the tool xvi. On arrival, the modified characters were good and everything else wrong ! For this reason, I seek a conversion table ascii to ascii. Several "running mates" are also looking for the same thing Best regards, Niko. |
|
|
|
Apr 8 2010, 08:08 AM
Post
#4
|
|
|
Group: Members Posts: 10 Joined: 17-March 10 From: France Member No.: 1,133 |
Les problèmes de transcodage avec CFT sont légion, et pas seulement entre systèmes hétérogènes : entre un MVS en CP037 et un autre MVS en CP1047, comme les 2 systèmes sont en EBCDIC, CFT n'effectuera pas de transcodage, même si vous lui appliquez une XLATE (en supposant que vous ayez bien défini SYST=MVS).
Si mes souvenirs sont bons, les tables internes de CFT transcodent de l'EBCDIC CP037 en ASCII CP850. Dans tous les cas, vous devez toujours décider QUI va réaliser le transcodage : l'émetteur ou le récepteur. Exemple dans le cas MVS vers UNIX, où vous voulez faire le transcodage sur l'UNIX : * On supposera un codepage à CP037 sur MVS, et ISO8859-1 sur l'UNIX
Créez ensuite votre table sur votre UNIX en utilisant l'outil iconv : - Vous devez disposer d'un fichier binaire contenant tous les octets de 0x00 à 0xFF (cf. pièce jointe base.xlt) - Vous vérifiez avec iconv que vous avez les codepages corrects (suivant les systèmes, iconv n'a pas les mêmes librairies de transcodage) : $ iconv -l | grep CP037 À partir du fichier base.xlt (qui contient les octets 00 à FF), tapez la commande : $ iconv -f CP037 -t ISO8859-1 -o CP037_ISO8859-1.xlt base.xlt Votre table de transcodage est créée ! Il suffit maintenant de la placer où vous voulez et de définir votre CFTXLATE correctement. Si vous effectuez un xvi sur cette table, vous devez avoir ceci : Sopra © XVI 2.0 Edit table : CP037_ISO8859-1.xlt ATTENTION quand même : vous risquez d'avoir des problèmes de temps à autre avec des caractères qui n'existent pas d'un codepage à un autre, par exemple le "¦" du CP037 n'existe pas en ISO8859-15. Il faudra donc "bidouiller" un nouveau "base.xlt" où le 0x6A sera modifié en 0x00 pour "faire passer la moulinette iconv", puis modifier la table d'arrivée avec xvi. Si vous utilisez l'option "-c" d'iconv, vous allez perdre des octets, donc à proscrire. Dans le cas 037 vers 8859-15, il y a 8 octets qui posent problèmes. À voir sur Wikipedia : ISO/IEC 8859-15 Bref, avec tout ça on peut faire des tables de transcodage dans tous les sens. Pour un transcodage d'EBCDIC d'un CP particulier à un autre EBCDIC, il faudra "truander" CFT en lui faisant croire qu'il reçoit de l'ASCII (toujours un FORCE=YES pour être certain), et mettre la bonne table de transcodage. Bon courage ! PS: Trop faineant pour traduire en anglais...
Attached File(s)
|
|
|
|
![]() ![]() |
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
|
Lo-Fi Version | Time is now: 3rd September 2010 - 06:40 AM |
Skin designed by IPB Forum Skins
Expand / Collapse Navigation



Mar 30 2010, 03:20 PM




