![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| 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 ... |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité de passage
![]() Date d'inscription: octobre 2008
Localisation: Guyancourt
Messages: 3
|
Bonjour à tous,
Voici mon problème, J'ai une bibliothèque dans laquelle j'ai un membre, et une seconde dans la quelle j'ai environ 300 membres. Je voudrais que le membre de ma première biliothèque soit recopié au début de chaque membre de la seconde. Comment faire en peu de Steps. Car j'y parviens mais membre par membre et cela me fait trop de Steps dans mon JCL. Merci pour vos réponses |
|
|
|
|
|
#2 (permalink) | |
![]() Date d'inscription: décembre 2006
Localisation: Ile de France
Messages: 287
|
Citation:
veux-tu dire : "Je voudrais que le contenu du membre de ma première bibliothèque soit recopié au début du contenu de chaque membre de la seconde" ? Personnellement, je ferais un REXX. .
__________________
>> Documentation Mainframe par Guillaume Ventre << Dernière modification par Peut-êtreUneRéponse ; 31/10/2008 à 11h42 |
|
|
|
|
|
|
#4 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: octobre 2007
Localisation: région parisienne
Messages: 228
|
Si c'est pour ajouter qque chose dans tout un PDS de JCL ,on dispose de l'ordre INCLUDE :
Code :
//I1 JCLLIB ORDER=MY.PDS.REF //IN1 INCLUDE MEMBER=MEMBRE Le plus évolutif est d'appliquer une macro EDIT sur tous le PDS. Comme cet exemple peut resservir à d'autres, j'ai pris le temps d'adapter le REXX "boite à outils" suivant : ==> Principe : Le REXX lit la directory du PDS spécifié et se rappelle lui même sous forme de macro EDIT sur tous les membres du PDS). Il n'y a qu'à adapter le sous-programme constitutif de l'exécution de la macro EDIT à ses besoins. J'ai mis 2 routines. La première (APPLYMAC) pour vérification de fonctionnement, fait un simple affichage du membre édité, la seconde (APLLYMACJ) comme exemple de macro EDIT. Insère 3 lignes constitutives d'une carte JOB, uniquement si la première ligne n'est pas un ordre JOB (c'est évidemment un exemple à adapter) Code :
/* REXX - MYMACRO - LISTE DES MEMBRES D'UN PDS PAR LMMLIST */
/* **** - ET APPLICATION D'UNE MACRO EDIT CONTENUE */
/* DANS CE REXX (APPLYMAC:) EN MODE APPEL MACRO */
/*=========================================================*/
trace 'o'
arg PDS .
if PDS = '' then PDS = userid()'.MYPDS.JCL' /* PDS A METTRE A JOUR */
/* ==> '------------------' NOM DU PDS A CORRIGER !!! */
if sysdsn("'"PDS"'") ^= 'OK' then EXIT 8 /* LE PDS EST INVALIDE */
Parse Source . . MBR . DSNR . /* MEMBRE et PDS D'EXECUTION du REXX */
is MBR = '' then MBR = 'MYMACRO' /* NOM DE CE REXX */
ADDRESS ISPEXEC "ISREDIT MACRO (TR)"
IF RC = 0 THEN SIGNAL APPLYMAC /* C'EST UN APPEL MACRO SOUS EDIT */
/* ON L'APPLIQUE PARTOUT ........ */
/* OU SIGNAL APPLYMACJ EXEMPLE MACRO POUR AJOUT CARTE JOB */
/* --------------------------------------------------------- */
if pos('.',DSNR) > 0 then CALL ALLOCBIB /* ALLOC SYSUEXEC BIB EN EXEC */
/* (SI CE REXX EST APPELE PAR EX) */
ADDRESS ISPEXEC
MACED = MBR ; MBR = '' /* MACRO EDIT A PASSER SUR TOUS LES MEMBRES */
"LMINIT DATAID(ID1) DATASET('"PDS"') ENQ(SHRW)"
'LMOPEN DATAID('ID1')'
Do Forever /* LISTE DES MEMBRES DU PDS A MODIFIER EN MASSE */
'LMMLIST DATAID('ID1') OPTION(LIST) MEMBER(MBR)'
if RC <> 0 then leave
DATAST = "'"PDS"("strip(MBR)")'"
"EDIT DATASET("DATAST") MACRO("MACED")"
end
'LMMLIST DATAID('ID1') OPTION(FREE)'
'LMCLOSE DATAID('ID1')'
'LMFREE DATAID('ID1')'
/* COMPRESS DU PDS APRES MISE A JOUR DE MASSE */
"LMINIT DATAID(ID2) DATASET('"PDS"') ENQ(EXCLU)"
'LMCOMP DATAID('ID2')'
'LMFREE DATAID('ID2')'
Exit
/* CAS D'APPEL DE CE REXX PAR EXEC, IL FAUT ALLOUER SYSUEXEC POUR */
/* APPEL PAR LA SUITE EN PROTOCOLE D'EXECUTION MACRO */
ALLOCBIB:
ADDRESS TSO
AMSG = MSG(OFF) /* ALLOCATION DU PDS CONTENANT LE REXX EN SYSUEXEC */
"ALTLIB DEACT USER(EXEC)" /* POUR EXECUTION DE CE REXX EN MODE MACRO */
"FREE FILE(SYSUEXEC)"
"ALLOC DA('"DSNR"') FILE(SYSUEXEC) SHR REUSE"
if RC > 0 then EXIT RC /* ON S'EST PLANTE DANS LE NOM DU PDS REXX */
"ALTLIB ACTIVATE USER(EXEC)"
AMSG = MSG(ON) /* ---------------------------------------------- */
RETURN
/* CAS D'APPEL DE CE REXX PAR MACRO EDIT (IL S'EST RAPPELE LUI MEME) */
/* ================================================================= */
APPLYMAC:
/* - EXEMPLE DE MACRO EDIT DE TEST -> SIMPLE INDICATION DU MEMBRE */
/* ============================================================== */
trace 'O'
"ISREDIT (MEM) = MEMBER " /* NOM DU MEMBRE */
SAY '--> VU MEMBRE =' MEM '!'
"ISREDIT CAN"
Exit
/* - EXEMPLE DE MACRO EDIT : AJOUT CARTE JOB SI ELLE EST MANQUANTE */
/* =============================================================== */
APPLYMACJ:
trace 'O'
/* ADDRESS ISPEXEC "ISREDIT MACRO" - POUR TEST HORS DE CE REXX */
"ISREDIT (MEM) = MEMBER " /* NOM DU MEMBRE */
JOB1 = "//"left(USERID()'A',8) "JOB (acct),'"MEM"',MSGCLASS=H,CLASS=A,"
JOB2 = "// NOTIFY=?SYSUID,COND=(04,LT)"
JOB3 = "//* *********************************"
"ISREDIT CURSOR = 1"
"ISREDIT (LIGNE) = LINE 1"
if word(LIGNE,2) <> 'JOB' then do
"ISREDIT LINE_AFTER 0 =" '"'JOB3'"' /* INSERT LIGNES ORDRE INVERSE */
"ISREDIT LINE_AFTER 0 =" '"'JOB2'"'
"ISREDIT LINE_AFTER 0 =" '"'JOB1'"'
"ISREDIT CHANGE X'7E6F' X'7E50' FIRST" /* NOTIFY=&SYSUID */
"ISREDIT STATS OFF"
"ISREDIT SAVE"
"ISREDIT RES"
"ISREDIT LINE_AFTER 0 = MSGLINE '*** CARTE JOB AJOUTEE' "
"ISREDIT CURSOR = 1 1"
End
else do
"ISREDIT CAN"
SAY '--> VU MEMBRE =' MEM '!'
End
Exit
D'autre part en Batch, il faudrait envisager un montage différent. |
|
|
|
|
|
#6 (permalink) |
|
Invité de passage
![]() Date d'inscription: octobre 2008
Localisation: Guyancourt
Messages: 3
|
Merci à tous,
Excusez moi pour le temps de réponse mais j'ai eu d'autres problèmes. Je me doutais bien être obligé de passer par un REXX mais je voulais l'eviter. Donc je m'en suis fait un Merci Gomulf |
|
|
|
|
![]() |
![]() |
||
Copy d'un membre dans tous les membres d'un PDS
|
||
| Outils de la discussion | |
|
|