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

AS/400 Discussion :

CL : problème paramètre INLLIBL dynamique sur commande CHGJOBD


Sujet :

AS/400

  1. #1
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 763
    Points : 10 738
    Points
    10 738
    Par défaut CL : problème paramètre INLLIBL dynamique sur commande CHGJOBD
    Bonjour,

    Je souhaite mettre un place un petit traitement pour mettre à jour des JOBD à partir de paramètres reçus en entrée du CL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                 PGM  (&JOBDNAME &LIBDNAME)                             
                 DCL VAR(&JOBDNAME) TYPE(*CHAR) LEN(8)                  
                 DCL VAR(&LIBDNAME) TYPE(*CHAR) LEN(300)                
                 CHGJOBD    JOBD(LIB/&JOBDNAME) INLLIBL(&LIBDNAME) 
                 ENDPGM
    Dans ma variable &LIBDNAME j'ai une liste de bibliothèques (séparées entre elles d'un " ").
    A l'exécution il me dit que le paramètre INLLIBL (message CPF0001) n'est pas correct. (Dans le DUMP ma LIBDNAME correspond pourtant bien à ce que j'attend et en interactif sans passer par le CL j'arrive à passer la commande). C'est donc dans le CL que je n'y parviens pas.

    J'ai testé en paramétrant la commande dans le CL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CHGJOBD    JOBD(NEWJOBD7/&JOBDNAME) INLLIBL(('''' *TCAT +  
                 &LIBDNAME *TCAT ''''))
    Mais j'ai la même punition.
    Si quelqu'un a une idée je suis preneur ! Merci beaucoup !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 684
    Points : 985
    Points
    985
    Par défaut
    Bonjour,

    Sans voir la valeur transmise difficile de se prononcer.
    En revanche, les variables CL supérieures à 32 caractères posent toujours souci si on ne respecte pas leurs longueurs exactes.
    Je te propose donc :
    1) De passer la taille de la variable à 2750 caractères (si je ne me trompe pas, c'est la même taille que pour le parm USRLIBL dans un RTVJOBA).
    2) De vérifier que la taille de la variable transmise est bien aussi de 2750 caractères.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Bonjour.
    Le problème, c'est que le paramètre INLLIBL n'attend pas une variable de 100 caractères mais n variables de 10 !
    Tu as deux possibilités. Soit tu sépare tes biblios en n variables (si tu n'a jamais plus de 5 bibs, par exemple), soit tu appelle QCMDEXC
    Exemple 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    PGM  (&JOBDNAME &LIBDNAME)                             
    DCL VAR(&JOBDNAME) TYPE(*CHAR) LEN(8)                  
    DCL VAR(&LIBDNAME) TYPE(*CHAR) LEN(300)                
    DCL &LIB1 *CHAR 10
    DCL &LIB2 *CHAR 10
    ...
    DCL &LIB30 *CHAR 10
    CHGVAR      &LIB1 %SUBSTR(&LIBDNAME  1 10)
    CHGVAR      &LIB2 %SUBSTR(&LIBDNAME 11 10)
    ...
    CHGVAR      &LIB30 %SUBSTR(&LIBDNAME 291 10)
    CHGJOBD    JOBD(LIB/&JOBDNAME) INLLIBL(&LIB1 &LIB2 ... &LIB30) 
    ENDPGM
    Note que j'ai un petit doute si une variable est à blanc.

    Exemple 2 avec QCMDEXC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PGM  (&JOBDNAME &LIBDNAME)                             
    DCL VAR(&JOBDNAME) TYPE(*CHAR) LEN(8)                  
    DCL VAR(&LIBDNAME) TYPE(*CHAR) LEN(300)                
    DCL VAR(&CMD) TYPE(*CHAR) LEN(400)
    CHGVAR  &CMD  'CHGJOBD JOBD(' *TCAT &LIB *TCAT '/' *TCAT &JOBDNAME *TCAT ')'
    CHGVAR &CMD   &CMD *BCAT 'INLLIBL(' *TCAT &LIBDNAME *TCAT ')' 
    CALL QCMDEXC (&CMD 400)
    ENDPGM
    Note qu'ainsi, la liste de biblios peut contenir n valeurs

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 763
    Points : 10 738
    Points
    10 738
    Par défaut
    Bonjour, merci beaucoup pour vos retours. Je suis passé par la solution avec QCMDEXC qui fonctionne parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PGM  (&JOBDNAME &LIBDNAME)                                 
    DCL VAR(&JOBDNAME) TYPE(*CHAR) LEN(8)                      
    DCL VAR(&LIBDNAME) TYPE(*CHAR) LEN(300)                                         
    DCL VAR(&CMD) TYPE(*CHAR) LEN(1000)                        
    DCL VAR(&LEN) TYPE(*DEC) LEN(15 5) VALUE(500)                                 
    CHGVAR     VAR(&CMD) VALUE('CHGJOBD JOBD(BIB/' +      
                          *TCAT &JOBDNAME *TCAT ')  INLLIBL(' +
                 *TCAT &LIBDNAME *TCAT ')')                    
    CALL PGM(QCMDEXC) PARM(&CMD &LEN)                          
    ENDPGM

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

Discussions similaires

  1. Problème de tableau dynamique en paramètre
    Par sapin dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2008, 15h33
  2. probléme sur commande edit
    Par houssamnat dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/01/2008, 17h47
  3. Réponses: 7
    Dernier message: 10/05/2007, 18h23
  4. Question sur les problèmes d'allocation dynamique
    Par slylafone dans le forum C++
    Réponses: 23
    Dernier message: 25/10/2004, 15h18
  5. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 18h55

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