Below is My Load Forwarded subfile code.This is just a program to copy more than 9999 records nothing more than that. I was facing some Relational error in the program( Coded in Red colour).it was displaying only first 5 records on the screen. Kindly help me to rectify this.
Thanks
*************** Beginning of data ******************************************************
HDEBUG(*YES)
HOPTION(*NODEBUGIO)
FFILE2 IF E K DISK
FEXP1 CF E WORKSTN
F SFILE(EXP_SFL:RRN)
F INFDS(infds)
Dinfds DS
DRECNO 378 379I 0
DNXTPGCOUNT S 2P 0 INZ(*ZEROS)
DFIRSTRRN S 4P 0 INZ(*ZEROS)
DLSTPGCOUNT S 2P 0 INZ(*ZEROS)
C EVAL *IN03=*OFF
C EXSR MAIN
C EXSR DSPSFL
C SETON LR
C MAIN BEGSR
C *IN66 IFEQ *ON
C IF *IN45=*OFF
C EXSR NXTPG
C EXSR LOADSFL
C ENDIF
C SETOFF 66
C ELSE
C *IN66 IFEQ *OFF
C *IN03 ANDEQ *OFF
C EVAL FIRSTRRN=RECNO
C ENDIF
C ENDIF
C ENDSR
C NXTPG BEGSR
C EVAL NXTPGCOUNT=0
C DO SFLPAG
C READ FILE2
C IF %EOF(FILE2)
C EVAL LSTPGCOUNT=NXTPGCOUNT
C *HIVAL SETLL FILE2
C LEAVE
C ENDIF
C EVAL NXTPGCOUNT=NXTPGCOUNT+1
C ENDDO
C DO NXTPGCOUNT
C READP FILE2
C ENDDO
C IF NXTPGCOUNT
C READP FILE2
C ENDIF
C ENDSR
C CLRSFL BEGSR
C EVAL RRN=0
C EVAL *IN50=*ON
C WRITE EXP_CTL
C EVAL *IN50=*OFF
C ENDSR
C *INZSR BEGSR
C DO NXTPGCOUNT
C ENDDO
C SETOFF 505152
C SETOFF 45
C MOVEL 5 SFLPAG 1 0
C Z-ADD *ZEROS RRN 4 0
C EVAL NXTPGCOUNT=SFLPAG
C EXSR CLRSFL
C *LOVAL SETLL FILE2
C EXSR LOADSFL
C EXSR DSPSFL
C ENDSR
C LOADSFL BEGSR
C EVAL *IN45=*OFF
C EVAL FIRSTRRN=RRN+1
C DO SFLPAG
C READ FILE2
C IF %EOF(FILE2)
C SETON 45
C LEAVESR
C ENDIF
C EVAL NAME=NAME
C EVAL ID=ID
C EVAL GRADE=GRADE
C EVAL TENURE=TENURE
C EVAL ADDRESS=ADDRESS
C EVAL DEPT=DEPT
C ADD 1 RRN
C IF RRN>9999
C LEAVE
C ENDIF
C WRITE EXP_SFL
C ENDDO
C ENDSR
C DSPSFL BEGSR
C SETON 5152
C IF RRN<=0
C SETOFF 52
C ENDIF
C WRITE HEADER
C WRITE FOOTER
C EXFMT EXP_CTL
C SETOFF 5152
C ENDSR
****************** End of data ******************************************
I can't decode your logic in the next page subroutine. Since you're happy with this logic then if you were reading backwards, which would occur whenever NXPTGCOUNT > 0 then you might want to read back one more row.
Free Guide: Managing storage for virtual environments
Complete a brief survey to get a complimentary 70-page whitepaper featuring the best methods and solutions for your virtual environment, as well as hypervisor-specific management advice from TechTarget experts. Don’t miss out on this exclusive content!
Discuss This Question: 4  Replies
Your next page routine is mind bending.
Why do you go to the bottom and then read backwards?
I can't decode your logic in the next page subroutine. Since you're happy with this logic then if you were reading backwards, which would occur whenever NXPTGCOUNT > 0 then you might want to read back one more row.
C IF NXTPGCOUNT > 0