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

z/OS Discussion :

macro edit : ajout de ligne


Sujet :

z/OS

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut macro edit : ajout de ligne
    Bonjour à tous,

    je tente d'ajouter des ligne dans un membre dans lequel je suis en edit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    /*REXX */                                         
    ADDRESS ISREDIT                                   
    "MACRO"                                           
    "FIND '//FLOTUS' LAST"                            
    "LABEL .ZCSR = .PA 0"                             
    "COPY 'XXAP.YY42.JCL(LXX44)' AFTER .PA"       
    "SAVE"                                            
    "END"
    Ca fonctionne très bien.

    Mais j'aimerais faire exactement la mêm chose sans utiliser la commande copy... En effet j'ai des cas ou elle n'est pas adapter..

    Connaissez-vous une autre methode (toujours aves les macro edit) pour effectuer une telle copie. J'ai essayer avec cut, mais je ne parviens à entrer dans le membre 'XXAP.YY42.JCL(LXX44)'... La commande EDIT ne focntionne que pour un membre dans qui est dans la bibliothèque courante...

    Merci d'avance pour votre aide.

    Une info supplémentaire :

    le membre XXAP.YY42.JCL(LXX44) contient plusieurs lignes.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Tu peux utiliser LINE_AFTER ou LINE_BEFORE. Par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "LINE_AFTER .PA = 'MON TEXT'"
    Par contre l'insertion se fait ligne par ligne il faudrait donc lire auparavant ton membre...

    Pourrais-tu préciser les cas où COPY n'est pas adapté?

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    je connaissais line_after mais le souci c'est que ça se fait ligne par ligne...

    comment copier un bloc de ligne ?

    je n'ai pas compris quand tu dis "lire le membre avant" ?

    As-tu un exemple ?

    Les cas où ça ne marche pas, c'est qu'il y a un produit maison qui prend la main je passe la commande copy...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 44
    Points
    44
    Par défaut
    Tu peux faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    member='XXAP.YY42.JCL(LXX44)'       
    "ALLOC DA('"member"') FILE("ddname") SHR" 
    "EXECIO * DISKR DDNAME (FINIS STEM MYVAR."
    do i = myVar.0 to 1 by -1                  
       "LINE_AFTER .PA = '"myVar.i"'"
    end

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    au fait ça marche à moitié...

    en effet, j'ai des carcatères du type : DSN=&BBDAL..&HHGAL..OUT

    et il me le transforme en DSN=..OUT

    Il y a un moyen d'éviter cela ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 37
    Points : 44
    Points
    44
    Par défaut
    En fait, les &BBDAL et &HHGAL sont interprétés comme des variables.

    Si tu as la possibilité de modifier ton membre source il faudrait doubler les & et désactiver l'interprétation des variables. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    member='XXAP.YY42.JCL(LXX44)'              
    address "TSO"                              
    "ALLOC DA('"member"') FILE("ddname") SHR"  
    "EXECIO * DISKR DDNAME (FINIS STEM MYVAR." 
    address "ISREDIT"
    "SCAN OFF"                     
    do i = myVar.0 to 1 by -1         
       "LINE_AFTER .PA = '"myVar.i"'"          
    end
    "SCAN ON"                             
    address "TSO"                              
    "FREE DD("ddname")"
    Si tu ne peux pas éditer ton membre source, il faudra modifier, directement dans ton rexx, chaque ligne lue en remplaçant chaque & par &&.

  7. #7
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Les cas où ça ne marche pas, c'est qu'il y a un produit maison qui prend la main je passe la commande copy...
    A mon avis tu as la parade avec BUILTIN, c'est fait pour ça. Essayes en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "COPY 'XXAP.YY42.JCL(LXX44)' AFTER .PA"  
    par : 
    "BUILTIN COPY 'XXAP.YY42.JCL(LXX44)' AFTER .PA"
    Ca devrait résoudre ton problème.

  8. #8
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    Bonjour,

    j'ai essayé avec BUILTIN mais ça ne marche toujours pas,

    au fait ddès que l'on tape la commande copy, j'arrive sur un panel :

    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
    
    si membre de PRODOTP   :                                                         
      NOM     ===>                                                               
      VERSION ===>             ( ou RL pour version réelle )                     
      NIVEAU  ===>             ( Par défaut dernier niveau créé )                
      CPU     ===> A                                                             
                                                                                 
    si membre hors PRODOTP   :                                                       
      NOM     ===>                                                               
                                                                                 
    UMERO DE LIGNE (laisser à blanc pour l'intégralité du fichier)               
      1 ère ligne     ===>                                                       
      Dernière ligne  ===>                                                       
      Type de copie   ===> R       S (tandard), I (spfstd), C (obol), R (elatifs)

  9. #9
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Curieux. Peut être faut-il ajouter address ISREDIT devant dans le cas de COPY. Sinon tel que tu l'as donné, en amont, REXX ne passe dans ce mode que quand il ne reconnait pas une commande. Il semble reconnaitre l'ordre COPY, alors si tu forces par address ISREDIT "BUILTIN COPY 'XXAP.YY42.JCL(LXX44)' AFTER .PA" au niveau de la commande ça ne devrait plus être le cas ?

  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
    Bonjour

    si "ISREDIT BUILTIN COPY" te donne toujours la même erreur, je pense que quelqu'un du site à créer un process qui s'appelle "COPY", et qu'il a inclu ce truc dans les commandes ISPF. Vérifie via le "3.9".

    Si cette commande COPY a été incluse par une personne "système", tu risques de ne rien trouver.


    Personellement, je demanderai la suppression pure et simple de ce COPY hors norme. Il est très déstabilisant de créer des programmmes (rex ou autres) du même nom que les commandes standards. Ca n'est que sources d'erreurs et de confusion.

  11. #11
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    En effet le BUILTIN ne fonctionne toujours pas (même avec ISREDIT devant..)

    Par contre, je sui allé en 3.9, et je ne vois pas de commande COPY..

    j'ai taper TSO ISRDDN, et je n'ai pas trouvé de membre qui s'appelle copy...

  12. #12
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    si "ISREDIT BUILTIN COPY" te donne toujours la même erreur ....Personnellement, je demanderai la suppression pure et simple de ce COPY hors norme.
    +1. Par "ISREDIT BUILTIN COPY" il me semble que les corrections 'normales' sont faites. Si ça ne fonctionne pas il faut en rechercher la cause sur le site. C'est donc normalement à l'équipe système du site d'intervenir ou de donner une alternative.
    On peut bien entendu utiliser autre chose qu'un COPY mais comme bernard59139 je pense que faire l'impasse sur le fond n'est pas la meilleure idée.

Discussions similaires

  1. [XL-2003] Ajout de lignes par macro Excel dans word
    Par fb62840 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/09/2012, 11h39
  2. Macro pour ajouter une ligne dans une feuille automatiquement
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2010, 09h52
  3. Ajouter une ligne par une macro
    Par scoubi10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2010, 11h58
  4. [WD-2003] Macro copie/colle tableau - Macro ajout de ligne
    Par Graineur dans le forum VBA Word
    Réponses: 17
    Dernier message: 02/08/2010, 09h32
  5. [HTML] Ajouter même ligne html par macro (plusieur fichiers HTML)
    Par naouah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 25/02/2009, 21h49

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