This opens the empty sqlbook.cbl file in the file editor.
******************************************************************************************************** * * Copyright (C) Micro Focus IP Development Limited 2010-2011. All rights reserved. * * This sample code is supplied for demonstration purposes only on an "as is" basis and "is for use at * your own risk". * ******************************************************************************************************** $set sql(dbman=jdbc, behavior=mainframe) $set SQL(JNDIENC=java:/comp/env) program-id. BookLegacy. working-storage section. exec sql include sqlca end-exec. 01 record-count pic 99. linkage section. 01 lnk-function pic x. 88 read-record value "1". 88 add-record value "2". 88 delete-record value "3". 88 next-record value "4". 01 lnk-sqlstate pic x(5). 01 lnk-sqlmessage pic x(80). copy "book-rec.cpy" replacing ==(prefix)== by ==lnk-b==. procedure division using by value lnk-function by reference lnk-b-details by reference lnk-sqlstate by reference lnk-sqlmessage. main section. exec sql connect to PUBS end-exec if sqlcode not >= 0 move sqlstate to lnk-sqlstate move sqlerrmc(1:sqlerrml) to lnk-sqlmessage move 'Connection error' to lnk-b-title move sqlstate to lnk-b-author move '00000' to lnk-sqlstate move sqlerrmc(1:sqlerrml) to lnk-sqlmessage goback end-if evaluate true when read-record perform do-read-record when add-record perform do-add-record when delete-record perform do-delete-record when next-record perform do-next-record end-evaluate move sqlstate to lnk-sqlstate move sqlerrmc(1:sqlerrml) to lnk-sqlmessage exec sql disconnect end-exec exit program stop run . do-read-record section. evaluate true when lnk-b-stockno <> spaces exec sql select TITLE, TYPE, AUTHOR, STOCKNO, ISBN, RETAIL, ONHAND, SOLD into :lnk-b-title, :lnk-b-type, :lnk-b-author, :lnk-b-stockno, :lnk-b-isbn, :lnk-b-retail, :lnk-b-onhand, :lnk-b-sold from BOOKS where STOCKNO = :lnk-b-stockno end-exec when lnk-b-title <> spaces exec sql select TITLE, TYPE, AUTHOR, STOCKNO, ISBN, RETAIL, ONHAND, SOLD into :lnk-b-title, :lnk-b-type, :lnk-b-author, :lnk-b-stockno, :lnk-b-isbn, :lnk-b-retail, :lnk-b-onhand, :lnk-b-sold from BOOKS where TITLE = :lnk-b-title end-exec when lnk-b-author <> spaces exec sql select TITLE, TYPE, AUTHOR, STOCKNO, ISBN, RETAIL, ONHAND, SOLD into :lnk-b-title, :lnk-b-type, :lnk-b-author, :lnk-b-stockno, :lnk-b-isbn, :lnk-b-retail, :lnk-b-onhand, :lnk-b-sold from BOOKS where AUTHOR = :lnk-b-author end-exec when other *>------------No key specified - return unsuccessful read move "02000" to sqlstate move "Record not found" to sqlerrmc move 15 to sqlerrml end-evaluate if sqlcode not = 0 initialize lnk-b-details *>move all '*' to lnk-b-title lnk-b-author lnk-b-type end-if . do-next-record section. exec sql select TITLE, TYPE, AUTHOR, STOCKNO, ISBN, RETAIL, ONHAND, SOLD into :lnk-b-title, :lnk-b-type, :lnk-b-author, :lnk-b-stockno, :lnk-b-isbn, :lnk-b-retail, :lnk-b-onhand, :lnk-b-sold from BOOKS where STOCKNO > :lnk-b-stockno end-exec if sqlcode <> 0 AND sqlcode NOT EQUAL 1 initialize lnk-b-details *>move all '*' to lnk-b-title lnk-b-author lnk-b-type end-if . do-add-record section. exec sql insert into BOOKS (TITLE, TYPE, AUTHOR, STOCKNO, ISBN, RETAIL, ONHAND, SOLD) values (:lnk-b-title, :lnk-b-type, :lnk-b-author, :lnk-b-stockno, :lnk-b-isbn, :lnk-b-retail, :lnk-b-onhand, :lnk-b-sold) end-exec if sqlcode = 0 exec sql commit end-exec end-if . do-delete-record section. evaluate true when lnk-b-stockno <> spaces exec sql delete from BOOKS where STOCKNO = :lnk-b-stockno end-exec when lnk-b-title <> spaces exec sql delete from BOOKS where TITLE = :lnk-b-title end-exec when lnk-b-author <> spaces exec sql delete from BOOKS where AUTHOR = :lnk-b-author end-exec when other *>------------No key specified - return unsuccessful read move "02000" to sqlstate move "Record not found" to sqlerrmc move 15 to sqlerrml end-evaluate if sqlcode = 0 exec sql commit end-exec end-if
03 (prefix)-sold pic s9(5) comp-3.