Réaffichage automatique d’un DSPF

Vous avez besoin d’avoir un écran qui se met à jour automatiquement voici un exemple qui fait ca.

Cette une barre d’avancement qui rafraichit également l’heure affichée.

DSPF

     A                                      DSPSIZ(24 80 *DS3)         
     A                                      CA03(03)                   
     A* Test écran en réaffichage auto                                 
     A*                                                                
     A          R FMT01                                                
     A*%%TS  SD  20231026  124638  PLB         REL-V7R4M0  5770-WDS    
     A                                      PUTOVR                     
     A                                      OVRDTA                     
     A                                      OVRATR                     
     A                                  5 27'Barre d''avancement'      
     A                                      DSPATR(HI)                 
     A            TEXTE         50A  O 11 15                           
     A                                 22  4'F3=Exit'                  
     A            STATUS        15A  O  9 27                           

CLLE

/* Ecran en mise à jour automatique   */                                 
PGM                                                                
DCLF reaf                                                          
dcl &i *int                                                        
dcl &wtime *char 6                                                 
             chgvar &lancer 'Appuyez sur <ENTER> pour démarrer'    
             chgvar &status 'Arrêté '                              
             rtvsysval qtime &wtime                                
             chgvar &time (%sst(&wtime 1 2) *tcat ':' *tcat +      
                           %sst(&wtime 3 2) *tcat ':' *tcat +      
                           %sst(&wtime 5 2))                       
             SNDRCVF    RCDFMT(FMT01) WAIT(*YES)                   
             DOUNTIL    COND(&IN03)                                
             if cond(&in03) then(leave)                            
             chgvar &lancer ' '                                    
             chgvar &status 'Démarré'                              
             DOFOR      VAR(&I) FROM(1) TO(50)                     
             DLYJOB     DLY(1)                                     
             rtvsysval qtime &wtime                                
             chgvar &time (%sst(&wtime 1 2) *tcat ':' *tcat + 
                           %sst(&wtime 3 2) *tcat ':' *tcat + 
                           %sst(&wtime 5 2))                  
             chgvar &texte (&texte *tcat '>')                 
             SNDRCVF    RCDFMT(FMT01) WAIT(*NO)               
             enddo                                            
             chgvar &texte ('Chargé        ')                 
             SNDRCVF    RCDFMT(FMT01) WAIT(*NO)               
             DLYJOB     DLY(2)                                
             chgvar &in03  '1'                                
             enddo                                            
ENDPGM                                                        

Remarque :

Votre écran doit être compiler avec l’option DFRWRT(*NO)