IBM Support

RPG Subfile That Loads Subfile One Page at a Time

Troubleshooting


Problem

The following example is an RPG program that loads the subfile one page at a time.

Resolving The Problem

The following example is an OPM RPG program that loads the subfile one page at a time. As the user presses the Page Down key, it loads additional pages into the subfile.


Display File:

     A                                      PRINT
    A                                      CF03(03)
    A                                      HELP
    A****************************************************************
    A*  HEADER RECORD TO BE AT TOP OF DISPLAY
    A****************************************************************
    A          R HEADER
    A                                      OVERLAY
    A                                  2  3'HEADER'
    A                                  2 70DATE EDTWRD('  /  /  ')
    A                                  3 70TIME EDTWRD('  :  :  ')
    A****************************************************************
    A*  SUBFILE RECORD
    A****************************************************************
    A          R SF
    A                                      SFL
    A            ZIP            5   O  8 12
    A            CUST          20   O  8 28
    A            NAME          20   O  8 53
    A****************************************************************

     A*  SUBFILE CONTROL RECORD
    A****************************************************************
    A          R SCTL                      SFLCTL(SF)
    A                                      OVERLAY
    A                                      SFLSIZ(08)
    A                                      SFLPAG(07)
    A                                      ROLLUP(90)
    A  31                                  SFLDSP
    A  32                                  SFLDSPCTL
    A  33                                  SFLEND
    A  34                                  SFLCLR
    A  35                                  SFLINZ
    A            WDPOS          4S 0H      SFLRCDNBR
    A                                  4 12'SUBFILE CONTROL'
    A                                  6 12'ZIP'
    A                                  7 12'-----'
    A                                  6 28'CUSTOMER'
    A                                  7 28'--------------------'
    A                                  6 53'NAME'
    A                                  7 53'--------------------'

     A****************************************************************
    A*  WRITE IF SUBFILE IS EMPTY
    A****************************************************************
    A          R EMPTY
    A                                      OVERLAY
    A                                  8 12'THE SUBFILE IS EMPTY'
    A****************************************************************
    A*  FOOTER RECORD TO BE WRITTEN AT THE BOTTOM OF THE DISPLAY
    A****************************************************************
    A          R FOOTER
    A                                      OVERLAY
    A                                 23  3'FOOTER'


Database File Source:

                R FMT1
                 ZIP            5A
                 CUST          20A
                 NAME          20A


OPM RPG Source:

     FTESTPF  IF  E                    DISK
    FONEPGSFLCF  E                    WORKSTN
    F                                        RRN   KSFILE SF
     *
    C                     Z-ADD0         RRN     40
     ****************************************************************
     *
     * CLEAR SFL
     *
     ****************************************************************
    C                     MOVEA'0001'    *IN,31
    C                     WRITESCTL
    C                     MOVEA'0100'    *IN,31
     ****************************************************************
     *
     *  LOAD FIRST PAGE OF DATA INTO SUBFILE.
     *
     ****************************************************************
    C                     EXSR LOAD
     ****************************************************************
     *
     * CHECK TO SEE IF SUBFILE HAS ANY RECORDS.
     *    IF THERE ARE RECORDS THEN SET ON THE SFLDSP INDICATOR.
     *
     *    IF THERE ARE NOT ANY RECORD IN THE SUBFILE THEN WRITE

      *    THE EMPTY RECORD FORMAT.
     *
     ****************************************************************
    C           RRN       IFGT 0
    C                     SETON                     31
    C                     ELSE
    C                     WRITEEMPTY
    C                     END
     ****************************************************************
     *
     * WRITE EVERYTHING TO THE DISPLAY.
     *
     ****************************************************************
    C           *IN03     DOWEQ'0'
    C                     WRITEHEADER
    C                     WRITEFOOTER
     * POSITION THE SUBFILE TO THE PAGE THAT CONTAINS RELATIVE
     * RECORD NUMBER 1.
    C                     EXFMTSCTL
    C           *IN90     IFEQ '1'
    C           *IN03     ANDEQ'0'
    C           *IN80     IFEQ '0'
    C                     EXSR LOAD
    C*****************************************************************
    C*                    ELSE
    C*                    ISSUE AN ERROR THAT YOU ARE ALREADY

     C*                    AT THE BOTTOM OF THE SUBFILE.  USE THE
    C*                    MESSAGE SUBFILE EXAMPLE, SFLMSG, OR
    C*                    SFLMSGID.
    C*****************************************************************
    C                     ENDIF
    C                     ENDIF
    C                     ENDDO
    C                     MOVE '1'       *INLR
     *
     ****************************************************************
     *
     * LOAD SUBFILE
     *    THIS PROGRAM LOADS THE SUBFILE ONE PAGE AT A TIME.
     *
     ****************************************************************
    C           LOAD      BEGSR
     *
    C                     Z-ADD0         COUNT   20
    C                     READ FMT1                     80
    C           *IN80     DOWEQ'0'
    C           COUNT     ANDLE6
    C                     ADD  1         RRN
    C                     ADD  1         COUNT
    C                     WRITESF

     C           COUNT     IFLE 6
    C                     READ FMT1                     80

     C                     END
     C                     ENDDO
    C                     Z-ADDRRN       WDPOS
    C           *IN80     IFEQ '1'
    C                     SETON                     33
    C                     END
    C                     ENDSR

[{"Type":"MASTER","Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Platform":[{"code":"PF012","label":"IBM i"}],"Version":"6.1.0"}]

Historical Number

7730855

Document Information

Modified date:
18 December 2019

UID

nas8N1010282