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
Was this topic helpful?
Document Information
Modified date:
18 December 2019
UID
nas8N1010282