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



Hello Phil,

Since no-one else has been able to properly assist you I decided to take a
look at this.  There are a number of things wrong with your code:

        1/ The SQL precompiler does not understand typedefs and that is
why the structure is flagged as unusable.  If you look closely at the SQL
compiler listing you'll see:

 Data Names                    Define    Reference
 hostDS                           ****     31

        the **** indicate the data name has NOT been defined.

        2/ You are attempting a multi-row fetch so you should tell the
compiler.  Specify FOR 10 ROWS on the FETCH since your structure has room
for 10 rows.

        3/ I also wouldn't use the word CURSOR for the cursor name since
CURSOR is an SQL reserved word.

        4/ Although not required, host variables should be defined within
BEGIN DECLARE and END DECLARE blocks to indicate they are used by SQL.

        5/ The example you show as being from the SQL Host Programming
manual, isn't as it is in the manual.  In my version the example on page
26 is a single record fetch and it does not use a typedef for the
structure.  The multi record fetch example is on page 30 and although
incomplete does show the "FOR n ROWS" clause and the use of a struct
rather than a typedef.  The example is incomplete so I have completed it
and altered it to work with your supplied EMPLOYEE file.

EXEC SQL BEGIN DECLARE SECTION;
_Packed struct {char first_initial;
                char middle_initial;
                _Packed struct {short lastname_len;
                                char lastname_data[15];
                               } lastname;
                double total_salary;
               } employee_rec[10];
 struct { short inds[4];
 } employee_inds[10];
EXEC SQL include SQLCA;
EXEC SQL END DECLARE SECTION;
int main() {
 EXEC SQL DECLARE C1 CURSOR FOR
 SELECT SUBSTR(FIRSTNAME,1,1), MIDINIT, LASTNAME,
 SALARY+BONUS+COMM
 FROM CORPDATA.EMPLOYEE;
 EXEC SQL OPEN C1;
 EXEC SQL FETCH C1 FOR 10 ROWS INTO :employee_rec:employee_inds;
}

Regards,
Simon Coulter.
--------------------------------------------------------------------
   FlyByNight Software         AS/400 Technical Specialists
   http://www.flybynight.com.au/

   Phone: +61 3 9419 0175   Mobile: +61 0411 091 400        /"\
   Fax:   +61 3 9419 0175   mailto: shc@flybynight.com.au   \ /
                                                             X
                 ASCII Ribbon campaign against HTML E-Mail  / \
--------------------------------------------------------------------



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.