/* REXX */ PARSE UPPER ARG ssid isolation zrc = DB2RXENV('ADD') IF zrc \= 0 THEN SIGNAL Done zrc = DB2RXCON('CONNECT' ssid) IF zrc \= 0 THEN SIGNAL Noconnect IF isolation \= '' /* Use with DB2DEPTU for concurrency tests. */ THEN DO zrc = DB2RXISO(isolation) IF zrc \= 0 THEN SIGNAL Complete END zrc = DB2RXCSR('C51') /* Cursor WITH HOLD for Commit. */ IF zrc \= 0 THEN SIGNAL Complete SAY 'PREPARE...' /* Select without parameter markers. */ mysql= "SELECT DEPTNO, DEPTNAME, MGRNO FROM DSN8910.DEPT" ADDRESS DSNREXX "EXECSQL PREPARE S51 FROM :mysql" IF sqlcode \= 0 THEN DO SAY 'PREPARE failed.' SAY 'sqlcode='sqlcode SAY 'sqlerrmc='sqlerrmc zrc = 12 END ELSE SAY 'Ok.' IF zrc = 0 THEN DO SAY SAY 'OPEN CURSOR...' ADDRESS DSNREXX "EXECSQL OPEN C51" IF sqlcode \= 0 THEN DO SAY 'OPEN CURSOR failed.' SAY 'sqlcode='sqlcode SAY 'sqlerrmc='sqlerrmc zrc = 8 END ELSE SAY 'Ok.' END IF zrc = 0 THEN DO SAY SAY 'FETCH CURSOR...' mysql = "EXECSQL FETCH C51 INTO :myf, :myl, :mlm :myi" ADDRESS DSNREXX mysql DO WHILE sqlcode \= 100 & sqlcode \< 0 SAY 'myf='myf 'myl='myl 'mlm='mlm 'myi='myi LENGTH(mlm) SAY 'COMMIT?' PULL commit IF ABBREV('YES',commit,1) THEN DO /* Non-select without parameter markers. */ ADDRESS DSNREXX "EXECSQL COMMIT" SAY 'sqlcode='sqlcode SAY END ADDRESS DSNREXX mysql END SAY 'Completed. sqlcode='sqlcode END IF zrc = 0 THEN DO SAY SAY 'CLOSE CURSOR...' ADDRESS DSNREXX "EXECSQL CLOSE C51" IF sqlcode \= 0 THEN DO SAY 'CLOSE failed.' SAY 'sqlcode='sqlcode SAY 'sqlerrmc='sqlerrmc zrc = 4 END ELSE SAY 'Ok.' END Complete: x = DB2RXCON('DISCONNECT' ssid) Noconnect: x = DB2RXENV('DELETE') Done: EXIT zrc