× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Jerry,



If you are absolutely certain the value of x begins with 1 and ends at 67 then it seems you have one of two issues: First, the subfile is empty. Second, %found() is not set because the relative record is not in the subfile or an error occurred.



Using the following will assist you in pinpointing the issue.



1. Duplicate the source code to a test library.

2. Assign a IFNDS data structure to the display file. Additional information never hurts and there is a wealth of information in the INFDS.

3. Place a %error test just before the %found() statement and an else op code for the %found().



FOR x = 1 to #limit;



CHAIN(E) x DTU020A;



If (%error);

dump;

else;



IF %found();

(lots of code)

else;

dump;

ENDIF;



endif;



ENDFOR;



3. Compile the duplicated source into the test library.

4. Put the duplicated program in debug and add breakpoints at the %error, dump, %found() lines and the first line after (lots of code).

5. Call the duplicated program and step through the breakpoints.



This will take you all of maybe 10 minutes and you will at least determine what is going on with subfile DTU020A.



HTH,



Gary





-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jerry Adams
Sent: Thursday, January 29, 2015 6:08 AM
To: 'RPG programming on the IBM i (AS/400 and iSeries)'
Subject: RE: Old subfile no longer being processed



Booth,



Possibly. Your first suggestion (separate program or procedure) is one that

I started considering this morning while drinking my coffee. The program

isn't due until the end of February.



I just thought that someone might be able to spot an *obvious* issue. You

probably never had this problem, but sometimes I just look at code so long

that I "see" what I expect. Debugging oftentimes puts a microscope on that,

but not this time.



I've used your scroll bar technique a couple of times. My users really

liked it. But probably not this time.



Someone else (off list) suggested uploading the source for the files and

copybooks so that they could compile the program and test it. While I

appreciate the offer, I wasn't expecting that much effort on anyone's part;

just perhaps a 2nd set of eyes to find that obvious faux pas.



Jerry C. Adams

IBM i Programmer/Analyst

To be honest, I'm a liar.

--

NMM&D

615-832-2730



-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Booth

Martin

Sent: Thursday, January 29, 2015 2:00 AM

To: RPG programming on the IBM i (AS/400 and iSeries)

Subject: Re: Old subfile no longer being processed



I notice that 1 of the 2 subfile EXFMTs is in the main subroutine and the

other is in the routine that builds its subfile? Could the problem lay

there?



As a break-it-to-fix-it solution I might try adding in a line to overwrite

subfile record 1 with some fixed text, like "Can you see this?" and see if I

could make that appear. It'll most likely break something, but that in

itself might be useful.

_______________________________________________________________________

Would it be easier/more straight forward if your new piece is a stand-alone

program/procedure that is a straight forward single-subfile program (perhaps

a window), and the only change to the original program is a 4 or 5 section

of code that calls the new process? (I started using that model several

years ago just because of these kinds of surprises that broke old and

established programs.)



_____________________________________________________________________

Ye olde pitch for scroll bars: These 2 changes in your new subfile:

SFLSIZ(#LIMITE)

...

90 SFLEND(*SCRBAR *MORE)



will give your users an attractive & easy to use scroll bar.

________________________________________________________________________

fwiw, here is a window subfile with mouse-click selection.

http://martinvt.com/Subfiles/Two_Subfiles/two_subfiles.html



On 1/28/2015 8:53 PM, Jerry Adams wrote:

The code for the RPG program and the display DDS can be found at:



http://code.midrange.com/ed51927a1a.html



What seems pretty obvious is that I did make a change which affected

(adversely, as it were) the functioning of the program; it's just that

I can't see it.



I'm going to give my one good eye a rest. Tomorrow my plan is to

compile the original (production) program against the new display

format. and then test that. Then add in the new code piece-by-piece and

test each iteration.



I'm sure that, when I or one of you find the bug, it will prove to be

embarrassing. I'm reminded of the time about 40 years ago when I

spent > 2 days trying to find a program error. I finally gave up and

called in a colleague. As I'm walking through the code with him, I

mumbled something (quite obscene). I found the bug by explaining the

program to him.



Jerry C. Adams

IBM i Programmer/Analyst

--

NMM&D

615-832-2730



-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jim

Franz

Sent: Wednesday, January 28, 2015 4:20 PM

To: RPG programming on the IBM i (AS/400 and iSeries)

Subject: Re: Old subfile no longer being processed



not seeing any of the DDS code for how you handled 2 diff sfls

(SFLDSP, SFLDSPCTL, SFLCLR) and overlay keyword ?

Jim



On Wed, Jan 28, 2015 at 5:14 PM, Vinay Gavankar <vinaygav@xxxxxxxxx>

wrote:



When is the second subfile being written, before or after the first one?



Are they by any chance using the same field for Subfile Record number?



On Wed, Jan 28, 2015 at 1:37 PM, Gary Thompson

<gthompson@xxxxxxxxxxx>

wrote:



So those subfile records are not in range of 1-67 ?



-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of

Jerry Adams

Sent: Wednesday, January 28, 2015 11:33 AM

To: 'RPG programming on the IBM i (AS/400 and iSeries)'

Subject: RE: Old subfile no longer being processed



"Not working" means that the CHAIN to the subfile [%found() ] is not

confirming a hit; i.e., the code that follows it is skipped and goes

straight to the ENDFOR. The FOR loop is processed 67 times (number

of records in the subfile.



Jerry C. Adams

IBM i Programmer/Analyst

--

NMM&D

615-832-2730





-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of

John

R.

Smith, Jr.

Sent: Wednesday, January 28, 2015 11:35 AM

To: 'RPG programming on the IBM i (AS/400 and iSeries)'

Subject: RE: Old subfile no longer being processed



Any chance you turned on or off an indicator when adding subfile2

that

subfile1 needs? Maybe an indicator was initialized early (*inzsr or

somewhere) and you've change the value with subfile2.



Can you explain further what is "not working"?



-----Original Message-----

From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of

Jerry Adams

Sent: Wednesday, January 28, 2015 12:17 PM

To: 'RPG programming on the IBM i (AS/400 and iSeries)'

Subject: Old subfile no longer being processed



I am really stumped. This week I had to modify a display and

program

that

had a single subfile (#1) by adding another subfile (#2); subfile#2

is displayed and processed first. Running through subfile#2 to see

if a record is selected works fine. However, processing subfile#1

no longer works, though the code for the DDS and the RPG program

have not been changed; just preceded it with the code for subfile #2.









//****************************************************************



// SUBROUTINE - $MAINB

**



// PURPOSE - Process Price List.

**





//****************************************************************







BEGSR $MAINB;







DOW not eoj



AND not cancel;







WRITE MSGSFLB;



IF not #error;



$BuildList();



ELSE;



rrna = rrna_error;



ENDIF;



WRITE DTU020AFK;



EXFMT DTU020ACTL;



EXSR $CMsg;







IF eoj;



LEAVE;



ENDIF;







EXSR $EditA; // Code below



IF #error;



ITER;



ENDIF;







EXSR $PostList;







ENDDO;







ENDSR;







Running debug over the followinjg subroutine shows that



#Limit = 67 (the number of subfile records)



X is incremented by 1 and the FOR is executed 67 times



The CHAIN is *not* finding the subfile (DTU020A) record









//****************************************************************



// SUBROUTINE - $EditA

**



// PURPOSE - Validate the lines on Panel 'A'.

**





//****************************************************************







BEGSR $EditA;







#error = *Off;



#First = *On;



rrna_error = *Zeros;







IF #limit > *Zeros;



FOR x = 1 to #limit;







CHAIN x DTU020A;



IF %found();







(lots of code)







ENDIF;







ENDFOR;







ENDIF;







ENDSR;













As I said I added subfile#2, which uses similar processing (a FOR

loop with a CHAIN to the subfile). The CHAIN finds the subfile

record. The program then proceeds to the "old" code (above).







I have written many programs with multiple subfiles that used the

same methods and worked fine.







RRNA is the name of the subfile record number.







I know that this is going to turn out to be something simple, but I

have been staring at this since early this morning and just cannot

see it. I can post the entire RPG and DDS code, if necessary, to

code.midrange.







FWIW, this is a V5R1 system.







Jerry C. Adams



IBM i Programmer/Analyst



--



NMM&D



615-832-2730







--

This is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 is the RPG programming on the IBM i (AS/400 and 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 thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.