$SET SQL(usecurlib=yes) WORKING-STORAGE SECTION. EXEC SQL INCLUDE SQLCA END-EXEC *> after an sql error this has the full message text 01 MFSQLMESSAGETEXT PIC X(250). 01 IDX PIC X(04) COMP-5. EXEC SQL BEGIN DECLARE SECTION END-EXEC *> Put your host variables here if you need to port *> to other COBOL compilers EXEC SQL INCLUDE Products END-EXEC EXEC SQL END DECLARE SECTION END-EXEC PROCEDURE DIVISION. EXEC SQL WHENEVER SQLERROR perform OpenESQL-Error END-EXEC *> Demo for positioned updates using ACCESS datasource EXEC SQL CONNECT TO 'Inventory' USER 'admin' END-EXEC *> Put your program logic/SQL statements here EXEC SQL DECLARE CSR679 CURSOR FOR SELECT A.ProductID ,A.ProductName ,A.UnitPrice FROM Products A WHERE ( A.ProductID < 3 ) END-EXEC EXEC SQL SET SCROLLOPTION static END-EXEC EXEC SQL SET CONCURRENCY optccval END-EXEC EXEC SQL OPEN CSR679 END-EXEC PERFORM UNTIL SQLSTATE >= "02000" EXEC SQL FETCH CSR679 INTO :ProductID ,:ProductName:ProductName-NULL ,:UnitPrice:UnitPrice-NULL END-EXEC *> Process data from FETCH IF SQLSTATE = "00000" *> increase price by 10% compute unitprice = unitprice * 1.10 EXEC SQL UPDATE Products SET UnitPrice = :UnitPrice:UnitPrice-NULL WHERE CURRENT OF CSR679 END-EXEC END-IF END-PERFORM EXEC SQL CLOSE CSR679 END-EXEC EXEC SQL COMMIT END-EXEC EXEC SQL DISCONNECT CURRENT END-EXEC EXIT PROGRAM. STOP RUN. *> Default sql error routine - modify to stop program if *> needed OpenESQL-Error Section. display "SQL Error = " sqlstate " " sqlcode display MFSQLMESSAGETEXT *> stop run exit.