case 787122: Problem after FREEING prepared stmt in Dynamic-4GL
Posted in 1998
--%#%record%#% Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2557 Are we doing something wrong in our classical 4GL programs, or is something wrong with the behaviour of Dynamic-4gl? We have: An RS6000 running AIX 4.3.1 with: INFORMIX-OnLine Version 5.10.UC1 INFORMIX-4GL RDS Version 4.20.UC1 INFORMIX-4GL Version 4.20.UC1 Informix-Dynamic-4GL Version 2.01.UC1 We use "CONSTRUCT BY NAME" to generate a where-clause string that we combine with another string to create a SELECT string. We PREPARE a STATEMENT from the select string and DECLARE a CURSOR for the STATEMENT. We populate an array via a FOREACH loop using the cursor, then we FREE the STATEMENT. In 4GL and 4GL-RDS the FREE statment doesn't hurt (and hopefully helps). Every time the function with the CONSTRUCT is called up, a call occurs to the function that creates the STATEMENT and the CURSOR and populates the lookup array. There is no problem the first time the FOREACH loop is hit. But the second entry into the FOREACH loop (in Dynamic-4gl ONLY) gives the error: Program stopped at "lu_lookup.4gl", line number 320. SQL statement error number -404. The cursor or statement is not available. Running Dynamic-4GL with its debugger shows that right after the PREPARE and DECLARE lines, the SQLCA.SQLCODE = 0. PREPARE lookup_stmt FROM c_txt DECLARE lookup_curs CURSOR FOR lookup_stmt LET lookup_cnt = 1 FOREACH lookup_curs INTO p_lookup[lookup_cnt].cde, p_lookup[lookup_cnt].sdesc LET p_lookup[c_lookup].mark = NULL LET c_lookup = c_lookup + 1 IF c_lookup > 500 THEN EXIT FOREACH END IF END FOREACH LET c_lookup = c_lookup - 1 FREE lookup_stmt So why the error -404 the second time the FOREACH line is hit? What versions of 4GL/OnLine should both the cursor and stmt be freed? Are we correct in freeing the stmt in our version? Included is a base64 encoded tar file of a small 4GL, PER and two small table unloads that duplicate the problem. (Control-C exits the program in 4GL, 2nd query bombs the program in D4GL.) -- ______________________________________________________________________ | Colin McGrath cmm@trac3000.ueci.com | | Raytheon Engineers & Constructors, Inc. (215) 422-4144 | | Phila, PA, USA | | Any opinions I state are my own and not necessarily of my employer | |____________________________________________________________________| --%#%record%#% Content-Type: application/octet-stream;name=free_prob.tar Content-Name: free_prob.tar Content-Length: 27688 Content-Transfer-Encoding: base64 bHVfbG9va2RfMTI4LnVubAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAA MDAwNDMyIAAwMDAzMTAgADAwMDAwMDAwMzI2IDA3MDM0NjcwMTcxIDAxMzU0MQAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhcgAwMGNtbQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHJhYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAwMDAwMDAgADAwMDAwMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyNjAxMTh8REFUQSAgICAgICAgICAgICAgICB8 REFUQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxZfENNQ0cxfGRvY190 eXBlfCB8IHwgfCB8IHwgfCB8IHwgfCB8CjI2MDExOHxNRUNIICAgICAgICAgICAgICAgIHxN RUNIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFl8Q01DRzF8ZG9jX3R5 cGV8IHwgfCB8IHwgfCB8IHwgfCB8IHwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGx1 X2xvb2ttXzEyNy51bmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDA2NDQgADAw MDQzMiAAMDAwMzEwIAAwMDAwMDAwMDA1NyAwNzAzNDY3MDE3MSAwMTM1NTIAIDAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIAMDBjbW0AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRyYWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDAwIAAwMDAwMDAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjYwMTE4fENNQ0cxfGRvY190eXBlfDR8WXx8fHx8 fHx8fHx8fHx8fHx8fHx8fAogICAgICAgICAgICAgICAgICAgICB8WXxDTUNHMXxkb2NfdHlw ZXwgfCB8IHwgfCB8IHwgfCB8IHwgfAoyNjAxMTh8TUVDSCAgICAgICAgICAgICAgICB8TUVD SCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxZfENNQ0cxfGRvY190eXBl fCB8IHwgfCB8IHwgfCB8IHwgfCB8CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsdV9s b29rdXAuNGdsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwNjQ0IAAwMDA0 MzIgADAwMDMxMCAAMDAwMDAwMjQ2NTUgMDcwMzQ2NzAxNzEgMDEzMjUzACAwAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyADAwY21tAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cmFjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ADAwMDAwMCAAMDAwMDAwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAApERUZJTkUgIGdzaV9kZWNsYXJlX2N1cnNvciBJTlRF R0VSCkRFRklORSAgZ0tFWV9BQ0NFUFQgICAgICAgIElOVEVHRVIgCkRFRklORSAgS0VZX1VQ ICAgICAgICAgICAgIElOVEVHRVIKREVGSU5FICBLRVlfUFJFVlBBR0UgICAgICAgSU5URUdF UgpERUZJTkUgIEtFWV9ORVhUUEFHRSAgICAgICBJTlRFR0VSCgpERUZJTkUgIHBfbG9va3Vw ICAgICAgICAgICBBUlJBWVs1MDBdIE9GIFJFQ09SRAogICAgICAgICAgICBtYXJrICAgICAg ICAgICAgICAgQ0hBUigxKSwKICAgICAgICAgICAgY2RlICAgICAgICAgICAgICAgIHZhcmNo YXIoMjApLAogICAgICAgICAgICBzZGVzYyAgICAgICAgICAgICAgdmFyY2hhcig0MCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgRU5EIFJFQ09SRAoKREVGSU5FICBjX2xvb2t1cCAg ICAgICAgICAgU01BTExJTlQKREVGSU5FICBvX3R4dCAgICAgICAgICAgICAgQ0hBUig1MTIp CkRFRklORSAgbGNoX29yZGVyX2J5ICAgICAgIENIQVIoMjMpCkRFRklORSAgbWNoX2NudF9u YnIgICAgICAgIENIQVIoOCkKREVGSU5FICBtY2hfbGFibmFtZSAgICAgICAgQ0hBUigxOCkK REVGSU5FICBtY2hfY2RlICAgICAgICAgICAgdmFyY2hhcigyMCkKREVGSU5FICBtaW5faWQg ICAgICAgICAgICAgSU5URUdFUgoKTUFJTgoKREVGSU5FICBsY2hfY2RlICAgICAgICAgICAg dmFyY2hhcigyMCkKREVGSU