@Fuerchau,
ich habe mich villeicht falsch ausgedrückt; ich meinte es in etwa so:
und dann in den C-BestimmungenCode:*------------------------------------------------- ***** für SQL Statement *------------------------------------------------- D SIDX1 S 5 0 Inz(1) D SIDX2 S 5 0 Inz(1) D DS00S01L DS OCCURS(5000) D L1TXNR 6A D L1TXB1 30A * DS1PTR S * INZ(%ADDR(S00S01L)) D DS BASED (S1PTR) DS00S02L 235A DIM(5000) DESCEND D L2TXNR 6A OVERLAY(S00S02L:1) D L2TXB1 30A OVERLAY(S00S02L:*NEXT) * * ANZAHL DER FELDER ( DIM(XX) ) MUSS MIT ANZAHL IN SELECT ÜBEREINSTIMMEN !! DIND_ARRAY DS OCCURS(5000) D INDS 4B 0 DIM(12)
Code:/free #SQLSTM = 'Select TXTXNR, TXTXB1, TXTXB2, TXTXB3, TXTXB4, TXTXB5, TXTXB6, ' + 'TXTXB7, TXSTK1, TXSTK2, TXSTK3, TXKDF1 from TABD ' + 'WHERE TXSART = ''TX'' and TXFIRM = ''1'' and TXWKNR = ''000'' ' + 'and TXTXRT = ''PE'' '; /end-free * * Statement vorbereiten * C/EXEC SQL C+ PREPARE S1 FROM: #SQLSTM C/END-EXEC * * Cursor defnieren * C/EXEC SQL C+ DECLARE C1 CURSOR FOR S1 C/END-EXEC * * Cursor schliessen * C/EXEC SQL C+ CLOSE C1 C/END-EXEC * * Cursor öffnen * C/EXEC SQL C+ OPEN C1 C/END-EXEC * * alle Zeilen laden * C Eval SIDX2 = 5000 C/EXEC SQL C+ FETCH FROM C1 FOR :SIDX2 ROWS INTO :S00S01L:IND_ARRAY C/END-EXEC * C Eval I# = SQLERRD(3) * * Cursor schliessen * C/EXEC SQL C+ CLOSE C1 C/END-EXEC C Eval SIDX1 = 1 C Eval %OCCUR(S00S01L) = SIDX1 C DOW SIDX1 <= I# * Verarbeitung C Move L1TXNR S0PERS# C Movel L1TXB1 S0NAME * C EVAL SIDX1 = SIDX1 + 1 C EVAL %OCCUR(S00S01L) = SIDX1 C EndDo
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks