IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

z/OS Discussion :

Variables Système


Sujet :

z/OS

  1. #1
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2009
    Messages : 165
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  2. #2
    Membre chevronné Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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) 
    //*

  3. #3
    Membre émérite Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Par défaut
    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 ?"



    .

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    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 ?

  5. #5
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2009
    Messages : 165
    Par défaut
    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é.

  6. #6
    Membre chevronné Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Par défaut
    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.

  7. #7
    Membre Expert Avatar de bernard59139
    Profil pro
    Retired
    Inscrit en
    Octobre 2006
    Messages
    965
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retired

    Informations forums :
    Inscription : Octobre 2006
    Messages : 965
    Par défaut
    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"
    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

  8. #8
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  9. #9
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2009
    Messages : 165
    Par défaut
    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.

  10. #10
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    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 ?

  11. #11
    Membre chevronné Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. SSIS - Variable système ErrorDescription
    Par Marie-Thérèse dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/10/2006, 10h00
  2. variables système, username
    Par sr_rs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/07/2006, 18h48
  3. [Système] Recupération de variable système
    Par dj-julio dans le forum Langage
    Réponses: 2
    Dernier message: 03/01/2006, 15h45
  4. Réponses: 9
    Dernier message: 03/10/2005, 14h28
  5. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo