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 26/10/2009, 19h14   #1
Invité de passage
 
Inscription : octobre 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 26
Points : 3
Points : 3
Par défaut Contrôle Existence d'un membre dans un PDS en JCL

Bonjour,

Etant un peu débutant sur les JCL, et ayant cherché sans succès sur les différentes rubriques, je me permets de vous poser une question.

J'ai un JCL qui permet de faire des compares de 2 fichiers avec une carte de masquage. J'aurai voulu tester dans un step précédent si le membre existe dans un PDS.

Avez-vous un exemple, car tous les exemples que j'ai trouvé sont pour tes fichiers VSAM ?

Merci d'avance.
magfred03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2009, 23h07   #2
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
Tenter de lire un membre inexistant via une DD DSN=MON.PDS(MBR) dans un JCL provoque un ABEND S013 MVS. Certes, on peut poster un COND=ONLY dans un STEP qui prendra la main sur un ABEND, ou mieux encore, gérer par un IF
Code :
1
2
3
4
//      IF  (STEP010.ABENDCC = S013) THEN 
//STEP020 EXEC PGM=MYPROG
//ddname DD DSN=..........
//      ENDIF
Mais ce n'est pas (disons) très clean.
Il est préférable je pense d'écrire un REXX trés simple pour tester si le fichier existe ou non et renvoyer un code retour en conséquence, par exemple 0 ou 1. Comme ça ne fait que quelques lignes, il y a certainement déjà un truc du genre, peut être un peu plus 'raffiné' sur le site. Un exemple au plus simple qui recoit le fichier ou FICHIER(MEMBRE) à tester en PARM :
Code :
1
2
3
4
/* REXX DSN ou DSN(MBRE) en PARM -> RC = 1 si inexistant */
ARG DSN .
if SYSDSN("'"DSN"'") ^= 'OK' then EXIT 1
EXIT 0
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2009, 10h25   #3
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

ce print ne tombe pas en ABEND même si le membre est inconnu.Il faudra gérer les RC
Code :
1
2
3
4
5
6
7
8
//*                                                  
//PCL      EXEC  PGM=IDCAMS
//SYSPRINT DD  SYSOUT=*
//IFIC         DD DISP=SHR,DSN=pds(membre)
//SYSIN      DD  *
 PRINT IFILE(IFIC)
//*
bonne journée
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2009, 11h27   #4
Invité de passage
 
Inscription : octobre 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 26
Points : 3
Points : 3
Merci pour ces réponses qui vont bien m'aider, j'ai juste un problème avec l'appel au REXX ( prb de bibliothèque dans mon JCL ), donc je vais utiliser la solution de Bernard59139, qui vu mes connaissances en JCL est la plus simple à utiliser.
magfred03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2009, 12h39   #5
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
Bien vu Bernard, je n'y avais pas pensé, IDCAMS prend la main sur un ABEND. C'est aussi en plus parfois une méthode pour tester si un fichier est vide avec un count(1)
soit aprés vérif d'un PRINT INFILE(IN1) COUNT(1)
RC = 0 - OK
RC = 4 - fichier vide
RC = 12 - Erreur grave, dont membre d'un PDS non trouvé bien entendu.
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 23h11.


 
 
 
 
Partenaires

Hébergement Web