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



Yes you can do a free format exsr.

And while you can jump in/out of free it can look messy.  For example, how
many would have bothered with /free in this sample?



     H/DEFINE HSpec
     H/COPY ROUTINES/QRPGLESRC,HSPEC1
     H/COPY ROUTINES/QRPGLESRC,HSPEC2
     H/UNDEFINE HSpec

     F/TITLE EDG306A HMI copy VD files to PL files
     F*****************************************************************
     F* Copyright   Group Dekko Services, LLC     2001
     F*****************************************************************
     F*
     F*  Program ID          -    EDG306A
     F*  Application ID      -    EDG306A
     F*  Application Name    -    HMI copy VD files to PL files
     F*  Date Generated      -    Aug 29, 1901
     F*
     F*****************************************************************
     F*  Program Narrative
     F*
     F*  (name removed) Group Dekko International, Inc.
     F*
     F*  This program was created with ASSET in Application set name
     F*  EDIMFGCD.
     F*
     F*  Purpose:  Copy VD* records to PL* records then delete VD* records.
     F*
     F*  Modifications:
     F*
     F*  MG001 - 10-24-00  Correct SQL insert statement for PLHEAD.  When
the
     F*                    program was ran an error was log as 'Duplicate
     F*                    record key in member PLHEAD.'  This was do to
the
     F*                    fact that PO# 00708 now went to 2 separate plant
and
     F*                    the SQL statement didn't allow for this.
     F*
      * 09/05/01 by R.Berendt, CCP    Group Dekko Services, LLC
      *          Rewrote in complete ILE

     F*****************************************************************
     F*  Function Of Subroutines
     F*
     F* SFILE - process files

     D EDG306ARB       PR
     D  RtParm                        1A
     D  Plant                        10A

     D EDG306ARB       PI
     D  RtParm                        1A
     D  Plant                        10A

     D vdlineds      E DS                  extname(vdline)

     D Plant7          S                   like(hlff1)
     D Count           S              5P 0

     C/FREE

       Plant7=Plant;
       VdlPo=*blank;

      /END-FREE

     C/EXEC SQL
     C+ declare V1 cursor for
     C+  select vdlpo
     C+         from vdline where hlff1 = :Plant7
     C+         group by vdlpo
     C/END-EXEC

     C/EXEC SQL
     C+ open V1
     C/END-EXEC

     C/EXEC SQL
     C+ fetch V1 into :VDLPO
     C/END-EXEC

     C/FREE
       dow sqlcod=*zeros;

       count=*zeros;
      /END-FREE

     C/EXEC SQL
     C+ select count(*) into :COUNT from plline where pdlpo=:VDLPO
     C/END-EXEC

     C/FREE
       if count=0;
       exsr sfile;
       EndIf;
      /END-FREE

     C/EXEC SQL
     C+ fetch V1 into :VDLPO
     C/END-EXEC

     C/FREE
       EndDo;
      /END-FREE

     C/EXEC SQL
     C+ close V1
     C/END-EXEC

     C/FREE
       *inlr=*on;
       return;

      /END-FREE

      /EJECT
     C*****************************************************************
     C* SFILE - process files
     C*****************************************************************
     C     SFILE         BEGSR

     C/EXEC SQL
     C+ insert into plline
     C+   (select * from vdline where hlff1 = :PLANT7
     C+                         and   vdlpo = :VDLPO)
     C/END-EXEC

     C*EXEC SQL
     C* insert into plline2
     C*   (select * from vdline2
     C*    where (vdlpo concat h2item)
     C*          in (select (pdlpo concat plitem) from plline))
     C*END-EXEC

     C*EXEC SQL
     C* insert into plline2
     C*  (select * from vdline2 a
     C*    where exists (select * from plline b
     C*          where a.vdlpo = b.pdlpo and a.h2item = b.plitem))
     C*END-EXEC

     C/EXEC SQL
     C+ insert into plline2
     C+   (select * from vdline2
     C+    where (vdlpo concat h2item)
     C+    in (SELECT  a.vdlpo  concat  a.h2item
     C+    FROM  vdline2  a  INNER JOIN  plline  b
     C+    ON  a.vdlpo  concat  a.h2item  =  b.pdlpo  concat  b.plitem))
     C/END-EXEC

     C/EXEC SQL
     C+ insert into plhead
     C+   (select * from vdhead
     C+       where vdhpo in (select pdlpo from plline)
     C+         and vdhpo=:VDLPO)
     C/END-EXEC

     C/EXEC SQL
     C+ delete from vdline
     C+   where hlff1 = :PLANT7 and vdlpo=:VDLPO
     C/END-EXEC

     C/EXEC SQL
     C+ delete from vdline2
     C+   where (vdlpo concat h2item) not
     C+         in (select (vdlpo concat hlitem) from vdline)
     C/END-EXEC

     C/EXEC SQL
     C+ delete from vdhead
     C+   where vdhpo not in (select vdlpo from vdline)
     C/END-EXEC

     C     $SFILE        ENDSR

Rob Berendt

==================
A smart person learns from their mistakes,
but a wise person learns from OTHER peoples mistakes.



                    "Phil"
                    <sublime78ska@yah       To:     <rpg400-l@midrange.com>
                    oo.com>                 cc:
                    Sent by:                Fax to:
                    rpg400-l-admin@mi       Subject:     RE: Free format vs SQL
                    drange.com


                    09/06/2001 11:25
                    AM
                    Please respond to
                    rpg400-l






Rob,

I was responding to Aaron's post about how he likes how java does it.  I
don't see much of a difference.

I put all my embedded sql into subroutines (almost always - there are
exceptions).  Therefore, using /FREE should have no impact at all (unless
you can't EXSR in a /FREE block - I'm still at V4R5).  I showed that with
the example I posted.

IMHO:
I don't think the /EXEC SQL directive needs to be allowed within a /FREE
directive.  What's the difference between:

 /FREE
 /ENDFREE
 /EXEC SQL
 /END-EXEC

and

 /FREE
 /EXEC SQL
 /END-EXEC
 /ENDFREE

If you're already using embedded sql you're more than used to needing an
/EXEC SQL block for each sql statement anyway.  (Also, I believe not all
opcodes can be used within a /FREE block anyway?  Not sure.)

If some programmers won't use /FREE because they can't nest /EXEC SQL in it
then I think they're just looking for an excuse.  If /FREE has merit this
shouldn't get in the way.

Phil





> -----Original Message-----
> From: rpg400-l-admin@midrange.com [mailto:rpg400-l-admin@midrange.com]On
> Behalf Of rob@dekko.com
> Sent: Thursday, September 06, 2001 11:51 AM
> To: rpg400-l@midrange.com
> Subject: RE: Free format vs SQL
>
>
>
> Uh, Phil,
>
> What problem are you trying to solve?  Maybe I lost the thread here, but
I
> though we were working on why we needed SQL to be free formatted, or, how
> to work with it in the short term.  Meaning, as potential workarounds,
how
> to keep your code free format and stick the sql into a subroutine or
> subprocedure.
>
> Rob Berendt
>


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
or email: RPG400-L-request@midrange.com
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.