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 :

Comment copier les données d'un fichier vers un autre (txt) ?


Sujet :

Cobol

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Comment copier les données d'un fichier vers un autre (txt) ?
    Bonjour tout le monde,

    J'ai un fichier txt qui contient ceci :

    060708
    191220
    201518
    201920
    J'ai une structure de tableau qui correspond à ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           01 TABLE-SCF1.
              02 TAB-FICH-SCF1.
                 88 FIN-SCF1   VALUE HIGH-VALUES.
    
          *ça s'est 8 fois 1 nombre qui contient à chaque fois deux position
                 03 NUM1 PIC 9(2) OCCURS 3 TIMES.
    J'ai une autre structure qui va me permettre de copier les informations dans un tableau et je devrais pouvoir créer une autre mise en forme pour mon fichier txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           FD FICH-SCF2.
           01 TABLE-SCF2.
              02 TAB-FICH-SCF2.
    
                03 NUM2 PIC 9(2) OCCURS 3 TIMES.
                 03 FILLER PIC X(2).
    Le filler devrait ajouter deux espaces mais ça ne fonctionne pas.

    Ma question est la suivante :

    Comment je peux écrire les informations du fichier txt1 dans le fichier txt2 ?

    J'ai déclaré mes fichiers txt comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          * Affectation nom logique à des fichiers physiques
                 SELECT FICH-SCF1 ASSIGN "COTE-NF.TXT"
                        ORGANIZATION IS LINE SEQUENTIAL
                        ACCESS MODE IS SEQUENTIAL.
    
                 SELECT FICH-SCF2 ASSIGN "COTE-F.txt"
                        ORGANIZATION IS LINE SEQUENTIAL
                        ACCESS MODE IS SEQUENTIAL.
    Merci d'avance pour votre aide.

    beegees

  2. #2
    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.
    ...
    *ça s'est 8 fois 1 nombre qui contient à chaque fois deux position
    03 NUM1 PIC 9(2) OCCURS 3 TIMES.
    Tu veux dire 3 fois ??

    ...
    Le filler devrait ajouter deux espaces mais ça ne fonctionne pas....
    - Après chaque nombre de 2 chiffres ou à la fin des 6 chifffres ??
    - et le 01 TABLE-SCF1, il est juste après le FD de FICH-SCF2 ?? C'est son format d'enregistrement ??

    ...
    Ma question est la suivante :

    Comment je peux écrire les informations du fichier txt1 dans le fichier txt2 ?
    si tu veux obtenir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    06^^07^^08^^
    19^^12^^20^^
    20^^15^^18^^
    20^^19^^20^^
    je te suggère le code suivant qu'il faut bien vérifier.

    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
    .../...
                SELECT FICH-SCF1 ASSIGN "COTE-NF.TXT"
                        ORGANIZATION IS LINE SEQUENTIAL
                        ACCESS MODE IS SEQUENTIAL.
     
                SELECT FICH-SCF2 ASSIGN "COTE-F.txt"
                        ORGANIZATION IS LINE SEQUENTIAL
                        ACCESS MODE IS SEQUENTIAL.
    .../...
           FD FICH-SCF1.
           01  TABLE-SCF1.
                 02 TAB-FICH-SCF1.
                      88 FIN-SCF1   VALUE HIGH-VALUES.
                      03 NUM1 PIC 9(2) OCCURS 3 TIMES.
           FD FICH-SCF2.
           01  TABLE-SCF2.
                 02 TAB-FICH-SCF2 OCCURS 3 TIMES.
                     03 NUM2    PIC 9(2).
                     03 FILLER  PIC X(2).
    .../...
               OPEN INPUT FICH-SCF1 OUTPUT FICH-SCF2.
               PERFORM COPIE THRU FIN-COPIE UNTIL FIN-SCF1.
               CLOSE FICH-SCF1 FICH-SCF2.
               STOP RUN.
           COPIE.
               READ FICH-SCF1 AT END MOVE LOW-VALUE TO TAB-FICH-SCF1.
               IF NOT FIN-SCF1           
                  MOVE SPACES TO TABLE-SCF2           
                  PERFORM VARYING I FROM 1 BY 1 UNTIL I > 1
                               MOVE NUM1 (I) TO NUM2 (I) 
                  END-PERFORM
                  WRITE TABLE-SCF2
               END-IF.
           FIN-COPIE.
               EXIT.
    A compléter et à vérifier.

    A+

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Tu veux dire 3 fois ??
    Oui, je voulais dire 3, excuse-moi.

    - Après chaque nombre de 2 chiffres ou à la fin des 6 chifffres ??
    Après chaque nombre de 2 chiffres.

    Merci pour ton code qui me parait très intéressant.

    Je l'analyse de plus près.

    Encore merci pour tout.
    beegees

  4. #4
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Attention, 2 petites finger error dans ce code, si 3 occurrences, alors perform until i > 3. D'autre part, le MOVE SPACES TO TABLE-SCF2 doit être en amont du paragraphe (mais après l'OPEN puisque la donnée est en FD), sinon seule la dernière ligne sera alimentée correctement. Bon on peut ajouter une variante. La norme ANSI 85 introduit la généralisation des scope terminator END-... et des clauses NOT, donc tu devrais pouvoir coder quelque chose comme ceci :
    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
           FD FICH-SCF2.
           01  TABLE-SCF2.
                 02 TAB-FICH-SCF2 OCCURS 3 TIMES.
                     03 NUM2    PIC 9(2).
                     03 FILLER  PIC X(2).
    .../...
               OPEN INPUT FICH-SCF1 OUTPUT FICH-SCF2
               MOVE SPACES TO TABLE-SCF2
               SET TRAITER-SCS1 to TRUE 
               PERFORM COPIE UNTIL FIN-SCF1
               CLOSE FICH-SCF1 FICH-SCF2
               STOP RUN.
    
           COPIE.
                 READ FICH-SCF1 
                       AT END SET FIN-SCF1 TO TRUE 
                       NOT AT END           
                              PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
                                   MOVE NUM1 (I) TO NUM2 (I) 
                              END-PERFORM
                              PERFORM ECRIRE                      
                 END-READ.
          ECRIRE.
                 WRITE TABLE-SCF2.
          ECRIRE-FIN.
    Enfin, méfiance avec les données NUM1 et NUM2 en Pic 99, il faut les vérifier ou si on n'est pas certain du fait qu'elles sont bien numériques, autant les définir en PIC XX toutes deux puisque la longueur ne change pas, histoire d'éviter un possible plantage.

  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.

    En fait, il y a quelques coquilles destinées à notre ami beegees et que Homer-ac relève bien :
    - la définition du I.
    - le UNTIL I > 3
    - l'initialisation de la condition FIN-SCF1 par l'initialisation de la donnée sur laquelle elle porte et non par un SET dans le paragraphe contenant l'OPEN.

    Par contre :

    ...
    D'autre part, le MOVE SPACES TO TABLE-SCF2 doit être en amont du paragraphe (mais après l'OPEN puisque la donnée est en FD), sinon seule la dernière ligne sera alimentée correctement...
    je pense que ce MOVE est à sa bonne place, il initialise le buffer I/O du fichier à écrire. Il doit donc précéder les traitements de remplissage de ce buffer et soumis aux mêmes règles d'itération. S'il n'est pas ainsi (s'il est est en amont avec l'open), il s'exécutera une seule fois. Après son premier WRITE, le système peut lui affecter une autre plage mémoire (justement parce qu'il est en FD) et les données qui y étaient présentes sont éventuellement perdues, donc nos filler de 2c peuvent contenir n'importe quoi, les NUM2 eux vont être renseignés correctement.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Oui... une bonne raison pour travailler en WORKING !

  7. #7
    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 fremen167 Voir le message
    Oui... une bonne raison pour travailler en WORKING !
    Pas forcement. Ce n'est pas nécessaire s'il n'y a pas de raison de préserver les données du buffer I/O après son écriture et si son initialisation avant son remplissage pour préparer une sortie n'est pas lourde. L'inconvéniant de travailler en WSS et d'avoir des structures similaires aux buffers I/O est la consommation de plus de mémoire et les moves implicites ou explicites (MOVE, READ INTO, WRITE FROM) au moment des READ et des WRITE.

  8. #8
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Mes excuses, Hédhili Jaïdane, ma remarque sur l'init de la zone était par réflexe et inutile dans le contexte (un coup de fatigue ?), même en working puisque les sorties sont écrites à mesure des lectures. Reflexe simplement parce qu'usuellement on groupe les initialisations dans un paragraphe de début. Spécifiquement pour MVS en tous cas, la zone de sortie en FD ne sera pas réinitialisée entre l'OPEN et le CLOSE et on peut donc le faire juste après l'OPEN. Avant, ce serait un Abend S0C4 assuré : le buffer d'E/S n'est pas alloué.

  9. #9
    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
    Salut Homer-ac.

    Tu n'as pas à t'excuser et rien ne me fait plus plaisir que ta participation, et celles des autres, aux discussions : et c'est l'ensemble des contributions qui fait que la relève soit assurée . Les amis sont faits pour s'épauler les uns les autres.

  10. #10
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    En plus je viens de tester, comme quoi les idées recues ! Tu as mille fois raison, avec Enterprise COBOL le buffer d'entrés/sortie est réinitialisé à zéro binaires entre chaque entrée/sortie de sorte qu'un INIT en amont est une erreur ! ()

    le code complet qui va bien (en supposant un fichier de 80 en Entrée et sortie) :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
           IDENTIFICATION DIVISION.                             
           PROGRAM-ID. COBTSTZ.                                 
          *---------------------*                               
           ENVIRONMENT DIVISION.                                
          *---------------------*                               
           CONFIGURATION SECTION.                               
           SOURCE-COMPUTER. IBM-Z9                              
          *                            with Debugging Mode      
                                  .                             
           INPUT-OUTPUT SECTION.                                
           FILE-CONTROL.                                        
               SELECT FICH-SCF1 ASSIGN to SYSIN.                
               SELECT FICH-SCF2 ASSIGN to SYSUT2.               
                                                                
           DATA DIVISION.                                       
                                                                
           FILE SECTION.                                        
           FD  FICH-SCF1                                        
               RECORDING MODE is F                              
               BLOCK 0.                                         
           01  TABLE-SCF1.                                      
               02 NUM1          PIC XX OCCURS 3 TIMES.          
               02               PIC X(74).                      
                                                                
           FD  FICH-SCF2                                        
               RECORDING MODE is F                              
               BLOCK 0.                                         
           01  TABLE-SCF2.                                                  
               02 TAB-FICH-SCF2 OCCURS 3 TIMES.                             
                  03 NUM2       PIC x(2).                                   
                  03 FILLER     PIC X(2).                                   
               02               PIC X(68).                                  
           WORKING-STORAGE SECTION.                                         
           01.                                                              
              05  I                pic s9(4) binary.                        
              05  INDIC-SCF1       pic X.                                   
              88  TRAITER-SCF1     value low-value.                         
              88  FIN-SCF1         value high-value.                        
                                                                            
           PROCEDURE DIVISION.                                              
           BEGIN.                                                           
               OPEN INPUT FICH-SCF1 OUTPUT FICH-SCF2                        
               SET TRAITER-SCF1 to TRUE                                     
               PERFORM COPIE UNTIL FIN-SCF1                                 
               CLOSE FICH-SCF1 FICH-SCF2                                    
               STOP RUN.                                                    
           COPIE.                                                           
               READ FICH-SCF1                                               
                       AT END SET FIN-SCF1 TO TRUE                          
                       NOT AT END  
                              MOVE SPACES TO TABLE-SCF2
                              PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3     
                              MOVE NUM1 (I) TO NUM2 (I)                
                              END-PERFORM                                   
                              PERFORM ECRIRE thru ECRIRE-FIN                
               END-READ.         
           ECRIRE.               
               WRITE TABLE-SCF2. 
           ECRIRE-FIN.           
                                 
           End Program COBTSTZ.

  11. #11
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           01  TABLE-SCF2.                                                  
               02 TAB-FICH-SCF2 OCCURS 3 TIMES.                             
                  03 NUM2       PIC x(2).                                   
                  03 FILLER     PIC X(2).                                   
               02               PIC X(68). 
    mmmh, il ne manquerait pas un FILLER????? Ou alors on peut même se passer de mettre ce mot clef(mais j'ai jamais vu ça)???

    Sinon, pour être propre, il faudrait gérer les erreurs d'entrée-sortie, mais bon, ça n'est sans doute pas l'objectif premier.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
         SELECT FICH-SCF2 ASSIGN to SYSUT2      
                   FILE STATUS IS SCF2-STATUS.
    (.../...)
     77  SCF2-STATUS        PIC 9(02) VALUE ZERO.
    (.../...)
            WRITE TABLE-SCF2
            IF SCF2-STATUS NOT EQUAL ZERO                  
               DISPLAY 'ERREUR ECRITURE FICHIER SCF2'
               (suite gestion erreur)
            END-IF
    Evidemment, il faut le même à l'ouverture, à la lecture et à la fermeture.....

    dernière remarque : le mélange miniscules/majuscules. Y'a que moi que ça choque???
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  12. #12
    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 Homer-ac Voir le message
    ... le buffer d'entrés/sortie est réinitialisé à zéro binaires entre chaque entrée/sortie de sorte qu'un INIT en amont est une erreur ! ()
    D'après mon expérience sur Cobol/2, MS/MF, Cobol/36, 38, 400 et Ile cette initialisation n'est pas forcement par des 0 binaire ou des blancs.

    - Avant l'ouverture du fichier, le buffer n'est pas encore affecté. Toute référence à ce buffer ou à l'une de ses composantes propvoque une erreur, en général d'un pointeur non défini. (en AS400 c'est un MCH3601 très fréquent).
    - à l'ouverture du fichier, le buffer I/O associé est affecté par le système dans une plage mémoire associée au programme mais gérée par le système.
    - à la lecture du fichier ce buffer est rempli par les données
    - à l'écriture ou à la rééecriture, ce buffer disparaît et est réaffecté à une autre plage mémoire au gré de l'activité du système. Si mon programme s'exécute seul sur le système, il y a des fortes chances pour que ce dernier réaffecte le même espace mémoire au buffer. Si la partition dans laquelle tourne mon programme a été initialisée par des 0 binaires et qu'aucune transaction n'y a touché, il y a des chances pour que le buffer contienne des 0 binaires. ===> ce phénomène est parfaitement aléatoire, donc pour les jeunes, quand vous écrivez un buffer I/O d'un fichier (WRITE ou REWRITE), les zones de ce buffer contiennent n'importe quoi : vous pouvez avoir des espaces ou x'00' pendant n exécutions et un jour (20 ans plus tard) c'est la cata.

    Citation Envoyé par el_splapper
    ...
    02 PIC X(68).
    mmmh, il ne manquerait pas un FILLER????? Ou alors on peut même se passer de mettre ce mot clef(mais j'ai jamais vu ça)???
    Certains compilateurs le permettent pour des zones non référencées dans le programme.

    Citation Envoyé par el_splapper
    ...
    dernière remarque : le mélange miniscules/majuscules. Y'a que moi que ça choque???
    Si quand on n'adopte pas des standards d'écriture bien précis. Perso, avec les compilateurs qui le permettent, tout ce qui est mots réservés Cobol, je les code en minuscules, tout ce qui est variables en majuscules. Les entêtes aussi en majuscules. En fin chacun sa façon de faire, comme cette histoire de coloriage des sources.

  13. #13
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    1) mmmh, il ne manquerait pas un FILLER????? Ou alors on peut même se passer de mettre ce mot clef(mais j'ai jamais vu ça)???

    2) Sinon, pour être propre, il faudrait gérer les erreurs d'entrée-sortie, mais bon, ça n'est sans doute pas l'objectif premier.
    1) Le mot Filler est rendu facultatif par la norme ANSI 85. Perso je préfère éviter, on y gagne en lisibilité.
    2) Test du status code : 2 écoles et les 2 trouvent des justifications
    - La première : File status mais il faut le tester PARTOUT (OPEN.READ/WRITE). Quasi obligatoire pour du VSAM, risque de cas difficiles à diagnostiquer si on oublie un seul test (ou si le message d'incident n'est pas clair)
    - La deuxième : laisser faire la nature. C'est la méthode d'entrée/sortie qui enverra une erreur documentée sur le problème. En MVS par exemple, il faut reconnaître que Langage Environnement enverra un message sur 2/3 lignes très précis (commençant par CEE32).
    Entre les 2 quelle position ? Pour les non SAM je préfère la 1, Pour des QSAM, le matériel étant à présent largement fiable, étant entendu que les erreurs logiques sont censées être testées avant la mise en prod, ça me semble un débat de moindre importance.

    Si quand on n'adopte pas des standards d'écriture bien précis. Perso, avec les compilateurs qui le permettent, tout ce qui est mots réservés Cobol, je les code en minuscules, tout ce qui est variables en majuscules. Les entêtes aussi en majuscules.
    C'est aussi ma façon d'écrire, ici c'était du copier coller par manque ponctuel de temps, mais ce type d'écriture variables/étiquettes en majuscules et mots COBOL en minuscules (avec un compilateur respectant la norme ANSI 85) améliore très largement la lisibilité du code et normalement j'essaie aussi de m'en tenir à cette façon d'écrire.

    - à l'écriture ou à la rééecriture, ce buffer disparaît et est réaffecté à une autre plage mémoire au gré de l'activité du système.
    Pour z/OS l'interface privilégié est Language Environment qui tend à stabiliser les phénomènes d'acquisition/libération mémoire mais si c'est oublier pour un site et une version z/OS, que comme tout produit, L.E. s'installe et des choix différents ont pu être faits d'un site à l'autre comme justement l'initialisation des buffers mémoire.

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

Discussions similaires

  1. Comment copier les données d'un fichier en lecture
    Par isa77 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/11/2010, 09h49
  2. comment copier les donnés d'une table vers un fichier exel
    Par 21247692 dans le forum Bases de données
    Réponses: 8
    Dernier message: 09/01/2009, 14h30
  3. [MySQL] Copier les données d'une table vers une autre
    Par kamnouz dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/12/2008, 15h48
  4. Copier les données d'un champs vers un autre champs
    Par Waumy dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/11/2008, 04h58
  5. Réponses: 4
    Dernier message: 11/09/2006, 17h58

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