Re: [U2] Sleeping in Basic
In my latest phantom program I used the PAUSE/WAKE commands as one poster suggested. It was a little bit tricky but this is what I came up with: The driver program has this logic: ... UTP.ID = GETENV(UD_TELNET_PID) CMD = PHANTOM UPDATE.RECORD.PH :REC.KEY: :UTP.ID PRINT START: :TIMEDATE() PRINT CMD PERFORM CMD * PAUSE 60 PRINT FINISH: :TIMEDATE() ... While the Phantomed program has the following: PARAMS = FIELD(TRIM(@SENTENCE), , 2, ) REC.KEY = FIELD(PARAMS, , 1) UTP.ID = FIELD(PARAMS, , 2) PRINT Start UPDATE.REC.PH for :REC.KEY GOSUB UPDATE.REC PRINT Wake up process :UTP.ID WAKE UTP.ID 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 Gregor Scott Sent: Wednesday, January 16, 2013 9:41 PM To: U2 Users List Subject: Re: [U2] Sleeping in Basic This might be a bit late, but just be careful about using openSocket() in a phantom. On UV (and I suspect on UD) this will change the phantom to an iPHANTOM because it will consume a license. If you have multiple phantoms running this concurrently you will start to see a licensing impact you were not expecting. Regards, Gregor -Original Message- ... Doug this works for me in UniData: SLEEP.TIME = 500 ;* .5 Second ERR = openSocket(loopback, 25, 1, SLEEP.TIME, hBUFF) David A. Green (480) 813-1725 DAG Consulting ... This email and any attachments to it are confidential. You must not use, disclose or act on the email if you are not the intended recipient. Liability limited by a scheme approved under Professional Standards Legislation. ___ 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] Sleeping in Basic
This might be a bit late, but just be careful about using openSocket() in a phantom. On UV (and I suspect on UD) this will change the phantom to an iPHANTOM because it will consume a license. If you have multiple phantoms running this concurrently you will start to see a licensing impact you were not expecting. Regards, Gregor -Original Message- ... Doug this works for me in UniData: SLEEP.TIME = 500 ;* .5 Second ERR = openSocket(loopback, 25, 1, SLEEP.TIME, hBUFF) David A. Green (480) 813-1725 DAG Consulting ... This email and any attachments to it are confidential. You must not use, disclose or act on the email if you are not the intended recipient. Liability limited by a scheme approved under Professional Standards Legislation. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
On newer versions of Windows you can find your precision (quanta) by running 'w32tm /query /status' at the command prompt. As an example, on my Windows 7 machine I get: Precision: -6 (15.625ms per tick) So my NAP command would only work in multiples of 15.625ms. Don't forgot that busy machines *can* affect this as well, as your program might not be put back on to the CPU in time. The perils of multi-tasking systems... -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Wednesday, January 02, 2013 10:47 PM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic The original point was to disavow anyone of the idea that you can actually NAP 1 and expect only 1 millisecond to pass Since the quanta aren't that small. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:55 pm Subject: Re: [U2] Sleeping in Basic I do admit I've forgotten what the point of this was, since this thread was about SLEEP and NAP. That said, you are correct- the oconv conversion was not valid, so the original string was returned. Because UV can show time() and system(12) in milliseconds (system dependent), it would seem to not need a mask for milliseconds. On Wed, Jan 2, 2013 at 9:16 PM, Wjhonson wjhon...@aol.com wrote: Yes like I said the Oconv using MMHSM doesn't do anything. Your output 75575.6608 of the place TIME() is unchanged So what's MMHSM supposed to be doing? Because it's not changing the output at all -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:10 pm Subject: Re: [U2] Sleeping in Basic Top. *--: P 001: X = TIME() 002: Y = SYSTEM(12) 003: A = ICONV(X,'MM') 004: B = ICONV(Y,'MM') 005: PRINT X,A 006: PRINT Y,B 007: L = OCONV(X,'MMHSM') 008: M = OCONV(Y,'MMHSM') 009: PRINT L,M Bottom. *--: I *--: FIBR Filed TEST.TIME in file BP. Compiling: Source = 'BP/TEST.TIME', Object = 'BP.O/TEST.TIME' * Compilation Complete. 75575.6608 7557566 75575.6608 7557566 75575.6608 75575.6608 This is 11.1.9 on Linux. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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-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-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
On a busy system, NAP 1 may actually take 2 or 3 milliseconds ... thus the time distortion. A loop of 100 with a NAP 10 would be closer to the mark Ross Ferris Stamina Software Visage Better by Design! -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Saturday, 29 December 2012 4:32 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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 Click https://www.mailcontrol.com/sr/6lVGIXxG7qjGX2PQPOmvUlpAWghQWIvzb3YGjzkT!7MOUCUpiqnJJoGBzmYgl5U4YPnWx2HtmVnUfE+mA+MlhQ== to report this email as spam. ___ 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
Re: [U2] Sleeping in Basic
It's not based on how busy the system is Ross. U2 lives on top of O/S's that use different mechanisms to determine the clock time. U2 is limited by what those O/S's feed to it. That's why NAP is quantized. -Original Message- From: Ross Ferris ro...@stamina.com.au To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 4:11 pm Subject: Re: [U2] Sleeping in Basic On a busy system, NAP 1 may actually take 2 or 3 milliseconds ... thus the time distortion. A loop of 100 with a NAP 10 would be closer to the mark Ross Ferris Stamina Software Visage Better by Design! -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Saturday, 29 December 2012 4:32 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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 Click https://www.mailcontrol.com/sr
Re: [U2] Sleeping in Basic
For example, on my system, the quanta is 15 milliseconds. On a quiet system, as the sole user, I cannot NAP 1 and have it come back in 1 millisecond, it takes 15. Sometimes it takes a bit more, like 16... maybe it's doing some background task. So you can't get more discrete than what the underlying O/S allows. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Just a point of reference, Unidata at version 7.3.2 supports milliseconds for those of you who need it: Issue UDT-4104 - Problem Description UniBasic -- At this release of UniData, the ICONV and OCONV functions have been enhanced to include milliseconds. A new conversion code of 'MM' (Masked Milliseconds) has been added. The internal data storage format is the number of milliseconds since midnight. The syntax for the ICONV Milliseconds (MM) function is: ICONV(num.expr, MM [H] [S[M]]) Regards, Doug www.u2logic.com/tools.html Resizer for those who want current technology On Wed, Jan 2, 2013 at 5:14 PM, Wjhonson wjhon...@aol.com wrote: It's not based on how busy the system is Ross. U2 lives on top of O/S's that use different mechanisms to determine the clock time. U2 is limited by what those O/S's feed to it. That's why NAP is quantized. -Original Message- From: Ross Ferris ro...@stamina.com.au To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 4:11 pm Subject: Re: [U2] Sleeping in Basic On a busy system, NAP 1 may actually take 2 or 3 milliseconds ... thus the time distortion. A loop of 100 with a NAP 10 would be closer to the mark Ross Ferris Stamina Software Visage Better by Design! -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto: u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Saturday, 29 December 2012 4:32 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto: u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09
Re: [U2] Sleeping in Basic
The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. -Original Message- From: Doug Averch dave...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 4:46 pm Subject: Re: [U2] Sleeping in Basic Just a point of reference, Unidata at version 7.3.2 supports milliseconds for those of you who need it: Issue UDT-4104 - Problem Description UniBasic -- At this release of UniData, the ICONV and OCONV functions have been enhanced to include milliseconds. A new conversion code of 'MM' (Masked Milliseconds) has been added. The internal data storage format is the number of milliseconds since midnight. The syntax for the ICONV Milliseconds (MM) function is: ICONV(num.expr, MM [H] [S[M]]) Regards, Doug www.u2logic.com/tools.html Resizer for those who want current technology On Wed, Jan 2, 2013 at 5:14 PM, Wjhonson wjhon...@aol.com wrote: It's not based on how busy the system is Ross. U2 lives on top of O/S's that use different mechanisms to determine the clock time. U2 is limited by what those O/S's feed to it. That's why NAP is quantized. -Original Message- From: Ross Ferris ro...@stamina.com.au To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 4:11 pm Subject: Re: [U2] Sleeping in Basic On a busy system, NAP 1 may actually take 2 or 3 milliseconds ... thus the time distortion. A loop of 100 with a NAP 10 would be closer to the mark Ross Ferris Stamina Software Visage Better by Design! -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto: u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Saturday, 29 December 2012 4:32 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto: u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT
Re: [U2] Sleeping in Basic
Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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] Sleeping in Basic
Top. *--: P 001: X = TIME() 002: Y = SYSTEM(12) 003: A = ICONV(X,'MM') 004: B = ICONV(Y,'MM') 005: PRINT X,A 006: PRINT Y,B 007: L = OCONV(X,'MMHSM') 008: M = OCONV(Y,'MMHSM') 009: PRINT L,M Bottom. *--: I *--: FIBR Filed TEST.TIME in file BP. Compiling: Source = 'BP/TEST.TIME', Object = 'BP.O/TEST.TIME' * Compilation Complete. 75575.6608 7557566 75575.6608 7557566 75575.6608 75575.6608 This is 11.1.9 on Linux. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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
Re: [U2] Sleeping in Basic
I should also mention that in your example, UV is not just dropping the last two digits, it's really rounding them up (o down, based on standard rounding rules) and showing hundredths. Not sure why Rocket did that, though. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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
Re: [U2] Sleeping in Basic
Yes I just noticed that too. Maybe it think's its dollars and cents -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:14 pm Subject: Re: [U2] Sleeping in Basic I should also mention that in your example, UV is not just dropping the last two digits, it's really rounding them up (o down, based on standard rounding rules) and showing hundredths. Not sure why Rocket did that, though. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Yes like I said the Oconv using MMHSM doesn't do anything. Your output 75575.6608 of the place TIME() is unchanged So what's MMHSM supposed to be doing? Because it's not changing the output at all -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:10 pm Subject: Re: [U2] Sleeping in Basic Top. *--: P 001: X = TIME() 002: Y = SYSTEM(12) 003: A = ICONV(X,'MM') 004: B = ICONV(Y,'MM') 005: PRINT X,A 006: PRINT Y,B 007: L = OCONV(X,'MMHSM') 008: M = OCONV(Y,'MMHSM') 009: PRINT L,M Bottom. *--: I *--: FIBR Filed TEST.TIME in file BP. Compiling: Source = 'BP/TEST.TIME', Object = 'BP.O/TEST.TIME' * Compilation Complete. 75575.6608 7557566 75575.6608 7557566 75575.6608 75575.6608 This is 11.1.9 on Linux. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
I do admit I've forgotten what the point of this was, since this thread was about SLEEP and NAP. That said, you are correct- the oconv conversion was not valid, so the original string was returned. Because UV can show time() and system(12) in milliseconds (system dependent), it would seem to not need a mask for milliseconds. On Wed, Jan 2, 2013 at 9:16 PM, Wjhonson wjhon...@aol.com wrote: Yes like I said the Oconv using MMHSM doesn't do anything. Your output 75575.6608 of the place TIME() is unchanged So what's MMHSM supposed to be doing? Because it's not changing the output at all -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:10 pm Subject: Re: [U2] Sleeping in Basic Top. *--: P 001: X = TIME() 002: Y = SYSTEM(12) 003: A = ICONV(X,'MM') 004: B = ICONV(Y,'MM') 005: PRINT X,A 006: PRINT Y,B 007: L = OCONV(X,'MMHSM') 008: M = OCONV(Y,'MMHSM') 009: PRINT L,M Bottom. *--: I *--: FIBR Filed TEST.TIME in file BP. Compiling: Source = 'BP/TEST.TIME', Object = 'BP.O/TEST.TIME' * Compilation Complete. 75575.6608 7557566 75575.6608 7557566 75575.6608 75575.6608 This is 11.1.9 on Linux. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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-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] Sleeping in Basic
The original point was to disavow anyone of the idea that you can actually NAP 1 and expect only 1 millisecond to pass Since the quanta aren't that small. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:55 pm Subject: Re: [U2] Sleeping in Basic I do admit I've forgotten what the point of this was, since this thread was about SLEEP and NAP. That said, you are correct- the oconv conversion was not valid, so the original string was returned. Because UV can show time() and system(12) in milliseconds (system dependent), it would seem to not need a mask for milliseconds. On Wed, Jan 2, 2013 at 9:16 PM, Wjhonson wjhon...@aol.com wrote: Yes like I said the Oconv using MMHSM doesn't do anything. Your output 75575.6608 of the place TIME() is unchanged So what's MMHSM supposed to be doing? Because it's not changing the output at all -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:10 pm Subject: Re: [U2] Sleeping in Basic Top. *--: P 001: X = TIME() 002: Y = SYSTEM(12) 003: A = ICONV(X,'MM') 004: B = ICONV(Y,'MM') 005: PRINT X,A 006: PRINT Y,B 007: L = OCONV(X,'MMHSM') 008: M = OCONV(Y,'MMHSM') 009: PRINT L,M Bottom. *--: I *--: FIBR Filed TEST.TIME in file BP. Compiling: Source = 'BP/TEST.TIME', Object = 'BP.O/TEST.TIME' * Compilation Complete. 75575.6608 7557566 75575.6608 7557566 75575.6608 75575.6608 This is 11.1.9 on Linux. On Wed, Jan 2, 2013 at 9:06 PM, Wjhonson wjhon...@aol.com wrote: On Universe 11, OCONVing it as you suggested just returns the exact same result as the plain TIME() function without any conversion. -Original Message- From: LeRoy Dreyfuss lfd...@gmail.com To: U2 Users List u2-users@listserver.u2ug.org Sent: Wed, Jan 2, 2013 6:02 pm Subject: Re: [U2] Sleeping in Basic Don't ICONV it. Use OCONV. ex: OCONV(TIME(),'MMTHS') On Wed, Jan 2, 2013 at 7:54 PM, Wjhonson wjhon...@aol.com wrote: The 'MM' conversion works with the TIME() (which returns milliseconds) on Universe 11 but for some reason is cutting off the display to only *hundredths* of a second, instead of the thousandths which the milliseconds counts. So TIME() shows 60814.304 but ICONV(TIME(),'MM') shows 6081430 without the trailing 4 milliseconds. ___ 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-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
Re: [U2] Sleeping in Basic
A Caveat on the SLEEP [time] Universe Command (NOT the BASIC Command) if used in A paragraph loop. If what is inside the loop takes less than a second to run, It may be triggered multiple times. Example: PA LOOP SLEEP 17:10 RUN LIB SOMEPROGRAM REPEAT After it runs the first time, and goes back into the loop, if it's still 17:10 it Will run again. At least with UV 10.0.2 George -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Daniel McGrath Sent: Thursday, December 27, 2012 6:31 PM To: U2 Users List (u2-users@listserver.u2ug.org) Subject: Re: [U2] Sleeping in Basic UniVerse supports the NAP [milliseconds] command. On UniData it would be more efficient to use the PAUSE [time] / WAKE command which gives you both an automated timeout as well as allowing you to continue as soon as the PHANTOM declares it okay. You can switch between both of these in your code if you have an pre-compilation process or with creative uses of subroutines. Cheers, Dan McGrath Product Manager Rocket Software 4600 South Ulster Street · Suite 1100 · Denver, CO 80237 · USA T: +1 720 475 8098 · E: dmcgr...@rocketsoftware.com · W: u2.rocketsoftware.com -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Thursday, December 27, 2012 2:56 PM To: 'U2 Users List' Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. www.websense.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
Re: [U2] Sleeping in Basic
Try changing the port number to something that doesn't exist. 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 Doug Farmer Sent: Friday, December 28, 2012 8:22 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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] Sleeping in Basic
Pause can have a timeout value on it, so if for example the maximum time you want to wait is 10 seconds, PAUSE can automatically resume then, at which point you can check if the phantom is still running or a flag doesn't exist. Still doesn't solve your UniData only problem though. Regards, Dan -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Friday, December 28, 2012 8:22 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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] Sleeping in Basic
Great, that works wonderfully! Thanks for the tip I am going to change to localhost from loopback, as I am not all machines have loopback defined. I owe you one Doug Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of David A. Green Sent: Friday, December 28, 2012 9:40 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic Try changing the port number to something that doesn't exist. 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 Doug Farmer Sent: Friday, December 28, 2012 8:22 AM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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 Click https://www.mailcontrol.com/sr/1szQtvpiZq3GX2PQPOmvUnhXC4dDtPIXveiVUAHqQ1BlKLUMIo4Fzoxbcf5uwsOEYPnWx2HtmVmg1M3YVHc55g== to report this email as spam. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Something I ran into with long ago in Universe with sleep/nap. Both use the current TIME() as the starting point (which is milliseconds since midnight) and then waits for your desired period. If your sleep/nap period rolls over midnight your process will hang because its waiting to count to a number it never gets to. Doug Farmer wrote: Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users -- Jeff Schasny - Denver, Co, USA jschasny at gmail dot com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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] Sleeping in Basic
I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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 Click https://www.mailcontrol.com/sr/6lVGIXxG7qjGX2PQPOmvUlpAWghQWIvzb3YGjzkT!7MOUCUpiqnJJoGBzmYgl5U4YPnWx2HtmVnUfE+mA+MlhQ== to report this email as spam. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Just time by itself, with *no* conversion at all :) You don't need a conversion to display the output of TIME() Quantized, means it comes in little packets, and the packet size is bigger than 1 is what I'm saying. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 9:32 am Subject: Re: [U2] Sleeping in Basic I guess I am confused on the definition of quantized. NAP 250 seems to do what I want. Doing a LOOP 1000 and NAP 1 inside the loop, makes it takes quite a few seconds, where I would assume it would be 1 second (1000 x 1 millisecond - 1 second). However, loop 20 with NAP 250 in the loop takes 5 seconds, which is what I would expect (20 x 250 milliseconds = 5 seconds). Also, the OCONV documentation only shows OCONV(num.expr,MT[H][S][c]) as a syntax. No option for displaying milliseconds. The only why I know to do that is to use SYSTEM(12). I guess I was just using TIME() not SYSTEM(12) as it was easier to visually scan. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 11:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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 Click https://www.mailcontrol.com/sr/6lVGIXxG7qjGX2PQPOmvUlpAWghQWIvzb3YGjzkT!7MOUCUpiqnJJoGBzmYgl5U4YPnWx2HtmVnUfE+mA+MlhQ== to report this email as spam. ___ 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] Sleeping in Basic
It is platform specific. For example, Windows will only tell you time at a resolution of 16 milliseconds. Since U2 uses the underlying OS time mechanism, that means its resolution is limited by the OS's. So, LOOP 1000 and NAP 1 will probably take somewhere in the range of 1-16 seconds, depending on many underlying OS differences. Loop 1 NAP 1000 will probably take 1000 milliseconds, give or take a 16 (or 8?) Regards, Dan -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Friday, December 28, 2012 10:16 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Sleeping in Basic Your napping for a quarter of a second is too long :) I was saying that NAP is quantized. You can't actually NAP for a microsecond. So loop 1000 and NAP 1 By the way you can return the microseconds, why are you doing MTS I never bothered to dig into it, to see on what it's quantized. Without MTS you can see the microseconds. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Fri, Dec 28, 2012 7:22 am Subject: Re: [U2] Sleeping in Basic Wow, thanks of all of the responses. Unfortunately, none of them will seem to work on UniData. I will be using NAP on UniVerse. PAUSE and WAKE, I had not heard of. This is only on UniData so not a UniVerse option. It would seem to be a good way to go, except for if the phantom process aborts, the WAKE is never executed and the invoking process (UniObjects subroutine) hangs forever. David's openSocket suggestion does not wait at all if the socket can be opened. If it cannot (for example host name is bad), the timeout is sometimes much longer, probably due to DNS lookup of the bad host name. I tried these examples in the code below. The results are show below the code. When I run this, using NAP 250, I get 4 times the same, then another 4 times the same etc. This seems to show NAP 250 does sleep for a quarter of a second. Doing NAP 1 for 2000 iterations took 31 seconds. Probably due to overhead of setting up NAP 2000 times. The openSocket came right back all the time. Any other ideas, I am open to testing. Again, thanks for all of the responses! Doug Farmer 952-417-5225 Program Listing 0001 PRINT 'Nap 250' 0002 FOR IDX = 1 TO 20 0003 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0004 NAP 250 0005 NEXT IDX 0006 PRINT 'Start of 2000' 0007 PRINT OCONV(TIME(),'MTS') 0008 FOR IDX = 1 TO 2000 0009 NAP 1 0010 NEXT IDX 0011 PRINT OCONV(TIME(),'MTS') 0012 PRINT 'DONE WITH 2000' 0013 PRINT 'Open Socket' 0014 FOR IDX = 1 TO 20 0015 SleepTime = 250 0016 ERR = openSocket('loopback',25,1,SleepTime,HBUFF) 0017 PRINT IDX R#2:' ':OCONV(TIME(),'MTS') 0018 NEXT IDX Output from Program Nap 250 1 09:11:29 2 09:11:29 3 09:11:29 4 09:11:30 5 09:11:30 6 09:11:30 7 09:11:30 8 09:11:31 9 09:11:31 10 09:11:31 11 09:11:31 12 09:11:32 13 09:11:32 14 09:11:32 15 09:11:32 16 09:11:33 17 09:11:33 18 09:11:33 19 09:11:33 20 09:11:34 Start of 2000 09:11:34 09:12:05 DONE WITH 2000 Open Socket 1 09:12:05 2 09:12:05 3 09:12:05 4 09:12:05 5 09:12:05 6 09:12:05 7 09:12:05 8 09:12:05 9 09:12:05 10 09:12:05 11 09:12:05 12 09:12:05 13 09:12:05 14 09:12:05 15 09:12:05 16 09:12:05 17 09:12:05 18 09:12:05 19 09:12:05 20 09:12:05 This message has been scanned for malware by Websense. www.websense.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] Sleeping in Basic
Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. www.websense.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
What you really need is the ability to POKE. So you execute the phantom and return it's handle to another process (PID) The waiter stops at a regular INPUT. The responder then could POKE something carriage return to the waiter's INPUT That would be instant reaction, no wait, and no false starting. Did it on OA on Sequoia because they had a POKE. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thu, Dec 27, 2012 1:56 pm Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. www.websense.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] Sleeping in Basic
If my memory serves correct, I believe on UniData it's RQM . -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Don Robinson Sent: Friday, 28 December 2012 9:07 AM To: U2 Users List Subject: Re: [U2] Sleeping in Basic Doug, If Universe, look at NAP, it does milliseconds. Can't remember what it is in Unidata, maybe SLEEPM? Don From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thursday, December 27, 2012 4:56 PM Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. http://www.websense.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
Re: [U2] Sleeping in Basic
Thanks for this tip on NAP, The documentation does say it sleeps for milliseconds. I tried it and it works. RQM for UniData says it does the same as sleep. Well 1/2 of the problem solved! Still looking or a UniData answer. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Whitehorn Sent: Thursday, December 27, 2012 4:12 PM To: U2 Users List Subject: Re: [U2] Sleeping in Basic If my memory serves correct, I believe on UniData it's RQM . -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Don Robinson Sent: Friday, 28 December 2012 9:07 AM To: U2 Users List Subject: Re: [U2] Sleeping in Basic Doug, If Universe, look at NAP, it does milliseconds. Can't remember what it is in Unidata, maybe SLEEPM? Don From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thursday, December 27, 2012 4:56 PM Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. http://www.websense.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 Click https://www.mailcontrol.com/sr/Tv+r55u8HfPGX2PQPOmvUhQdr9UqjTk1M2f99tr8WdvOye2VhyKlGIdl6QC!L7u!0ZOMv8J8HrOrbIY9K1KtKg== to report this email as spam. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
I would be careful of believing NAP :) The sleeping is, I believe, based entirely on the time slicing and clock interrupting ability, and so dependent on that mechanism internally of the underlying O/S. I have found, on various implementations, that NAP doesn't actually support any possible delay, but only quantized results. Try looping for 1000 iterations on NAP 1 and then spewing TIME() and you'll see. -Original Message- From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thu, Dec 27, 2012 2:47 pm Subject: Re: [U2] Sleeping in Basic Thanks for this tip on NAP, The documentation does say it sleeps for milliseconds. I tried it and it works. RQM for UniData says it does the same as sleep. Well 1/2 of the problem solved! Still looking or a UniData answer. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Whitehorn Sent: Thursday, December 27, 2012 4:12 PM To: U2 Users List Subject: Re: [U2] Sleeping in Basic If my memory serves correct, I believe on UniData it's RQM . -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Don Robinson Sent: Friday, 28 December 2012 9:07 AM To: U2 Users List Subject: Re: [U2] Sleeping in Basic Doug, If Universe, look at NAP, it does milliseconds. Can't remember what it is in Unidata, maybe SLEEPM? Don From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thursday, December 27, 2012 4:56 PM Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. http://www.websense.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 Click https://www.mailcontrol.com/sr/Tv+r55u8HfPGX2PQPOmvUhQdr9UqjTk1M2f99tr8WdvOye2VhyKlGIdl6QC!L7u!0ZOMv8J8HrOrbIY9K1KtKg== to report this email as spam. ___ 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] Sleeping in Basic
On 12/27/2012 4:56 PM, Doug Farmer wrote: Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. snip See if NAP is supported in your release... -- Allen Egerton ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Sleeping in Basic
Doug this works for me in UniData: SLEEP.TIME = 500 ;* .5 Second ERR = openSocket(loopback, 25, 1, SLEEP.TIME, hBUFF) 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 Doug Farmer Sent: Thursday, December 27, 2012 3:47 PM To: 'U2 Users List' Subject: Re: [U2] Sleeping in Basic Thanks for this tip on NAP, The documentation does say it sleeps for milliseconds. I tried it and it works. RQM for UniData says it does the same as sleep. Well 1/2 of the problem solved! Still looking or a UniData answer. Doug Farmer 952-417-5225 -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Whitehorn Sent: Thursday, December 27, 2012 4:12 PM To: U2 Users List Subject: Re: [U2] Sleeping in Basic If my memory serves correct, I believe on UniData it's RQM . -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Don Robinson Sent: Friday, 28 December 2012 9:07 AM To: U2 Users List Subject: Re: [U2] Sleeping in Basic Doug, If Universe, look at NAP, it does milliseconds. Can't remember what it is in Unidata, maybe SLEEPM? Don From: Doug Farmer dfar...@epicor.com To: 'U2 Users List' u2-users@listserver.u2ug.org Sent: Thursday, December 27, 2012 4:56 PM Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. http://www.websense.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 Click https://www.mailcontrol.com/sr/Tv+r55u8HfPGX2PQPOmvUhQdr9UqjTk1M2f99tr8WdvOy e2VhyKlGIdl6QC!L7u!0ZOMv8J8HrOrbIY9K1KtKg== to report this email as spam. ___ 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] Sleeping in Basic
UniVerse supports the NAP [milliseconds] command. On UniData it would be more efficient to use the PAUSE [time] / WAKE command which gives you both an automated timeout as well as allowing you to continue as soon as the PHANTOM declares it okay. You can switch between both of these in your code if you have an pre-compilation process or with creative uses of subroutines. Cheers, Dan McGrath Product Manager Rocket Software 4600 South Ulster Street · Suite 1100 · Denver, CO 80237 · USA T: +1 720 475 8098 · E: dmcgr...@rocketsoftware.com · W: u2.rocketsoftware.com -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Doug Farmer Sent: Thursday, December 27, 2012 2:56 PM To: 'U2 Users List' Subject: [U2] Sleeping in Basic Happy holidays all, I just want to make sure I did not miss something over the U2 releases. Since the Microdata Reality days, I have used SLEEP nn to sleep for nn seconds. Simple, usually does the trick. But in today's gotta have it now, I won't wait, environment, a second is sometimes way too long. Is there anything I missed over the last few years to sleep for less than a second? I am executing a phantom command from a UniObjects subroutine call and waiting for it to finish. I am using a phantom, just in case the program aborts or hangs. I am not in control of what code is being run, it could try to read or write to an unopened file for example. If the program does hang, I get the dreaded Error 30102 message (not helpful at all). In most cases, the program reads the data it needs and finishes in less than a second. The UniObjects subroutine then writes a flag I can pick up to see that the data is ready to return to the UniObjects client. I don't want the subroutine constantly looping and reading for the flag. This would take a lot of the CPU cycles. But, I don't want to wait up to a second to see that the phantom has completed. Any ideas would be helpful. This needs to run on both UniData and UniVerse. Have a great New Year. One more year older for us experienced developers in the PICK community. (circa 1978) Doug Farmer This message has been scanned for malware by Websense. www.websense.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