Pro­blème CPYF clef …
 
Notifications 
Reti­rer tout

Pro­blème CPYF clef numérique

Posts
Uti­li­sa­teurs
Reac­tions
92  Vu
0
Début du sujet

J’ai un pro­blème sur CPYF d’un fichier DDM vers un fichier dans QTEMP. Il y a une clef sur une zone numé­rique, mais le sys­tème attend de l’al­pha, voi­ci le code, cela sera plus clair :

    /* CRTPF FILE(QTEMP/LGT) RCDLEN(200) TEXT('Buffer brut') */
     CRTDUPOBJ  OBJ(R.01.L) FROMLIB(QS36F) OBJTYPE(*FILE) TOLIB(QTEMP) NEWOBJ(LGT)

     CPYF QTEMP/BLGTL01 QTEMP/LGT mbropt(*add) fmtopt(*nochk)
             MONMSG     MSGID(CPF2968 CPF2972 CPF2817)

COPYFILE:
    /*?Copie des données de RMTSYS(LF) vers LCLSYS(PF) QTEMP/BLGTL01 en pivot */

LECTURE:
     RCVF OPNID(LGT)
     MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(FIN))

     CPYF       FROMFILE(QTEMP/AMMDDMF) TOFILE(&FD_APBOL/&FD_APBOF) MBROPT(*ADD) CRTFILE(*YES) OUTFMT(*CHAR) +
                  INCREL((*IF NIDLGT *EQ &LGT_NIDLGT)) FMTOPT(*NOCHK) ERRLVL(*NOMAX)
     MONMSG     MSGID(CPF2968 CPF2972 CPF2817)

     GOTO LECTURE  
Les zones NIDLGT et &LGT_NIDLGT sont numériques et pourtant, j'ai ce message:

Expression INCREL incorrecte pour la zone numérique NIDLGT.      
Commande de copie interrompue à la suite d'une erreur.           

                     Complément d'informations sur message                   
                                                                             
 ID message . . . . . . :   CPF2844       Gravité  . . . . . . . :   30      
 Type de message  . . . :   Diagnostic                                       
 Date d'envoi . . . . . :   24/10/16      Heure d'envoi  . . . . :   11:49:55
                                                                             
 Message . . . . :   Expression INCREL incorrecte pour la zone numérique     
   NIDLGT.                                                                   
 Cause . . . . . :   Soit la zone NIDLGT correspondant au format             
   d'enregistrement TOCCF du fichier AMMDDMF, bibliothèque QTEMP, n'est pas  
   numérique, soit la valeur indiquée dans l'expression 1 est trop élevée.   
 Que faire . . . :   Modifiez le nom de la zone ou remplacez la valeur de    
   l'expression par une valeur plus petite.  Relancez ensuite la commande.

Éti­quettes du sujet
1 Réponse 
0

J’ai trou­vé, la zone &LGT_NIDLGT doit être alpha­nu­mé­rique même si le champ NIDLGT de TOCCP est numérique.

La solu­tion est de pas­ser la zone &LGT_NIDLGT dans une zone alpha et de l’u­ti­li­ser dans le CPYF :

DCL        VAR(&NIDLGT)     TYPE(*CHAR) LEN(7)

LECTURE:
     RCVF OPNID(LGT)
     MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(FIN))
     CHGVAR     VAR(&NIDLGT) VALUE(&LGT_NIDLGT)
     CPYF       FROMFILE(QTEMP/AMMDDMF) TOFILE(&FD_APBOL/&FD_APBOF) MBROPT(*ADD) CRTFILE(*YES) OUTFMT(*CHAR) +
                  INCREL((*IF NIDLGT *EQ &NIDLGT)) FMTOPT(*NOCHK) ERRLVL(*NOMAX)
     MONMSG     MSGID(CPF2968 CPF2972 CPF2817)

     GOTO LECTURE

Share :