I disagree.  You can use the qualified with embedded SQL. I use it all the 
time. 
#2 and #3 are good.  Here is an example.  This was written before free for 
D specs were available:
     D C1_t            DS                  qualified template
     D  Year                               like(GLH_t.LHYEAR)
     D  Acct                               like(GCR_t.CRSG03)
     D  AcctDesc                           like(GSV_t.SVLDES)
     D  CostCenter                         like(GCR_t.CRSG02)
     D  Balance                            like(GLH_t.LHDRAM)
     D  Part                         35
     D  Cust                         16
     D GetRows         S              5u 0 inz(RcdBfr)
     D C1a             DS                  likeds(C1_t) dim(RcdBfr) 
       exec sql declare C1 cursor for
         select Year, Acct,
                ifnull((select SVLDES from GSVL01
                          where SVSGMN='ACCOUNT'
                            and SVSGVL=S4.Acct
                          fetch first row only),'') as AcctDesc,
                CostCenter,
                sum(Balance),
                Part, Cust
           from UR5008D3 S4
           group by Year, CostCenter, Acct, Part, Cust
           order by Year, CostCenter, Acct, Part, Cust;
       exec sql open C1;
       RtnInd1=$FetchC1(C1);
     P
**********************************************************************
     P $FetchC1        B
     P*
     P
**********************************************************************
     D $FetchC1        PI              N
     D  C1                                 likeds(C1_t)
     D
     D RcdBfr          C                   100
     D idx1            S              5u 0 static
     D RtnCnt          S              5u 0 static
     D GetRows         S              5u 0 inz(RcdBfr)
     D C1a             DS                  likeds(C1_t) dim(RcdBfr) static
     D
       if idx1>RtnCnt or idx1=0;
         exec sql fetch C1 for :GetRows rows into :C1a;
         RtnCnt=SQLER3;
         if RtnCnt=0;
           clear idx1;
           return *off;
         else;
           idx1=1;
         endif;
       endif;
       eval C1=C1a(idx1);
       idx1+=1;
       return *on;
     P $FetchC1        E
___________________________________
Darren Strong
Dekko
From:   Paul Therrien <paultherrien@xxxxxxxxxxxxxxxxxx>
To:     "RPG programming on the IBM i (AS/400 and iSeries)" 
<rpg400-l@xxxxxxxxxxxx>
Date:   07/05/2017 03:30 PM
Subject:        Re: How do I do a SQL select into a data structure when 
specifying      fields?
Sent by:        "RPG400-L" <rpg400-l-bounces@xxxxxxxxxxxx>
This should get you started... 
1. Remove the 'qualified' (sql doens' work with that) 
2. Use a cursor and 
3. Fetch cursor for 100 rows. 
Paul 
On 2017-07-05 14:58, DFreinkel wrote:
I am reading data from a file into a data structure.
T_data ds qualified dim(100)
Fielda like(fielda)
Fieldb like(fieldb)
Fieldc like(fieldc)
Select fielda, fieldb, fieldc into :T_data
From myTable;
Compilers tells me SL0312 T_data is not defined or usable.
What am I doing wrong or how would I do this?
I do not want to read 1 record at a time.
Thanks
Darryl Freinkel 
Darryl Freinkel
iPad
As an Amazon Associate we earn from qualifying purchases.