Bonjour
Est-il possible de créer un fichier "disque" précis dont le contenu ait un ccid Unicode?
En ne changeant rien pour les autres fichiers....
Par avance, merci de vos réponses.
b59
Bonjour
Est-il possible de créer un fichier "disque" précis dont le contenu ait un ccid Unicode?
En ne changeant rien pour les autres fichiers....
Par avance, merci de vos réponses.
b59
on peut définir une table unicode dans une base de donnée d'un autre CCSID, ou forcer le CCSID au moment de l'unload, donc on peut au moins le faire en déchargeant cette table dans un fichier
ou utiliser le FTP mainframe dans un step qui te permettra de le transcoder dans a peu pret tous les CCSid et aussi l'UTF-8 et UTF-16
Bonjour
je connaissais déjà les trucs proposés.
Actuellement, pour créer le fichier en unicode, j'utilise EDCICONV.
Mon but est surtout d'éviter une copie du fichier.
Merci de votre attention
C'est également possible en cobol via la clause ALPHABET, mais évidemment la clause s'appliquera à TOUS les fichiers du programme
cf. http://publib.boulder.ibm.com/iserie...6.htm#HDRALPHA
J'ai trouvé ce bout de code dans la doc:
avec cette remarque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 1.7.5.6 Example: converting to and from national data The following example shows the NATIONAL-OF and DISPLAY-OF intrinsic functions and the MOVE statement for converting to and from national (UTF-16) data items. It also demonstrates the need for explicit conversions when you operate on strings that are encoded in multiple code pages. CBL CODEPAGE(00037) * . . . 01 Data-in-Unicode pic N(100) usage national. 01 Data-in-Greek pic X(100). 01 other-data-in-US-English pic X(12) value "PRICE in $ =". * . . . Read Greek-file into Data-in-Greek Move function National-of(Data-in-Greek, 00875) to Data-in-Unicode * . . . process Data-in-Unicode here . . . Move function Display-of(Data-in-Unicode, 00875) to Data-in-Greek Write Greek-record from Data-in-GreekSI qqun a déjà testé.!Usage note: The CCSID for UTF-8 is 1208. Exception: If the conversion fails, a severe runtime error occurs. Verify that the z/OS Unicode conversion services are installed and are configured to include the table for converting from the source code page to CCSID 1200. See the Customization Guide for installation requirements to support the conversion.
@+
Mais à l'origine le fichier est créé comment ?
A l'origine, le fichier est un fichier disque classique MVS créé par un programme cobol.
Un partenaire nous impose que les fichiers soient au format UTF-8 et que les transferts/copie de fichiers se fassent en binaire.
Comme le fichier est assez volumineux, avec pas mal de contraintes autres (surtout des horaires/delais à respecter), le plus rapide et le plus simple serait de créer directement le fichier au bon format.
Je commence à tester les fonctions COBOL telle que Move function National-of et j'ai un résultat quasi correct (il me reste qques bricoles à régler).
Bonjour
UNICODE, quel Unicode? UTF-8, UTF-16, UTF-32....
le réponsable projet répond UTF-8.
j'ai trouvé ce lien vers la doc db2 V11
oû il est écrit.COBOL supports UTF-16 data. COBOL has no support for UTF-8 data.
gloups!
Avec UTF-8, il n'y a pas de longueur fixe. Un caractère peut prendre 1,2 ou 3 octets.
La principale difficulté a été de déterminer la longueur des données à écrire.
Voici ce que j'ai proposé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 MOVE FUNCTION NATIONAL-OF(DATA-IN-FRENCH, 01147) TO DATA-IN-UNICODE. MOVE FUNCTION DISPLAY-OF(DATA-IN-UNICODE, 01208) TO DATA-IN-UTF8. * data-length sert pour ecriture de records en taille variable COMPUTE DATA-LENGTH = FUNCTION LENGTH( FUNCTION DISPLAY-OF( FUNCTION NATIONAL-OF(DATA-IN-FRENCH, 01147) , 01208 ) ). * DISPLAY DATA-LENGTH. WRITE TEST-REC FROM DATA-IN-UTF8.
On peut aussi utiliser les déclarations de description des données de type USAGE NATIONAL et / ou PICTURE N (avec les bonnes options de compilation), mais ça reste de l'UTF-16.
Par exemple :
Ce qui nous donne dans le fichier ( ici lu sous TSO avec HEX ON ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 IDENTIFICATION DIVISION. PROGRAM-ID. xxxxxxxx. * * FICHIER UNICODE * ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. * * FICHIER UNICODE SELECT FIC-UNICODE ASSIGN UNICODE . DATA DIVISION. FILE SECTION. * FD FIC-UNICODE BLOCK 0 RECORDING MODE F . 1 ART-UNICODE PIC N(10). WORKING-STORAGE SECTION. PROCEDURE DIVISION. * TRAITEMENT SECTION. * DEBUT. * OPEN OUTPUT FIC-UNICODE MOVE N'UNICODE' TO ART-UNICODE WRITE ART-UNICODE CLOSE FIC-UNICODE GOBACK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 í + ñ ä ! @ á 05040404040404020202 050E09030F0405000000
Soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 0055 004E 0049 0043 004F 0044 0045
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager