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] Mise à jour clé d'un VSAM


Sujet :

Cobol

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [z/OS] Mise à jour clé d'un VSAM
    Bonjour,

    j'explique rapidement mon problème :

    Je cherche à changer des valeurs à partir d'un fichier paramétre.

    Ex :
    M1 devient SA
    M2 devient SA
    M3 devient SB...

    Mon problème, c'est que pour certain enregistrement, les valeurs m1, m2 m3 ... sont les clé du VSAM. dans ce cas, le rewrite ne fonctionne pas : j'ai une erreur 21.

    j'ai alors essayé les méthode suivantes :

    Essai 1
    lorsque je tombe sur un enregistrement dont la valeur à modifier est la clé
    Je vérifie si je n'ai pas déjà traité cet clé (pour ne pas avoir de doublon en fichier de sortie)
    si déjà traité : je fais un delete de cet enregistrement
    si non traité : je modifie la clé dans l'enregistrement et fait un rewrite
    erreur de rewrite

    essai 2
    quand je rencontre une modification de clé :
    j'enregistre cette ligne à modifier dans un tableau
    je supprime la ligne dans le fichier par un DELETE
    puis je continue le traitement des autres enregistrements.
    en fin de programme, je traite mon tableau des enregistrements avec clé modifié :
    Write enregistrement depuis donnée tableau
    Erreu 92 : erreur logique !

    J'ai essayé en triant mon tableau sur les valeur de la clé, pas plus de succès.

    Comment traiter ce problème de clé ? comment déclarer mon write dans le fichier pour que la donnée s'écrit au bon endroit !

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Fusion ?
    Hum...Je n'en suis pas sûr, c'est un peu trop lointain pour moi, mais bon !
    Est-ce qu'il ne faut pas entrer les données dans l'ordre des clés en VSAM ?

    Je ferais l'essai 2 mais, au lieu de placer les enreg. dans un tableau , je les mettrais dans un fichier séquentiel dans l'ordre des clés et je fusionnerais ensuite ce fichier avec le fichier maître.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour la suggestion, mais fusionner, c'est quoi ? Un repro ? j'ai essayé sans succès.

    Finalement il n'y a que 50 lignes à créer, et les utilisateurs le feront à la main.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Fusion
    Fusionner, c'est faire un MERGE FIELDS entre le fichier paramètre et le fichier que je viens de créer.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 79

    Informations forums :
    Inscription : Janvier 2007
    Messages : 201
    Points : 154
    Points
    154
    Par défaut
    Bonjour,
    Le fichier VSAM est en open i-o
    Si la zone à modifier est dans la clé :
    Delete sur l'ancienne clé, si absent c'est qu'il y a une erreur dans le fichier paramètre
    Write sur la nouvelle clé : Si déja présent, le traitement dépendra de la logique de l'application.
    pas besoin de trier les clés pour les write, re-write et delete en open i-o/

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

Discussions similaires

  1. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 12h52
  2. [mise à jour]Comment procéder sans tout péter...
    Par FFF dans le forum Installation
    Réponses: 3
    Dernier message: 10/09/2003, 08h11
  3. Mise à jour de la version de MySQL
    Par jobstar dans le forum Administration
    Réponses: 8
    Dernier message: 18/08/2003, 10h45
  4. mise à jour de champs time (interbase)
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 04/03/2003, 10h25
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

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