Bonjour,
Comment fait-on pour afficher un sous-fichier de message en ligne 24 et qui gérerait les messages d’une fenêtre ?
Pour l’instant, je n’ai trouvé que la possibilité de mettre le sous-fichier de message dans la fenêtre. Mais je ne le souhaite pas pour ne pas avoir à créer un 2me sous-fichier de message pour la fenêtre.
Voilà ce que j’ai codé pour l’instant pour la partie écran :
A R RECAP WINDOW(7 11 10 50 *NOMSGLIN +
A *NORSTCSR)
A OVERLAY
A N26 CF10
A CF12
A ACTION 96 B 1 1CNTFLD(48)
A COLOR(WHT)
A CHGINPDFT
A DSPATR(PR)
A ZCODUEX1 R B 4 2REFFLD(EREPF/CODUEX EREPP)
A COLOR(WHT)
A EDTCDE(Z)
A ZAADRUE1 R O 4 12REFFLD(EREPF/AADRUE EREPP)
A 6 3'Avec'
A COLOR(WHT)
A ZCODUEX2 R B 7 2REFFLD(EREPF/CODUEX EREPP)
A COLOR(WHT)
A EDTCDE(Z)
A ZAADRUE2 R O 7 12REFFLD(EREPF/AADRUE EREPP)
A 9 1'F1=Aide'
A COLOR(BLU)
A 9 18'F10=Validation'
A COLOR(BLU)
A 26 DSPATR(ND)
A 9 34'F12=Annuler'
A COLOR(BLU)
A ZCBASE1 1 B 5 2COLOR(WHT)
A ZCBASE2 1 B 8 2COLOR(WHT)
A ZLIBBASE1 9 O 5 4
A ZLIBBASE2 9 O 8 4
A 9 10'F3=Exit'
A COLOR(BLU)
A R MSGSFL SFL
A SFLMSGRCD(24)
A WMGKEY SFLMSGKEY
A WPGMQ SFLPGMQ
A R MSGSFLCTL SFLCTL(MSGSFL)
A SFLDSPCTL
A SFLDSP
A SFLPAG(1)
A SFLSIZ(1)
A OVERLAY
A 10 SFLINZ
A 09 SFLEND(*PLUS)
A FRCDTA
A WPGMQ SFLPGMQ
Et voici pour la partie programme :
// --------------------------------------------------
// Procedure name: Attachement
// Purpose: Affiche une fenêtre où est demandée qui sont les UE
// que l'on souhaite liées ensemble
// Returns:
// --------------------------------------------------
DCL-PROC Attachement ;
Dcl-s l_Anomalie Ind;
Dcl-c c_lien_demande 'Quelles affaires voulez-vous liées ensemble';
Dcl-s l_Ind_non_liee_1 Ind;
Dcl-s l_Ind_non_liee_2 Ind;
Dcl-s l_Uuid1 Like(r_Uuid);
Dcl-s l_Uuid2 Like(r_Uuid);
Dcl-s Validation_OK Ind;
Dcl-ds Ds_Bnuexp Extname('BNUEXP') END-DS;
Ndvalidation = *On;
// Effacement des sous-fichiers de messages
Msg_clrq();
Dow not Annuler
And not Validation_OK;
Action = c_lien_demande;
Write CTL1;
Write Msgsflctl;
Exfmt Recap;
l_anomalie=*Off;
// Effacement des sous-fichiers de messages
Msg_clrq();
l_anomalie = Control_attachement( Zcoduex1
:Zcbase1
:l_Ind_non_liee_1
:Zcoduex2
:Zcbase2
:l_Ind_non_liee_2 );
IF l_anomalie;
// anomalie
l_anomalie = *OFF;
ELSE;
If Not Valider;
If Ndvalidation = *On;
Ndvalidation = *Off;
Msg_dsp('IOD0003');
Iter;
Endif;
Else;
// confirmation pour Création
Validation_OK=VALID( l_Ind_non_liee_1
:l_Uuid1
:l_Ind_non_liee_2
:l_Uuid2);
ENDIF;
Endif;
Enddo;
return ;
END-PROC ;
// --------------------------------------------------
// Procedure name: Control_attachement
// Purpose: Vérification que les saisis d'attachement sont corr...
// ecte
// Returns:
// --------------------------------------------------
DCL-PROC Control_attachement ;
DCL-PI *N IND;
p_coduex_1 Like(r_Code_Unite_Exploit);
p_cbase_1 Like(r_Code_base);
p_Ind_non_liee_1 Ind;
p_coduex_2 Like(r_Code_Unite_Exploit);
p_cbase_2 Like(r_Code_base);
p_Ind_non_liee_2 Ind;
END-PI ;
Dcl-s C_Application Char(10) Inz('APPLI');
Dcl-s l_Uuid1 Like(r_Uuid);
Dcl-s l_Uuid2 Like(r_Uuid);
Dcl-s l_Anomalie Ind;
EXEC SQL
SELECT Aadrue
INTO :Zaadrue1
FROM Bnuexp
WHERE Coduex = :P_Coduex_1;
If Sqlcode = 100;
l_anomalie=*On;
G_MGDT = %Editc(p_coduex_1:'X');
Msg_dsp('IOD0001':G_MGDT);
ENDIF;
EXEC SQL
SELECT Aadrue
INTO :Zaadrue2
FROM Bnuexp
WHERE Coduex = :P_Coduex_2;
If Sqlcode = 100;
l_anomalie=*On;
G_MGDT = %Editc(p_coduex_2:'X');
Msg_dsp('IOD0001':G_MGDT);
ENDIF;
EXEC SQL
SELECT Csclib
INTO :Zlibbase1
FROM Bntabp
WHERE Cscprm = :C_Application
AND Csccod = :P_Cbase_1;
If Sqlcode = 100;
l_anomalie=*On;
G_MGDT = Zcbase1;
Msg_dsp('IOD0002':G_MGDT);
ENDIF;
EXEC SQL
SELECT Csclib
INTO :Zlibbase2
FROM Bntabp
WHERE Cscprm = :C_Application
AND Csccod = :P_Cbase_2;
If Sqlcode = 100;
l_anomalie=*On;
G_MGDT = Zcbase2;
Msg_dsp('IOD0002':G_MGDT);
ENDIF;
EXEC SQL
SELECT Cidmcu
INTO :L_Uuid1
FROM Bnxuep
WHERE Coduex = :P_Coduex_1
AND Cbaseu = :P_Cbase_1;;
p_Ind_non_liee_1=(Sqlcode=100);
EXEC SQL
SELECT Cidmcu
INTO :L_Uuid2
FROM Bnxuep
WHERE Coduex = :P_Coduex_2
AND Cbaseu = :P_Cbase_2;
p_Ind_non_liee_2=(Sqlcode=100);
If not p_Ind_non_liee_1
and not p_Ind_non_liee_2;
l_anomalie=*On;
G_MGDT = %Editc(p_coduex_1:'X') + %Editc(p_coduex_2:'X');
Msg_dsp('IOD0004':G_MGDT);
Endif;
return l_anomalie ;
END-PROC;
Cordialement,
J’ai trouvé 😀 , il fallait alimenter WPGMQ avec le nom du programme et non pas avec ‘* ’ dans le début de la procédure principale. Quelle nouille!!! 😫