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 01/12/2009, 09h52   #1
Membre actif
 
Baptiste GRISEL
Inscription : novembre 2009
Messages : 153
Détails du profil
Informations personnelles :
Nom : Baptiste GRISEL
Âge : 28

Informations forums :
Inscription : novembre 2009
Messages : 153
Points : 180
Points : 180
Par défaut Variables Système

Bonjour,

Il y a quelques limites avec l'enrichissement des variables contenues dans les sysins. Toutefois, depuis la Zos 1.9, il est possible d'utiliser les variables systèmes dans les JCL qu'elles soient statiques ou dynamiques et qu'elles se trouvent dans le JCL en lui-même ou dans une SYSIN. Ainsi, il faut aller regarder les variables qui pourraient nous servir:
/D SYMBOLS pour les variables statiques
et le lien suivant pour les variables dynamiques (date courante, heure ...):
http://publib.boulder.ibm.com/infoce...200/dynpsm.htm
ou utiliser MXI si il est chez vous (option System --> 20. System Symbols), ce qui permet de voir si des variables non standard ont été implémenté.

Il suffit ensuite d'ajouter un petit job à exécuter avant votre jcl et le tour est joué:

Code :
1
2
3
4
5
6
7
8
9
10
//ENRICHIT JOB (XXXX,XXXX),SYSTEM,MSGCLASS=X,CLASS=X
//EZACFSM1 EXEC PGM=EZACFSM1,REGION=0K,TIME=10
//SYSOUT DD SYSOUT=(,INTRDR)
//SYSIN DD DATA ------------- JOB TO SUBMIT ---------------------
//LISTENT JOB(XXXX,XXXX),SYSTEM,MSGCLASS=X,CLASS=X
//S1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTC ENT('XXX.XXXXXXX.XXX.XXXXXX.X&LYYMMDD.')
/*
Vous en pensez quoi? On peut aussi combiner les variables ou ne prendre que certains morceaux (ex: &XXXXX(a:b) ou A correspond à la position de départ dans la variable et B, la longueur)

Dernière modification par Lemmings1406 ; 01/12/2009 à 12h42.
Lemmings1406 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2009, 21h04   #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
Bonjour,

J'ai pris mon temps avant cette réponse, histoire de m'assurer quelle n'avait rien de polémique. Juste un complément d'informations sur ce coquin de Sort.
Cet utilitaire TCPIP est intéressant mais m'a laissé une vieille impression de passer à côté de quelque chose. Probable donc, mais je n'ai pas vu.
Pour moi, les variables symboliques sont surtout indispensables pour des IPL SYSPLEX. Effectivement on peut y trouver des choses intéressantes, &JOBNAME par exemple (encore qu'elle soit facile à récupérer en TIOT).
En cas de réel besoin, aucune difficulté à récupérer en REXX (ispexec 'VGET (...) SYMDEF SYMNAMES(SYSNAME)') mais aussi dans un des utilitaires le plus connu (et méconnu ?) : SORT, qui au passage via les multiples formats date et heures, avec incréments compris, offre des possibilités bien plus complètes.
SORT est certainement un des utilitaires les plus puissants et usuels en MVS, le plus souvent utilisé à un faible part de ses possibilités (800 pages, rien que pour la doc de base !) et je pense que nos camarades Bernard59139 ou Peut-êtreUneRéponse qui maîtrisent au moins autant que ce j'en connais ne me contrediront pas sur ce point.
Parce que j'aime bien ce langage, il est vrai que je pense souvent à REXX pour des problèmes un peu particuliers de prod.
Mais souvent SORT s'en sortirait très bien, en plus performant. Aucun problème pour générer un fichier à reprendre en SYSIN qui contiendrait des infos date et heure. A la limite (mais je préfère éviter), pas beaucoup plus pour construire un JCL soumis par reader interne JES2, dont utilisation éventuelle des variables symboliques, sur lesquelles on peut faire les mêmes substr.
Pour preuve l'exemple suivant :
C'est certes un peu plus complexe, mais en ce qui me concerne, je préfère m'appuyer sur quelques outils que je maîtrise tout relativement que sur beaucoup que ma sénilité me rend difficile à mémoriser.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//STEPSORT  EXEC PGM=SORT                                                
//SYSOUT    DD SYSOUT=*                                                 
//SORTIN    DD *                                                        
DUMMYDATA                                                       
//* SORTOUT   DD SYSOUT=(*,INTRDR)                                        
//SORTOUT   DD SYSOUT=*                                                 
//SYMNAMES  DD *                                                        
JOBN,S'&JOBNAME'                                                        
//SYSIN     DD *                                                        
  SORT FIELDS=COPY                                                      
  INREC FIELDS=(DATE1,TIME)                                             
  OUTFIL OUTREC=(C'//',JOBN,C' JOB ',X'7D',C'ALLOC',X'7D',              
         C',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),',/,                      
         C'//',13X,C'COND=(04,LT),NOTIFY=&SYSUID',/,                    
         C'//*',/,                                                      
         C'//STEP01   EXEC PGM=IEFBR14',/,                              
         C'//DD1      DD   DSN=&SYSUID..',C'D',3,6,                     
         C'.T',9,2,12,2,15,2,C',',/,                                    
         C'//',11X,C'DISP=(NEW,CATLG,DELETE),UNIT=3390,',/,             
         C'//',11X,C'SPACE=(TRK,(90,90),RLSE),',                        
                   C'DCB=(LRECL=80,RECFM=FB,BLKSIZE=0)',/,              
         C'//*',80:X)                                                   
/*                                                                      
//                                                                      
//* RESULTAT ->                                                        
//MYUSER JOB 'ALLOC',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),               
//             COND=(04,LT),NOTIFY=&SYSUID                              
//*                                                                     
//STEP01   EXEC PGM=IEFBR14                                             
//DD1      DD   DSN=&SYSUID..D091202.T174659,                           
//           DISP=(NEW,CATLG,DELETE),UNIT=3390,                         
//           SPACE=(TRK,(90,90),RLSE),DCB=(LRECL=80,RECFM=FB,BLKSIZE=0) 
//*
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2009, 22h09   #3
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 508
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 : 508
Points : 609
Points : 609
Complètement d'accord avec toi Homer-ac. DFSORT, c'est un peu comme EXCEL, très utilisé mais seulement à 10% de ses possibilités. Pourtant il me dépanne presque quotidiennement.

Un peu de vécu récent :

Eux (paniqués) - "Le fichier que vous nous transmettez comporte des zéros binaires que nous ne savons pas traiter"

Moi (rassurant) - "Bon OK > Correction programme + compil + TU/TI + livraison + rejeu du traitement."

Eux (ennuyés) - "Hum, il nous faut votre fichier dans une demi heure"

Moi (généreux) - "Bon OK > DFSORT : ALTSEQ CODE=(0040), dans 10min ça vous ira ?"



.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2009, 22h28   #4
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 071
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 071
Points : 1 659
Points : 1 659
Je suis tout à fait d'accord avec vous deux pour dire que DFSORT est un produit vraiment puissant mais méconnu. Moi, j'adore le petit frère du SORT, à savoir ICETOOL (qui n'est qu'un produit "frontal" du SORT) qui permet de faire bien des choses aussi.

Il faut savoir également que Franck Yeager, qui est le responsable du produit chez IBM et sans doute le "boss" de l'équipe de développement associée, répond régulièrement sur les forums US à beaucoup de questions, même parfois les plus simples, sur son bébé ... Etonnant non ?
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2009, 09h53   #5
Membre actif
 
Baptiste GRISEL
Inscription : novembre 2009
Messages : 153
Détails du profil
Informations personnelles :
Nom : Baptiste GRISEL
Âge : 28

Informations forums :
Inscription : novembre 2009
Messages : 153
Points : 180
Points : 180
Bonjour,

Que de réaction...Je suis d'accord pour dire que sort est puissant et n'est utilisé qu'à un faible pourcentage de ses capacités.

Moi aussi j'aime bien le langage REXX mais la solution évoquée dans mon post nécessite moins de manipulation et est peut-être plus facile à mettre en oeuvre. Après, c'est une question d'habitude. Quand ça n'existait pas, on s'en passait, maintenant que ça existe, soit on s'y intéresse, soit on ne s'en sert pas mais à mon avis (je suis jeune sur le mainframe (6 ans) et encore plus comme Ingé Système (3 ans)), cette astuce peut valoir le coup.

Continuez de réagir sur le sujet, toutes les critiques sont bonnes à prendre

PS: Si vous connaissez des boites qui embauchent, envoyez moi un petit message privé.
Lemmings1406 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2009, 12h20   #6
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:
toutes les critiques sont bonnes à prendre
Comprenons nous bien, aucune critique la dedans, simplement il était probablement utile de faire remarquer que certains utilitaires à commencer par DFSORT sont très souvent largement sous estimés et méritent que l'on s'y intéressent un peu plus. Idem pour ICETOOL mais si on a une connaissance raisonnable de DFSORT + quelques modèles ICETOOL, on peut souvent contourner bien des problèmes.
Homer-ac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2009, 07h14   #7
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

Avec Dfsort, j'ai appris quelque chose.
Effectivement, le sort devient une superbe usine à mouliner les données de fichiers. Usine qui peut se transformer en Usine à gaz.
La documentation se complète d'une série de PTF (ou APAR ou ...) qui ajoute des fonctions diverses qui, au début, ne sont pas toujours bien documentées.

La seule doc que j'ai trouvé sur le programme EZACFSM1 tient en 2 lignes dans "IP Configuration Guide"
Citation:
For MVS system symbols in other configuration files, use the symbol translator utility, EZACFSM1, to translate the symbols before the files are read by TCP/IP. EZACFSM1 reads an input file and writes to an output file, translating any symbols in the process.
Y a-t-il mieux?

Nous vivons une époque formidable
bonne journée
bernard59139 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2009, 11h13   #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
Citation:
Envoyé par Lemmings1406 Voir le message
Bonjour,

Il y a quelques limites avec l'enrichissement des variables contenues dans les sysins. Toutefois, depuis la Zos 1.9, il est possible d'utiliser les variables systèmes dans les JCL qu'elles soient statiques ou dynamiques et qu'elles se trouvent dans le JCL en lui-même ou dans une SYSIN. Ainsi, il faut aller regarder les variables qui pourraient nous servir:
/D SYMBOLS pour les variables statiques
et le lien suivant pour les variables dynamiques (date courante, heure ...):
http://publib.boulder.ibm.com/infoce...200/dynpsm.htm
ou utiliser MXI si il est chez vous (option System --> 20. System Symbols), ce qui permet de voir si des variables non standard ont été implémenté.

Il suffit ensuite d'ajouter un petit job à exécuter avant votre jcl et le tour est joué:

Code :
1
2
3
4
5
6
7
8
9
10
//ENRICHIT JOB (XXXX,XXXX),SYSTEM,MSGCLASS=X,CLASS=X
//EZACFSM1 EXEC PGM=EZACFSM1,REGION=0K,TIME=10
//SYSOUT DD SYSOUT=(,INTRDR)
//SYSIN DD DATA ------------- JOB TO SUBMIT ---------------------
//LISTENT JOB(XXXX,XXXX),SYSTEM,MSGCLASS=X,CLASS=X
//S1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTC ENT('XXX.XXXXXXX.XXX.XXXXXX.X&LYYMMDD.')
/*
Vous en pensez quoi? On peut aussi combiner les variables ou ne prendre que certains morceaux (ex: &XXXXX(a:b) ou A correspond à la position de départ dans la variable et B, la longueur)
Pardon pour me retard sur ma réaction à ce sujet, mais j'aimerais un peu mieux comprendre ton jcl. je vois 2 carte jobs, est-ce que c'est normal ?

Et que signifie la ligne :

//SYSIN DD DATA ------------- JOB TO SUBMIT ---------------------

et dernière question :

est-ce que ça fonctionne pour des variables OPC ?

Merci d'avance pour tes réponses.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2009, 07h49   #9
Membre actif
 
Baptiste GRISEL
Inscription : novembre 2009
Messages : 153
Détails du profil
Informations personnelles :
Nom : Baptiste GRISEL
Âge : 28

Informations forums :
Inscription : novembre 2009
Messages : 153
Points : 180
Points : 180
Re,

Les 2 cartes jobs, c'est normale. En réalité, un premier job est soumis et va remplacer les variables par leurs valeurs et ensuite le job enrichit est à son tour soumis.

Ca ne fonctionne pas pour les variables TWS. C'est uniquement pour les variables systèmes.
Lemmings1406 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2009, 10h26   #10
Membre confirmé
 
Inscription : mars 2004
Messages : 1 149
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 149
Points : 224
Points : 224
Merci,

par contre je ne comprends toujours pas ce qu'il faut mettre dans :

//SYSIN DD DATA ------------- JOB TO SUBMIT ---------------------


Aurais-tu un exemple entier ?
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2009, 12h00   #11
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:
par contre je ne comprends toujours pas ce qu'il faut mettre dans :
//SYSIN DD DATA ------------- JOB TO SUBMIT ---------------------
Aurais-tu un exemple entier ?
Mais Lemmings1406 a fourni un exemple entier. Le SYSIN DD DATA permet de mettre du JCL en SYSIN, sinon le SYSIN s'arrêtera à la premiere // rencontrée en COL 1. Le plus souvent on code ça avec un délimiteur de fin via DLM=??, ici c'est inutile il n'y a pas de suite au JCL qui passe en SYSIN un JOB qui sera soumis par un Reader interne JES2. Avec DLM= ça donnerait
Code :
1
2
3
4
5
//SYSIN  DD  DATA,DLM=££  (ou $$ ou autre que //) 
........ Le JCL à passer en passer en SYSIN
........
££  
//* (ou $$ ou autre ...)  puis la reprise au JCL à traiter par JES
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 05h56.


 
 
 
 
Partenaires

Hébergement Web