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 11/01/2011, 23h09   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 0
Points : 0
Par défaut Utilisation d'un step plusieurs fois, dans un jcl

Bonjour,

Dans un jcl, je souhaite utiliser plusieurs fois le même step. En fait, j'ai la même procédure à lancer, pour trois fichiers différents. Je voudrais éviter de lancer la procédure, trois fois de suite, en changeant à chaque fois, de fichier. Existe t-il une instruction comme "when" ou d'autres itérations, pour le jcl ?

Aider-moi svp.

Twisty.
twisty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 23h18   #2
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Y a t'il des conditions d’exécution entre ces steps, ou sont-ils enchainés. Dans ce dernier cas tu fais 3 steps identiques avec les DSN qui change à chaque step.

.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 09h56   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 0
Points : 0
Par défaut step volumineux

Merci d'avoir répondu. Mais, en fait, ce step est volumineux. Donc, pour un confort visuel, soit une meilleur maintenance, es-t-il possible de boucler sur ce step (avec condition RC=00 biensur), en changeant à chaque fois de fichier ?

Twisty
twisty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 10h26   #4
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 502
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : octobre 2006
Messages : 502
Points : 687
Points : 687
Bonjour

Il n'y a aucune itération possible dans un jcl.

Bonne journée
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 17h11   #5
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Et la solution d'une procédure dite 'INSTREAM PROCEDURE' ?
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 23h12   #6
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Un JCL appel une procédure 3 fois en lui passant en paramètre le DSN à utiliser, exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
//MONJOB   JOB ...
//*                                                                             
//   JCLLIB ORDER=pds.où.trouver.la.proc
//*
//* Step 1 sur 3 - Appel procédure PROCEDUR avec param DSNAME
//STPFIC01  EXEC PROCEDUR,DSNAME=mon.fichier.n01
//*
//* Step 2 sur 3 - Appel procédure PROCEDUR avec param DSNAME
//STPFIC02  EXEC PROCEDUR,DSNAME=mon.fichier.n02
//*
//* Step 3 sur 3 - Appel procédure PROCEDUR avec param DSNAME
//STPFIC03  EXEC PROCEDUR,DSNAME=mon.fichier.n03
//*
La procédure disponible dans pds.où.trouver.la.proc(PROCEDUR) :

Code :
1
2
3
4
5
//STEPTRT1  EXEC PGM=monpgm
//DD0000IN  DD DISP=SHR,DSN=&DSNAME,
//             SPACE=(TRK,5)
//             DCB=(REFM=FB,LRECL=120,BLKSIZE=800)
//...

.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 17h02   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 0
Points : 0
Par défaut complément de la question

Malheureusement, j'ai le message suivant :

UNIDENTIFIED KEYWORD DSNAME

Donc, après exec pgm=procedure , on devrait avoir une autre instruction que " DSNAME" .

Pouvez-vous m'aider ?

Merci d'avance.

Twisty
twisty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 19h14   #8
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Peux-tu coller ton JCL, la proc, et le compte rendu en erreur ?
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 13h51   #9
Invité régulier
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : 6
Points : 6
Par défaut DSNAME

bonjour,
DSNAME est surement un mot-clés réservé, utilise plutot DSN ou FILE....

Pour plus de souplesse tu peux aussi utiliser une proc "instream" pour les tests c'est plus facile.....

bon courage
guesswho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h10   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 0
Points : 0
Par défaut complément de la question

Le INSTREAM PROCEDURE, avec l'instruction PEND, fonctionne bien. Mais, j'aurais voulu utiliser deux fichiers, du genre :

STEP1 EXEC PROC=PROCEDUR,FICH1='nomfichier1',FICH2='nomfichier2'

Mais, FICH2 est rejeté par le système par le message suivant :

UNIDENTIFIED OPERATION FIELD

Existe-t-il une autre instruction ?

Merci d'avance.

Twisty
twisty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 12h31   #11
Membre chevronné
 
Avatar de bernard59139
 
Administrateur de base de données
Inscription : octobre 2006
Messages : 502
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : octobre 2006
Messages : 502
Points : 687
Points : 687
Bonjour

Actuellement, il n'y a aucun moyen de faire du jcl "dynamique".
Un JCL est statique, point barre. Il n'y a aucune boucle possible.

La seule facilité qui existe est de "sauter" des steps par les tests sur RETURN-CODE ou ABEND.

bonne journée
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 13h04   #12
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Citation:
Envoyé par twisty Voir le message
Le INSTREAM PROCEDURE, avec l'instruction PEND, fonctionne bien. Mais, j'aurais voulu utiliser deux fichiers, du genre :

STEP1 EXEC PROC=PROCEDUR,FICH1='nomfichier1',FICH2='nomfichier2'

Mais, FICH2 est rejeté par le système par le message suivant :

UNIDENTIFIED OPERATION FIELD

Existe-t-il une autre instruction ?

Merci d'avance.

Twisty
Si ta procédure n'a prévu qu'un paramètre (est-ce le cas ?) tu ne peux pas l'utiliser avec deux paramètres, ça me semble assez normal ... mais est-ce bien ça ton problème ?
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 11h45   #13
Invité régulier
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : 6
Points : 6
Par défaut JCL Dynamique

Bonjour,
en fait il est tout de même possible de faire du JCL "dynamique" via un générateur de JCL....

le plus simple est de le faire avec un REXX, qui soumettra le JCL (ou la procédure "in steream" ou "cataloguée" au reader interne.
les variables peuvent se passer soit directement, (en batch ou via saisie) soit par la lecture d'un fichier contenant les "variables".

guesswho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 15h24   #14
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 0
Points : 0
Par défaut complément de réponse

L'instream procedure fonctionne bien maintenant, et le cas, vu par "Peut-êtreUneRéponse" (passage du fichier en paramètre avec un nom différent de dsname (ex: fichier)) est résolu. Toutefois, dans tous ces cas, il faut mettre les cartes sysin dans un membre de pds (déclaré en JCLLIB).

Merci à tous.
twisty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 21h47   #15
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Citation:
Envoyé par twisty Voir le message
[...]dans tous ces cas, il faut mettre les cartes sysin dans un membre de pds
Oui pas de sysin "inline" dans une procédure.

.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 14h33   #16
Invité régulier
 
Homme
Ingénieur systèmes et réseaux
Inscription : avril 2009
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : avril 2009
Messages : 15
Points : 5
Points : 5
Bonjour,

Pour gérer le problème de la sysin dans une proc j'utilise un petit programme (assembleur) qui copie les données passées en paramètre à l'appel du programme dans un fichier. Ce fichier est ensuite réutilisé dans la sysin.
EX :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//SENDAOP    PROC                         
//*                                       
....../........
//STEP00  EXEC PGM=CGSGEN,PARM='PUT ''WSYS.EXPORT.AOP'' &NETNAME..TXT'   
//SYSOUT   DD DISP=(,CATLG,DELETE),DSN=WSYS.CGSGEN.FTP,                  
//            SPACE=(TRK,(1,1),RLSE)                                     
//*       
..../.....                                                               
//SFTP     EXEC PGM=FTP,PARM='139.160.120.22(EXIT TIMEOUT 180)'  
//NETRC     DD SYSOUT=*    
..../.......
//SYSIN     DD DSN=WSYS.CGSGEN.FTP,DISP=SHR     
//*                                                  
//    PEND         
//*
//STEP00 EXEC SENDAOP,NETNAME=WSFR02401

Je peux envoyer le load du programme si besoin.

Bonne journée

Jean-Jacques
jjack76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 14h35   #17
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 18
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 18
Points : 12
Points : 12
Une solution possible :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
//MONJOB JOB .......
//*
//*
//JCLLIB JCLLIB ORDER=(PDS.OU.SE.TROUVE.MON.INCLUDE)
//*
//         INCLUDE MEMBER=MONSTEP
//            DSN=MON.FICHIER.N1
//*
//         INCLUDE MEMBER=MONSTEP
//            DSN=MON.FICHIER.N2
//*
//         INCLUDE MEMBER=MONSTEP
//            DSN=MON.FICHIER.N3
Et dans la bibliotheque PDS.OU.SE.TROUVE.MON.INCLUDE tu mets le membre MONSTEP

Code :
1
2
3
4
//STEP     EXEC PGM=MONPROG
//SYSOUT   DD SYSOUT=*
...
//FICHIER DD DISP=SHR,
En faisant bien attention que tu puisses mettre le DSN de ton fichier à la suite de MONSTEP. Raison de la virgule à la fin.

Lors du SUB, le contenu de MONSTEP sera mis à la place de // INCLUDE MEMBER=MONSTEP
minosubb est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h49.


 
 
 
 
Partenaires

Hébergement Web