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

JCL - SORT Discussion :

JCL via Rexx et parallélisme


Sujet :

JCL - SORT

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Par défaut JCL via Rexx et parallélisme
    Bonjour à tous,
    Je suis un petit nouveau sur l’environnement z/OS et j’aurais besoin de vos conseils pour un projet sur lequel je travaille actuellement.

    Je dois récupérer des Sysout de Beta92 et réaliser un traitement sur celles-ci.
    Je ne dispose que du nom des jobs.

    Dans un premier temps j’ai réussis via un jcl à récupérer une Sysout via ce jcl et à la placer dans un pds :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    //carte job
    //*********************************************************************
    //*             PROCESS HISTORY MANAGER (BETA 92 - V4R3)              *
    //*           (C) COPYRIGHT BETA SYSTEMS SOFTWARE AG, 2008            *
    //* ----------------------------------------------------------------- *
    //*     THIS JOB PRINTS SELECTED SYSOUT LISTS FROM THE ONLINE LIST    *
    //*     DATA SET(S).                                                  *
    //*********************************************************************
    //PRINT    EXEC PGM=BST01RFF,REGION=0M,
    //             PARM=('S=92,B01LST=00,B92LST=00',
    //             'PGM=B92PRINT')
    //*
    //STEPLIB  DD  DISP=SHR,
    //             DSN=SYSM.BET.BSA.APFLOAD
    //         DD  DISP=SHR,
    //             DSN=SYSM.BET.BSA.LOAD
    //         DD  DISP=SHR,
    //             DSN=SYSM.BET.B92.LOAD
    //*
    //B92DEF   DD  DUMMY
    //*
    //SFFPARM  DD  DISP=SHR,
    //             DSN=J6SXU.BET.PARMLIB
    //*
    //SFFFDUMP DD  SYSOUT=*
    //SYSUDUMP DD  SYSOUT=*
    //OMSPRINT DD  SYSOUT=*
    //B92LOG   DD  SYSOUT=*
    //*
    //SYSIN    DD  *
    PRINT
      SDATE(TODAY)
      STIME(00:00:00)
      PDATE(TODAY)
      PTIME(23:59:59)
      MASK(MM/DD/YY)
      AUTOSEL(NO)
      JOBNAME(<NomDuJob>)
      JOBID(*)
      NETID(*)
      GROUP(*)
      MESSAGE(LONG)
      SCOPE(ONL)
      DISPOSITION(SHR)
      DATASET(HLQ.OUT(LOG))
    //*
    Ayant plusieurs Sysouts à récupérer, je voudrai, via un fichier de paramètre, enchainer ce jcl pour chaque nom de job avec un programme Rexx.

    Et arrivé ici, je suis un peu perdu.

    Quelle est selon vous la meilleure méthode à employer ?

    J’ai repéré plusieurs pistes mais je ne sais pas celle que je dois prendre

    1- Modifier une Sysin externe et lancer le jcl à chaque changement ?
    2- Générer et lancer le jcl via REXX ?
    3- J’ai entendu parler de skeleton JCL ?


    Pouvez-vous m’éclairer sur le sujet ou m’orienter vers de la documentation car je n'ai jamais fait ce genre d'opération.

    Merci

  2. #2
    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
    Plusieurs remarques :

    1) Tu parles de parallélisme. Je verrais plutôt un enchainement de plusieurs steps dans un même job (en tenant compte du nombre limite de steps par job bien sûr ... ). En effet, si tu lances plusieurs jobs en même temps, non seulement ils risquent de se géner les uns les autres mais en plus tu risques d'indisposer l'administrateur de ton z/OS qui va voir d'un très mauvais oeil l'arrivée d'une floppée de jobs ... ( si le REXX boucle en plus là c'est le pompon ... )

    2) Dans ton exemple de JCL tu as paramétré le nom du job mais je ne vois si tu as paramétré le nom du fichier en sortie ... ce qui risque de ne pas vraiment donner le résultat attendu ...

    3) pour générer le job, soit tu utilise du REXX rustique "pur et dur" (ce que je fais souvent pour aller vite ... ) soit tu utilises les fonctions plus évoluées d'ISPF avec notamment la fonction SKELETON. Cette dernière méthode est plus élégante mais un peu plus subtile à coder ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 63
    Par défaut
    salut,

    un rexx lancé en interactif (dans un premier temps) accompagné des services ispf (ftopen, ftincl, ftclose) fonctionnerait très bien.

    mettre tes paramètres dans un fichier. pour chaque ligne lue dans le fichier le rexx appelle le jcl via le service ftincl (au préalable allouer sous la forme ispexec libdef ispslib dataset ...) puis soumet le job. et on recommence avec la ligne suivante du fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    address ispexec      
    'ftopen temp'        
    'ftincl' nom de ton jcl 'ext'
    'ftclose'            
    'vget (ztempf)'      
    address tso          
    "submit ('"ztempf"')"
    si tu ne veux pas inonder l'input queue avec tes job (portant le même nom ils s’exécuteront les uns après les autres) alors utilise la cmde status dans le rexx (soumission du job si le précédent est terminé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x=outtrap(out.,,noconcat)                     
    sub de ton jcl ...
    parse var out.1 . . jname'('jid')' .          
    do forever                                    
      "st ("jname'('jid"))"                       
      if pos('ON OUTPUT QUEUE',out.1)>0 then leave
    end                                           
    x=outtrap(off)
    c'est une solution pas compliqué et assez rapide à mettre en place !

    ++

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur et formateur Mainframe
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur et formateur Mainframe
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Bonjour,

    Pour avoir toute la doc sur les services ISPF, voila le lien :
    http://publibz.boulder.ibm.com/cgi-b...elves/ISPZPM90

    Pour ton squelette, le JCL que tu cites pourra avoir à la place de <NomDuJob> la variable symbolique &NOMDUJOB (sur 8 caractères).

    Le JCL qui te servira à lancer ton REXX devra ressembler à ça :

    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
    //STEPNAME EXEC PGM=IKJEFT1B,DYNAMNBR=20,REGION=6M
    //SYSTSPRT DD  SYSOUT=*
    //SYSPRINT DD  SYSOUT=*
    //CEEMSG   DD  SYSOUT=*
    //SYSOUT   DD  SYSOUT=*
    //SYSUDUMP DD  SYSOUT=*
    //ISPLOG   DD DUMMY
    //ISPPROF  DD DSN=[PDS PROFILE],DISP=SHR
    //ISPPLIB  DD DSN=[PDS des panels ISPF],DISP=SHR
    //ISPMLIB  DD DSN=[PDS des messages ISPF],DISP=SHR
    //ISPSLIB  DD DSN=[PDS où figure ton SKELETON],DISP=SHR
    //ISPTLIB  DD DSN=[PDS des tables ISPF],DISP=SHR
    //SYSEXEC  DD DISP=SHR,DSN=[PDS où figure le REXX]
    //SYSTSIN  DD  *
     ISPSTART CMD(LeNomDeTonREXX)
    /*
    Pour savoir ce qu'il faut coder dans ISPPROF, ISPPLIB, ISPMLIB et ISPTLIB, tu peux passer la commande TSO ISRDDN qui t'indiquera pour chaque DDNAME le PDS correspondant.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Par défaut
    Bonjour et merci pour toutes ces remarques.

    je vais me pencher sur tout ça

Discussions similaires

  1. Ajout catégories Sources : COBOL & JCL (voire REXX ?)
    Par Metalman dans le forum Evolutions du club
    Réponses: 0
    Dernier message: 05/02/2014, 10h50
  2. Un lanceur de JCL en REXX
    Par LeonK dans le forum JCL - SORT
    Réponses: 2
    Dernier message: 10/08/2012, 12h35
  3. [OPC/TWS] Add application via JCL ou REXX
    Par arneo dans le forum JCL - SORT
    Réponses: 22
    Dernier message: 17/02/2011, 07h16
  4. Contenu d'un PDS via REXX
    Par Fred Ratel dans le forum z/OS
    Réponses: 2
    Dernier message: 29/06/2009, 12h47
  5. REXX soumettre un JCL
    Par Kyle Katarn dans le forum JCL - SORT
    Réponses: 9
    Dernier message: 16/12/2008, 16h27

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