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 :

Ecriture de caractères spéciaux dans un fichier


Sujet :

Cobol

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Par défaut Ecriture de caractères spéciaux dans un fichier
    Bonjour,
    je cherche à écrire un programme permettant de mettre en place un fichier d'interfaçage avec un autre système.
    le caractère de séparation choisi entre les champs est "la tabulation".
    Comment écrire ce caractère "spécial" avec Cobol?
    merci pour votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Pas de solution simple, il faut connaitre le code hexa tel qu'il sera transcrit. J'ai eu à faire ça une fois, vers un Linux un peu trafiqué. J'ai utilisé la force Brute.

    _J'ai créé un petit programme temporaire qui me créait coté COBOL un fichier simple, avec les caractères de 0 à 255 coté COBOL. de X"00" à X"FF"
    _J'ai transféré le fichier avec les options de production sur la cible (en l'occurrence le fameux Linux trafiqué).
    _ça m'a donné une table de transcription. avec les 256 valeurs possibles.

    Dans ton cas, tu n'as pas forcément besoin de toute la table finale, juste de regarder ou dans ta destination est la tabulation, par exemple. Si elle est en position 14 (hypothèse absurde, juste pour l'exemple), tu sais que l'équivalent COBOL est X'0D' (ca serait certainement une autre valeur, hein). (je suppose que tu sais écrire en hexa. Sinon, un convertisseur parmi d'autres. Note bien qu'il faut toujours deux caractères hexa dans X"??" pour faire ton caractère)

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 593
    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 593
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si le système récepteur utilise le jeu de caractères ASCII, alors la tabulation correspond à la valeur hexadécimale X'09'.
    Il n'y a donc aucune difficulté à positionner cette valeur entre chaque champ du fichier.

    La difficulté consiste à ne pas se faire piéger par d'autres valeurs X'09' présentes et qui ne doivent pas être interprétées comme des séparateurs.
    Par exemple les zones de type packé (COMP-3) ou binaire (COMP), ou également des zones alphanumériques contenant des valeurs hexa.
    Pour les zones packées et binaires, le plus simple est de les convertir systématiquement en étendu.
    S'il y a aussi des zones alphanumériques susceptibles de contenir X'09', alors il est préférable de choisir un séparateur plus discriminant (sur plusieurs caractères)

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Par défaut
    Bonjour,
    merci à tous,
    j'ai réussi à m'en sortir.
    En gros, j'ai déclaré une variable niveau 78 TAB-DELIM VALUE X'09'.
    et dans la structure de mon enregistrement je réserve 1 caractère pour le séparateur (05 U-SEPARA1 PIC X(01) ) que je mouvemente avec mon caractère de tabulation :
    MOVE TAB-DELIM TO U-SEPARA1.
    Le reste est classique.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 593
    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 593
    Billets dans le blog
    10
    Par défaut
    Plus probablement une variable de niveau 77, un niveau 78 ce n'est pas possible : les niveaux vont de 01 à 49.

    Puis il y a les pseudo niveaux :
    • 77 qui avait jadis un usage particulier, la working storage contigüe et sans redécoupage possible contrairement au "01", mais il y a longtemps que les 77 n'utilisent plus de WSS contigüe. Dommage d'ailleurs.
    • 66 réservé au "renames"
    • 88 pour les noms conditions


    à moins que COBOL ait changé sur ce point ou que vous utilisiez une version exotique

    Ensuite, comme je le disais précédemment, utiliser une variable d'un seul octet est risqué, car il y a risque de confusion si la valeur utilisée est rencontrée ailleurs.
    La façon la plus simple de contourner ce genre de problèmes est d'utiliser des zones positionnelles, ainsi plus besoin de délimiteur, mais forcément, le fichier résultant est plus encombrant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Ecriture de caractères spéciaux dans un fichier UFT-8 sans BOM avec VBA
    Par informer dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/05/2016, 19h13
  2. Réponses: 0
    Dernier message: 20/08/2008, 14h19
  3. Affichage de caractères spéciaux dans un fichier
    Par ploxien dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2007, 10h27
  4. [C#] Caractères spéciaux dans un fichier
    Par KibitO dans le forum C#
    Réponses: 7
    Dernier message: 04/01/2007, 09h16
  5. Réponses: 15
    Dernier message: 04/01/2007, 08h47

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