'===========================================================================
' Subject: DATABASE PROGRAM                   Date: 05-17-96 (17:01)       
'  Author: Tate P. Sonnier                    Code: QB, QBasic, PDS        
'  Origin: tate_sonnier@juno.com            Packet: MISC.ABC
'===========================================================================
'--------------------------------DATABASE.BAS----------------------------------
'This is a simple little database that can be used and configured to store
'as many as 40 fields per database and an unlimited amount of databases.
'There are still a few bugs that need to be worked out. Feel free to use, fix, modify,
'or copy partions of this program for your own use. Send an questions, comments,
'suggestions, or changes you make to TATE_SONNIER@JUNO.COM

COMMON SHARED DB$
DECLARE SUB VIEWALL ()
DECLARE SUB PRINTALL ()
DECLARE SUB PRINTA ()
DECLARE SUB RECORDSORT ()
DECLARE SUB VIEWRECORD (T!, DB$)
DECLARE SUB RECORDSORTP ()
DECLARE SUB PRINTRECORD (T!, DB$)
DECLARE SUB DELETERECORD ()
DECLARE SUB SORTDELETE (T!, DB$)
DECLARE SUB EDITRECORD ()
DECLARE SUB SORTEDIT (T!, DB$)
DECLARE SUB DELETEFIELD ()
DECLARE SUB EDITFIELD ()
DECLARE SUB NEWFIELD ()
DECLARE SUB ADDRECORD ()
DECLARE SUB NEW ()
DECLARE SUB EDIT ()
DECLARE SUB DELETE ()
ON ERROR GOTO HANDLE
CLS
L = 1
DO
TOP:
COLOR 15, 0: LOCATE 1, 1: PRINT "Selected Database": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ": LOCATE 3, 1: PRINT UCASE$(DB$)

IF L < 1 OR L > 6 THEN L = 1
COLOR 15, 0
IF L = 1 THEN LOCATE 23, 1: PRINT "CREATES NEW DATABASE                  ": COLOR 15, 4
LOCATE 1, 35
PRINT "New Database"

COLOR 15, 0
IF L = 2 THEN LOCATE 23, 1: PRINT "SELECTS DATABASE TO BE WORKED WITH                ": COLOR 15, 4
LOCATE 2, 35
PRINT "Select Database"

COLOR 15, 0
IF L = 3 THEN LOCATE 23, 1: PRINT "THE EDITING MENU (EDIT/CHANGE FIELDS OR RECORD)            ": COLOR 15, 4
LOCATE 3, 35
PRINT "Edit Database"

COLOR 15, 0
IF L = 4 THEN LOCATE 23, 1: PRINT "PRINTS/VIEWS THE RECORDS OF A DATABASE            ": COLOR 15, 4
LOCATE 4, 35
PRINT "Print/View Database"

COLOR 15, 0
IF L = 5 THEN LOCATE 23, 1: PRINT "DELETES A DATABASE AND ALL RECORDS IN IT                   ": COLOR 15, 4
LOCATE 5, 35
PRINT "Delete Database"

COLOR 15, 0
IF L = 6 THEN LOCATE 23, 1: PRINT "EXITS THE PROGRAM                                        ": COLOR 15, 4
LOCATE 6, 35
PRINT "Quit"

A$ = INKEY$
SELECT CASE A$
CASE IS = CHR$(0) + "P"
L = L + 1
IF L = 7 THEN L = 1

CASE IS = CHR$(0) + "H"
L = L - 1
IF L = 0 THEN L = 6

CASE IS = CHR$(13)
IF L = 1 THEN CALL NEW
IF L = 2 THEN
E:
LOCATE 3, 1: COLOR 15, 0
INPUT "-", DB$
IF LEN(DB$) < 1 THEN GOTO E
CLS
END IF
IF L = 3 AND LEN(DB$) > 0 THEN
CALL EDIT
ELSEIF L = 3 AND LEN(DB$) = 0 THEN
LOCATE 23, 1: COLOR 20: PRINT "A DATABASE MUST BE SELECTED FIRST                 ": BEEP: SLEEP 5
END IF

IF L = 4 AND LEN(DB$) > 0 THEN
CALL PRINTA
ELSEIF L = 4 AND LEN(DB$) = 0 THEN
LOCATE 23, 1: COLOR 20: PRINT "A DATABASE MUST BE SELECTED FIRST                 ": BEEP: SLEEP 5
END IF

IF L = 5 THEN CALL DELETE
IF L = 6 THEN COLOR 0, 0: CLS : STOP

END SELECT
LOOP

HANDLE:
CLS
GOTO TOP

SUB ADDRECORD
L = 1
V:
CLS
L = 1
CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT
AD = 0
FOR X = 1 TO COUNT
AD = AD + LNE(X)
NEXT
CLOSE #1
FF = 1
CLOSE #2
OPEN DB$ + ".DBD" FOR APPEND AS #2
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 1
PRINT NM$(X + LJ); TAB(31); ":": LOCATE X, 33: COLOR 15, 0: PRINT FI$(X +LJ)
NEXT
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1
IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
PO = 0
FOR R = 1 TO COUNT
DO UNTIL LEN(FI$(R)) = LNE(R)
FI$(R) = FI$(R) + " "
PO = PO + 1
LOOP
ANS$ = ANS$ + FI$(R)
NEXT
IF PO <> AD THEN WRITE #2, ANS$
CLOSE #2
CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
LOCATE L, 1
COLOR 15, 0
PRINT NM$(L + LJ); TAB(31); ":";
COLOR 1, 9
FOR T = 1 TO LNE(L + LJ)
PRINT " ";
NEXT
Z$ = ""
INP$ = ""
DO UNTIL Z$ = CHR$(13)
H:
Z$ = INKEY$

IF Z$ = "" THEN GOTO H

IF Z$ = CHR$(8) AND LEN(INP$) >= 1 THEN INP$ = LEFT$(INP$, (LEN(INP$) -1)): LOCATE L, 33: COLOR 15, 9: FOR T = 1 TO LNE(L): PRINT " "; : NEXT T: COLOR 15, 9: LOCATE L, 33: PRINT INP$: GOTO H
IF LEN(INP$) < LNE(L + LJ) AND Z$ <> CHR$(13) THEN INP$ = INP$ + Z$
LOCATE L, 33: COLOR 15, 9: PRINT INP$
LOOP
FI$(L) = INP$
LOCATE L, 1
COLOR 15, 4
PRINT NM$(L + LJ); TAB(31); ":";

IF L < 20 THEN L = L + 1
IF L = COUNT - 20 + 1 AND LJ = 20 THEN L = 1

END SELECT

LOOP

END SUB

SUB DELETE
L = 1
CLS
I:
INPUT "NAME OF DATABASE TO DELETE "; DB$
IF LEN(DB$) < 1 THEN GOTO I
CLS
PRINT "CONFIRM DELETE OF "; DB$; " (Y/N)"
T:
H$ = INPUT$(1)
IF UCASE$(H$) <> "Y" AND UCASE$(H$) <> "N" THEN GOTO T
IF UCASE$(H$) = "Y" THEN KILL DB$ + ".DBD": KILL DB$ + ".DBI"
CLS
DB$ = ""
END SUB

SUB DELETEFIELD
VVV:
CLS


CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 1
PRINT NM$(X + LJ); TAB(45); "LENGTH :"; LNE(X + LJ)
NEXT
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = C + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLOSE #1
CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)


LOCATE L, 1
COLOR 15, 0
PRINT "CONFIRM DELETE (Y/N)"
28 :
ANS$ = INPUT$(1)
IF UCASE$(ANS$) <> "Y" AND UCASE$(ANS$) <> "N" THEN GOTO 28
IF UCASE$(ANS$) = "Y" THEN

CLOSE #1
OPEN DB$ + ".DBI" FOR OUTPUT AS #1
WRITE #1, C$
FOR R = 1 TO COUNT
IF R <> L THEN WRITE #1, NM$(R), LNE(R), GO(R)
NEXT
CLS
COLOR 15, 0
EXIT SUB
END IF
END SELECT

LOOP

END SUB

SUB DELETERECORD
L = 1
VAA:
CLS


CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
CLOSE #2
OPEN DB$ + ".DBD" FOR APPEND AS #2
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT NM$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Delete Record": LOCATE 2, 1: PRINT "-------------"
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT - 20): CLS
IF L = COUNT + 2 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLS
CLOSE #1
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
T = L + LJ
CALL SORTDELETE(T, DB$)
END SELECT
LOOP

END SUB

SUB EDIT

CLS
L = 1
DO
COLOR 15, 0: LOCATE 1, 1: PRINT "Selected Database": LOCATE 2, 1: PRINT "-----------------": LOCATE 3, 1: PRINT UCASE$(DB$)
COLOR 15, 0
IF L = 1 THEN LOCATE 23, 1: PRINT "CREATE NEW FIELD/QUESTION IN A DATABASE             ": COLOR 15, 4
LOCATE 1, 38
PRINT "New Field"

COLOR 15, 0
IF L = 2 THEN LOCATE 23, 1: PRINT "DELETE FIELD/QUESTION IN A DATABASE            ": COLOR 15, 4
LOCATE 2, 38
PRINT "Delete Field"
COLOR 15, 0
IF L = 3 THEN LOCATE 23, 1: PRINT "EDIT FIELD/QUESTION IN A DATABASE            ": COLOR 15, 4
LOCATE 3, 38
PRINT "Edit Field"
COLOR 15, 0
IF L = 4 THEN LOCATE 23, 1: PRINT "ADD NEW RECORD TO DATABASE                         ": COLOR 15, 4
LOCATE 4, 38
PRINT "Add Record"

COLOR 15, 0
IF L = 5 THEN LOCATE 23, 1: PRINT "EDIT PREVIOUSLY ENTERED DATABASE                  ": COLOR 15, 4
LOCATE 5, 38
PRINT "Edit Record"

COLOR 15, 0
IF L = 6 THEN LOCATE 23, 1: PRINT "DELETE PREVIOUSLY ENTERED DATABASE                 ": COLOR 15, 4
LOCATE 6, 38
PRINT "Delete Record"

COLOR 15, 0
IF L = 7 THEN LOCATE 23, 1: PRINT "EXIT TO MAIN MENU                                  ": COLOR 15, 4
LOCATE 7, 38
PRINT "Quit"

A$ = INKEY$
SELECT CASE A$
CASE IS = CHR$(0) + "P"
L = L + 1
IF L = 8 THEN L = 1
CASE IS = CHR$(27)
CLS
COLOR 15, 0
EXIT SUB
CASE IS = CHR$(0) + "H"
L = L - 1
IF L = 0 THEN L = 7

CASE IS = CHR$(13)
IF L = 1 THEN L = 1: CALL NEWFIELD: CLS : L = 1
IF L = 2 THEN L = 1: CALL DELETEFIELD: CLS : L = 1
IF L = 3 THEN L = 1: CALL EDITFIELD: CLS : L = 1
IF L = 4 THEN L = 1: CALL ADDRECORD: CLS : L = 1
IF L = 5 THEN L = 1: CALL EDITRECORD: CLS : L = 1
IF L = 6 THEN L = 1: CALL DELETERECORD: CLS : L = 1
IF L = 7 THEN COLOR 0, 0: CLS : EXIT SUB

END SELECT

LOOP

END SUB

SUB EDITFIELD
L = 1
VV:
CLS

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 1
PRINT NM$(X + LJ); TAB(45); "LENGTH :"; LNE(X + LJ)
NEXT
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = C + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLOSE #1
OPEN DB$ + ".DBI" FOR OUTPUT AS #1
WRITE #1, C$
FOR R = 1 TO COUNT
WRITE #1, NM$(R), LNE(R), GO(R)
NEXT
CLOSE #1
CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)

29 :
LOCATE L, 54
COLOR 15, 0
INPUT "", LNE(L + LJ)
IF LEN(LNE(L + LJ)) = 0 THEN GOTO 29

30 :
LOCATE L, 1
COLOR 15, 0
INPUT "", NM$(L + LJ)
IF LEN(NM$(L + LJ)) < 1 THEN GOTO 30

LOCATE L, 1
COLOR 15, 4
PRINT NM$(L + LJ)


END SELECT

LOOP

END SUB

SUB EDITRECORD

L = 1
VA:
CLS

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
CLOSE #2
OPEN DB$ + ".DBD" FOR APPEND AS #2
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT NM$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Edit Record": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄ"
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLS
CLOSE #1
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
T = L + LJ
CALL SORTEDIT(T, DB$)
END SELECT

LOOP

END SUB

SUB NEW

CLS
INPUT "Name of database "; DB$
CLS
LOCATE 1, 1
B:
LOCATE 1, 1
PRINT "If the database "; : COLOR 4: PRINT DB$; : COLOR 15: PRINT " has already been created all data in it will be lost"
PRINT "CONTINUE(Y/N)"
A$ = INPUT$(1)
IF UCASE$(A$) <> "Y" AND UCASE$(A$) <> "N" THEN GOTO B
IF UCASE$(A$) = "Y" THEN
OPEN DB$ + ".DBI" FOR OUTPUT AS #1
WRITE #1, DB$
CLOSE #1
END IF
CLS
END SUB

SUB NEWFIELD
L = 1
CLS
A:

DO
OPEN DB$ + ".DBI" FOR INPUT AS #1
INPUT #1, C$
B = 0
DO UNTIL EOF(1)
B = B + 1
INPUT #1, NAME$, LE, BE
LOOP
CLOSE #1
OPEN DB$ + ".DBI" FOR APPEND AS #1

AA:
IF B > 40 THEN BEEP: CLS : PRINT "No more than 41 fields allowed": SLEEP:EXIT SUB
CLS
LOCATE 1, 1
INPUT "Name of New Field (NO MORE THAN 30 CHARACTERS)"; NF$
IF LEN(NF$) < 1 OR LEN(NF$) > 30 THEN : BEEP: PRINT "Invalid Field":SLEEP: GOTO AA

AAA:
CLS
LOCATE 1, 1
INPUT "LENGTH of New Field "; NFL
IF LEN(NFL) < 1 THEN : BEEP: PRINT "Invalid Field LENGTH": SLEEP: GOTO AAA
CLS
PRINT "Is this OK (Y/N)"
PRINT "The Field ("; NF$; ") with a LENGTH of "; NFL
AAAA:
J$ = INPUT$(1)
IF UCASE$(J$) <> "Y" AND UCASE$(J$) <> "N" THEN GOTO AAAA
f = BE + LE
IF f = 0 THEN f = 1
IF UCASE$(J$) = "Y" THEN WRITE #1, NF$, NFL, f
IF UCASE$(J$) = "N" THEN GOTO AA
CLS
PRINT "Add Another Field (Y/N)"
AAAAA:
J$ = INPUT$(1)
IF UCASE$(J$) <> "Y" AND UCASE$(J$) <> "N" THEN B = B + 1: GOTO AAAAA
IF UCASE$(J$) = "N" THEN CLOSE #1: CLS : EXIT SUB
CLOSE #1
LOOP
END SUB

SUB PRINTA
CLS
L = 1
DO
COLOR 15, 0: LOCATE 1, 1: PRINT "Selected Database": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ": LOCATE 3, 1: PRINT UCASE$(DB$)
COLOR 15, 0
IF L = 1 THEN LOCATE 23, 1: PRINT "VIEW INDIVIDUAL RECORD                             ": COLOR 15, 4
LOCATE 1, 38
PRINT "View Record"

COLOR 15, 0
IF L = 2 THEN LOCATE 23, 1: PRINT "PRINT INDIVIDUAL RECORD                            ": COLOR 15, 4
LOCATE 2, 38
PRINT "Print Record"
COLOR 15, 0
IF L = 3 THEN LOCATE 23, 1: PRINT "VIEW ALL RECORDS                                   ": COLOR 15, 4
LOCATE 3, 38
PRINT "View All Records"
COLOR 15, 0
IF L = 4 THEN LOCATE 23, 1: PRINT "PRINT ALL RECORDS                                 ": COLOR 15, 4
LOCATE 4, 38
PRINT "Print All Record"

COLOR 15, 0
IF L = 5 THEN LOCATE 23, 1: PRINT "RETURNS TO MAIN MENU                               ": COLOR 15, 4
LOCATE 5, 38
PRINT "Quit"



A$ = INKEY$
SELECT CASE A$
CASE IS = CHR$(0) + "P"
L = L + 1
IF L = 6 THEN L = 1

CASE IS = CHR$(0) + "H"
L = L - 1
IF L = 0 THEN L = 5
CASE IS = CHR$(27)
CLS
EXIT SUB
CASE IS = CHR$(13)
IF L = 1 THEN L = 1: CALL RECORDSORT: CLS : L = 1
IF L = 2 THEN L = 1: CALL RECORDSORTP: CLS : L = 1
IF L = 3 THEN CALL VIEWALL: CLS
IF L = 4 THEN CALL PRINTALL: CLS
IF L = 5 THEN COLOR 0, 0: CLS : EXIT SUB
END SELECT
LOOP

END SUB

SUB PRINTALL
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

 CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

H = 0

DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)
CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2
FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
NEXT



FF = 1
K = 1



LJ = 0
FOR PP = 1 TO H

FOR X = 1 TO COUNT
FI$(X) = MID$(AS$(PP), GO(X), LNE(X))
NEXT

FOR X = 1 TO COUNT
COLOR 15
LPRINT NM$(X + LJ); TAB(31); ": "; FI$(X + LJ)
NEXT

FOR X = 1 TO 2
LPRINT
NEXT
LPRINT "------------------------------------------------------------------------------"
FOR X = 1 TO 2
LPRINT
NEXT

NEXT
LPRINT CHR$(10)
END SUB

SUB PRINTRECORD (T, DB$)
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

H = 0
DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)

CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
FI1$(X) = MID$(ANS$, GO(T), LNE(T))
NEXT
FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT

CLOSE #1
FF = 1
K = 1

IF H > 20 THEN C = 20:  ELSE C = H
DO

FOR X = 1 TO H
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT FI1$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Print Record By": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ": PRINT NM$(T)
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF H > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (H - 20):CLS
IF L = H + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF H > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = H

CASE IS = CHR$(27)

CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
PP = LJ + L
FOR X = 1 TO COUNT
FI$(X) = MID$(AS$(PP), GO(X), LNE(X))
NEXT


FOR X = 1 TO COUNT
COLOR 15
LPRINT NM$(X + LJ); TAB(31); ": "; FI$(X + LJ)
NEXT


END SELECT

LOOP

END SUB

SUB RECORDSORT
L = 1
CLS

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
CLOSE #2
OPEN DB$ + ".DBD" FOR APPEND AS #2
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT NM$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "View Record": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄ"
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLS
CLOSE #1
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
T = L + LJ
CALL VIEWRECORD(T, DB$)
END SELECT
LOOP

END SUB

SUB RECORDSORTP
CLS
L = 1
CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1

OPEN DB$ + ".DBI" FOR INPUT AS #1

INPUT #1, C$

FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

CLOSE #1
FF = 1
CLOSE #2
OPEN DB$ + ".DBD" FOR APPEND AS #2
K = 1
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT NM$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Print Record": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄ"
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
CLS
CLOSE #1
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
T = L + LJ
CALL PRINTRECORD(T, DB$)
END SELECT
LOOP
END SUB

SUB SORTDELETE (T, DB$)
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

H = 0
DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)

CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
FI1$(X) = MID$(ANS$, GO(T), LNE(T))
NEXT
FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT

CLOSE #1
FF = 1
K = 1

IF H > 20 THEN C = 20:  ELSE C = H
DO

FOR X = 1 TO H
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT FI1$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Delete Record By": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ": LOCATE 3, 1: PRINT NM$(T)
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF H > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (H - 20):CLS
IF L = H + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF H > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)

CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
PP = L

LOCATE 4, 1: COLOR 15: PRINT "CONFERM DELETE (Y/N)"
FG:
ADF$ = INPUT$(1)
IF UCASE$(ADF$) <> "Y" AND UCASE$(ADF$) <> "N" THEN GOTO FG:
IF UCASE$(ADF$) = "N" THEN CLS : EXIT SUB
CLOSE #1
CLOSE #2
OPEN DB$ + ".DBD" FOR OUTPUT AS #1
FOR X = 1 TO H
IF X <> PP THEN WRITE #1, AS$(X)
NEXT
CLOSE #1
CLS
COLOR 15, 0
EXIT SUB

END SELECT

LOOP
END SUB

SUB SORTEDIT (T, DB$)
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

H = 0
DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)

CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
FI1$(X) = MID$(ANS$, GO(T), LNE(T))
NEXT

FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT
CLOSE #1
FF = 1
K = 1

IF H > 20 THEN C = 20:  ELSE C = H

DO

FOR X = 1 TO H
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT FI1$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "Edit Record By": LOCATE 2, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ": LOCATE 3, 1: PRINT NM$(T)
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF H > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (H - 20):CLS
IF L = H + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF H > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = H

CASE IS = CHR$(27)

CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
CLS
PP = L
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
FOR X = 1 TO COUNT
FI$(X) = MID$(AS$(PP), GO(X), LNE(X))
NEXT

DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 1
PRINT NM$(X + LJ); TAB(31); ": "; FI$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
ANS$ = ""
FOR R = 1 TO COUNT
DO UNTIL LEN(FI$(R)) = LNE(R)
FI$(R) = FI$(R) + " "
LOOP
ANS$ = ANS$ + FI$(R)
NEXT

AS$(PP) = ANS$
CLOSE #1
CLOSE #2
OPEN DB$ + ".DBD" FOR OUTPUT AS #1
FOR X = 1 TO H
WRITE #1, AS$(X)
NEXT
CLOSE #1
CLS
COLOR 15, 0
EXIT DO

CASE IS = CHR$(13)
LOCATE L, 1
COLOR 15, 0
PRINT NM$(L + LJ); TAB(31); ": ";
COLOR 1, 9
FOR T = 1 TO LNE(L + LJ)
PRINT " ";
NEXT
Z$ = ""
INP$ = ""
DO UNTIL Z$ = CHR$(13)
HH:
Z$ = INKEY$

IF Z$ = "" THEN GOTO HH

IF Z$ = CHR$(8) AND LEN(INP$) >= 1 THEN INP$ = LEFT$(INP$, (LEN(INP$) -1)): LOCATE L, 33: COLOR 15, 9: FOR T = 1 TO LNE(L): PRINT " "; : NEXT T: COLOR 15, 9: LOCATE L, 33: PRINT INP$: GOTO HH
IF LEN(INP$) < LNE(L + LJ) AND Z$ <> CHR$(13) THEN INP$ = INP$ + Z$
LOCATE L, 33: COLOR 15, 9: PRINT INP$
LOOP

FI$(L + LJ) = INP$
LOCATE L, 1
COLOR 15, 4
PRINT NM$(L + LJ); TAB(31); ":";
L = L + 1
IF L = COUNT + 1 THEN L = 1

END SELECT

LOOP


END SELECT

LOOP

END SUB

SUB VIEWALL
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT


H = 0

DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)
CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
NEXT
FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT

FF = 1
K = 1
PP = 1
IF H > 20 THEN C = 20:  ELSE C = H

LJ = 0
I = 0
DO UNTIL I = H


FOR X = 1 TO COUNT
FI$(X) = MID$(AS$(PP), GO(X), LNE(X))
NEXT

FOR X = 1 TO COUNT
COLOR 15
LOCATE X, 1
PRINT NM$(X + LJ); TAB(31); ": "; FI$(X + LJ)
NEXT


COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"
COLOR 15, 0: LOCATE 22, 1: PRINT "PRESS ENTER FOR NEXT PAGE"


A$ = INKEY$
SELECT CASE A$
CASE IS = CHR$(27)
CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
I = I + 1
IF H > 20 THEN LJ = 20: C = H - 20:  ELSE PP = PP + 1
END SELECT

LOOP

END SUB

SUB VIEWRECORD (T, DB$)
CLS
CLOSE #1
L = 1
OPEN DB$ + ".DBI" FOR INPUT AS #1



INPUT #1, C$

COUNT = 0

CLS

DO UNTIL EOF(1)

INPUT #1, NAME$, LE, BE

COUNT = COUNT + 1

LOOP

DIM NM$(1 TO COUNT)
DIM LNE(1 TO COUNT)
DIM GO(1 TO COUNT)
DIM FI$(1 TO COUNT)

CLOSE #1
CLOSE #2

OPEN DB$ + ".DBI" FOR INPUT AS #1
OPEN DB$ + ".DBD" FOR INPUT AS #2
INPUT #1, C$


FOR X = 1 TO COUNT
INPUT #1, NAME$, LE, BE
NM$(X) = NAME$
LNE(X) = LE
GO(X) = BE
NEXT

H = 0
DO UNTIL EOF(2)
INPUT #2, ANS$
H = H + 1
LOOP
DIM FI1$(1 TO H)
DIM AS$(1 TO H)

CLOSE #2
OPEN DB$ + ".DBD" FOR INPUT AS #2

FOR X = 1 TO H
INPUT #2, ANS$
AS$(X) = ANS$
FI1$(X) = MID$(ANS$, GO(T), LNE(T))
NEXT
FOR Y = 1 TO H
FOR X = 1 TO H
IF FI1$(Y) < FI1$(X) THEN SWAP FI1$(Y), FI1$(X): SWAP AS$(X), AS$(Y)
NEXT
NEXT

CLOSE #1
FF = 1
K = 1

IF H > 20 THEN C = 20:  ELSE C = H
DO

FOR X = 1 TO H
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 38
PRINT FI1$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 1, 1: PRINT "View Record By": LOCATE 2, 1: PRINT "---------------": PRINT NM$(T)
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF H > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (H - 20):CLS
IF L = H + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF H > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = H

CASE IS = CHR$(27)

CLS
COLOR 15, 0
EXIT SUB

CASE IS = CHR$(13)
CLS
PP = L
IF COUNT > 20 THEN C = 20:  ELSE C = COUNT
FOR X = 1 TO COUNT
FI$(X) = MID$(AS$(PP), GO(X), LNE(X))
NEXT

DO

FOR X = 1 TO C
COLOR 15, 0
IF L = X THEN COLOR 15, 4
LOCATE X, 1
PRINT NM$(X + LJ); TAB(31); ": "; FI$(X + LJ)
NEXT
COLOR 15, 0: LOCATE 23, 1: PRINT "PRESS ESCAPE TO QUIT"

A$ = INKEY$

SELECT CASE A$
CASE IS = CHR$(0) + "P"

L = L + 1

IF COUNT > 20 AND L = C + 1 THEN CLS : LJ = 20: L = 1: K = 21: C = (COUNT- 20): CLS
IF L = COUNT + 1 THEN L = 1

CASE IS = CHR$(0) + "H"

L = L - 1
IF COUNT > 20 AND L = 0 AND K = 21 THEN CLS : L = 20: LJ = 0: C = 20: CLS
IF L = 0 THEN L = C

CASE IS = CHR$(27)
L = 1
CLS
COLOR 15, 0
EXIT DO

END SELECT

LOOP


END SELECT

LOOP

END SUB
