Lotus functions @date() a

 BBS: Inland Empire Archive
Date: 08-11-92 (22:54)             Number: 18
From: DOUG NANNEN                  Refer#: NONE
  To: ALL                           Recvd: NO  
Subj: Lotus functions @date() a      Conf: (2) Quik_Bas
'LOTUS DATE FUNCTIONS  @DATE()   AND   @DATEVALUE()
'08-11-1992  =  33827
DECLARE FUNCTION DATESTRING$ (Z)
DECLARE FUNCTION DATEVALUE (M$)
CLS
T = DATEVALUE("NOW")
FOR A = T TO T + 6 STEP 1
B$ = DATESTRING$(A)
C = DATEVALUE(B$)
PRINT B$, C
NEXT A
FUNCTION DATESTRING$ (Z)
DEFINT A-Y
STATIC CK, DATE()
         IF CK = 0 THEN
  DIM DATE(12)
     DATE(1) = 31: DATE(2) = 28: DATE(3) = 31: DATE(4) = 30
     DATE(5) = 31: DATE(6) = 30: DATE(7) = 31: DATE(8) = 31
     DATE(9) = 30: DATE(10) = 31: DATE(11) = 30: DATE(12) = 31
CK = 1
         END IF
Z6 = Z
  IF Z <> INT(Z) THEN ERROR 5
  IF Z < 1 OR Z > 73050 THEN ERROR 5
      Z8 = Z6 / 365.25
      Z9 = INT(Z8) * 365.25
 IF Z9 = INT(Z9) THEN DATE(2) = 29 ELSE Z9 = Z9 + 1: DATE(2) = 28
      Z9 = INT(Z9)
      XA = 1
         DO WHILE XA + 1 < 13 AND Z9 + DATE(XA) < Z6
             Z9 = Z9 + DATE(XA):
             XA = XA + 1
         LOOP
     AX = XA + 1:
     IF Z6 = Z9 THEN Z6 = Z9 + 31: Z8 = Z8 - 1: XA = 12
     X0 = Z6 - Z9
     Z8 = INT(Z8)
  XT$ = MID$(STR$(XA), 2): IF VAL(XT$) < 10 THEN XT$ = "0" + XT$
  XY$ = MID$(STR$(X0), 2): IF VAL(XY$) < 10 THEN XY$ = "0" + XY$
   Z8 = Z8 + 1900
  XZ$ = MID$(STR$(Z8), 2): IF VAL(XZ$) < 10 THEN XZ$ = "0" + XZ$
    DATESTRING$ = XT$ + "-" + XY$ + "-" + XZ$
END FUNCTION
DEFSNG A-Y
FUNCTION DATEVALUE (M$)
DEFINT A-Y
STATIC CK, DATE()
     IF CK = 0 THEN
   DIM DATE(12)
  DATE(1) = 31: DATE(2) = 28: DATE(3) = 31: DATE(4) = 30
  DATE(5) = 31: DATE(6) = 30: DATE(7) = 31: DATE(8) = 31
  DATE(9) = 30: DATE(10) = 31: DATE(11) = 30: DATE(12) = 31: CK = 1
     END IF
           I$ = M$
     IF I$ = "NOW" THEN I$ = DATE$
     IF I$ = "now" THEN I$ = DATE$
           T$ = MID$(I$, 1): A1 = VAL(T$)
           T$ = MID$(I$, 4): A2 = VAL(T$)
           T$ = MID$(I$, 7): Z3 = VAL(T$)
FOR T = 1 TO LEN(I$): T$ = MID$(I$, T, 1): V = ASC(T$)
     IF V < 48 OR V > 57 THEN C = C + 1
NEXT T
    IF C > 2 THEN ERROR 5
T$ = MID$(I$, 3, 1): IF T$ = "/" OR T$ = "-" THEN T$ = "" ELSE ERROR 5
T$ = MID$(I$, 6, 1): IF T$ = "/" OR T$ = "-" THEN T$ = "" ELSE ERROR 5
     IF A1 < 1 OR A1 > 12 THEN ERROR 5
     IF Z3 > 1899 AND Z3 < 2100 THEN Z3 = Z3 - 1900
     IF Z3 < 0 OR Z3 > 199 THEN ERROR 5
     Z2 = Z3 * 365.25
     IF Z2 = INT(Z2) THEN DATE(2) = 29 ELSE Z2 = Z2 + 1: DATE(2) = 28
     IF A2 < 1 OR A2 > DATE(A1) THEN ERROR 5
IF A1 <> 1 THEN
    FOR A = 1 TO A1 - 1: Z2 = Z2 + DATE(A): NEXT A
END IF
    Z2 = INT(Z2 + A2)
    DATEVALUE = Z2
END FUNCTION

--- Maximus 2.00
 * Origin: The Line Source BBS, Maximus [CBCS] (717)236-1375) (1:270/116)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET