Problem solve Get help with specific problems with your technologies, process and projects.

iSeries' match to CLRSCR function in C language

Working with "Display Program Messages" on the iSeries.

I had tried my hand a little bit at C language. I think all of you who have even a little knowledge of C must be familiar about the CLRSCR function. The CLRSCR function in C i.e. Clear Screen function in a C program clears the previous interactive display for you and throws a fresh blank screen when the program is called again.

I always wanted to simulate that on iSeries and wondered whether it was possible on iSeries. The answer is YES it is possible. On the iSeries, that interactive display is the "Display Program Messages" screen.

Suppose, you are running a RPG program and you want to check whether the control is reaching at a particular subroutine/statement no in your program or not. You can check it by using DSPLY opcode in the RPG program. The DSPLY opcode shows you the value of a particular variable on "Display Program Messages" screen.

Suppose you have a PF called EMPINF with record format REC and is having data as shown below.

 
           EACCT ENAME        ESEX  
000001     231   XXX          M     
000002     452   RAWAT        M     
000003     383   PARAG        F    
000004     862   KKK          M     
000005     769   HARRY        M     
000006     298   PARKER       M  

Then, you have a RPG program REMP that reads the records from this file. You just want to check that whether your program is reading all the records from EMPINF file. For this you can use DSPLY opcode with Employee name field (ENAME) in factor 1 in Do While loop as shown below.

 
FEMPINF    IF   E             DISK                                     
F*                                                                     
C*                                                                     
C                   CALL      'CLRSCR'               12                
C     *IN23         DOWNE     *ON                                      
C                   READ      REC                      23              
C     *IN23         IFEQ      *ON                                      
C                   LEAVE                                              
C                   ENDIF                                              
C     ENAME         DSPLY                                              
C                   ENDDO                                              
C                   MOVE      *ON     *INLR        

CLRSCR is a CL program as shown below :

 
PGM                              
RMVMSG     PGMQ(*EXT) CLEAR(*ALL)
ENDPGM     

First of all, comment out the statement CALL 'CLRSCR' 12 in RPG program and then compile and run the program. You'll see that the names of all the employees are being shown from physical file EMPINF on the "Display Program Messages" screen. Now, run the RPG Program once more. You'll notice that again the names of all the employees are being shown from physical file EMPINF on the "Display Program Messages" screen but the values shown by the previous call to RPG program are still present on the "Display Program Messages" screen.

But you want that each time your program is called, the "Display Program Messages" screen should be refreshed i.e. it should be cleared and should not have any values or messages thrown by previous program calls.

How do you do this?

Just uncomment the statement CALL 'CLRSCR' 12 in RPG Program & then compile and run the program. Now, every time you run the program, the "Display Program Messages" screen will be refreshed first, i.e. no previous values or messages in it and you'll see the names of all the employees are being shown from the physical file EMPINF for your current program call.

The CL program CLRSCR clears the "Display Program Messages" screen. Actually, "Display Program Messages" screen is having all the values and messages which are sent to your job's (i.e. the session in which you are logged in) External message queue which is *EXT. When CL program CLRSCR is called from RPG Program REMP, it clears your job's External message queue and hence every time a Fresh "Display Program Messages" screen is shown.

Please note that the RMVMSG command used in CL Program can not be entered on command line as it is not allowed to enter it interactively. That's why I have made this 3-line CL program.

I hope this clear screen in the iSeries works for all of you and especially for those of you who are C fans!


Dig Deeper on iSeries CL programming

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.

-ADS BY GOOGLE

SearchDataCenter

Close