Welcome Guest ( Log In | Register )


 
Reply to this topicNew Topic
Transcodage, Convertir un fichier déjà transcodé...
niko
post 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 cool.gif

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.
Go to the top of the page
 
+Quote Post
Benoit
post Mar 31 2010, 09:39 AM
Post #2


Contributor
Group Icon

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 smile.gif !

Benoit.
Go to the top of the page
 
+Quote Post
niko
post 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 wink.gif

Best regards,
Niko.
Go to the top of the page
 
+Quote Post
Christophe A.
post Apr 8 2010, 08:08 AM
Post #4


Contributor
**

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
  • Paramétrez votre CFTPART avec un SYST=MVS
  • Paramétrez votre CFTRECV avec FCODE=ASCII, NCODE=EBCDIC, FORCE=YES, XLATE=idxlate
  • Si c'est un CFT sur MVS, forcez-le aussi avec FCODE=EBCDIC,NCODE=EBCDIC, FORCE=YES pour plus de sureté

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
CP037//
$ iconv -l | grep 8859-1
ISO8859-1//
ISO8859-10//
ISO8859-11//
ISO8859-13//
ISO8859-14//
ISO8859-15//
ISO8859-16//


À 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

| 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
----+-------------------------------------------------
00 | 00 01 02 03 9c 09 86 7f 97 8d 8e 0b 0c 0d 0e 0f
10 | 10 11 12 13 9d 85 08 87 18 19 92 8f 1c 1d 1e 1f
20 | 80 81 82 83 84 0a 17 1b 88 89 8a 8b 8c 05 06 07
30 | 90 91 16 93 94 95 96 04 98 99 9a 9b 14 15 9e 1a
40 | 20 a0 e2 e4 e0 e1 e3 e5 e7 f1 a2 2e 3c 28 2b 7c
50 | 26 e9 ea eb e8 ed ee ef ec df 21 24 2a 29 3b ac
60 | 2d 2f c2 c4 c0 c1 c3 c5 c7 d1 a6 2c 25 5f 3e 3f
70 | f8 c9 ca cb c8 cd ce cf cc 60 3a 23 40 27 3d 22
80 | d8 61 62 63 64 65 66 67 68 69 ab bb f0 fd fe b1
90 | b0 6a 6b 6c 6d 6e 6f 70 71 72 aa ba e6 b8 c6 a4
a0 | b5 7e 73 74 75 76 77 78 79 7a a1 bf d0 dd de ae
b0 | 5e a3 a5 b7 a9 a7 b6 bc bd be 5b 5d af a8 b4 d7
c0 | 7b 41 42 43 44 45 46 47 48 49 ad f4 f6 f2 f3 f5
d0 | 7d 4a 4b 4c 4d 4e 4f 50 51 52 b9 fb fc f9 fa ff
e0 | 5c f7 53 54 55 56 57 58 59 5a b2 d4 d6 d2 d3 d5
f0 | 30 31 32 33 34 35 36 37 38 39 b3 db dc d9 da 9f


Position 00 - Current code (00)
Usage: Arrows to move, RETURN = modify, S = save, Q = quit


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 ! cool.gif

PS: Trop faineant pour traduire en anglais... rolleyes.gif
Attached File(s)
Attached File  base.xlt.gz ( 288bytes ) Number of downloads: 4
 
Go to the top of the page
 
+Quote Post

Reply to this topicNew Topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Skin designed by IPB Forum Skins