VMS Help  —  DECdts  utc_mkreltime
    Converts a tm structure that expresses relative time to a
    relative binary timestamp.

    Format

      #include <utc.h>

      int utc_mkreltime(*utc, *timetm, tns, *inacctm, ins)

         utc_t *utc;
         const struct tm *timetm;
         long tns;
         const struct tm *inacctm;
         long ins;

1  –  Parameters

    Input

 timetm

    A tm structure that expresses a relative time. On input, tm_wday
    and tm_yday are ignored.

 tns

    Nanoseconds since time component.

 inacctm

    A tm structure that expresses seconds of inaccuracy. If tm_yday
    is negative, the inaccuracy is considered to be infinite. On
    input, tm_mday, tm_mon, tm_year, tm_wday, tm_isdst, and tm_zone
    are ignored.

 ins

    Nanoseconds of inaccuracy component.

    Output

 utc

    Resulting relative binary timestamp.

2  –  Description

    The Make Relative Time routine converts a tm structure that
    expresses relative time to a relative binary timestamp.
    Additional inputs include nanoseconds since the last second of
    time and nanoseconds of inaccuracy.

3  –  Returns

     0   Indicates that the routine executed successfully.
    -1   Indicates an invalid time argument or invalid results.

4  –  Example

    The following example converts a string relative time in the
    format (1991-04-01-12:12:12.12I12.12) to a binary timestamp. This
    may be part of an input relative timestamp routine, though a real
    implementation will include range checking.

    utc_t       utc;
    struct tm   tmtime, tminacc;
    float       tsec, isec;
    double      tmp;
    long        tnsec, insec;
    int         i, tzhour, tzmin, year, mon;
    char        *string;

    /*
     *   Try to convert the string...
     */

    if(sscanf(string, "%d-%d-%d-%d:%d:%eI%e",
              &year, &mon, &tmtime.tm_mday, &tmtime.tm_hour,
              &tmtime.tm_min, &tsec, &isec) != 7) {

    /*
     *   ERROR...
     */
        exit(1);

    }

    /*
     *   Fill in the fields...
     */

    tmtime.tm_year = year - 1900;
    tmtime.tm_mon = --mon;
    tmtime.tm_sec = tsec;
    tnsec = (modf(tsec, &tmp)*1.0E9);
    tminacc.tm_sec = isec;
    insec = (modf(isec, &tmp)*1.0E9);

    /*
     * Convert to a binary timestamp...
     */

    utc_mkreltime(&utc,     /* Out: Resultant binary timestamp      */
                  &tmtime,  /* In:  tm struct that represents input */
                  tnsec,    /* In:  Nanoseconds from input          */
                  &tminacc, /* In:  tm struct that represents inacc */
                  insec);   /* In:  Nanoseconds from input          */

5  –  Related Functions

    utc_reltime
Close Help