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 :

Sous-programme COBOL écrivant dans un fichier ouvert par l'appelant


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 28
    Points
    28
    Par défaut Sous-programme COBOL écrivant dans un fichier ouvert par l'appelant
    Bonjour à toutes et à tous,


    Je suis en train d'écrire un sous-programme batch, devant écrire dans un fichier gérer par l'appelant :
    L'appelant ouvre le fichier, écrit un enregistrement dedans, puis appel le sous-prog qui va écrire à son tour. En fin de traitement l'appelant ferme le fichier.

    Je sais que cela se fait mais je ne sais plus comment...
    Les fichiers doivent-ils être déclarés d'une manière particulière? Faut-il passer le DDNAME et la copy du fichier en linkage du sous prog? Quelles sont les subtilités?

    Bref je me pose beaucoup de questions!! Auriez-vous des exemples très simples d'appelants / appelés présentant cette particularité?

    Merci par avance pour votre aide.

    Thierry.

  2. #2
    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 tirigolo Voir le message
    ...
    Je suis en train d'écrire un sous-programme batch, devant écrire dans un fichier gérer par l'appelant :
    L'appelant ouvre le fichier, écrit un enregistrement dedans, puis appel le sous-prog qui va écrire à son tour. En fin de traitement l'appelant ferme le fichier.

    Je sais que cela se fait mais je ne sais plus comment...
    Tu es sûr que c'est possible ? ... Moi, j'ai de sérieux doutes ... Et puis, quel est l'intérêt ?

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 179
    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 179
    Points : 39 042
    Points
    39 042
    Billets dans le blog
    9
    Par défaut
    Bonjour


    L'intérêt peut être le cas d'une log par exemple.
    En ce cas il faut créer un programme dédié aux accès fichier, c'est ce module qui déclare le fichier et gère les entrées/sorties.
    Les autres programmes appellent ce module avec un code fonction.
    Il faut bien entendu penser à l'ouverture initiale et à la fermeture finale (avec un indicateur transporté en linkage pour savoir où on en est)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Bonjour Messieurs,

    Merci beaucoup pour votre aide

    En parcourant les forums, je suis tombé plusieurs fois sur ta solution Escaretfigue : créer un module dédié à la gestion du fichier.
    Mais on m'a aussi proposé 2 solutions :

    1) La déclaration du fichier en EXTERNAL afin qu'il puisse être accessible par tous les programmes ou il est déclaré:
    https://www.ibm.com/support/knowledg.../rpshr26e.html
    Il faut juste que je m'assure que ca fonctionne aussi en écriture...

    2) Se servir de la LINKAGE :
    Any data file structure can be sent to the called program through linkage section.
    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
    PROGRAM-ID. CALLERPR.
    ...
    ...
    WORKING-STORAGE SECTION.
    01  WS-DATATOWRITE.
           05 WS-DATA1 PIC .......
    LINKAGE SECTION.
    01  LK-DATATOPASS.
           05 LK-DATA1 PIC ......
    PROCEDURE DIVISION.
    ...
         OPEN INPUT ... OUTPUT FILEOUT
    ...
    ... MOVE WS-DATATOWRITE
               TO LK-DATATOPASS.
            CLOSE FILEOUT
            CALL ‘CALLEDPR’ USING LK-DATATOPASS.
    
    
    —————————————————————
    PROGRAM-ID. CALLEDPR.
    ...
    ...
    WORKING-STORAGE SECTION.
    01  WS-DATATOWRITE.
           05 WS-DATA1 PIC .......
    LINKAGE SECTION.
    01  LK-DATATOPASS.
           05 LK-DATA1 PIC ......
    PROCEDURE DIVISION USING LK-DATATOPASS.
    ...OPEN OUTPUT FILEOUT.
    ... MOVE LK-DATATOPASS 
               TO WS-DATATOWRITE.
              
            MOVE WS-DATA1  TO  ...... process your data to write
    
             WRITE FILEOUT.....

    En relisant ce code je me demande comment le programme fait le lien entre les FILEOUT : Lorsque que le sous-programme fait son WRITE, est-ce que le fichier déclaré dans le programme principale sera vraiment mis à jour!? S'il n'y a pas de déclaration en "external", comment le lien pourra t'il se faire?
    Avec cette gestion en LINKAGE, je pense que le seul intérêt du sous-programme est de renseigner la structure et de la rebalancer à l'appelant pour qu'il l'écrive.

    L'utilisation de l'EXTERNAL (s'il fait bien l'écriture) serait peut-être la meilleure des deux solutions (pour mon cas).

    Qu'en pensez-vous?

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 179
    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 179
    Points : 39 042
    Points
    39 042
    Billets dans le blog
    9
    Par défaut
    L'exemple proposé sur le site IBM complique inutilement la solution : faire un programme par type d'action sur le fichier (open, close, start, read, write, rewrite), oblige à maintenir et recompiler un grand nombre de modules en cas de modification du fichier. Je n'en vois pas l'intérêt. Un module unique auquel on transmet un code action est bien plus simple.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2017
    Messages : 20
    Points : 28
    Points
    28
    Par défaut
    Oui je suis tout à fait d'accord, il est bien plus simple de tout mettre dans un même module.
    Je pense que l'exemple d'IBM servait juste à montrer que les n sous-programmes avaient tous accès au fichier.

    Merci encore pour votre aide!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/10/2018, 09h24
  2. Faire appel à un sous programme se trouvant dans un autre fichie
    Par Roud9 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 12/04/2011, 11h43
  3. [XL-2010] Sélection d'une cellule vide dans un fichier "ouvert" avec GetOpenFilename
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/12/2010, 14h40
  4. Ecriture dans un fichier ouvert avec fopen
    Par mackla dans le forum Débuter
    Réponses: 8
    Dernier message: 24/05/2008, 14h19
  5. Problème en écrivant dans un fichier html
    Par rekiem71 dans le forum Langage
    Réponses: 7
    Dernier message: 18/04/2007, 13h45

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