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 :

[AS/400] [Débutant] Bug de longueur requête SQL


Sujet :

Cobol

  1. #21
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 154
    Points : 110
    Points
    110
    Par défaut
    J'ai rechangé mais rien à faire. Il me colle la valeur de &TPARAM1 à la 33ième position de &LSTCHP qui lui est sur 80...

    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           ....5...10...15...20...25...30...35...40...45...50...55...60 
      1   'NOCLIE, CODDE1, CODDE2, NOCMPT, Cnocmpt    CPT, ETACPT, TYCM'
     61   'PT, CA              '
    Pg Cobol :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
           IDENTIFICATION DIVISION.
           PROGRAM-ID.                      FUSQLB6001.
           AUTHOR.                          XXXXXX XXXXXXX.
    
           ENVIRONMENT DIVISION.
          *----------------------------------------------------------------
           CONFIGURATION SECTION.
          *----------------------------------------------------------------
           SOURCE-COMPUTER.                 IBM-AS400.
           OBJECT-COMPUTER.                 IBM-AS400.
           SPECIAL-NAMES.
                                            C01 IS CANAL-1
                                            REQUESTOR IS UD
                                            LOCAL-DATA IS MD-LOCAL-DATA
                                            CURRENCY SIGN IS "F"
                                            DECIMAL-POINT IS COMMA.
          *----------------------------------------------------------------
           INPUT-OUTPUT SECTION.
          *----------------------------------------------------------------
           FILE-CONTROL.
          *****************************************************************
           DATA DIVISION.
          *****************************************************************
          *----------------------------------------------------------------
           FILE SECTION.
          *----------------------------------------------------------------
           WORKING-STORAGE SECTION.
    
               EXEC SQL
               INCLUDE SQLCA
               END-EXEC.
    
           01 TNAME           PIC X(10).
           01 MyString        PIC X(1000).
           01 LstChamps       PIC X(80).
           01 TPARAM1          PIC X(10).
           01 TVALUE1          PIC X(50).
    
           01 WS-LSTRESULT.
              02 WW-TAB OCCURS 10.
                  03 WW-chp     PIC X(100).
    
           01 WW-chp1     PIC X(100).
           01 WW-chp2     PIC X(100).
           01 WW-chp3     PIC X(100).
           01 WW-chp4     PIC X(100).
           01 WW-chp5     PIC X(100).
           01 WW-chp6     PIC X(100).
           01 WW-chp7     PIC X(100).
           01 WW-chp8     PIC X(100).
           01 WW-chp9     PIC X(100).
           01 WW-chp10     PIC X(100).
    
           01 LK-CHP2 PIC X(80).
             05 LK-LSTCHP1 PIC x(33).
             05 LK-LSTCHP2 PIC x(33).
             05 LK-LSTCHP3 PIC x(14).
    
    
          *************************************************************
          *             LINKAGE         SECTION                       *
          *************************************************************
    
           LINKAGE SECTION.
          * Nom de la table?
           01 LK-NAME PIC X(10).
          * Les champs désirés?
           01 LK-LSTCHP PIC X(80).
          * Clause where?
           01 LK-TPARAM1 PIC X(10).
          * Valeur clause where?
           01 LK-TVALUE1 PIC X(15).
          * Code erreur?
           01 LK-LSTRESULT.
              02 LK-TAB OCCURS 10.
                  03 LK-chp     PIC X(100).
           01 LK-CODERETOUR PIC X(02).
          *****************************************************************
           PROCEDURE DIVISION USING    LK-NAME
                                       LK-LSTCHP
                                       LK-TPARAM1
                                       LK-TVALUE1
                                       LK-LSTRESULT
                                       LK-CODERETOUR.
          *****************************************************************
    
    
    
    
           DEB-PROG.
          *
          * Transformations des données
          *
          * Initialisation du code retour
                MOVE "00" TO LK-CODERETOUR.
                MOVE LK-NAME TO TNAME.
                MOVE LK-TPARAM1 TO TPARAM1.
                MOVE LK-TVALUE1 TO TVALUE1.
    
    
                EXEC SQL
                  WHENEVER SQLERROR GO TO TRAIT-ERREUR
                END-EXEC.
    
               String  'Select '  Delimited By Size,
               LK-LSTCHP,
    
                        ' From '  Delimited By Size,
                             TNAME   Delimited By Size,
                        ' ' Delimited By Size,
                       ' where '  Delimited By Size
                       TPARAM1   Delimited By Size
                       ' = ' Delimited By Size
                              TVALUE1    Delimited By Size
                                              Into MyString.
    
    
                   Exec sql Prepare SqlStm From :MyString End-exec.
    
                   Exec sql Declare c1 cursor For SqlStm End-exec.
    
                   Exec sql Open c1 End-exec.
    
                   Exec sql Fetch c1 Into
                               :WW-chp1,
                               :WW-chp2,
                               :WW-chp3,
                               :WW-chp4,
                               :WW-chp5,
                               :WW-chp6,
                               :WW-chp7,
                               :WW-chp8,
                               :WW-chp9,
                               :WW-chp10
                   End-exec.
    
                   Exec sql Close c1 End-exec.
    
                   MOVE WW-chp1 TO LK-chp(1).
                   MOVE WW-chp2 TO LK-chp(2).
                   MOVE WW-chp3 TO LK-chp(3).
                   MOVE WW-chp4 TO LK-chp(4).
                   MOVE WW-chp5 TO LK-chp(5).
                   MOVE WW-chp6 TO LK-chp(6).
                   MOVE WW-chp7 TO LK-chp(7).
                   MOVE WW-chp8 TO LK-chp(8).
                   MOVE WW-chp9 TO LK-chp(9).
                   MOVE WW-chp10 TO LK-chp(10).
    
    
           FIN-PROGRAMME.
               EXIT.
               GOBACK.
    
    
    
          *****************************************************************
           TRAIT-ERREUR.
          *    DISPLAY SQLCODE.
          *    DISPLAY SQLERRM.
               MOVE "23"  TO  LK-CODERETOUR.
               GO TO FIN-PROGRAMME.
           FIN-TRAIT-ERREUR.
               EXIT.
    CL d'appel :

    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
                 PGM        PARM(&TNAME &LSTCHP &TPARAM1 &TVALUE1)
    
                 DCL        VAR(&TNAME)      TYPE(*CHAR) LEN(10)
                 DCL        VAR(&LSTCHP)      TYPE(*CHAR) LEN(80)
                 DCL        VAR(&TPARAM1)      TYPE(*CHAR) LEN(10)
                 DCL        VAR(&TVALUE1)      TYPE(*CHAR) LEN(15)
                 DCL        VAR(&LSTRESULT)      TYPE(*CHAR) LEN(1000)
                 DCL        VAR(&DONRET)      TYPE(*CHAR) LEN(2)
    
    
                 CHGVAR     VAR(&TNAME) VALUE('FCGCOP0S')
                 CHGVAR     VAR(&LSTCHP) VALUE('NOCLIE, CODDE1, CODDE2, +
                              NOCMPT, CLERIB, INTCPT, ETACPT, TYCMPT, CARCPT')
                 CHGVAR     VAR(&TPARAM1) VALUE('nocmpt')
                 CHGVAR     VAR(&TVALUE1) VALUE(' ')
                 CHGVAR     VAR(&LSTRESULT) VALUE(' ')
                 CHGVAR     VAR(&DONRET) VALUE('00')
    
    
    
    
    
    
                 CALL       PGM(PACKGIEEXE/FUSQLB6001) PARM(&TNAME &LSTCHP +
                              &TPARAM1 &TVALUE1 &LSTRESULT &DONRET)
    
    
    
                 IF         COND(%SST(&DONRET 1 2) *NE '00') THEN(GOTO +
                              CMDLBL(FINPGM))
    
     FINPGM:
    
    
                 ENDPGM
    Je commence à déprimer :'(

    Et le même programme Cobol appelé par un autre programme Cobol, il fonctionne très bien... va comprendre charles ^_^


    Portekoi

  2. #22
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    J'ai collé tes 2 programmes sur un AS400 en V5R3, les ai compilés et n'ai pas eu d'erreur dans le passage des paramètres, ils sont bien alignés et contiennent bien leur valeur respective. Tout est ok.

    Es-tu sûr d'appeler le "bon" programme avec la "bonne" bibliothèque dans ta commande CALL PGM(PACKGIEEXE/FUSQLB6001) PARM(&TNAME ... ) ?

  3. #23
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 154
    Points : 110
    Points
    110
    Par défaut
    Oui, c'estl e bon objet dans la bonne bib, j'ai re-re-re-vérifié...

    Le plus bizarre, c'est que si je mets cette ordre ci dans le CL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CHGVAR     VAR(&TNAME) VALUE('FCGCOP0S')
                 CHGVAR     VAR(&TPARAM1) VALUE('NOCMPT')
                 CHGVAR     VAR(&TVALUE1) VALUE(' ')
                 CHGVAR     VAR(&LSTCHP) VALUE('NOCLIE, CODDE1, CODDE2, +
                              NOCMPT, CLERIB, INTCPT, ETACPT, TYCMPT, CARCPT')
                 CHGVAR     VAR(&DONRET) VALUE('00')
                 CHGVAR     VAR(&LSTRESULT) VALUE(' ')
    Le variable LSTCHP contient la bonne valeur mais plus TPARAM1 qui contient :

    "LK-TPARAM1 = 'LERIB, INT' " dans le pgm Cobol

    Je comprends plus rien....

  4. #24
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Tu appelles le programme CL en lui passant directement les paramètres sur une ligne de commande IBM, n'est-ce pas ? C'est à dire quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CALL PGM(PgmCL) PARM('FCGCOP0S' 'NOCLIE, CODDE1, CODDE2, NOCMPT, CLERIB, INTCPT, ETACPT, TYCMPT, CARCPT' 'nocmpt' ' ')
    Si c'est le cas, tu ne peux pas passer sur une ligne de commande IBM les paramètres alphanumériques qui font plus de 32 caractères de long.

    Le plus simple pour ne plus avoir de soucis, c'est de créer une commande qui reprend les paramètres avec leur longueur respective.

    Un tuyau au passage. Dans la mesure où cela t'est possible, définis tes paramètres numériques en (15p 5) mêm si tu 'as pas besoin d'une aussi grande taille.

    En définissant comme ça tes paramètres numériques, tu pourras directement les passer en dur sur une ligne de commande IBM sans te prendre la tête mais dans tous les cas, il vaut bien mieux faire une commande.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CALL MONPGM (12345  652,45  'ABCD'  987654321,01 'XYZ ABC' 654,3210)

  5. #25
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 154
    Points : 110
    Points
    110
    Par défaut
    Là, j'ai tout mis en dur dans le CL et quand je fais mon CALL, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CALL PGM(FUPARC3001) PARM(' ' ' ' ' ' ' ')
    Les valeurs étant pré-définis dans le CL lui même pour les tests

  6. #26
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Et voilà ! Tu ne peux pas faire ça sinon tu vas choucrouter tes paramètres et c'est bien ce qu'on observe ici. En effet, pas de problème pour les paramètres qui ne dépassent pas 32 caractères de long. En revanche, pour ceux qui dépassent cette longueur, comme &LSTCHP par exemple, l'OS va bien charger les 32 premières positions avec la valeur indiquée dans le CHGVAR, c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ....5...10...15...20...25...30..
    NOCLIE, CODDE1, CODDE2, NOCMPT,
    mais, compte tenu que tu ne lui as pas passé les 80 caractères comme attendu (tu ne lui as passé qu'un caractère blanc), il va compléter le paramètre avec le contenu de ce qu'il y a en mémoire à ce moment-là à l'adresse qui démarre à la 33ième position, c'est à dire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .35...40...45...50...55...60 
    Cnocmpt    CPT, ETACPT, TYCM etc
    Solutions (en choisir une) :
    • Soit tu supprimes le PARM sur la commande PGM et tu appelles le programme CL sans lui passer des paramètres
    • Soit tu passes les paramètres sur toute leur longueur en complétant par des blancs la partie non alimentée (peu envisageable pour les paramètres très longs comme &LSTRESULT)

    • Soit tu fais un autre CL qui est exécuté en amont de ton CL et qui se charge de faire tes CHGVAR et qui appelle ensuite ton CL FUPARC3001 (c'est lourd, il vaut mieux la première option)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      CHGVAR     VAR(&TNAME) VALUE('FCGCOP0S')                   
      CHGVAR     VAR(&LSTCHP) VALUE('NOCLIE, CODDE1, CODDE2, +   
                   NOCMPT, CLERIB, INTCPT, ETACPT, TYCMPT, CARCP 
      CHGVAR     VAR(&TPARAM1) VALUE('nocmpt')                   
      CHGVAR     VAR(&TVALUE1) VALUE(' ')                        
      CHGVAR     VAR(&LSTRESULT) VALUE(' ')                      
      CHGVAR     VAR(&DONRET) VALUE('00')                        
      CALL       PGM(FUPARC3001) PARM(&TNAME &LSTCHP +           
                   &TPARAM1 &TVALUE1 &LSTRESULT &DONRET)
    • Soit tu fais une commande, et c'est le plus simple, qui reprend a longueur de tes paramètres et tu appelles ton programme CL avec cette commande
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MABIB/MACMD TNAME('FCGCOP0S') LSTCHP('NOCLIE, CODDE1, CODDE2, NOCMPT, CLERIB, INTCPT, ETACPT, TYCMPT, CARCPT') TPARAM1('nocmpt') TVALUE1(' ')

  7. #27
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 154
    Points : 110
    Points
    110
    Par défaut
    And the winner iiiiiiiiiiiiss Mercuuuuuuuuuuuuuuuuure

    C'est bien ça. Lorsque je supprime les paramètres, plus de soucis



    Merci à tous, vraiment

  8. #28
    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 Mercure Voir le message
    Tu as interverti les deux derniers paramètres dans la linkage...
    pour que l'ordre et la définition des paramètres du COBOL appelé correspondent à l'ordre et à la définition des paramètres du CL appelant....
    Non, ça ce n'est pas important et ne génère aucune erreur à la compil même pas un warning.

  9. #29
    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 Hédhili Jaïdane Voir le message
    ...
    - juste un truc propre aux CL, les constantes alpha par défaut sont transmises en 32 c quitte à être complétées par des blancs puis tronquées dans les paramètres de réception. Si plus de 32, ells passent en totalité.
    ...
    Citation Envoyé par Hédhili Jaïdane Voir le message
    ...
    - Vérifie bien les params reçus par ton cl, fais un sndusrmsg avec tous ces params et regarde ce que ça donne...
    On t'a attiré l'attention dessus !!!

  10. #30
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par Hédhili Jaïdane
    Non, ça ce n'est pas important et ne génère aucune erreur à la compil même pas un warning.
    C'est nouveau cà ! ça vient de sortir ?

    Tu n'auras évidemment aucune erreur à la compil puisque les 2 programmes (CL et Cobol) ne sont pas liés (par un bind ou un link), mais en revanche tu vas avoir des mauvaises surprises à l'exécution, ça c'est garanti sur facture !

    En effet, les zones définies dans la linkage section sont en fait strictement les même zones que celles qui ont été définies dans l'appelant, qui passe l'adresse des paramètres à l'appelé lors du CALL.

    La linkage section n'est qu'un masque qui est plaqué sur les zones dans l'appelant, ce "placage" se faisant lors du CALL. Tu peux faire un autre découpage dans la linkage section mais en respectant l'ordre dans lequel de chaque paramètre est passé. On peut également redéfinir ou sous-définir les paramètres dans la linkage mais certainement pas changer l'ordre de ces dits paramètres.

    Citation Envoyé par Hédhili Jaïdane
    On t'a attiré l'attention dessus !!!
    Oui, mais tu n'as pas assez insisté, il fallait développer.
    Citation Envoyé par Hédhili Jaïdane
    Si plus de 32, ells passent en totalité.
    Moi débutant, honnêtement, je n'aurais pas compris cette phrase.

  11. #31
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 154
    Points : 110
    Points
    110
    Par défaut
    Re,

    Perso, je développe habituellement en ASP / DotNet.

    Lorsque je fais une fonction ou une class + membre, et que je mets en dur les valeurs, le résultat obtenu est celui demandé.

    Je ne pouvais pas me douter que, même en écrasant les valeurs transmisent dans le CL lors du CALL, le résultat serait faussé.

    Lorsque l'on apprend un nouveau langage, le plus long n'est pas d'apprendre la syntaxe mais de reconnaitre et corriger ces erreurs pour ne pas les refaire.

    Désolé si je n'avais pas compris ton post Hédhili Jaïdane

    Merci encore à tous


    Portekoi

  12. #32
    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 Mercure Voir le message
    C'est nouveau cà ! ça vient de sortir ?
    ...
    Bonjour.
    Depuis que le Cobol est Cobol. L'ordre dans la linkage n'a aucune importance et aucune influence sur la passation des paramètres, seule contrainte dans la linkage est le niveau 77 ou 01. Par contre l'importance de l'ordre d'apparition est dans la clause Using de la procédure. Fais le test si tu en es pas convaincu.

  13. #33
    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 Portekoi Voir le message
    ...
    Désolé si je n'avais pas compris ton post Hédhili Jaïdane
    Merci encore à tous
    Portekoi
    Bonjour.
    Pas de soucis, l'essentiel est que tu avances.

    Bonne continuation et A+

  14. #34
    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
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour.
    Depuis que le Cobol est Cobol. L'ordre dans la linkage n'a aucune importance et aucune influence sur la passation des paramètres, seule contrainte dans la linkage est le niveau 77 ou 01. Par contre l'importance de l'ordre d'apparition est dans la clause Using de la procédure. Fais le test si tu en es pas convaincu.
    Perso, je ne ferais pas le test, car c'est plus "propre" à mon sens de garder le même ordre dans la linkage et dans la zone using. Que le désordre marche ou pas.....(enfin, juste un avis perso, hein).
    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.

  15. #35
    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 el_slapper Voir le message
    Perso, je ne ferais pas le test, car c'est plus "propre" à mon sens de garder le même ordre dans la linkage et dans la zone using. Que le désordre marche ou pas.....(enfin, juste un avis perso, hein).
    Salut el-slapper.
    J'ai dit à tester pour voir s'il y a ou non une erreur dans la transmission des paramètres entre appelant et appelé et je n'ai pas dit d'adopter ça comme standard de développement.

  16. #36
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par Hédhili Jaïdane
    L'ordre dans la linkage n'a aucune importance et aucune influence sur la passation des paramètres,
    Tu as raison, c'est dans le "USING" de "PROCEDURE DIVISION" que l'ordre des paramètres doit être strictement identique à celui de l'appelant. ça fait un peu désordre quand même de les passer dans un ordre différent, mais bon, en effet, ça marche, dans l'ordre et dans le désordre, comme au Tiercé !

    Désolé de t'avoir contredit, j'ai fait trop de RPG sans doute.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Aide débutant : Envoi de mail requête sql automatique
    Par lastsql dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 26/07/2010, 10h57
  2. Réponses: 6
    Dernier message: 15/02/2007, 13h46
  3. [Débutant] Paramétrage d'une requête SQL
    Par sunchai dans le forum Oracle
    Réponses: 2
    Dernier message: 31/07/2006, 11h48
  4. [Débutant] Conception requêtes SQL
    Par LhIaScZkTer dans le forum Langage SQL
    Réponses: 15
    Dernier message: 10/01/2006, 21h46
  5. [débutante] Requête SQL
    Par a_nana dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/11/2005, 21h51

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