Hallo,
ich versuche mich gerade an emb SQL mit Variablenübergabe über ein dyn. Array. Ich bekomme jedoch die Fehlermeldung:
PHP-Code:
*RNF0528 20 138 004500 Index ist für einen Namen, der keine Feldgruppe ist, nicht
zulässig; der Index wird ignoriert.
Bei: Array(i)=FETCHDS
Hier der gesamte Code:
PHP-Code:
H DftActGrp(*NO) ActGrp(*CALLER)
H alwnull(*USRCTL)
D/COPY LIB/FILE,MEMBER
DAUFNEHM PR EXTPGM('SQLSAMPLE4')
D PARM1 like(Array2)
D PARM2 1A
DAUFNEHM PI
D Array like(Array2)
D fcall 1A
DArrayptr S * Inz(*Null)
DArray2 DS Dim(32767) Based(Arrayptr)
D likeds(DSLIB)
Di S 5S 0 inz(1)
Dj S 5S 0 inz(1)
DFetchds DS likeds(DSLIB)
C/EXEC SQL
C+ Declare MyCsr Cursor for
C+ Select * From LIB/FILE
C/End-Exec
C/EXEC SQL
C+ Open MyCsr
C/END-EXEC
/FREE
Arrayptr = %Alloc(%Size(Array) * i);
/END-FREE
C do *HIVAL
C/EXEC SQL
C+ Fetch MyCsr
C+ into :FETCHDS
C/END-EXEC
C if SQLCOD = 100
C or SQLCOD < *ZEROS
C eval fcall='E'
C leave
C endif
C eval Array(i)=FETCHDS
/Free
Arrayptr = %Realloc(Arrayptr: %Size(Array) * i);
/END-FREE
C eval i=i+1
C enddo
C/EXEC SQL
C+ Close MyCsr
C/END-EXEC
C return
Ich hätte auch noch eine Frage. Und zwar geht diese Übergabe so wenn das Array in VARP auch so definiert ist wie dieses?(mit dem Pointer und dim(32767) ) Oder wie müsste ich es definieren, denn ich weiß ja nicht wie groß das Array ist das ich zurückgebe. feste Werte sind schlecht weil sie entweder zu groß oder zu klein sind. Darum wollte ich es mit einem Dynamischen Array machen.
Gruß Martin
Bookmarks