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 :

data set utility - generate


Sujet :

Cobol

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 13
    Points : 15
    Points
    15
    Par défaut data set utility - generate
    Bonjour à tous,

    J'ai un projet d'école à remettre en cobol, je dois dans un premier temps créer une map (la fenêtre de saisie des données). J'ai exécuté les instrus du prof, mais je vois pas une seconde où ça plante, mon code est assez long et je pense que c'est trop rébarbatif pour que je puisse espérer recevoir de l'aide.
    J'ai fait un cobjcl à mon nom (je suis sur un main frame) et il est correcte.
    Le code commence par :
    [CODE
    ================================ T O P ======
    PRINT NOGEN
    CB31000 DFHMSD TYPE=$SYSPARM,
    MODE=INOUT, X
    LANG=COBOL, X
    STORAGE=AUTO, X
    DATA=FIELD, X
    CTRL=(FREEKB,FRSET), X
    TIOAPFX=YES
    ][/CODE]
    les tabulations sont normalement bien respectées. Et ça fini par :
    Entre ces deux bouts de codes, j'ai mis les éléments de la fenêtres selon le schéma :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                                                                
    NOME     DFHMDF POS=(12,10),                                             X
                            ATTRB(ASKIP,PROT,BRT),                             X
                            INITIALIZE='LABEL DESCRIPTION',                   X
                            LENGTH=20
    C'est comme ça que j'ai fait tout le code, en fonction des champs de saisie et des labels. Le msg d'erreur est :
    data set utitlity - generate
    processing at ended eod.

    Le prof dit qu'il faut avoir, après la commande status job, dix fichiers, ce message apparaît au dernier qui est le 4ème...

    Si quelqu'un avait une idée ou une piste, il (avec son idée :-)) sera vraiment le bien venu,

    Merci d'avoir pris le temps de me lire,


    Axel

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur d'étude Mainframe
    Inscrit en
    Septembre 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'étude Mainframe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 61
    Points : 124
    Points
    124
    Par défaut
    Je ne suis pas spécialiste des data sets ni des droits d'accès (création suppression) sur les volumes mais tu peux avoir des soucis avec un fichier du genre "crée-moi un fichier en DISP=SHR" plutôt que d'avoir un truc du genre ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DISP=(NEW,CATLG,DELETE)
    .
    Tu peux avoir des problèmes avec un fichier également si tu fais en JCL quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //*Création du fichier
    //FICHIER1 DD DSN=fichier.a.creer,DISP=(NEW,CATLG,DELETE)
    //FICHIER1 DD DSN=fichier2.a.creer,DISP=(NEW,CATLG,DELETE)
    Si tu utilises deux fois le même DDNAME tu risques d'avoir des soucis...

    Un autre problème exemple est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //*Création du fichier
    //FICHIER1 DD DSN=fichier.a.creer,DISP=(NEW,CATLG,DELETE) <== imaginons que cette instruction plante, le fichier est supprimé
    //*Tri du fichier sur le fichier non créé
    //SORT1 EXEC PGM=SORT
    //IN  DD DSN=&FICHIER1,DISP=SHR
    //OUT DD DSN=fichier.trie,DISP=(NEW,CATLG,DELETE)
    //SYSIN DD *
      SORT FIELDS=COPY (pour simplifier la syntaxe du SORT au maximum, au final le fichier n'est pas trié mais copié)
    Après, je n'ai pas le code du JCL que tu as utilisé mais pour faire simple :
    - Utilise des DDNAME uniques sinon tu vas te perdre et au final le JCL plantera
    - Fais attention aux différents DISP que tu utilises car ce sont eux qui te donnent le type d'accès au fichier

    Edit : - Fais aussi attention aux minuscules, JCL déteste ça et plantera systématiquement si tu en mets ailleurs que dans les commentaires...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 765
    Points : 10 748
    Points
    10 748
    Par défaut
    Bonjour,

    Pour bien te répondre il nous faudrait quelques précisions. En quoi consiste ton traitement ? Tu nous parles d'écran de saisie, tu sous-entends par là du CICS ? Quel est le JCL associé ?

    Pour t'aider dans le plantage tu pourrais mettre ton 4ème fichier (qui plante) en DISP=(NEW,CATLG,CATLG) comme ça en cas de plantage tu verras ce qui a été écrit jusqu'au plantage. Par contre pense bien à deleter tes fichiers quand tu relances le traitement.

    J'avoue que mon post fait un peu catalogue de questions, mais pour te répondre de manière constructive, mieux connaître le sujet m'aiderait.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Bonjour,

    Alors à la vision du code, c'est clairement une map CICS.

    Ensuite, si il n'y a pas de message d'erreur explicite, il va être difficile de diagnostiquer.

    Par contre, certes cela fait quelques temps que je n'ai pas fait de cobol CICS, mais 4 fichiers pour une compilation de map, ça me surprend pas. De mémoire (je n'ai pas moyen de vérifier dans l'immédiat), il doit y avoir le mapset, un load, une copy, et un fichier que je n'ai jamais su à quoi il servait. C'est clairement des résidus de mémoire que je donne juste au cas où ça peut faire avancer avant que quelqu'un donne une réponse plus pertinente. (si j'ai le temps ce soir, je regarderai).

    Déjà, peux-tu demander à ton prof à quoi correspondent les 10 fichiers attendus ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Un tout grand merci déjà d'avoir répondu, je vois mon prof demain, je lui demanderai à quoi correspondent les 10 fichiers.

    @Skyline : Ce genre de code me dit pas grand chose, mais le prof nous dit qu'on ne doit pas créer de fichiers, cics s'en charge. Mais même si c'est pas très parlant pour moi, on avait vu cette partie en cobol et c'est effictivement à ça que ça ressemblait :-)
    @darkzinius : Oui j'avais oublié de préciser, c'est bien une map en cics et j'affiche le jcl plus loin. Par contre le message quand j'affiche le fichier 4 c'est : data set utility - generate
    process ended at eod...
    pas très parlant :-). Au niveau du sta j, j'ai repéré une ligne qui disait jcl error... je suis un champion ! C'est à dire que le prof m'avait dit qu'il était bon, donc j'ai pas chercher de ce côté là.
    Voilà le jcl (il s'appelle jclcics et mon id est ands313, et mon n° de transaction est CB31000) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     000001 //ANDS313 JOB ,PALMA,CLASS=P,MSGCLASS=Z,NOTIFY=ROSEAZY                 
     004900 //ST  EXEC  ASMMAP,MSET=M,LIB=COBLIB,USER=ANDS313,ENV='.RESIDENT.',    
     004901 //       TRAN=CB31000                                                  
     005000 //MAP.SOURCE DD *
    .

    En tout cas à grand merci à vous trois, c'est vraiment sympas de checker ça avec moi, je vous dis quoi dès que le prof a résolu le bug.

    A +

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur d'étude Mainframe
    Inscrit en
    Septembre 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'étude Mainframe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 61
    Points : 124
    Points
    124
    Par défaut
    si tu as un JCL ERROR c'est peut être à cause de ça dans ton JCL...
    Citation Envoyé par axelvdk Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     000001 //ANDS313 JOB ,PALMA,CLASS=P,MSGCLASS=Z,NOTIFY=ROSEAZY                 
     004900 //ST  EXEC  ASMMAP,MSET=M,LIB=COBLIB,USER=ANDS313,ENV='.RESIDENT.',    
     004901 //       TRAN=CB31000                                                  
     005000 //MAP.SOURCE DD *
    essaye dans ton code transaction de mettre :
    Je ne suis pas spécialiste de CICS

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Salut,

    Je réponds un peu tard mais y avait les fêtes :-), j'ai la solution du problème, il fallait le savoir, ça se trouvait au niveau du code jcl.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    000001 //ANDS313 JOB ,PALMA,CLASS=P,MSGCLASS=Z,NOTIFY=ROSEAZY                 
     004900 //ST  EXEC  ASMMAP,MSET=M,LIB=COBLIB,USER=ANDS313,ENV='.RESIDENT.',    
     004901 //       TRAN=CB31000                                                  
     005000 //MAP.SOURCE DD *
    En fait, il fallait pas que je mette l'identifiant 313 à l'ands affecté à l'user (là où c'est souligné). Je devais simplement laisser ands...

    Un grand merci, Joyeux Noël et Bonne Année !

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

Discussions similaires

  1. Generator Data set
    Par orland dans le forum R
    Réponses: 0
    Dernier message: 31/10/2012, 10h41
  2. Réponses: 4
    Dernier message: 05/07/2007, 11h11
  3. Bug? (The List must be able to access one data set)
    Par nicolemans72 dans le forum BIRT
    Réponses: 3
    Dernier message: 19/01/2007, 20h53
  4. [C#]Remplir un tree view avec un data set
    Par maitesn1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/07/2006, 09h32
  5. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08

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