home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / HOME / COMIC15.ZIP / COMICS.BAS < prev    next >
Encoding:
BASIC Source File  |  1992-04-13  |  62.5 KB  |  1,924 lines

  1. DEFINT A - Z
  2. DIM MainMenu$(1:8)
  3.  
  4. COLOR 0,0
  5. CLS
  6. CALL ProgramHeader(" Loading... ")
  7.  
  8. CountDown&=INT(TIMER)
  9. COLOR 14,0
  10. FirstRun=-1
  11. LOCATE 9,30
  12. PRINT "COMICS Version 1.5"
  13. LOCATE 12,33
  14. PRINT "written by"
  15. LOCATE 15,30
  16. PRINT "Jeffrey C. Bangle"
  17.  
  18.  
  19. CALL dbInit
  20. CALL ScrnInit
  21. CALL InitEntry
  22. NoBox%=0
  23. KEY OFF
  24.  
  25.  
  26. RestartProgramHere:
  27. Restart = 0
  28.  
  29. $INCLUDE "COMICS.INC"
  30.  
  31.  
  32.  
  33. IF fnFileExists("DEFAULTS.DAT") THEN
  34.    OPEN "DEFAULTS.DAT" FOR INPUT AS #1
  35.    INPUT# 1, SoundOn$, CopyFromPath$, CopyToPath$
  36.    CLOSE #1
  37. ELSE
  38.    SoundOn$      = "Y"
  39.    CopyFromPath$ = "A:\                      "
  40.    CopyToPath$   = "B:\                      "
  41.    OPEN "DEFAULTS.DAT" FOR OUTPUT AS #1
  42.    WRITE #1, SoundOn$, CopyFromPath$, CopyToPath$
  43.    CLOSE #1
  44. END IF
  45.  
  46.  
  47. WHILE (NOT INSTAT) AND ((CountDown&+10)>TIMER) AND (CountDown&<TIMER)_
  48.       AND (FirstRun)
  49. ' PAUSE
  50. WEND
  51. FirstRun=0
  52. DO
  53.    CALL ClrArea(3,23,1,80)
  54.    CALL ProgramHeader(" Main Menu ")
  55.  
  56.    CALL DrawBox(7,16,31,47,23)
  57.  
  58.    MainMenu$(1)=" Add Records   "
  59.    MainMenu$(2)=" Edit Records  "
  60.    MainMenu$(3)=" List Records  "
  61.    MainMenu$(4)=" Rebuild Files "
  62.    MainMenu$(5)=" Copy Files    "
  63.    MainMenu$(6)=" Set Defaults  "
  64.    MainMenu$(7)=" DOS Shell     "
  65.    MainMenu$(8)=" Quit          "
  66.    EscPressed=-1
  67.    CapsOn%=-1
  68.    DO
  69.  
  70.       CALL Choose(8,32,MenuPick%, 8, 8, MainMenu$(),0,-1,"AELRCSDQ")
  71.       IF EscPressed THEN
  72.          CALL WarningBeep
  73.       ELSE
  74.          EXIT LOOP
  75.       END IF
  76.    LOOP
  77.  
  78.    IF     MenuPick%=1 THEN
  79.       CALL AddComics
  80.    ELSEIF MenuPick%=2 THEN
  81.       CALL EditComics
  82.    ELSEIF MenuPick%=3 THEN
  83.       CALL ListComics
  84.    ELSEIF MenuPick%=4 THEN
  85.       CALL ClrArea(3,23,1,80)
  86.       CALL ProgramHeader(" Rebuild Files ")
  87.       IF ( FNFreeSpace&(0) < ( LOF(3)+LOF(4) ) ) THEN
  88.          COLOR 14,0
  89.          LOCATE 5,1
  90.          PRINT "Insufficient disk space available to rebuild files"
  91.          CALL WarningBeep
  92.          WHILE NOT INSTAT: WEND
  93.          Choice$ = INKEY$
  94.       ELSE
  95.          CALL dbClose(Comics.file)
  96.          $INCLUDE "MYREBILD.BAS"
  97.          WHILE NOT INSTAT:WEND
  98.          Choice$ = INKEY$
  99.          Comics.file=0
  100.      Restart = -1
  101.       END IF
  102.    ELSEIF MenuPick%=5 THEN
  103.       IF fnFileExists( ENVIRON$("COMSPEC") ) THEN
  104.          CALL dbClose(Comics.file)
  105.          CALL CopyComics
  106.          Comics.file=0
  107.      Restart = -1
  108.       ELSE
  109.          CALL DrawBox(21,23,27,52,23)
  110.          LOCATE 22,29
  111.          COLOR 14,1
  112.          PRINT "COMMAND.COM not found."
  113.          CALL WarningBeep
  114.          WHILE NOT INSTAT: WEND
  115.          Choice$ = INKEY$
  116.       END IF
  117.    ELSEIF MenuPick%=6 THEN
  118.       CALL SetDefaults(SoundOn$, CopyFromPath$, CopyToPath$)
  119.    ELSEIF MenuPick%=7 THEN
  120.       IF fnFileExists( ENVIRON$("COMSPEC") ) THEN
  121.          CALL dbClose(Comics.file)
  122.          COLOR 7,0
  123.          CLS
  124.          SHELL
  125.          COLOR 7,0
  126.          CLS
  127.          Comics.file=0
  128.      Restart = -1
  129.       ELSE
  130.          CALL DrawBox(21,23,27,52,23)
  131.          LOCATE 22,29
  132.          COLOR 14,1
  133.          PRINT "COMMAND.COM not found."
  134.          CALL WarningBeep
  135.          WHILE NOT INSTAT: WEND
  136.          Choice$ = INKEY$
  137.       END IF
  138.    ELSEIF MenuPick%=8 THEN
  139.       EXIT LOOP
  140.    END IF
  141.    IF FRE("")<20000 OR FRE(-1)<20000 THEN  'Unsuccessful attempt to trap error
  142.       CALL DrawBox(21,23,27,51,23)
  143.       COLOR 14,1
  144.       LOCATE 22,29
  145.       PRINT "Program out of memory"
  146.       CALL WarningBeep
  147.       WHILE NOT INSTAT:WEND
  148.       EXIT LOOP
  149.    ELSE
  150.       IF Restart = -1 THEN GOTO RestartProgramHere:
  151.    END IF
  152. LOOP
  153.  
  154. CALL dbClose(Comics.file)
  155. COLOR 7,0
  156. CLS
  157. END
  158.  
  159.  
  160.  
  161. DEF FNDateString$
  162.    LOCAL Day$, Month$, Year$, Month
  163.    Day$  = MID$(DATE$,4,2)
  164.    Month = VAL(MID$(DATE$,1,2))*3
  165.    Month$= MID$("  JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",_
  166.                 Month,3)
  167.    Year$ = MID$(DATE$,9,2)
  168.    FNDateString$ = Day$+" "+Month$+" "+Year$
  169. END DEF
  170.  
  171.  
  172.  
  173. SUB ListComics
  174.    SHARED CapsOn, EscPressed, WherePrint$
  175.  
  176.    STATIC ListPick%
  177.  
  178.    DIM STATIC ListMenu$(1:4)
  179.    ListMenu$(1)=" Inventory List "
  180.    ListMenu$(2)=" Location List  "
  181.    ListMenu$(3)=" Search List    "
  182.    ListMenu$(4)=" Quick Report   "
  183.  
  184.    WHILE EscPressed=%False
  185.       CALL ClrArea(3,24,1,80)
  186.       CALL ProgramHeader(" List Records ")
  187.       CALL DrawBox(7,12,31,48,23)
  188.       CapsOn%=-1
  189.  
  190.       CALL Choose(8,32,ListPick%, 4, 4, ListMenu$(),0,-1,"ILSQ")
  191.  
  192.       IF EscPressed THEN EXIT LOOP
  193.  
  194.       CALL DrawBox(20, 22, 18, 62, 23)
  195.       WherePrint$ = "S"
  196.       COLOR 11,1
  197.       LOCATE 21,20
  198.       PRINT "Send report to Screen or Printer? [S/P]";
  199.       CALL UserEntry(1, 1, "SP", 21, 60, 30, chr$(13)+chr$(27),_
  200.                      0, WherePrint$, Changed, ExitKey)
  201.                                                                              
  202.       IF ExitKey=13 THEN
  203.          IF ListPick%=1     THEN
  204.             CALL InventoryList
  205.          ELSEIF ListPick%=2 THEN
  206.             CALL LocationList
  207.          ELSEIF ListPick%=3 THEN
  208.             CALL SearchList
  209.          ELSEIF ListPick%=4 THEN
  210.             CALL QuickReport
  211.          END IF
  212.          EscPressed=0
  213.       END IF
  214.    WEND
  215. END SUB
  216.  
  217.  
  218. SUB InventoryList
  219.    SHARED CapsOn, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  220.           Comics.Issue$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  221.           Comics.Good$, Comics.Total$, Comics.WorthTotal$, WherePrint$
  222.  
  223.    LOCAL CLine%, KeyVal$, Where$, PageNum
  224.  
  225.    CALL ClearKey (Comics.File)
  226.    CALL dbNext (Comics.File, KeyVal$)
  227.    CALL ClrArea(4,24,1,80)
  228.    CALL ProgramHeader(" Inventory List ")
  229.    Where$ = " "
  230.  
  231.    IF WherePrint$="P" THEN
  232.  
  233.       PageNum=1
  234.       WHILE (dbStatus=0) AND ( Where$<>CHR$(27) )
  235.          COLOR 11,0
  236.          LOCATE 5,1
  237.          PRINT "Printing..."
  238.          LPRINT CHR$(13);
  239.          LPRINT
  240.          LPRINT "Page:"; PageNum; SPC(62); FNDateString$
  241.          LPRINT
  242.          LPRINT SPC(30); "COMIC BOOK INVENTORY"
  243.          LPRINT
  244.          LPRINT "Vol Issue Title                         "+_
  245.                "           Mint Fine Good Total Worth"
  246.          LPRINT "=== ===== =============================="+_
  247.                 "========== ==== ==== ==== ===== ========";
  248.          LPRINT
  249.          CLine% = 1
  250.          WHILE (CLine%<51) AND (dbStatus=0)
  251.             LPRINT SPC(1); Comics.Volume$;
  252.             LPRINT SPC(3); Comics.Issue$;
  253.             LPRINT SPC(2); Comics.Title$;
  254.             LPRINT SPC(1); Comics.Mint$;
  255.             LPRINT SPC(2); Comics.Fine$;
  256.             LPRINT SPC(2); Comics.Good$;
  257.             LPRINT SPC(2); Comics.Total$;
  258.             LPRINT SPC(3); "$";
  259.                    LPRINT USING "####.##"; VAL(Comics.WorthTotal$);
  260.             INCR CLine%
  261.             CALL dbNext (Comics.File, KeyVal$)
  262.          WEND
  263.          LPRINT chr$(12)
  264.          INCR PageNum
  265.          IF dbStatus=0 THEN CALL KeyPause(5, Where$)
  266.          CALL ClrArea(5,24,1,80)
  267.       WEND
  268.    ELSE
  269.       COLOR 11,0
  270.       LOCATE 4,1
  271.       PRINT "Vol Issue Title                         "+_
  272.             "           Mint Fine Good Total Worth"
  273.       WHILE dbStatus=0 AND ( Where$<>CHR$(27) )
  274.          CLine% = 5
  275.          COLOR 14,0
  276.          WHILE (CLine%<23) AND (dbStatus=0)
  277.             LOCATE CLine%,2 :PRINT Comics.Volume$;
  278.             LOCATE CLine%,6 :PRINT Comics.Issue$;
  279.             LOCATE CLine%,11:PRINT Comics.Title$;
  280.             LOCATE CLine%,52:PRINT Comics.Mint$;
  281.             LOCATE CLine%,57:PRINT Comics.Fine$;
  282.             LOCATE CLine%,62:PRINT Comics.Good$;
  283.             LOCATE CLine%,67:PRINT Comics.Total$;
  284.             LOCATE CLine%,73:PRINT "$";
  285.                    PRINT USING "####.##"; VAL(Comics.WorthTotal$);
  286.             INCR CLine%
  287.             CALL dbNext (Comics.File, KeyVal$)
  288.          WEND
  289.          COLOR 11,0
  290.          CALL KeyPause(24, Where$)
  291.          CALL ClrArea(5,24,1,80)
  292.       WEND
  293.    END IF
  294. END SUB
  295.  
  296.  
  297.  
  298. SUB LocationList
  299.    SHARED CapsOn, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  300.           Comics.Issue$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  301.           Comics.Good$, Comics.Total$, Comics.WorthTotal$,_
  302.           WherePrint$, Comics.Box$
  303.  
  304.    LOCAL CLine%, KeyVal$, Where$, PageNum, Search$, Changed, ExitKey,_
  305.         TotalMint%, TotalFine%, TotalGood%, GrandTotal%, TotalWorth!
  306.  
  307.    TotalMint%=0
  308.    TotalFine%=0
  309.    TotalGood%=0
  310.    GrandTotal%=0
  311.    TotalWorth!=0
  312.  
  313.    CALL ClearKey (Comics.File)
  314.    CALL dbNext (Comics.File, KeyVal$)
  315.    CALL ClrArea(4,24,1,80)
  316.    CALL ProgramHeader(" Location List ")
  317.    Where$ = " "
  318.  
  319.    CALL DrawBox(12, 14, 28, 51, 23)
  320.    Search$=""
  321.    COLOR 11,1
  322.    LOCATE 13, 30:PRINT "Enter Box Number:";
  323.    CALL UserEntry(2, 2, " 1234567890", 13, 48, 30, chr$(13)+chr$(27),_
  324.                      0, Search$, Changed, ExitKey)
  325.    CALL ClrArea(4,24,1,80)
  326.    Search$=FNTrim$(Search$)
  327.    IF ExitKey=27 OR Search$="" THEN EXIT SUB
  328.  
  329.    CALL ProgramHeader(" Location List - Box "+Search$+" ")
  330.  
  331.    IF WherePrint$="P" THEN
  332.  
  333.       PageNum=1
  334.       WHILE (dbStatus=0) AND ( Where$<>CHR$(27) )
  335.          COLOR 11,0
  336.          LOCATE 5,1
  337.          PRINT "Printing..."
  338.          LPRINT CHR$(13);
  339.          LPRINT
  340.          LPRINT "Page:"; PageNum; SPC(62); FNDateString$
  341.          LPRINT
  342.          LPRINT SPC(26); "COMIC BOOK INVENTORY -- BOX "+Search$
  343.          LPRINT
  344.          LPRINT "Vol Issue Title                         "+_
  345.                "           Mint Fine Good Total Worth"
  346.          LPRINT "=== ===== =============================="+_
  347.                 "========== ==== ==== ==== ===== ========";
  348.          LPRINT
  349.          CLine% = 1
  350.          WHILE (CLine%<51) AND (dbStatus=0)
  351.             IF VAL(Comics.Box$)=VAL(Search$) THEN
  352.                LPRINT SPC(1); Comics.Volume$;
  353.                LPRINT SPC(3); Comics.Issue$;
  354.                LPRINT SPC(2); Comics.Title$;
  355.                LPRINT SPC(1); Comics.Mint$;
  356.                LPRINT SPC(2); Comics.Fine$;
  357.                LPRINT SPC(2); Comics.Good$;
  358.                LPRINT SPC(2); Comics.Total$;
  359.                LPRINT SPC(3); "$";
  360.                       LPRINT USING "####.##"; VAL(Comics.WorthTotal$);
  361.                TotalMint%=TotalMint%+VAL(Comics.Mint$)
  362.                TotalFine%=TotalFine%+VAL(Comics.Fine$)
  363.                TotalGood%=TotalGood%+VAL(Comics.Good$)
  364.                GrandTotal%=GrandTotal%+VAL(Comics.Total$)
  365.                TotalWorth!=TotalWorth!+VAL(Comics.WorthTotal$)
  366.                INCR CLine%
  367.             END IF
  368.             CALL dbNext (Comics.File, KeyVal$)
  369.          WEND
  370.  
  371.          IF dbStatus<>0 THEN
  372.             LPRINT SPC(51); "==== ==== ==== ===== ========";
  373.             LPRINT SPC(35); "***Totals***";
  374.             LPRINT SPC( 3);
  375.             LPRINT USING "####"; TotalMint%;
  376.             LPRINT SPC( 1);
  377.             LPRINT USING "####"; TotalFine%;
  378.             LPRINT SPC( 1);
  379.             LPRINT USING "####"; TotalGood%;
  380.             LPRINT SPC( 1);
  381.             LPRINT USING "####"; GrandTotal%;
  382.             LPRINT SPC( 3); "$";
  383.             LPRINT USING "####.##"; TotalWorth!;
  384.      END IF
  385.  
  386.          LPRINT chr$(12)
  387.          INCR PageNum
  388.          IF dbStatus=0 THEN CALL KeyPause(5, Where$)
  389.          CALL ClrArea(5,24,1,80)
  390.       WEND
  391.    ELSE
  392.       COLOR 11,0
  393.       LOCATE 4,1
  394.       PRINT "Vol Issue Title                         "+_
  395.             "           Mint Fine Good Total Worth"
  396.       WHILE dbStatus=0 AND ( Where$<>CHR$(27) )
  397.          CLine% = 5
  398.          COLOR 14,0
  399.          WHILE (CLine%<23) AND (dbStatus=0)
  400.             IF VAL(Comics.Box$)=VAL(Search$) THEN
  401.                LOCATE CLine%,2 :PRINT Comics.Volume$;
  402.                LOCATE CLine%,6 :PRINT Comics.Issue$;
  403.                LOCATE CLine%,11:PRINT Comics.Title$;
  404.                LOCATE CLine%,52:PRINT Comics.Mint$;
  405.                LOCATE CLine%,57:PRINT Comics.Fine$;
  406.                LOCATE CLine%,62:PRINT Comics.Good$;
  407.                LOCATE CLine%,67:PRINT Comics.Total$;
  408.                LOCATE CLine%,73:PRINT "$";
  409.                       PRINT USING "####.##"; VAL(Comics.WorthTotal$);
  410.                TotalMint%=TotalMint%+VAL(Comics.Mint$)
  411.                TotalFine%=TotalFine%+VAL(Comics.Fine$)
  412.                TotalGood%=TotalGood%+VAL(Comics.Good$)
  413.                GrandTotal%=GrandTotal%+VAL(Comics.Total$)
  414.                TotalWorth!=TotalWorth!+VAL(Comics.WorthTotal$)
  415.                INCR CLine%
  416.             END IF
  417.             CALL dbNext (Comics.File, KeyVal$)
  418.          WEND
  419.          IF dbStatus<>0 THEN
  420.             IF CLine%>23 THEN
  421.                dbStatus=0
  422.                CALL KeyPause(24, Where$)
  423.                CALL ClrArea(5,24,1,80)
  424.                CLine%=6
  425.                COLOR 14,0
  426.                LOCATE CLINE%,36:PRINT "***Totals***"
  427.                LOCATE CLine%,51:PRINT USING "####"; TotalMint%;
  428.                LOCATE CLine%,56:PRINT USING "####"; TotalFine%;
  429.                LOCATE CLine%,61:PRINT USING "####"; TotalGood%;
  430.                LOCATE CLine%,66:PRINT USING "####"; GrandTotal%;
  431.                LOCATE CLine%,73:PRINT "$";
  432.                       PRINT USING "####.##"; TotalWorth!;
  433.             ELSE
  434.                IF CLine%>5 THEN
  435.                   COLOR 11,0
  436.                   LOCATE CLine%, 52
  437.                   PRINT "==== ==== ==== ===== ========"
  438.                END IF
  439.                COLOR 14,0
  440.                LOCATE CLINE%+1,36:PRINT "***Totals***"
  441.                LOCATE CLine%+1,51:PRINT USING "####"; TotalMint%;
  442.                LOCATE CLine%+1,56:PRINT USING "####"; TotalFine%;
  443.                LOCATE CLine%+1,61:PRINT USING "####"; TotalGood%;
  444.                LOCATE CLine%+1,66:PRINT USING "####"; GrandTotal%;
  445.                LOCATE CLine%+1,73:PRINT "$";
  446.                       PRINT USING "####.##"; TotalWorth!;
  447.             END IF
  448.             CALL KeyPause(24, Where$)
  449.          ELSE
  450.             CALL KeyPause(24, Where$)
  451.             CALL ClrArea(5,24,1,80)
  452.          END IF
  453.       WEND
  454.    END IF
  455. END SUB
  456.  
  457.  
  458. SUB SearchList
  459.    SHARED CapsOn, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  460.           Comics.Issue$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  461.           Comics.Good$, Comics.Total$, Comics.WorthTotal$,_
  462.           WherePrint$, NoBox%
  463.  
  464.    LOCAL CLine%, KeyVal$, Where$, PageNum, Search$, Changed, ExitKey,_
  465.         TotalMint%, TotalFine%, TotalGood%, GrandTotal%, TotalWorth!
  466.  
  467.    STATIC  SearchField%, SearchQuery%, SearchValue$, Searching$, Abort%, N
  468.  
  469.    TotalMint%=0
  470.    TotalFine%=0
  471.    TotalGood%=0
  472.    GrandTotal%=0
  473.    TotalWorth!=0
  474.  
  475.  
  476.    CALL ClearKey (Comics.File)
  477.    CALL dbNext (Comics.File, KeyVal$)
  478.    CALL ClrArea(4,24,1,80)
  479.    CALL ProgramHeader(" Search List ")
  480.    Where$ = " "
  481.  
  482.    CALL Searcher(SearchField%, SearchQuery%, SearchValue$, Searching$, Abort%)
  483.    IF Abort% THEN EXIT SUB
  484.  
  485.    CALL ClearKey (Comics.File)
  486.    CALL ContinueSearch(SearchField%,SearchQuery%,SearchValue$,Searching$,-1)
  487.  
  488.    IF dbStatus<>0 THEN
  489.       COLOR 14,0
  490.       LOCATE 5,1
  491.       PRINT "Search Value not found..."
  492.       CALL WarningBeep
  493.       WHILE NOT INSTAT:WEND
  494.       Where$ = INKEY$
  495.       EXIT SUB
  496.    END IF
  497.  
  498.    IF WherePrint$="P" THEN
  499.  
  500.       PageNum=1
  501.       WHILE (dbStatus=0) AND ( Where$<>CHR$(27) )
  502.          COLOR 11,0
  503.          LOCATE 5,1
  504.          PRINT "Printing..."
  505.          LPRINT CHR$(13);
  506.          LPRINT
  507.          LPRINT "Page:"; PageNum; SPC(62); FNDateString$
  508.          LPRINT
  509.          LPRINT SPC(28); "COMIC BOOK INVENTORY FOR"
  510.          LPRINT SPC(40- (LEN(FNTrim$(Searching$))/2) ); Searching$
  511.          LPRINT
  512.          LPRINT "Vol Issue Title                         "+_
  513.                "           Mint Fine Good Total Worth"
  514.          LPRINT "=== ===== =============================="+_
  515.                 "========== ==== ==== ==== ===== ========";
  516.          LPRINT
  517.          CLine% = 1
  518.          WHILE (CLine%<51) AND (dbStatus=0)
  519.                LPRINT SPC(1); Comics.Volume$;
  520.                LPRINT SPC(3); Comics.Issue$;
  521.                LPRINT SPC(2); Comics.Title$;
  522.                LPRINT SPC(1); Comics.Mint$;
  523.                LPRINT SPC(2); Comics.Fine$;
  524.                LPRINT SPC(2); Comics.Good$;
  525.                LPRINT SPC(2); Comics.Total$;
  526.                LPRINT SPC(3); "$";
  527.                       LPRINT USING "####.##"; VAL(Comics.WorthTotal$);
  528.                TotalMint%=TotalMint%+VAL(Comics.Mint$)
  529.                TotalFine%=TotalFine%+VAL(Comics.Fine$)
  530.                TotalGood%=TotalGood%+VAL(Comics.Good$)
  531.                GrandTotal%=GrandTotal%+VAL(Comics.Total$)
  532.                TotalWorth!=TotalWorth!+VAL(Comics.WorthTotal$)
  533.                INCR CLine%
  534.             IF dbStatus=0 THEN CALL ContinueSearch(SearchField%, SearchQuery%,_
  535.                                                    SearchValue$, Searching$,-1)
  536.          WEND
  537.  
  538.          IF dbStatus<>0 THEN
  539.             LPRINT SPC(51); "==== ==== ==== ===== ========";
  540.             LPRINT SPC(35); "***Totals***";
  541.             LPRINT SPC( 3);
  542.             LPRINT USING "####"; TotalMint%;
  543.             LPRINT SPC( 1);
  544.             LPRINT USING "####"; TotalFine%;
  545.             LPRINT SPC( 1);
  546.             LPRINT USING "####"; TotalGood%;
  547.             LPRINT SPC( 1);
  548.             LPRINT USING "####"; GrandTotal%;
  549.             LPRINT SPC( 3); "$";
  550.             LPRINT USING "####.##"; TotalWorth!;
  551.          END IF
  552.  
  553.          LPRINT chr$(12)
  554.          INCR PageNum
  555.          IF dbStatus=0 THEN CALL KeyPause(5, Where$)
  556.          CALL ClrArea(5,24,1,80)
  557.       WEND
  558.    ELSE
  559.       COLOR 11,0
  560.       LOCATE 4,1
  561.       PRINT "Vol Issue Title                         "+_
  562.             "           Mint Fine Good Total Worth"
  563.       WHILE dbStatus=0 AND ( Where$<>CHR$(27) )
  564.          CLine% = 5
  565.          WHILE (CLine%<22) AND (dbStatus=0)
  566.             COLOR 14,0
  567.             LOCATE CLine%,2 :PRINT Comics.Volume$;
  568.             LOCATE CLine%,6 :PRINT Comics.Issue$;
  569.             LOCATE CLine%,11:PRINT Comics.Title$;
  570.             LOCATE CLine%,52:PRINT Comics.Mint$;
  571.             LOCATE CLine%,57:PRINT Comics.Fine$;
  572.             LOCATE CLine%,62:PRINT Comics.Good$;
  573.             LOCATE CLine%,67:PRINT Comics.Total$;
  574.             LOCATE CLine%,73:PRINT "$";
  575.                    PRINT USING "####.##"; VAL(Comics.WorthTotal$);
  576.             TotalMint%=TotalMint%+VAL(Comics.Mint$)
  577.             TotalFine%=TotalFine%+VAL(Comics.Fine$)
  578.             TotalGood%=TotalGood%+VAL(Comics.Good$)
  579.             GrandTotal%=GrandTotal%+VAL(Comics.Total$)
  580.             TotalWorth!=TotalWorth!+VAL(Comics.WorthTotal$)
  581.             INCR CLine%
  582.             IF dbStatus=0 THEN CALL ContinueSearch(SearchField%, SearchQuery%,_
  583.                                                    SearchValue$, Searching$,-1)
  584.          WEND
  585.          CALL ClrArea(22,24,15,65)
  586.          IF dbStatus<>0 THEN
  587.             IF CLine%>23 THEN
  588.                dbStatus=0
  589.                CALL KeyPause(24, Where$)
  590.                CALL ClrArea(5,24,1,80)
  591.                CLine%=6
  592.                COLOR 14,0
  593.                LOCATE CLINE%,36:PRINT "***Totals***"
  594.                LOCATE CLine%,51:PRINT USING "####"; TotalMint%;
  595.                LOCATE CLine%,56:PRINT USING "####"; TotalFine%;
  596.                LOCATE CLine%,61:PRINT USING "####"; TotalGood%;
  597.                LOCATE CLine%,66:PRINT USING "####"; GrandTotal%;
  598.                LOCATE CLine%,73:PRINT "$";
  599.                       PRINT USING "####.##"; TotalWorth!;
  600.             ELSE
  601.                IF CLine%>5 THEN
  602.                   COLOR 11,0
  603.                   LOCATE CLine%, 52
  604.                   PRINT "==== ==== ==== ===== ========"
  605.                END IF
  606.                COLOR 14,0
  607.                LOCATE CLINE%+1,36:PRINT "***Totals***"
  608.                LOCATE CLine%+1,51:PRINT USING "####"; TotalMint%;
  609.                LOCATE CLine%+1,56:PRINT USING "####"; TotalFine%;
  610.                LOCATE CLine%+1,61:PRINT USING "####"; TotalGood%;
  611.                LOCATE CLine%+1,66:PRINT USING "####"; GrandTotal%;
  612.                LOCATE CLine%+1,73:PRINT "$";
  613.                       PRINT USING "####.##"; TotalWorth!;
  614.             END IF
  615.             CALL KeyPause(24, Where$)
  616.          ELSE
  617.             CALL KeyPause(24, Where$)
  618.             CALL ClrArea(5,24,1,80)
  619.             NoBox%=0
  620.          END IF
  621.       WEND
  622.    END IF
  623. END SUB
  624.  
  625.  
  626. SUB CopyComics
  627.    SHARED CopyFromPath$, CopyToPath$, CapsOn, Ent.UpLine, Ent.Home,_
  628.           Ent.End, Ent.DnLine, Ent.CR, Ent.Escape
  629.  
  630.    LOCAL TCopyFromPath$, TCopyToPath$, Dummy$, FldNo, ExitKey$,_
  631.          ExitKey, Changed, N, FromSize&, ToSize&
  632.  
  633.    CALL ProgramHeader(" Copy Files ")
  634.    CALL ClrArea(5,24,1,80)
  635.  
  636.    TCopyFromPath$ = CopyFromPath$
  637.    TCopyToPath$   = CopyToPath$
  638.  
  639.    COLOR 11,0
  640.    LOCATE 7,24:PRINT "Copy From Path: "
  641.    LOCATE 9,26:PRINT "Copy To Path: "
  642.  
  643.    COLOR 14,0
  644.    LOCATE 7,40:PRINT TCopyFromPath$
  645.    LOCATE 9,40:PRINT TCopyToPath$
  646.  
  647.    FldNo=1
  648.    CapsOn=-1
  649.    ExitKey$ = CHR$(13) +_            ' <CR>
  650.               CHR$(27) +_            ' <ESC>
  651.               CHR$(0) + CHR$(72) +_  ' Up arrow
  652.               CHR$(0) + CHR$(80) +_  ' Down arrow
  653.               CHR$(0) + CHR$(81)     ' <Pgdn>
  654.  
  655.  
  656.    DO
  657.       SELECT CASE FldNo
  658.          CASE 1
  659.             CALL UserEntry(25, 25, "", 7, 40, 30, ExitKey$, 1,_
  660.                            TCopyFromPath$, Changed, ExitKey)
  661.             LOCATE 7,40
  662.             PRINT TCopyFromPath$+SPACE$(25-LEN(TCopyFromPath$))
  663.          CASE 2
  664.             CALL UserEntry(25, 25, "", 9, 40, 30, ExitKey$, 1,_
  665.                            TCopyToPath$, Changed, ExitKey)
  666.             LOCATE 9,40
  667.             PRINT TCopyToPath$+SPACE$(25-LEN(TCopyToPath$))
  668.       END SELECT
  669.  
  670.  
  671.       SELECT CASE ExitKey
  672.          CASE Ent.UpLine :DECR FldNo
  673.          CASE Ent.DnLine :INCR FldNo
  674.          CASE Ent.CR
  675.             IF FldNo = 2 THEN EXIT LOOP
  676.             INCR FldNo
  677.          CASE 336, Ent.Escape :EXIT LOOP          ' PgDn, or Esc Keys
  678.       END SELECT
  679.  
  680.       IF FldNo < 1 THEN
  681.          FldNo = 2
  682.       ELSEIF FldNo > 2 THEN
  683.          FldNo = 1
  684.       END IF
  685.    LOOP
  686.  
  687.    IF ExitKey=Ent.Escape THEN  EXIT SUB
  688.  
  689.    CALL DrawBox(15, 17, 26, 52, 23)
  690.    COLOR 11,1
  691.    LOCATE 16,28:PRINT "Copy files now? [Y/N]"
  692.    Dummy$ = "Y"
  693.    ExitKey$ = CHR$(13) +_             ' <CR>
  694.               CHR$(27) +_             ' <ESC>
  695.               CHR$(0)  + CHR$(81)     ' <Pgdn>
  696.    CALL UserEntry(1,1,"YN",16,50,30,ExitKey$,0,Dummy$,Changed,_
  697.                   Exitkey)
  698.    IF (ExitKey=Ent.Escape) OR (Dummy$<>"Y") THEN  EXIT SUB
  699.    COLOR 14,0
  700.    CALL ClrArea(15,17,26,52)
  701.  
  702.    TCopyFromPath$=FNTrim$(TCopyFromPath$)
  703.    TCopyToPath$  =FNTrim$(TCopyToPath$)
  704.  
  705.    IF FNFileExists(TCopyFromPath$+"COMICS.DBD") AND _
  706.                    FNFileExists(TCopyFromPath$+"COMICS.DBI") THEN
  707.       OPEN TCopyFromPath$+"COMICS.DBD" FOR BINARY AS 1
  708.       OPEN TCopyFromPath$+"COMICS.DBI" FOR BINARY AS 2
  709.       FromSize&=LOF(1)+LOF(2)
  710.       CLOSE 1,2
  711.  
  712.       N=INSTR("ABCDEF", LEFT$(TCopyToPath$,1))
  713.       IF N<>0 THEN ToSize&=FNFreeSpace&(N) ELSE ToSize&=0
  714.  
  715.       IF FNFileExists(TCopyToPath$+"COMICS.DBD") THEN
  716.          OPEN TCopyToPath$+"COMICS.DBD" FOR BINARY AS 1
  717.          ToSize&=ToSize&+LOF(1)
  718.          CLOSE 1
  719.       END IF
  720.  
  721.       IF FNFileExists(TCopyToPath$+"COMICS.DBI") THEN
  722.          OPEN TCopyToPath$+"COMICS.DBI" FOR BINARY AS 1
  723.          ToSize&=ToSize&+LOF(1)
  724.          CLOSE 1
  725.       END IF
  726.  
  727.       IF FromSize&<=ToSize& THEN
  728.          IF FNFileExists(ENVIRON$("COMSPEC")) THEN
  729.             CALL DrawBox(15, 17, 27, 51, 23)
  730.             COLOR 14,1
  731.             LOCATE 16,29:PRINT "Copying COMICS.DBD..."
  732.             COLOR 0,0
  733.             LOCATE 18,1:PRINT SPACE$(40)
  734.             LOCATE 18,1
  735.             SHELL "COPY "+TCopyFromPath$+"COMICS.DBD "+_
  736.                    TCopyToPath$+"COMICS.DBD"
  737.             PRINT SPACE$(40)
  738.             COLOR 14,1
  739.             LOCATE 16,29:PRINT "Copying COMICS.DBI..."
  740.             COLOR 0,0
  741.             PRINT
  742.             SHELL "COPY "+TCopyFromPath$+"COMICS.DBI "+_
  743.                    TCopyToPath$+"COMICS.DBI"
  744.             PRINT SPACE$(40)
  745.          ELSE
  746.             CALL DrawBox(21,23,27,52,23)
  747.             LOCATE 22,29
  748.             COLOR 14,1
  749.             PRINT "COMMAND.COM not found."
  750.             CALL WarningBeep
  751.             WHILE NOT INSTAT: WEND
  752.             Dummy$ = INKEY$
  753.             EXIT SUB
  754.          END IF
  755.          COLOR 14,1
  756.          LOCATE 16,29:PRINT "  Copying completed  "
  757.          CALL WarningBeep
  758.          WHILE NOT INSTAT:WEND
  759.          Dummy$=INKEY$
  760.       ELSE
  761.          LOCATE 15,1
  762.          PRINT "Insufficient space on target disk to copy files..."
  763.          CALL WarningBeep
  764.          WHILE NOT INSTAT:WEND
  765.          Dummy$=INKEY$
  766.       END IF
  767.    ELSE
  768.       LOCATE 15,1
  769.       PRINT "Source Files can not be located..."
  770.       CALL WarningBeep
  771.       WHILE NOT INSTAT:WEND
  772.       Dummy$=INKEY$
  773.    END IF
  774. END SUB
  775.  
  776.  
  777.  
  778. DEF FNTrim$(LongStr$)
  779.    LOCAL Temp$
  780.    Temp$=LongStr$
  781.    WHILE LEFT$(Temp$, 1)=" " AND LEN(Temp$)>1
  782.       Temp$=RIGHT$(Temp$, LEN(Temp$)-1)
  783.    WEND
  784.    WHILE RIGHT$(Temp$, 1)=" " AND LEN(Temp$)>1
  785.       Temp$=LEFT$(Temp$, LEN(Temp$)-1)
  786.    WEND
  787.    IF Temp$=" " THEN Temp$=""
  788.    FNTrim$=Temp$
  789. END DEF
  790.  
  791.  
  792.  
  793. SUB KeyPause(CurRow, KeyStroke$)
  794.    SHARED dbStatus
  795.    LOCATE CurRow,1
  796.    COLOR 11,0
  797.  IF dbStatus=0 THEN PRINT "Press <ESC> to abort, any other key to continue. ";
  798.    WHILE NOT INSTAT: WEND
  799.    KeyStroke$ = INKEY$
  800. END SUB
  801.  
  802.  
  803.  
  804. DEF FNFreeSpace&(drive%)
  805.    REG 4,drive%
  806.    REG 1,&H3600
  807.    CALL INTERRUPT &H21
  808.    FNFreeSpace& = CSNG(REG(2)) * REG(3) * REG(1)
  809. END DEF
  810.  
  811.  
  812. SUB QuickReport
  813.    SHARED CapsOn, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  814.           Comics.Issue$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  815.           Comics.Good$, Comics.Total$, Comics.WorthTotal$, Comics.Skip$,_
  816.           WherePrint$
  817.  
  818.    LOCAL  TotalDeleted, TotalRecords, TotalPrice!, TotalMint, TotalFine,_
  819.           TotalGood, TotalComics, TotalWorth!, LastTitle$, KeyVal$,_
  820.           DataRef&, CurrentRecord&, LastRecord&
  821.  
  822.  
  823.    CALL ClrArea(3,24,1,80)
  824.    CALL ProgramHeader(" Quick Report ")
  825.  
  826.    COLOR 11,0
  827.    LOCATE 5,1:PRINT "Compiling data..."
  828.  
  829.    CurrentRecord& = 2 'DataRef&
  830.    LastRecord& = (LOF(4)/276)
  831.    IF CurrentRecord& = LastRecord& THEN EXIT SUB
  832.    GET 4, CurrentRecord&
  833.    DO
  834.       IF CVL(Comics.Skip$)=0 THEN
  835.          INCR TotalRecords
  836.          TotalComics=TotalComics+VAL(Comics.Total$)
  837.          TotalMint  =TotalMint  +VAL(Comics.Mint$)
  838.          TotalFine  =TotalFine  +VAL(Comics.Fine$)
  839.          TotalGood  =TotalGood  +VAL(Comics.Good$)
  840.          TotalPrice!=TotalPrice!+VAL(Comics.Price$)
  841.          TotalWorth!=TotalWorth!+VAL(Comics.WorthTotal$)
  842.       ELSE
  843.          INCR TotalDeleted
  844.       END IF
  845.       INCR CurrentRecord&
  846.       IF (CurrentRecord& > LastRecord&) THEN EXIT LOOP
  847.       GET 4, CurrentRecord&
  848.    LOOP
  849.  
  850.    IF WherePrint$="P" THEN
  851.       LOCATE 5,1:PRINT "Printing Report..."
  852.       LPRINT CHR$(13)
  853.       LPRINT SPC(70); FNDateString$
  854.       LPRINT
  855.       LPRINT SPC(34); "Quick Report"
  856.       LPRINT SPC(34); "============"
  857.       LPRINT
  858.       LPRINT
  859.       LPRINT
  860.       LPRINT SPC( 9); "Total Number of Active Records:  ";
  861.       LPRINT USING "####"; TotalRecords
  862.       LPRINT
  863.       LPRINT SPC( 8); "Total Number of Deleted Records:  ";
  864.       LPRINT USING "####"; TotalDeleted
  865.       LPRINT
  866.       LPRINT SPC(12); "Total Number of Mint Comics:  ";
  867.       LPRINT USING "####"; TotalMint
  868.       LPRINT
  869.       LPRINT SPC(12); "Total Number of Fine Comics:  ";
  870.       LPRINT USING "####"; TotalFine
  871.       LPRINT
  872.       LPRINT SPC(12); "Total Number of Good Comics:  ";
  873.       LPRINT USING "####"; TotalGood
  874.       LPRINT
  875.       LPRINT SPC(17); "Total Number of Comics:  ";
  876.       LPRINT USING "####"; TotalComics
  877.       LPRINT
  878.       LPRINT SPC(10); "Total Initial Price of Comics:";
  879.       LPRINT USING "$$####.##"; TotalPrice!
  880.       LPRINT
  881.       LPRINT SPC(10); "Total Current Worth of Comics:";
  882.       LPRINT USING "$$####.##"; TotalWorth!
  883.       LPRINT
  884.       LPRINT chr$(12)
  885.    ELSE
  886.       LOCATE 5,1
  887.       PRINT SPC( 9); "Total Number of Active Records:  ";
  888.       COLOR 14,0:PRINT USING "####"; TotalRecords
  889.       PRINT:COLOR 11,0
  890.       PRINT SPC( 8); "Total Number of Deleted Records:  ";
  891.       COLOR 14,0:PRINT USING "####"; TotalDeleted
  892.       PRINT:COLOR 11,0
  893.       PRINT SPC(12); "Total Number of Mint Comics:  ";
  894.       COLOR 14,0:PRINT USING "####"; TotalMint
  895.       PRINT:COLOR 11,0
  896.       PRINT SPC(12); "Total Number of Fine Comics:  ";
  897.       COLOR 14,0:PRINT USING "####"; TotalFine
  898.       PRINT:COLOR 11,0
  899.       PRINT SPC(12); "Total Number of Good Comics:  ";
  900.       COLOR 14,0:PRINT USING "####"; TotalGood
  901.       PRINT:COLOR 11,0
  902.       PRINT SPC(17); "Total Number of Comics:  ";
  903.       COLOR 14,0:PRINT USING "####"; TotalComics
  904.       PRINT:COLOR 11,0
  905.       PRINT SPC(10); "Total Initial Price of Comics:";
  906.       COLOR 14,0:PRINT USING "$$####.##"; TotalPrice!
  907.       PRINT:COLOR 11,0
  908.       PRINT SPC(10); "Total Current Worth of Comics:";
  909.       COLOR 14,0:PRINT USING "$$####.##"; TotalWorth!
  910.       WHILE NOT INSTAT
  911.       WEND
  912.       LastTitle$=INKEY$
  913.    END IF
  914. END SUB
  915.  
  916. SUB ProgramHeader (Title$)
  917.    COLOR 15,1
  918.    LOCATE 1,1
  919.    PRINT " COMIC BOOK INVENTORY";SPACE$(49)
  920.    LOCATE 1,71
  921.    PRINT FNDateString$+" "
  922.    LOCATE 2,1
  923.    COLOR 7,1
  924.    PRINT STRING$(80,196)
  925.    LOCATE 2,(80-LEN(Title$))\2
  926.    COLOR 14,1
  927.    PRINT Title$
  928. END SUB
  929.  
  930. SUB ClrArea(TopRow,BottomRow,LeftCol,RightCol)
  931.    LOCAL NumberOfRows,NumberOfCols,NumberOfChars,ClrText$,ClrAttr$
  932.    NumberOfRows=BottomRow-TopRow+1
  933.    NumberOfCols=RightCol-LeftCol+1
  934.    NumberOfChars=NumberOfRows*NumberOfCols
  935.    ClrText$=STRING$(NumberOfChars," ")
  936.    ClrAttr$=STRING$(NumberOfChars,&H07)
  937.    CALL WriteScreenArea(TopRow,LeftCol,NumberOfRows,NumberOfCols,_
  938.      ClrText$,ClrAttr$)
  939. END SUB
  940.  
  941. SUB DrawBox(TopRow,BottomRow,LeftCol,RightCol,ColorAttr)
  942.    LOCAL Row, NumberOfRows, NumberOfCols, NumberOfChars, BoxText$, BoxAttr$
  943.  
  944.    NumberOfRows=BottomRow-TopRow+1
  945.    NumberOfCols=RightCol-LeftCol+1
  946.    NumberOfChars=NumberOfRows*NumberOfCols
  947.    BoxText$=CHR$(218)+STRING$(NumberOfCols-2,CHR$(196))+CHR$(191)
  948.    Row=1
  949.    DO
  950.       BoxText$=BoxText$+CHR$(179)+SPACE$(NumberOfCols-2)+CHR$(179)
  951.       INCR Row
  952.    LOOP UNTIL Row=NumberOfRows-1
  953.  
  954.    BoxText$=BoxText$+CHR$(192)+STRING$(NumberOfCols-2,CHR$(196))+CHR$(217)
  955.  
  956.    BoxAttr$=STRING$(NumberOfChars,ColorAttr)
  957.    CALL WriteScreenArea(TopRow, LeftCol, NumberOfRows,NumberOfCols,_
  958.      BoxText$, BoxAttr$)
  959. END SUB
  960.  
  961. SUB ComicsPrompts
  962.    COLOR 11,0
  963.    LOCATE 6,1
  964.    PRINT "Title.....:"
  965.    PRINT "Volume....:"
  966.    PRINT "Issue.....:"
  967.    PRINT "Company...:"
  968.    PRINT "Editor....:"
  969.    PRINT "Writer....:"
  970.    PRINT "Penciler..:"
  971.    PRINT "Inker.....:"
  972.    PRINT "Price.....:"
  973.    PRINT "Mint......:"
  974.    PRINT "Fine......:"
  975.    PRINT "Good......:"
  976.    PRINT "Total.....:"
  977.    PRINT "Box.......:"
  978.    PRINT "Notes.....:"
  979.    LOCATE 15,30: PRINT "WorthMint.:"
  980.    LOCATE 16,30: PRINT "WorthFine.:"
  981.    LOCATE 17,30: PRINT "WorthGood.:"
  982.    LOCATE 18,30: PRINT "WorthTotal:"
  983.    LOCATE 15,60: PRINT "PercentMint.:"
  984.    LOCATE 16,60: PRINT "PercentFine.:"
  985.    LOCATE 17,60: PRINT "PercentGood.:"
  986.    LOCATE 18,60: PRINT "PercentTotal:"
  987. END SUB
  988.  
  989. SUB AddComics
  990.    SHARED CapsOn, Ent.Upline, Ent.Escape, Ent.Home, Ent.End, Ent.CR,_
  991.           Ent.DnLine, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  992.           Comics.Issue$
  993.  
  994.    LOCAL Title$, Volume$, Issue$, FldNo, TempExitKey, ExitKey, ExitKey$,_
  995.          Changed, Choice$
  996.  
  997.    CALL ClrArea(3,23,1,80)
  998.    CALL ProgramHeader(" Add Records ")
  999.    CALL ComicsPrompts
  1000.    ExitKey$ = CHR$(13) +_            ' <CR>
  1001.               CHR$(0) + CHR$(71) +_  ' Home key
  1002.               CHR$(0) + CHR$(72) +_  ' Up arrow
  1003.               CHR$(0) + CHR$(79) +_  ' End
  1004.               CHR$(0) + CHR$(80) +_  ' Down arrow
  1005.               CHR$(0) + CHR$(81) +_  ' <Pgdn>
  1006.               CHR$(27)               ' <ESC>
  1007.  
  1008.    DO
  1009.       Title$   = SPACE$(40)
  1010.       Issue$   = "   "
  1011.       FldNo    = 1
  1012.       Volume$ = "1"
  1013.       Issue$  = ""
  1014.       GOSUB COMICSClear
  1015.       CALL DisplayComics (0)
  1016.       COLOR 14,0
  1017.       DO
  1018.          SELECT CASE FldNo
  1019.             CASE 1
  1020.                CapsOn   = %Yes
  1021.                CALL UserEntry(40, 40, "", 6, 12, 30, ExitKey$, 1, Title$,_
  1022.                               Changed, ExitKey)
  1023.                LSET Comics.Title$ = Title$
  1024.                Title$ = Comics.Title$
  1025.                CapsOn  = %No
  1026.                TempExitKey = ExitKey
  1027.                LOCATE 6,12:PRINT Title$
  1028.             CASE 2
  1029.                CALL UserEntry( 1, 1, " 1234567890", 7, 12, 30, ExitKey$, 1,_
  1030.                               Volume$, Changed, ExitKey)
  1031.                TempExitKey = ExitKey
  1032.                LOCATE 7,12:PRINT Volume$
  1033.             CASE 3
  1034.                CALL UserEntry( 3, 3, "1234567890", 8, 12, 30, ExitKey$, 1,_
  1035.                               Issue$, Changed, ExitKey)
  1036.                TempExitKey = ExitKey
  1037.                IF VAL(Issue$) < 100 THEN
  1038.                   IF Issue$="" THEN Issue$="1"
  1039.                   IF VAL(Issue$) = 0 THEN
  1040.                      Issue$ = "  0"
  1041.                   ELSE
  1042.                      Issue$ = STR$(VAL(Issue$))
  1043.                      IF LEN(Issue$) = 2 THEN Issue$ = " "+Issue$
  1044.                   END IF
  1045.                END IF
  1046.                LOCATE 8,12:PRINT Issue$
  1047.          END SELECT
  1048.  
  1049.          SELECT CASE TempExitKey
  1050.             CASE Ent.UpLine :DECR FldNo
  1051.             CASE Ent.Home   :FldNo = 1
  1052.             CASE Ent.End    :FldNo = 3
  1053.             CASE Ent.DnLine :INCR FldNo
  1054.             CASE Ent.CR
  1055.                IF FldNo = 3 THEN EXIT LOOP
  1056.                INCR FldNo
  1057.             CASE 336, Ent.Escape :EXIT LOOP          ' PgDn, or Esc Keys
  1058.          END SELECT
  1059.  
  1060.          IF FldNo < 1 THEN
  1061.             FldNo = 3
  1062.          ELSEIF FldNo > 3 THEN
  1063.             FldNo = 1
  1064.          END IF
  1065.       LOOP
  1066.       IF TempExitKey=Ent.Escape OR Title$=SPACE$(40) THEN EXIT LOOP
  1067.       LSET Comics.Title$  = Title$
  1068.       LSET Comics.Volume$ = Volume$
  1069.       IF VAL(Issue$)=0 THEN Issue$  = "  0"
  1070.       RSET Comics.Issue$  = Issue$
  1071.  
  1072.       LOCATE 7,12:PRINT Volume$
  1073.       LOCATE 8,12:PRINT Comics.Issue$
  1074.       CALL dbRead(Comics.File, Title$+Volume$+Issue$)
  1075.  
  1076.       IF dbStatus <> 1005 THEN
  1077.          CALL WarningBeep
  1078.          Choice$ = "NO"
  1079.          CapsOn = %YES
  1080.          CALL DrawBox(22, 24, 16, 64, 23)
  1081.          LOCATE 23,18
  1082.          COLOR 11,1
  1083.          PRINT "This record already exists.  Edit record?"
  1084.          CALL UserEntry(3, 3, "YESNO", 23, 60, 30, CHR$(13)+CHR$(27)+_
  1085.                         CHR$(0)+CHR$(81), 0, Choice$, Changed, ExitKey)
  1086.          IF Choice$="YES" AND ExitKey<>27 THEN CALL DisplayComics(-1):_
  1087.             CALL UpdateComics(-1)
  1088.          CALL ClrArea(22,24,16,64)
  1089.          CapsOn = %NO
  1090.       ELSE
  1091.          CALL UpdateComics (0)
  1092.       END IF
  1093.    LOOP
  1094. END SUB
  1095.  
  1096.  
  1097.  
  1098.  
  1099. SUB HitEnd(HitTop)
  1100.    LOCAL Where$
  1101.    CALL DrawBox(22, 24, 26, 52, 23)
  1102.    IF HitTop THEN Where$="Top" ELSE Where$="End"
  1103.    COLOR 14,1
  1104.    LOCATE 23,28
  1105.    PRINT Where$+"-of-file encountered"
  1106.    CALL WarningBeep
  1107.    WHILE NOT INSTAT: WEND
  1108.    Where$ = INKEY$
  1109.    CALL ClrArea(22,24,26,52)
  1110. END SUB
  1111.  
  1112.  
  1113.  
  1114. SUB EditComics
  1115.    SHARED CapsOn, Ent.Upline, Ent.Escape, Ent.Home, Ent.End, Ent.CR,_
  1116.           Ent.DnLine, Comics.File, dbStatus, Comics.Title$, Comics.Volume$,_
  1117.           Comics.Issue$, Comics.WorthMint$, KeyVal$, EscPressed
  1118.  
  1119.    LOCAL Title$, Volume$, Issue$, FldNo, TempExitKey, ExitKey, ExitKey$,_
  1120.          Changed, DataRef&, WorthMint$, Choice$, Abort%
  1121.  
  1122.    STATIC CurrentKey$, SearchField%, SearchQuery%, SearchValue$, Searching$,_
  1123.           EditPick
  1124.  
  1125.    CALL ClrArea(3,23,1,80)
  1126.    CALL ProgramHeader(" Edit Records ")
  1127.    CALL ComicsPrompts
  1128.  
  1129.    KeyVal$ = CurrentKey$
  1130.    CALL dbRead(Comics.File, KeyVal$)
  1131.    IF dbStatus=1005 OR dbStatus=1006 THEN CALL ClearKey (Comics.File):_
  1132.       CALL dbNext (Comics.File, KeyVal$)
  1133.  
  1134.    IF dbStatus=1006 THEN
  1135.       CALL WarningBeep
  1136.       CALL DrawBox(22,24,31,48,78)
  1137.       COLOR 14,4
  1138.       LOCATE 23,33
  1139.       PRINT "Empty database"
  1140.       WHILE NOT INSTAT: WEND
  1141.       Choice$ = INKEY$
  1142.       CALL ClrArea(22,24,31,48)
  1143.       EXIT SUB
  1144.    END IF
  1145.  
  1146.  
  1147.    COLOR 7,1
  1148.    CALL DrawBox(2,13,67,79,23)
  1149.    LOCATE  2,67: PRINT CHR$(194)
  1150.    LOCATE  2,79: PRINT CHR$(194)
  1151.    LOCATE 10,67: PRINT CHR$(195)+STRING$(11,196)+CHR$(180)
  1152.  
  1153.    DO
  1154.       CALL DisplayComics (-1)
  1155.       CapsOn = %Yes
  1156.       CALL EditChoose(EditPick)
  1157.       IF EscPressed THEN EXIT LOOP
  1158.       IF EditPick=1 THEN
  1159.          CALL dbPrev (Comics.File, KeyVal$)
  1160.          IF dbStatus=1006 THEN CALL HitEnd(-1):_
  1161.          CALL dbNext (Comics.File, KeyVal$)
  1162.       ELSEIF EditPick=2 THEN
  1163.          CALL dbNext (Comics.File, KeyVal$)
  1164.          IF dbStatus=1006 THEN CALL HitEnd(0):_
  1165.             CALL dbPrev (Comics.File, KeyVal$)
  1166.       ELSEIF EditPick=6 THEN
  1167.          CALL Searcher(SearchField%,SearchQuery%,SearchValue$,Searching$,_
  1168.                        Abort%)
  1169.          CALL ComicsPrompts
  1170.          CALL DisplayComics (-1)
  1171.          IF NOT Abort% THEN
  1172.             CALL ClearKey (Comics.File)
  1173.             CALL ContinueSearch(SearchField%,SearchQuery%,SearchValue$,_
  1174.                  Searching$,0)
  1175.          END IF
  1176.       ELSEIF EditPick=7 THEN
  1177.          CALL ContinueSearch(SearchField%,SearchQuery%,SearchValue$,_
  1178.                              Searching$,0)
  1179.       ELSEIF EditPick=5 THEN
  1180.          KeyVal$=Comics.Title$+CHR$( ASC(Comics.Volume$)+1 )
  1181.          CALL SearchKey(Comics.File, DataRef&, KeyVal$)
  1182.          CALL dbRead(Comics.File, KeyVal$)
  1183.          IF dbStatus=1006 THEN
  1184.             CALL HitEnd(0)
  1185.             CALL dbPrev (Comics.File, KeyVal$)
  1186.          END IF
  1187.       ELSEIF EditPick=3 THEN
  1188.          Choice$="                                        "
  1189.          CALL DrawBox(22,24,9,72,23)
  1190.          LOCATE 23,11
  1191.          COLOR 11,1
  1192.          PRINT "Enter search Title:"
  1193.          CALL UserEntry(40,40,"", 23, 31, 30, CHR$(13)+CHR$(27)+_
  1194.                           CHR$(0)+CHR$(81), 1, Choice$, Changed, ExitKey)
  1195.          IF Choice$<>SPACE$(40) AND ExitKey<>27 THEN
  1196.             KeyVal$=Choice$  '+SPACE$(44-LEN(Choice$))
  1197.             CALL SearchKey(Comics.File, DataRef&, KeyVal$)
  1198.             CALL dbRead(Comics.File, KeyVal$)
  1199.             IF dbStatus=1005 OR dbStatus=1006 THEN
  1200.                CALL ClrArea(22,24,9,78)
  1201.                CALL HitEnd(0)
  1202.                CALL dbRead (Comics.File, CurrentKey$)
  1203.                KeyVal$ = CurrentKey$
  1204.             END IF
  1205.          END IF
  1206.          CALL ClrArea(22,24,9,78)
  1207.  
  1208.       ELSEIF EditPick=4 THEN
  1209.          Choice$="   "
  1210.          CALL DrawBox(22,24,26,52,23)
  1211.          CALL PromptEntry(3,3,"1234567890", 23, 27, 27, 30, CHR$(13)+CHR$(27)+_
  1212.                           CHR$(0)+CHR$(81), 1," Enter Issue number: ",_
  1213.                           Choice$, Changed, ExitKey)
  1214.          IF Choice$<>"   " AND ExitKey<>27 THEN
  1215.             IF VAL(Choice$) < 100 THEN Choice$ = STR$(VAL(Choice$))
  1216.             RSET Comics.Issue$  = Choice$
  1217.             KeyVal$=Comics.Title$+Comics.Volume$+Comics.Issue$
  1218.             CALL SearchKey(Comics.File, DataRef&, KeyVal$)
  1219.             CALL dbRead(Comics.File, KeyVal$)
  1220.             IF dbStatus=1005 OR dbStatus=1006 THEN
  1221.                CALL HitEnd(0)
  1222.                CALL dbRead (Comics.File, CurrentKey$)
  1223.                KeyVal$ = CurrentKey$
  1224.             END IF
  1225.          END IF
  1226.          CALL ClrArea(22,24,9,78)
  1227.  
  1228.       ELSEIF EditPick=9 THEN
  1229.          CALL UpdateComics (-1)
  1230.          KeyVal$=Comics.Title$+Comics.Volume$+Comics.Issue$
  1231.          CALL dbRead(Comics.File, KeyVal$)
  1232.       ELSEIF EditPick<0 AND EditPick>-11  THEN
  1233.          CALL ClearKey (Comics.File)
  1234.          CALL dbNext (Comics.File, KeyVal$)
  1235.          EditPick=-EditPick
  1236.       ELSEIF EditPick<-10 THEN
  1237.          CALL SearchKey(Comics.File, DataRef&, STRING$(44, 255))
  1238.          CALL dbPrev(Comics.File, KeyVal$)
  1239.          EditPick=(EditPick+1)/(-10)
  1240.       ELSEIF EditPick=10 THEN
  1241.          Choice$="NO "
  1242.          CapsOn= %Yes
  1243.          CALL DrawBox(22,24,26,52,78)
  1244.          CALL PromptEntry(3, 3, "YESNO", 23, 27, 78, 79, CHR$(13)+CHR$(27)+_
  1245.                           CHR$(0)+CHR$(81), 0," Delete this record? ",_
  1246.                           Choice$, Changed, ExitKey)
  1247.          IF Choice$="YES" AND ExitKey<>27 THEN
  1248.             CALL dbDelete (Comics.File, KeyVal$)
  1249.             CALL dbNext (Comics.File, KeyVal$)
  1250.             IF dbStatus=1006 THEN CALL dbPrev (Comics.File, KeyVal$)
  1251.          END IF
  1252.          CALL ClrArea(22,24,26,70)
  1253.       END IF
  1254.       CurrentKey$=KeyVal$
  1255.  
  1256.    LOOP
  1257. END SUB
  1258.  
  1259.  
  1260.  
  1261. SUB Searcher(SearchField%, SearchQuery%, SearchValue$, Searching$, Abort%)
  1262.    SHARED EscPressed,CapsOn
  1263.    LOCAL N, Visible, TempSF%, TempSQ%, TempSF$,ExitKey,ExitKey$,ValidChar$
  1264.    DIM STATIC FieldName$(1:24), QueryName$(1:7)
  1265.  
  1266.    TempSF%=SearchField%
  1267.    TempSQ%=SearchQuery%
  1268.    TempSF$=SearchValue$
  1269.  
  1270.    FieldName$( 1) = " Title        "
  1271.    FieldName$( 2) = " Volume       "
  1272.    FieldName$( 3) = " Issue        "
  1273.    FieldName$( 4) = " Company      "
  1274.    FieldName$( 5) = " Editor       "
  1275.    FieldName$( 6) = " Writer       "
  1276.    FieldName$( 7) = " Penciler     "
  1277.    FieldName$( 8) = " Inker        "
  1278.    FieldName$( 9) = " Price        "
  1279.    FieldName$(10) = " Mint         "
  1280.    FieldName$(11) = " Fine         "
  1281.    FieldName$(12) = " Good         "
  1282.    FieldName$(13) = " Total        "
  1283.    FieldName$(14) = " WorthMint    "
  1284.    FieldName$(15) = " WorthFine    "
  1285.    FieldName$(16) = " WorthGood    "
  1286.    FieldName$(17) = " WorthTotal   "
  1287.    FieldName$(18) = " PercentMint  "
  1288.    FieldName$(19) = " PercentFine  "
  1289.    FieldName$(20) = " PercentGood  "
  1290.    FieldName$(21) = " PercentTotal "
  1291.    FieldName$(22) = " Box          "
  1292.    FieldName$(23) = " Notes        "
  1293.    FieldName$(24) = " Alpha-Fields "
  1294.    QueryName$(1) = " Equals       "
  1295.    QueryName$(2) = " Not Equal To "
  1296.    QueryName$(3) = " Less Than    "
  1297.    QueryName$(4) = " Greater Than "
  1298.    QueryName$(5) = " < or =       "
  1299.    QueryName$(6) = " > or =       "
  1300.    QueryName$(7) = " Contains     "
  1301.  
  1302.    CALL DrawBox(6,20,9,24,23)
  1303.    LOCATE 6,11
  1304.    COLOR 14,1
  1305.    PRINT "Search Field"
  1306.    CALL Choose(7,10,SearchField%, 13, 24, FieldName$(),0,0,"")
  1307.  
  1308.    IF EscPressed THEN GOTO AbortSearchSub
  1309.  
  1310.    IF SearchField%=2 OR SearchField%=3 OR_
  1311.            (SearchField%>8 AND SearchField%<23) THEN
  1312.       N=6
  1313.       Visible=6
  1314.       ValidChar$="+-1234567890."
  1315.       ExitKey$="ENLG<>"
  1316.    ELSE
  1317.       N=7
  1318.       Visible=7
  1319.       ValidChar$=""
  1320.       ExitKey$="ENLG<>C"
  1321.    END IF
  1322.  
  1323.    IF SearchField%=24 THEN
  1324.       CALL DrawBox(7,9,39,54,23)
  1325.       LOCATE 7,41
  1326.       COLOR 14,1
  1327.       PRINT "Search Query"
  1328.       LOCATE 8,40
  1329.       COLOR 14,5
  1330.       PRINT " Contains     "
  1331.       SearchQuery%=7
  1332.    ELSE
  1333.       CALL DrawBox(7,8+N,39,54,23)
  1334.       LOCATE 7,41
  1335.       COLOR 14,1
  1336.       PRINT "Search Query"
  1337.       CALL Choose(8,40,SearchQuery%, N, Visible, QueryName$(),0,-1,ExitKey$)
  1338.    END IF
  1339.  
  1340.    IF EscPressed THEN GOTO AbortSearchSub
  1341.  
  1342.    CALL DrawBox(22,24,29,50,23)
  1343.    LOCATE 22,34
  1344.    COLOR 14,1
  1345.    PRINT "Search Value"
  1346.  
  1347.    ExitKey$= CHR$(13)+_
  1348.              CHR$(27)+_
  1349.              CHR$(0) + CHR$(81)
  1350.    CapsOn=-1
  1351.    CALL UserEntry(18,18,ValidChar$,23,31,30,ExitKey$,0,SearchValue$,0,ExitKey)
  1352.    IF ExitKey=27 THEN GOTO AbortSearchSub
  1353.    Abort%=0
  1354.    IF LEN(SearchValue$)=0 THEN SearchValue$=" "
  1355.    IF SearchField%=2 OR SearchField%=3 OR_
  1356.       (SearchField%>8 AND SearchField%<23) THEN
  1357.      Searching$=FieldName$(SearchField%)+QueryName$(SearchQuery%)+SearchValue$
  1358.    ELSE
  1359.      Searching$=FieldName$(SearchField%)+QueryName$(SearchQuery%)+_
  1360.                CHR$(34)+SearchValue$+CHR$(34)
  1361.    END IF
  1362.  
  1363.    GOTO EndSearchSub
  1364.  
  1365.    AbortSearchSub:
  1366.    SearchField%=TempSF%
  1367.    SearchQuery%=TempSQ%
  1368.    SearchValue$=TempSF$
  1369.    Abort%=-1
  1370.  
  1371.    EndSearchSub:
  1372.    CALL ClrArea(6,20,9,24)
  1373.    CALL ClrArea(7,8+N,39,54)
  1374.    CALL ClrArea(22,24,28,51)
  1375.  
  1376. END SUB
  1377.  
  1378. SUB ContinueSearch(SearchField%,SearchQuery%,SearchValue$,Searching$,Listing%)
  1379.    SHARED Comics.File, KeyVal$, dbStatus,_
  1380.           Comics.Title$, Comics.Volume$, Comics.Issue$,_
  1381.           Comics.Company$, Comics.Editor$, Comics.Writer$, Comics.Penciler$,_
  1382.           Comics.Inker$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  1383.           Comics.Good$, Comics.Total$, Comics.WorthMint$, Comics.WorthFine$,_
  1384.           Comics.WorthGood$, Comics.WorthTotal$, Comics.PercentMint$,_
  1385.           Comics.PercentFine$, Comics.PercentGood$, Comics.PercentTotal$,_
  1386.           Comics.Box$, Comics.Notes$, NoBox%
  1387.  
  1388.    LOCAL  SField$,OriginalKeyVal$
  1389.  
  1390.    IF Searching$="" THEN
  1391.       CALL dbNext(Comics.File, KeyVal$)
  1392.       IF dbStatus=1006 THEN
  1393.          CALL ClrArea(22,24,15,65)
  1394.          CALL HitEnd(0)
  1395.          CALL dbPrev (Comics.File, KeyVal$)
  1396.       END IF
  1397.       EXIT SUB
  1398.    END IF
  1399.    OriginalKeyVal$=KeyVal$
  1400.    IF Listing% THEN
  1401.       IF NoBox%=0 THEN CALL DrawBox(22,24,15,65,23)
  1402.       NoBox%=1
  1403.    ELSE
  1404.       CALL DrawBox(22,24,15,65,23)
  1405.    END IF
  1406.    LOCATE 22,33
  1407.    COLOR 14,1
  1408.    PRINT "Searching For"
  1409.    LOCATE 23,16
  1410.    COLOR 11,1
  1411.    PRINT Searching$
  1412.    DO
  1413.       CALL dbNext(Comics.File, KeyVal$)
  1414.       IF dbStatus=1006 THEN              'End-of-File
  1415.          CALL ClrArea(22,24,15,65)
  1416.          NoBox%=0
  1417.          IF NOT(Listing%) THEN
  1418.             CALL HitEnd(0)
  1419.             CALL dbPrev (Comics.File, KeyVal$)
  1420.          END IF
  1421.          EXIT LOOP
  1422.       END IF
  1423.       SELECT CASE SearchField%
  1424.          CASE 1 :SField$=Comics.Title$
  1425.          CASE 2 :SField$=Comics.Volume$
  1426.          CASE 3 :SField$=Comics.Issue$
  1427.          CASE 4 :SField$=Comics.Company$
  1428.          CASE 5 :SField$=Comics.Editor$
  1429.          CASE 6 :SField$=Comics.Writer$
  1430.          CASE 7 :SField$=Comics.Penciler$
  1431.          CASE 8 :SField$=Comics.Inker$
  1432.          CASE 9 :SField$=Comics.Price$
  1433.          CASE 10:SField$=Comics.Mint$
  1434.          CASE 11:SField$=Comics.Fine$
  1435.          CASE 12:SField$=Comics.Good$
  1436.          CASE 13:SField$=Comics.Total$
  1437.          CASE 14:SField$=Comics.WorthMint$
  1438.          CASE 15:SField$=Comics.WorthFine$
  1439.          CASE 16:SField$=Comics.WorthGood$
  1440.          CASE 17:SField$=Comics.WorthTotal$
  1441.          CASE 18:SField$=Comics.PercentMint$
  1442.          CASE 19:SField$=Comics.PercentFine$
  1443.          CASE 20:SField$=Comics.PercentGood$
  1444.          CASE 21:SField$=Comics.PercentTotal$
  1445.          CASE 22:SField$=Comics.Box$
  1446.          CASE 23:SField$=UCASE$(Comics.Notes$)
  1447.          CASE 24:SField$=UCASE$(Comics.Title$+Comics.Company$+Comics.Editor$+_
  1448.                  Comics.Writer$+Comics.Penciler$+Comics.Inker$+Comics.Notes$)
  1449.       END SELECT
  1450.  
  1451.       IF SearchField%=2 OR SearchField%=3 OR_
  1452.               (SearchField%>8 AND SearchField%<23) THEN
  1453.          SELECT CASE SearchQuery%
  1454.             CASE 1:IF VAL(SField$)=VAL(SearchValue$) THEN EXIT LOOP
  1455.             CASE 2:IF VAL(SField$)<>VAL(SearchValue$) THEN EXIT LOOP
  1456.             CASE 3:IF VAL(SField$)< VAL(SearchValue$) THEN EXIT LOOP
  1457.             CASE 4:IF VAL(SField$)> VAL(SearchValue$) THEN EXIT LOOP
  1458.             CASE 5:IF VAL(SField$)<=VAL(SearchValue$) THEN EXIT LOOP
  1459.             CASE 6:IF VAL(SField$)>=VAL(SearchValue$) THEN EXIT LOOP
  1460.          END SELECT
  1461.       ELSE
  1462.          SELECT CASE SearchQuery%
  1463.             CASE 1:IF LEFT$(SField$,LEN(SearchValue$))_
  1464.                       = SearchValue$ THEN EXIT LOOP
  1465.             CASE 2:IF LEFT$(SField$,LEN(SearchValue$))_
  1466.                       <>SearchValue$ THEN EXIT LOOP
  1467.             CASE 3:IF LEFT$(SField$,LEN(SearchValue$))_
  1468.                       < SearchValue$ THEN EXIT LOOP
  1469.             CASE 4:IF LEFT$(SField$,LEN(SearchValue$))_
  1470.                       > SearchValue$ THEN EXIT LOOP
  1471.             CASE 5:IF LEFT$(SField$,LEN(SearchValue$))_
  1472.                       <=SearchValue$ THEN EXIT LOOP
  1473.             CASE 6:IF LEFT$(SField$,LEN(SearchValue$))_
  1474.                       >=SearchValue$ THEN EXIT LOOP
  1475.             CASE 7:IF INSTR(SField$,SearchValue$) THEN EXIT LOOP
  1476.          END SELECT
  1477.       END IF
  1478.       IF INSTAT AND INKEY$=CHR$(27) THEN KeyVal$=OriginalKeyVal$:_
  1479.          CALL dbRead(Comics.File,KeyVal$):NoBox%=0:EXIT LOOP
  1480.    LOOP
  1481.    IF NOT (Listing%) THEN CALL ClrArea(22,24,15,65)
  1482.  
  1483. END SUB
  1484.  
  1485.  
  1486.  
  1487.  
  1488. DEF FNPriceFormat$(Price$)
  1489.   LOCAL DecimalPoint, Length
  1490.   IF VAL(Price$) <> 0 THEN
  1491.      Length = LEN(Price$)
  1492.      DecimalPoint = Length - INSTR(Price$, ".")
  1493.      SELECT CASE DecimalPoint
  1494.         CASE 0
  1495.            Price$ = Price$+"00"
  1496.         CASE 1
  1497.            Price$ = Price$+"0"
  1498.         CASE 2
  1499.            IF INSTR(Price$, ".") = 0 THEN  Price$ = Price$+".00"
  1500.         CASE Length
  1501.            Price$ = Price$+".00"
  1502.        CASE ELSE
  1503.            Price$ = LEFT$(Price$, INSTR(Price$, ".")+2)
  1504.      END SELECT
  1505.        FNPriceFormat$ = Price$
  1506.   ELSE
  1507.      FNPriceFormat$ = "0.00"
  1508.   END IF
  1509. END DEF
  1510.  
  1511.  
  1512.  
  1513. SUB UpdateComics (Edit)
  1514.    SHARED Comics.Title$, Comics.Volume$, Comics.Issue$,_
  1515.           Comics.Company$, Comics.Editor$, Comics.Writer$, Comics.Penciler$,_
  1516.           Comics.Inker$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  1517.           Comics.Good$, Comics.Total$, Comics.WorthMint$, Comics.WorthFine$,_
  1518.           Comics.WorthGood$, Comics.WorthTotal$, Comics.PercentMint$,_
  1519.           Comics.PercentFine$, Comics.PercentGood$, Comics.PercentTotal$,_
  1520.           Comics.Box$, Comics.Notes$, CapsOn, Ent.Upline, Ent.Escape,_
  1521.           Ent.Home, Ent.End, Ent.CR, Ent.DnLine, Comics.File, dbStatus
  1522.  
  1523.  
  1524.    LOCAL Title$, Volume$, Issue$,_
  1525.          Company$, Editor$, Writer$, Penciler$, Inker$, Price$, Mint$,_
  1526.          Fine$, Good$, Total$, WorthMint$, WorthFine$, WorthGood$,_
  1527.          WorthTotal$, Box$, Notes$, FldNo, ExitKey, Changed, NumberChanged,_
  1528.          ExitKey$, TempNum&, OldKey$, DataRef&
  1529.  
  1530.    ExitKey$ = CHR$(13) +_
  1531.               CHR$(0) + CHR$(71) +_
  1532.               CHR$(0) + CHR$(72) +_
  1533.               CHR$(0) + CHR$(79) +_
  1534.               CHR$(0) + CHR$(80) +_
  1535.               CHR$(0) + CHR$(81) +_
  1536.               CHR$(27)
  1537.  
  1538.  
  1539.    IF Edit THEN
  1540.  
  1541.       OldKey$       = Comics.Title$+Comics.Volume$+Comics.Issue$
  1542.       Company$      = Comics.Company$
  1543.       Editor$       = Comics.Editor$
  1544.       Writer$       = Comics.Writer$
  1545.       Penciler$        = Comics.Penciler$
  1546.       Inker$        = Comics.Inker$
  1547.       Price$        = Comics.Price$
  1548.       Mint$        = Comics.Mint$
  1549.       Fine$        = Comics.Fine$
  1550.       Good$         = Comics.Good$
  1551.       Total$        = Comics.Total$
  1552.       WorthMint$    = Comics.WorthMint$
  1553.       WorthFine$    = Comics.WorthFine$
  1554.       WorthGood$    = Comics.WorthGood$
  1555.       WorthTotal$   = Comics.WorthTotal$
  1556.       Box$        = Comics.Box$
  1557.       Notes$        = Comics.Notes$
  1558.    END IF
  1559.  
  1560.    Title$        = Comics.Title$
  1561.    Volume$       = Comics.Volume$
  1562.    Issue$        = Comics.Issue$
  1563.  
  1564.    FldNo = 1
  1565.    NumberChanged = 0
  1566.    COLOR 14,0
  1567.    DO
  1568.       CapsOn = %Yes
  1569.       SELECT CASE FldNo
  1570.          CASE -2
  1571.             CALL UserEntry(40, 40, "", 6, 12, 30, ExitKey$, 1, Title$,_
  1572.                            Changed, ExitKey)
  1573.             LSET Comics.Title$ = Title$
  1574.             Title$ = Comics.Title$
  1575.             LOCATE 6,12:PRINT Comics.Title$
  1576.          CASE -1
  1577.             CALL UserEntry( 1, 1, " 1234567890", 7, 12, 30, ExitKey$, 0,_
  1578.                            Volume$, Changed, ExitKey)
  1579.             LSET Comics.Volume$ = Volume$
  1580.             LOCATE 7,12:PRINT Comics.Volume$
  1581.          CASE 0
  1582.             CALL UserEntry( 3, 3, "1234567890", 8, 12, 30, ExitKey$, 1,_
  1583.                            Issue$, Changed, ExitKey)
  1584.             IF VAL(Issue$) < 100 THEN
  1585.                IF VAL(Issue$) = 0 THEN
  1586.                   Issue$ = "  0"
  1587.                ELSE
  1588.                   Issue$ = STR$(VAL(Issue$))
  1589.                END IF
  1590.             END IF
  1591.             RSET Comics.Issue$  = Issue$
  1592.             LOCATE 8,12:PRINT Comics.Issue$
  1593.          CASE 1
  1594.             CALL UserEntry(20, 20, "", 9, 12, 30, ExitKey$,  1, Company$,_
  1595.                            Changed, ExitKey)
  1596.             LSET Comics.Company$ = Company$
  1597.             LOCATE 9,12:PRINT Comics.Company$
  1598.          CASE 2
  1599.            CALL UserEntry(20, 20, "",10, 12, 30, ExitKey$,  1, Editor$,_
  1600.                            Changed, ExitKey)
  1601.             LSET Comics.Editor$ = Editor$
  1602.             LOCATE 10,12:PRINT Comics.Editor$
  1603.          CASE 3
  1604.            CALL UserEntry(20, 20, "",11, 12, 30, ExitKey$,  1, Writer$,_
  1605.                            Changed, ExitKey)
  1606.             LSET Comics.Writer$ = Writer$
  1607.             LOCATE 11,12:PRINT Comics.Writer$
  1608.          CASE 4
  1609.            CALL UserEntry(20, 20, "",12, 12, 30, ExitKey$,  1, Penciler$,_
  1610.                            Changed, ExitKey)
  1611.             LSET Comics.Penciler$ = Penciler$
  1612.             LOCATE 12,12:PRINT Comics.Penciler$
  1613.          CASE 5
  1614.            CALL UserEntry(20, 20, "",13, 12, 30, ExitKey$,  1, Inker$,_
  1615.                            Changed, ExitKey)
  1616.             LSET Comics.Inker$ = Inker$
  1617.             LOCATE 13,12:PRINT Comics.Inker$
  1618.          CASE 6
  1619.            CALL UserEntry( 6, 6, "0123456789.", 14, 12, 30, ExitKey$,  1,_
  1620.                            Price$, Changed, ExitKey)
  1621.             IF Changed THEN
  1622.                RSET Comics.Price$ = FNPriceFormat$(STR$(VAL(Price$)))
  1623.                Price$ = Comics.Price$
  1624.                NumberChanged = -1
  1625.             END IF
  1626.             LOCATE 14,12:PRINT Comics.Price$
  1627.          CASE 7
  1628.            CALL UserEntry( 3,  3, "0123456789",15, 12, 30, ExitKey$,  1,_
  1629.                            Mint$, Changed, ExitKey)
  1630.             IF Changed THEN
  1631.                IF VAL(Mint$)<> 0 THEN RSET Comics.Mint$ = STR$(VAL(Mint$))_
  1632.                   ELSE RSET Comics.Mint$ = " "
  1633.                Mint$ = Comics.Mint$
  1634.                NumberChanged = -1
  1635.             END IF
  1636.             LOCATE 15,12:PRINT Comics.Mint$
  1637.          CASE 8
  1638.            CALL UserEntry( 3,  3, "0123456789",16, 12, 30, ExitKey$,  1,_
  1639.                            Fine$, Changed, ExitKey)
  1640.             IF Changed THEN
  1641.                IF VAL(Fine$)<> 0 THEN RSET Comics.Fine$ = STR$(VAL(Fine$))_
  1642.                   ELSE RSET Comics.Fine$ = " "
  1643.                Fine$ = Comics.Fine$
  1644.                NumberChanged = -1
  1645.             END IF
  1646.             LOCATE 16,12:PRINT Comics.Fine$
  1647.          CASE 10
  1648.            CALL UserEntry( 3,  3, "0123456789", 17,12, 30, ExitKey$,  1,_
  1649.                            Good$, Changed, ExitKey)
  1650.             IF Changed THEN
  1651.                IF VAL(Good$)<> 0 THEN RSET Comics.Good$ = STR$(VAL(Good$))_
  1652.                   ELSE RSET Comics.Good$ = " "
  1653.                Good$ = Comics.Good$
  1654.                NumberChanged = -1
  1655.             END IF
  1656.             LOCATE 17,12:PRINT Comics.Good$
  1657.          CASE 11
  1658.            CALL UserEntry( 7,  7, "0123456789.",15, 41, 30, ExitKey$,  1,_
  1659.                            WorthMint$, Changed, ExitKey)
  1660.             IF Changed THEN
  1661.                RSET Comics.WorthMint$ = FNPriceFormat$(STR$(VAL(WorthMint$)))
  1662.                WorthMint$ = Comics.WorthMint$
  1663.                NumberChanged = -1
  1664.             END IF
  1665.             LOCATE 15,41:PRINT Comics.WorthMint$
  1666.          CASE 12
  1667.            CALL UserEntry( 7,  7, "0123456789.",16, 41, 30, ExitKey$,  1,_
  1668.                            WorthFine$, Changed, ExitKey)
  1669.             IF Changed THEN
  1670.                RSET Comics.WorthFine$ = FNPriceFormat$(STR$(VAL(WorthFine$)))
  1671.                WorthFine$ = Comics.WorthFine$
  1672.                NumberChanged = -1
  1673.             END IF
  1674.             LOCATE 16,41:PRINT Comics.WorthFine$
  1675.          CASE 13
  1676.            CALL UserEntry( 7,  7, "0123456789.",17, 41, 30, ExitKey$,  1,_
  1677.                            WorthGood$, Changed, ExitKey)
  1678.             IF Changed THEN
  1679.                RSET Comics.WorthGood$ = FNPriceFormat$(STR$(VAL(WorthGood$)))
  1680.                WorthGood$ = Comics.WorthGood$
  1681.                NumberChanged = -1
  1682.             END IF
  1683.             LOCATE 17,41:PRINT Comics.WorthGood$
  1684.          CASE 14
  1685.            CALL UserEntry( 2,  2, "0123456789",19, 12, 30, ExitKey$,  1,_
  1686.                            Box$, Changed, ExitKey)
  1687.             IF Changed AND VAL(Box$)<10 THEN
  1688.                RSET Comics.Box$ = STR$(VAL(Box$))
  1689.                Box$ = Comics.Box$
  1690.             ELSE
  1691.                RSET Comics.Box$ = Box$
  1692.             END IF
  1693.             LOCATE 19,12:PRINT Comics.Box$
  1694.          CASE 15
  1695.             CapsOn = %No
  1696.            CALL UserEntry(60, 60, "",20, 12, 30, ExitKey$,  1, Notes$,_
  1697.                            Changed, ExitKey)
  1698.             LSET Comics.Notes$ = Notes$
  1699.             LOCATE 20,12:PRINT Comics.Notes$
  1700.       END SELECT
  1701.  
  1702.       SELECT CASE ExitKey
  1703.          CASE Ent.UpLine :DECR FldNo
  1704.          CASE Ent.Home   :FldNo = 1
  1705.          CASE Ent.End    :FldNo = 15
  1706.          CASE Ent.DnLine :INCR FldNo
  1707.          CASE Ent.CR
  1708.             IF FldNo = 15 THEN EXIT LOOP
  1709.             INCR FldNo
  1710.          CASE 336, Ent.Escape :EXIT LOOP
  1711.       END SELECT
  1712.  
  1713.       IF FldNo < -2 THEN
  1714.          FldNo = 15
  1715.       ELSEIF FldNo > 15 THEN
  1716.          FldNo = 1
  1717.       END IF
  1718.    LOOP
  1719.  
  1720.    IF ExitKey <> Ent.Escape THEN
  1721.       IF NumberChanged THEN
  1722.          Total$                  = STR$(VAL(Mint$)+VAL(Fine$)+VAL(Good$))
  1723.          RSET Comics.Total$      = Total$
  1724.          WorthTotal$             = STR$(VAL(Mint$)*VAL(WorthMint$) +_
  1725.                                    VAL(Fine$)*VAL(WorthFine$) +_
  1726.                                    VAL(Good$)*VAL(WorthGood$))
  1727.          RSET Comics.WorthTotal$ = FNPriceFormat$(WorthTotal$)
  1728.          TempNum& = CLNG(VAL(Price$)*100)
  1729.          IF TempNum& <> 0 THEN
  1730.             RSET Comics.PercentMint$ = FNPercentChange$(TempNum&,WorthMint$)
  1731.             RSET Comics.PercentFine$ = FNPercentChange$(TempNum&,WorthFine$)
  1732.             RSET Comics.PercentGood$ = FNPercentChange$(TempNum&,WorthGood$)
  1733.          END IF
  1734.          TempNum& = CLNG(VAL(Total$) * VAL(Price$) * 100)
  1735.          IF TempNum& <> 0 THEN
  1736.             RSET Comics.PercentTotal$ = FNPercentChange$(TempNum&,WorthTotal$)
  1737.          END IF
  1738.  
  1739.       END IF
  1740.  
  1741.       IF Edit THEN
  1742.          IF OldKey$ <> Comics.Title$+Comics.Volume$+Comics.Issue$ THEN
  1743.             CALL SearchKey(Comics.File, DataRef&,_
  1744.                            Comics.Title$+Comics.Volume$+Comics.Issue$)
  1745.             IF dbStatus<>0 THEN
  1746.                CALL dbDelete(Comics.File, OldKey$)
  1747.                CALL dbInsert(Comics.File, Comics.Title$+Comics.Volume$+Comics.Issue$)
  1748.             ELSE
  1749.               CALL RecordAlreadyExists
  1750.               CALL dbRead(Comics.File, OldKey$)
  1751.             END IF
  1752.          ELSE
  1753.             CALL dbUpdate (Comics.File, Comics.Title$+Comics.Volume$+Comics.Issue$)
  1754.          END IF
  1755.       ELSE
  1756.          CALL dbInsert(Comics.File, Comics.Title$+Comics.Volume$+Comics.Issue$)
  1757.          IF dbStatus<>0 THEN CALL RecordAlreadyExists
  1758.       END IF
  1759.  
  1760.    END IF
  1761. END SUB
  1762.  
  1763.  
  1764. SUB RecordAlreadyExists
  1765.    LOCAL Dummy$
  1766.    CALL DrawBox(22,24,27,51,23)
  1767.    LOCATE 23,29
  1768.    COLOR 14,1
  1769.    PRINT "Record already exists"
  1770.    CALL MinorErrorSound
  1771.    WHILE NOT(INSTAT):WEND
  1772.    Dummy$=INKEY$
  1773.    CALL ClrArea(22,24,26,70)
  1774. END SUB
  1775.  
  1776.  
  1777. DEF FNPercentChange$(Original&,New$)
  1778.    FNPercentChange$ =  STR$( INT( (((CLNG(VAL(New$)*100))-Original&)_
  1779.                                          *100) /Original&))
  1780. END DEF
  1781.  
  1782. SUB DisplayComics (ColorOn)
  1783.    SHARED Comics.Title$, Comics.Volume$, Comics.Issue$,_
  1784.           Comics.Company$, Comics.Editor$, Comics.Writer$, Comics.Penciler$,_
  1785.           Comics.Inker$, Comics.Price$, Comics.Mint$, Comics.Fine$,_
  1786.           Comics.Good$, Comics.Total$, Comics.WorthMint$, Comics.WorthFine$,_
  1787.           Comics.WorthGood$, Comics.WorthTotal$, Comics.PercentMint$,_
  1788.           Comics.PercentFine$, Comics.PercentGood$, Comics.PercentTotal$,_
  1789.           Comics.Box$, Comics.Notes$
  1790.  
  1791.    IF ColorOn THEN COLOR 14,0 ELSE COLOR 0,0
  1792.  
  1793.    LOCATE  6,12 : PRINT Comics.Title$
  1794.    LOCATE  7,12 : PRINT Comics.Volume$
  1795.    LOCATE  8,12 : PRINT Comics.Issue$
  1796.    LOCATE  9,12 : PRINT Comics.Company$
  1797.    LOCATE 10,12 : PRINT Comics.Editor$
  1798.    LOCATE 11,12 : PRINT Comics.Writer$
  1799.    LOCATE 12,12 : PRINT Comics.Penciler$
  1800.    LOCATE 13,12 : PRINT Comics.Inker$
  1801.    LOCATE 14,12 : PRINT Comics.Price$
  1802.    LOCATE 15,12 : PRINT Comics.Mint$
  1803.    LOCATE 16,12 : PRINT Comics.Fine$
  1804.    LOCATE 17,12 : PRINT Comics.Good$
  1805.    LOCATE 18,12 : PRINT Comics.Total$
  1806.    LOCATE 19,12 : PRINT Comics.Box$
  1807.    LOCATE 20,12 : PRINT Comics.Notes$
  1808.    LOCATE 15,41 : PRINT Comics.WorthMint$
  1809.    LOCATE 16,41 : PRINT Comics.WorthFine$
  1810.    LOCATE 17,41 : PRINT Comics.WorthGood$
  1811.    LOCATE 18,41 : PRINT Comics.WorthTotal$
  1812.    LOCATE 15,73 : PRINT Comics.PercentMint$
  1813.    LOCATE 16,73 : PRINT Comics.PercentFine$
  1814.    LOCATE 17,73 : PRINT Comics.PercentGood$
  1815.    LOCATE 18,73 : PRINT Comics.PercentTotal$
  1816. END SUB
  1817.  
  1818. SUB SetDefaults(SoundOn$, CopyFromPath$, CopyToPath$)
  1819.    SHARED CapsOn, Ent.UpLine, Ent.Home, Ent.End, Ent.DnLine, Ent.CR,_
  1820.           Ent.Escape
  1821.    LOCAL  ExitKey$, ExitKey, Changed, FldNo, Entry$, TempSoundOn$,_
  1822.           TempCopyFromPath$, TempCopyToPath$
  1823.  
  1824.    TempSoundOn$      = SoundOn$
  1825.    TempCopyFromPath$ = CopyFromPath$
  1826.    TempCopyToPath$   = CopyToPath$
  1827.    CALL ClrArea(3,23,1,80)
  1828.    CALL ProgramHeader(" Set Defaults ")
  1829.  
  1830.    COLOR 11,0
  1831.    LOCATE  7,30:PRINT "Sound On: "
  1832.    LOCATE  9,24:PRINT "Copy From Path: "
  1833.    LOCATE 11,26:PRINT "Copy To Path: "
  1834.  
  1835.    COLOR 14,0
  1836.    LOCATE 7,40:PRINT SoundOn$
  1837.    LOCATE 9,40:PRINT CopyFromPath$
  1838.    LOCATE 11,40:PRINT CopyToPath$
  1839.  
  1840.    FldNo=1
  1841.    CapsOn=-1
  1842.    ExitKey$ = CHR$(13) +_
  1843.               CHR$(0) + CHR$(71) +_
  1844.               CHR$(0) + CHR$(72) +_
  1845.               CHR$(0) + CHR$(79) +_
  1846.               CHR$(0) + CHR$(80) +_
  1847.               CHR$(0) + CHR$(81) +_
  1848.               CHR$(27)
  1849.  
  1850.  
  1851.    DO
  1852.       SELECT CASE FldNo
  1853.          CASE 1
  1854.             CALL UserEntry(1, 1, "YN", 7, 40, 30, ExitKey$, 0, SoundOn$,_
  1855.                            Changed, ExitKey)
  1856.             LOCATE 7,40:PRINT SoundOn$
  1857.          CASE 2
  1858.             CALL UserEntry(25, 25, "", 9, 40, 30, ExitKey$, 1, CopyFromPath$,_
  1859.                            Changed, ExitKey)
  1860.             CopyFromPath$=FNTrim$(CopyFromPath$)
  1861.             LOCATE 9,40:PRINT CopyFromPath$+SPACE$(25-LEN(CopyFromPath$))
  1862.          CASE 3
  1863.             CALL UserEntry(25, 25, "", 11, 40, 30, ExitKey$, 1, CopyToPath$,_
  1864.                            Changed, ExitKey)
  1865.             CopyToPath$=FNTrim$(CopyToPath$)
  1866.             LOCATE 11,40:PRINT CopyToPath$+SPACE$(25-LEN(CopyToPath$))
  1867.       END SELECT
  1868.  
  1869.  
  1870.       SELECT CASE ExitKey
  1871.          CASE Ent.UpLine :DECR FldNo
  1872.          CASE Ent.Home   :FldNo = 1
  1873.          CASE Ent.End    :FldNo = 3
  1874.          CASE Ent.DnLine :INCR FldNo
  1875.          CASE Ent.CR
  1876.             IF FldNo = 3 THEN EXIT LOOP
  1877.             INCR FldNo
  1878.          CASE 336, Ent.Escape :EXIT LOOP
  1879.       END SELECT
  1880.  
  1881.       IF FldNo < 1 THEN
  1882.          FldNo = 3
  1883.       ELSEIF FldNo > 3 THEN
  1884.          FldNo = 1
  1885.       END IF
  1886.    LOOP
  1887.    IF ExitKey=Ent.Escape THEN
  1888.       SoundOn$      = TempSoundOn$
  1889.       CopyFromPath$ = TempCopyFromPath$
  1890.       CopyToPath$   = TempCopyToPath$
  1891.       EXIT SUB
  1892.    END IF
  1893.    Entry$ = "N"
  1894.    CALL DrawBox(15,17, 25, 53, 23)
  1895.    COLOR 11,1
  1896.    LOCATE 16,27
  1897.    PRINT "Update disk file? [Y/N]"
  1898.    CALL UserEntry(1, 1, "YN", 16, 51, 30, CHR$(13)+CHR$(27)+CHR$(0)+CHR$(81),_
  1899.                   0, Entry$, Changed, ExitKey)
  1900.    IF Entry$="Y" AND ExitKey<>Ent.Escape THEN
  1901.       OPEN "DEFAULTS.DAT" FOR OUTPUT AS #1
  1902.       WRITE #1, SoundOn$, CopyFromPath$, CopyToPath$
  1903.       CLOSE #1
  1904.    END IF
  1905. END SUB
  1906.  
  1907.  
  1908. SUB EntUserHook (CH$)
  1909.    SHARED CapsOn
  1910.    IF CapsOn=%Yes THEN CH$=UCASE$(INKEY$) ELSE CH$=INKEY$
  1911. END SUB
  1912.  
  1913. SUB WarningBeep
  1914.   SHARED SoundOn$
  1915.   IF SoundOn$="Y" THEN CALL MinorErrorSound
  1916. END SUB
  1917.  
  1918.  
  1919. $INCLUDE "DBLOW.BOX"
  1920. $INCLUDE "DBHIGH.BOX"
  1921. $INCLUDE "ENTSUBS.BOX"
  1922. $INCLUDE "SCRNASM.BOX"
  1923. $INCLUDE "SCRNSUBS.BOX"
  1924. $INCLUDE "REGNAMES.INC"
  1925. $INCLUDE "PICKER.BAS"