Re: [U2] RECORDLOCKED statement
Thank you Raul. We don't use shared locks so started at -2, but it won't hurt to get them all. Changed made. Thank you. -Baker x3598 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of raul_doming...@neimanmarcus.com Sent: Tuesday, December 15, 2009 5:27 PM To: U2 Users List Subject: Re: [U2] RECORDLOCKED statement The only consideration is that your second case statement picks up at -2 instead of -1. I think you are going for CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READL which is the -1 return value. At least according to the UniVerse documentation. Regards, Raul Dominguez raul_doming...@neimanmarcus.com 972-401-6502 Baker Hughes baker.hug...@mouser.com Sent by: u2-users-boun...@listserver.u2ug.org 12/15/2009 05:17 PM Please respond to U2 Users List u2-users@listserver.u2ug.org To 'U2 Users List' u2-users@listserver.u2ug.org cc Subject [U2] RECORDLOCKED statement I admit I have never used this little jewel of a [UV] statement, so although the code runs and works as designed, before I load it to production, someone please tell me if there are any nuances that would improve the design/operation. CASE RECORDLOCKED(PICH.TX, SO) = LOCK$MY.READU * This user/process already has a lock on the record, and we DO NOT * WANT to clear the lock if process is ORDER.UPDATE so check the stack. IF INDEX(SYSTEM(9001),ORDER.UPDATE,1) THEN WRITEVU ON PICH.TX, SO, 37 END ELSE WRITEV ON PICH.TX, SO, 37 RELEASE PICH.TX, SO END CLEARED.CCA.HOLD = TRUE CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READU * Another User has the record locked, we cannot update at this time ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR CASE RECORDLOCKED(PICH.TX, SO) = LOCK$NO.LOCK * There is no lock on this record presently, free and clear READVU HOLD.RSN FROM PICH.TX, SO, 37 LOCKED * ...but that could change in 1 ms so still handle the locked condition. ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR RELEASE PICH.TX, SO END THEN WRITEV ON PICH.TX, SO, 37 CLEARED.CCA.HOLD = TRUE END CASE Thank you. -Baker This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RECORDLOCKED statement
Thank you Gregor. Good efficiency. Change made. Thank you. -Baker x3598 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Gregor Scott Sent: Tuesday, December 15, 2009 7:40 PM To: 'U2 Users List' Subject: Re: [U2] RECORDLOCKED statement The other consideration is that each case statement uses the same RECORDLOCKED(PICH.TX, SO) function reference, meaning it runs the function 3 times (according to your snippet). I would normally assign the function result to a variable and test the variable in the case statements: stat.LOCK = RECORDLOCKED(PICH.TX, SO) CASE stat.LOCK = CASE stat.LOCK = ... Gregor Scott This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RECORDLOCKED statement
Thanks Brad, good catch. Thank you. -Baker -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of BraDav Sent: Tuesday, December 15, 2009 9:48 PM To: gregor.sc...@pentanasolutions.com; U2 Users List Subject: Re: [U2] RECORDLOCKED statement Assign the result to a variable: that reduces the i/o to the lock manager by 60%+ Brad This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] RECORDLOCKED statement
I admit I have never used this little jewel of a [UV] statement, so although the code runs and works as designed, before I load it to production, someone please tell me if there are any nuances that would improve the design/operation. CASE RECORDLOCKED(PICH.TX, SO) = LOCK$MY.READU * This user/process already has a lock on the record, and we DO NOT * WANT to clear the lock if process is ORDER.UPDATE so check the stack. IF INDEX(SYSTEM(9001),ORDER.UPDATE,1) THEN WRITEVU ON PICH.TX, SO, 37 END ELSE WRITEV ON PICH.TX, SO, 37 RELEASE PICH.TX, SO END CLEARED.CCA.HOLD = TRUE CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READU * Another User has the record locked, we cannot update at this time ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR CASE RECORDLOCKED(PICH.TX, SO) = LOCK$NO.LOCK * There is no lock on this record presently, free and clear READVU HOLD.RSN FROM PICH.TX, SO, 37 LOCKED * ...but that could change in 1 ms so still handle the locked condition. ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR RELEASE PICH.TX, SO END THEN WRITEV ON PICH.TX, SO, 37 CLEARED.CCA.HOLD = TRUE END CASE Thank you. -Baker This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RECORDLOCKED statement
The only consideration is that your second case statement picks up at -2 instead of -1. I think you are going for CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READL which is the -1 return value. At least according to the UniVerse documentation. Regards, Raul Dominguez raul_doming...@neimanmarcus.com 972-401-6502 Baker Hughes baker.hug...@mouser.com Sent by: u2-users-boun...@listserver.u2ug.org 12/15/2009 05:17 PM Please respond to U2 Users List u2-users@listserver.u2ug.org To 'U2 Users List' u2-users@listserver.u2ug.org cc Subject [U2] RECORDLOCKED statement I admit I have never used this little jewel of a [UV] statement, so although the code runs and works as designed, before I load it to production, someone please tell me if there are any nuances that would improve the design/operation. CASE RECORDLOCKED(PICH.TX, SO) = LOCK$MY.READU * This user/process already has a lock on the record, and we DO NOT * WANT to clear the lock if process is ORDER.UPDATE so check the stack. IF INDEX(SYSTEM(9001),ORDER.UPDATE,1) THEN WRITEVU ON PICH.TX, SO, 37 END ELSE WRITEV ON PICH.TX, SO, 37 RELEASE PICH.TX, SO END CLEARED.CCA.HOLD = TRUE CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READU * Another User has the record locked, we cannot update at this time ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR CASE RECORDLOCKED(PICH.TX, SO) = LOCK$NO.LOCK * There is no lock on this record presently, free and clear READVU HOLD.RSN FROM PICH.TX, SO, 37 LOCKED * ...but that could change in 1 ms so still handle the locked condition. ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR RELEASE PICH.TX, SO END THEN WRITEV ON PICH.TX, SO, 37 CLEARED.CCA.HOLD = TRUE END CASE Thank you. -Baker This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RECORDLOCKED statement
The other consideration is that each case statement uses the same RECORDLOCKED(PICH.TX, SO) function reference, meaning it runs the function 3 times (according to your snippet). I would normally assign the function result to a variable and test the variable in the case statements: stat.LOCK = RECORDLOCKED(PICH.TX, SO) CASE stat.LOCK = CASE stat.LOCK = ... Gregor Scott -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of raul_doming...@neimanmarcus.com Sent: Wednesday, 16 December 2009 10:27 AM To: U2 Users List Subject: Re: [U2] RECORDLOCKED statement The only consideration is that your second case statement picks up at -2 instead of -1. I think you are going for CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READL which is the -1 return value. At least according to the UniVerse documentation. Regards, Raul Dominguez raul_doming...@neimanmarcus.com 972-401-6502 Baker Hughes baker.hug...@mouser.com Sent by: u2-users-boun...@listserver.u2ug.org 12/15/2009 05:17 PM Please respond to U2 Users List u2-users@listserver.u2ug.org To 'U2 Users List' u2-users@listserver.u2ug.org cc Subject [U2] RECORDLOCKED statement I admit I have never used this little jewel of a [UV] statement, so although the code runs and works as designed, before I load it to production, someone please tell me if there are any nuances that would improve the design/operation. CASE RECORDLOCKED(PICH.TX, SO) = LOCK$MY.READU * This user/process already has a lock on the record, and we DO NOT * WANT to clear the lock if process is ORDER.UPDATE so check the stack. IF INDEX(SYSTEM(9001),ORDER.UPDATE,1) THEN WRITEVU ON PICH.TX, SO, 37 END ELSE WRITEV ON PICH.TX, SO, 37 RELEASE PICH.TX, SO END CLEARED.CCA.HOLD = TRUE CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READU * Another User has the record locked, we cannot update at this time ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR CASE RECORDLOCKED(PICH.TX, SO) = LOCK$NO.LOCK * There is no lock on this record presently, free and clear READVU HOLD.RSN FROM PICH.TX, SO, 37 LOCKED * ...but that could change in 1 ms so still handle the locked condition. ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR RELEASE PICH.TX, SO END THEN WRITEV ON PICH.TX, SO, 37 CLEARED.CCA.HOLD = TRUE END CASE Thank you. -Baker This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users -- Message protected by DealerGuard: e-mail anti-virus, anti-spam and content filtering. http://www.pentanasolutions.com Click here to report this message as spam: https://login.mailguard.com.au/report/1yT6IW24xN/50V5hqHqZ3Up5ajJTQzChu/3 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] RECORDLOCKED statement
Assign the result to a variable: that reduces the i/o to the lock manager by 60%+ Brad - Original Message - From: Gregor Scott gregor.sc...@pentanasolutions.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Tuesday, December 15, 2009 8:39 PM Subject: Re: [U2] RECORDLOCKED statement The other consideration is that each case statement uses the same RECORDLOCKED(PICH.TX, SO) function reference, meaning it runs the function 3 times (according to your snippet). I would normally assign the function result to a variable and test the variable in the case statements: stat.LOCK = RECORDLOCKED(PICH.TX, SO) CASE stat.LOCK = CASE stat.LOCK = ... Gregor Scott -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of raul_doming...@neimanmarcus.com Sent: Wednesday, 16 December 2009 10:27 AM To: U2 Users List Subject: Re: [U2] RECORDLOCKED statement The only consideration is that your second case statement picks up at -2 instead of -1. I think you are going for CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READL which is the -1 return value. At least according to the UniVerse documentation. Regards, Raul Dominguez raul_doming...@neimanmarcus.com 972-401-6502 Baker Hughes baker.hug...@mouser.com Sent by: u2-users-boun...@listserver.u2ug.org 12/15/2009 05:17 PM Please respond to U2 Users List u2-users@listserver.u2ug.org To 'U2 Users List' u2-users@listserver.u2ug.org cc Subject [U2] RECORDLOCKED statement I admit I have never used this little jewel of a [UV] statement, so although the code runs and works as designed, before I load it to production, someone please tell me if there are any nuances that would improve the design/operation. CASE RECORDLOCKED(PICH.TX, SO) = LOCK$MY.READU * This user/process already has a lock on the record, and we DO NOT * WANT to clear the lock if process is ORDER.UPDATE so check the stack. IF INDEX(SYSTEM(9001),ORDER.UPDATE,1) THEN WRITEVU ON PICH.TX, SO, 37 END ELSE WRITEV ON PICH.TX, SO, 37 RELEASE PICH.TX, SO END CLEARED.CCA.HOLD = TRUE CASE RECORDLOCKED(PICH.TX, SO) = LOCK$OTHER.READU * Another User has the record locked, we cannot update at this time ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR CASE RECORDLOCKED(PICH.TX, SO) = LOCK$NO.LOCK * There is no lock on this record presently, free and clear READVU HOLD.RSN FROM PICH.TX, SO, 37 LOCKED * ...but that could change in 1 ms so still handle the locked condition. ERR.NUM = 'C043' ERR.MSG = 'PICH.TX RECORD IS LOCKED, TRYING TO CLEAR CREDIT CARD HOLD' DOC.NUM = SO ; DOC.TYP = 'ORDER' ; FILE.NM = 'PICH.TX' GOSUB SEND.ERROR RELEASE PICH.TX, SO END THEN WRITEV ON PICH.TX, SO, 37 CLEARED.CCA.HOLD = TRUE END CASE Thank you. -Baker This communication, its contents and any file attachments transmitted with it are intended solely for the addressee(s) and may contain confidential proprietary information. Access by any other party without the express written permission of the sender is STRICTLY PROHIBITED. If you have received this communication in error you may not copy, distribute or use the contents, attachments or information in any way. Please destroy it and contact the sender. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users -- Message protected by DealerGuard: e-mail anti-virus, anti-spam and content filtering. http://www.pentanasolutions.com Click here to report this message as spam: https://login.mailguard.com.au/report/1yT6IW24xN/50V5hqHqZ3Up5ajJTQzChu/3 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users