'===========================================================================
' Subject: NETWORK ACCESSORY WITH EMAILING    Date: 08-26-97 (14:44)       
'  Author: Michael G. Stewart                 Code: QB, QBasic, PDS        
'  Origin: mikegs@juno.com                  Packet: NETWORK.ABC
'===========================================================================
'Access Levels (Logon.Level)
' 1 = System Operator (SysOp)
' 2 = Registered User
' 3 = Guest
'--------------------
'To End Program, Press [ESC] After Logging Off
'--------------------
'This Is A Program To Assist Networks.
'Put QBasic On The Network Drive.
'Run This Program From Any Directory.
'The First Time You Run It, It Will Set Up The Files
' In The Same Directory QBasic Is In.
'All Files Can Be Accessed At The Same Time.
'You Need To Write Up A Network Information Page.
' Save It As "info.net" In The Directory That QBasic
' Is In.
'--------------------
'If you wish to use this code (or any parts of it)
' in a program of your own, then do so, but realize
' this is under no warranty of any kind. The only thing
' I ask you to do is include my name in your program.
'--------------------
'QNET (C) 1997 Arrowhead Corporation, Public Domain.
'mikegs@juno.com
'--------------------
'Have Fun!
DECLARE SUB winterm ()
DECLARE SUB winnote ()
DECLARE SUB newpass ()
DECLARE SUB info ()
DECLARE SUB wincalc ()
DECLARE SUB wincal ()
DECLARE SUB deletemail ()
DECLARE SUB logoff ()
DECLARE FUNCTION linput$ ()
DECLARE SUB writemail ()
DECLARE SUB bluescreen ()
DECLARE SUB readmail ()
DECLARE SUB viewinfo ()
DECLARE SUB killuser ()
DECLARE SUB sususer ()
DECLARE SUB settimedate ()
DECLARE SUB windows ()
DECLARE SUB dos ()
DECLARE SUB email ()
DECLARE SUB keywait ()
DECLARE SUB adduser ()
DECLARE FUNCTION Menu% ()
DECLARE SUB mainmenu ()
DECLARE FUNCTION sinput$ (Text$)
DECLARE SUB login ()
DECLARE SUB center (Row%, Text$)
DECLARE SUB drawscreen (title$)
DECLARE SUB percent (Row%, Col%, pct%)
drawscreen "Welcome! Loading And Starting QNet 1.0"
percent 10, 15, 0
DIM SHARED options(1 TO 9) AS STRING * 20
TYPE mun
 num AS INTEGER
END TYPE
DIM SHARED N AS mun
TYPE user
 login AS STRING * 7
 password AS STRING * 7
 level AS INTEGER
END TYPE
DIM SHARED logon AS user
TYPE mail
 from AS STRING * 7
 going AS STRING * 7
 subject AS STRING * 50
 id AS STRING * 50
 message AS STRING * 800
END TYPE
DIM SHARED emails AS mail
TYPE info
 login AS STRING * 7
 firstname AS STRING * 10
 lastname AS STRING * 10
 midini AS STRING * 1
 number AS INTEGER
END TYPE
DIM SHARED file AS info
SLEEP 1
percent 10, 15, 34
ON ERROR GOTO setup
OPEN "user.net" FOR INPUT AS #1
CLOSE
ON ERROR GOTO 0
OPEN "user.net" FOR RANDOM AS #1
OPEN "info.net" FOR RANDOM AS #2
OPEN "num.net" FOR RANDOM AS #3
setupdone:
SLEEP 1
percent 10, 15, 64
SLEEP 1
percent 10, 15, 100
login

setup:
CLOSE
BEEP
percent 10, 15, 50
center 13, "Input SysOp Password:          "
LOCATE 13, 47
pass1$ = sinput$("")
center 14, "Confirm SO Password:           "
LOCATE 14, 47
pass2$ = sinput$("")
IF pass1$ = pass2$ THEN pass$ = pass1$ ELSE BEEP: GOTO setup
N.num = 2
logon.login = "Guest"
logon.password = "NONE"
logon.level = 3
file.login = "Guest"
file.firstname = "Guest"
file.lastname = "Guest"
file.midini = ""
file.number = 1
OPEN "user.net" FOR RANDOM AS #1
OPEN "info.net" FOR RANDOM AS #2
OPEN "num.net" FOR RANDOM AS #3
PUT #3, 1, N
PUT #1, 1, logon
PUT #2, 1, file
logon.login = "Sysop"
logon.password = pass$
logon.level = 1
file.login = "Sysop"
file.firstname = "System"
file.lastname = "Operator"
file.midini = ""
file.number = 2
PUT #1, 2, logon
PUT #2, 2, file
GOTO setupdone
RESUME

SUB adduser
drawscreen "Register/Add User"
COLOR 15, 0
LOCATE 4, 1
PRINT "First Name:           "
PRINT "Last Name:           "
PRINT "Middle Initial:   "
PRINT "Login Name:         "
PRINT "Password:         "
LOCATE 4, 13: INPUT "", firstname$
LOCATE 5, 12: INPUT "", lastname$
LOCATE 6, 17: INPUT "", midini$
LOCATE 7, 13: INPUT "", logins$
LOCATE 8, 11: password$ = sinput$("")
a% = logon.level
N.num = N.num + 1
PRINT "User Number:"; N.num
PRINT "User Added!"
file.firstname = firstname$
file.lastname = lastname$
file.midini = midini$
file.login = logins$
file.number = N.num
logon.login = logins$
logon.password = password$
logon.level = 2
PUT #1, file.number, logon
PUT #2, file.number, file
PUT #3, 1, N
IF a% = 3 THEN
GET #1, 1, logon
GET #2, 1, file
ELSEIF a% = 1 THEN
GET #1, 2, logon
GET #2, 2, file
END IF
SLEEP 3
mainmenu
END SUB

SUB bluescreen
COLOR 15, 1
FOR a% = 3 TO 23
 LOCATE a%, 1
 PRINT SPACE$(80)
NEXT a%
END SUB

SUB center (Row%, Text$)
LOCATE Row%, 41 - (LEN(Text$) / 2)
PRINT Text$
END SUB

SUB deletemail
files$ = logon.login + ".eml"
KILL files$
drawscreen "E-Mail File Deleted!"
SLEEP 3
email
END SUB

SUB dos
CLS
PRINT "To Return To This Program, Type 'Exit'."
SHELL
PRINT "Ending DOS Shell"
SLEEP 3
mainmenu
END SUB

SUB drawscreen (title$)
COLOR 7, 0
CLS
COLOR 15, 1
PRINT SPACE$(80)
center 1, " QNET V 1.1 by Arrowhead Corporation "
FOR a% = 3 TO 23
 LOCATE a%
 PRINT STRING$(80, 177)
NEXT a%
COLOR 7, 0
center 2, title$
END SUB

SUB email
drawscreen "E-Mail Menu"
options$(1) = "Read Mail"
options$(2) = "Write Mail"
options$(3) = "Delete Mail"
options$(4) = "Main Menu"
options$(5) = "Logoff"
FOR a% = 6 TO 9
 options$(a%) = "----"
NEXT a%
DO
 o = Menu%
 IF o = 1 THEN readmail
 IF o = 2 THEN writemail
 IF o = 3 THEN deletemail
 IF o = 4 THEN mainmenu
 IF o = 5 THEN logoff
 IF o > 5 THEN BEEP
LOOP




END SUB

SUB info
drawscreen "QNET Information"
bluescreen
OPEN "info.net" FOR BINARY AS #4
FOR a% = 4 TO 24
 LOCATE a%, 1
 IF EOF(4) THEN EXIT FOR
 LINE INPUT #4, infos$
 PRINT infos$
NEXT a%
keywait
CLOSE #4
mainmenu
END SUB

SUB keywait
WHILE INKEY$ = "": WEND
END SUB

SUB killuser
drawscreen "Delete User"
LOCATE 5, 1: PRINT "Input Number or Login or Name:           "
LOCATE 5, 32: INPUT "", look$
b% = 0
DO
 b% = b% + 1
 LOCATE 6, 1
 PRINT "Searching Files For: "; look$; "! "
 IF b% < 11 THEN
  percent 7, 15, 0
  FOR a% = b% TO 10
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 11
 END IF
 IF b% > 10 AND b% < 21 THEN
  percent 7, 15, 20
  FOR a% = b% TO 20
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 21
 END IF
 IF b% > 20 AND b% < 31 THEN
  percent 7, 15, 40
  FOR a% = b% TO 30
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 31
 END IF
 IF b% > 30 AND b% < 41 THEN
  percent 7, 15, 60
  FOR a% = b% TO 40
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 41
 END IF
 IF b% > 40 AND b% < 51 THEN
  percent 7, 15, 80
  FOR a% = b% TO 20
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 52
 END IF
 IF b% = 52 THEN
  PRINT "No Match Found!"
  SLEEP 3
  GET #2, 2, file
  mainmenu
 END IF
 BEEP
 PRINT "Delete"; file.number, file.login, file.firstname; " "; file.midini; ", "; file.lastname; " ";
 INPUT "? Y,N: ", del$
 IF UCASE$(del$) <> "N" THEN EXIT DO
LOOP
file.login = ""
file.firstname = ""
file.midini = ""
file.lastname = ""
logon.login = ""
logon.password = ""
logon.level = 1
PUT #1, file.number, logon
PUT #2, file.number, file
PRINT "Deleted!"
BEEP
SLEEP 3
GET #1, 2, logon
GET #2, 2, file
mainmenu
END SUB

FUNCTION linput$
DO
 LOCATE CSRLIN, POS(1), 1
 a = a + 1
 kbd$ = ""
 DO WHILE kbd$ = ""
  kbd$ = ""
  kbd$ = INKEY$
 LOOP
 IF kbd$ = CHR$(13) THEN EXIT DO
 IF kbd$ = CHR$(8) THEN
  in$ = LEFT$(in$, a - 1)
  a = a - 1
  LOCATE CSRLIN, POS(1) - 1
  PRINT " "
  LOCATE CSRLIN, POS(1) - 1
 ELSE
  in$ = in$ + kbd$
  a = a + 1
  PRINT kbd$;
 END IF
LOOP

linput$ = in$



END FUNCTION

SUB login
drawscreen "Login"
COLOR 15, 0
LOCATE 4
PRINT SPACE$(160)
center 4, "Please Enter Your Login Name And Password."
center 5, "If You Are Not A Registered User, Type 'Guest' At The Prompt."
center 9, "Login Name:         "
center 11, "Password:           "
LOCATE 9, 43: INPUT "", logins$
IF logins$ = "Guest" THEN
 GET #1, 1, logon
 GET #2, 1, file
 LOCATE 11, 43
 PRINT logon.password
 GOSUB goahead
END IF
LOCATE 11, 43: pass$ = sinput$("")
logins$ = LEFT$(logins$ + "       ", 7)
pass$ = LEFT$(pass$ + "       ", 7)
DO
 a% = a% + 1
 GET #1, a%, logon
 IF logins$ = logon.login THEN EXIT DO
 IF a% > 50 THEN EXIT DO
LOOP
GET #2, a%, file
IF a% = 51 THEN
 COLOR 4, 0
 center 13, "Incorrect Login Name!"
 SLEEP 3
 login
ELSE
 IF logon.password <> pass$ THEN
  COLOR 4, 0
  center 13, "Password Incorrect!"
  SLEEP 3
  login
 ELSE

goahead:
  COLOR 2, 0
  goahead$ = "Login And Password Correct!"
  center 13, goahead$
  goahead$ = file.firstname + " " + file.midini + " " + file.lastname
  center 14, goahead$
  SLEEP 3
  mainmenu
 END IF
END IF
END SUB

SUB logoff
drawscreen "Logging Off! Good Bye!"
GET #1, 51, logon
GET #2, 51, user
CLS
SCREEN 12
LINE (200, 1)-(440, 45), 7, BF
LINE (280, 46)-(360, 90), 4, BF
LINE (125, 91)-(515, 91), 7
LINE (125, 91)-(320, 479), 7
LINE (515, 91)-(320, 479), 7
CIRCLE (320, 200), 100, 7
CIRCLE (320, 200), 99, 4
CIRCLE (320, 200), 98, 4
CIRCLE (320, 200), 97, 4
CIRCLE (320, 200), 96, 4
CIRCLE (320, 200), 95, 4
PAINT (127, 92), 7, 7
LINE (340, 103)-(245, 265), 4
LINE (300, 103)-(395, 265), 4
LINE (320, 103)-(235, 250), 4
LINE (320, 103)-(405, 250), 4
LINE (300, 103)-(340, 103), 4
LINE (235, 250)-(245, 265), 4
LINE (405, 250)-(395, 265), 4
CIRCLE (320, 150), 100, 4, 4.047111, 5.372889
CIRCLE (320, 130), 100, 4, 4.047111, 5.372889
PAINT (320, 110), 4, 4
PAINT (310, 110), 4, 4
PAINT (330, 110), 4, 4
PAINT (310, 130), 4, 4
PAINT (330, 130), 4, 4
PAINT (320, 235), 4, 4
PAINT (260, 235), 4, 4
PAINT (380, 235), 4, 4
center 2, " Press Any Key "
DO WHILE kbd$ = ""
 kbd$ = ""
 kbd$ = INKEY$
 IF kbd$ = CHR$(27) THEN SYSTEM
 LOCATE 5, 27
 PRINT TIME$
 LOCATE 5, 47
 PRINT DATE$
LOOP
CLS
SCREEN 0
WIDTH 80, 25
login
END SUB

SUB mainmenu
drawscreen "Main Menu"
SELECT CASE logon.level
CASE 1 'SysOp
 options$(1) = "Add User"
 options$(2) = "View User's Record"
 options$(3) = "Delete User"
 options$(4) = "Suspend User"
 options$(5) = "Set Time And Date"
 options$(6) = "Windows"
 options$(7) = "DOS"
 options$(8) = "E-Mail"
 options$(9) = "Logoff"
 o = Menu%
 IF o = 1 THEN adduser
 IF o = 2 THEN viewinfo
 IF o = 3 THEN killuser
 IF o = 4 THEN sususer
 IF o = 5 THEN settimedate
 IF o = 6 THEN windows
 IF o = 7 THEN dos
 IF o = 8 THEN email
 IF o = 9 THEN logoff
CASE 2 'Registered User
 options$(1) = "Calculator (Win)"
 options$(2) = "Calender (Win)"
 options$(3) = "Terminal (Win)"
 options$(4) = "Notepad (Win)"
 options$(5) = "Windows"
 options$(6) = "DOS"
 options$(7) = "E-Mail"
 options$(8) = "Change Password"
 options$(9) = "Logoff"
 o = Menu%
 IF o = 1 THEN wincalc
 IF o = 2 THEN wincal
 IF o = 3 THEN winterm
 IF o = 4 THEN winnote
 IF o = 5 THEN windows
 IF o = 6 THEN dos
 IF o = 7 THEN email
 IF o = 8 THEN newpass
 IF o = 9 THEN logoff
CASE 3 'Guest
 options$(1) = "Register"
 options$(2) = "Network Information"
 options$(3) = "Calculator (Win)"
 options$(4) = "Calender (Win)"
 options$(5) = "Terminal (Win)"
 options$(6) = "Notepad (Win)"
 options$(7) = "Windows"
 options$(8) = "DOS"
 options$(9) = "Logoff"
 o = Menu%
 IF o = 1 THEN adduser
 IF o = 2 THEN info
 IF o = 3 THEN wincalc
 IF o = 4 THEN wincal
 IF o = 5 THEN winterm
 IF o = 6 THEN winnote
 IF o = 7 THEN windows
 IF o = 8 THEN dos
 IF o = 9 THEN logoff
END SELECT
END SUB

FUNCTION Menu%
COLOR 15, 0
FOR a% = 1 TO 9
 LOCATE a% + 3, 25
 PRINT a%; SPACE$(32)
 LOCATE a% + 3, 30
 PRINT options$(a%)
NEXT a%
cur% = 1
DO
 FOR a% = 1 TO 9
  LOCATE a% + 3, 24
  PRINT " "
 NEXT a%
 LOCATE cur% + 3, 24
 PRINT ">"
 DO
  kbd$ = ""
  kbd$ = INKEY$
  IF kbd$ = CHR$(13) THEN GOSUB chosen
  IF kbd$ = CHR$(0) + CHR$(&H48) THEN
   cur% = cur% - 1
   IF cur% = 0 THEN cur% = 9
   EXIT DO
  ELSEIF kbd$ = CHR$(0) + CHR$(&H50) THEN
   cur% = cur% + 1
   IF cur% = 10 THEN cur% = 1
   EXIT DO
  END IF
  IF VAL(kbd$) THEN
   cur% = VAL(kbd$)
   EXIT DO
  END IF
 LOOP
LOOP
   
chosen:
Menu% = cur%
END FUNCTION

SUB newpass
drawscreen "Change Password"
LOCATE 4, 1
pass1$ = sinput$("Old Password: ")
IF logon.password = pass1$ THEN
 pass2$ = sinput$("New Password: ")
 logon.password = pass2$
 PUT #1, file.number, logon
ELSE
 BEEP
END IF
mainmenu
END SUB

SUB percent (Row%, Col%, pct%)
LOCATE Row%, Col%
COLOR 15, 0
PRINT SPACE$(50)
LOCATE Row% + 1, Col% + 23
PRINT pct%
LOCATE Row%, Col%
IF pct% > 0 THEN
 FOR a% = 2 TO pct% STEP 2
  PRINT "Û";
 NEXT a%
END IF
END SUB

SUB readmail
drawscreen "Read Mail"
bluescreen
files$ = logon.login + ".eml"
OPEN files$ FOR RANDOM AS #4 LEN = LEN(emails)
IF LOF(4) / 914 > 0 THEN
 FOR a% = 1 TO LOF(4) / 914
  bluescreen
  LOCATE 4, 1
  GET #4, a%, emails
  PRINT "Message ID: "; emails.id
  PRINT "From: "; emails.from
  PRINT "Subject: "; emails.subject
  PRINT STRING$(80, "Ä")
  mess$ = emails.message
  FOR b% = 1 TO 10
   c% = (b% * 80) - 79
   PRINT MID$(mess$, c%, 80)
  NEXT b%
  PRINT STRING$(80, "Ä")
  center 19, "Press Any Key For Next Message"
  keywait
 NEXT a%
ELSE
 center 10, "No E-Mail Messages!"
END IF
center 19, "Press Any Key To Return To Menu"
CLOSE #4
keywait
email
END SUB

SUB settimedate
drawscreen "Set Date And Time"
curtime$ = "Current Time: " + TIME$
curdate$ = "Current Date: " + DATE$
center 5, curtime$
center 6, curdate$
INPUT "Change Time (N or Time[hh:mm:ss]): ", chtime$
IF UCASE$(chtime$) <> "N" THEN
 TIME$ = chtime$
END IF
INPUT "Change Date (N or Time[mm-dd-yyyy]): ", chtime$
IF UCASE$(chtime$) <> "N" THEN
 DATE$ = chtime$
END IF
curtime$ = "Current Time: " + TIME$
curdate$ = "Current Date: " + DATE$
center 9, curtime$
center 10, curdate$
SLEEP 3
mainmenu
END SUB

FUNCTION sinput$ (Text$)
PRINT Text$;
DO
 LOCATE CSRLIN, POS(1), 1
 a = a + 1
 kbd$ = ""
 DO WHILE kbd$ = ""
  kbd$ = ""
  kbd$ = INKEY$
 LOOP
 IF kbd$ = CHR$(13) THEN EXIT DO
 IF kbd$ = CHR$(8) THEN
  in$ = LEFT$(in$, a - 1)
  a = a - 1
  LOCATE CSRLIN, POS(1) - 1
  PRINT " "
  LOCATE CSRLIN, POS(2) - 1
 ELSE
  in$ = in$ + kbd$
  a = a + 1
  PRINT "*";
 END IF
LOOP

sinput$ = in$

END FUNCTION

SUB sususer
drawscreen "Delete User"
LOCATE 5, 1: PRINT "Input Number or Login or Name:           "
LOCATE 5, 32: INPUT "", look$
b% = 0
DO
 b% = b% + 1
 LOCATE 6, 1
 PRINT "Searching Files For: "; look$; "! "
 IF b% < 11 THEN
  percent 7, 15, 0
  FOR a% = b% TO 10
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 11
 END IF
 IF b% > 10 AND b% < 21 THEN
  percent 7, 15, 20
  FOR a% = b% TO 20
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 21
 END IF
 IF b% > 20 AND b% < 31 THEN
  percent 7, 15, 40
  FOR a% = b% TO 30
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 31
 END IF
 IF b% > 30 AND b% < 41 THEN
  percent 7, 15, 60
  FOR a% = b% TO 40
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 41
 END IF
 IF b% > 40 AND b% < 51 THEN
  percent 7, 15, 80
  FOR a% = b% TO 20
   GET #2, a%, file
   IF file.firstname = look$ THEN b% = 51: EXIT FOR
   IF file.lastname = look$ THEN b% = 51: EXIT FOR
   IF file.number = VAL(look$) THEN b% = 51: EXIT FOR
   IF file.login = look$ THEN b% = 51: EXIT FOR
  NEXT a%
  b% = 52
 END IF
 percent 7, 15, 100
 IF b% = 52 THEN
  PRINT "No Match Found!"
  SLEEP 3
  GET #2, 2, file
  mainmenu
 END IF
 BEEP
 PRINT "Suspend"; file.number, file.login, file.firstname; " "; file.midini; ", "; file.lastname; " ";
 INPUT "? Y,N: ", del$
 IF UCASE$(del$) <> "N" THEN EXIT DO
LOOP
GET #1, file.number, user
user.access = 3
PUT #1, file.number, user
PRINT "Suspended!"
BEEP
SLEEP 3
GET #1, 2, user
GET #2, 2, file
mainmenu
END SUB

SUB viewinfo
drawscreen "View User Information"
bluescreen
LOCATE 4, 1
PRINT "Number", "Login Name", "First Name M Last Name"
FOR a% = 1 TO 15
 GET #2, a%, file
 PRINT file.number, file.login, file.firstname; " "; file.midini; " "; file.lastname
NEXT a%
keywait
LOCATE 5, 1
FOR a% = 16 TO 30
 GET #2, a%, file
 PRINT file.number, file.login, file.firstname; " "; file.midini; " "; file.lastname
NEXT a%
keywait
LOCATE 5, 1
FOR a% = 31 TO 45
 GET #2, a%, file
 PRINT file.number, file.login, file.firstname; " "; file.midini; " "; file.lastname
NEXT a%
keywait
LOCATE 5, 1
FOR a% = 46 TO 60
 GET #2, a%, file
 PRINT file.number, file.login, file.firstname; " "; file.midini; " "; file.lastname
NEXT a%
keywait
GET #2, 2, file
mainmenu
END SUB

SUB wincal
CLS
SHELL "Calender"
mainmenu
END SUB

SUB wincalc
SHELL "calc"
mainmenu
END SUB

SUB windows
drawscreen "Windows"
center 9, "Press ALT+TAB To Use Windows"
center 10, "When Done In Windows, Click On The QNET Button"
center 11, "To Return To The Main Menu, Press Enter"
WHILE INKEY$ <> CHR$(13): WEND
mainmenu
END SUB

SUB winnote
CLS
SHELL "notepad"
mainmenu



END SUB

SUB winterm
CLS
SHELL "terminal"
mainmenu
END SUB

SUB writemail
drawscreen "Write E-mail"
bluescreen
LOCATE 4, 1
id$ = RTRIM$(logon.login) + RIGHT$(DATE$, 4) + LEFT$(DATE$, 2) + MID$(DATE$, 4, 2) + LEFT$(TIME$, 2) + MID$(TIME$, 4, 2)
PRINT "Message ID: "; id$
INPUT "To: ", to$
INPUT "Subject: ", sub$
PRINT STRING$(80, "Ä")
mess$ = linput$
LOCATE 18, 1
PRINT STRING$(80, "Ä")
PRINT "Press Any Key To Send"
keywait
emails.id = id$
emails.subject = sub$
emails.going = to$
emails.from = logon.login
emails.message = mess$
files$ = emails.going + ".eml"
OPEN files$ FOR RANDOM AS #4 LEN = LEN(emails)
a% = (LOF(4) / 914) + 1
PUT #4, a%, emails
PRINT "Sent!"
SLEEP 3
CLOSE #4
email
END SUB
