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

Cobol Discussion :

[z/OS] Allocation de fichier


Sujet :

Cobol

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [z/OS] Allocation de fichier
    Sujet : Allocation de fichier

    Je n'arrive pas à allouer une taille suffisamment grande pour pouvoir écrire
    toutes les données dans mon fichier; en effet, je tombe toujours sur un B37.

    1er étape : Je décharge un VSAM dans un séquentiel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //S020IDCA EXEC PGM=IDCAMS                           
    //FICIN     DD  DSN=DKIO.DTCDM.IOMSB,DISP=SHR           
    //FICOUT    DD  DSNDKIO.KIO.DP2DM.IOMSSEQ,DISP=(,CATLG),  
    //          SPACE=(CYL,(1700,300),RLSE),             
    //          DCB=(RECFM=VB,LRECL=4084,BLKSIZE=8192)   
    //SYSPRINT  DD  SYSOUT=*                             
    //SYSIN     DD  *                                    
     REPRO IFILE(FICIN) OFILE(FICOUT)                    
    /*
    Ça fonctionne : je copie un peu plus de 5 millions de lignes du fichier VSAM
    vers le séquentiel.

    2nde étape : modification de données dans fichier séquentiel.

    1er test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //S010COTY       EXEC PGM=KYIOS024,REGION=2M       
    //SYS000   DD   SYSOUT=*                           
    //SYSOUT   DD   SYSOUT=*                           
    //SYSPRINT DD   SYSOUT=*                           
    //SYSDBOUT DD   SYSOUT=*                           
    //SYSUDUMP DD   SYSOUT=*                           
    //FENTREE  DD   DISP=SHR,DSN=DKIO.KIO.DP2DM.IOMSSEQ
    //FSORTIE  DD   DSN=DKIO.SAVE.IOMS0,DISP=(,CATLG),  
    //          SPACE=(CYL,(1700,300),RLSE),             
    //          DCB=(RECFM=VB,LRECL=4084,BLKSIZE=8192)
    Ça ne marche pas : tombe sur un B37 pour le fichier FSORTIE. Pourtant mon programme ne rajoute aucune ligne, il ne fait que modifier des données dans les lignes.
    J'ai aussi essayé en rajoutant l'option UNIT=(SYSDA,10) pour du multivolume, sans plus de succès

    Je me suis dit que c'était mon programme Cobol qui ne savait pas gérer ce fichier mutli-volume correctement, aussi test 2

    2nd test :
    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
    //S010COTY       EXEC PGM=KYIOS024,REGION=2M       
    //SYS000   DD   SYSOUT=*                           
    //SYSOUT   DD   SYSOUT=*                           
    //SYSPRINT DD   SYSOUT=*                           
    //SYSDBOUT DD   SYSOUT=*                           
    //SYSUDUMP DD   SYSOUT=*                           
    //FENTREE  DD   DISP=SHR,DSN=DKIO.KIO.DP2DM.IOMSSEQ
    //FSORTIE  DD   DSN=DKIO.SAVE.IOMS0,DISP=MOD       
    //FSORTI1  DD   DSN=DKIO.SAVE.IOMS1,DISP=MOD       
    //FSORTI2  DD   DSN=DKIO.SAVE.IOMS2,DISP=MOD       
    //FSORTI3  DD   DSN=DKIO.SAVE.IOMS3,DISP=MOD       
    //FSORTI4  DD   DSN=DKIO.SAVE.IOMS4,DISP=MOD       
    //FSORTI5  DD   DSN=DKIO.SAVE.IOMS5,DISP=MOD       
    //FSORTI6  DD   DSN=DKIO.SAVE.IOMS6,DISP=MOD       
    //FSORTI7  DD   DSN=DKIO.SAVE.IOMS7,DISP=MOD       
    //FSORTI8  DD   DSN=DKIO.SAVE.IOMS8,DISP=MOD       
    //FSORTI9  DD   DSN=DKIO.SAVE.IOMS9,DISP=MOD       
    //FSORT10  DD   DSN=DKIO.SAVE.IOMS10,DISP=MOD
    Où j'ai une rupture dans mon programme : tous les 500 000 enregistrements, je change de fichier de sortie.

    Ensuite étape suivante :
    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
    //S100SORT     EXEC PGM=SORT                  
    //*                                           
    //SYSOUT   DD  SYSOUT=*                       
    //SORTIN   DD   DSN=DKIO.SAVE.IOMS0,DISP=SHR  
    //         DD   DSN=DKIO.SAVE.IOMS1,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS2,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS3,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS4,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS5,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS6,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS7,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS8,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS9,DISP=MOD  
    //         DD   DSN=DKIO.SAVE.IOMS10,DISP=MOD 
    //SORTWK01  DD UNIT=SYSDA,                    
    //             SPACE=(CYL,200)                
    //SORTWK02  DD UNIT=SYSDA,                    
    //             SPACE=(CYL,200)                
    //SORTWK03  DD UNIT=SYSDA,                    
    //             SPACE=(CYL,200)                
    //SORTWK04  DD UNIT=SYSDA,                    
    //             SPACE=(CYL,200)                         
    //SORTOUT  DD   DSN=DKIO.SAVE.IOMSB,DISP=(,CATLG),     
    //         SPACE=(CYL,(1700,300),RLSE),UNIT=(SYSDA,10),
    //         DCB=(RECFM=VB,LRECL=4084,BLKSIZE=8192)      
    //SYSIN    DD  *                                       
       SORT FIELDS=COPY                                    
       SUM FIELDS=NONE                                     
    /*
    Mais là, à nouveau, je me retrouve avec un B37 au bout d'environ 1 300 000 lignes écrites.

    Ce que je ne comprends pas, c'est pourquoi dans ma 1er étape (copie VSAM vers séquentiel), mon allocation fonctionne et j'arrive bien à écrire toutes les
    lignes.
    Et pourquoi dans les autres cas cela ne fonctionne pas ?

    Merci d'avance pour votre aide.

    PS : Ma reconnaissance éternelle à celui qui me donnera la solution.

  2. #2
    Membre éclairé 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
    Points : 801
    Points
    801
    Par défaut
    Peux-tu nous donner le libellé complet de ton SB37?

    Quel est le nombre d'extents utilisés pour ton fichier de sortie en SB37? Si plus de 16, augmente le SPACE.

    .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    le détail du B37 :
    IEC030I B37-04,IFG0554A,QS00117B,S100SORT,SORTOUT,B504,PDF106,0427041D,DKIO.SAVE.IOMSB

    et mon fichier aprés plantage :
    Data Set Name . . . . : DKIO.SAVE.IOMSB

    General Data Current Allocation
    Management class . . : MDV Allocated cylinders : 10,100
    Storage class . . . : SDF1 Allocated extents . : 72
    Volume serial . . . : PDF137 +
    Device type . . . . : 3390
    Data class . . . . . : DNONE Current Utilization
    Organization . . . : PS Used cylinders . . : 10,100
    Record format . . . : VB Used extents . . . : 72
    Record length . . . : 4084
    Block size . . . . : 8192
    1st extent cylinders: 523
    Secondary cylinders : 300
    Data set name type : SMS Compressible . : NO

    Creation date . . . : 2007/01/15 Referenced date . . : 2007/01/15
    Expiration date . . : ***None***
    Si cela peut te donner une piste

  4. #4
    Membre éclairé 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
    Points : 801
    Points
    801
    Par défaut
    B37-04 -->Le 04 c'est généralement caractéristique d'un manque de place sur le volume.

    Tu peux vérifier le pourcentage d'utilisation du volume en dslist (3.4 sous MVS):

    En ligne de commande tu mets l'option v et dans volume serial le nom du volume

    .

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Cela semble etre un problème de volume.
    des questions :
    j'avais alloué mes fichiers en multivolume, il devrait bien arriver à trouver de la place sur les 10 volumes que je lui demande ? ou bien ma déclaration de multivolume n'est pas bonne ?

    Comment MVS choisit le volume sur lequel il va placer le fichier ? Existe t il un moyen de voir la liste de tous les volumes ? je pourrais peut etre forcer mon jcl à écrire sur un volume que j'aurais définie (par un VOL=SER=???)

    Merci encore de ton aide

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut ça marche
    j'ai modifié l'allocation de mon fichier en diminuant mon nombre de cylindre un 1er allocation et en agrandissant les allocations secondaire et ça marche .

    SPACE=(CYL,(800,500),RLSE) au lieu de SPACE=(CYL,(1700,300),RLSE)

    Merci pour la piste sur les volumes.

  7. #7
    Membre éclairé 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
    Points : 801
    Points
    801
    Par défaut
    Si tu repères un volume précis et peu utilisé, tu peux faire un

    Où XXXXXXet le numéro de série du volume que tu souhaites utiliser.

    Tu peux aussi forcer plusieurs volumes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VOL=SER=(XXXXXX,YYYYYY,ZZZZZZ)
    Tu peux aussi indiquer que tu te réserves l'exclusivité d'un volume tout entier. Ce paramètre n'est à coder qu'à bon escient, par exemple pour un gros fichier en création dont on veut que les différentes EXTENT restent groupées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VOL=(PRIVATE,SER=XXXXXX)
    SYSDA est un nom générique pour un pool de disques déterminés par les ingé systèmes. Normalement un UNIT=SYSDA devrait fonctionner pour du multi-volume mais il est possible que ce pool soit paramétré pour ne pas traiter une tel vollumétrie (du moins en environnement de dév)

    A noter: je ne connais pas la syntaxe:

    Ceci dit je pense que des personnes de l'exploit' pourrait te débloquer en 2/2

    En espérant t'avoir mis sur une piste.


    EDIT: trop tard je laisse quand même ma réponse ça pourra servir. NOTA: 72 extent ça faisait beaucoup

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Info complémentaire
    Bonjour,

    D'abord merci a ceux qui m'ont donné des pistes. En fait, mon problème était ailleurs et le SB37 n'en était que la conséquence.
    l'origine du prblème était la gestion des record à taille variable. En effet, mon VSAM était déclaré en variable de 200 à 4096. gérant mal cette taille variable, mon fichier en sortie avait des enregistrements de 4096 à chaque ligne. d'ou l'explosion de la taille du fichier et donc problème d'allocation !
    grace à un autre fil de ce forum, j'ai résolu mon problème. et ça marche.

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

Discussions similaires

  1. Blocksize pour allocation de fichiers
    Par sam01 dans le forum z/OS
    Réponses: 4
    Dernier message: 08/09/2008, 14h07
  2. Réponses: 0
    Dernier message: 24/08/2008, 05h16
  3. lecture de fichier et strategie allocation memoire
    Par TabrisLeFol dans le forum C
    Réponses: 6
    Dernier message: 18/01/2007, 19h19
  4. [alloc] Lecture d'un fichier
    Par GLDavid dans le forum C
    Réponses: 7
    Dernier message: 13/04/2006, 17h28
  5. allocation dynamique et fichier binaire
    Par issou dans le forum C
    Réponses: 9
    Dernier message: 16/10/2005, 00h46

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