|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bonjour,
Je recherche une méthode rapide pour renommer tout les membres dans un PDS. C'est-à-dire que j’ai mon pds ED.DFGO.SRC contenant des sources FGO___, on fait une copie de ce PDS en ED.DBAL.SRC avec les sources FGO, or il faut que les sources dans ED.DBAL.SRC doivent commencer par BAL___. Quand on en a qq’uns, on peut faire 3.1. Mais quand on en a 150, cela devient lord. FGO00125 devient BAL00125 FGOBPROD devient BALBPROD Avez-vous une méthode par JCL? Pour la copie du PDS, je le fais par IEBCOPY. Merci par avance. Guy |
|
|
00
|
|
|
#2 | ||||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Par IEBCOPY tu peux faire comme ça :
Code :
Dans ce cas un IEHLIST sur un fichier temporaire, (SYSIN : LISTPDS DSNAME=MON.PDS.INPUT,VOL=3390=VOLID) +1 un SORT de ce fichier de génération du SYSIN de SELECT Code :
C'est il me semble un cas typique ou un REXX apparait comme beaucoup plus simple (si tu as déjà pratiqué bien entendu). Un LISTDS pour lire la Directory et la génération du SYSIN de SELECT MEMBER qui va bien puis appel d'IEBCOPY ou encore au choix, recopie directement par LMCOPY. |
||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
bonsoir,
je vais regarder lundi votre proposition. J'ai fait des recherches et je vois regulierement la notion de REXX. J'ai l'impression que cela a l'air vraiment puissant. Mais je ne connais pas. Avez vous une doc ou un site qui peut m'aider? deja merci pour votre réponse. Mais je risque d'en avoir d'autres car je ne connais pas le listds. mais avant je vais voir sur le net si je trouve des infos la dessus. Guy |
|
|
00
|
|
|
#4 | |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Citation:
Pour ton problème, en JCL pur c'est un peu plus difficile sur des noms de membres variables mais ça reste jouable. Je vais vérifier lundi une ou deux possibilités. Par SORT ou ICETOOL mais le SYSIN pour éliminer les blancs ne m'apparait pas si trivial que ça, mais comme souvent en MVS on peut toujours ruser, par exemple en appelant l'EDIT en Batch. |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bonjour,
En faite pour te simplifier la recherche, les noms ont tous 8 caractères. Donc c'est pas utile de chercher l'astuce. Mais cela peut être intéressant de voir la solution. Pour le moment j'ai un pb dans mon sort (err 158)... mais je ne baisse pas les bras, je vais chercher le pourquoi entre midi et 14h. Guy |
|
|
00
|
|
|
#6 | ||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Pour le fun donc (ça complique effectivement, mais si un autre voit plus simple je suis aussi preneur), une solution avec SORT (pour des noms de membres sur 5 à 8 caractères) :
Code :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Toujours pour le fun et pour rappeler qu'un EDIT assez rustique fonctionne aussi en batch, bien que l'on n'y pense pas souvent :
Code :
|
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Merci Homer-ac,
Pour tout le temps que vous avez passé pour répondre à mes questions... Mais pour le moment, je n'arrive pas à faire fonctionner le IEHLIST, mais je vais pas me laisser embêter par cela, je vais continuer à chercher le pourquoi. Je me permettrai de remettre un msg si je bloque. Sinon comme vous avez dis, j'ai fait la demande sur la doc sur Rexx et en même temps sur les jcl's. |
|
|
00
|
|
|
#9 | ||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
IEHLIST est un utilitaire antédiluvien de MVS pour lister une vtoc ou une directory. Comme il faut spécifier le volume, et dans une DD (le plus souvent on met DISP=OLD, mais ça marche avec SHR) et dans le SYSIN, en général, gestion SMS oblige, on le remplace par autre chose sur les sites z/OS, mais au moins marche t'il partout, c'est pourquoi je l'avais signalé.
Un exemple de JCL : Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Bien que la finalité de ce forum est de proposer des réponses mais pas des solutions toutes faites, comme ça me faisait une pose, j'ai testé ceci.
Un REXX qui récupère la liste des membres du PDS passé en SYSUT1 dans le JCL et qui réécrit sur un fichier QSAM en DD SYSUT2, pour relecture en SYSIN ensuite, après remise en forme de chaque ligne par l'instruction REXX trouvée dans le PARM. J'ai mis le tout dans un JCL complet. Bien entendu, normalement le REXX serait dans un PDS de procédures appelées directement par IKJEFT01. Normalement également un REXX de service de ce type aurait très bien pu faire directement la copie des membres. Simplement dans ce cas, c'est un peu plus ouvert puisque l'on génère le SYSIN que l'on veut via le PARM d'appel. Juste pour ceux qui ne connaissent pas, ça donne une idée de la puissance de REXX. Il n'y a pas beaucoup de languages qui permettent d'exécuter une instruction contenue dans une variable. Donc pourquoi pas un petit coup de pub pour REXX au passage. Code :
|
||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bonjour,
je viens de lire ton message, et je ne veux absolument pas la réponse toute faite!!! Car ce que j'aime c'est trouver le pourquoi du problème... Donc il ne faut surtout pas me donner les réponses mais des chemins pour trouver... Car ce midi j'ai réussie à trouver le fonctionnement du IEHLIST. Et j'avoue que la sensation était vraiment sympa. Donc merci pour ta propoition toute faite mais je vais la mettre de coté et je la regarderai quand mon traitement tournera.. Car j'ai un p'tit pb avec le IEBCOPY. Mais rien d'insurmontable. a bientôt j'espere. |
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Comme je l'ai dit, le but n'est pas de donner des solutions 'clé en main' mais pour le coup, un REXX m'a détendu, d'autant plus que ce problème d'IEHLIST est récurrent en MVS.
Personnellement, je veux bien utiliser un utilitaire STANDARD MVS qui spécifie un STORAGROUP pour lister un contenu mais pas un VOLSER ! A l'heure de SMS généralisé à peu près partout en z/OS ça me semble débile ! Sauf que pour IEHLIST, je cherche encore une alternative STANDARD au LISTPDS. Pour lister la VTOC, en alternative au LISTVTOC, pas de problème, le DCOLLECT est plus sérieux. De même que , dans la famille IEH je demande le fils, pour remplacer l'ancien utilitaire IEHPROGM de cette génération, rien à dire, IDCAMS a évolué pour ça. Reste le LISTPDS. Là je cherche encore le digne successeur qui évite de sortir un REXX de son chapeau ou un produit spécifique genre PDSMAN, FILEAID ou autre ! Alors j'en profite pour passer un appel. Si j'ai raté quelque chose et si quelqu'un a vu une alternative crédible au LISTPDS dans les utilitaires STANDARD IBM, ça m'intéresse aussi ! nb. un LISTDS via IKJEFT01 bien entendu, mais c'est un peu pauvre il me semble !
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bonjour,
Je viens de faire la comparaison entre ma sol et la tienne... Et j'avoue que la votre est plus rapide. Par contre je viens de remarquer que l'on fait une incertion dans un nouveau pds. Comment faire pour mettre à jour dans un PDS contenant deja des membres sans les ecrasser? Merci. |
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Par IEBCOPY
COPY INDD=((IN01,R)),OUTDD=OU01 -> option replace COPY INDD=IN01,OUTDD=OUT01 -> pas de replace (messages de Warning) Puis les SELECT MEMBER= (ou S M=) Nb. C'est sans rapport mais une info. pour ceux que ça peut interesser : j'ai vérifié par curiosité. Contrairement à ce que laisse penser la DOC IBM, on peut appeller IEHLIST dans un COBOL. Il faut juste faire attention aux options de compilations et Options Langage Environment (IEHLIST est en AMODE 24). On peut donc remplacer IEHLIST par un COBOL d'appel qui génère le SYSIN qui va bien pour des PDS gérés par SMS. Dernière modification par Homer-ac ; 21/08/2009 à 16h10. |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bonjour,
je me suis mal exprimé... Dans le solution que tu as mise, on fait fait une suppression du pds en sortie //DELOUT DD DSN=&PDSOU, DELETE DU PDS DE TRAVAIL A CREER VIA IEBCOPY // DISP=(MOD,DELETE),UNIT=3390,SPACE=(TRK,(1,1)) et après on fait : COPY INDD=((IN01,R)),OUTDD=OU01 (ou OU01 est &PDSOU) Or mon pb en faisant cela on supprime tout ce qu'il y a dans &PDSOU. Or je veux mettre à jour certains membres et ne pas toucher les autres. Je pensai quand suppriment DELOUT, cela serait ok, mais j'ai l'erreur disant de le pds &PDSOU est deja catalogué. fg |
|
|
00
|
|
|
#16 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
C'est du JCL de base.
Si ou veut faire l'IEBCOPY sur un PDS existant. on le met en DISP=SHR dans le Step d'IEBCOPY : PDSOUT DD DISP=SHR,DSN=le.PDS.en.sortie Bien entendu pas question de Delete en amont dans ce cas. Le JCL que j'avais proposé permet simplement de tester sans risque, à charge ensuite d'adapter le JCL à son besoin. nb. Il y a pas mal de doc sur le JCL sur internet, et il me semble indispensable de pratiquer au moins un peu ce JCL pour travailler en MVS; Si de grosses sociétés choisissent une exploitation z/OS, c'est encore probablement parce que c'est un OS sans concurrence dans une logique de gestion Batch. |
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : août 2009 Messages : 8 ![]() |
Bjr,
Je suis mort de honte en lisant ta réponse... Merci pour tout et surtout pour tout le temps que tu as passé à me répondre. Si besoin d'info complementaire, je connais une bonne adresse... encore merci. |
|
|
00
|
|
|
#18 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Pas de pb et de honte à avoir, on a tous galéré au début en MVS.
Mais si je peux me permettre un conseil, ne pas s'intéresser aux forums seulement quand on a un problème. Chaque question apporte son lot d'idées et tous avons a y gagner. Par exemple, cette histoire de LISTPDS IEHLIST. Le fait qu'il faut spécifier le VOLSER énerve tous ceux (en fait presque tous en MVS) qui travaillent avec SMS. Si on regarde sur le net, chacun y est allé de son REXX. J'ai fait ça aussi comme tout le monde je suppose, parce que même si c'est mieux en assembleur, les sites ont moins de compétences en Assembleur en ces temps. S'il n'y avais pas eu celle question, parce qu'IEHLIST est un progamme autorisé, je n'aurai pas eu la curiosité de vérifier si un appel COBOL est possible. Merci donc, je vais me faire ça en COBOL, juste par esprit de contradiction. COBOL n'auant paa le réputation de pouvoir gérer ça. Parce qu'il y a moins de compétences en Assembleur, IBM met en avant le C à présent pour tout ce qui touche un peu au système. Normal, ils vendent de la CPU. Quand on voit qu'i faut moins d'un Meg pour compiler/linkéditer un Cobol contre 20 pour un progamme C, il ne me semble pa compliqué d'en déduire que le flot de runtime nécessaires à C pour son exécution à un coût. Nb. Pour ceux qui ne compendraient pas, disons que c'était ma minute nostalgie. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com