'*** Program to kepp info on people '*** Questions? e-mail me at 'dkostka@salsgiver.com' DECLARE SUB FileLoad () DECLARE SUB FileSave () DECLARE SUB CardInput () DECLARE SUB CardNext () DECLARE SUB CardPrev () DECLARE FUNCTION CardLast! () DECLARE SUB CardShow () DECLARE SUB CardPrevPage () DECLARE SUB CardNextPage () DECLARE SUB CardFieldNext () DECLARE SUB CardFieldPrev () DECLARE SUB CardFields () REM $DYNAMIC TYPE TypeA LastName AS STRING * 22 FirstName AS STRING * 14 MiddleInt AS STRING * 1 PhoneArea AS STRING * 3 Phone1 AS STRING * 3 Phone2 AS STRING * 4 Address AS STRING * 31 City AS STRING * 20 State AS STRING * 20 Birthday1 AS STRING * 2 Birthday2 AS STRING * 2 Birthday3 AS STRING * 4 ZipCode AS STRING * 5 END TYPE TYPE TypeB X AS INTEGER Y AS INTEGER Length AS INTEGER END TYPE DIM SHARED OffSetX AS INTEGER: OffSetX = 16 DIM SHARED OffSetY AS INTEGER: OffSetY = 7 DIM SHARED NumCards AS INTEGER: NumCards = 500 DIM SHARED NumFields AS INTEGER: NumFields = 13 DIM SHARED I AS INTEGER DIM SHARED Cards(1 TO NumCards) AS TypeA DIM SHARED Fields(1 TO NumFields) AS TypeB DIM SHARED Card AS INTEGER DIM SHARED Hi AS STRING * 2 DIM SHARED Li AS STRING DIM SHARED LastCard AS INTEGER DIM SHARED CardField AS INTEGER DIM SHARED Entry AS STRING DIM SHARED File AS STRING Card = 1 CardField = 1 LastCard = 1 CALL CardFields CALL CardShow ON ERROR GOTO ErrorTrap DO IF Li = "" THEN Hi = INKEY$ Li = "" IF Hi <> " " THEN SELECT CASE Hi CASE IS = CHR$(0) + "H" CALL CardFieldPrev CASE IS = CHR$(0) + "P" CALL CardFieldNext CASE IS = CHR$(0) + "Q" CALL CardNextPage CASE IS = CHR$(0) + "I" CALL CardPrevPage CASE IS = CHR$(0) + "M" CALL CardNext CASE IS = CHR$(0) + "K" CALL CardPrev CASE IS = CHR$(0) + "G" Card = 1 CASE IS = CHR$(0) + "O" Card = LastCard + 1 CASE IS = "S ", "s " CALL FileSave CASE IS = "L ", "l " CALL FileLoad CASE ELSE CALL CardInput END SELECT CALL CardShow CALL CardFields END IF LOOP END ErrorTrap: RESUME NEXT REM $STATIC SUB CardFieldNext IF CardField < NumFields AND Cards(Card).LastName <> "" THEN CardField = CardField + 1 END IF END SUB SUB CardFieldPrev IF CardField > 1 THEN CardField = CardField - 1 END IF END SUB SUB CardFields Fields(1).X = 3 Fields(1).Y = 2 Fields(1).Length = 22 Fields(2).X = 27 Fields(2).Y = 2 Fields(2).Length = 14 Fields(3).X = 42 Fields(3).Y = 2 Fields(3).Length = 1 Fields(4).X = 11 Fields(4).Y = 4 Fields(4).Length = 3 Fields(5).X = 15 Fields(5).Y = 4 Fields(5).Length = 3 Fields(6).X = 19 Fields(6).Y = 4 Fields(6).Length = 4 Fields(7).X = 12 Fields(7).Y = 5 Fields(7).Length = 31 Fields(8).X = 9 Fields(8).Y = 6 Fields(8).Length = 20 Fields(9).X = 10 Fields(9).Y = 7 Fields(9).Length = 20 Fields(10).X = 13 Fields(10).Y = 8 Fields(10).Length = 5 Fields(11).X = 13 Fields(11).Y = 9 Fields(11).Length = 2 Fields(12).X = 16 Fields(12).Y = 9 Fields(12).Length = 2 Fields(13).X = 19 Fields(13).Y = 9 Fields(13).Length = 4 END SUB SUB CardInput Entry = "" Entry = Entry + LEFT$(Li, 1) LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + OffSetX, 0 PRINT SPACE$(Fields(CardField).Length); LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + OffSetX, 0 PRINT Entry; LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + LEN(Entry) + OffSetX, 1 Li = RTRIM$(Hi) DO IF Li = "" THEN Li = INKEY$ IF Li > "" THEN SELECT CASE Li CASE IS = CHR$(8) IF LEN(Entry) > 0 THEN Entry = LEFT$(Entry, LEN(Entry) - 1) CASE IS = CHR$(27) EXIT DO CASE IS = CHR$(0) + "H", CHR$(0) + "P", CHR$(0) + "Q", CHR$(0) + "I", CHR$(0) + "M", CHR$(0) + "K", CHR$(0) + "G", CHR$(0) + "O" SELECT CASE CardField CASE IS = 1 Cards(Card).LastName = Entry CASE IS = 2 Cards(Card).FirstName = Entry CASE IS = 3 Cards(Card).MiddleInt = Entry CASE IS = 4 Cards(Card).PhoneArea = Entry CASE IS = 5 Cards(Card).Phone1 = Entry CASE IS = 6 Cards(Card).Phone2 = Entry CASE IS = 7 Cards(Card).Address = Entry CASE IS = 8 Cards(Card).City = Entry CASE IS = 9 Cards(Card).State = Entry CASE IS = 10 Cards(Card).ZipCode = Entry CASE IS = 11 Cards(Card).Birthday1 = Entry CASE IS = 12 Cards(Card).Birthday2 = Entry CASE IS = 13 Cards(Card).Birthday3 = Entry END SELECT EXIT DO CASE IS = CHR$(13) SELECT CASE CardField CASE IS = 1 Cards(Card).LastName = Entry CASE IS = 2 Cards(Card).FirstName = Entry CASE IS = 3 Cards(Card).MiddleInt = Entry CASE IS = 4 Cards(Card).PhoneArea = Entry CASE IS = 5 Cards(Card).Phone1 = Entry CASE IS = 6 Cards(Card).Phone2 = Entry CASE IS = 7 Cards(Card).Address = Entry CASE IS = 8 Cards(Card).City = Entry CASE IS = 9 Cards(Card).State = Entry CASE IS = 10 Cards(Card).ZipCode = Entry CASE IS = 11 Cards(Card).Birthday1 = Entry CASE IS = 12 Cards(Card).Birthday2 = Entry CASE IS = 13 Cards(Card).Birthday3 = Entry END SELECT EXIT DO CASE ELSE IF LEN(Entry) < Fields(CardField).Length THEN Entry = Entry + Li END IF END SELECT LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + OffSetX, 0 PRINT Entry + SPACE$(Fields(CardField).Length - LEN(Entry)); LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + OffSetX + LEN(Entry), 1 END IF Li = "" LOOP LastCard = CardLast IF LEN(Li) = 2 THEN Hi = Li ELSE Li = "" END SUB FUNCTION CardLast FOR I = 1 TO NumCards IF LEFT$(Cards(I).LastName, 1) > " " THEN CardLast = I END IF NEXT I END FUNCTION SUB CardNext IF Card < LastCard + 1 THEN Card = Card + 1 END IF END SUB SUB CardNextPage IF Card + 10 < LastCard + 1 THEN Card = Card + 10 ELSE Card = LastCard + 1 END IF END SUB SUB CardPrev IF Card > 1 THEN Card = Card - 1 END IF END SUB SUB CardPrevPage IF Card > 10 THEN Card = Card - 10 ELSE Card = 1 END IF END SUB SUB CardShow CLS LOCATE 1 + OffSetY, 1 + OffSetX, 0: PRINT "Ú" + STRING$(42, "Ä") + "Â" + STRING$(3, "Ä") + "¿" LOCATE 2 + OffSetY, 1 + OffSetX: PRINT "³ " + Cards(Card).LastName + ", " + Cards(Card).FirstName + " " + Cards(Card).MiddleInt + " ³ C ³" LOCATE 3 + OffSetY, 1 + OffSetX: PRINT "Ã" + STRING$(42, "Ä") + "´ a ³" LOCATE 4 + OffSetY, 1 + OffSetX: PRINT "³ Phone: (" + Cards(Card).PhoneArea + ")" + Cards(Card).Phone1 + "-" + Cards(Card).Phone2 + SPACE$(20) + " ³ r ³" LOCATE 5 + OffSetY, 1 + OffSetX: PRINT "³ Address: " + Cards(Card).Address + " ³ d ³" LOCATE 6 + OffSetY, 1 + OffSetX: PRINT "³ City: " + Cards(Card).City + " ³ ³" LOCATE 7 + OffSetY, 1 + OffSetX: PRINT "³ State: " + Cards(Card).State + " ³ " + LEFT$((STRING$(3 - LEN(LTRIM$(STR$(Card))), "0") + LTRIM$(STR$(Card))), 1) + " ³" LOCATE 8 + OffSetY, 1 + OffSetX: PRINT "³ Zip Code: " + Cards(Card).ZipCode + " ³ " + MID$((STRING$(3 - LEN(LTRIM$(STR$(Card))), "0") + LTRIM$(STR$(Card))), 2, 1) + " ³" LOCATE 9 + OffSetY, 1 + OffSetX: PRINT "³ Birthday: " + Cards(Card).Birthday1 + "-" + Cards(Card).Birthday2 + "-" + Cards(Card).Birthday3 + " ³ " + RIGHT$((STRING$(3 - LEN(LTRIM$(STR$(Card))), "0") + LTRIM$(STR$(Card))), 1) + _ " ³" LOCATE 10 + OffSetY, 1 + OffSetX: PRINT "À" + STRING$(42, "Ä") + "Á" + STRING$(3, "Ä") + "Ù" LOCATE Fields(CardField).Y + OffSetY, Fields(CardField).X + OffSetX, 1 END SUB SUB FileLoad LOCATE 25, 1: INPUT ; "Filename? ", File File = LEFT$(File, 8) IF File = "" THEN EXIT SUB OPEN File + ".DB" FOR INPUT AS #1 I = 0 DO WHILE EOF(1) <> -1 I = I + 1 INPUT #1, Cards(I).LastName INPUT #1, Cards(I).FirstName INPUT #1, Cards(I).MiddleInt INPUT #1, Cards(I).PhoneArea INPUT #1, Cards(I).Phone1 INPUT #1, Cards(I).Phone2 INPUT #1, Cards(I).Address INPUT #1, Cards(I).City INPUT #1, Cards(I).State INPUT #1, Cards(I).ZipCode INPUT #1, Cards(I).Birthday1 INPUT #1, Cards(I).Birthday2 INPUT #1, Cards(I).Birthday3 LOOP CLOSE #1 LastCard = CardLast END SUB SUB FileSave LOCATE 25, 1: INPUT ; "Filename? ", File File = LEFT$(File, 8) IF File = "" THEN EXIT SUB OPEN File + ".DB" FOR OUTPUT AS #1 FOR I = 1 TO LastCard PRINT #1, Cards(I).LastName PRINT #1, Cards(I).FirstName PRINT #1, Cards(I).MiddleInt PRINT #1, Cards(I).PhoneArea PRINT #1, Cards(I).Phone1 PRINT #1, Cards(I).Phone2 PRINT #1, Cards(I).Address PRINT #1, Cards(I).City PRINT #1, Cards(I).State PRINT #1, Cards(I).ZipCode PRINT #1, Cards(I).Birthday1 PRINT #1, Cards(I).Birthday2 PRINT #1, Cards(I).Birthday3 NEXT I CLOSE #1 END SUB