Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > z/OS
z/OS Forum d'entraide sur z/OS et MVS (Multiple Virtual Storage), les systèmes d'exploitation des ordinateurs « mainframes » IBM : JCL, Tso, Ispf, Vsam, Racf, SMS, Cics, Ims, OPC, Ca-7, Control-M, Dialog Manager ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 31/07/2009, 10h49   #1
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
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 :
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.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 14h11   #2
Nouveau Membre du Club
 
Inscription : octobre 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 37
Points : 33
Points : 33
Bonjour,

Tu peux utiliser LINE_AFTER ou LINE_BEFORE. Par ex :
Code :
"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é?
ekans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 14h20   #3
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
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...
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 14h40   #4
Nouveau Membre du Club
 
Inscription : octobre 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 37
Points : 33
Points : 33
Tu peux faire quelque chose comme ça :
Code :
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
ekans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 15h59   #5
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
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 ?
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 16h53   #6
Nouveau Membre du Club
 
Inscription : octobre 2008
Messages : 37
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 37
Points : 33
Points : 33
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 :
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 &&.
ekans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2009, 21h34   #7
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
Citation:
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 :
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.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 10h16   #8
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
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 :
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)
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 10h52   #9
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
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 ?
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 14h27   #10
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 477
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : octobre 2006
Messages : 477
Points : 657
Points : 657
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.
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 14h54   #11
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
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...
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2009, 17h25   #12
Membre expérimenté
 
Avatar de Homer-ac
 
Inscription : octobre 2007
Messages : 449
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 449
Points : 518
Points : 518
Citation:
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.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h57.


 
 
 
 
Partenaires

Hébergement Web