| 
 | 
Here this should help.... Should I include a nominal fee LOL... Thanks, Tommy Holden -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of steema@xxxxxxxxxxxxx Sent: Tuesday, January 31, 2006 2:37 PM To: RPG programming on the AS400 / iSeries Subject: RE: The Dark Side of the Do Loop Sorry about that a bit of a false positive. I was calling a the subroutine again from the other sub. So I have to make a few of the same subs. There should be a better way. IOW, I am checking for my first invoice in the Comment field. I find one, now I scan back till the first blank, this is my start of the inv '#' (can be mix alpha and num.). Then in a sub. I move the inv. into output. now I have to look for a second, third, etc... > With DOU the check on the criteria is performed at the end of the do > loop. Perchance you have an iter prior to your enddo that is causing > this? If so then best bet is to immediately after *iin30 is on execute > the leave opcode OR....change to a DOWne *ON which will check at the > start of the do loop. > > > Thanks, > Tommy Holden > > > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of steema@xxxxxxxxxxxxx > Sent: Tuesday, January 31, 2006 2:23 PM > To: RPG programming on the AS400 / iSeries > Subject: The Dark Side of the Do Loop > > I have a subroutine that is predicated on a Doueq. > > This cond. is met, yet the program keeps going back into there at the > first ELSE point, then it goes back to the prev. ENDSR. *in30 has been > set > on. All of this, shows up in my debugging. > > IOW, it is stuck. I cannot understand how to unravel this. > > > c endsr > c rest begsr > c *in30 doueq *on > c eval a = j + 10 > c er(V) scan alphc:a fl1 2 0 > c if %found > c exsr movar > c leave > c else > -- > 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. > >
     d alphas          c                   Const('ABCDEFGHIJKLMNOPQRSTUVWXYZ+
     d                                     abcdefghijklmnopqrstuvwxyz ')
     d alphameric      c                   Const('ABCDEFGHIJKLMNOPQRSTUVWXYZ+
     d                                     abcdefghijklmnopqrstuvwxyz0123456+
     d                                     789')
     d numbers         c                   Const('0123456789')
     d Found_It        s             10i 0
     d Start           s             10i 0
     d End             s             10i 0
     d Invoice1        s             11a
     d Invoice2        s             11a
     d Invoice3        s             11a
     d Comment         s             40a
     DSpecChars        c                   Const(',.#@!$%¢&*()-_=+";:/?><`~\|+
     D                                     ''')
     DBlanks           c                   Const('                            ')
     d Done            s               n   Inz(*Off)
     c                   eval      comment =
     c                             'INVOICES XTC05F008L AND XTC05F012L'
     c*                            'INVOICE #''S XSC04H008L & XTC04H021L'
     c*                            'INVOICE#''S 2107071, 2107073 & 2107079'
     c                   eval      comment=%Xlate(specchars:blanks:comment)
     c                   Eval      Start=1
     c                   DoU       Done
     c                   Eval      Found_It=%Check(Alphas:Comment:Start)
     c                   If        Found_It>0
     c                   Eval      Start=%CheckR(Alphameric:Comment:Found_It)
     c                   Eval      End=%Check(Alphameric:Comment:Found_It)
     c                   If        (End-Start)<=11
     c                   Select
     c                   When      Invoice1=*Blanks
     c                   Eval      Invoice1=%Subst(Comment:Start+1:End-Start)
     c                   When      Invoice2=*Blanks
     c                   Eval      Invoice2=%Subst(Comment:Start+1:End-Start)
     c                   When      Invoice3=*Blanks
     c                   Eval      Invoice3=%Subst(Comment:Start+1:End-Start)
     c                   Leave
     c                   EndSl
     c                   Eval      Start=Start+(End-Start)
     c                   Else
     c                   Eval      Start=Start+1
     c                   EndIf
     c                   If        Start>33
     c                   Eval      Done=*On
     c                   EndIf
     c                   EndIf
     c                   EndDo
     c                   eval      *inlr=*on
     c                   return
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.