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 :

Valeur max d'une zone d'un fichier via JCL (Continuer une numérotation)


Sujet :

JCL - SORT

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 32
    Points : 50
    Points
    50
    Par défaut Valeur max d'une zone d'un fichier via JCL (Continuer une numérotation)
    Bonjour,

    Je ne suis pas sur que je procède de la bonne façon, j'aimerais votre avis et aussi un peu d'aide de votre part.

    Je dois continuer le chargement d'une table en gardant ses clés primaires existantes :

    Table Toto qui contient :

    00001TITI
    00002TATA
    00003TOTO

    La clé primaire est les 5 premiers caractères soit :

    00001
    00002
    00003

    Je décharge une autre table TITI qui contient

    YOYO
    MAMA
    PAPA

    Je souhaite charger ma table TOTO à partir des données de TITI en conservant les clés primaires de TOTO

    00001TITI
    00002TATA
    00003TOTO
    +
    00004YOYO
    00005MAMA
    00006PAPA

    En gras ce sont les nouvelles clés primaires que j'ai besoin de générer.

    Je pensais faire un SEQNUM en JCL à avec comme clé de START, la dernière valeur de clé primaire récupéré sur la table TOTO.

    Mais je ne sais pas d'une,

    - Comment récupérer la valeur max d'un champs d'un fichier (ici je souhaite récupérer la clé 0003 du record 00003TOTO de la table TOTO, et la passer en paramètre du second step qui réalise un SEQNUM à partir de la valeur récupéré précédemment pour réaliser une numérotation comme suit sur les données de la table TITI

    00004YOYO
    00005MAMA
    00006PAPA

    En gras, les nouvelles clés primaires recalculé.

  2. #2
    Membre du Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 32
    Points : 50
    Points
    50
    Par défaut
    J'ai finalement trouvé ma réponse (Faut pas me laisser trop attendre sinon je trouve tout seul , je la donne ici au cas où quelqu'un souhaiterais savoir.

    En fait, il y a deux possibilités :

    1° - Charger en LOAD RESUME le second fichier sans préciser la clé primaire dans le masque de chargement. (Je ne détaille pas, c'est assez simple à comprendre). En effet la clé primaire sera généré automatiquement par DB2 lors du LOAD RESUME.

    2° - On va générer les nouvelles clés primaires par JCL, et l'on va retrouver notre bon vieux ICETOOL qui fait toujours des miracles sur Mainframe :

    STEP1 : Récupérer le dernier record de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //STEP001  EXEC PGM=ICETOOL                                   
    //TOOLMSG  DD SYSOUT=*                                        
    //DFSMSG   DD SYSOUT=*                                        
    //IN       DD DSN=FILEIN,DISP=(SHR,PASS)   **(Qui est le fichier à plat de la première table à charger)
    //OUT      DD DSN=FILEOUT,                         
    //            DISP=(,CATLG,CATLG),SPACE=(CYL,(1000,1000),RLSE)
    //TOOLIN DD *                                                 
     SUBSET FROM(IN) TO(OUT) KEEP INPUT LAST                      
    /*
    So far, So good.

    Maintenant je format un fichier SYSIN contenant la commande SEQNUM avec comme clé de START, la valeur récupéré lors du STEP précédent.

    STEP2 : Constituer une SYSIN avec le SEQNUM et la clé de START.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //STEP002  EXEC PGM=SORT                                          
    //SYSOUT   DD SYSOUT=*                                            
    //SORTIN   DD DSN=FILEOUT,                             
    //            DISP=(SHR,PASS)                           
    //SORTOUT  DD DSN=FILESYS,                             
    //            DISP=(,CATLG,CATLG),SPACE=(CYL,(1000,1000),RLSE)    
    //SYSIN    DD DATA                                                
     SORT FIELDS=COPY
     OUTREC BUILD=(C' OUTREC FIELDS=SEQNUM,8,BI,START='1,8,C'1,8'))       
    /*

    STEP3 : Reconstitue la population avec les clés correspondantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //STEP003  EXEC PGM=SORT                               
    //SYSOUT   DD SYSOUT=*                                 
    //SORTIN   DD DSN=FILETITI,   **(Qui est l'unload dans un fichier plat des clés à générer) 
    //            DISP=(SHR,PASS)                          
    //SORTOUT  DD DSN=FILETITI_PRIMARY_KEYS,    
    //            DISP=(,CATLG,CATLG),                            
    //            SPACE=(CYL,(1000,1000),RLSE),            
    //            DATACLAS=EXSEQ                           
    //SYSIN    DD DSN=FILESYS,DISP=(SHR)
    Je précise que je n'ai pas entièrement testé ce code, car j'ai dans mon cas précis, j'ai réalisé un numérotage beaucoup plus complexe sur deux fichiers en un, bref cela est trop compliqué et inutile à expliquer.

    Ensuite il suffit de faire un LOAD RESUME du fichier FILETITI_PRIMARY_KEYS sur la table et c'est terminé.

    GAME OVER


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2003] Selection d'une zone précise dans fichier word
    Par Lucas42 dans le forum VBA Word
    Réponses: 3
    Dernier message: 20/05/2009, 01h37
  2. Réponses: 2
    Dernier message: 07/07/2008, 18h24
  3. lire une zone d'un fichier excel
    Par DEV-10 dans le forum VB.NET
    Réponses: 3
    Dernier message: 04/03/2008, 22h19
  4. [VBA Word] Créer un lien vers une zone d'un fichier Excel
    Par hirochirak dans le forum VBA Word
    Réponses: 7
    Dernier message: 19/12/2006, 12h26
  5. Créer une zone visible qu'après un clic sur une zone
    Par spec10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2006, 04h00

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