CBL TRUNC(OPT), LIST, NOOFFSET IDENTIFICATION DIVISION. PROGRAM-ID. U441RLF. *---------------------------------------------------------------* * function name............: U441RLF * author...................: Ralf Seidler, cps4it * date of implementation...: 06.11.2008 * interface-name...........: none * operation-name...........: none * * description..............: Testprogramm COBOL Multi-Row-Fetch * im DB2 * changes..................: tt.mm.jjjj name * - text *---------------------------------------------------------------* ENVIRONMENT DIVISION. DATA DIVISION. *---------------------------------------------------------------* WORKING-STORAGE SECTION. *---------------------------------------------------------------* 01 FILLER. 05 FILLER PIC X(20) VALUE 'U441RLF-BEGINN-WS'. 05 COMP-T PIC X(16) VALUE SPACES. 01 ZEILE PIC X(80). 01 FILLER REDEFINES ZEILE. 05 STEUER-KENNZEICHEN PIC X(09). 05 FILLER PIC X(01). 05 ANZAHL-LOOPS-IN PIC 9(09). 05 FILLER PIC X(01). 05 ANZAHL-ROWS-IN PIC 9(09). 05 FILLER PIC X(01). 05 ANZAHL-FETCH-IN PIC 9(09). 05 FILLER PIC X(01). 05 FILLER PIC X(40). 01 DATEN. 05 I-ROWS-MAX PIC S9(08) BINARY. 05 I-LOOPS-MAX PIC S9(08) BINARY. 05 I-FETCH-MAX PIC S9(08) BINARY. 05 I-ROWS PIC S9(08) BINARY. 05 I-LOOPS PIC S9(08) BINARY. 05 I-FETCH PIC S9(08) BINARY. 05 FEHLERSCHALTER PIC X(01). 88 FEHLERFREI VALUE SPACE. 88 FEHLER VALUE 'F'. 05 ENDE-LESEN PIC X(01). 88 NICHT-ENDE VALUE SPACE. 88 ENDE VALUE 'F'. 01 DB-FELDER-N. 05 EX-ATTRIBUT-ZUT-ID PIC S9(09) COMP-5. 05 FK-POL-NR PIC S9(09) COMP-5. 05 FK-OFFERT-VAR PIC S9(04) COMP-5. 05 DN-ENTITY-ID-ATTTY PIC S9(09) COMP-5. 05 GUELTIG-AB PIC X(10). 05 VERSION PIC S9(04) COMP-5. 05 GUELTIG-BIS PIC X(10). 05 TYP-WERT-DATUM PIC X(10). 05 TYP-WERT-DATUM-IND PIC S9(04) COMP-5. 01 DB-FELDER-M. 05 EX-ATTRIBUT-ZUT-ID PIC S9(09) COMP-5 OCCURS 1000. 05 FK-POL-NR PIC S9(09) COMP-5 OCCURS 1000. 05 FK-OFFERT-VAR PIC S9(04) COMP-5 OCCURS 1000. 05 DN-ENTITY-ID-ATTTY PIC S9(09) COMP-5 OCCURS 1000. 05 GUELTIG-AB PIC X(10) OCCURS 1000. 05 VERSION PIC S9(04) COMP-5 OCCURS 1000. 05 GUELTIG-BIS PIC X(10) OCCURS 1000. 05 TYP-WERT-DATUM PIC X(10) OCCURS 1000. 05 TYP-WERT-DATUM-IND PIC S9(04) COMP-5 OCCURS 1000. /---------------------------------------------------------------* * Datenbank-Struktur mit DECLARE TABLE * *** COPY UTEXAZUC. EXEC SQL DECLARE UFLO_UTEXAZU TABLE ( EX_ATTRIBUT_ZUT_ID INTEGER NOT NULL, GUELTIG_AB DATE NOT NULL, GUELTIG_BIS DATE NOT NULL, VERSION SMALLINT NOT NULL, STATUS SMALLINT NOT NULL, TYP_WERT_DATUM DATE, TYP_WERT_INTEGER DECIMAL(18,0), TYP_WERT_FLOAT DECIMAL(18,0), TYP_WERT_TEXT VARCHAR(254), TYP_WERT_TIME TIME, TYP_WERT_TIMESTAMP TIMESTAMP, MUTATIONS_USER_ID CHAR(7) NOT NULL, MUTATIONS_DATUM DATE NOT NULL, FK_EX_ATTRIBUT_ID INTEGER NOT NULL, FK_GUELTIG_AB DATE NOT NULL, FK_POL_NR INTEGER NOT NULL, FK_OFFERT_VAR SMALLINT NOT NULL, FK_ENTITY_ID_ATTR INTEGER NOT NULL, DN_ENTITY_ID_ATTTY INTEGER NOT NULL, DN_ANZ_DEZ_STELLEN SMALLINT NOT NULL ) END-EXEC. ************************************************************ EXEC SQL INCLUDE SQLCA END-EXEC. *---------------------------------------------------------------* * Declare Cursor "normal" Index-Only * EXEC SQL DECLARE C_N_I CURSOR FOR SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 FOR FETCH ONLY WITH UR END-EXEC. *---------------------------------------------------------------* * Declare Cursor "normal" Tablespacescan * EXEC SQL DECLARE C_N_T CURSOR FOR SELECT EX_ATTRIBUT_ZUT_ID , FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 FOR FETCH ONLY WITH UR END-EXEC. *---------------------------------------------------------------* * Declare Cursor "multi-row-fetch" Index-Only * EXEC SQL DECLARE C_M_I CURSOR WITH ROWSET POSITIONING FOR SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 FOR FETCH ONLY WITH UR END-EXEC. *---------------------------------------------------------------* * Declare Cursor "multi-row-fetch" Tablespacescan * EXEC SQL DECLARE C_M_T CURSOR WITH ROWSET POSITIONING FOR SELECT EX_ATTRIBUT_ZUT_ID , FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 FOR FETCH ONLY WITH UR END-EXEC. /---------------------------------------------------------------* *- -* LINKAGE SECTION. /---------------------------------------------------------------* *- -* PROCEDURE DIVISION. SCHEIN SECTION. *---------------------------------------------------------------* * Steuerung * *- -* PERFORM A00-INIT. EVALUATE STEUER-KENNZEICHEN WHEN 'NORMAL I' PERFORM F11-VERARB-FETCH-NORMAL-IXO WHEN 'NORMAL T' PERFORM F21-VERARB-FETCH-NORMAL-TBS WHEN 'MULTI I' PERFORM F31-VERARB-FETCH-MULTI-IXO WHEN 'MULTI T' PERFORM F41-VERARB-FETCH-MULTI-TBS WHEN 'SELECT ' PERFORM F51-VERARB-SELECT-NORMAL WHEN 'SELFIRST' PERFORM F61-VERARB-SELECT-FIRST WHEN 'SELECT W' PERFORM F71-VERARB-SELECT-WHERE WHEN 'SELFIR W' PERFORM F81-BERARB-SELECT-FIRST-WHERE WHEN OTHER SET FEHLER TO TRUE DISPLAY '>>>> Keine Verarbeitung wegen SteuerKennz.' DISPLAY 'Nur "NORMAL I" "NORMAL T" ' DISPLAY 'oder "MULTI I" "MULTI T" erlaubt. ' END-EVALUATE PERFORM Z00-SCHLUSSARBEITEN. *- -* * Ende Code * *---------------------------------------------------------------* CONTINUE. GOBACK. /---------------------------------------------------------------* * Initialisierung von wichtigen Feldern * A00-INIT SECTION. DISPLAY 'U441RLF - Beginn' MOVE WHEN-COMPILED TO COMP-T INITIALIZE DATEN ACCEPT ZEILE *** Anzahl-Loops muss mindestens 1 sein COMPUTE ANZAHL-LOOPS-IN = FUNCTION MAX(1 ANZAHL-LOOPS-IN) *** Anzahl-Fetch darf hoechstens 1000 sein COMPUTE ANZAHL-FETCH-IN = FUNCTION MIN(1000 ANZAHL-FETCH-IN) *** anders wegen Compiler *** MOVE ANZAHL-LOOPS-IN TO I-LOOPS-MAX *** MOVE ANZAHL-ROWS-IN TO I-ROWS-MAX *** MOVE ANZAHL-FETCH-IN TO I-FETCH-MAX COMPUTE I-LOOPS-MAX = FUNCTION MIN(99999999 ANZAHL-LOOPS-IN) COMPUTE I-ROWS-MAX = FUNCTION MIN(99999999 ANZAHL-ROWS-IN ) COMPUTE I-FETCH-MAX = FUNCTION MIN(99999999 ANZAHL-FETCH-IN) DISPLAY '*-----------------------------------------------*' DISPLAY '>>> ' STEUER-KENNZEICHEN ' Steuerung' DISPLAY '>>> ' ANZAHL-LOOPS-IN ' Anzahl Loops' DISPLAY '>>> ' ANZAHL-ROWS-IN ' Anzahl Rows' DISPLAY '>>> ' ANZAHL-FETCH-IN ' Anzahl Fetch pro SQL' CONTINUE. /---------------------------------------------------------------* * Fetch in der altbekannten Codierung mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * Zugriff via Index-Only * F11-VERARB-FETCH-NORMAL-IXO SECTION. *DIS DISPLAY 'F11-VERARB-FETCH-NORMAL-IXO ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V11-CURSOR1-OPEN PERFORM V12-CURSOR1-FETCH MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F1101-DATEN-VERARBEITEN PERFORM V12-CURSOR1-FETCH END-PERFORM PERFORM V13-CURSOR1-CLOSE DISPLAY '11 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Einzelrows verarbeiten * F1101-DATEN-VERARBEITEN SECTION. *****DISPLAY 'F1101-DATEN-VERARBEITEN ' *DIS DISPLAY '11 ' I-LOOPS ' ' I-ROWS ' ' I-FETCH ' ' *DIS FK-POL-NR IN DB-FELDER-N CONTINUE. /---------------------------------------------------------------* * Fetch in der altbekannten Codierung mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * Zugriff via Tablespacescan * F21-VERARB-FETCH-NORMAL-TBS SECTION. *DIS DISPLAY 'F21-VERARB-FETCH-NORMAL-TBS ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V21-CURSOR2-OPEN PERFORM V22-CURSOR2-FETCH MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F2101-DATEN-VERARBEITEN PERFORM V22-CURSOR2-FETCH END-PERFORM PERFORM V23-CURSOR2-CLOSE DISPLAY '21 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Einzelrows verarbeiten * F2101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F2101-DATEN-VERARBEITEN ' *DIS DISPLAY '21 ' I-LOOPS ' ' I-ROWS ' ' I-FETCH ' ' *DIS FK-POL-NR IN DB-FELDER-N CONTINUE. /---------------------------------------------------------------* * Fetch als Multi-Row-Fetch mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * Zugriff via Index-Only * F31-VERARB-FETCH-MULTI-IXO SECTION. *DIS DISPLAY 'F31-VERARB-FETCH-MULTI-IXO ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V31-CURSOR3-OPEN PERFORM V32-CURSOR3-FETCH MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F3101-DATEN-VERARBEITEN PERFORM V32-CURSOR3-FETCH END-PERFORM *---- Nachbearbeitung PERFORM F3101-DATEN-VERARBEITEN PERFORM V33-CURSOR3-CLOSE DISPLAY '31 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Multi-rows verarbeiten * F3101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F3101-DATEN-VERARBEITEN ' *--- Anzahl gelesene Rows im Rowset uebernehmen *****MOVE SQLERRD(3) TO I-FETCH-MAX COMPUTE I-FETCH-MAX = FUNCTION MIN(99999999 SQLERRD(3)) PERFORM VARYING I-FETCH FROM 1 BY 1 UNTIL I-FETCH > I-FETCH-MAX *DIS DISPLAY '31 ' I-LOOPS ' ' I-ROWS ' ' I-FETCH ' ' *DIS FK-POL-NR IN DB-FELDER-M (I-FETCH) END-PERFORM CONTINUE. /---------------------------------------------------------------* * Fetch als Multi-Row-Fetch mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * Zugriff via Tablespacescan * F41-VERARB-FETCH-MULTI-TBS SECTION. *DIS DISPLAY 'F41-VERARB-FETCH-MULTI-TBS ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V41-CURSOR4-OPEN PERFORM V42-CURSOR4-FETCH MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F4101-DATEN-VERARBEITEN PERFORM V42-CURSOR4-FETCH END-PERFORM *---- Nachbearbeitung PERFORM F4101-DATEN-VERARBEITEN PERFORM V43-CURSOR4-CLOSE DISPLAY '41 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Multi-rows verarbeiten * F4101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F4101-DATEN-VERARBEITEN ' *--- Anzahl gelesene Rows im Rowset uebernehmen *****MOVE SQLERRD(3) TO I-FETCH-MAX COMPUTE I-FETCH-MAX = FUNCTION MIN(99999999 SQLERRD(3)) PERFORM VARYING I-FETCH FROM 1 BY 1 UNTIL I-FETCH > I-FETCH-MAX *DIS DISPLAY '41 ' I-LOOPS ' ' I-ROWS ' ' I-FETCH ' ' *DIS FK-POL-NR IN DB-FELDER-M (I-FETCH) END-PERFORM CONTINUE. /---------------------------------------------------------------* * SELECT, wie er normalerweise codiert wird mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * F51-VERARB-SELECT-NORMAL SECTION. *DIS DISPLAY 'F51-VERARB-SELECT-NORMAL ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V51-SELECT MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F5101-DATEN-VERARBEITEN PERFORM V51-SELECT END-PERFORM *---- Nachbearbeitung PERFORM F5101-DATEN-VERARBEITEN DISPLAY '51 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Daten uebernehmen * F5101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F5101-DATEN-VERARBEITEN ' CONTINUE. /---------------------------------------------------------------* * SELECT, mit Fetch first mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * F61-VERARB-SELECT-FIRST SECTION. *DIS DISPLAY 'F61-VERARB-SELECT-FIRST ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V61-SELECT-FIRST MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F6101-DATEN-VERARBEITEN PERFORM V61-SELECT-FIRST END-PERFORM *---- Nachbearbeitung PERFORM F6101-DATEN-VERARBEITEN DISPLAY '61 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Daten uebernehmen * F6101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F6101-DATEN-VERARBEITEN ' CONTINUE. /---------------------------------------------------------------* * SELECT, wie er normalerweise codiert wird mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * mit WHERE-Angabe * F71-VERARB-SELECT-WHERE SECTION. *DIS DISPLAY 'F71-VERARB-SELECT-WHERE ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V71-SELECT MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F7101-DATEN-VERARBEITEN PERFORM V71-SELECT END-PERFORM *---- Nachbearbeitung PERFORM F7101-DATEN-VERARBEITEN DISPLAY '71 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Daten uebernehmen * F7101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F7101-DATEN-VERARBEITEN ' CONTINUE. /---------------------------------------------------------------* * SELECT, mit Fetch first mit Verarbeitung * * eventuell im Loop fuer Performance-Aussagen * * mit WHERE-Angabe * F81-BERARB-SELECT-FIRST-WHERE SECTION. *DIS DISPLAY 'F81-BERARB-SELECT-FIRST-WHERE ' PERFORM I-LOOPS-MAX TIMES ADD 1 TO I-LOOPS PERFORM V81-SELECT-FIRST MOVE ZEROES TO I-ROWS PERFORM WITH TEST BEFORE ************* VARYING I-ROWS FROM 1 BY 1 UNTIL I-ROWS > I-ROWS-MAX OR FEHLER OR ENDE ADD 1 TO I-ROWS PERFORM F8101-DATEN-VERARBEITEN PERFORM V81-SELECT-FIRST END-PERFORM *---- Nachbearbeitung PERFORM F8101-DATEN-VERARBEITEN DISPLAY '81 - Loop : ' I-LOOPS END-PERFORM CONTINUE. /---------------------------------------------------------------* * Daten uebernehmen * F8101-DATEN-VERARBEITEN SECTION. *DIS DISPLAY 'F8101-DATEN-VERARBEITEN ' CONTINUE. /---------------------------------------------------------------* * Open Cursor "normal" Index-Only * V11-CURSOR1-OPEN SECTION. *DIS DISPLAY 'V11-CURSOR1-OPEN ' EXEC SQL OPEN C_N_I END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Fetch Cursor "normal" Index-Only * V12-CURSOR1-FETCH SECTION. *DIS DISPLAY 'V12-CURSOR1-FETCH ' EXEC SQL FETCH C_N_I INTO :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Close Cursor "normal" Index-Only * V13-CURSOR1-CLOSE SECTION. *DIS DISPLAY 'V13-CURSOR1-CLOSE ' EXEC SQL CLOSE C_N_I END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Open Cursor "normal" Tablespacescan * V21-CURSOR2-OPEN SECTION. *DIS DISPLAY 'V21-CURSOR2-OPEN ' EXEC SQL OPEN C_N_T END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Fetch Cursor "normal" Tablespacescan * V22-CURSOR2-FETCH SECTION. *DIS DISPLAY 'V22-CURSOR2-FETCH ' EXEC SQL FETCH C_N_T INTO :DB-FELDER-N.EX-ATTRIBUT-ZUT-ID , :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Close Cursor "normal" Tablespacescan * V23-CURSOR2-CLOSE SECTION. *DIS DISPLAY 'V23-CURSOR2-CLOSE ' EXEC SQL CLOSE C_N_T END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Open Cursor "multi-row-fetch" Index-Only * V31-CURSOR3-OPEN SECTION. *DIS DISPLAY 'V31-CURSOR3-OPEN ' EXEC SQL OPEN C_M_I END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Fetch Cursor "multi-row-fetch" Index-Only * V32-CURSOR3-FETCH SECTION. *DIS DISPLAY 'V32-CURSOR3-FETCH ' EXEC SQL FETCH NEXT ROWSET C_M_I FOR :I-FETCH-MAX ROWS INTO :DB-FELDER-M.FK-POL-NR , :DB-FELDER-M.FK-OFFERT-VAR , :DB-FELDER-M.DN-ENTITY-ID-ATTTY , :DB-FELDER-M.GUELTIG-AB , :DB-FELDER-M.VERSION , :DB-FELDER-M.GUELTIG-BIS , :DB-FELDER-M.TYP-WERT-DATUM :DB-FELDER-M.TYP-WERT-DATUM-IND END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Close Cursor "multi-row-fetch" Index-Only * V33-CURSOR3-CLOSE SECTION. *DIS DISPLAY 'V33-CURSOR3-CLOSE ' EXEC SQL CLOSE C_M_I END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Open Cursor "multi-row-fetch" Tablespacescan * V41-CURSOR4-OPEN SECTION. *DIS DISPLAY 'V41-CURSOR4-OPEN ' EXEC SQL OPEN C_M_T END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Fetch Cursor "multi-row-fetch" Tablespacescan * V42-CURSOR4-FETCH SECTION. *DIS DISPLAY 'V42-CURSOR4-FETCH ' EXEC SQL FETCH NEXT ROWSET C_M_T FOR :I-FETCH-MAX ROWS INTO :DB-FELDER-M.EX-ATTRIBUT-ZUT-ID , :DB-FELDER-M.FK-POL-NR , :DB-FELDER-M.FK-OFFERT-VAR , :DB-FELDER-M.DN-ENTITY-ID-ATTTY , :DB-FELDER-M.GUELTIG-AB , :DB-FELDER-M.VERSION , :DB-FELDER-M.GUELTIG-BIS , :DB-FELDER-M.TYP-WERT-DATUM :DB-FELDER-M.TYP-WERT-DATUM-IND END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Close Cursor "multi-row-fetch" Tablespacescan * V43-CURSOR4-CLOSE SECTION. *DIS DISPLAY 'V43-CURSOR4-CLOSE ' EXEC SQL CLOSE C_M_T END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * SELECT "normal" Index-Only * V51-SELECT SECTION. *DIS DISPLAY 'V51-SELECT ' EXEC SQL SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM INTO :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 WITH UR END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * SELECT "First " Index-Only * V61-SELECT-FIRST SECTION. *DIS DISPLAY 'V61-SELECT-FIRST ' EXEC SQL SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM INTO :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND FROM UFLO_UTEXAZU *****WHERE FK_POL_NR = 2000101 WITH UR FETCH FIRST ROW ONLY END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * SELECT "normal" Index-Only mit WHERE * V71-SELECT SECTION. *DIS DISPLAY 'V51-SELECT ' EXEC SQL SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM INTO :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND FROM UFLO_UTEXAZU WHERE FK_POL_NR = 2000101 WITH UR END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * SELECT "First " Index-Only mit WHERE * V81-SELECT-FIRST SECTION. *DIS DISPLAY 'V61-SELECT-FIRST ' EXEC SQL SELECT FK_POL_NR , FK_OFFERT_VAR , DN_ENTITY_ID_ATTTY , GUELTIG_AB , VERSION , GUELTIG_BIS , TYP_WERT_DATUM INTO :DB-FELDER-N.FK-POL-NR , :DB-FELDER-N.FK-OFFERT-VAR , :DB-FELDER-N.DN-ENTITY-ID-ATTTY , :DB-FELDER-N.GUELTIG-AB , :DB-FELDER-N.VERSION , :DB-FELDER-N.GUELTIG-BIS , :DB-FELDER-N.TYP-WERT-DATUM :DB-FELDER-N.TYP-WERT-DATUM-IND FROM UFLO_UTEXAZU WHERE FK_POL_NR = 2000101 WITH UR FETCH FIRST ROW ONLY END-EXEC. PERFORM Y00-SQLCODE-PRUEFEN CONTINUE. /---------------------------------------------------------------* * Pruefen zentral den SQL-Code * Y00-SQLCODE-PRUEFEN SECTION. *DIS DISPLAY 'Y00-SQLCODE-PRUEFEN ' EVALUATE SQLCODE WHEN ZERO *DIS DISPLAY 'ERRD(1): ' SQLERRD(1) ' ' *DIS 'ERRD(2): ' SQLERRD(2) ' ' *DIS 'ERRD(3): ' SQLERRD(3) ' ' *DIS 'STATE : ' SQLSTATE ' ' CONTINUE WHEN 100 DISPLAY 'U441RLF: nicht gefunden / Ende Rowset ' DISPLAY 'ERRD(1): ' SQLERRD(1) ' ' 'ERRD(2): ' SQLERRD(2) ' ' 'ERRD(3): ' SQLERRD(3) ' ' 'STATE : ' SQLSTATE ' ' SET ENDE TO TRUE WHEN -354 DISPLAY 'U441RLF: Fehler im Rowset (-354)' DISPLAY 'ERRD(1): ' SQLERRD(1) ' ' 'ERRD(2): ' SQLERRD(2) ' ' 'ERRD(3): ' SQLERRD(3) ' ' 'STATE : ' SQLSTATE ' ' SET ENDE TO TRUE SET FEHLER TO TRUE WHEN -818 DISPLAY 'U441RLF: Timestamp-Fehler (-818)' SET FEHLER TO TRUE PERFORM Z00-SCHLUSSARBEITEN GOBACK WHEN -805 DISPLAY 'U441RLF: Timestamp-Fehler (-805)' SET FEHLER TO TRUE PERFORM Z00-SCHLUSSARBEITEN GOBACK WHEN -811 *--- -811 explizit zulassen IF STEUER-KENNZEICHEN = 'SELECT ' OR STEUER-KENNZEICHEN = 'SELECT W' CONTINUE ELSE DISPLAY 'U441RLF: doppelter Satz (-811)' SET FEHLER TO TRUE PERFORM Z00-SCHLUSSARBEITEN GOBACK END-IF WHEN OTHER DISPLAY 'U441RLF: grober SQL-Fehler- SQLCODE: ' SQLCODE DISPLAY 'U441RLF: SQLCA folgt .....' SQLCA PERFORM Z00-SCHLUSSARBEITEN GOBACK END-EVALUATE CONTINUE. /---------------------------------------------------------------* * Abschlussarbeiten * Z00-SCHLUSSARBEITEN SECTION. DISPLAY 'U441RLF - Ich habe fertig.' IF FEHLERFREI THEN MOVE ZEROES TO RETURN-CODE ELSE MOVE 20 TO RETURN-CODE END-IF CONTINUE. *- -* *---------------------------------------------------------------*