|
There is no straight forward way I know, if the field is a single character wide you can check IF <field> < x'40' THEN wrongfieldcontent. If fields are more than one position you'll have to check every single character of the field. You have to be sure that the fields you check are character. If the fields contain binary values (BLOB fields or GRAPHICAL) you don't want to check. I would recommend a database cleanup instead. Just my two euro-cents, Cor
-----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of derek gonsalves Sent: donderdag 12 oktober 2006 8:11 To: rpg400-l@xxxxxxxxxxxx Subject: RE: single page subfile- position to problem... Hii everyone.. after going through the midrenge.com, i have realised that this problem (error) is occurring only for a particular set of data.. i.e. the error does not occur for all cases of position to . only when i do a page-up/page-down when i reach a particular set of data it crashes and gives me the error looks like i am loading a character less than x'40' in the display file. but how do i check tht.?? Data sent to device QPADEV001H not valid. Negative response code is 1005012D. Permanent I/O error occurred in file DERWIND. Function check. RNX1251 unmonitored by DERWINR at statement 0000000084, instruction X'0000'. thanx & regards DerekFrom: "derek gonsalves" <d_gons@xxxxxxxxxxx> Reply-To: RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> To: rpg400-l@xxxxxxxxxxxx Subject: RE: single page subfile- position to problem... Date: Wed, 11 Oct 2006 18:11:57 +0000 Hi im posting my actual DDS and rpg program..(i am using it in a window subfile) Thanx N regards Derek ---------------------------------------------------------------------------------------------------------------------------------------- DDS for window subfile ---------------------------------------------------------------------------------------------------------------------------------------- A A A DSPSIZ(24 80 *DS3) A R WINSFL SFL A A D#OPT 1A B 5 2VALUES('X' ' ') A D#TRNM 50A B 5 4 A D#ISRC 10A O 5 55 A H#PROD 15A H A H#ARTS 60A H A H#ISRC 20A H A R WINCTL SFLCTL(WINSFL) A*%%TS SD 20061011 165430 DEREK REL-V4R4M0 5769-PW1 A CA03(03 'F3=Exit') A ROLLUP(75) A ROLLDOWN(76) A 50 SFLDSP A 51 SFLDSPCTL A 55 SFLCLR A 90 SFLEND(*MORE) A SFLSIZ(0008) A SFLPAG(0008) A WINDOW(5 12 15 64) A WDWBORDER((*COLOR BLU) (*DSPATR RI)- A (*CHAR ' ')) A RRN1 4S 0H SFLRCDNBR A 4 2'X' A COLOR(WHT) A D#RSCD 60A B 3 4 A 4 4'Track Name' A R DUMMY A*%%TS SD 20061011 165430 DEREK REL-V4R4M0 5769-PW1 A ASSUME A 13 2' ' A R FOOTER A*%%TS SD 20061011 165430 DEREK REL-V4R4M0 5769-PW1 A OVERLAY A WINDOW(WINCTL) A WDWBORDER((*COLOR BLU) (*DSPATR RI)- A (*CHAR ' ')) A 14 1'F3=Exit' A COLOR(BLU) ------------------------------------------------------------------------------------------------------------------------------------------ rpg program starts here ----------------------------------------------------------------------------------------------------------------------------------------- HOPTION(*NODEBUGIO) ******************** ** FILE DECLARATIONS ******************** FLCDETLL3 IF E K DISK FDERWIND CF E WORKSTN F SFILE(WINSFL:RRN1) F INFDS(INFO) ****************** ** DATA STRUCTURES ****************** DINFO DS DCFKEY 369 369 DSVLTRCK S LIKE(LDTRNM) DSVLPROD S LIKE(LDPROD) DEXIT C CONST(X'33') DCANCEL C CONST(X'3C') DENTER C CONST(X'F1') DROLLUP C CONST(X'F5') DROLLDN C CONST(X'F4') D*SFLPAG C CONST(8) DSFLPAG S 3 0 DSFLPAG_PLUS_1 C CONST(9) D*RRN1 S 3 0 DW@FLAG S 1 *************** ** MAIN ROUTINE *************** C EXSR $SFLCLR C EXSR $SFLBLD C DOU (CFKEY = EXIT) C** WRITE FOOTER C EVAL *IN51 = *ON C EXFMT WINCTL C EVAL *IN51 = *OFF C EXSR $CHECK C IF W@FLAG = 'Y' C LEAVE C ENDIF C SELECT C WHEN (CFKEY = ENTER) AND(D#RSCD <>*BLANKS)C D#RSCD SETLL LCDETL1 C EXSR $SFLCLR C EXSR $SFLBLD C CLEAR D#RSCD C* WHEN (CFKEY = ROLLUP) AND (NOT *IN90) C WHEN (*IN75 = *ON) AND (NOT *IN90) C EXSR $SFLCLR C EXSR $SFLBLD C* WHEN (CFKEY = ROLLDN) AND(*IN50 = *ON)C WHEN (*IN76 = *ON) AND (*IN50 = *ON) C EXSR $GOBACK C EXSR $SFLCLR C EXSR $SFLBLD C ENDSL C ENDDO C EVAL *INLR = *ON ********************* ** $SFLCLR SUBROUTINE ********************* C $SFLCLR BEGSR C EVAL RRN1 = 0 C EVAL *IN55 = *ON C WRITE WINCTL C EVAL *IN55 = *OFF C EVAL *IN50 = *ON C #SFLCLR ENDSR ********************* ** $SFLBLD SUBROUTINE ********************* C $SFLBLD BEGSR C EVAL SFLPAG = 8 C DO SFLPAG C READ LCDETL190 C IF *IN90 = *ON C LEAVE C ENDIF C* IF LDCNFG <> 'CD' AND LDCNFG <> 'VD' C* READ LCDETL190 C*** EVAL SFLPAG = SFLPAG + 1 C* ITER C* ENDIF C EXSR $MOVSCR C EVAL RRN1 = RRN1 +1 C WRITE WINSFL ** SAVE THE FIRST RECORD DATA C IF RRN1 = 1 C EVAL SVLTRCK = LDTRNM C EVAL SVLPROD = LDPROD C ENDIF C ENDDO C IF RRN1 = 0 C EVAL *IN50 = *OFF C ELSE C EVAL *IN50 = *ON C ENDIF C #SFLBLD ENDSR ********************* ** $GOBACK SUBROUTINE ********************* C $GOBACK BEGSR C SAVKEY SETLL LCDETL1 C* SVLTRCK SETLL LCDETL1 C DO SFLPAG_PLUS_1 C READP LCDETL190 C IF *IN90 = *ON C *LOVAL SETLL LCDETL1 C LEAVE C ENDIF C ENDDO C #GOBACK ENDSR ********************* ** $MOVSCR SUBROUTINE ********************* C $MOVSCR BEGSR C EVAL D#TRNM = LDTRNM C EVAL D#ISRC = LDISRC C EVAL H#ISRC = LDISRC C EVAL H#PROD = LDPROD C EVAL H#ARTS = LDARTS C #MOVSCR ENDSR ******************** ** $CHECK SUBROUTINE ******************** C $CHECK BEGSR C EVAL W@FLAG = 'N' C READC WINSFL81 C IF *IN81 = *OFF AND D#OPT = 'X' C EVAL T#TRNM = D#TRNM C EVAL T#ISRC = H#ISRC C EVAL T#PROD = H#PROD C EVAL T#ARTS = H#ARTS C EVAL W@FLAG = 'Y' C ENDIF C #CHECK ENDSR ******************** ** *INZSR SUBROUTINE ******************** C *INZSR BEGSR C SAVKEY KLIST C KFLD SVLTRCK C KFLD SVLPROD C *ENTRY PLIST C PARM T#TRNM 60 C PARM T#ISRC 20 C PARM T#PROD 15 C PARM T#ARTS 35 C ENDSRFrom: "Jonathan Mason" <jonathan.mason@xxxxxxxxxxxxxxxx> Reply-To: RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> To: "'RPG programming on the AS400 / iSeries'" <rpg400-l@xxxxxxxxxxxx> Subject: RE: single page subfile- position to problem... Date: Wed, 11 Oct 2006 14:09:07 +0100 Can you post the DDS for the display file too? What isthe value ofthe field defined in the DDS with the SFLRCDNBR keyword? If the value ofthisfield doesn't match a RRN for the subfile then you'll get the I/O erroryoudescribe. You would also get that error if the subfilewas empty andSFLDSP is set. Jonathan -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of derek gonsalves Sent: 11 October 2006 13:14 To: RPG400-L@xxxxxxxxxxxx Subject: single page subfile- position to problem... hii evrbody... i have an issue with the single page subfile loading.. the page- up and page-dwn functions are working fine.. bu when i enter a value in the position to field the subfile getsloaded fromthat value onwards .. but if i do a pageup(rolldown) thenthe programcrashes. gives me an error as --- Permanent input output error occured in the display file i tried debugging .. and the values are being written into the subfile record format .. but during the Exfmt of thesubfile control.. theprogramcrashes... my rpg code has been written on the same lines asfollows.... exceptfor changes in field names and file names.. but i havefollowed thesame structure and logic. (this reference code was obtained from Midrange Programmer- Back tobasics) Any help will be appreciated .... Thanx nd Regards Derek*================================================================* * To compile: * * CRTRPGPGM PGM(XXX/PAGEATATIMERG) SRCFILE(XXX/QRPGLESRC) * * rpgle program for single page subfile **=======================================================================Fsfl003df cf e workstn F sfile(sfl1:rrn1) F infds(info) Fsfl001lf if e k disk Dinfo ds D cfkey 369 369 Dsvlnam S like(dblnam) Dsvfnam S like(dbfnam) Dexit C const(X'33') Dcancel C const(X'3C') Denter C const(X'F1') Drollup C const(X'F5') Drolldn C const(X'F4') Dsflpag C const(15) Dsflpag_plus_1 C const(16) ******************************************************************* Main Routine****************************************************************** * Clear then build the initial subfile * C exsr clrsfl C exsr sflbld * * Do loop to process the subfile until F3 or F12 is pressed * C dou (cfkey = exit) or(cfkey = cancel)* C write fkey1 C exfmt sf1ctl * * Process position to information entered by theuser, then clear* and rebuild the subfile. Lastly, clear theposition to field* C select C when (cfkey = enter) and (ptname <>*blanks)C ptname setll sfl001lf C exsr clrsfl C exsr sflbld C clear ptname * * Clear and rebuild the subfile when user pagesdown (rolls up)* C when (cfkey = rollup) and(not *in90)C exsr clrsfl C exsr sflbld * * Position data file to one page before currentsubfile data, then* clear and rebuild the subfile to show that previous page * C when (cfkey = rolldn) and(not *in32)C exsr goback C exsr clrsfl C exsr sflbld C endsl C enddo C eval *inlr = *on ******************************************************************* CLRSFL - Clear the subfile****************************************************************** C clrsfl begsr * * Clear relative record numbers and subfile * C eval rrn1 = *zero C eval *in31 = *on C write sf1ctl C eval *in31 = *off C eval *in32 = *off C endsr ******************************************************************* SFLBLD - Build the List****************************************************************** C sflbld begsr * * Load the subfile with one page of data or untilend-of-file* C do sflpag C read sfl001lf 90 C if *in90 C leave C endif C eval rrn1 = rrn1 + 1 C write sfl1 * * save first record data * C if rrn1 = 1 C eval svlnam = dblnam C eval svfnam = dbfnam C endif C enddo * * If no records added to subfile, do not display it * C if rrn1 = *zero C eval *in32 = *on C endif * C endsr ******************************************************************* GOBACK - page backward one page****************************************************************** C goback begsr * * Position data file to first record of subfile * C savkey setll sfl001lf * * Re-position pointer in file for rolling backward.If beginning* of file hit before done, set pointer to firstrecord of datafile.* C do sflpag_plus_1 C readp sfl001lf C if %eof C *loval setll sfl001lf C leave C endif C enddo * C endsr ******************************************************************* KEYLISTS****************************************************************** C savkey klist C kfld svlnam C kfld svfnam -- This is the RPG programming on the AS400 / iSeries(RPG400-L) mailinglistTo post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting,please take amoment to review the archives at http://archive.midrange.com/rpg400-l. -- This is the RPG programming on the AS400 / iSeries(RPG400-L) mailinglistTo post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting,please take amoment to review the archives at http://archive.midrange.com/rpg400-l.-- This is the RPG programming on the AS400 / iSeries(RPG400-L) mailinglist To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting,please take amoment to review the archives athttp://archive.midrange.com/rpg400-l.-- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.