HP OpenVMS Systemsask the wizard |
The Question is: How to get gmt time with a.microsecond precision. and taking care of Day light saving. i.e. similar gmtime function in vms version 7.2. The Answer is :
Not without external assistance -- the OpenVMS time displays will
generally operate at centisecond resolution.
If the resolution of the existing UTC services is insufficient, you
could consider using the Alpha System Cycle Counter (SCC) -- see
below -- or the use of external hardware.
Daylight savings time change-overs can also be handled via the Compaq
C run-time library, via the existing native quadword and UTC system
service calls, or other similar interface.
Alternatively, please contact the customer support center for
assistance.
/*
** This program demonstrates the usage of the Alpha System Cycle
** Counter (SCC) register.
*/
#include <stdio.h>
#include <signal.h>
#include <hwrpbdef.h>
#include <evx_opcodes.h>
#include <c_asm.h>
#define QUOTE(s) #s
#define QUOTEVAL(s) QUOTE(s)
#define RSCC() (asm("call_pal " QUOTEVAL(EVX$PAL_RSCC)))
extern HWRPB* exe$gpq_hwrpb; /* Hardware Restart Parameter Block */
int main (int argc, char** argv)
{
__int64 scc1, scc2, micro;
scc1 = RSCC();
sleep (3);
scc2 = RSCC();
/*
** The number of ticks per second is located in the HWRPB.
** Convert this value to microseconds.
*/
micro = (1000000 * (scc2 - scc1)) /
exe$gpq_hwrpb->hwrpb$iq_cycle_count_freq;
printf ("%Ld microseconds\n", micro);
}
|