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 :

MVS / COBOL : lire un généré assembleur à la compil


Sujet :

Cobol

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut MVS / COBOL : lire un généré assembleur à la compil
    Bonjour à tous
    Je tente d'optimiser un programme qui utilise le parser XML COBOL 4.2 qui utilise XML-TEXT qui fait 16Mo en taille alors que le contenu récupéré dans mon flux ne dépasse jamais 1024 octets.

    Au-delà de cette question : où trouver des règles d'optimisations pour débutant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EVALUATE XML-TEXT
    WHEN 'msgid'
    remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EVALUATE XML-TEXT(1:LNG-REELLE)
    WHEN 'msgid'
    
    003194  EVALUATE                                                               
    003201  WHEN                                                                   
       00354E  4160 3054               LA    6,84(0,3)               W-XML-TEXT    
       003552  1872                    LR    7,2                                   
       003554  4100 537C               LA    0,892(0,5)              PGMLIT AT +664
       003558  5810 514C               L     1,332(0,5)              PGMLIT AT +104
       00355C  0F60                    CLCL  6,0                                   
       00355E  58B0 C030               L     11,48(0,12)             PBL=3         
       003562  4770 B2E6               BC    7,742(0,11)             GN=1212(003572)
    ou par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    EVALUATE XML-TEXT-RACCOURCI-PIC1024(1:LNG-REELLE)
    WHEN 'msgid'
    
    003187  EVALUATE                                                               
    003194  WHEN                                                                   
       00352A  4140 6054               LA    4,84(0,6)               W-XML-TEXT    
       00352E  5850 3154               L     5,340(0,3)              PGMLIT AT +112
       003532  4100 337C               LA    0,892(0,3)              PGMLIT AT +664
       003536  5810 314C               L     1,332(0,3)              PGMLIT AT +104
       00353A  0F40                    CLCL  4,0                                   
       00353C  58B0 C030               L     11,48(0,12)             PBL=3         
       003540  4770 B2BA               BC    7,698(0,11)             GN=1212(003550)
    J'ai tenté de regarder le généré assembleur mais ne pratiquant pas cette magie encestrale, cela me laisse de glace.

    Si quelqu'un pouvait me décrire ce que je vois.

    Merci à tous.

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Avec un collègue(doué), on avait essayé d'utiliser les outils XML de cobol, avant d'abandonner : trop rigide. Maintenant, si tu reçois toujours le même format, ça doit pouvoir marcher - mais je ne pourrais pas t'aider. Je ne pratique pas l'assembleur non plus.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  3. #3
    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
    Comme j'ai beaucoup pratiqué l'assembleur IBM 360/370 dans ma jeunesse, il m'en reste plus que des notions. Je pourrais le cas échéant t'expliquer comment fontionnent les instructions assembleur mais il y a loin entre comprendre le langage assembleur et optimiser un traitement.

    Je t'indique à toutes fins utiles cette page du site z/OS de Big Blue qui explique le parser XML en Cobol, mais tu dois déjà connaître tout ça, n'est-ce pas ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oui effectivement, je dispose de la doc XML/IBM.
    Cela marche de mieux en mieux au fur et à mesure des montée de version COBOL.

    Tant pis pour l'assembleur.
    Pour l'explication, j'ai peur que lorsque je manipule XML-TEXT de 16Mo, qu'il me monte en mémoire 16Mo que je multiplie par 100 millions : bonjour les perf... mais je me demande comment IBM aurait pu laisser faire un truc comme cela.

    Reste la question de départ,
    MOVE VARIABLE-10000 TO VARIABLE-10
    est-il moins performant que
    MOVE VARIABLE-10000(1:10) TO VARIABLE-10

  5. #5
    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
    Pour les perfs entre les 2 MOVEs, je ne sais pas. En revanche, si tu crains pour les perfs avec le parser IBM, pour un aussi petit flux XML de 1024 caractères, je ferais directement un programme Cobol spécifique qui analyse les balises du flux et récupère les data pour voir s'il y a gain en perf.

    Il reste également à creuser du côté du produit réputé EXPAT XML Parser écrit en C qui lui, je le sais pour l'avoir utilisé, est très performant mais est-ce envisageable avec ton OS ? Et si oui, ça demanderait sans doute un peu plus de boulot qu'un simple programme mais ça vaudrait certainement le coup pour un gros volume de flux XML comme il me semble que c'est le cas chez toi.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Fort heureusement, je parcours 1 million de flux qui font 4000 caractères en moyenne.
    Pour info, le XML-TEXT retourné par le parser COBOL te donne le contenu pas à pas de ton flux XML (évênement par évenement) : balise ouvrante / attribut / contenu ... et les données "balises" sont très souvent courts et le contenu fait rarement plus de 256 de long.

  7. #7
    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
    Pour info, le XML-TEXT retourné par le parser COBOL te donne le contenu pas à pas de ton flux XML (évênement par évenement) : balise ouvrante / attribut / contenu ...
    De cela, je m'en serais douté. Il ne manquerait plus que le parser de Big Blue ne sache pas analyser un flux XML!
    Mais je ne comprends plus bien ce que tu veux. Tu parlais d'un flux de 1024 c et voila que maintenant ils en fait 4000 ! Que crains-tu en définitive ? Que conclure ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    il s'agissait d'un exemple.
    Mon problème est que je manipule une zone de 16Mo alors que dedans je n'ai que, par exemple, 'ma_balise' = 9 caractères.

    Mes temps de traitement pour :
    1 million de flux
    1 flux = 4000 caractères
    1 flux = 200 balises ouvrantes + 200 balises fermantes + 50 contenus de balises + 20 attributs = 470 évènements

    Ces évènements XML testés, stockés, déplacés ...
    donc 470 * 16Mo * 1 million de flux * X nb de tests = 2 heures de traitements.

    Voilà où cela coince et je ne peux abandonner XML.

  9. #9
    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
    Bonjour,

    si tu as un produit du genre Strobe sur ton site, ça vaudrait le coup de le passer sur ton traitement afin de voir clairement les instructions consommatrices de ton programme, Strobe te ressortirait les offset.
    dans ce genre de traitement ou on manipule des occurs ou des déplacements sur zones (LNG-REELLE par exemple) le typage de ces données est très importante. Par exemple un PIC 9 étendu entrainera systématiquement de la conversion en binaire avant. à la longue ça peut jouer beaucoup sur les perf.
    mais ce n'est qu'un exemple.
    Strobe te ressortirait les points ou ça pèche.

    tu as aussi les options de compilation XMLPARSE(XMLSS) ou XMLPARSE(COMPAT) qui sont importantes puisqu'elles utilisent des parser différents suivant l'option donc jouent aussi beaucoup sur la perf.


    bon courage

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai effectivement pensé au STROB mais c'est un outil qui n'est pas si simple à paramétrer lorsque l'on ne connait pas.
    Néanmoins en faisant comme je le pensais au départ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    01 LNG-REELLE PIC 9(5) comp.
    
    MOVE LENGTH OF XML-TEXT TO LNG-REELLE
    MOVE SPACES TO W-XML-TEXTE-1000CAR
    MOVE XML-TEXT(1:LNG-REELLE) TO W-XML-TEXT-1000CAR
    EVALUATE W-XML-TEXT(1:LNG-REELLE)
    WHEN 'msgid'
        MOVE W-XML-TEXT(1:LNG-REELLE) TO TOTO
    ...
    Je suis passé de 40mn à 2mn30
    J'avais pas mal de test et Move dans tous les coins...

Discussions similaires

  1. Lire le code après la compilation
    Par Cbenlfun dans le forum C++
    Réponses: 6
    Dernier message: 21/03/2009, 07h09
  2. Bug VS2008 : Fichier source généré mais pas compilé
    Par Klaim dans le forum Visual C++
    Réponses: 2
    Dernier message: 21/06/2008, 16h04
  3. Syntaxe requête SQL dans JCL MVS pour lire sous AIX
    Par Claire de Morsang dans le forum DB2
    Réponses: 2
    Dernier message: 18/03/2008, 17h14
  4. Réponses: 1
    Dernier message: 27/04/2007, 11h52
  5. Impossible de lire les CHM (Fichiers HTML compilés)
    Par beslam dans le forum Windows XP
    Réponses: 10
    Dernier message: 30/11/2006, 13h02

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