% adbook.dem

import AddressBook in  "adbookar.tu" 

AddressBook.Load() % Load contents of book if any from file.

var name, address : string
var command : string
var inBook, success : boolean

put "Address Book Program"
put "You must give a command and supply the requested information "
put skip, "Enter(e), Delete(d), Change(c), LookUp(l), Print(p)"
put skip, "Quit(q), Initialize (i), Finalize (f), Load (o), Save (s)"

% Read and handle each command.
loop
  put "Command: " ..
  get command : *

  case command of % Handle each command.

    label "e" : % Enter
      put "   Give name: " ..
      get name : *
      put "   Give address: " ..
      get address : *
      AddressBook. LookUp (name, address, inBook)
      if not inBook then
        AddressBook. Enter (name, address, success)
        if not success then
          put "Sorry, cannot enter item"
        end if
      else
        put "Sorry, name already in book."
      end if

    label "d" : % Delete
      put "   Give name: " ..
      get name : *
      AddressBook. LookUp (name, address, inBook)
      if inBook then
        AddressBook. Delete (name)
        put "Entry deleted"
      else
        put "   Sorry, name not in book."
      end if

    label "c" : % Change
      put "   Give name: " ..
      get name : *
      AddressBook. LookUp (name, address, inBook)
      if inBook then
        put "   Give new address: " ..
        get address : *
        AddressBook. Change (name, address)
      else
        put "   Sorry, name not in book."
      end if

    label "l" : % Look up
      put "   Give name: " ..
      get name : *
      AddressBook. LookUp (name, address, inBook)
      if inBook then
        put "   Address is: ", address
      else
        put "   Sorry, name not in book."
      end if

    label "p" : % Print
      AddressBook.PrintOut()

    label "q" : % Quit
      exit

    label "o" : % Load  from file "adbook.dat"
      AddressBook.Load()

    label "s" : % Save into file "adbook.dat"
      AddressBook.Save()

    label "i" : 
      AddressBook.Initialize()

    label "f" :
      AddressBook.Finalize()
      
    label :
      put "   Sorry, don't understand command: ", command

  end case

end loop

AddressBook.Save() % Save contents of book in a file.

put "Quitting, address book has been saved."