IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

z/os créer un fichier unicode


Sujet :

Cobol

  1. #1
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut z/os créer un fichier unicode
    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

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    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

  3. #3
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    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

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    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

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    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

  6. #6
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    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
    Bonjour.

    J'ai failli sauter au plafond en me rappelant qu'on pouvait mettre un CODE-SET dans le FD, mais espoir déçu, on ne peut le faire que pour un fichier bande.

  7. #7
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    J'ai trouvé ce bout de code dans la doc:
    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-Greek
    avec cette remarque
    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.
    SI qqun a déjà testé.!

    @+

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour.

    J'ai failli sauter au plafond en me rappelant qu'on pouvait mettre un CODE-SET dans le FD, mais espoir déçu, on ne peut le faire que pour un fichier bande.
    Oui, d'ailleurs cette restriction est curieuse

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Mais à l'origine le fichier est créé comment ?

  10. #10
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    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).

  11. #11
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    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.

  12. #12
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par bernard59139 Voir le message
    ... 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).
    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 :

    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.
    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
     í + ñ ä ! @ á 
    05040404040404020202 
    050E09030F0405000000

    Soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0055 004E 0049 0043 004F 0044 0045

Discussions similaires

  1. Créer un fichier d'enregistrements
    Par Oregor dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2012, 21h02
  2. [CR] Version nécessaire pour créer des fichiers DSR ?
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/11/2003, 10h01
  3. Réponses: 7
    Dernier message: 26/06/2003, 10h11
  4. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 19h30
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo