Comment gérer le renvoi de valeur indéfinie

RPG (3 et 4, free), CL, SQL, etc...
Répondre
BrigitteG
Messages : 109
Enregistré le : jeu. 20 sept. 2012, 08:56:38

Comment gérer le renvoi de valeur indéfinie

Message par BrigitteG »

Bonjour,

Dans un programme, j'appelle un pgm qui renvoi des valeurs avec octets de valeur indéfinie.
A la compilation, il y a ce message d'avertissement : RNF7356 00 1 Le paramètre comporte une mappe d'octets de valeur indéfinie mais OPTIONS(*NULLIND) n'est pas spécifié sur le prototype.

Code : Tout sélectionner

d NomPgm         pr                  extpgm('NomPgm')
     d                                9
     d                              245
      * DS paramètres en entrée pour FDERDET
     D parm1          E DS                  EXTNAME(DS1) PREFIX(£F_)
     D parm2      E DS                  EXTNAME(DS2) PREFIX(£W_)

/free
£w_zone1 = G_COPAIP;
              £w_zone2 = G_NUNATI;
              NomPgm (parm1:parm2);
              zone3 = £w_zone3;
              zone4 = £w_zone4;       
/end-free
En exécution depuis un écran 400 aucun problème.

Par contre en passant par i Navigator Exécution d'un script SQL, l'exécution s'interrompt et affiche le message suivant :
Message : [CEE9901] Application error. MCH3401 unmonitored by PGM10 at statement 0000000577, instruction X'0000'. Cause . . . . . : The application ended abnormally because an exception occurred and was not handled. The name of the program to which the unhandled exception is sent is PGM10 PGM10 . The program was stopped at the high-level language statement number(s) at the time the message was sent. If more than one statement number is shown, the program is an optimized ILE program. Optimization does not allow a single statement number to be determined. If *N is shown as a value, it means the real value was not available. Recovery . . . : See the low level messages previously listed to locate the cause of the exception. Correct any errors, and then try the request again.

Le numéro de ligne correspond à NomPgm (parm1:parm2);

Je ne peux pas mettre OPTIONS(*NULLIND) au niveau de : D parm2 E DS EXTNAME(DS2) PREFIX(£W_)

Si je le mets au niveau

Code : Tout sélectionner

d FDERDET         pr                  extpgm('FDERDET')
     d                                9
     d                              245    OPTIONS(*NULLIND)
A la compilation j'ai le message suivant : RNF7354 30 1 Le type et les attributs du paramètre doivent correspondre exactement lorsque OPTIONS(*NULLIND) est spécifié.

Comment résoudre ce problème ...

Merci d'avance pour votre aide.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

LIKEDS

Message par cmasse »

il faut indiquer que ce paramètre est une DS et non une zone simple

ne mettez pas

Code : Tout sélectionner

     d NomPgm         pr                  extpgm('NomPgm')
     d                                9
     d                              245
Mais

Code : Tout sélectionner

     d NomPgm         pr                  extpgm('NomPgm')
     d     p1                              likeds(parm1)
     d     p2                              likeds(parm2) options(*NULLIND)

Christian Massé (Volubis.fr)

BrigitteG
Messages : 109
Enregistré le : jeu. 20 sept. 2012, 08:56:38

Comment gérer le renvoi de valeur indéfinie

Message par BrigitteG »

:D Merci et bonne journée

Répondre