############################################################################
#
#	File:     adllist.icn
#
#	Subject:  Program to list address list fields
#
#	Author:   Ralph E. Griswold
#
#	Date:     November 19, 1997
#
############################################################################
#
#   This file is in the public domain.
#
############################################################################
#
#    This program lists entries in address lists. The options are:
#
#	-c	by country
#	-n	by name
#	-C	by city (U.S. only)
#	-s	by state (U.S. only)
#	-z	by ZIP code (U.S. only)
#
# 	The default is -n.  If more than one option is specified, the
#	order of dominance is -n -z -s -c -C.
#
############################################################################
#
#  See also: address.doc, adlcheck.icn, adlcount.icn, adlfiltr.icn, 
#     adlsort,icn, labels.icn
#
#  Links: adlutils, options
#
############################################################################

link adlutils, options

procedure main(args)
   local item, item_lists, opts, list_method, get_item, add

   item_lists := table()

   list_method := "n"			# The default is sorting by name.
   get_item := get_lastname

   opts := options(args,"cnszC")

   if \opts["C"] then {			# If more than one given, last applies.
      list_method := "C"
      get_item := get_city
      }
   if \opts["c"] then {			# If more than one given, last applies.
      list_method := "c"
      get_item := get_country
      }
   if \opts["s"] then {
      list_method := "s"
      get_item := get_state
      }
   if \opts["z"] then {
      list_method := "z"
      get_item := get_zipcode
      }
   if \opts["n"] then {
      list_method := "n"
      get_item := get_lastname
      }

   case list_method of {
      "s" | "z" | "C": while add := nextadd() do
         write(get_item(add))
      "c" : while add := nextadd() do
         write(format_country(get_item(add)))
      "n" : while add := nextadd() do
         write(get_namepfx(add)," ",get_item(add))
      }
       
end
