proc soundex
	filen	soundex1.icn
	local	0,001000,name
	local	1,000020,coded_name
	local	2,000020,new_name
	local	3,000000,encode
	local	4,000000,strip
	local	5,000000,pos
	local	6,000000,repl
	con	0,002000,1,1
	con	1,002000,1,2
	con	2,010000,1,052
	con	3,002000,1,4
	con	4,010000,1,060
	declend
	line	48
	colm	11
	mark	L1
	pnull
	var	1
	var	3
	var	4
	var	0
	line	51
	colm	31
	invoke	1
	line	51
	colm	25
	invoke	1
	line	51
	colm	16
	asgn
	unmark
lab L1
	mark	L2
	pnull
	var	2
	pnull
	var	0
	int	0
	line	52
	colm	21
	subsc
	line	52
	colm	14
	asgn
	unmark
lab L2
	mark	L3
	mark0
	pnull
	var	5
	pnull
	int	1
	pnull
	var	1
	line	53
	colm	23
	size
	push1
	line	53
	colm	20
	toby
	line	53
	colm	15
	asgn
	pop
	mark0
	mark	L6
	mark0
	pnull
	pnull
	var	1
	var	5
	line	54
	colm	22
	subsc
	str	2
	line	54
	colm	28
	lexne
	unmark
	pnull
	var	2
	pnull
	var	2
	pnull
	var	1
	var	5
	line	55
	colm	47
	subsc
	line	55
	colm	34
	cat
	line	55
	colm	22
	asgn
	unmark
lab L6
	mark0
	pnull
	pnull
	var	2
	line	56
	colm	12
	size
	int	3
	line	56
	colm	22
	numeq
	unmark
	unmark
	unmark
	pnull
	goto	L5
	unmark
lab L4
	efail
lab L5
	unmark
lab L3
	mark	L7
	mark	L8
	pnull
	var	2
	var	6
	str	4
	pnull
	int	3
	pnull
	var	2
	line	59
	colm	39
	size
	line	59
	colm	37
	minus
	line	59
	colm	29
	invoke	2
	line	59
	colm	21
	cat
	line	59
	colm	5
	pret
lab L8
	pfail
	unmark
lab L7
	pnull
	line	60
	colm	1
	pfail
	end
proc encode
	local	0,001000,name
	local	1,000000,map
	local	2,000000,pos
	con	0,010000,26,141,145,150,151,157,165,167,171,142,146,160,166,143,147,152,153,161,163,170,172,144,164,154,155,156,162
	con	1,010000,26,052,052,052,052,052,052,052,052,061,061,061,061,062,062,062,062,062,062,062,062,063,063,064,065,065,066
	con	2,002000,1,2
	con	3,002000,1,1
	con	4,010000,1,052
	declend
	line	62
	colm	11
	mark	L1
	pnull
	var	0
	var	1
	var	0
	line	64
	colm	23
	keywd	ucase
	line	64
	colm	31
	keywd	lcase
	line	64
	colm	16
	invoke	3
	line	64
	colm	10
	asgn
	unmark
lab L1
	mark	L2
	pnull
	var	0
	var	1
	var	0
	str	0
	str	1
	line	65
	colm	16
	invoke	3
	line	65
	colm	10
	asgn
	unmark
lab L2
	mark	L3
	mark0
	pnull
	var	2
	pnull
	pnull
	var	0
	line	67
	colm	18
	size
	int	2
	pnull
	int	3
	line	67
	colm	32
	neg
	line	67
	colm	24
	toby
	line	67
	colm	15
	asgn
	pop
	mark0
	mark0
	pnull
	pnull
	var	0
	pnull
	var	2
	int	3
	line	68
	colm	21
	minus
	line	68
	colm	16
	subsc
	pnull
	var	0
	var	2
	line	68
	colm	33
	subsc
	line	68
	colm	26
	lexeq
	unmark
	pnull
	pnull
	var	0
	var	2
	line	69
	colm	17
	subsc
	str	4
	line	69
	colm	23
	asgn
	unmark
lab L4
	efail
lab L5
	unmark
lab L3
	mark	L6
	mark	L7
	var	0
	line	70
	colm	5
	pret
lab L7
	pfail
	unmark
lab L6
	pnull
	line	71
	colm	1
	pfail
	end
proc strip
	local	0,001000,name
	local	1,000020,result
	local	2,000020,ch
	local	3,000040,alphabet
	local	4,000000,string
	local	5,000000,find
	con	0,010000,0
	declend
	line	73
	colm	11
	init	L1
	mark	L1
	pnull
	var	3
	var	4
	line	78
	colm	28
	keywd	letters
	line	78
	colm	27
	invoke	1
	line	78
	colm	18
	asgn
	unmark
lab L1
	mark	L2
	pnull
	var	1
	str	0
	line	80
	colm	12
	asgn
	unmark
lab L2
	mark	L3
	mark0
	pnull
	var	2
	pnull
	var	0
	line	81
	colm	17
	bang
	line	81
	colm	14
	asgn
	pop
	mark0
	mark0
	var	5
	var	2
	var	3
	line	82
	colm	16
	invoke	2
	unmark
	pnull
	var	1
	dup
	var	2
	line	83
	colm	20
	cat
	asgn
	unmark
lab L4
	efail
lab L5
	unmark
lab L3
	mark	L6
	mark	L7
	var	1
	line	84
	colm	5
	pret
lab L7
	pfail
	unmark
lab L6
	pnull
	line	85
	colm	1
	pfail
	end
