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 :

Quelle est la différence entre READ et READ INTO ?


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 33
    Points
    33
    Par défaut Quelle est la différence entre READ et READ INTO ?
    Bonjour,
    J’aurais aimé savoir c’est quoi la différence entre read et read into et surtout qui détermine le choix entre les deux.
    Et une deuxième question , dans la FD des fois c’est pas détaillé comme pour le fic6 avec juste la copie et des fois c’est détaillé comme fic5 .

    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
    FD  FIC6
         RECORDING F LABEL RECORD STANDARD
         BLOCK 0 RECORDS
         RECORD 150 DATA RECORD ENR-FIC6.
     01 ENR-FIC6.
      COPY CRMRIB REPLACING ==(ENR)== BY ==CR==.
    
    FD  FIC5
        RECORDING F LABEL RECORD STANDARD
        BLOCK 0 RECORDS
        RECORD 300 DATA RECORD ENR-FIC5.
    01  ENR-FIC5 .
        02 FIC5-NUM-SEQ             PIC X(010).
        02 FIC5-PIVOT               PIC X(240).
        02 FIC5-CODE-REJET          PIC X(003).
        02 FIC5-LIB-MOTIF-REJET     PIC X(047)
    merci beaucoup

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 33
    Points
    33
    Par défaut read into
    si j'ai bien compris ce que xfanx dit dans une autre discussion
    " tu utilises les buffers d'I/O pour tes READ INTO et WRITE FROM (niveau 01 en FD) c'est dangereux puisque c'est le systeme qui gere ces valorisations.."
    alors vaut mieux utiliser le read into avec une variable déclarée dans le working storage ?

  3. #3
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.
    Citation Envoyé par mosaab Voir le message
    ..." tu utilises les buffers d'I/O pour tes READ INTO et WRITE FROM (niveau 01 en FD) ...
    Non, tu utilises les buffers I/O (gérés par le système et pouvant être déplacés à tout moment) quand tu utilises un READ tout court SANS le INTO et le WRITE/REWRITE SANS le FROM. Beaucoup de développeurs n'utilisent pas cette technique par crainte d'avoir les buffers mal renseignés, ceci est surtout vrai après un ordre WRITE/REWRITE réussi. Ils préconisent d'utiliser des DS (structure de données/groupes) dans la Working ou dans la Linkage dans lesquelles vont être dupliqués les buffers d'entrée avec le READ INTO ou qui vont servir à remplir les buffer de sortie avec le WRITE FROM.
    Personnellement j'utilise cette technique uniquement quand je veux préserver les données lues ou écrites pour un usage ultérieur, cela m'évite de gonfler la mémoire utilisée par la Working, vieux soucis pour un vieux développeur.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour.

    Non, tu utilises les buffers I/O (gérés par le système et pouvant être déplacés à tout moment) quand tu utilises un READ tout court SANS le INTO et le WRITE/REWRITE SANS le FROM. Beaucoup de développeurs n'utilisent pas cette technique par crainte d'avoir les buffers mal renseignés, ceci est surtout vrai après un ordre WRITE/REWRITE réussi. Ils préconisent d'utiliser des DS (structure de données/groupes) dans la Working ou dans la Linkage dans lesquelles vont être dupliqués les buffers d'entrée avec le READ INTO ou qui vont servir à remplir les buffer de sortie avec le WRITE FROM.
    Personnellement j'utilise cette technique uniquement quand je veux préserver les données lues ou écrites pour un usage ultérieur, cela m'évite de gonfler la mémoire utilisée par la Working, vieux soucis pour un vieux développeur.
    merci beaucoup pour vos réponses et surtout votre disponibilité
    donc si j'ai bien compris c'est pas toujours bon d'utiliser le into ou from par soucis de mémoire , donc à utiliser a bon escient , comme vous l'avez expliqué

  5. #5
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour et de rien.

    A vrai dire la mémoire ne pose plus tellement de problèmes et n'est plus un soucis pour les développeurs, sauf cas rares, vu l'avancement de la techno matérielle et logicielle, l'optimisation des compilateurs et la réentrance du code exécutable.

    Les soucis des INTO/FROM sont de deux ordres : l'utilisation du buffer d'entrée ou de sortie s'il y a eu un CLOSE du fichier sans repasser par un OPEN si les erreurs I/O (Exceptions) ne sont pas bien gérées auquel cas le système sortira le programme pour violation de mémoire ou au pire le fera planter pour pointeur non défini. Donc ce genre de binz ne passe pas inaperçu. Le cas le plus dangereux est celui de l'utilisation des données du buffer de sortie (pas son remplissage) après une opération de WRITE/REWRITE réussie, le système peut changer le buffer de place sans que le programme s'en aperçoive et là on récupère n'importe quoi, c'est surtout à ce cas là qu'il faut faire le plus attention : NE JAMAIS UTILISER UNE DONNEE D'UN BUFFER DE SORTIE QU'ON VIENT D'ECRIRE.

    Bonne continuation.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Aux propos qui précèdent et que j'approuve, j'ajoute aussi la difficulté particulière liée aux fichiers variables : le buffer (la zone FD donc) peut contenir plusieurs enregistrements, alors que le read INTO permettra de ne récupérer que l'occurrence qui va bien dans la description qui va bien et éviter ainsi les impairs ;-)

  7. #7
    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
    Toujours le même débat et toujours les mêmes arguments débiles ...

    cf. :
    https://www.developpez.net/forums/d1...entiel-indexe/

    Dans cette discussion, je concluais :

    Donc à part consommer du CPU pour rien, le READ INTO ne présente qu'un intérêt marginal, voir aucun intérêt du tout ...
    CQFD.
    Je reste sur ma position ...

  8. #8
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut
    Bonjour mosaab,

    J'ai modifié le titre de ton sujet pour le rendre un peu plus explicite. N'hésite pas à y retoucher au besoin.

    Bonne journée !
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 31
    Points : 33
    Points
    33
    Par défaut en-tête d'un enregistrement
    bonjour ,
    on me demande de faire une chose mais je en comprends pas le sens .
    "Ecriture de l’en-tête du fichier en sortie: Société;Région;Traité;CI;CF;Produit 1; Produit 2;Produit 3; … ; Produit 50;"
    en fait je dois écrire dans un fichier et avant on me demande ça juste avant d'alimenter ce fichier et je ne vois ce que cela veut dire
    quelqu'un pourrait m'expliquer . merci beucoup

  10. #10
    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 mosaab Voir le message
    ...
    on me demande de faire une chose mais je en comprends pas le sens .
    "Ecriture de l’en-tête du fichier en sortie: Société;Région;Traité;CI;CF;Produit 1; Produit 2;Produit 3; … ; Produit 50;"
    ça correspond, me semble t il, au premier enregistrement du fichier ...

  11. #11
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par mosaab Voir le message
    bonjour ,
    on me demande de faire une chose mais je en comprends pas le sens .
    "Ecriture de l’en-tête du fichier en sortie: Société;Région;Traité;CI;CF;Produit 1; Produit 2;Produit 3; … ; Produit 50;"
    en fait je dois écrire dans un fichier et avant on me demande ça juste avant d'alimenter ce fichier et je ne vois ce que cela veut dire
    quelqu'un pourrait m'expliquer . merci beucoup
    Bonjour.

    Tu vois, quand tu as un tableau (Excel par exemple), tu as une ligne qui contient les libellés (entêtes) des données qui vont être écrites sur les lignes suivantes. Donc si j'ai bien compris on te demande de faire la même chose avec le fichier en sortie (que tu vas écrire/produire), en première ligne les entêtes puis sur les lignes suivantes les données que tu vas lire à partir du fichier en entrée.
    Comme je vois des ";" dans la ligne entête, on va peut être te demander de faire la même chose avec les données à suivre pour produire un fichier texte avec ";" comme séparateur (un csv en fait)

Discussions similaires

  1. Réponses: 12
    Dernier message: 01/06/2010, 17h57
  2. Réponses: 2
    Dernier message: 25/05/2005, 22h34
  3. Réponses: 5
    Dernier message: 03/05/2005, 19h22
  4. Réponses: 11
    Dernier message: 31/01/2005, 18h48
  5. Quelle est la différence entre le float et le real ?
    Par Manson dans le forum Débuter
    Réponses: 3
    Dernier message: 10/08/2004, 18h26

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