|
This may get you started. I took the liberty to cut out the build of
the statement. Sql_num is set at 100. The assumption was that no file
used by this program would contain more than 100 fields.
D sql_num c const(100)
D poskey s 80
D i S 5 0
DFldDS1 DS
D FldArr1 128A Dim(SQL_NUM) Inz(*Blanks)
D IndArr1 N Dim(SQL_NUM) Inz(*Off)
******************************************************************
** Prepare & Declare SQL Cursor
******************************************************************
C eval sqln = sql_num
C eval sqldabc = (sqln * %len(SQLVAR)) + 16
C/EXEC SQL
C+ INCLUDE SQLDA
C/END-EXEC
C/EXEC SQL
C+ PREPARE SQLSTMNT FROM :statement
C/END-EXEC
C/EXEC SQL
C+ DESCRIBE SQLSTMNT INTO :SQLDA USING ALL
C/END-EXEC
C/EXEC SQL
C+ DECLARE A1 CURSOR FOR SQLSTMNT
C/END-EXEC
C do 1 i
C eval SQLVAR = SQL_VAR(I)
C eval SQLDATA = %addr(FldArr1(I))
C eval SQLIND = %addr(IndArr1(I))
C eval SQL_VAR(I) = SQLVAR
C EndDo
*************************************************************
** Open Cursor and process file to build subfile
*************************************************************
C/exec sql
C+ OPEN A1
C/end-exec
C DOU SQLCOD = 100
C if sqlcod = 0
C if sqltype = 452 or sqltype = 453
C/exec sql
C+ FETCH NEXT FROM A1 INTO :choice1,:choice2
C/end-exec
C else
* If Numeric
C if sqltype = 484 or sqltype = 485 or
C sqltype = 488 or sqltype = 489
C/exec sql
C+ FETCH NEXT FROM A1 INTO :choice1N,:choice2
C/end-exec
C eval choice1 = %editc(choice1n:'Z')
C endif
C endif
C if sqlcod = 0
C eval rrn1 = rrn1 + 1
C eval *in50 = *on
C eval CHC1 = %TRIM(choice1)
C eval dspfld = CHC1 + ' ' + %trim(choice2)
C write sflrcd01
C endif
C endif
C enddo
C/exec sql
C+ close a1
C/end-exec
Maybe this will give you some direction.
Regards,
Russell Conerly
IBM Certified Specialist -
RPG IV Developer
Tupelo, MS
-------------------
> Anybody has a good running sample of a SQL DESCRIBE using SQLDA ?
> Trying to figure out how to fetch, if the column list is unknown,
> I have searched the archives, but wasn;t able to find a good sample.
> Thanks for any help in advance.
> Ali
>
> _______________________________________________
> 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-2025 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.