|
Ok...The other thing I noticed is that you are selecting two fields in the cursor Freight. Your DS has around 12 fields...eliminate the extra fields. Regarding performance...change your Where clause to: WHERE FHDDAT between :FDATE AND :TDATE. This statement is a little bit easier to code and to follow. I also believe it will help from a performance standpoint. This statement is inclusive of the FROM and the TO date. I also noticed you have DISTINCT coded. I'm assuming that you have multiple FHOT, FHPRO and you are trying to pair these down. If not...nix the distinct. Do you have an index already ordered by FHOT & FHPRO? The query optimizer will probably require the addition of FHDDAT to the index also. Once you get the program to compile...place it in debug and place a breakpoint after the OPEN statement....check the job log...it will tell you which access path it used or it will tell you what index it needs to perform efficiently. We'll keep plugging until we get it. Regards, Russell Conerly Tupelo, MS > > > I used OCCURS instead of DIM and I still received the same error. Here is > the changed code: > > * SQL block FETCH array data structure > D FHSQLREC DS OCCURS(50) > D FHOT LIKE(AFHOT) > D FHPRO LIKE(AFHPRO) > D FHDT LIKE(AFHDT) > D FHDDAT LIKE(AFHDDAT) > D FHPUDT LIKE(AFHPUDT) > D FHDADT LIKE(AFHDADT) > D FHSCD LIKE(AFHSCD) > D FHCCD LIKE(AFHCCD) > D FHCCT LIKE(AFHCCT) > D FHCST LIKE(AFHCST) > D FHCZIP LIKE(AFHCZIP) > D FHDTIM LIKE(AFHDTIM) > > Could I be using SQL the wrong way? Does anyone have a suggestion on a > better way to handle what I'm trying to do? > > Before I tried using embedded SQL, I had the program in a READ loop. The > file it READs has millions of records in it. It took an hour or more to > read all the > records and spit out a report. I had heard that I should replace the READ > with SQL to increase performance. > > Using the information below, would anyone have any ideas of how I can > adjust my SQL to do what I need it to do? > > or > > If , CREATE VIEW or CREATE TABLE would be a better method, please show me > how you would use the code below to do it. > > Thanks, > > Frank > > > > > > "Russell Conerly" <rconerly@xxxxxxxxxxx>@midrange.com on 04/04/2005 > 04:13:09 PM > > Please respond to RPG programming on the AS400 / iSeries > <rpg400-l@xxxxxxxxxxxx> > > Sent by: rpg400-l-bounces@xxxxxxxxxxxx > > > To: "RPG programming on the AS400 / iSeries" <rpg400-l@xxxxxxxxxxxx> > cc: > > Subject: Re: SQLRPGLE won't compile... > > > Shouldn't that have an occurs and not a DIM statement in the DS? You are > retrieving rows...I think that would be a multiple occurence DS. > > IMHO, > > Russell Conerly > Tupelo, MS > > >> >> The program below(only relevant code included), won't compile. I get > this >> one error: >> "Position 49 Host structure array FHSQLREC not defined or not usable." >> I've marked the section of code that is >> giving the message with "ERROR". >> >> Can anyone see what the problem is? Also, please let me know if I'm not >> using the embedded SQL correctly. >> >> TIA, >> >> Frank >> > ====================================================================================== > >> ?* SQL block FETCH array data structure >> D FHSQLREC DS QUALIFIED >> D FHSQLFLDS DIM(50) LIKE(DUMMY) >> D FHOT LIKE(DUMMY.FHOT) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS) >> D FHPRO LIKE(DUMMY.FHPRO) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHDT LIKE(DUMMY.FHDT) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHDDAT LIKE(DUMMY.FHDDAT) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHPUDT LIKE(DUMMY.FHPUDT) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHDADT LIKE(DUMMY.FHDADT) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHSCD LIKE(DUMMY.FHSCD) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHCCD LIKE(DUMMY.FHCCD) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHCCT LIKE(DUMMY.FHCCT) > INZ(*BLANKS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHCST LIKE(DUMMY.FHCST) > INZ(*BLANKS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHCZIP LIKE(DUMMY.FHCZIP) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> D FHDTIM LIKE(DUMMY.FHDTIM) >> INZ(*ZEROS) >> D OVERLAY(FHSQLFLDS:*NEXT) >> '* >> D FHPRO LIKE(AFHPRO) >> D FHDT LIKE(AFHDT) >> D FHDDAT LIKE(AFHDDAT) >> D FHPUDT LIKE(AFHPUDT) >> D FHDADT LIKE(AFHDADT) >> D FHSCD LIKE(AFHSCD) >> D FHCCD LIKE(AFHCCD) >> D FHCCT LIKE(AFHCCT) >> D FHCST LIKE(AFHCST) >> D FHCZIP LIKE(AFHCZIP) >> D FHDTIM LIKE(AFHDTIM) >> > ============================================================================ > >> * >> > ********************************************************************** >> P GET_TERM_BILLS B >> ?* >> C IF #OT1 <> '*ALL' >> C EVAL NUM#OT1 = *ZEROS >> C #OT1 CHAIN AAL03002 >> C IF %FOUND(AAL03002) >> C EVAL NUM#OT1 = CT1TID >> C ENDIF >> C ENDIF >> ?* >> C IF #DT1 <> '*ALL' >> C EVAL NUM#ODT = *ZEROS >> C #DT1 CHAIN AAL03002 >> C IF %FOUND(AAL03002) >> C EVAL NUM#ODT = CT1TID >> C ENDIF >> C ENDIF >> ?* >> C/EXEC SQL >> C+ DECLARE FREIGHT CURSOR FOR SELECT DISTINCT FHOT, FHPRO FROM >> C+ FRL00144 WHERE FHDDAT >= :FDATE AND FHDDAT <= :TDATE ORDER BY >> C+ FHOT, FHPRO >> C/END-EXEC >> '* >> '* >> '* >> '* ---------------- >> C EVAL EOFFLG = 'N' >> C DOU EOFFLG = 'Y' >> ?* >> ERRORC/EXEC SQL FETCH FREIGHT FOR 50 ROWS INTO :FHSQLREC >> C/END-EXEC >> ?* >> C 1 DO 50 X >> ?* >> C EVAL BADDATE = 'N' >> C EVAL NEXTFLG = 'N' >> C CALLP CHK_TERM_BILLS >> ?* >> C IF BADDATE = 'Y' >> C LEAVE >> C ENDIF >> ?* >> C IF NEXTFLG = 'Y' >> C ITER >> C ENDIF >> ?* >> C CALLP CHK_SVC_QLTY >> ?* >> C CALLP POP_WORKF >> ?* >> C WRITE FREC457 >> ?* >> ?* 1 DO 50 X >> ?* >> ?* DOU %EOF(AAP030) >> ?* >> C TAG1 TAG >> ?* > > > > > -- > 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 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.