# 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)
``` 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