× 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 believe it's because you have variables defined on the "O" specs that
are not globally defined...#trans & #foot for example appears to be
local only to that one procedure. 
Try defining them globally & recompile.

Thanks,
Tommy Holden


-----Original Message-----
From: rpg400-l-bounces+tommy.holden=hcahealthcare.com@xxxxxxxxxxxx
[mailto:rpg400-l-bounces+tommy.holden=hcahealthcare.com@xxxxxxxxxxxx] On
Behalf Of Duane Kehoe
Sent: Wednesday, October 26, 2005 1:56 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: embedded sql, procedure, and report output

   Thanks and sure Scott the section of code in question is below(ignore
   formatting issues caused by copy/paste).  I did try having the 'O'
specs
   before any 'P' specs however then I can not get past the V5R2
   precompiler(maybe I am just not setting the right options on the
compile
   command??).  I have tried moving the 'O' specs around a bit(per
previous
   email suggestions) without success.  The funny thing to me is I have
other
   (sub)procedures not of SQLRPGLE type which work fine in the order
that
   this source is in.  Thanks for your help.

        h NOMAIN
        fkstrl     if   e           k disk    usropn
        fksnml     if   e           k disk    usropn
        frtlavgftw if   e           k disk    usropn
        Frtlavgfts2cf   e             workstn usropn
        Fprt198    o    F  198        PRINTER OFLIND(*INOF) usropn
         **********************************
         * Procedure Prototypes Copy Book *
         **********************************
         /include rtlavgftpr
         **********************************
         * Output Specs for Detail Report *
         **********************************
        Oprt198    e            heading     3
        O                                           10 'RTLSOORDP'
        o                                           68 'Retail Special'
        O                                           89 'Order Shipped
Report'
        O          e            heading     1
        O                                           08 'DATE:'
        O                       *DATE         Y     18
        O                                          125 'PAGE:'
        O                       PAGE               130
        O          e            heading     1
        O                                           15 'Store / Name'
        O                                           30 'Employee'
        O                                           50 '# of Trans'
        O                                           70 '# of Footwear'
        O                                          100 'Average(%)'
        O          e            detail      1
        O                       store               20
        O                       employee            30
        O                       #trans              50
        O                       #foot               70
        O                       average            100
        O          e            break       2
        O                                          120
'********************'
        O                                          100
'********************'
        O                                           80
'********************'
        O                                           60
'********************'
        O                                           40
'********************'
        O                                           20
'******************'
        P rtlavgprt       B                   EXPORT
        D rtlavgprt       PI
        D  st_rng1                       3p 0
        D  st_rng2                       3p 0
        D  strdt                          d
        D  enddt                          d
         ******************
         *Data Structures *
         ******************
         * KSWMPMY File layout for embedded sql
        dkswmpmy        e ds
         ***********************
         * Procedure Variables *
         ***********************
        dfirstpage        s               n   inz(*on)
        dstore            s             13a   inz(*blanks)
        demployee         s             25a   inz(*blanks)
        d#trans           s              5p 0 inz(0)
        d#foot            s              5p 0 inz(0)
        daverage          s              5p 2 inz(0)
        dtmpstrdt         s              8p 0 inz(0)
        dtmpenddt         s                   like(tmpstrdt)
        dtmpsp1ss         s              5p 0 inz(0)
        dspecialorder     s              1a   inz('J')
        dfirstrun         s               n   inz(*on)
        dsavstr           s              3p 0 inz(0)
        dsavemp           s              5p 0 inz(0)
        dsavtrans#        s              6p 0 inz(0)
        di                s              3p 0 inz(0)
        dbrkrpt           s               n   inz(*off)
        dleavewin         s               n   inz(*off)
        drtltotft         s              9p 0 inz(0)
        drtltottrans      s              9p 0 inz(0)
        dstrtotft         s                   like(rtltotft)
        dstrtottrans      s                   like(rtltottrans)
         /free
          open kstrl;
          open ksnml;
          open rtlavgftw;
          open rtlavgfts2;
          open prt198;
          exsr builddata;
          dow not leavewin;
            exfmt answin;
            select;
              other;
                leavewin = *on;
            endsl;
          enddo;
          close kstrl;
          close ksnml;
          close rtlavgftw;
          close rtlavgfts2;
          close prt198;
          *inlr = *on;
 
//////////////////////////////////////////////////////////////////
          // BUILDDATA Subroutine - Handles collection of data for
report //
 
//////////////////////////////////////////////////////////////////
          begsr builddata;
            i = 1;
            tmpstrdt = %DEC(%char(strdt:*iso0):8:0);
            tmpenddt = %DEC(%char(enddt:*iso0):8:0);
         /end-free
        c/exec sql declare sales cursor for
        c+  select * from kswmpmy where divss = 'F' and
        c+                             (st#ss >= :st_rng1 and st#ss <=
   :st_rng2
        c+                             and d07ss >= :tmpstrdt
        c+                             and d07ss <= :tmpenddt) and
        c+                             (o27ss <> :specialorder) and
        c+                             (st#ss <> 500)
        c+                        order by st#ss, sp1ss, tktss
        c/end-exec
        C/EXEC SQL
        C+          WHENEVER NOT FOUND GOto eofsales
        C/END-EXEC
        c/exec sql
        c+  open sales
        c/end-exec
        c                   dow       sqlcod = 0
        c/exec sql
        c+ fetch sales into :kswmpmy
        c/end-exec
         /free
              // test for house account cashier
              tmpsp1ss = %dec((%char(st#ss) + '99'):5:0);
              if (sp1ss = tmpsp1ss);
                iter;
              endif;
              // test for return transaction
              chain (st#ss:sp1ss:tktss) rtlavgftw;
              if %found(rtlavgftw);
                iter;
              endif;
              if (sp1ss <> savemp);
                if not firstrun;
                  average = #foot / #trans;
                  strtottrans += #trans;
                  strtotft += #foot;
                  exsr print;
                  #trans = 0;
                  #foot = 0;
                  // get employee name
                  chain (sp1ss) ksnml;
                  if %found(ksnml);
                    employee = spnsn;
                  endif;
                endif;
              endif;
              if (st#ss <> savstr);
                if not firstrun;
                  brkrpt = *on;
                  savstr = st#ss;
                  #trans = strtottrans;
                  #foot = strtotft;
                  monitor;
                    average = strtotft / strtottrans;
                    on-error;
                      // no op
                  endmon;
                  exsr print;
                  #trans = 0;
                  #foot = 0;
                  strtottrans = 0;
                  strtotft = 0;
                  // get store name
                  chain (st#ss) kstrl;
                  if %found(kstrl);
                    store = %char(st#ss) + '/' + stnks;
                  endif;
                endif;
              endif;
              exsr loadsumdta;
              if firstrun;
                savstr = st#ss;
                firstrun = *off;
              endif;
            enddo;
         /end-free
        c     eofsales      tag
         /free
          // todo need to report the last employee and store
            #trans = strtottrans;
            #foot = strtotft;
            monitor;
              average = strtotft / strtottrans;
            on-error;
              // no op
            endmon;
            exsr print;
            strtottrans = 0;
            strtotft = 0;
            except break;
            store = 'Grand Total:';
            #trans = rtltottrans;
            #foot = rtltotft;
            monitor;
              average = rtltotft / rtltottrans;
            on-error;
              // no op;
            endmon;
         /end-free
        c/exec sql
        c+ close sales
        c/end-exec
         /free
          endsr;
         
 
////////////////////////////////////////////////////////////////////////
/
          // LOADSUMDTA Subroutine - Handles loading of data for summary
   display //
         
 
////////////////////////////////////////////////////////////////////////
/
          begsr loadsumdta;
            if savtrans# <> tktss;
              savtrans# = tktss;
              rtltottrans += 1;
              strtottrans += 1;
            endif;
            rtltotft += u51ss;
            strtotft += u51ss;
          endsr;
          //////////////////////////////////////////////
          // PRINT Subroutine - Handles report output //
          //////////////////////////////////////////////
          begsr print;
            if firstpage or *inof;
              except heading;
              firstpage = *off;
              *inof = *off;
            endif;
            if brkrpt;
              except break;
              brkrpt = *off;
            endif;
            except detail;
          endsr;
         /end-free
        p rtlavgprt       e

   Scott Klement wrote:

       If the "O" specs are not to be used globally then it would seem
that
       they should come between your "C" specs & the  procedure end
spec....

     O specs are always global.    Files in RPG are global -- you can't
     declare a file that's local to a subprocedure.  (At least, not
using
     standard RPG operations.  You can do it with APIs, but that's
another
     topic altogether)

     Since files are always global, so are O specs.  They have to go
before
     the first P spec in the program.

     Duane, can you possibly post your code, or at least part of it,
since
     I'm struggling to get a mental picture of what it looks like...

   --

   Weyco Group -             
                             
       Florsheim, Brass Boot, Nunn Bush, Stacy Adams
   Duane Kehoe                       Phone # 414.908.1814 
   EC / Programmer / Analyst           Fax # 414.908.1601 
                             Email: dkehoe@xxxxxxxxxxxxxx
--
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 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.