Auto refresh screen - Data queue style

Auto refresh screen - Data queue style

After looking at some recent post I would like to draw the attention of my honorable comrades (namely iSeries programmers) to a different technique to auto refresh a screen.

This technique uses a data queue as a mean to control the refresh timing. This approach is more flexible then using the WAITRCD technique since the timing can be controlled within the application.

You can find more info in the "CL Programming" V5R1 book check the "Examples Using a Data Queue".

The code is valid for previous versions (V4R4M0 for sure).

Compile instructions and sequence

1 - QDDSSRC.DEM03202 - OPTION(*NOLIST) RSTDSP(*YES) DFRWRT(*NO)
2 - QCLSRC.DEM03202P
3 - QRPGSRC.DEM03202


 
=======================================================================

QDDSSRC.DEM03202

     A* PARMS OPTION(*NOLIST) RSTDSP(*YES) DFRWRT(*NO)
     A                                      DSPSIZ(24 80 *DS3)
     A                                      PRINT
     A                                      ERRSFL
     A                                      CF03
     A          R PNL00N                    TEXT('Reference only')
     A            PNLCTL         2S 0H      TEXT('Panel control')
     A          R PNL02N
     A                                      OVERLAY
     A            PRCNAME       10A  O  1  2
     A                                  1 71DATE
     A                                      EDTCDE(Y)
     A            USRNAME       10A  O  2  2
     A                                  2 30' Data queue refresh '
     A                                      DSPATR(HI)
     A                                      DSPATR(UL)
     A                                  2 71TIME
     A          R PNL04N
     A                                      OVERLAY
     A                                 10 13'Data queue wait time.......'
     A            WATTIM         5Y 0B 10 42EDTCDE(M)
     A                                      COMP(NE 0)
     A                                      DSPATR(MDT)
     A                                 13 13'Data queue.................'
     A            DTQNAM        10A  O 13 42
     A            DTQLIB        10A  O 13 53
     A          R PNL04F
     A                                      OVERLAY
     A                                 23  2'F3=Exit'
     A                                      COLOR(BLU)
     A          R PNL06R                    SFL
     A            ENTLEN         5S 0H
     A            ENTDTA        78A  H
     A            OUTF          78A  O  6  2
     A          R PNL06C                    SFLCTL(PNL06R)
     A                                      SFLSIZ(0017)
     A                                      SFLPAG(0016)
     A                                      CF12
     A  75                                  INVITE
     A                                      FRCDTA
     A                                      OVERLAY
     A  41                                  SFLDSP
     A  42                                  SFLDSPCTL
     A  45                                  SFLCLR
     A N46                                  SFLEND(*MORE)
     A            C06TR          4S 0H      TEXT('Total records')
     A            C06AR          4S 0H      TEXT('Active record')
     A            C06DR          4S 0H      SFLRCDNBR
     A                                  4  2'Input:'
     A            INPF          70A  I  4  9
     A          R PNL06F
     A                                      OVERLAY
     A                                 23  2'F3=Exit'
     A                                      COLOR(BLU)
     A                                 23 12'F12=Cancel'
     A                                      COLOR(BLU)


=======================================================================

QCLSRC.DEM03202P

             PGM

             DCLF       FILE(DEM03202)

             CHGVAR     VAR(&DTQLIB) VALUE(QTEMP)
             CHGVAR     VAR(&DTQNAM) VALUE(UDTAQ)

             DLTDTAQ    DTAQ(&DTQLIB/&DTQNAM)
             MONMSG     MSGID(CPF2100)

             CRTDTAQ    DTAQ(&DTQLIB/&DTQNAM) MAXLEN(128) AUT(*ALL)

             /* Note the DTAQ parameter */
             OVRDSPF    FILE(DEM03202) DTAQ(&DTQLIB/&DTQNAM)

             CALL       PGM(DEM03202) PARM(&DTQNAM &DTQLIB)

             DLTDTAQ    DTAQ(&DTQLIB/&DTQNAM)
             MONMSG     MSGID(CPF0000)

             ENDPGM
             
=======================================================================     

      *
      *PARMS DBGVIEW(*SOURCE) INDENT('| ')
      *PARMS OPTION(*NOXREF *NOEXPDDS) OUTPUT(*PRINT)
      *
     H datedit(*ymd)
      *
     Fdem03202  cf   e             workstn infds(infd01)
     F                                     sfile(Pnl06r:c06ar)
      *
     Dinfd00          sds
     D prcName                       10    overlay(infd00:  1)
     D JobName                       10    overlay(infd00:244)
     D UsrName                       10    overlay(infd00:254)
     D JobNmbr                        6    overlay(infd00:264)
      *
     Dinfd01           ds
     D FunKey                         1    overlay(infd01:369)
      *
     D nl              c                   const(x'20')
     D ri              c                   const(x'21')
      *
     D fk01            c                   const(x'31')
     D fk03            c                   const(x'33')
     D fk12            c                   const(x'3C')
      *
      *
     D perfix          s              5
     D time            s               z
      *
     C     *entry        plist
     C                   parm                    dtqnam
     C                   parm                    dtqlib
      *
      * Start panel
     C                   eval      pnlctl = 04
      *
      * Set default
     C                   Eval      wattim = 4
      *
 B01 C                   dou       FunKey = Fk03
  01  *
 S02 C                   select
 C02 C                   when      pnlctl = 04
  02 C                   exsr      Sr04
 C02 C                   when      pnlctl = 06
  02 C                   exsr      Sr06
 E02 C                   EndSl
  01  *
 E01 C                   enddo
      *
     C                   eval      *inlr = *on
      *
      *====================================================
     C     sr04          begsr
      * Get preference from the user
      *
 B01 C                   dou       FunKey = Fk03
  01  *
  01 C                   write     Pnl00n
  01 C                   write     Pnl02n
  01 C                   write     Pnl04f
  01 C                   exfmt     Pnl04n
  01  *
 S02 C                   select
  02  *
 C02 C                   when      funkey = fk03                                CF03
  02  *
 O02 C                   Other
  02  *
  02 C                   call      'QCLRDTAQ'
  02 C                   parm                    dtqnam
  02 C                   parm                    dtqlib
  02  *
  02  * Next panel
  02 C                   Eval      pnlctl = 06
  02  *
  02 C                   Leave
  02  *
 E02 C                   EndsL
  01  *
 E01 C                   enddo
      *
     C                   endsr
      *====================================================
     C     sr06          begsr
      *
 B01 C                   dou       FunKey = Fk03
  01  *
  01  * Set subfile indicators (Display)
  01 C                   eval      *in41 = c06tr >

    Requires Free Membership to View

    Register today to access targeted resources from our editorial writers and independent industry experts including news, tips, and advice to help you do your job more efficiently and effectively. Stay informed on the hottest topics and biggest challenges faced by IT professionals working with iSeries products and services.

    By submitting your registration information to Search400.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of Search400.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

*zeros 01 C eval *in42 = *on 01 C eval *in45 = *off 01 * 01 * Turn Invite on 01 C Eval *IN75 = *On 01 * 01 C write Pnl00n 01 C write Pnl02n 01 C write Pnl06f 01 C write Pnl06c 01 * 01 * Data Queue wait 01 C exsr sr0606 01 * S02 C Select 02 * 02 * Time to refresh C02 C When perfix <> '*DSPF' 02 * 02 C time time 02 C eval outf = ri + %char(time) + nl 02 * Add line 02 C Exsr Sr0614 02 * O02 C Other 02 * 02 * Entry is from display 02 * 02 * Turn Invite off 02 C Eval *IN75 = *Off 02 * 02 * Get the data from the file 02 C read Pnl06c 02 * S03 C select C03 C when funkey = fk03 C03 C when funkey = fk12 03 C eval pnlctl = 04 03 C Leave 03 * O03 C Other 03 * 03 * Process input data from display file 03 * (in this case just write it to the subfile) 03 C eval Outf = Inpf 03 * Add line 03 C Exsr Sr0614 03 * E03 C endsl 02 * E02 C endsl 01 * E01 C enddo * C endsr *------------------------- C sr0606 begsr * Data Queue wait * C eval perfix = *blanks * B01 C dou entlen = *zeros 01 * 01 C call 'QRCVDTAQ' 01 C parm dtqnam 01 C parm dtqlib 01 C parm entlen 01 C parm entdta 01 C parm wattim 01 * B02 C if entlen = *zeros 02 C leave E02 C endif 01 * 01 C Eval perfix = %subst(entdta:1:5) 01 * 01 * Entry is from display B02 C if perfix = '*DSPF' 02 * 02 C call 'QCLRDTAQ' 02 C parm dtqnam 02 C parm dtqlib 02 * 02 C leave 02 * E02 C endif 01 * E01 C enddo * C endsr *------------------------- C sr0614 begsr * Add line * * Clear SFL if too many records B01 C if c06tr = 16 01 * 01 C eval *in41 = *off 01 C eval *in42 = *off 01 C eval *in45 = *on 01 * 01 C eval c06tr = 0 01 C eval c06ar = 0 01 C eval c06dr = 1 01 * 01 C write Pnl06c 01 * E01 C EndIf * C eval c06tr = c06tr + 1 C eval c06ar = c06tr C eval c06dr = c06tr * C Eval outf = %editc(c06ar:'Z') + ' : ' + C %trim(outf) * C write Pnl06r * C EndSr *====================================================

This was first published in October 2002

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.