> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:owner-u2-
> [EMAIL PROTECTED] On Behalf Of George Gallen
> Sent: Tuesday, September 12, 2006 3:16 PM
> To: [email protected]
> Subject: [U2] Time/Date as a single number
> 
> OK. what is the ?best? way to store the time/date (to the second) as a
> single
> number
>    similar to unix's epoch, although I'm not looking to convert it to unix
> format.
> 
> My method is take date()*86400+time()
> idate=int(combo/86400), itime=combo-(idate*86400)
> 
> Is there anyway to do this giving less than 10 characters (and stay in
> base
> 10) ?
> 

  No. You are dealing with a large number to start with, in base 10. You can
either convert to another numerical base or encode the value into ASCII.
This program will cut your string size in half, by using a 2-digit ASCII
char translate. You don't want to use this if you are displaying the fields.
Escape and control sequences may be formed, unless you literally map 00 ->
99 onto specific printable characters.

      SUBROUTINE ASCII.XLATE(INBUF,OUTBUF,MODE)
      $OPTIONS EXT
      !------------
      !ENCODE
      !------------
      IF MODE = 1 THEN
         SLEN = LEN(INBUF)
         IF MOD(SLEN, 2) THEN INBUF = "0":INBUF
         SLEN = LEN(INBUF)
         FOR PTR = SLEN-1 TO 1 STEP -2
      ! GET TWO-BYTE VALUES RIGHT-TO-LEFT
            SVAL = INBUF[PTR,2]
      ! SKIP FIRST 6 ASCII CHARS
            SVAL = SVAL + 6
      ! CONVERT TO ASCII
            SCHAR = CHAR(SVAL)
      ! APPEND TO STRING
            OUTBUF = OUTBUF:SCHAR
         NEXT PTR
      END
      !------------
      !DECODE
      !------------
      IF MODE = 2 THEN
         SLEN = LEN(INBUF)
         FOR PTR = SLEN TO 1 STEP -1
      ! CONVERT EACH CHARACTER TO A DECIMAL VALUE
      ! SUBTRACT 6 TO GET ORIGINAL DECIMAL VALUE
            SCHAR = INBUF[PTR,1]
            SVAL = SEQ(SCHAR)-6
      ! WRAP WITH ZERO TO ENFORCE DUAL-DIGIT TRANSLATION
            SVAL = "00":SVAL
            SVAL = SVAL"R%2"
            OUTBUF = OUTBUF:SVAL
      ! FORCE TO NUMERIC, WHICH WILL REMOVE LEADING ZEROS
            OUTBUF = OUTBUF + 0
         NEXT PTR
      END
      RETURN

> George Gallen
> Senior Programmer/Analyst
> Accounting/Data Division
> [EMAIL PROTECTED]
> ph:856.848.1000 Ext 220

Glen
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to