× 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.



I always eval the subfile size to a field for use both in the program and in the screen format.

A                           SFLSIZ( &SF1RECS )
A    SF1RECS        5S 0P

If you use a scroll bar you'd want the subfile size anyway to set the proper size of the cursor in the scrollbar. But besides that (since no one here uses the scrollbar) knowing the number of records in the subfile is pretty useful anyway. There's other places & times that its useful besides the for loop.




Alan Shore wrote:
Thanks Booth.
Hhhhmmmmm - interesting
If I am not mistaken, there could be an inherent problem in this design.
If the sub-file is a page at a time sub-file, SFLSIZ will definitely
contain the correct number of subfile records.
However - any other type of subfile SFLSIZ may contain any value from, 1
more than SFLPAG thru and including 9999.
Therefore your chain to the subfile may result in either you NOT reading
ALL the subfile records
OR
reading PAST the last subfile record.
Am I right on this?



Alan Shore

NBTY, Inc
(631) 244-2000 ext. 5019
AShore@xxxxxxxx




rpg400-l-bounces@xxxxxxxxxxxx wrote on 10/04/2006 01:46:29 PM:

Its cleaner.  Not setting the counter to 1, No adding to the counter,
and the counter is the key to chain.  Less chance to fat-finger, which
for me is a boon.

In this case, 6 lines vs. 10 lines (they forgot one endif) if I counted
right, and only one structure instead of three.



Alan Shore wrote:
Hi Booth
Is there any advantage on using a for loop over a do loop, or is it
just
personal preference?
If there is an advantage, I am always willing to learn new things.



Alan Shore

NBTY, Inc
(631) 244-2000 ext. 5019
AShore@xxxxxxxx


rpg400-l-bounces@xxxxxxxxxxxx wrote on 10/04/2006 12:38:40 PM:

I like a for loop:

C             for    Subfilerrn = 1 to SflSiz
C  Subfilerrn chain  Subfile
C             if     Option = 'X'
C             exsr   ProcessData
C             endif
C             endfor

Where SflSize equals the size of the subfile (you probably have that
as
a known number already).



Alan Shore wrote:
Sorry Phil I dont know what happened there. Please see revised code
c                 eval        Subfilerrn = 0
c                 dou         not %found(Workstn)
c                 eval        Subfilerrn = Subfilerrn + 1
c     Subfilern   chain       Subfile
c                 if          %found(Workstn)
c                 if          Option = 'X'
C                 exsr  processdata
C                 endif
c                 enddo

rpg400-l-bounces@xxxxxxxxxxxx wrote on 10/04/2006 12:30:35 PM:

Hi Phil

the following code should show you what is needed.

c                       eval        Subfilerrn = 0
c                       dou         not %found(Workstn)
c     Subfilern   chain       Subfile
c                       if          %found(Workstn)
c                       if          Option = 'X'
C           exsr  processdata
C           endif
c           enddo
Where Workstn is your worstation file name
subfile     is the subfile record
Subfilerrn is the rrn associated with that subfile (or any other
counter
Alan Shore

NBTY, Inc
(631) 244-2000 ext. 5019
AShore@xxxxxxxx
rpg400-l-bounces@xxxxxxxxxxxx wrote on 10/04/2006 11:59:13 AM:

Oops it worked now! But tell me anyways if you have a moment how
you
do
this read. I have only done subfiles that displayed rows of data
and
accepted the 'X' (or 2/4/5) next to the record the user could
update.
Then I display another format w/ this record for them to change.
So
I
DID do a READC looking for this 'X'. thus, this way of changing
data
on
the rows directly is new to me.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Booth Martin
Sent: Wednesday, October 04, 2006 11:53 AM
To: RPG programming on the AS400 / iSeries
Subject: Re: Subfile problem

Thats why I stopped using READC.  Just too many headaches.  Read
the
whole subfile.  The performance hit is minimal, if even noticeable.

Phil Kestenbaum wrote:
The problem I am having is to reset the subfile. IOW, I have a
routine
that checks each line via a READC, that is doing a  dow       not
%eof
But it is NOT going through and checking upon hitting enter, the
indicators are controlling. Because, EOF has been hit. I am not
sure
how
to reset the subfile.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of
Michael_Schutte@xxxxxxxxxxxx
Sent: Wednesday, September 27, 2006 4:59 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: Subfile problem

If I am understanding you correctly,

You should only have to reset the indicator for the line once the
error
has
been corrected.  On your "else", you need to update the subfile
record
there too because you are changing the value of *In60.


Michael Schutte

Dig in! Bob Evans New Knife & Fork Sandwiches - This much
homestyle
goodness demands a Knife & Fork!


rpg400-l-bounces@xxxxxxxxxxxx wrote on 09/27/2006 04:50:50 PM:

HI, I have a subfile program that when there is an error, on say
the
third line, on the first pass, the cursor is being put on the
third
line
correctly, but subsequently, the cursor will be placed on the
first
line. Let's say if I correct the third line but make an error on
first,
then correct the first and re-error on third, it then positions
on
FIRST. I appear to be missing code that would correctly align the
cursor
to the error line, or perhaps I need to clear the subfile on each
ENTER?
The code is:



C     prolin       begsr

C                   readc     sfr1
*
  *

C                   dow       not %eof

 *

C                   if        s6sqty =  0

c

C                   eval      *in60 = *on

C                   eval      *in59 = *on



C                   eval      *in74 = *on

C                   update    sfr1

c                   else

C                   eval      *in60 = *off

c                   endif

C                   eval      *in74 = *off

c*

c                   readc     sfr1



C                   enddo

C                  endsr



Ind. 60 is to position the cursor:



A  60                                  DSPATR(PC)


This message contains information proprietary to our company. It
is
intended to be read only by the individual or entity named above
or
their designee.
Any distribution of this message or the information contained
herein
without written permission from our company is strictly
prohibited.
If the reader of this message is not the intended recipient or an
agent responsible for delivering it to the intended recipient,
you
are hereby notified that you have received this document in error
and that any review, dissemination, distribution, or copying of
this
message is strictly prohibited. If you have received this
communication in error, please notify us immediately by e-mail,
and
delete the original message.


--
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 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 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 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 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 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 thread ...

Follow-Ups:
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.