TSTDLIB DEFINITIONS AUTOMATIC TAGS ::= BEGIN /* Properties Basic = Date | Time | Date-Time | Interval | Rec-Interval Date = C | Y | YM | YMD | YD | YW | YWD Year = Basic | Proleptic | Negative | L5 | L6 | L7, etc Time = H | HM | HMS | HF1 | HF2 | HF3 | HMF1 | HMF2 | HMF3 | HMSF1 | HMSF2 | HMSF3 Local-or-UTC = L | Z | LD Interval-type = SE | D | SD |DE SE-point = Date | Time | Date-Time Recurrence = Unlimited | R1 | R2 | R3 Midnight = Start | End */ DATE-TIME-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { date Date-Type, time Time-Type } --MY-DATE-TIME-ENCODING ::= DATE-TIME-ENCODING{DATE-ENCODING, TIME-OF-DAY-ENCODING} DATE-ENCODING ::= SEQUENCE { year YEAR-ENCODING, month INTEGER (1..12), -- 4 bits day INTEGER (1..31) -- 5 bits -- } TIME-OF-DAY-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits seconds INTEGER (0..60) -- 5 bits -- } TIME-OF-DAY-AND-DIFF-ENCODING ::= SEQUENCE { local-time SEQUENCE { hours INTEGER (0..24), minutes INTEGER (0..59), seconds INTEGER (0..60) }, time-difference TIME-DIFFERENCE } TIME-DIFFERENCE ::= SEQUENCE { sign ENUMERATED { positive, negative }, hours INTEGER (0..15), minutes INTEGER (1..59) OPTIONAL } CENTURY-ENCODING ::= INTEGER(0..99) -- 7 bits ANY-CENTURY-ENCODING ::= INTEGER(MIN..MAX) YEAR-ENCODING ::= CHOICE { -- 2 bits for choice determinant immediate INTEGER (2005..2020), -- 4 bits near-future INTEGER (2021..2276), -- 8 bits near-past INTEGER (1749..2004), -- 8 bits remainder INTEGER (MIN..1748 | 2277..MAX) } ANY-YEAR-ENCODING ::= INTEGER(MIN..MAX) YEAR-MONTH-ENCODING ::= SEQUENCE { year YEAR-ENCODING, month INTEGER (1..12) -- 4 bits -- } ANY-YEAR-MONTH-ENCODING ::= SEQUENCE { year ANY-YEAR-ENCODING, month INTEGER (1..12) } ANY-DATE-ENCODING ::= SEQUENCE { year ANY-YEAR-ENCODING, month INTEGER (1..12), day INTEGER (1..31) } YEAR-DAY-ENCODING ::= SEQUENCE { year YEAR-ENCODING, day INTEGER (1..366) } ANY-YEAR-DAY-ENCODING ::= SEQUENCE { year ANY-YEAR-ENCODING, day INTEGER (1..366) } YEAR-WEEK-ENCODING ::= SEQUENCE { year YEAR-ENCODING, week INTEGER (1..53) -- 6 bits -- } ANY-YEAR-WEEK-ENCODING ::= SEQUENCE { year ANY-YEAR-ENCODING, week INTEGER (1..53) } YEAR-WEEK-DAY-ENCODING ::= SEQUENCE { year YEAR-ENCODING, week INTEGER (1..53), -- 6 bits day INTEGER (1..7) -- 3 bits -- } ANY-YEAR-WEEK-DAY-ENCODING ::= SEQUENCE { year ANY-YEAR-ENCODING, week INTEGER (1..53), day INTEGER (1..7) } HOURS-ENCODING ::= INTEGER(0..24) -- 5 bits HOURS-UTC-ENCODING ::= INTEGER(0..24) -- 5 bits HOURS-AND-DIFF-ENCODING ::= SEQUENCE { local-hours INTEGER (0..24), time-difference TIME-DIFFERENCE } MINUTES-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59) -- 5 bits -- } MINUTES-UTC-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59) -- 5 bits -- } MINUTES-AND-DIFF-ENCODING ::= SEQUENCE { local-time SEQUENCE { hours INTEGER (0..24), minutes INTEGER (0..59) }, time-difference TIME-DIFFERENCE } TIME-OF-DAY-UTC-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits seconds INTEGER (0..60) -- 5 bits -- } HOURS-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } HOURS-UTC-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } HOURS-AND-DIFF-AND-FRACTION-ENCODING ::= SEQUENCE { local-hours INTEGER (0..24), -- 5 bits fraction INTEGER (0..999, ..., 1000..MAX), -- 11 bits for up to three digits accuracy time-difference TIME-DIFFERENCE } MINUTES-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } MINUTES-UTC-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } MINUTES-AND-DIFF-AND-FRACTION-ENCODING ::= SEQUENCE { local-time SEQUENCE { hours INTEGER (0..24), minutes INTEGER (0..59), fraction INTEGER (0..999, ..., 1000..MAX) }, time-difference TIME-DIFFERENCE } TIME-OF-DAY-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits seconds INTEGER (0..60), -- 5 bits -- fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } TIME-OF-DAY-UTC-AND-FRACTION-ENCODING ::= SEQUENCE { hours INTEGER (0..24), -- 5 bits minutes INTEGER (0..59), -- 5 bits seconds INTEGER (0..60), -- 5 bits -- fraction INTEGER (0..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy -- } TIME-OF-DAY-AND-DIFF-AND-FRACTION-ENCODING ::= SEQUENCE { local-time SEQUENCE { hours INTEGER (0..24), minutes INTEGER (0..59), seconds INTEGER (0..60), fraction INTEGER (0..999, ..., 1000..MAX) }, time-difference TIME-DIFFERENCE } START-END-DATE-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { start Date-Type, end Date-Type } START-END-TIME-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { start Time-Type, end Time-Type } START-END-DATE-TIME-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { start DATE-TIME-ENCODING {Date-Type, Time-Type}, end DATE-TIME-ENCODING {Date-Type, Time-Type} } DURATION-INTERVAL-ENCODING ::= SEQUENCE { -- 8 bits for optionality years INTEGER (0..31, ..., 32..MAX) OPTIONAL, -- 5 bits for up to 31 years months INTEGER (0..15, ..., 16..MAX) OPTIONAL, -- 4 bits for up to 15 months weeks INTEGER (0..63, ..., 64..MAX) OPTIONAL, -- 6 bits for up to 63 weeks days INTEGER (0..31, ..., 32..MAX) OPTIONAL, -- 5 bits for up to 31 days hours INTEGER (0..31, ..., 32..MAX) OPTIONAL, -- 5 bits for up to 31 hours minutes INTEGER (0..63, ..., 64..MAX) OPTIONAL, -- 6 bits for up to 63 minutes seconds INTEGER (0..63, ..., 64..MAX) OPTIONAL, -- 6 bits for up to 63 seconds fractional-part SEQUENCE { number-of-digits INTEGER(1..3, ..., 4..MAX), -- 3 bits for up to three digits accuracy fractional-value INTEGER(1..999, ..., 1000..MAX) -- 11 bits for up to three digits accuracy } OPTIONAL } START-DATE-DURATION-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { start Date-Type, duration DURATION-INTERVAL-ENCODING } START-TIME-DURATION-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { start Time-Type, duration DURATION-INTERVAL-ENCODING } START-DATE-TIME-DURATION-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { start DATE-TIME-ENCODING {Date-Type, Time-Type}, duration DURATION-INTERVAL-ENCODING } DURATION-END-DATE-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { duration DURATION-INTERVAL-ENCODING, end Date-Type } DURATION-END-TIME-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { duration DURATION-INTERVAL-ENCODING, end Time-Type } DURATION-END-DATE-TIME-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { duration DURATION-INTERVAL-ENCODING, end DATE-TIME-ENCODING {Date-Type, Time-Type} } REC-START-END-DATE-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start Date-Type, end Date-Type } REC-START-END-TIME-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start Time-Type, end Time-Type } REC-START-END-DATE-TIME-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start DATE-TIME-ENCODING {Date-Type, Time-Type}, end DATE-TIME-ENCODING {Date-Type, Time-Type} } REC-DURATION-INTERVAL-ENCODING ::= SEQUENCE { recurrence INTEGER OPTIONAL, duration DURATION-INTERVAL-ENCODING } REC-START-DATE-DURATION-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start Date-Type, duration DURATION-INTERVAL-ENCODING } REC-START-TIME-DURATION-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start Time-Type, duration DURATION-INTERVAL-ENCODING } REC-START-DATE-TIME-DURATION-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, start DATE-TIME-ENCODING {Date-Type, Time-Type}, duration DURATION-INTERVAL-ENCODING } REC-DURATION-END-DATE-INTERVAL-ENCODING {Date-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, duration DURATION-INTERVAL-ENCODING, end Date-Type } REC-DURATION-END-TIME-INTERVAL-ENCODING {Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, duration DURATION-INTERVAL-ENCODING, end Time-Type } REC-DURATION-END-DATE-TIME-INTERVAL-ENCODING {Date-Type, Time-Type} ::= SEQUENCE { recurrence INTEGER OPTIONAL, duration DURATION-INTERVAL-ENCODING, end DATE-TIME-ENCODING {Date-Type, Time-Type} } MIXED-ENCODING{DATE-TYPE, TIME-TYPE} ::= CHOICE { row-1 CENTURY-ENCODING, row-2 ANY-CENTURY-ENCODING, row-3 YEAR-ENCODING, row-4 ANY-YEAR-ENCODING, row-5 YEAR-MONTH-ENCODING, row-6 ANY-YEAR-MONTH-ENCODING, row-7 DATE-ENCODING, row-8 ANY-DATE-ENCODING, row-9 YEAR-DAY-ENCODING, row-10 ANY-YEAR-DAY-ENCODING, row-11 YEAR-WEEK-ENCODING, row-12 ANY-YEAR-WEEK-ENCODING, row-13 YEAR-WEEK-DAY-ENCODING, row-14 ANY-YEAR-WEEK-DAY-ENCODING, row-15 HOURS-ENCODING, row-16 HOURS-UTC-ENCODING, row-17 HOURS-AND-DIFF-ENCODING, row-18 MINUTES-ENCODING, row-19 MINUTES-UTC-ENCODING, row-20 MINUTES-AND-DIFF-ENCODING, row-21 TIME-OF-DAY-ENCODING, row-22 TIME-OF-DAY-UTC-ENCODING, row-23 TIME-OF-DAY-AND-DIFF-ENCODING, row-24 FRACTIONAL-TIME{HOURS-AND-FRACTION-ENCODING}, row-25 FRACTIONAL-TIME{HOURS-UTC-AND-FRACTION-ENCODING}, row-26 FRACTIONAL-TIME{HOURS-AND-DIFF-AND-FRACTION-ENCODING}, row-27 FRACTIONAL-TIME{MINUTES-AND-FRACTION-ENCODING}, row-28 FRACTIONAL-TIME{MINUTES-UTC-AND-FRACTION-ENCODING}, row-29 FRACTIONAL-TIME{MINUTES-AND-DIFF-AND-FRACTION-ENCODING}, row-30 FRACTIONAL-TIME{TIME-OF-DAY-AND-FRACTION-ENCODING}, row-31 FRACTIONAL-TIME{TIME-OF-DAY-UTC-AND-FRACTION-ENCODING}, row-32 FRACTIONAL-TIME{TIME-OF-DAY-AND-DIFF-AND-FRACTION-ENCODING}, row-33 DATE-TIME-ENCODING {DATE-TYPE, TIME-TYPE}, row-34 START-END-DATE-INTERVAL-ENCODING {DATE-TYPE}, row-35 START-END-TIME-INTERVAL-ENCODING {TIME-TYPE}, row-36 START-END-DATE-TIME-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE}, row-37 DURATION-INTERVAL-ENCODING, row-38 START-DATE-DURATION-INTERVAL-ENCODING {DATE-TYPE}, row-39 START-TIME-DURATION-INTERVAL-ENCODING {TIME-TYPE}, row-40 START-DATE-TIME-DURATION-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE}, row-41 DURATION-END-DATE-INTERVAL-ENCODING {DATE-TYPE}, row-42 DURATION-END-TIME-INTERVAL-ENCODING {TIME-TYPE}, row-43 DURATION-END-DATE-TIME-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE}, row-44 REC-START-END-DATE-INTERVAL-ENCODING {DATE-TYPE}, row-45 REC-START-END-TIME-INTERVAL-ENCODING {TIME-TYPE}, row-46 REC-START-END-DATE-TIME-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE}, row-47 REC-DURATION-INTERVAL-ENCODING, row-48 REC-START-DATE-DURATION-INTERVAL-ENCODING {DATE-TYPE}, row-49 REC-START-TIME-DURATION-INTERVAL-ENCODING {TIME-TYPE}, row-50 REC-START-DATE-TIME-DURATION-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE}, row-51 REC-DURATION-END-DATE-INTERVAL-ENCODING {DATE-TYPE}, row-52 REC-DURATION-END-TIME-INTERVAL-ENCODING {TIME-TYPE}, row-53 REC-DURATION-END-DATE-TIME-INTERVAL-ENCODING {DATE-TYPE, TIME-TYPE} } FRACTIONAL-TIME{Time-Type} ::= SEQUENCE { number-of-digits INTEGER (1..MAX), time-value Time-Type } DATE-TYPE ::= CHOICE { row-1 CENTURY-ENCODING, row-2 ANY-CENTURY-ENCODING, row-3 YEAR-ENCODING, row-4 ANY-YEAR-ENCODING, row-5 YEAR-MONTH-ENCODING, row-6 ANY-YEAR-MONTH-ENCODING, row-7 DATE-ENCODING, row-8 ANY-DATE-ENCODING, row-9 YEAR-DAY-ENCODING, row-10 ANY-YEAR-DAY-ENCODING, row-11 YEAR-WEEK-ENCODING, row-12 ANY-YEAR-WEEK-ENCODING, row-13 YEAR-WEEK-DAY-ENCODING, row-14 ANY-YEAR-WEEK-DAY-ENCODING } TIME-TYPE ::= SEQUENCE { number-of-digits INTEGER (1..MAX) OPTIONAL, time-type CHOICE { row-15 HOURS-ENCODING, row-16 HOURS-UTC-ENCODING, row-17 HOURS-AND-DIFF-ENCODING, row-18 MINUTES-ENCODING, row-19 MINUTES-UTC-ENCODING, row-20 MINUTES-AND-DIFF-ENCODING, row-21 TIME-OF-DAY-ENCODING, row-22 TIME-OF-DAY-UTC-ENCODING, row-23 TIME-OF-DAY-AND-DIFF-ENCODING, row-24 HOURS-AND-FRACTION-ENCODING, row-25 HOURS-UTC-AND-FRACTION-ENCODING, row-26 HOURS-AND-DIFF-AND-FRACTION-ENCODING, row-27 MINUTES-AND-FRACTION-ENCODING, row-28 MINUTES-UTC-AND-FRACTION-ENCODING, row-29 MINUTES-AND-DIFF-AND-FRACTION-ENCODING, row-30 TIME-OF-DAY-AND-FRACTION-ENCODING, row-31 TIME-OF-DAY-UTC-AND-FRACTION-ENCODING, row-32 TIME-OF-DAY-AND-DIFF-AND-FRACTION-ENCODING } } END