|
You can have them in the SFLCTL format. As I don't have a whole load of time to type something new out, here's one that does pretty close to same thing. It's a subfile records with a position to field: A R CPSTRPYW A OVERLAY A WINDOW(4 5 19 70) A 28 WDWTITLE((*TEXT ' F2=Previous F6=B- A y Description Enter=Continue ') (*- A COLOR WHT) *BOTTOM) A N28 WDWTITLE((*TEXT ' F2=Previous F6=B- A y Type Enter=Continue ') (*COLOR - A WHT) *BOTTOM) A R CPSTRPY1 SFL A SF2TYP 2S 0H A SF2DSC 36A H A SF3MSG 1A H A SF3BG# 10Y 0H A SF2OPT 1A B 6 2VALUES(' ' 'X') A CHKMSGID(OUR0035 *LIBL/OURMSGF) A 66 DSPATR(RI) A SF2LIN 40A O 6 5 A SF2BG# 12A O 6 46 A SF3CST 9Y 2O 6 59EDTCDE(3) A R CPSTRPYH SFLCTL(CPSTRPY1) A*%%TS SD 20031110 091016 RPOWER REL-V5R2M0 5722-WDS A SFLSIZ(9999) A SFLPAG(0012) A WINDOW(CPSTRPYW) A CF02 A CF06 A OVERLAY A 40 SFLDSP A SFLDSPCTL A 41 SFLCLR A 42 SFLEND(*SCRBAR *MORE) A RCD#2 4S 0H SFLRCDNBR(CURSOR) A SYSNAM 8A O 1 1 A 1 25'Select Transaction Type' A DSPATR(HI) A DATYMD 10A O 1 61 A PRGSYS 21A O 2 1 A CURTIM 8A O 2 63 A 3 4'Position To:' A DSPATR(HI) A POSDSC 20A B 3 17CHECK(LC) A DSPATR(PC) A 3 38'Description' A 4 4'X=Select' A 5 1'Opt' A DSPATR(HI) A 5 5'Description' A DSPATR(HI) A 5 46'Budget #' A DSPATR(HI) A 5 63'Charge' A DSPATR(HI) And the RPG code. c exsr clearsub2 ?* load subfile 2 c exsr loadsub2 ?* if saved record number not 0, then we selected at least one record c if savrcd#2 <> 0 and not(*in29) c eval rcd#2 = savrcd#2 c endif ?* define window headings c eval prgsys = %trim(pgmlib)+'/CPSTRPYH' c exsr refresh_time ?* display window and subfile c eval posdsc = *blanks c seton 4042 c exfmt cpstrpyh c setoff 4066 c Exsr Clear_Error ?* F2 pressed, leave this screen c if *inkb c setoff kb c leave c endif ?* position to was entered, reposition subfile c if posdsc <> *blanks c iter c endif ?* process selected records c readc cpstrpy1 99 c dow not(*in99) c eval savrcd#2 = sflrrn2 c if sf2opt = 'X' c evalr paytyp = %char(sf2typ) c exsr proc_paytype c if *in66 c eval savrcd#2 = sflrrn2 c update cpstrpy1 c eval sf2opt = *blanks c leave c endif c eval sf2opt = *blanks c update cpstrpy1 c endif c readc cpstrpy1 99 c enddo ? *----------------------------------------------------------------------- ?* CLEARSUB2 - clear subfile#2 - cpstrpy1 ? *----------------------------------------------------------------------- c clearsub2 begsr c eval sflrrn2 = 0 c write cpstrpyw c seton 41 c write cpstrpyh c setoff 41 c endsr ? *----------------------------------------------------------------------- ?* LOADSUB2 - load subfile #2 - cpstrcpy1 ? *----------------------------------------------------------------------- c loadsub2 begsr ?* initialize rcd#2 so that we can test for position to field. c eval rcd#2 = 0 ?* sorted by description c if posdsc = *blanks c setoff 29 c else c seton 29 c endif ?* convert position to field to upper case c lo:up xlate posdsc upper_posdsc c eval w = 1 c *blanks lookup sf2sdscb(w) 99 c dow w <= 200 ?* populate subfile fields c eval sf2typ = sf2stypb(w) c eval sf2dsc = sf2sdscb(w) c eval sf2typa = sf2stypb(w) c eval sf2dsca = sf2sdscb(w) c eval sf2lin = sf2lina c eval sf2bg# = %trim(%editw(sf2sbg#b(w): c ' - - ')) c eval sf3bg# = sf2sbg#b(w) c eval sf3cst = sf3scstb(w) c eval sf3msg = sf3smsgb(w) ?* increase rrn c eval sflrrn2 = sflrrn2 + 1 ?* write the subfile record c write cpstrpy1 ?* is the position to field here? c lo:up xlate sf2dsc upper_sf2dsc c if upper_sf2dsc >= upper_posdsc and rcd#2 = 0 c eval rcd#2 = sflrrn2 c endif c eval w = w + 1 c enddo c if sflrrn2 = 0 c eval sflrrn2 = 1 c eval rcd#2 = 1 c eval sf2typ = 0 c eval sf2dsc = 'None Found!' c eval sf2bg# = *blanks c write cpstrpy1 c endif c if *in29 c if rcd#2 = 0 c eval rcd#2 = sflrrn2 c endif c else c eval rcd#2 = 1 c endif c endsr Hope this helps. Ron Power Programmer Information Services City Of St. John's, NL P.O. Box 908 St. John's, NL A1C 5M2 Tel: 709-576-8132 Email: rpower@xxxxxxxxxx Website: http://www.stjohns.ca/ ___________________________________________________________________________ Success is going from failure to failure without a loss of enthusiasm. - Sir Winston Churchill Tony Carolla <carolla@xxxxxxxxx> Sent by: rpg400-l-bounces@xxxxxxxxxxxx 21/12/2004 03:39 PM Please respond to RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> To RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> cc Subject The best approach... I have a lookup inquiry module I am building, and I am not sure what the best approach is. I usually build this type of application with a parameter format, which allows them to put in their search criteria, then a sfl/sflctl format pair that shows them the results. To choose different parms, they simply press F12, and are taken back to the parm format, yadda yadda yadda, until they press F3 But I would like this one to be different. I want to have a top section of the screen that allows them to enter search criteria, and a bottom section of the screen that allows selection of items in a sub-file of the entries that are found. Entry of either a character on a subfile line takes them to a detail screen format, and entry of new parameters in the top section rebuilds the subfile in the bottom section. I started thinking of using window-bordering, and making a top format window for entry, a middle format window for the subfile control record, a lower middle format window for the subfile, and a bottom format window for F-key and instruction line. But I am not sure, if I use the selection parms and exfmt the subfile, and the user changes the top format window selection parameters, will I receive these in the DSPF field buffers? Or will only the subfile records change? Is there a better way to do this? Can you have input fields in the SFLCTL format? -- "Enter any 11-digit prime number to continue..." -- 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.
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.