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 :

Utilisation d'une rubrique en COMP-5 SYNC


Sujet :

Cobol

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 45
    Par défaut Utilisation d'une rubrique en COMP-5 SYNC
    Bonjour

    Lors d'une lecture en parallèle de deux fichiers, je me heurte au problème suivant :
    - les enregistrements contiennent une rubrique de format S9(9) COMP-5 SYNC
    - lors de la comparaison rubrique par rubrique de tout l'enregistrement, je détecte des écarts sur celles se trouvant après la rubrique en COMP-5 SYNC
    - ces écarts ne sont pas des écarts réels : ils proviennent uniquement d'un décalage de deux caractères, comme si la rubrique en COMP-5 SYNC ne faisait pas systématiquement la longueur qu'elle est censée faire.

    Exemple d'enregistrement :
    01 GROUPE.
    05 RUB-1 PIC X.
    05 RUB-2 PIC X(4).
    05 RUB-3 PIC X(4).
    05 RUB-4 PIC S9(9) COMP-5 SYNC.
    05 RUB-5 PIC X(2).
    05 RUB-6 PIC X(2).

    RUB-5 et RUB-6 apparaissent toujours en écart entre "source" et "cible" car le COMP-5 SYNC semble générer un décalage de deux caractères à la lecture du second fichier.

    Avez-vous déjà rencontré ce type de problème ?

    Merci par avance pour les informations que vous pourrez me transmettre.

    Dvi

    ===============================================
    Précisions : en utilisant un outil de visualisation du contenu du fichier, il apparaît que la valeur de la rubrique en COMP-5 SYNC est rgulièrement la même dans les deux fichiers. Ce serait donc la manipulation de cette donnée dans le programme qui entraînerait ce décalage.
    Principe :
    - lecture des deux fichiers en positionnant une clé de comparaison en début d'enregistrement (nouvel enregistrement = clé + zone banalisée contenant l'enregistrement d'origine)
    - lecture en parallèle des deux fichiers triés avec comparaison des clés créées précédemment puis, sur clés identiques, bascule de la zone banalisée vers la zone standard correspondant à l'enregistrement et comparaison rubrique par rubrique
    (c'est dans cette dernière étape que le décalage apparaît)
    ===============================================

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 45
    Par défaut Evolution réalisée
    En travaillant en "zone à zone" plutôt qu'au niveau groupe (lors de l'alimentation de la rubrique puis de sa re-lecture), je ne rencontre plus le problème de décalage.

    La solution semble trouvée mais je suis malgré tout preneur d'une explication "officielle" :
    - est-ce que le fait de mouvementer un groupe de niveau 05 vers un autre groupe de niveau 10 peut modifier la synchronisation réalisée par la rubrique en COMP-5 SYNC ?

    Merci par avance pour vos remarques.

    Dvi

  3. #3
    Membre Expert
    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
    Par défaut
    Bonjour.

    C'est à cause de la clause SYNC (SYNCHRONIZED) qui ajoute des fillers (Slack bytes) pour aligner la rubrique sur un demi-mot, un mot, un double mot ou un quadruple mot à partir du début de l'enregistrement. Voir, par exemple, ce lien : http://publib.boulder.ibm.com/infoce...39370.htm#sync

    Si tu travailles au niveau de la zone, il n'y a aucun problème. Par contre si tu travailles au niveau de groupes qui n'ont pas la même description, y compris le SYNC, là tu vas avoir des problèmes à cause des slack bytes insérés par le compilateur.

    Examples :
    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
    01 FIELD-A.
        05 FIELD-B PICTURE X(5).
        05 FIELD-C.
            10 FIELD-D PICTURE XX.
           [10 SLACK-BYTES PICTURE X. INSERTED BY COMPILER]
            10 FIELD-E COMPUTATIONAL PICTURE S9(6) SYNC.
    
    01 COMP-RECORD.
       05 A-1 PICTURE X(5).
       05 A-2 PICTURE X(3).
       05 A-3 PICTURE X(3).
      [05 SLACK-BYTE-1 PICTURE X. INSERTED BY COMPILER]
       05 B-1 PICTURE S9999 USAGE COMP SYNCHRONIZED.
      [05 SLACK-BYTE-2 PICTURE XX. INSERTED BY COMPILER]
       05 B-2 PICTURE S99999 USAGE COMP SYNCHRONIZED.
       05 B-3 PICTURE S9999 USAGE COMP SYNCHRONIZED.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/11/2012, 09h40
  2. [WD16] Requête : Utilisation d'une rubrique calculée
    Par lucienkany dans le forum WinDev
    Réponses: 1
    Dernier message: 16/01/2012, 08h18
  3. Réponses: 2
    Dernier message: 12/10/2011, 16h24
  4. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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