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 :

Nom de fichier variable


Sujet :

Cobol

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Nom de fichier variable
    Bonjour,

    dans la clause ENVIRONMENT DIVISION FILE CONTROL

    j'aimerais faire SELECT nom-fichier ASSIGN TO nom-externe.

    Je voulais savoir s'il était possible que nom-externe soit une variable ?Comment fait on ?

    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Bonjour,

    A ma connaissance ce n'est pas possible. D'ailleurs quel en serait l'intérêt.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    Bonjour,

    A ma connaissance ce n'est pas possible. D'ailleurs quel en serait l'intérêt.
    L'interêt est de faire des traitements identiques sur sur fichier de strcture identique mais dont le nom change .

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Pour faire des traitements identiques sur des fichiers de même structure il suffit de dupliquer la chaîne non ? Ou alors je n'ai pas totalement compris le besoin initial

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    Pour faire des traitements identiques sur des fichiers de même structure il suffit de dupliquer la chaîne non ? Ou alors je n'ai pas totalement compris le besoin initial
    c'est à dire 'dupliquer la chaîne' ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par JTyvelines Voir le message
    c'est à dire 'dupliquer la chaîne' ?
    Et bien avoir deux JCLs identiques mais avec des fichiers différents.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    Et bien avoir deux JCLs identiques mais avec des fichiers différents.
    En fait voilà la problematique car je n'est pas accès à autre chose que du COBOL:

    Les serveurs de messagerie sont gérés par une équipe de l’administration informatique. Le
    serveur d’envoi génère des informations qui sont récupérées par des fichiers de log chaque
    jour. L’équipe s’intéresse à un type de fichier pour pouvoir faire une assistance plus aisée
    pour les utilisateurs.
    Tous les jours à minuit un nouveau fichier de log est crée. Il est nommé
    LogMail_JJ_MM_AA.log
    Ce fichier reprend l’activité des envois de mails. Chaque ligne contient date et l’heure d’envoi
    du mail l’adresse de l’expéditeur, l’adresse du destinataire et si l’envoi est OK ou KO.
    Ce fichier sera exploité pour faire les recherches.
    1) Décrivez la création du fichier journalier qui a lieu à minuit.
    a) Définir en quelques mots la méthodologie permettant la création des fichiers
    b) Donner l'algorithme associé.
    c) traduire l’algorithme dans le langage de votre choix

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    En fait dans ta problématique de nommage de fichier ne confonds-tu pas le DDNAME et le nommage physique du fichier (le DSN) ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    En fait dans ta problématique de nommage de fichier ne confonds-tu pas le DDNAME et le nommage physique du fichier (le DSN) ?
    Non en fait je veux faire un traitement sur le fichier LogMail_JJ_MM_AA.log.
    Donc le nommage physique sera LogMail_JJ_MM_AA.log et variera tous les jours : SELECT fic ASSIGN TO LogMail_04_12_14.Log , SELECT fic ASSIGN TO LogMail_05_12_14.Log

    mais mon problème est donc d'avoir un pg COBOL identique qui va traiter des fichiers physiques dont le nom varie : c'est pourquoi je voulait mettre le nom_externe en variable.

    Comment faire mais qu'avec le COBOL?

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    C'est bien ce que je dis, tu confonds nom physique et logique. Tu peux très bien passer ta chaîne tous les jours (omme c'est le cas partout dans les chaînes BATCH) avec un DSN qui varie. Il n'y a aucune raison de modifier un programme COBOL pour un changement de DSN en entrée du programme, c'est une problématique JCL.
    Tu n'as peut-être aucune formation JCL pour te poser ce genre de question ?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    C'est bien ce que je dis, tu confonds nom physique et logique. Tu peux très bien passer ta chaîne tous les jours (omme c'est le cas partout dans les chaînes BATCH) avec un DSN qui varie. Il n'y a aucune raison de modifier un programme COBOL pour un changement de DSN en entrée du programme, c'est une problématique JCL.
    Tu n'as peut-être aucune formation JCL pour te poser ce genre de question ?
    Non je n'ai aucune formation JCL.
    Je ne pense pas que l'on me pose ce genre de pb dans mon ennoncé.

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Ben un programme COBOL pour tourner a besoin d'un "exécuteur" (JCL) où les fichiers sont déclarés. Et c'est ici que ton fichier peut par exemple être horodaté. Dans le programme en lui-même il n'y a pas cette notion. Il tourne avec une strcuture type de fichier et effectue ses traitements.

  13. #13
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    Darkzinus, je suppose que jTyvelines travaille en cobol sur une autre plateforme que le mainframe.

    Si tu veux variabiliser le nom de ton fichier, tu fais :

    SELECT nom-fichier ASSIGN TO <une variable niveau 01 dans ta working>

    et dans ta variable Working, tu MOVE le nom de ton fichier.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    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 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par xfanx Voir le message
    Darkzinus, je suppose que jTyvelines travaille en cobol sur une autre plateforme que le mainframe.
    Ah effectivement si c'est le cas je ne suis d'aucun secours

  15. #15
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Dans un programme Cobol, le nom externe correspondant au DDNAME du job ne peut pas être variabilisé.

    Par contre il est possible d'utiliser l'instruction SET dans le JCL pour variabiliser les DSN (si on ne veut pas multiplier les jobs)
    ou utiliser des variables du scheduler (OPC ou CA7 par exemple) pour valoriser des noms construits sur l'horodatage

    Si seuls les champs date / heure des noms de fichiers varient, c'est assez simple à mettre en oeuvre dans la plupart des robots d'exploitation

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juillet 2011
    Messages : 14
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par JTyvelines Voir le message
    Bonjour,

    dans la clause ENVIRONMENT DIVISION FILE CONTROL

    j'aimerais faire SELECT nom-fichier ASSIGN TO nom-externe.

    Je voulais savoir s'il était possible que nom-externe soit une variable ?Comment fait on ?

    merci
    Bien sûr que c'est possible (encore faut-il savoir dans quel système on est; à ce sujet, ce serait bien de le préciser dans la question ! Oui ?)

    Il suffit de mettre une variable dans une section (WS ou linkage,...) et d'y stocker le nom (sur le support adéquat) du fichier; ne pas oublier d'y inclure le chemin complet si le fichier ne se trouve pas dans le répertoire de travail.

    Bonne chance .

  17. #17
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    on est dans le forum Z/OS, section cobol

    Donc non ce n'est pas possible

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par EDELH Voir le message
    Bien sûr que c'est possible (encore faut-il savoir dans quel système on est; à ce sujet, ce serait bien de le préciser dans la question ! Oui ?)

    Il suffit de mettre une variable dans une section (WS ou linkage,...) et d'y stocker le nom (sur le support adéquat) du fichier; ne pas oublier d'y inclure le chemin complet si le fichier ne se trouve pas dans le répertoire de travail.

    Bonne chance .
    Voici la solution definitive :

    Dynamic Filename Assignment
    With dynamic filename assignment, the filename is specified in the SELECT clause as a COBOL data item:

    select filename
    assign to dynamic data-item
    where the parameters are:

    filename The filename of the file that is to be assigned.
    data-item The name of a COBOL data item. If the data item is not explicitly declared in your program, the Compiler creates one for you, with a picture of PIC X(255). Before the OPEN statement for the file is executed, the program must give a value to the data item.

    Example 1
    In the following example, the file input.dat is created in the current directory:

    ...
    select fd-in-name
    assign to dynamic ws-in-file.
    ...
    working-storage section.
    01 ws-in-file pic x(30).
    ...
    move "input.dat" to ws-in-file.
    ...
    open output fd-in-name.
    Note: If you use the ASSIGN"DYNAMIC" Compiler directive, you can omit the word DYNAMIC from the ASSIGN clause.

  19. #19
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Ca m'en bouche un coin (coin), pan sur le bec comme ils disent au canard enchainé !

    Je n'ai encore jamais vu ce code depuis que je traine mes guêtres dans le monde du mainframe (quasiment le paléozoïque)

    Voici un lien sur une page du support IBM sur ce sujet : http://="http://http://www-01.ibm.co...id=swg21046577

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

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    ... Je n'ai encore jamais vu ce code depuis que je traine mes guêtres dans le monde du mainframe (quasiment le paléozoïque)
    ...
    .. et pour cause, parce qu'en z/OS ce n'est tout simplement pas possible ...

    assignment-name-1
    Identifies the external data file. It can be specified as a name or as an
    alphanumeric literal.
    assignment-name-1 is not the name of a data item, and assignment-name-1
    cannot be contained in a data item. It is just a character string. It cannot
    contain an underscore character.
    Any assignment-name after the first is syntax checked, but has no effect on
    the execution of the program.
    ... je pense que la question est posée dans un monde micro ... mais bon à vérifier ...

Discussions similaires

  1. [WD15] Chaines de caractères / Nom de FICHIER variable
    Par EriCstoFF dans le forum WinDev
    Réponses: 17
    Dernier message: 29/03/2011, 13h26
  2. [VBA]-Enregistrement d'un nom de fichier variable
    Par marc56 dans le forum Excel
    Réponses: 2
    Dernier message: 10/08/2007, 08h54
  3. Ouvrir fichier ( nom du fichier variable )
    Par kilian dans le forum C++
    Réponses: 2
    Dernier message: 24/05/2006, 11h21
  4. Nom de fichier variable!
    Par melphit dans le forum C++
    Réponses: 1
    Dernier message: 16/04/2006, 10h37
  5. Nom de fichier variable.
    Par ::Fistons dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2006, 11h32

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