symbole non reconnu

configuration Apache, ZendCore et PHP , Web services
Répondre
thomas.barberot
Messages : 48
Enregistré le : jeu. 12 avr. 2012, 14:50:53

Message par thomas.barberot »

Bonjour.

Je suis en train de tester l'exposition de *SRVPGM en web services REST.
Ca fonctionne plutôt bien jusqu'à ce que je tente de complexifier les paramètres, en imbriquant des DS qualifiées.

Par exemple, voici l'interface d'une procédure qui plante le déploiement du web service :

Code : Tout sélectionner

dcl-proc minusculeListesImb export;
dcl-pi *n;
 prequest likeds(request) const;
 presponse likeds(response);
 pHttpStatus int(10);
 pHttpHeaders char(100) dim(10);
end-pi;

//--------------------------------------------------------------------------------------------------
// Request
//--------------------------------------------------------------------------------------------------

dcl-ds request template qualified;
 groupesIn likeds(tGroupesIn) inz(*likeds) ;
end-ds;

dcl-ds tGroupesIn template qualified inz;
 groupeIn likeds(tGroupeIn) dim(10) inz(*likeds) ;
end-ds;

dcl-ds tGroupeIn template qualified inz;
 chaineIn char(50) dim(10);
end-ds;

//--------------------------------------------------------------------------------------------------
// Response
//--------------------------------------------------------------------------------------------------

dcl-ds Response template qualified;
 groupesOut likeds(tGroupesOut) inz ;
end-ds;

dcl-ds tGroupesOut template qualified inz;
 groupeOut_length int(5) inz;
 groupeOut likeds(tGroupeOut) dim(10) inz(*likeds) ;
end-ds;

dcl-ds tGroupeOut template qualified inz;
 chaineOut_length int(5) inz;
 chaineOut char(50) dim(10);
end-ds; 
La log du serveur indique ces erreurs :

Code : Tout sélectionner

/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:268: erreur : Symbole introuvable
        getpresponse().setgroupesOut( new TGroupesOut());
                      ^
  Symbole :   méthode setgroupesOut(TGroupesOut)
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:275: erreur : Symbole introuvable
        getpresponse().getgroupesOut().setgroupeOut_length((Short)as400bin21.toObject(presponseOutputBuf,presponseOutputBufOffset));
                      ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:282: erreur : Symbole introuvable
        getpresponse().getgroupesOut().util_setgroupeOut(new TGroupeOut[10], false);
                      ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:285: erreur : Symbole introuvable
            getpresponse().getgroupesOut().getgroupeOut()[intind1] =  new TGroupeOut();
                          ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:292: erreur : Symbole introuvable
            getpresponse().getgroupesOut().getgroupeOut()[intind1].setchaineOut_length((Short)as400bin21.toObject(presponseOutputBuf,presponseOutputBufOffset));
                          ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:295: erreur : Symbole introuvable
            getpresponse().getgroupesOut().getgroupeOut()[intind1].util_setchaineOut(new String[10], false);
                          ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
/www/WSTB/webservices/temp/helloWorld_1544194148041/helloWorld/WEB-INF/classes/iseries/wsbeans/helloworld/MinusculeListesImb.java:304: erreur : Symbole introuvable
                getpresponse().getgroupesOut().getgroupeOut()[intind1].getchaineOut()[intind2] = Util.trimRight((String)as400text1.toObject(presponseOutputBuf,presponseOutputBufOffset));
                              ^
  Symbole :   méthode getgroupesOut()
  Emplacement : classe Response
7 erreurs
Est-ce que quelqu'un à déjà fait ce genre de paramètre à base de DS imbriquées et peut m'expliquer ce que j'ai mal fait ?

Merci.
Modifié en dernier par thomas.barberot le ven. 07 déc. 2018, 17:09:44, modifié 1 fois.

thomas.barberot
Messages : 48
Enregistré le : jeu. 12 avr. 2012, 14:50:53

Message par thomas.barberot »

Après quelques tests, si je remplace l'option de contrôle "pgminfo(*pcml:*module:*dclcase)" par "pgminfo(*pcml:*module)" (donc plus de sensibilité à la casse), j'arrive à le déployer...
Est-ce qu'il faut faire commencer toutes les variables par des majuscules (je vais tester) ?

nbonnet
Messages : 37
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

(sujet inconnu)

Message par nbonnet »

Je n'ai jamais eu de soucis avec cela

Par contre je déclare les DS modèles avant le procedure interface

Le PCML parait-il ok ?


Peut être :

Code : Tout sélectionner

dcl-pi *n; 
 prequest likeds(request) const; 
 presponse likeds(response); 
 pHttpStatus int(10); 
 pHttpHeaders char(100) dim(10); 
end-pi; 

dcl-ds Response template qualified; 
 groupesOut likeds(tGroupesOut) inz ; 
end-ds;


Response et likeds(response) ==> majuscule / minuscule avec *dclcase ?

Pas besoin de faire commencer les variables par des majuscules ou minuscules, mais le respect de la casse est peut être nécessaire avec cette option car sensible dans le PCML généré
Nathanaël

Répondre