AANTAL=50 : HOOGSTE=0
Dim NAAM$(AANTAL),ADRES$(AANTAL),PC$(AANTAL),WPL$(AANTAL)
Dim TEL$(AANTAL),GEB$(AANTAL),BIJZ$(AANTAL)
Global AANTAL,HOOGSTE
Global NAAM$(),ADRES$(),PC$(),WPL$()
Global TEL$(),GEB$(),BIJZ$()
Screen Open 0,640,256,16,Hires
Set Rainbow 1,1,300,"(1,-1,255)","(10,1,255)","(255,-1,255)"
Rainbow 1,1,42,259
Reserve Zone 10
Data " Invoeren ",20,5,"  Opslaan ",20,10
Data " Inlezen  ",20,15," Bladeren ",20,20
Data "Veranderen",20,25,"  Wissen  ",50,5
Data "Afdrukken ",50,10,"  Zoeken  ",50,15
Data " Sorteren ",50,20," Stoppen  ",50,25
MENUDATA:
Data " Bestand    ","Inlezen","Opslaan","Afdrukken","Stoppen",""
Data " Wijzig     ","Invoeren","Veranderen","Wissen",""
Data " Verwerk    ","Bladeren","Zoeken","Sorteren",""
Restore MENUDATA
For TITEL=1 To 3
   Read TITEL$ : Menu$(TITEL)=TITEL$
   OPTIE=1
   Repeat 
      Read OPTIE$
      If OPTIE$<>"" Then Menu$(TITEL,OPTIE)=OPTIE$ : OPTIE=OPTIE+1
   Until OPTIE$=""
Next TITEL
Do 
   Cls : Curs Off : Menu On : Restore : TELLER=1
   Repeat 
      Read KNOP$,X,Y
      Print At(X,Y);Zone$(Border$(KNOP$,2),TELLER)
      TELLER=TELLER+1
   Until KNOP$=" Stoppen  "
   Repeat : A=Mouse Zone : Until(A<>0 and Mouse Key=1) or(Choice=-1)
   If A=0
      If Choice(1)=2 and Choice(2)=1 : A=1 : End If 
      If Choice(1)=1 and Choice(2)=2 : A=2 : End If 
      If Choice(1)=1 and Choice(2)=1 : A=3 : End If 
      If Choice(1)=3 and Choice(2)=1 : A=4 : End If 
      If Choice(1)=2 and Choice(2)=2 : A=5 : End If 
      If Choice(1)=2 and Choice(2)=3 : A=6 : End If 
      If Choice(1)=1 and Choice(2)=3 : A=7 : End If 
      If Choice(1)=3 and Choice(2)=2 : A=8 : End If 
      If Choice(1)=3 and Choice(2)=3 : A=9 : End If 
      If Choice(1)=1 and Choice(2)=4 : A=10 : End If 
   End If 
   Menu Off 
   Cls : Curs On 
   If A=1 Then INVOEREN
   If A=2 Then OPSLAAN
   If A=3 Then INLEZEN
   If A=4 Then BLADEREN
   If A=5 Then VERANDEREN
   If A=6 Then WISSEN
   If A=7 Then AFDRUKKEN
   If A=8 Then ZOEKEN
   If A=9 Then RANGSCHIKKEN
   If A=10 Then End 
Loop 
Procedure INVOEREN
   If HOOGSTE=AANTAL
      Print "Kaartenbak is vol!"
      Print "Druk op de spatiebalk"
      Repeat : Until Inkey$=" "
      Pop Proc
   End If 
   HOOGSTE=HOOGSTE+1
   Print "Kaartnummer: ";HOOGSTE
   Input "Naam: ";NAAM$(HOOGSTE)
   Input "Adres: ";ADRES$(HOOGSTE)
   Input "Postcode: ";PC$(HOOGSTE)
   Input "Woonplaats: ";WPL$(HOOGSTE)
   Input "Tel.nr: ";TEL$(HOOGSTE)
   Input "Geb. Datum: ";GEB$(HOOGSTE)
   Input "Bijzonderheden: ";BIJZ$(HOOGSTE)
End Proc
Procedure OPSLAAN
   If HOOGSTE=0 Then Pop Proc
   NAAM$=Fsel$("*.db","Bestand.db","**** OPSLAAN ****","Geef Bestandsnaam")
   If NAAM$="" Then Pop Proc
   Open Out 1,NAAM$
   For K=1 To HOOGSTE
      Print #1,NAAM$(K) : Print #1,ADRES$(K)
      Print #1,PC$(K) : Print #1,WPL$(K)
      Print #1,TEL$(K) : Print #1,GEB$(K)
      Print #1,BIJZ$(K)
   Next K
   Close 1
End Proc
Procedure INLEZEN
   NAAM$=Fsel$("*.db","Bestand.db","**** INLEZEN ****","Geef Bestandsnaam")
   If NAAM$="" Then Pop Proc
   Open In 1,NAAM$
   If HOOGSTE>0
      Print "Er zijn al kaarten gevuld!"
      Print "Toevoegen? J/N "
      Repeat : JN$=Lower$(Inkey$) : Until(JN$="j") or(JN$="n")
      If JN$="n" : HOOGSTE=0 : End If 
   End If 
   While Not Eof(1)
      If HOOGSTE>=AANTAL
         Print "De kaartenbak zit vol!"
         Print "Bestand niet volledig ingelezen."
         Print "Druk op de spatiebalk."
         Repeat : Until Inkey$=" "
         Close 1
         Pop Proc
      End If 
      HOOGSTE=HOOGSTE+1
      Input #1,NAAM$(HOOGSTE) : Input #1,ADRES$(HOOGSTE)
      Input #1,PC$(HOOGSTE) : Input #1,WPL$(HOOGSTE)
      Input #1,TEL$(HOOGSTE) : Input #1,GEB$(HOOGSTE)
      Input #1,BIJZ$(HOOGSTE)
   Wend 
   Close 1
End Proc
Procedure BLADEREN
   If HOOGSTE=0 Then Pop Proc
   For K=1 To HOOGSTE
      Print 
      Print "   Kaartnummer: ";K
      Print "          Naam: ";NAAM$(K)
      Print "         Adres: ";ADRES$(K)
      Print "   Pc & Woonpl: ";PC$(K);"  ";WPL$(K)
      Print "      Telefoon: ";TEL$(K)
      Print "    Geb. Datum: ";GEB$(K)
      Print "Bijzonderheden: ";BIJZ$(K)
      Print : Input "Druk op <Return>:";EFFE_WACHTE_$
   Next K
End Proc
Procedure VERANDEREN
   Input "Welk kaartnummer? ";WERK_MET
   If WERK_MET>HOOGSTE Then Pop Proc
   Put Key NAAM$(WERK_MET) : Input "Naam: ";NAAM$(WERK_MET)
   Put Key ADRES$(WERK_MET) : Input "Adres: ";ADRES$(WERK_MET)
   Put Key PC$(WERK_MET) : Input "Postcode: ";PC$(WERK_MET)
   Put Key WPL$(WERK_MET) : Input "Woonplaats: ";WPL$(WERK_MET)
   Put Key TEL$(WERK_MET) : Input "Tel.nr: ";TEL$(WERK_MET)
   Put Key GEB$(WERK_MET) : Input "Geb. Datum: ";GEB$(WERK_MET)
   Put Key BIJZ$(WERK_MET) : Input "Bijzonderheden: ";BIJZ$(WERK_MET)
End Proc
Procedure WISSEN
   If HOOGSTE=0 Then Pop Proc
   Input "Welk kaartnummer wilt u wissen? ";WERK_MET
   If WERK_MET>HOOGSTE Then Pop Proc
   HOOGSTE=HOOGSTE-1
   For K=WERK_MET To HOOGSTE
      NAAM$(K)=NAAM$(K+1)
      ADRES$(K)=ADRES$(K+1)
      PC$(K)=PC$(K+1)
      WPL$(K)=WPL$(K+1)
      TEL$(K)=TEL$(K+1)
      GEB$(K)=GEB$(K+1)
      BIJZ$(K)=BIJZ$(K+1)
   Next K
End Proc
Procedure AFDRUKKEN
   Open Port 1,"PAR:"
   For K=1 To HOOGSTE
      Print #1,NAAM$(K) : Print #1,ADRES$(K)
      Print #1,PC$(K) : Print #1,WPL$(K)
      Print #1,TEL$(K) : Print #1,GEB$(K)
      Print #1,BIJZ$(K)
   Next K
   Close 1
End Proc
Procedure ZOEKEN
   Input "Wie zoekt u? ";ZOEK$
   For K=1 To HOOGSTE
      If Instr(Lower$(NAAM$(K)),Lower$(ZOEK$))
         Print "   Kaartnummer: ";K
         Print "          Naam: ";NAAM$(K)
         Print "         Adres: ";ADRES$(K)
         Print "   Pc & Woonpl: ";PC$(K);"  ";WPL$(K)
         Print "      Telefoon: ";TEL$(K)
         Print "    Geb. Datum: ";GEB$(K)
         Print "Bijzonderheden: ";BIJZ$(K)
         Print : Input "Druk op <Return>:";EFFE_WACHTE_$
      End If 
   Next K
End Proc
Procedure RANGSCHIKKEN
   If HOOGSTE<=1 Then Pop Proc
   Repeat 
      WISSEL$="n"
      For K=1 To HOOGSTE-1
         If Lower$(NAAM$(K))>Lower$(NAAM$(K+1))
            Swap NAAM$(K),NAAM$(K+1)
            Swap ADRES$(K),ADRES$(K+1)
            Swap PC$(K),PC$(K+1)
            Swap WPL$(K),WPL$(K+1)
            Swap TEL$(K),TEL$(K+1)
            Swap GEB$(K),GEB$(K+1)
            Swap BIJZ$(K),BIJZ$(K+1)
            WISSEL$="j"
         End If 
      Next K
   Until WISSEL$="n"
End Proc
