home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
progs
/
adlcheck.icn
next >
Wrap
Text File
|
2000-07-29
|
3KB
|
106 lines
############################################################################
#
# File: adlcheck.icn
#
# Subject: Program to check for bad address list data
#
# Author: Ralph E. Griswold
#
# Date: November 19, 1997
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# This program checks address lists for correctness.
#
# There are five options:
#
# -s Check state (U.S. labels only)
# -z Check ZIP code (U.S. labels only)
# -c Check country name (a very heuristic check)
# -a Check all of the above
# -d Report addresses that exceed "standard dimensions" for labels:
# 40 character line length, 8 lines per entry
#
############################################################################
#
# See also: address.doc, adlcount.icn, adlfiltr.icn, adllist.icn,
# adlsort,icn, labels.icn
#
# Links: adlutils, options
#
############################################################################
link adlutils, options
procedure main(args)
local opts, choice, item, badchar, print, states, i, line, dim, add
states := set(["AK", "AL", "AR", "AS", "AZ", "CA", "CO", "CT", "DC",
"DE", "FL", "FM", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS",
"KY", "LA", "MA", "MD", "ME", "MH", "MI", "MN", "MO", "MP", "MS",
"MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK",
"ON", "OR", "PA", "PR", "PW", "RI", "SC", "SD", "TN", "TX", "UT",
"VA", "VT", "WA", "WI", "WV", "WY"])
print := ""
badchar := ~&ucase -- ' .' # very heuristic country name check
opts := options(args,"acszd")
if \opts["a"] then { # if -a, do all
opts["a"] := &null
every opts[!"csz"] := 1
}
if \opts["d"] then dim := write(1) # dimension check
while add := nextadd() do {
add.text ? {
i := 0
while line := tab(upto('\n') | 0) do {
i +:= 1
if *line > 40 then print ||:= "o"
move(1) | break
}
if i > 8 then print ||:= "o"
}
every \opts[choice := !"csz"] do
case choice of {
"c": { # check country name
get_country(add) ? {
if upto(badchar) then {
print ||:= choice
}
}
}
"s": { # check state
if not member(states,get_state(add)) then {
print ||:= choice
}
}
"z": {
if get_zipcode(add) == "9999999999" then {
print ||:= choice
}
}
}
if *print > 0 then {
every choice := !print do
write("*** ",case choice of {
"c": "bad country name"
"s": "bad state abbreviation"
"z": "bad ZIP code"
"o": \dim & "size exceeds label dimensions"
})
write()
writeadd(add)
print := ""
}
}
end