Library /sys$common/syshlp/helplib.hlb  —  CRTL  decc$fix_time
    Converts OpenVMS binary system times to UNIX binary times.

    Format

      #include  <unixlib.h>

      unsigned int decc$fix_time  (void *vms_time);

1  –  Argument

 vms_time

    The address of a quadword containing an OpenVMS binary time:

    unsigned int quadword[2];
    unsigned int *vms_time = quadword;

2  –  Description

    The decc$fix_time routine converts an OpenVMS binary system time
    (a 64-bit quadword containing the number of 100-nanosecond ticks
    since 00:00 November 17, 1858) to a UNIX binary time (a longword
    containing the number of seconds since 00:00 January 1, 1970).
    This routine is useful for converting binary times returned by
    OpenVMS system services and RMS services to the format used by
    some C RTL routines, such as ctime and localtime.

3  –  Return Values

    x                  A longword containing the number of seconds
                       since 00:00 January 1, 1970.
    (unsigned          Indicates an error. Be aware, that a return
    int)(-1)           value of (unsigned int)(-1) can also represent
                       a valid date of Sun Feb 7 06:28:15 2106.

4  –  Example

        #include <unixlib.h>
        #include <stdio.h>
        #include <starlet.h>  /* OpenVMS specific SYS$ routines)  */

        main()
        {
        unsigned int current_vms_time[2];
        /*quadword for OpenVMS time*/
        unsigned int number_of_seconds;   /* number of seconds     */

        /* first get the current system time */
        sys$gettim(&current_vms_time[0]);

        /* fix the time */
        number_of_seconds = decc$fix_time(&current_vms_time[0]);

        printf("Number of seconds since 00:00 January 1, 1970 = %d",
                number_of_seconds);
        }

      This example shows how to use the decc$fix_time routine in
      VSI C. It also shows the use of the SYS$GETTIM system
      service.
Close Help