View previous topic :: View next topic
|
Author |
Message |
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
How can i display the time for which my program(Simple cobol codes including the SQLs) ran. Means the time taken between I submitted my job and the time I got the return code.
Please provide me with the suggestions. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Display the time when your program enters the PROCEDURE DIVISION and again display the time when you "get the return code". |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
or look into JESMSGLG of a JOB. There can be alternate way if you've JHS installed at your shop. |
|
Back to top |
|
|
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
Hello Anuj & DS,
Anuj,
Regarding the Jesmsglg, i can only see the start and end time....I need this time to be displayed in my program.
DS,
Do you have any idea regarding how can i display the time when the pgm enters P.D. and the time it finds the stop run command. |
|
Back to top |
|
|
Craq Giegerich
Senior Member
Joined: 19 May 2007 Posts: 1512 Location: Virginia, USA
|
|
|
|
You would have to display the end time before the stop run. See Dick's message above. |
|
Back to top |
|
|
agkshirsagar
Active Member
Joined: 27 Feb 2007 Posts: 691 Location: Earth
|
|
|
|
use CURRENT-DATE intrinsic function to get current time.
OR
use ACCEPT TIME-VAR from TIME
OR
Use CURRENT_TIME special register to get time from DB2
.. then display the value you got in working storage variable.
See the manual if you need more help in using above suggestions.
As already suggested by Craq and Dick ( Good rhyming, isn't it? ) you have to do it twice, after PROCEDURE DIVISION and before the STOP RUN. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Do you want to know when the "return code" is returned or when the program is going to terminate? There could be some amount of time elapse between the return code and the termination. . .
Code: |
ACCEPT MY-TIME FROM TIME.
DISPLAY MY-TIME. |
will do what you want. |
|
Back to top |
|
|
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
Thanks everyone for putting inputs...
I have opted displaying the time twice as said by DS just after P.D. and just before Stop run.
Also wanted to check if there is any intrinsic function available for my requirement as we have functions like when-compiled. I guess there are no such function available.Am I right??? |
|
Back to top |
|
|
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
D.S.
Actually i wanted to display for how much my program run. I have better explanation for this.
I wanted to display the difference of
STARTED - TIME=08.34.21
ENDED - TIME=08.34.22 of
JESMSGLG |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Without getting too fancy, you could convert the start and end times to seconds, subtract the "start second" from the "end second", and convert the answer back to hours, minutes, and seconds.
One simple check i'd include would be to ensure that the end time was later than the start time.
How elegant you make the solution depends on if the job is of fairly short duration and if it might run over midnight. If the job(s) run over midnight, add 86400 (if i did it right, that is the number of seconds in a day) to the "end second" before subtracting. |
|
Back to top |
|
|
Craq Giegerich
Senior Member
Joined: 19 May 2007 Posts: 1512 Location: Virginia, USA
|
|
|
|
Convert hours to seconds and minutes to seconds then subtract the begin from the end. If the difference is negative add 86400 to results. Divide the results by 60 to get minutes with the remainder as seconds, divide the minutes by 60 to get hours with the remainder as minutes.
If your job never runs more than 24 hours this will work.
Code: |
COMPUTE START-TIME = (START-HOURS * 3600) + (START-MINUTES * 60) + START-SECONDS.
COMPUTE END-TIME = (END-HOURS * 3600) + (END-MINUTES * 60) + END-SECONDS.
SUBTRACT START-TIME FROM END-TIME GIVING RUN-TIME.
IF RUN-TIME < 0
ADD 86400 TO RUN-TIME
END-IF.
DIVIDE RUN-TIME BY 60 GIVING RUN-TIME REMAINDER RUN-SECONDS.
DIVIDE RUN-TIME BY 60 GIVING RUN-HOURS REMAINDER RUN-MINUTES.
|
|
|
Back to top |
|
|
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
Thanks Crag.....
It worked |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Craiq,
Pehaps I was never in a need to implement the above, well, after reading the thread I'm still not sure about how to find time for this
Quote: |
the time I got the return code |
Can you please guide me what will be there in END-TIME, today i'm thinking too hard I guess.. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hi Anuj,
Quote: |
what will be there in END-TIME, |
END-TIME will have whatever time is in the system clock when the code gets it from the system variable.
Placement in the code would be entirely up to the coder. It could be when the return-code is detected after an sql statement or it could be at end-of-job or anywhere else that there was a need to see how much time had elapsed between 2 places in the code. |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Dick,
dick scherrer wrote: |
whatever time is in the system clock when the code gets it from the system variable. |
Did you want to say there will be a statement like this
Code: |
ACCEPT END-TIME FROM TIME. |
in the program just before GOBACK ? If yes, I'm just curious to know, what will be the use of such an information.. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hi Anuj,
Quote: |
what will be the use of such an information.. |
If one was to "accept the time" at the "start" of a process and at the "end" of a process, or a subroutine, or from one point until another, one could calculate the duration.
It is fairly common to want to know how long "something" takes. In this case the duration is clock tme rather than calendar time (i.e. days).
Look above at the previous replies. Both a description and the code to do this have been posted. |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
This topic falls under 'useless information'. requirements of this silly nature are usually demanded by someone who knows nothing about computers.
all you are calculating is elapsed wall clock time.
if on monday I run this program and nothing else is running in the box, the elapsed time will be x.
if on tuesday I run this program and it is end of month, end of quarter, the box would probably be busy and the program would get time slices shared with 100 jobs instead of just 1. thus the elapsed time will be greater.
Depending upon services called by the job, the elapsed time will be even longer if the demand upon services (more jobs in the system) is greater; especially db2. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Quote: |
This topic falls under 'useless information'. |
'Fraid i must not quite agree. . .
This can be a very easy way to get some numbers to isolate sections of problem code.
I've been invited to be part of several very large data conversion exercises (usually after it was discovered that there was not enough time for the comversion process to run in the cutover time-frame). To get some system to the "new replacement system", most of the existing data had to be converted. Some of these conversion programs would run for multiple days wall-time due to the way the they were implemented.
A common "offender" was the desire to use the "new" data validation routines to validate the old data to be converted. These routines were called-subroutines that were meant to support the online transactons that input new user data. In the "real" environment, they ran sub-second combined, but when there were from millions to hundreds of millions of validations, the one-at-time method came up very lacking.
By showing elapsed time at various places in the code the conversion teams were able to focus on which improvements gave the "biggest bang" for the time invested to get the performance to acceptable.
If several benchmarks were run with different machine loads, the numbers didn't mean much for posterity, but they did help point where to start with the process improvements.
FWIW. . . |
|
Back to top |
|
|
|