Re: [U2] Universe Triggers
re. triggers Raid, I could not agree with Phil more. Well said. Come on, Rocket! On 7/19/2013 1:32 AM, Phil Walker wrote: Ken, I am glad you raised the issue about debugging a program with a file which has a trigger attached. I have been on to UV (Vmark/Ardent/IBM/Rocket for ages about fixing this pushing for the ability to be able to step into the trigger code, but at a VERY MINIMUM being able to debug the program and perform the write on the file, and in effect step over the trigger subroutine and carry on debugging. The issue is the trigger subroutine cannot support input, so what UV have done is basically say you are using the debugger so you are inputting debug commands so you will abort. They need to turn this restriction off for debugging so that either of the above two scenarios is supported. In a Microsoft world I can debug anything through the connected world of web/databases etc.. Have had no feedback from UV -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Ken Ford Sent: Friday, 19 July 2013 9:48 a.m. To: u2-users@listserver.u2ug.org Subject: Re: [U2] Universe Triggers Dan, In addition to the other responses you have received, I suggest the following: 1. Have one master file trigger subroutine (globally catalogued) that calls subroutines (locally catalogued) tailored to individual files. This means you don't have to stop and restart Universe when a new trigger is required or a change to an existing one. If the master subroutine changes, you do have to restart Universe. 2. Use a control record that records the subroutine name and state of the trigger for each file having a trigger. 3. Use a program to change the state of a trigger, using the control records in 2 above. 4. Make sure all background processes that have a file with a trigger open are logged out when recompiling the subroutine for that file trigger. 5. Remember that you can't do anything to a file with an active trigger whilst in the RAID debugger (it will crash). Rather, if you are testing a file trigger subroutine, drop the trigger and use a trigger testing program that calls the subroutine after taking a copy of the record being changed, pausing whilst you change it in another session, and then resuming, calling the subroutine. If you would like samples of any of the software mentioned above, let me know, and I can send them to you. Regards, Ken Ford Universe Software Developer t 07 3013 8605 | f 07 3002 8400 e ken.f...@firstmac.com.au | w firstmac.com.au ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Universe Triggers
I won't be holding my breath Charles ;-) -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Charles Stevenson Sent: Friday, 26 July 2013 9:22 p.m. To: U2 Users List Subject: Re: [U2] Universe Triggers re. triggers Raid, I could not agree with Phil more. Well said. Come on, Rocket! On 7/19/2013 1:32 AM, Phil Walker wrote: Ken, I am glad you raised the issue about debugging a program with a file which has a trigger attached. I have been on to UV (Vmark/Ardent/IBM/Rocket for ages about fixing this pushing for the ability to be able to step into the trigger code, but at a VERY MINIMUM being able to debug the program and perform the write on the file, and in effect step over the trigger subroutine and carry on debugging. The issue is the trigger subroutine cannot support input, so what UV have done is basically say you are using the debugger so you are inputting debug commands so you will abort. They need to turn this restriction off for debugging so that either of the above two scenarios is supported. In a Microsoft world I can debug anything through the connected world of web/databases etc.. Have had no feedback from UV -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Ken Ford Sent: Friday, 19 July 2013 9:48 a.m. To: u2-users@listserver.u2ug.org Subject: Re: [U2] Universe Triggers Dan, In addition to the other responses you have received, I suggest the following: 1. Have one master file trigger subroutine (globally catalogued) that calls subroutines (locally catalogued) tailored to individual files. This means you don't have to stop and restart Universe when a new trigger is required or a change to an existing one. If the master subroutine changes, you do have to restart Universe. 2. Use a control record that records the subroutine name and state of the trigger for each file having a trigger. 3. Use a program to change the state of a trigger, using the control records in 2 above. 4. Make sure all background processes that have a file with a trigger open are logged out when recompiling the subroutine for that file trigger. 5. Remember that you can't do anything to a file with an active trigger whilst in the RAID debugger (it will crash). Rather, if you are testing a file trigger subroutine, drop the trigger and use a trigger testing program that calls the subroutine after taking a copy of the record being changed, pausing whilst you change it in another session, and then resuming, calling the subroutine. If you would like samples of any of the software mentioned above, let me know, and I can send them to you. Regards, Ken Ford Universe Software Developer t 07 3013 8605 | f 07 3002 8400 e ken.f...@firstmac.com.au | w firstmac.com.au ___ 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] [UD] BASIC Code Failing
This is all very interesting to hear. I have a customer who has occasional instances when they complain that a supply receipt has failed to update the last receipt fields. This is the code: 0092: *** 0093: 7000:* UPDATE SUPPLIES 0094: *** 0095: SUPKEY = POLREC2 0096: GOSUB 7300 * reads suprec 0097: IF SUPREC EQ THEN 0098:RETURN 0099: END 0100: SUPREC16,1 = SUPREC16,1 + OCONV(POLREC13,RCPSUB,MD4) 0101: NEWQTY = 0 0102: LOCCNT = DCOUNT(SUPREC15,@VM) 0103: FOR LOCSUB = 1 TO LOCCNT 0104:NEWQTY = NEWQTY + SUPREC16,LOCSUB 0105: NEXT LOCSUB 0106: SUPREC3 = NEWQTY 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0108: SUPREC = INSERT(SUPREC,11,1,0,POLREC11,RCPSUB) 0109: SUPREC = INSERT(SUPREC,12,1,0,FIELD(POLKEY,.,1)) 0110: SUPREC = INSERT(SUPREC,13,1,0,VNDKEY) 0111: GOSUB 7400* writes suprec 0112: RETURN : I have never been able to figure out why line 106 gets executed but 107 - 110 do not. My customer refers to it as the lawnmower man. dale ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UD] BASIC Code Failing
It is worth noting that lines 107 - 110 are all doing an INSERT. The lines before and after do not. I'm not sure what that may or may not point to, but it is worth noting. Any chance that what they are inserting is the problem (i.e. POLREC and VNDKEY are null or something other than what you suspect)? JRI -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of dale kelley Sent: Friday, July 26, 2013 9:42 AM To: U2 Users List Subject: Re: [U2] [UD] BASIC Code Failing This is all very interesting to hear. I have a customer who has occasional instances when they complain that a supply receipt has failed to update the last receipt fields. This is the code: 0092: *** 0093: 7000:* UPDATE SUPPLIES 0094: *** 0095: SUPKEY = POLREC2 0096: GOSUB 7300 * reads suprec 0097: IF SUPREC EQ THEN 0098:RETURN 0099: END 0100: SUPREC16,1 = SUPREC16,1 + OCONV(POLREC13,RCPSUB,MD4) 0101: NEWQTY = 0 0102: LOCCNT = DCOUNT(SUPREC15,@VM) 0103: FOR LOCSUB = 1 TO LOCCNT 0104:NEWQTY = NEWQTY + SUPREC16,LOCSUB 0105: NEXT LOCSUB 0106: SUPREC3 = NEWQTY 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0108: SUPREC = INSERT(SUPREC,11,1,0,POLREC11,RCPSUB) 0109: SUPREC = INSERT(SUPREC,12,1,0,FIELD(POLKEY,.,1)) 0110: SUPREC = INSERT(SUPREC,13,1,0,VNDKEY) 0111: GOSUB 7400* writes suprec 0112: RETURN : I have never been able to figure out why line 106 gets executed but 107 - 110 do not. My customer refers to it as the lawnmower man. dale ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://cp.mcafee.com/d/FZsScz8scCQmhP3P3yb3NKVJ6WarZQrFCzASzt5d-Waq9EVdEThjvKztCVJ6WapEVvpood79Kl8XUz458qmDm56RLzaIundEqmDm56RLzaIundImIejthvW_8IfecnpWZOWtTCujhKUepLORQr8EGTKVOEuvkzaT0QSyrhdTdTdw0PVkDjUCvzPqrp7w0e2qKMM-l9OwXn6QOXtfzgSSCnrFYq5O5mUm-wafBitfyp-fdFJAu00CS7TbCMnWhEwdbojjdbFEwdboj3ziWq81Ag60Qid40Bl3Ph0bX8-k29KVLbCN1DxO_sIf ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UD] BASIC Code Failing
If this occasional problem is consistently the same lines then just validate the insert afterwards: 0106.1 MV.CNT = DCOUNT(SUPREC2,@VM) 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0107.1 IF SUPREC2,1 NE POLREC6 THEN 0107.2MV.CNT2 = DCOUNT(SUPREC2,@VM) 0107.3IF MV.CNT = MV.CNT2 THEN GOSUB REPORT.ERROR 0107.4 END With this logic, you're verifying the value and that a new value is, in fact, being created in the attribute. You may want to tweak the logic a bit to match your exact specifics, like if POLREC6 is a non-null value, but this should give you an idea. BobW -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of dale kelley Sent: Friday, July 26, 2013 6:42 AM To: U2 Users List Subject: Re: [U2] [UD] BASIC Code Failing This is all very interesting to hear. I have a customer who has occasional instances when they complain that a supply receipt has failed to update the last receipt fields. This is the code: 0092: *** 0093: 7000:* UPDATE SUPPLIES 0094: *** 0095: SUPKEY = POLREC2 0096: GOSUB 7300 * reads suprec 0097: IF SUPREC EQ THEN 0098:RETURN 0099: END 0100: SUPREC16,1 = SUPREC16,1 + OCONV(POLREC13,RCPSUB,MD4) 0101: NEWQTY = 0 0102: LOCCNT = DCOUNT(SUPREC15,@VM) 0103: FOR LOCSUB = 1 TO LOCCNT 0104:NEWQTY = NEWQTY + SUPREC16,LOCSUB 0105: NEXT LOCSUB 0106: SUPREC3 = NEWQTY 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0108: SUPREC = INSERT(SUPREC,11,1,0,POLREC11,RCPSUB) 0109: SUPREC = INSERT(SUPREC,12,1,0,FIELD(POLKEY,.,1)) 0110: SUPREC = INSERT(SUPREC,13,1,0,VNDKEY) 0111: GOSUB 7400* writes suprec 0112: RETURN : I have never been able to figure out why line 106 gets executed but 107 - 110 do not. My customer refers to it as the lawnmower man. dale ___ 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] [UD] BASIC Code Failing
Thanks Bob, I'll try that validation, maybe even write SUPREC and read it back for another validation. (It's a low intensity system.) At least that way I could be telling them rather than them telling me! dale ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UD] BASIC Code Failing
Intermittent data issues can be one of the hardest to debug. One way that has helped me out is to create a log file to log the transaction information, then verify the data and when it is incorrect, send off an email with the log file key to investigate. David A. Green (480) 813-1725 DAG Consulting -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of dale kelley Sent: Friday, July 26, 2013 9:32 AM To: U2 Users List Subject: Re: [U2] [UD] BASIC Code Failing Thanks Bob, I'll try that validation, maybe even write SUPREC and read it back for another validation. (It's a low intensity system.) At least that way I could be telling them rather than them telling me! dale ___ 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] [UD] BASIC Code Failing
From: Woodward, Bob If this occasional problem is consistently the same lines then just validate the insert afterwards... Dale, don't accept that solution. (Sorry Bob) Note, we're still not really Sure yet that this is a good definition of the problem, just a working theory... Overall, the problem seems to be that some statements can't be trusted to be executed - not specific statements or functions, but random lines of code in different systems. The problem might not be something wrong with the statements themselves but just where they happen to be in the program. The issues might be fixed with some extra code, or by putting the few lines in question into an internal subroutine just to move the bytecode to a different location. But a solution like that is random and subject to just moving the problem to an as yet unknown and perhaps more critical location. When you can't trust a line of code to be executed in a linear series of statements the reliability of everything we do comes into question. If this is indeed the problem, fixing it by writing work around code isn't good for anyone here. It's tough to call in Support when the problem is so vaguely defined but having sat in the chair as a QA Manager and Product Manager for a related product, I can tell you the resolution starts with finding sites that seem to have this issue, assigning someone to the task of gathering data and scheduling tests on the target systems, getting engineers to verify the issue, and establishing a pattern from which a problem can be diagnosed. I don't know who has to initiate that with Rocket Software but I'd assume it starts with paying clients filing formal requests with Support and committing to follow-through toward a resolution. And while re-compilation might indeed be the correct fix, don't accept a tier-1 techie solution intended to just get you off the phone! HTH T ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] How can I Insert a Page Break in a Printer Spooler?
I have a proc building several SORT reports and they are all going into a Spooler. (For later and special processing.) I have added a different kind of report (via code), but I need to have a page break before and after it. Is this possible? PCL codes don't work. When dumped to PDF they just get printed and don't effect the output. - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] How can I Insert a Page Break in a Printer Spooler?
Did you try char(12)? ^L George -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of randyleesmith Sent: Friday, July 26, 2013 2:52 PM To: u2-users@listserver.u2ug.org Subject: [U2] How can I Insert a Page Break in a Printer Spooler? I have a proc building several SORT reports and they are all going into a Spooler. (For later and special processing.) I have added a different kind of report (via code), but I need to have a page break before and after it. Is this possible? PCL codes don't work. When dumped to PDF they just get printed and don't effect the output. - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ 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] How can I Insert a Page Break in a Printer Spooler?
Char 12 is the old school formfeed which has existed long before these young whipper snappers created PCL. In addition, there is the BASIC command PAGE which you could probably execute at the top of your report that runs in code -Original Message- From: randyleesmith randyleesm...@roadrunner.com To: u2-users u2-users@listserver.u2ug.org Sent: Fri, Jul 26, 2013 11:52 am Subject: [U2] How can I Insert a Page Break in a Printer Spooler? I have a proc building several SORT reports and they are all going into a Spooler. (For later and special processing.) I have added a different kind of report (via code), but I need to have a page break before and after it. Is this possible? PCL codes don't work. When dumped to PDF they just get printed and don't effect the output. - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ 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] How can I Insert a Page Break in a Printer Spooler?
The page might output that ^H^J or some combination like that - like @(-1) does. George -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, July 26, 2013 3:09 PM To: u2-users@listserver.u2ug.org Subject: Re: [U2] How can I Insert a Page Break in a Printer Spooler? Char 12 is the old school formfeed which has existed long before these young whipper snappers created PCL. In addition, there is the BASIC command PAGE which you could probably execute at the top of your report that runs in code -Original Message- From: randyleesmith randyleesm...@roadrunner.com To: u2-users u2-users@listserver.u2ug.org Sent: Fri, Jul 26, 2013 11:52 am Subject: [U2] How can I Insert a Page Break in a Printer Spooler? I have a proc building several SORT reports and they are all going into a Spooler. (For later and special processing.) I have added a different kind of report (via code), but I need to have a page break before and after it. Is this possible? PCL codes don't work. When dumped to PDF they just get printed and don't effect the output. - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ 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 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] [UV] Do you avoid TRIGGERS because of the difficulty using DEBUG or RAID with them? Was: Universe Triggers
How many people avoid using triggers BECAUSE of the virtual impossibility of using RAID with Triggers? On 7/26/2013 12:33 PM, Phil Walker wrote: I won't be holding my breath Charles ;-) -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Charles Stevenson Sent: Friday, 26 July 2013 9:22 p.m. To: U2 Users List Subject: Re: [U2] Universe Triggers re. triggers Raid, I could not agree with Phil more. Well said. Come on, Rocket! On 7/19/2013 1:32 AM, Phil Walker wrote: Ken, I am glad you raised the issue about debugging a program with a file which has a trigger attached. I have been on to UV (Vmark/Ardent/IBM/Rocket for ages about fixing this pushing for the ability to be able to step into the trigger code, but at a VERY MINIMUM being able to debug the program and perform the write on the file, and in effect step over the trigger subroutine and carry on debugging. The issue is the trigger subroutine cannot support input, so what UV have done is basically say you are using the debugger so you are inputting debug commands so you will abort. They need to turn this restriction off for debugging so that either of the above two scenarios is supported. In a Microsoft world I can debug anything through the connected world of web/databases etc.. Have had no feedback from UV -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Ken Ford Sent: Friday, 19 July 2013 9:48 a.m. To: u2-users@listserver.u2ug.org Subject: Re: [U2] Universe Triggers Dan, In addition to the other responses you have received, I suggest the following: 1. Have one master file trigger subroutine (globally catalogued) that calls subroutines (locally catalogued) tailored to individual files. This means you don't have to stop and restart Universe when a new trigger is required or a change to an existing one. If the master subroutine changes, you do have to restart Universe. 2. Use a control record that records the subroutine name and state of the trigger for each file having a trigger. 3. Use a program to change the state of a trigger, using the control records in 2 above. 4. Make sure all background processes that have a file with a trigger open are logged out when recompiling the subroutine for that file trigger. 5. Remember that you can't do anything to a file with an active trigger whilst in the RAID debugger (it will crash). Rather, if you are testing a file trigger subroutine, drop the trigger and use a trigger testing program that calls the subroutine after taking a copy of the record being changed, pausing whilst you change it in another session, and then resuming, calling the subroutine. If you would like samples of any of the software mentioned above, let me know, and I can send them to you. Regards, Ken Ford Universe Software Developer t 07 3013 8605 | f 07 3002 8400 e ken.f...@firstmac.com.au | w firstmac.com.au ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] How can I Insert a Page Break in a Printer Spooler?
I've been coding for years and don’t think I ever used PAGE before. Or it’s more like I've never needed to, or use it for a long time and well, you know how that is. ;) I've just got such an unusual situation I've been fighting for a while and this might just be the last thing I needed. Thanks!! - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380p41385.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UD] BASIC Code Failing
Not a problem, Tony. I never want someone to just blindly accept a quick fix. It would be great if manufacturer's would commit the kind of resources you mention when I submit an intermittent/can't replicate/seems to only be on my system type of problem, but my experience is with this kind of one-off, small potato client's problem, I'm lucky if I get a first-tier, new to their helpline, fresh out of training rookie to even give me a call to verify if I knew what I was saying. To me, a work-around is far more desirable to try and gather more information in the error reporting than to leave the situation as is with nothing to give back to the system owner besides a shoulder shrug. If the problem changes, this is as good a piece of information as any that it's most likely not data related and that the problem really does need the type of resources you mentioned. As always, Tony, you have very good, valid information that you generously share with everyone. We all appreciate that of you. BobW -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Tony Gravagno Sent: Friday, July 26, 2013 10:13 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] [UD] BASIC Code Failing From: Woodward, Bob If this occasional problem is consistently the same lines then just validate the insert afterwards... Dale, don't accept that solution. (Sorry Bob) Note, we're still not really Sure yet that this is a good definition of the problem, just a working theory... Overall, the problem seems to be that some statements can't be trusted to be executed - not specific statements or functions, but random lines of code in different systems. The problem might not be something wrong with the statements themselves but just where they happen to be in the program. The issues might be fixed with some extra code, or by putting the few lines in question into an internal subroutine just to move the bytecode to a different location. But a solution like that is random and subject to just moving the problem to an as yet unknown and perhaps more critical location. When you can't trust a line of code to be executed in a linear series of statements the reliability of everything we do comes into question. If this is indeed the problem, fixing it by writing work around code isn't good for anyone here. It's tough to call in Support when the problem is so vaguely defined but having sat in the chair as a QA Manager and Product Manager for a related product, I can tell you the resolution starts with finding sites that seem to have this issue, assigning someone to the task of gathering data and scheduling tests on the target systems, getting engineers to verify the issue, and establishing a pattern from which a problem can be diagnosed. I don't know who has to initiate that with Rocket Software but I'd assume it starts with paying clients filing formal requests with Support and committing to follow-through toward a resolution. And while re-compilation might indeed be the correct fix, don't accept a tier-1 techie solution intended to just get you off the phone! HTH T ___ 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] [UV] Do you avoid TRIGGERS because of the difficulty using DEBUG or RAID with them? Was: Universe Triggers
I know we use them, but whenever one of the programmers wants to debug a program they take them off, which causes us other problems as we have processes which rely on the trigger output. This would be my biggest beef with UV at the moment. -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Charles Stevenson Sent: Saturday, 27 July 2013 7:32 a.m. To: U2 Users List Subject: [U2] [UV] Do you avoid TRIGGERS because of the difficulty using DEBUG or RAID with them? Was: Universe Triggers How many people avoid using triggers BECAUSE of the virtual impossibility of using RAID with Triggers? On 7/26/2013 12:33 PM, Phil Walker wrote: I won't be holding my breath Charles ;-) -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Charles Stevenson Sent: Friday, 26 July 2013 9:22 p.m. To: U2 Users List Subject: Re: [U2] Universe Triggers re. triggers Raid, I could not agree with Phil more. Well said. Come on, Rocket! On 7/19/2013 1:32 AM, Phil Walker wrote: Ken, I am glad you raised the issue about debugging a program with a file which has a trigger attached. I have been on to UV (Vmark/Ardent/IBM/Rocket for ages about fixing this pushing for the ability to be able to step into the trigger code, but at a VERY MINIMUM being able to debug the program and perform the write on the file, and in effect step over the trigger subroutine and carry on debugging. The issue is the trigger subroutine cannot support input, so what UV have done is basically say you are using the debugger so you are inputting debug commands so you will abort. They need to turn this restriction off for debugging so that either of the above two scenarios is supported. In a Microsoft world I can debug anything through the connected world of web/databases etc.. Have had no feedback from UV -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Ken Ford Sent: Friday, 19 July 2013 9:48 a.m. To: u2-users@listserver.u2ug.org Subject: Re: [U2] Universe Triggers Dan, In addition to the other responses you have received, I suggest the following: 1. Have one master file trigger subroutine (globally catalogued) that calls subroutines (locally catalogued) tailored to individual files. This means you don't have to stop and restart Universe when a new trigger is required or a change to an existing one. If the master subroutine changes, you do have to restart Universe. 2. Use a control record that records the subroutine name and state of the trigger for each file having a trigger. 3. Use a program to change the state of a trigger, using the control records in 2 above. 4. Make sure all background processes that have a file with a trigger open are logged out when recompiling the subroutine for that file trigger. 5. Remember that you can't do anything to a file with an active trigger whilst in the RAID debugger (it will crash). Rather, if you are testing a file trigger subroutine, drop the trigger and use a trigger testing program that calls the subroutine after taking a copy of the record being changed, pausing whilst you change it in another session, and then resuming, calling the subroutine. If you would like samples of any of the software mentioned above, let me know, and I can send them to you. Regards, Ken Ford Universe Software Developer t 07 3013 8605 | f 07 3002 8400 e ken.f...@firstmac.com.au | w firstmac.com.au ___ 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] [UD] BASIC Code Failing
Tony made a key qualification in his suggestion, paying customer. In this case, the system has been unupgraded for 7 and unsupported for 6 years. (With this exception UniVerse is just so dependable!) I've noticed that hard to track problems just become albatrosses around the customer service persons neck and smells worse and worse as the ticket ages on their supervisors daily report. The customer is just a small county highway department. I'm going to do 2 things; put in the validation(s) and build a little repair screen that lets them take their exception report and correct the last info. This is the first time I've even had any plan for it except a log file which has reflected nothing. dale ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] How can I Insert a Page Break in a Printer Spooler?
If you use the SETPTR command you can use STARTPAGE and EJECT as options to add a form-feed before and after a report. SETPTR ,, STARTPAGE 2, EJECT set it back to your standard when finished with the unusual situation. SETPTR ,, STARTPAGE 0, NEJECT Date: Fri, 26 Jul 2013 12:36:43 -0700 From: randyleesm...@roadrunner.com To: u2-users@listserver.u2ug.org Subject: Re: [U2] How can I Insert a Page Break in a Printer Spooler? I've been coding for years and don’t think I ever used PAGE before. Or it’s more like I've never needed to, or use it for a long time and well, you know how that is. ;) I've just got such an unusual situation I've been fighting for a while and this might just be the last thing I needed. Thanks!! - I used to be an Optimist until I knocked over the glass. -- View this message in context: http://u2-universe-unidata.1073795.n5.nabble.com/How-can-I-Insert-a-Page-Break-in-a-Printer-Spooler-tp41380p41385.html Sent from the U2 - Users mailing list archive at Nabble.com. ___ 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] [UD] BASIC Code Failing
Tony, I think Bob may have a good troubleshooting technique here. It would be simple to eliminate causes. Line 107 has a couple of potential problems: 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) I have seen these 3 situations in more than 1 MV implementation/flavor - 1. If POLREC6 is null, an empty value won't be inserted, throwing associated values out of sync. Fix by prefixing or suffixing POLREC6 with a character that won't be in the data, then converting it out later. 2. INSERT sometimes doesn't like delimited source. Fix by moving POLREC6 to a variable and inserting that. 3. If POLREC6 has multivalues itself, that presents a whole different problem. Check it first. All these things can be checked in a little test program in just a few minutes, and a safer coding technique used. Charlie If this occasional problem is consistently the same lines then just validate the insert afterwards: 0106.1 MV.CNT = DCOUNT(SUPREC2,@VM) 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0107.1 IF SUPREC2,1 NE POLREC6 THEN 0107.2MV.CNT2 = DCOUNT(SUPREC2,@VM) 0107.3IF MV.CNT = MV.CNT2 THEN GOSUB REPORT.ERROR 0107.4 END With this logic, you're verifying the value and that a new value is, in fact, being created in the attribute. You may want to tweak the logic a bit to match your exact specifics, like if POLREC6 is a non-null value, but this should give you an idea. Tiny Bear's Wild Bird Store Home of Safety Net Shipping http://www.TinyBearWildBirdStore.com Toll Free: 1-855-TinyBear (855-846-9232) On 07-26-2013 12:13 PM, Tony Gravagno wrote: From: Woodward, Bob If this occasional problem is consistently the same lines then just validate the insert afterwards... Dale, don't accept that solution. (Sorry Bob) Note, we're still not really Sure yet that this is a good definition of the problem, just a working theory... Overall, the problem seems to be that some statements can't be trusted to be executed - not specific statements or functions, but random lines of code in different systems. The problem might not be something wrong with the statements themselves but just where they happen to be in the program. The issues might be fixed with some extra code, or by putting the few lines in question into an internal subroutine just to move the bytecode to a different location. But a solution like that is random and subject to just moving the problem to an as yet unknown and perhaps more critical location. When you can't trust a line of code to be executed in a linear series of statements the reliability of everything we do comes into question. If this is indeed the problem, fixing it by writing work around code isn't good for anyone here. It's tough to call in Support when the problem is so vaguely defined but having sat in the chair as a QA Manager and Product Manager for a related product, I can tell you the resolution starts with finding sites that seem to have this issue, assigning someone to the task of gathering data and scheduling tests on the target systems, getting engineers to verify the issue, and establishing a pattern from which a problem can be diagnosed. I don't know who has to initiate that with Rocket Software but I'd assume it starts with paying clients filing formal requests with Support and committing to follow-through toward a resolution. And while re-compilation might indeed be the correct fix, don't accept a tier-1 techie solution intended to just get you off the phone! HTH T ___ 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] [UD] BASIC Code Failing
On 07/26/2013 04:37 PM, Charlie Noah wrote: Tony, I think Bob may have a good troubleshooting technique here. It would be simple to eliminate causes. Line 107 has a couple of potential problems: 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) I have seen these 3 situations in more than 1 MV implementation/flavor - 1. If POLREC6 is null, an empty value won't be inserted, throwing associated values out of sync. Fix by prefixing or suffixing POLREC6 with a character that won't be in the data, then converting it out later. POLREC6 is the unit price of the line item. When it was entered earlier or just now on the fly, my input routine required numeric and I filter for unprintables. So they can't get to receiving without a numeric price, though it could be zero. 2. INSERT sometimes doesn't like delimited source. Fix by moving POLREC6 to a variable and inserting that. I can try this. The intermittence is still troubling. 3. If POLREC6 has multivalues itself, that presents a whole different problem. Check it first. Should not be possible unless I've stepped on it through miscoding in some other programs. All these things can be checked in a little test program in just a few minutes, and a safer coding technique used. Charlie Thanks dale ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] [UD] BASIC Code Failing
Could you post the entire program in case there are the frame boundary issues that Tony talked about? Thanks, Robert Norman ROBERT NORMAN AND ASSOCIATES 23441 Golden Springs Dr., #289, Diamond Bar, CA 91765 (951) 541-1668 i...@keyway.net mailto:i...@keyway.net http://users.keyway.net/~ice/ http://users.keyway.net/%7Eice/ Affordable UNIVERSE programming services for PICK/BASIC, DATA/BASIC, UniVerse Basic, UniBasic, R/BASIC, jBC. On 7/26/2013 6:41 AM, dale kelley wrote: This is all very interesting to hear. I have a customer who has occasional instances when they complain that a supply receipt has failed to update the last receipt fields. This is the code: 0092: *** 0093: 7000:* UPDATE SUPPLIES 0094: *** 0095: SUPKEY = POLREC2 0096: GOSUB 7300 * reads suprec 0097: IF SUPREC EQ THEN 0098:RETURN 0099: END 0100: SUPREC16,1 = SUPREC16,1 + OCONV(POLREC13,RCPSUB,MD4) 0101: NEWQTY = 0 0102: LOCCNT = DCOUNT(SUPREC15,@VM) 0103: FOR LOCSUB = 1 TO LOCCNT 0104:NEWQTY = NEWQTY + SUPREC16,LOCSUB 0105: NEXT LOCSUB 0106: SUPREC3 = NEWQTY 0107: SUPREC = INSERT(SUPREC,2,1,0,POLREC6) 0108: SUPREC = INSERT(SUPREC,11,1,0,POLREC11,RCPSUB) 0109: SUPREC = INSERT(SUPREC,12,1,0,FIELD(POLKEY,.,1)) 0110: SUPREC = INSERT(SUPREC,13,1,0,VNDKEY) 0111: GOSUB 7400* writes suprec 0112: RETURN : I have never been able to figure out why line 106 gets executed but 107 - 110 do not. My customer refers to it as the lawnmower man. dale ___ 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