Utilisation d’une barre de progression sous Adélia.

Mise en place de la barre de progression.

Il est recommandé de définir dans un environnement de référence Adélia 2 macro-instructions simulant une barre de progression (ces 2 macros seront ainsi partagées entre plusieurs environnements) :

 INITIALISER_BARRE_PROGRESSION

 AFFICHER_BARRE_PROGRESSION

INITIALISER_BARRE_PROGRESSION( 1 ; 2 ; 3 )

1 : Valeur représentant 100% du traitement
2 : Tranche d’évolution d’affichage du pourcentage
3 : Texte à  afficher

AFFICHER_BARRE_PROGRESSION( 1 )

1 :Valeur à  afficher sous forme de pourcentage

Exemple d’utilisation :

On suppose que W_NBR_ENR représente le nombre d’enregistrements que l’on s’apprête à  traiter.


SI W_NBR_ENR > 0
&INITIALISER_BARRE_PROGRESSION( W_NBR_ENR ; 5 ; 'Recherche en cours' )
· W_NBR_ENR représente 100 % du traitement
· On désire voir évoluer le pourcentage par tranche minimum de 5 %
· Le texte affiché sera 'Recherche en cours'
POSITIONNER_AV VUE
LIRE_AVANT VUE
W_COMPTEUR = 0
TANT_QUE VUE EXISTE
W_COMPTEUR = W_COMPTEUR + 1
&AFFICHER_BARRE_PROGRESSION( W_COMPTEUR )
· On affiche la barre de progression dès que W_COMPTEUR atteint
· une nouvelle tranche de 5 %
... traitement
LIRE_AVANT VUE
REFAIRE
FIN

Pré-requis : la macro-instruction DECLARER_VARIABLES_API devra être déclarée une (et une seule) fois dans le modèle.


Macro : AFFICHER_BARRE_PROGRESSION
Thème : API Type : MESSAGE Membre source : DSPPRGBAR
Description : Affiche une barre de progression en message *STATUS

Paramètres
N° Désignation Lg. Nd. Contrôle
1 Nombre en cours E 8 0 OBLI

*-------- DEBUT MACRO-INSTRUCTION ---------------------------------*
* BPG_CUR_NBR : nombre en cours
BPG_CUR_NBR = :01
* BPG_CALC_PCT : pourcentage représenté par BPG_CUR_NBR
SI BPG_100_PCT > 0
BPG_CALC_PCT H = BPG_CUR_NBR / ( BPG_100_PCT / 100 )
BPG_CALC_PCT = BPG_CALC_PCT / BPG_TRANCHE
BPG_CALC_PCT = BPG_CALC_PCT * BPG_TRANCHE
SINON
BPG_CALC_PCT = 0
FIN
* ON N'AFFICHE QUE SI ON ATTEINT UNE NOUVELLE TRANCHE DE %
SI BPG_CALC_PCT >= BPG_NXT_PCT_DSP
* Formater pourcentage --> BPG_FMT_PCT
BPG_ALPHA_03 = BPG_CALC_PCT
PLACER_TABLE BPG_ALPHA_03 BPG_FMT_PCT(1)
BPG_I = 1
TANT_QUE BPG_FMT_PCT(BPG_I) = '0' ET BPG_I < 3 BPG_FMT_PCT(BPG_I) = *BLANK BPG_I = BPG_I + 1 REFAIRE * Charger la table des points BPG_POINTS = *BLANK BPG_I = BPG_CALC_PCT / 10 BPG_J = 0 TANT_QUE BPG_J < BPG_I BPG_J = BPG_J + 1 BPG_POINTS(BPG_J) = '...' REFAIRE BPG_TEXTE = *BLANK BPG_TEXTE = BPG_TXT_40 /// ' : ' // BPG_FMT_PCT /// ' %' // BPG_X23 // BPG_POINTS // BPG_X22 &ENVOYER_MESSAGE_STATUT(BPG_TEXTE) BPG_PRV_PCT_DSP = BPG_CALC_PCT BPG_NXT_PCT_DSP = BPG_PRV_PCT_DSP + BPG_TRANCHE FIN *-------- FIN MACRO-INSTRUCTION -----------------------------------* Macro : ENVOYER_MESSAGE_STATUT Thème : API Type : MESSAGE Membre source : SNDSTSMSG Description : Envoi de message *STATUS *-------- DEBUT MACRO-INSTRUCTION ---------------------------------* * * Identificateur message = CPF9898 MSG_MSG_ID = *BLANK MSG_MSG_ID = 'CPF9898' * * Fichier de messages = *LIBL/QCPFMSG MSG_MSGF_NAME = *BLANK MSG_MSGF_NAME = 'QCPFMSG' MSG_MSGF_LIB = *BLANK MSG_MSGF_LIB = '*LIBL' * * Données du message = :01 MSG_MSG_DTA = *BLANK MSG_MSG_DTA = :01 SI MSG_MSG_DTA = *BLANK MSG_MSG_DTA = 'Traitement en cours, veuillez patienter ...' FIN * * Longueur données message = 130 VAR_BIN_API_01 = 130 * * Type de message = *STATUS MSG_MSG_TYPE = *BLANK MSG_MSG_TYPE = '*STATUS' * * Call stack entry = *EXT MSG_MSG_QUEUE = *BLANK MSG_MSG_QUEUE = '*EXT' * * Call stack counter = 0 VAR_BIN_API_02 = 0 * * Clé message = non utilisé MSG_MSG_KEY = *BLANK * * API à  appeler = QMHSNDPM PGM_API_01 = *BLANK PGM_API_01 = 'QMHSNDPM' * ERRAPI_EXCPT_ID = *BLANK ERRAPI_OCTETS_I = 116 ERRAPI_OCTETS_O = 0 APPELER &PGM_API_01 MSG_MSG_ID MSG_QUAL_MSGF MSG_MSG_DTA VAR_BIN_API_01 MSG_MSG_TYPE MSG_MSG_QUEUE VAR_BIN_API_02 MSG_MSG_KEY CODE_ERREUR_API *-------- FIN MACRO-INSTRUCTION -----------------------------------* Macro : INITIALISER_BARRE_PROGRESSION Thème : API Type : MESSAGE Membre source : INZPRGBAR Description : Initialise barre de progression Paramètres N° Désignation Lg. Nd. Contrôle 1 Nombre représentant 100 % E 8 0 OBLI 2 Tranche d'évolution % E 2 0 OBLI 3 Texte E 40 OBLI *-------- DEBUT MACRO-INSTRUCTION ---------------------------------* DECLARER_TAB £BPG01;BPG_FMT_PCT 1 3 DECLARER_TAB £BPG02;BPG_POINTS 3 10 DECLARER £BPG03;BPG_100_PCT 8;0 DECLARER £BPG04;BPG_CALC_PCT 3;0 DECLARER £BPG05;BPG_PRV_PCT_DSP 3;0 DECLARER £BPG06;BPG_NXT_PCT_DSP 3;0 DECLARER £BPG07;BPG_CUR_NBR 8;0 DECLARER £BPG08;BPG_TRANCHE 2;0 DECLARER £BPG09;BPG_I 2;0 DECLARER £BPG10;BPG_J 2;0 DECLARER £BPG11;BPG_TEXTE 130 DECLARER £BPG12;BPG_X23 1 DECLARER £BPG13;BPG_X22 1 DECLARER £BPG14;BPG_ALPHA_03 3 DECLARER £BPG15;BPG_TXT_40 40 * BPG_X23 = &CONVERSION_CAR('23') BPG_X22 = &CONVERSION_CAR('22') * Nombre représentant 100 % BPG_100_PCT = :01 * Tranche de pourcentages à  afficher BPG_TRANCHE = :02 SI BPG_TRANCHE < 1 BPG_TRANCHE = 5 FIN BPG_TXT_40 = *BLANK BPG_TXT_40 = :03 SI BPG_TXT_40 = *BLANK BPG_TXT_40 = 'Traitement en cours' FIN * Précédent % affiché : n'importe quelle valeur < 0 BPG_PRV_PCT_DSP = 0 - 1 * Prochain % à  afficher : 0 BPG_NXT_PCT_DSP = 0 * &AFFICHER_BARRE_PROGRESSION(0) *-------- FIN MACRO-INSTRUCTION -----------------------------------* Macro : DECLARER_VARIABLES_API Thème : API Type : Membre source : DCLVARAPI Description : Déclaration variables et DS pour API *-------- DEBUT MACRO-INSTRUCTION ---------------------------------* * * CODE ERREUR RETOURNà‰ PAR L'API DECLARER ERRC££;CODE_ERREUR_API 116 DECLARER £EBPR;ERRAPI_OCTETS_I 4;0 DECLARER £EBAV;ERRAPI_OCTETS_O 4;0 DECLARER £EXID;ERRAPI_EXCPT_ID 7 DECLARER £ERSV;ERRAPI_RESERVE 1 DECLARER £EDTA;ERRAPI_DATA 100 * * NOM QUALIFIà‰ D'OBJET (1) DECLARER £QO01;OBJET_QUALIFIE 20 DECLARER £QO1N;QOBJ_NOM_OBJET 10 DECLARER £QO1L;QOBJ_BIB_OBJET 10 DECLARER £QO1T;QOBJ_TYP_OBJET 10 * * NOM QUALIFIà‰ D'OBJET (2) DECLARER £QO02;OBJ_QUALIFIE_2 20 DECLARER £QO2N;QOBJ_NOM_OBJ_2 10 DECLARER £QO2L;QOBJ_BIB_OBJ_2 10 DECLARER £QO2T;QOBJ_TYP_OBJ_2 10 * * NOM QUALIFIà‰ DE JOB DECLARER £QJB01;QJB_QUAL_JOB 26 DECLARER £QJB02;QJB_NAME 10 DECLARER £QJB03;QJB_USER 10 DECLARER £QJB04;QJB_NUMBER 6 * * QUELQUES VARIABLES BINAIRES DECLARER £BIN1;VAR_BIN_API_01 4;0 DECLARER £BIN2;VAR_BIN_API_02 4;0 DECLARER £BIN3;VAR_BIN_API_03 4;0 DECLARER £BIN4;VAR_BIN_API_04 4;0 DECLARER £BIN5;VAR_BIN_API_05 4;0 DECLARER £BIN6;VAR_BIN_API_06 4;0 DECLARER £BIN7;VAR_BIN_API_07 4;0 DECLARER £BIN8;VAR_BIN_API_08 4;0 DECLARER £BIN9;VAR_BIN_API_09 4;0 DECLARER £BINA;VAR_BIN_API_10 4;0 * * NOM FORMAT API DECLARER £FNAME;NOM_FORMAT_API 8 * * NOMS PROGRAMMES API DECLARER £PGM1;PGM_API_01 10 DECLARER £PGM2;PGM_API_02 10 DECLARER £PGM3;PGM_API_03 10 DECLARER £PGM4;PGM_API_04 10 DECLARER £PGM5;PGM_API_05 10 * * VARIABLES POUR MANIPULATION USRSPC DECLARER £USP01;USP_ATTRIBUTE 10 DECLARER £USP02;USP_INL_VALUE 1 DECLARER £USP03;USP_PUB_AUTH 10 DECLARER £USP04;USP_TEXTE 50 DECLARER £USP05;USP_REPLACE 10 DECLARER £USP06;USP_FIRST_RTV 16 DECLARER £USP07;USP_OFFSET 4;0 DECLARER £USP08;USP_ENTRY_NBR 4;0 DECLARER £USP09;USP_ENTRY_SIZE 4;0 DECLARER £USP10;USP_ATT_TO_CHG 16 DECLARER £USP11;USP_NBR_VLR 4;0 DECLARER £USP12;USP_KEY_TO_CHG 4;0 DECLARER £USP13;USP_KEY_LENGTH 4;0 DECLARER £USP14;USP_KEY_VALUE 4 DECLARER £USP15;USP_FRCAUXSTG 1 * * VARIABLES POUR ENVOI MESSAGES DECLARER £MSG01;MSG_MSG_ID 7 DECLARER £MSG02;MSG_MSGF_NAME 10 DECLARER £MSG03;MSG_MSGF_LIB 10 DECLARER £MSG04;MSG_QUAL_MSGF 20 DECLARER £MSG05;MSG_MSG_DTA 130 DECLARER £MSG06;MSG_MSG_TYPE 10 DECLARER £MSG07;MSG_MSG_QUEUE 10 DECLARER £MSG08;MSG_MSG_KEY 4 DECLARER £MSG09;MSG_ACTION 10 * * VARIABLES POUR QUSRMBRD (DESCRIPTION MEMBRE) DECLARER £MBD01;MBD_MBRD0200 244 DECLARER £MBD02;MBD_TEXTE 50 DECLARER £MBD03;MBD_NBR_CUR_RCD 4;0 DECLARER £MBD04;MBD_NBR_DLT_RCD 4;0 DECLARER £MBD05;MBD_NOM_MEMBRE 10 DECLARER £MBD06;MBD_OVR_PROCESS 1 DECLARER £MBD07;MBD_LIB 10 DECLARER £MBD08;MBD_MBR_NAME 10 DECLARER £MBD09;MBD_FILLER 1 * * VARIABLES POUR QWCRJBST (STATUT JOB) DECLARER £JST01;JST_RCV_VAR 60 * * VARIABLES POUR API HFS DECLARER £HFS01;HFS_PATH_NAME 75 DECLARER £HFS02;HFS_OPEN_INFO 6 DECLARER £HFS03;HFS_ATT_SLT_TBL 4 DECLARER £HFS04;HFS_DATA_BUFFER 45 * * LES DATA STRUCTURES DSI CODE_ERREUR_API ERRAPI_OCTETS_I,1B ERRAPI_OCTETS_O,5B ERRAPI_EXCPT_ID,9 ERRAPI_RESERVE,16 ERRAPI_DATA,17 DSI OBJET_QUALIFIE QOBJ_NOM_OBJET,1 QOBJ_BIB_OBJET,11 DSI OBJ_QUALIFIE_2 QOBJ_NOM_OBJ_2,1 QOBJ_BIB_OBJ_2,11 DSI QJB_QUAL_JOB QJB_NAME,1 QJB_USER,11 QJB_NUMBER,21 DSI BINY££ VAR_BIN_API_01,1B VAR_BIN_API_02,5B VAR_BIN_API_03,9B VAR_BIN_API_04,13B VAR_BIN_API_05,17B VAR_BIN_API_06,21B VAR_BIN_API_07,25B VAR_BIN_API_08,29B VAR_BIN_API_09,33B VAR_BIN_API_10,37B DSI USP_FIRST_RTV USP_OFFSET,1B USP_ENTRY_NBR,9B USP_ENTRY_SIZE,13B DSI USP_ATT_TO_CHG USP_NBR_VLR,1B USP_KEY_TO_CHG,5B USP_KEY_LENGTH,9B USP_KEY_VALUE,13 DSI MSG_QUAL_MSGF MSG_MSGF_NAME,1 MSG_MSGF_LIB,11 DSI MBD_MBRD0200 MBD_LIB,19 MBD_MBR_NAME,29 MBD_TEXTE,85 MBD_NBR_CUR_RCD,141B MBD_NBR_DLT_RCD,145B MBD_FILLER,244 * * LONGUEUR CODE ERREUR API ERRAPI_OCTETS_I = 116 *-------- FIN MACRO-INSTRUCTION -----------------------------------*

Print Friendly, PDF & Email