[ver]
	4
[sty]
	
[files]
[charset]
	82
	ANSI (Windows, IBM CP 1252)
[revisions]
	0
[sequence]
	29
	0
	0
	0
	20
	8
	Numbered list
	0
	Bullet
	0
	Indnt bullet
	0
	Indnt caution
	0
	Indnt tip
	0
	Indnt note
	0
	Caution
	0
	Tip
	0
	Note
	0
	Browse
	0
	Keyword
	0
	Context
	0
	Title
	0
	Macros
	0
	Alink
	0
	Butnbar
	0
	Window
	0
	Win95 macros
	0
	Win31 macros
	0
	Build tag
[prn]
	Apple LaserWriter II NTX
[port]
	LPT3:
[lang]
	1
[fldnames]
	Field1
	Field2
	Field3
	Field4
	Field5
	Field6
	Field7
	Field8
[desc]
	
	
	
	
	
	802481387
	6
	801523460
	10
	137
	0
	0
	0
	0
	
	
	
	
	
	
	1
[fopts]
	0
	1
	0
	0
	
	
[lnopts]
	2
	Body Text
	1
[docopts]
	5
	2
[GramStyle]
	
[ParaNum]
	1
[tag]
	Body Text
	2
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		100
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Body Text
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Ahead
	3
	[fnt]
		Arial
		220
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		240
		4
		79
		40
		3
		100
	[brk]
		112
	[line]
		16
		2160
		3
		0
		1
		1
		1
		65
		10
		1
	[spec]
		0
		1
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		wr
	Body Text
	0
	0
[tag]
	Bhead title
	4
	[fnt]
		Arial
		200
		0
		16385
	[algn]
		1
		1
		0
		0
		0
	[spc]
		40
		220
		4
		79
		40
		3
		100
	[brk]
		80
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		2
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Body Text
	0
	0
[tag]
	Chead title
	5
	[fnt]
		Arial
		180
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		79
		40
		3
		100
	[brk]
		112
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		wr
	Body Text
	0
	0
[tag]
	Bhead
	6
	[fnt]
		Arial
		200
		0
		16385
	[algn]
		1
		1
		0
		0
		0
	[spc]
		40
		220
		4
		180
		0
		3
		100
	[brk]
		68
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		2
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Body Text
	0
	0
[tag]
	Chead
	7
	[fnt]
		Arial
		180
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		100
		0
		3
		100
	[brk]
		68
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		3
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Body Text
	0
	0
[tag]
	Numbered list
	8
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		300
		300
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		5
		<*:>.
		0
		3
		1
		0
		18
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Numbered list
	0
	0
[tag]
	1st lev para
	9
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		300
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		68
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	1st lev para
	0
	0
[tag]
	Bullet
	11
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		300
		300
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		<*1> 
		0
		3
		1
		0
		16
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Bullet
	2
	1
	160
	1
	400
	0
[tag]
	Indnt bullet
	12
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		600
		600
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		100
	[line]
		16
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		<*1> 
		0
		3
		1
		0
		16
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Indnt bullet
	0
	0
[tag]
	2nd lev para
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		600
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	2nd lev para
	0
	0
[tag]
	See also prnt
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	See also prnt
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Book art
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Book art
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Callout text
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Callout text
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Figure title
	0
	[fnt]
		Arial
		180
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		40
		60
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Figure title
	0
	0
[tag]
	Chapter title
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		3
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Chapter title
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	1st pg foot
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	1st pg foot
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Right pg foot
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Right pg foot
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Left pg foot
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Left pg foot
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Table title
	0
	[fnt]
		Arial
		180
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		60
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		7
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Table title
	0
	0
[tag]
	Table col hd
	0
	[fnt]
		Arial
		180
		0
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		100
		0
		3
		100
	[brk]
		4
	[line]
		10
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		6
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		256
		1
		0
		
		
		
	Table col hd
	0
	0
[tag]
	Table Text
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		1
		0
		0
		0
	[spc]
		40
		200
		4
		79
		0
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		256
		1
		0
		
		
		
	Table Text
	0
	0
[tag]
	See also hlp
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		180
		0
		3
		100
	[brk]
		48
	[line]
		9
		0
		3
		0
		1
		1
		1
		70
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	See also hlp
	0
	120
[tag]
	See also btn
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		240
	[spc]
		24
		200
		4
		0
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	See also btn
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Crossref
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		513
		3
		0
		300
		600
	[spc]
		24
		200
		4
		19
		0
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Crossref
	0
	0
[tag]
	Indnt caution
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		300
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Caution 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Indnt caution
	0
	0
[tag]
	Indnt tip
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		300
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Tip 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Indnt tip
	0
	0
[tag]
	Indnt note
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		300
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Note 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Indnt note
	0
	0
[tag]
	Caution
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Caution 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Caution
	0
	0
[tag]
	Tip
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Tip 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Tip
	0
	0
[tag]
	Note
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		Note 
		0
		1
		1
		1
		0
		0
		0
	[nfmt]
		256
		1
		2
		.
		,
		$
	Note
	0
	0
[tag]
	Mono
	0
	[fnt]
		Courier New
		180
		0
		32768
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		32
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Mono
	15
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	1
	2880
	1
	3360
	1
	3840
	1
	4320
	1
	4800
	1
	5280
	1
	5760
	1
	6240
	1
	6720
	1
	7200
	0
[tag]
	Indnt mono
	0
	[fnt]
		Courier New
		180
		0
		32768
	[algn]
		1
		3
		300
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		32
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Indnt mono
	15
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	1
	2880
	1
	3360
	1
	3840
	1
	4320
	1
	4800
	1
	5280
	1
	5760
	1
	6240
	1
	6720
	1
	7200
	0
[tag]
	Dhead
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		19
		60
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		4
		
		0
		1
		1
		0
		2
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		$
	Dhead
	0
	0
[tag]
	Parameter
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		0
		3
		100
	[brk]
		100
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	1st lev para
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	Formula
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		19
		60
		3
		100
	[brk]
		36
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Formula
	0
	0
[tag]
	Browse
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		+
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Browse
	0
	0
[tag]
	Keyword
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		K
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Keyword
	0
	0
[tag]
	Context
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		#
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Context
	0
	0
[tag]
	Title
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		$
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Title
	0
	0
[tag]
	Macros
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		!
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Macros
	0
	0
[tag]
	Footnote
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		244
		0
	[spc]
		40
		2400
		3
		0
		0
		1
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		
		0
		1
		1
		256
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Footnote
	0
	0
[tag]
	Alink
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		A
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Alink
	0
	0
[tag]
	Butnbar
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		0
		0
	[spc]
		40
		200
		4
		0
		0
		3
		100
	[brk]
		48
	[line]
		16
		0
		3
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		\li-140 
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		272
		1
		2
		.
		,
		wr
	Butnbar
	0
	0
[tag]
	Window
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		>
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Window
	0
	0
[tag]
	Win95 macros
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		W
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Win95 macros
	0
	0
[tag]
	Win31 macros
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		X
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Win31 macros
	0
	0
[tag]
	Build tag
	0
	[fnt]
		Arial
		180
		0
		16384
	[algn]
		1
		3
		0
		139
		139
	[spc]
		24
		200
		4
		0
		0
		3
		100
	[brk]
		4
	[line]
		16
		0
		3
		0
		1
		2
		2
		20
		20
		1
	[spec]
		0
		0
		*
		0
		3
		1
		256
		1
		0
		0
	[nfmt]
		280
		1
		3
		.
		,
		$
	Build tag
	0
	0
[tag]
	_COND_IF
	0
	[fnt]
		Arial
		240
		255
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		100
		0
		3
		100
	[brk]
		100
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		IF
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Body Text
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	_COND_ELSE
	0
	[fnt]
		Arial
		240
		255
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		100
		0
		3
		100
	[brk]
		100
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		ELSE
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Body Text
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[tag]
	_COND_ENDIF
	0
	[fnt]
		Arial
		240
		255
		16385
	[algn]
		1
		3
		0
		0
		0
	[spc]
		24
		200
		4
		100
		0
		3
		100
	[brk]
		100
	[line]
		8
		0
		1
		0
		1
		1
		1
		10
		10
		1
	[spec]
		0
		0
		ENDIF
		0
		1
		1
		0
		0
		0
		0
	[nfmt]
		280
		1
		2
		.
		,
		$
	Body Text
	5
	1
	480
	1
	960
	1
	1440
	1
	1920
	1
	2400
	0
[frm]
	30
	1572932
	720
	4333
	7503
	5816
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	20
	0
	0
	65280 7167
	[frmlay]
		2874
		6783
		3
		0
		0
		3
		4333
		0
		0
		2
		0
		92
		112
		26231
		1
		1440
		10800
		0
	[tbl]
		 5 3 200 86 3020 86 1 43 43
		[h]
			 0 210 86 2 0 3 0
			 1 200 86 6 0 3 0
			 2 200 86 6 0 3 0
			 3 200 86 6 0 3 0
			 4 200 86 6 0 3 0
		[e]
		[w]
			 0 2220 0 6 0
			 1 2180 0 6 0
			 2 2340 0 6 0
		[e]
		[data]
			 0 0 0 0 0 0 512 1 0 0 0 0
@Table col hd@Item

>
			 0 1 0 0 0 0 512 1 0 0 0 0
@Table col hd@Size

>
			 0 2 0 0 0 0 512 1 0 0 0 0
@Table col hd@Color

>
			 1 0 0 0 0 0 512 1 0 0 0 0
Shirt

>
			 1 1 0 0 0 0 512 1 0 0 0 0
Small

>
			 1 2 0 0 0 0 512 1 0 0 0 0
Red

>
			 2 0 0 0 0 0 0 1 0 0 0 0
Skirt

>
			 2 1 0 0 0 0 0 1 0 0 0 0
Small

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Green

>
			 3 0 0 0 0 0 0 1 0 0 0 0
Sweater

>
			 3 1 0 0 0 0 0 1 0 0 0 0
Medium

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Red

>
			 4 0 0 0 0 0 0 1 0 0 0 0
Trousers

>
			 4 1 0 0 0 0 0 1 0 0 0 0
Medium

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Yellow

>
		[e]
	[tble]
[frm]
	43
	1572932
	960
	11060
	7743
	11685
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	21
	1
	65280
	5119 2
	[frmlay]
		2874
		6783
		3
		0
		0
		3
		11060
		0
		0
		2
		0
		92
		112
		26231
		1
		1440
		10800
		0
	[tbl]
		 5 3 200 86 3020 86 1 43 43
		[h]
			 0 210 86 2 0 3 0
			 1 200 86 6 0 3 0
			 2 200 86 6 0 3 0
			 3 200 86 6 0 3 0
			 4 200 86 6 0 3 0
		[e]
		[w]
			 0 2220 0 6 0
			 1 2180 0 6 0
			 2 2340 0 6 0
		[e]
		[data]
			 0 0 0 0 0 0 512 1 0 0 0 0
@Table col hd@Item

>
			 0 1 0 0 0 0 512 1 0 0 0 0
@Table col hd@Size

>
			 0 2 0 0 0 0 512 1 0 0 0 0
@Table col hd@Color

>
			 1 0 0 0 0 0 512 1 0 0 0 0
Shirt

>
			 1 1 0 0 0 0 512 1 0 0 0 0
Small

>
			 1 2 0 0 0 0 512 1 0 0 0 0
Red

>
			 2 0 0 0 0 0 0 1 0 0 0 0
Skirt

>
			 2 1 0 0 0 0 0 1 0 0 0 0
Small

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Green

>
			 3 0 0 0 0 0 0 1 0 0 0 0
Sweater

>
			 3 1 0 0 0 0 0 1 0 0 0 0
Medium

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Red

>
			 4 0 0 0 0 0 0 1 0 0 0 0
Trousers

>
			 4 1 0 0 0 0 0 1 0 0 0 0
Medium

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Yellow

>
		[e]
	[tble]
[frm]
	1
	1573060
	720
	3843
	9206
	4458
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	19
	2
	2561
	2560 256
	[frmlay]
		7529
		8486
		1
		0
		0
		1
		3843
		0
		0
		2
		0
		1
		1
		0
		1
		1044
		5076
		0
	[tbl]
		 2 3 200 86 1440 0 1 43 43
		[h]
			 0 200 86 2 0 2 0
			 1 200 86 2 0 2 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 3400 0 2 0
			 2 3400 0 2 0
		[e]
		[data]
			 0 1 8 0 0 0 0 1 0 0 0 0
<+@>114

>
			 0 2 0 0 0 0 0 1 0 0 0 0
You're running Notes Release 3

>
			 1 1 8 0 0 0 0 1 0 0 0 0
<+@>116

>
			 1 2 0 0 0 0 0 1 0 0 0 0
You're running Notes Release 3.0c

>
		[e]
	[tble]
[frm]
	1
	1573060
	720
	2376
	9206
	3277
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	18
	3
	0
	257 0
	[frmlay]
		7349
		8486
		1
		0
		0
		1
		2376
		0
		0
		2
		0
		1
		1
		0
		1
		864
		4896
		0
	[tbl]
		 3 3 200 86 1440 0 1 43 43
		[h]
			 0 200 86 2 0 2 0
			 1 200 86 2 0 2 0
			 2 200 86 2 0 2 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 3400 0 2 0
			 2 3400 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 0 1 0 0 0 0
- 1

>
			 0 2 0 0 0 0 0 1 0 0 0 0
The <+">signedNumber <-">is negative

>
			 1 1 8 0 0 0 0 1 0 0 0 0
<+@>  0 

>
			 1 2 0 0 0 0 0 1 0 0 0 0
The <+">signedNumber <-">is zero

>
			 2 1 8 0 0 0 0 1 0 0 0 0
<+@>  1

>
			 2 2 0 0 0 0 0 1 0 0 0 0
The <+">signedNumber <-">is positive

>
		[e]
	[tble]
[frm]
	1
	1572932
	720
	960
	9183
	4921
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	17
	4
	0
	0 0
	[frmlay]
		5264
		8463
		3
		0
		0
		3
		960
		0
		0
		2
		0
		109
		98
		29285
		1
		1440
		10800
		0
	[tbl]
		 16 3 200 86 4574 86 1 43 43
		[h]
			 0 279 86 2 0 2 0
			 1 200 86 6 0 2 0
			 2 200 86 6 0 2 0
			 3 200 86 6 0 2 0
			 4 200 86 6 0 2 0
			 5 200 86 6 0 2 0
			 6 200 86 6 0 2 0
			 7 200 86 6 0 2 0
			 8 200 86 6 0 2 0
			 9 200 86 6 0 2 0
			 10 200 86 6 0 2 0
			 11 200 86 6 0 2 0
			 12 200 86 6 0 2 0
			 13 200 86 6 0 2 0
			 14 400 86 6 0 1 0
			 15 200 86 6 0 2 0
		[e]
		[w]
			 0 1680 0 6 0
			 1 1300 0 6 0
			 2 5440 0 6 0
		[e]
		[data]
			 0 1 0 0 0 0 512 1 0 0 0 0
@Column Head@Symbol

>
			 0 2 0 0 0 0 512 1 0 0 0 0
@Column Head@Meaning

>
			 1 1 0 0 0 0 256 1 0 0 0 0
D0

>
			 1 2 0 0 0 0 256 1 0 0 0 0
Year, month, and day

>
			 2 1 0 0 0 0 0 1 0 0 0 0
D1

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Month and day, year if it is not the current year

>
			 3 1 0 0 0 0 0 1 0 0 0 0
D2

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Month and day

>
			 4 1 0 0 0 0 0 1 0 0 0 0
D3

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Year and month

>
			 5 1 0 0 0 0 256 1 0 0 0 0
T0

>
			 5 2 0 0 0 0 256 1 0 0 0 0
Hour, minute, and second

>
			 6 1 0 0 0 0 0 1 0 0 0 0
T1

>
			 6 2 0 0 0 0 0 1 0 0 0 0
Hour and minute

>
			 7 1 0 0 0 0 256 1 0 0 0 0
Z0

>
			 7 2 0 0 0 0 256 1 0 0 0 0
Always convert time to this zone

>
			 8 1 0 0 0 0 0 1 0 0 0 0
Z1

>
			 8 2 0 0 0 0 0 1 0 0 0 0
Display zone only when it is not this zone

>
			 9 1 0 0 0 0 0 1 0 0 0 0
Z2

>
			 9 2 0 0 0 0 0 1 0 0 0 0
Display zone always

>
			 10 1 0 0 0 0 256 1 0 0 0 0
S0

>
			 10 2 0 0 0 0 256 1 0 0 0 0
Date only

>
			 11 1 0 0 0 0 0 1 0 0 0 0
S1

>
			 11 2 0 0 0 0 0 1 0 0 0 0
Time only

>
			 12 1 0 0 0 0 0 1 0 0 0 0
S2

>
			 12 2 0 0 0 0 0 1 0 0 0 0
Date and time

>
			 13 1 0 0 0 0 0 1 0 0 0 0
S3

>
			 13 2 0 0 0 0 0 1 0 0 0 0
Date, time, or time Today, time Yesterday

>
			 14 1 0 0 0 0 0 1 0 0 0 0
Sx 

>
			 14 2 0 0 0 0 0 1 0 0 0 0
Use when you cannot predict the exact format of the value being passed, but you know that it will be either a time, a date, or both.

>
			 15 1 0 0 0 0 256 1 0 0 0 0

>
			 15 2 0 0 0 0 256 1 0 0 0 0

>
		[e]
	[tble]
[frm]
	1
	1572932
	720
	7176
	9183
	10158
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	16
	5
	44
	36 0
	[frmlay]
		3830
		8463
		3
		0
		0
		3
		7176
		0
		0
		2
		0
		3
		4
		564
		1
		1440
		10800
		0
	[tbl]
		 10 3 200 86 4574 86 1 43 43
		[h]
			 0 279 86 2 0 2 0
			 1 200 86 6 0 2 0
			 2 200 86 6 0 2 0
			 3 200 86 6 0 2 0
			 4 200 86 6 0 2 0
			 5 200 86 6 0 2 0
			 6 200 86 6 0 2 0
			 7 200 86 6 0 2 0
			 8 200 86 6 0 2 0
			 9 200 86 6 0 2 0
		[e]
		[w]
			 0 1680 0 6 0
			 1 1300 0 6 0
			 2 5440 0 6 0
		[e]
		[data]
			 0 1 0 0 0 0 512 1 0 0 0 0
@Column Head@Symbol

>
			 0 2 0 0 0 0 512 1 0 0 0 0
@Column Head@Meaning

>
			 1 1 0 0 0 0 256 1 0 0 0 0
G

>
			 1 2 0 0 0 0 256 1 0 0 0 0
General format (significant digits only)

>
			 2 1 0 0 0 0 0 1 0 0 0 0
F

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Fixed format (standard number of decimal places)

>
			 3 1 0 0 0 0 0 1 0 0 0 0
S

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Scientific format (E notation)

>
			 4 1 0 0 0 0 0 1 0 0 0 0
C

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Currency format (two decimal places)

>
			 5 1 0 0 0 0 0 1 0 0 0 0
</R>

>
			 5 2 0 0 0 0 0 1 0 0 0 0
Punctuated at thousands (using U.S. format)

>
			 6 1 0 0 0 0 0 1 0 0 0 0
%

>
			 6 2 0 0 0 0 0 1 0 0 0 0
Percentage format

>
			 7 1 0 0 0 0 0 1 0 0 0 0
(

>
			 7 2 0 0 0 0 0 1 0 0 0 0
Parentheses around negative numbers

>
			 8 1 0 0 0 0 0 1 0 0 0 0
<+">number

>
			 8 2 0 0 0 0 0 1 0 0 0 0
Number of digits of precision

>
			 9 1 0 0 0 0 256 1 0 0 0 0

>
			 9 2 0 0 0 0 256 1 0 0 0 0

>
		[e]
	[tble]
[frm]
	1
	1573060
	960
	960
	9446
	4306
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	15
	6
	0
	22 2048
	[frmlay]
		10934
		8486
		1
		0
		0
		1
		960
		0
		0
		2
		0
		1
		1
		0
		1
		504
		5976
		0
	[tbl]
		 9 5 0 86 1440 0 1 43 43
		[h]
			 0 200 86 18 0 4 0
			 1 479 86 2 0 1 0
			 2 479 86 2 0 1 0
			 3 758 86 2 0 1 0
			 4 758 86 2 0 1 0
			 5 800 86 2 0 1 0
			 6 958 86 2 0 1 0
			 7 800 86 2 0 1 0
			 8 958 86 2 0 1 0
		[e]
		[w]
			 0 1367 0 2 0
			 1 1731 0 2 0
			 2 1928 0 2 0
			 3 2323 0 2 0
			 4 1829 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 4352 1 0 0 0 0
<+">style<-">

>
			 0 2 0 0 0 0 4352 1 0 0 0 0
Purpose

>
			 0 3 0 0 0 0 4352 1 0 0 0 0
Contains

>
			 0 4 0 0 0 0 4352 1 0 0 0 0
Return Value

>
			 1 1 0 0 0 0 0 1 0 0 0 0
Ok

>
			 1 2 0 0 0 0 0 1 0 0 0 0
Display an informational message

>
			 1 3 0 0 0 0 0 1 0 0 0 0
Title and prompt 

Ok button

>
			 1 4 0 0 0 0 0 1 0 0 0 0
 1 (TRUE).

>
			 2 1 0 0 0 0 0 1 0 0 0 0
YesNo

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Allows user to make a Yes/No decision

>
			 2 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

Yes and No buttons

>
			 2 4 0 0 0 0 0 1 0 0 0 0
1 (TRUE, Yes) or 0 (FALSE, No).

>
			 3 1 0 0 0 0 0 1 0 0 0 0
OkCancelEdit

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Allows user to type in text input

>
			 3 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

Text box for input

Ok and Cancel buttons

>
			 3 4 0 0 0 0 0 1 0 0 0 0
Text. Value that user entered.

>
			 4 1 0 0 0 0 0 1 0 0 0 0
OkCancelList

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Allows user to select one value from a list of choices

>
			 4 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

List of choices

Ok and Cancel buttons

>
			 4 4 0 0 0 0 0 1 0 0 0 0
Text. Value that user selected.

>
			 5 1 0 0 0 0 0 1 0 0 0 0
OkCancelCombo

>
			 5 2 0 0 0 0 0 1 0 0 0 0
Allows user to select one value from a drop-down list of choices

>
			 5 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

Drop-down list of choices

Ok and Cancel buttons

>
			 5 4 0 0 0 0 0 1 0 0 0 0
Text. Value that user selected.

>
			 6 1 0 0 0 0 0 1 0 0 0 0
OkCancelEditCombo

>
			 6 2 0 0 0 0 0 1 0 0 0 0
Allows user to select one value from a list of choices, or type in a different value

>
			 6 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

Drop-down list of choices with text box

Ok and Cancel buttons

>
			 6 4 0 0 0 0 0 1 0 0 0 0
Text. Value that user selected or entered.

>
			 7 1 0 0 0 0 0 1 0 0 0 0
OkCancelListMulti

>
			 7 2 0 0 0 0 0 1 0 0 0 0
Allows user to select multiple values from a list of choices

>
			 7 3 0 0 0 0 0 1 0 0 0 0
Title and prompt

List of choices

Ok and Cancel buttons

>
			 7 4 0 0 0 0 0 1 0 0 0 0
Text list.  All values that user selected, concatenated with <+!>:<-!> (colon).

>
			 8 1 0 0 0 0 4096 1 0 0 0 0
Password

>
			 8 2 0 0 0 0 4096 1 0 0 0 0
Allows user to enter password without displaying it on the screen

>
			 8 3 0 0 0 0 4096 1 0 0 0 0
Title and prompt

Text box that accepts and hides user input

Ok and Cancel buttons

>
			 8 4 0 0 0 0 4096 1 0 0 0 0
Text. Password that user entered.

>
		[e]
	[tble]
[frm]
	1
	1573060
	720
	4494
	9206
	6177
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	14
	7
	29729
	50336 3166
	[frmlay]
		5096
		8486
		1
		0
		0
		1
		4494
		0
		0
		2
		0
		1
		1
		0
		1
		504
		7416
		0
	[tbl]
		 5 5 0 86 1440 0 1 43 43
		[h]
			 0 210 86 18 0 4 0
			 1 200 86 2 0 4 0
			 2 400 86 2 0 1 0
			 3 200 86 2 0 2 0
			 4 200 86 2 0 4 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 1700 0 2 0
			 2 1700 0 2 0
			 3 1700 0 2 0
			 4 1700 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 4352 1 0 0 0 0
@Table col hd@sourcelist

>
			 0 2 0 0 0 0 4352 1 0 0 0 0
@Table col hd@fromlist

>
			 0 3 0 0 0 0 4352 1 0 0 0 0
@Table col hd@tolist

>
			 0 4 0 0 0 0 4352 1 0 0 0 0
@Table col hd@result

>
			 1 1 0 0 0 0 0 1 0 0 0 0
Red

>
			 1 2 0 0 0 0 0 1 0 0 0 0
<+">Orange<-">

>
			 1 3 0 0 0 0 0 1 0 0 0 0
<+">Black<-">

>
			 1 4 0 0 0 0 0 1 0 0 0 0
Red

>
			 2 1 0 0 0 0 0 1 0 0 0 0
<+">Orange<-">

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Blue

>
			 2 3 0 0 0 0 0 1 0 0 0 0
Brown

>
			 2 4 0 0 0 0 0 1 0 0 0 0
Black (replaces "Orange")

>
			 3 1 0 0 0 0 0 1 0 0 0 0
Yellow

>
			 3 4 0 0 0 0 0 1 0 0 0 0
Yellow

>
			 4 1 0 0 0 0 4096 1 0 0 0 0
Green

>
			 4 2 0 0 0 0 4096 0 0 0 0 0
			 4 3 0 0 0 0 4096 0 0 0 0 0
			 4 4 0 0 0 0 4096 1 0 0 0 0
Green

>
		[e]
	[tble]
[frm]
	1
	1572932
	960
	5258
	9437
	7589
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	13
	8
	0
	0 0
	[frmlay]
		3591
		8477
		3
		0
		0
		3
		5258
		0
		0
		2
		0
		9
		9
		3376
		1
		1440
		10800
		0
	[tbl]
		 8 3 0 86 4574 86 1 43 43
		[h]
			 0 200 86 6 0 3 0
			 1 200 86 6 0 2 0
			 2 200 86 6 0 2 0
			 3 200 86 6 0 2 0
			 4 200 86 6 0 2 0
			 5 200 86 6 0 2 0
			 6 200 86 6 0 2 0
			 7 200 86 6 0 2 0
		[e]
		[w]
			 0 1680 0 6 0
			 1 1434 0 6 0
			 2 5320 0 6 0
		[e]
		[data]
			 0 0 8 0 0 0 0 1 0 0 0 0
<+@>

>
			 0 1 8 0 0 0 512 1 0 0 0 0
<+@><:I0,0,0,0>Pattern

>
			 0 2 8 0 0 0 512 1 0 0 0 0
<+@>Matches

>
			 1 1 0 0 0 0 512 1 0 0 0 0
ABC

>
			 1 2 0 0 0 0 512 1 0 0 0 0
</S>ABC</T>

>
			 2 1 0 0 0 0 0 1 0 0 0 0
A?C

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Any three</m>character string that starts with </S>A</T> and ends with 
</S>C</T>

>
			 3 1 0 0 0 0 0 1 0 0 0 0
???

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Any three</m>character string

>
			 4 1 0 0 0 0 0 1 0 0 0 0
\*\\

>
			 4 2 0 0 0 0 0 1 0 0 0 0
</S>*\</T>

>
			 5 1 0 0 0 0 0 1 0 0 0 0
+?

>
			 5 2 0 0 0 0 0 1 0 0 0 0
Any string, including the null string

>
			 6 1 0 0 0 0 0 1 0 0 0 0
+?{A</m>Z}

>
			 6 2 0 0 0 0 0 1 0 0 0 0
Any string that ends in a letter

>
			 7 1 0 0 0 0 4096 1 0 0 0 0
+{!A</m>Z}

>
			 7 2 0 0 0 0 4096 1 0 0 0 0
Any string that does not contain a letter

>
		[e]
	[tble]
[frm]
	1
	1572932
	960
	960
	9423
	4142
	0
	3
	1
	1 0 0 0 0 0 0
	0
	16777215
	12
	9
	0
	0 0
	[frmlay]
		4069
		8463
		3
		0
		0
		3
		960
		0
		0
		2
		0
		13
		10
		2313
		1
		1440
		10800
		0
	[tbl]
		 10 3 0 86 4574 86 1 43 43
		[h]
			 0 279 86 2 0 2 0
			 1 400 86 6 0 1 0
			 2 200 86 6 0 2 0
			 3 200 86 6 0 2 0
			 4 200 86 6 0 2 0
			 5 200 86 6 0 2 0
			 6 200 86 6 0 2 0
			 7 200 86 6 0 2 0
			 8 200 86 6 0 2 0
			 9 200 86 6 0 2 0
		[e]
		[w]
			 0 1680 0 6 0
			 1 1420 0 6 0
			 2 5320 0 6 0
		[e]
		[data]
			 0 1 0 0 0 0 512 1 0 0 0 0
@Column Head@Symbol

>
			 0 2 0 0 0 0 512 1 0 0 0 0
@Column Head@Use

>
			 1 1 0 0 0 0 256 1 0 0 0 0
C

>
			 1 2 0 0 0 0 256 1 0 0 0 0
Where C is any character. Matches any single, non</m>special character C

>
			 2 1 0 0 0 0 0 1 0 0 0 0
?

>
			 2 2 0 0 0 0 0 1 0 0 0 0
Matches any single character

>
			 3 1 0 0 0 0 0 1 0 0 0 0
*

>
			 3 2 0 0 0 0 0 1 0 0 0 0
Matches any string (any number of ?)

>
			 4 1 0 0 0 0 0 1 0 0 0 0
{ABC}

>
			 4 2 0 0 0 0 0 1 0 0 0 0
Matches any character in set ABC

>
			 5 1 0 0 0 0 0 1 0 0 0 0
{A</m>FL</m>R}

>
			 5 2 0 0 0 0 0 1 0 0 0 0
Matches any character in the sets A...F and L...R

>
			 6 1 0 0 0 0 0 1 0 0 0 0
+C

>
			 6 2 0 0 0 0 0 1 0 0 0 0
Matches any number of occurrences of C

>
			 7 1 0 0 0 0 0 1 0 0 0 0
!

>
			 7 2 0 0 0 0 0 1 0 0 0 0
Complements logical meaning of the pattern (logical NOT)

>
			 8 1 0 0 0 0 0 1 0 0 0 0
|

>
			 8 2 0 0 0 0 0 1 0 0 0 0
Performs logical OR of two patterns

>
			 9 1 0 0 0 0 4096 1 0 0 0 0
&

>
			 9 2 0 0 0 0 4096 1 0 0 0 0
Performs logical AND of two patterns

>
		[e]
	[tble]
[frm]
	1
	1573060
	960
	3212
	9446
	4227
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	11
	10
	8192
	284 61440
	[frmlay]
		7349
		8486
		1
		0
		0
		1
		3212
		0
		0
		2
		0
		1
		1
		0
		1
		864
		4896
		0
	[tbl]
		 2 3 0 86 1440 0 1 43 43
		[h]
			 0 400 86 2 0 1 0
			 1 400 86 2 0 1 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 3400 0 2 0
			 2 3400 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 0 1 0 0 0 0
TRUE

>
			 0 2 0 0 0 0 0 1 0 0 0 0
The <+">pattern<-"> is found somewhere within the <+">string<-">

>
			 1 1 0 0 0 0 0 1 0 0 0 0
FALSE

>
			 1 2 0 0 0 0 0 1 0 0 0 0
The <+">pattern<-"> is not found anywhere within the <+">string<-">

>
		[e]
	[tble]
[frm]
	1
	1573060
	960
	1818
	9446
	2833
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	10
	11
	0
	303 40960
	[frmlay]
		7529
		8486
		1
		0
		0
		1
		1818
		0
		0
		2
		0
		1
		1
		0
		1
		1044
		5076
		0
	[tbl]
		 2 3 0 86 1440 0 1 43 43
		[h]
			 0 400 86 2 0 1 0
			 1 400 86 2 0 1 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 3400 0 2 0
			 2 3400 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 0 1 0 0 0 0
<+"><+#>_ <-#><-">

>
			 0 2 0 0 0 0 0 1 0 0 0 0
(Underscore). Matches any single character.

>
			 1 1 0 0 0 0 0 1 0 0 0 0
%

>
			 1 2 0 0 0 0 0 1 0 0 0 0
Matches any sequence of zero or more charcters

>
		[e]
	[tble]
[frm]
	1
	1573060
	720
	960
	9206
	3559
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	7
	12
	256
	1 256
	[frmlay]
		8069
		8486
		1
		0
		0
		1
		960
		0
		0
		2
		0
		1
		1
		0
		1
		1584
		5616
		0
	[tbl]
		 5 3 0 86 1440 0 1 43 43
		[h]
			 0 210 86 2 0 2 0
			 1 479 86 2 0 1 0
			 2 479 86 2 0 1 0
			 3 479 86 2 0 1 0
			 4 479 86 2 0 1 0
		[e]
		[w]
			 0 1651 0 2 0
			 1 3400 0 2 0
			 2 3400 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 0 1 0 0 0 0
@Table col hd@If:

>
			 0 2 0 0 0 0 0 1 0 0 0 0
@Table col hd@Then <+">angle<-"> is in the range:

>
			 1 1 0 0 0 0 0 1 0 0 0 0
<+">x <-">is positive

<-#><+">y <-">is positive

>
			 1 2 0 0 0 0 0 1 0 0 0 0
0 to pi/2 (Quadrant I)

>
			 2 1 0 0 0 0 0 1 0 0 0 0
x is negative

y is positive

>
			 2 2 0 0 0 0 0 1 0 0 0 0
pi/2 to pi (Quadrant II)

>
			 3 1 0 0 0 0 0 1 0 0 0 0
x is negative

y is negative

>
			 3 2 0 0 0 0 0 1 0 0 0 0
-pi to -pi/2 (Quadrant III)

>
			 4 1 0 0 0 0 0 1 0 0 0 0
x is positive

y is negative

>
			 4 2 0 0 0 0 0 1 0 0 0 0
-pi/2 to 0 (Quadrant IV)

>
		[e]
	[tble]
[frm]
	1
	1573060
	960
	5508
	9446
	9342
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	6
	13
	9736
	1929 35110
	[frmlay]
		4548
		8486
		1
		0
		0
		1
		5508
		0
		0
		2
		0
		1
		1
		0
		1
		504
		7416
		0
	[tbl]
		 4 5 0 86 1440 24 1 43 43
		[h]
			 0 410 86 18 0 4 0
			 1 679 86 2 0 2 0
			 2 1079 86 2 0 2 0
			 3 1279 86 2 0 2 0
		[e]
		[w]
			 0 659 0 2 0
			 1 2010 0 2 0
			 2 2060 0 2 0
			 3 989 0 2 0
			 4 3263 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 4352 1 0 0 0 0
@Table col hd@<**><**>problem field

>
			 0 2 0 0 0 0 4352 1 0 0 0 0
@Table col hd@<**><**>action field

>
			 0 3 0 0 0 0 4352 1 0 0 0 0
@Table col hd@Significant<**>Words

>
			 0 4 0 0 0 0 4352 1 0 0 0 0
@Table col hd@<**><**>Return Value

>
			 1 0 8 0 0 0 0 1 0 0 0 0
<+@>a.

>
			 1 1 0 0 0 0 0 1 0 0 0 0
Not enough equipment

>
			 1 2 0 0 0 0 0 1 0 0 0 0
@Body Text@Order five new machines and inquire about possibility of more.

>
			 1 4 0 0 0 0 0 1 0 0 0 0
@Body Text@Not enough equipment. Order five new machines and inquire about possibility of more.

>
			 2 0 8 0 0 0 0 1 0 0 0 0
<+@>b.

>
			 2 1 8 0 0 0 0 1 0 0 0 0
@Body Text@<+@><:I0,0,0,0>The magazine's advertisers are upset and angry about last month's editorial.

>
			 2 2 0 0 0 0 0 1 0 0 0 0
@Body Text@The PR director will draft a letter stating that the magazine's editorial was well-received by its readers.

>
			 2 3 0 0 0 0 0 1 0 0 0 0
upset

angry

>
			 2 4 0 0 0 0 0 1 0 0 0 0
@Body Text@The PR director will draft a letter stating that the magazine's editorial was well-received by its readers. The magazine's advertisers are upset and angry about last month's editorial.

>
			 3 0 8 0 0 0 0 1 0 0 0 0
<+@>c.

>
			 3 1 0 0 0 0 0 1 0 0 0 0
@Body Text@The magazine's advertisers are upset and angry about last month's editorial -- so angry, that they may withdraw support.

>
			 3 2 0 0 0 0 0 1 0 0 0 0
@Body Text@The PR director will draft a letter stating that the magazine's editorial was well-received by its readers.

>
			 3 3 0 0 0 0 0 1 0 0 0 0
upset

angry

>
			 3 4 0 0 0 0 0 1 0 0 0 0
@Body Text@The magazine's advertisers are upset and angry about last month's editorial -- so angry, that they may withdraw support. The PR director will draft a letter stating that the magazine's editorial was 
<-!>

>
		[e]
	[tble]
[frm]
	1
	1573060
	720
	960
	9206
	6437
	0
	1
	1
	1 0 0 0 0 0 0
	0
	16777215
	5
	14
	2676
	65318 38583
	[frmlay]
		8338
		8486
		1
		0
		0
		1
		960
		0
		0
		2
		0
		1
		1
		0
		1
		504
		5976
		0
	[tbl]
		 4 4 0 86 1440 0 1 43 43
		[h]
			 0 210 86 18 0 3 0
			 1 1479 86 2 0 1 0
			 2 1679 86 2 0 1 0
			 3 1679 86 2 0 1 0
		[e]
		[w]
			 0 708 0 2 0
			 1 4400 0 2 0
			 2 2208 0 2 0
			 3 2266 0 2 0
		[e]
		[data]
			 0 1 0 0 0 0 4352 1 0 0 0 0
@Table col hd@formula

>
			 0 2 0 0 0 0 4352 1 0 0 0 0
@Table col hd@Abbreviation Dictionary

>
			 0 3 0 0 0 0 4352 1 0 0 0 0
@Table col hd@Return Value

>
			 1 0 0 0 0 0 0 1 0 0 0 0
a.

>
			 1 1 0 0 0 0 0 1 0 0 0 0
@Mono@@Abstract(<[>CountWords]:<[>SortChunks]:<[>Save]:<[>TryFit]:<[>Restore]:<[>DropVowels]:<[>Abbrev]; 200; ""; problem:action)

@Mono@
>
			 1 3 0 0 0 0 0 1 0 0 0 0
@Body Text@Th mgzn's advrtsrs ar upst and angry abt lst mnth's edtrl -- s angry, tht thy my wthdrw spprt. Th PR drctr wll drft a lttr sttng tht th mgzn's edtrl ws wll-rcvd by its rdrs.

>
			 2 0 0 0 0 0 0 1 0 0 0 0
b.

>
			 2 1 0 0 0 0 0 1 0 0 0 0
@Mono@@Abstract(<[>CountWords]:<[>SortChunks]:<[>Save]:<[>TryFit]:<[>Restore]:<[>UseDict]:<[>Abbrev]; 200; ""; problem:action)

@Mono@
>
			 2 2 0 0 0 0 0 1 0 0 0 0
@Mono@<:I0,0,0,0>magazine mag<**>month mo<**>editorial ed<**>director dir<**>and &<**>support supp

>
			 2 3 0 0 0 0 0 1 0 0 0 0
@Body Text@The magazine's advertisers are upset & angry about last month's ed -- so angry, that they may withdraw supp. The PR dir will draft a letter stating that the magazine's ed was well-received by its rea

>
			 3 0 0 0 0 0 0 1 0 0 0 0
c.

>
			 3 1 0 0 0 0 4096 1 0 0 0 0
@Mono@@Abstract(<[>CountWords]:<[>SortChunks]:<[>Save]:<[>TryFit]:<[>Restore]:<[>UseDict]:<[>Abbrev]; 200; ""; problem:action)

@Mono@
>
			 3 2 0 0 0 0 4096 1 0 0 0 0
@Mono@magazine's mag's<**>month's mo's<**>editorial ed<**>director dir<**>and &<**>support supp

>
			 3 3 0 0 0 0 4096 1 0 0 0 0
@Body Text@The mag's advertisers are upset & angry about last mo's ed -- so angry, that they may withdraw supp. The PR dir will draft a letter stating that the mag's ed was well-received by its readers.

>
		[e]
	[tble]
[lay]
	Standard
	3079
	[rght]
		12960
		10166
		1
		960
		1200
		3
		960
		720
		0
		1
		0
		1
		0
		2
		1
		960
		9446
		1
		1
		3120
	[lft]
		12960
		10166
		1
		720
		1200
		3
		960
		960
		0
		1
		0
		1
		0
		2
		1
		720
		9206
		1
		1
		3120
	[hlft]
	[lyfrm]
		1
		3008
		0
		0
		10166
		960
		0
		1
		3
		1 0 0 0 0 0 0
		0
		0
		3
	[frmlay]
		960
		10166
		1
		720
		180
		3
		0
		960
		0
		1
		0
		1
		1
		0
		1
		720
		9206
		1
		2
		4674
	[txt]
>
	[hrght]
	[lyfrm]
		1
		11200
		0
		0
		10166
		960
		0
		1
		3
		1 0 0 0 0 0 0
		0
		0
		1
	[frmlay]
		960
		10166
		1
		960
		180
		3
		0
		720
		0
		1
		0
		1
		1
		0
		1
		960
		9446
		1
		2
		4674
	[txt]
>
	[flft]
	[lyfrm]
		1
		5056
		0
		11760
		10166
		12960
		0
		1
		3
		1 0 0 0 0 0 0
		0
		0
		4
	[frmlay]
		12960
		10166
		1
		720
		480
		3
		11940
		960
		0
		1
		0
		1
		1
		0
		1
		720
		9206
		1
		3
		9900
	[txt]
@Left pg foot@<:P19999,0,7-> Programmer's Guide                                                                                           Lotus Confidential

>
	[frght]
	[lyfrm]
		1
		13248
		0
		11760
		10166
		12960
		0
		1
		3
		1 0 0 0 0 0 0
		0
		0
		2
	[frmlay]
		12960
		10166
		1
		960
		480
		3
		11940
		720
		0
		1
		0
		1
		1
		0
		1
		960
		9446
		1
		3
		9900
	[txt]
@Right pg foot@Lotus Confidential                                                                             Formulas: @Function Reference 
<:P19999,0,7->

>
[elay]
[l1]
	0
[pg]
	137
	2 94 28 512 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	34 0 24 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	61 0 16 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	92 0 25 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	107 0 5 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 1 0 0
	121 0 35 32 1 0 0 200 2 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	150 0 2 32 4 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	184 0 122 0 0 0 0 200 52 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	214 0 42 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	236 216 11 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	247 0 97 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	272 0 61 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	302 323 22 0 0 0 0 200 283 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	334 0 134 0 0 0 0 200 79 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	369 97 63 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	391 106 6 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	426 0 14 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	460 0 168 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	494 0 5 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	528 0 10 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	561 0 9 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	585 0 34 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	605 200 37 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	628 181 18 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	645 411 81 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	668 99 28 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	696 291 16 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	719 0 44 0 0 1 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	742 0 69 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	767 86 45 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	797 295 23 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	817 0 66 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	841 0 16 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	866 0 8 32 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	889 106 105 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	907 99 31 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	932 0 41 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	954 202 20 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	976 0 17 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1008 0 40 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1027 0 25 32 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1050 203 99 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1075 0 5 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 2 0 0
	1099 116 62 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1132 0 119 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1159 165 43 0 0 0 0 200 2 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1187 0 15 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1214 0 0 0 0 0 0 288 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1243 0 18 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1273 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1307 94 74 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1328 98 16 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1355 0 17 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1385 0 14 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1418 0 14 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1449 0 68 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1482 0 14 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1509 314 14 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1539 0 57 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1566 0 29 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1601 0 15 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1604 0 5 512 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1632 0 55 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1656 0 77 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1676 0 5 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1706 0 99 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1731 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1763 0 2 32 64 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1793 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1827 0 92 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1852 0 13 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1882 0 12 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1915 0 6 32 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1947 105 49 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	1979 0 64 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2010 0 8 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2043 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2074 0 10 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2102 212 94 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2131 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2164 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2198 0 0 32 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2229 115 103 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2254 102 54 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2290 0 13 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2325 104 24 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2355 0 8 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2390 211 51 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2418 128 29 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2446 0 24 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2468 397 111 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2491 0 56 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2507 0 10 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2539 0 0 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2566 0 9 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2595 103 31 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2631 0 32 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2665 0 0 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2699 0 8 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2732 308 74 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2753 252 42 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2787 0 18 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2821 0 111 0 0 0 0 288 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2853 0 21 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2884 0 8 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2906 0 5 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 6 0 0
	2926 0 14 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2952 0 15 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	2978 0 5 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3007 0 68 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3039 0 16 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3061 0 91 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3096 107 85 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3124 0 12 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3159 0 78 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3192 0 0 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3226 96 52 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3246 42 26 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3277 0 12 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3305 94 39 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3336 0 13 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3369 0 31 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3404 123 16 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3436 0 8 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3467 0 5 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 3 0 0
	3480 0 5 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3512 0 12 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3545 0 14 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3581 0 17 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3614 0 7 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3649 0 12 0 1 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3678 0 0 32 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3708 95 49 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3743 0 17 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3773 0 31 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3810 0 32 0 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
	3832 99 31 1025 0 0 0 200 65535 Standard	65535 0 0	0 0 0 0 0 0 0 65535 0 0 65535 0 0 0 0 0
[edoc]
@Ahead@<:#240,8486><:f280,,><+!>Chapter 7: @Function Reference<-!><:f>

This chapter provides reference information for each @function in Notes. Entries are arranged alphabetically by name.<:p<* >>

@Bhead title@<:#220,8486><+!>@Abs

<:#200,8486><:X8,2;Index "@Abs" #><:f,,>Returns the absolute (unsigned) value of a number.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Abs( <-!><+">anyNumber<+!><-"> )<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">anyNumber<-">

@1st lev para@<:#200,8486>Number. Any <:f180, Helvetica,0,0,0>number<:f,,> valid in Notes, whether positive or negative, whole or fractional, integer or real.

@Chead@<:#200,8486><:f,,>Return Value

<:#200,8486>absoluteValue

@1st lev para@<:#200,8486>Number. The absolute value of <+">anyNumber.<-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Abs(</m>2.16)<:f,,> returns <:f180,QCourier New,0,0,0>2.16<-!><:f,,>.

<:#200,8486><:f180,QCourier New,0,0,0>@Abs(Net)<:f,,> returns <:f180,QCourier,0,0,0>2.16<:f,,> if the number in the field named Net is either 2.16 or 
</m>2.16. 

<:#400,8486><:f180,QCourier New,0,0,0>@Abs(Score1 - Score2)<:f,,> returns <:f180,QCourier New,0,0,0>25<:f180,QCourier,0,0,0> 
<:f,,>if Score1 = 50 and Score2 = 75, or if Score1 = 75 and Score2 = 50.

<:#600,8486><:f180,QCourier New,0,0,0>@Abs(Profit </m> CostOfSales)<:f180,QCourier,0,0,0> 
<:f,,>calculates and returns the absolute value of the number that results when the number in the field named CostOfSales is subtracted from the number in the field named Profit.

<:#200,8486><+!><:f200, Helvetica,0,0,0>

@Bhead title@<:#220,8486><+!><:f200, Helvetica,0,0,0>@Abstract<-!><:X8,2;Index "@Abstract" #>

<:#200,8486>Abbreviates the contents of one or more fields by:

@Bullet@<:#200,8486>Selecting the most significant parts of the text

@Bullet@<:#200,8486>Abbreviating common words

@Bullet@<:#200,8486>Dropping vowels from words

@Bullet@<:#200,8486>Removing unnecessary text, such as mail headers or white space

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Abstract( <[><-!><+">commands<+!><-">]<-!><+!> ; <+"><-!>size<+!><-"> ; 
<-!><+">beginText<+!><-"> ; <-!><+">bodyFields<-"><+!> <-!><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+!><[><+"><-!>commands<+!><-">]<-!>

@1st lev para@<:#600,8486>Any number of commands that tell Notes how you want to abbreviate and sort the text (see list below). Commands are executed in the order specified. Enclose each command in brackets and separate multiple commands with colons: <[>DropVowels]:<[>NoTrimWhite]:<[>
Abbreviate]

<:#200,8486><+">size<-">

@1st lev para@<:#200,8486>Number. The maximum size of the abstracted text. Can be no larger than 65000 bytes.

<:#200,8486><+">beginText<-">

@1st lev para@<:#600,8486>Text. A comment to insert at the beginning of the returned text, no larger than 10 characters. The size of 
<+">beginText<-"> counts toward the total <+">size<-"> of the abstracted text, but its contents are unaffected by @Abstract commands.

<:#200,8486><+!>"<+"><-!>bodyFields<+!><-">"<-!>

@1st lev para@<:#600,8486>Text or text list. Any number of fields containing the text to abstract. May be text, rich text, or keyword fields. The text in each field is concatenated in the order specified. If Notes cannot locate a field by name, it uses the string literal instead. Se
parate multiple names with colons: Body:Figures<-"><-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">abstractedText<-">

@1st lev para@<:#400,8486>Text. The text contained in each of the body fields, abbreviated and sorted as specified by the 
<+">commands<-">.

@Chead@<:#200,8486>Commands

<:#200,8486>There are nineteen different commands you can use with @Abstract.

<:#200,8486><+!><[>TextOnly]<-!>

@1st lev para@<:#200,8486>Removes mail headers and punctuation chunks from the text.

<:#200,8486><+!><[>CountWords]<-!>

@1st lev para@<:#800,8486>Computes the significance of each word in the text. A word's significance depends on the number of times it appears in the text. A word that appears in the Significant Word file (see "Files", below) gets its significance boosted. A word that appears in the 
Insignificant Word file (see "Files", below) has no significance.

<:#200,8486><+!><[>Save]<-!>

@1st lev para@<:#200,8486>Saves the text in its current state. Saved text can be restored with the <[>Restore] command.

<:#200,8486><+!><[>Restore]<-!>

@1st lev para@<:#400,8486>Discards the current text and restores the last-saved text. You can only restore saved text one time. If no text has been saved, this command has no effect.

<:#200,8486><+!><[>TryFit]<-!>

@1st lev para@<:#600,8486>Takes the current text and determines if it's become small enough to fit in the specified 
<+">size<-">. If so, @Abstract returns the current text and stops, ignoring any remaining commands. If not, @Abstract continues with the next command.

<:#200,8486><+!><[>SortChunks]<-!>

@1st lev para@<:#800,8486>Sorts the text according to significance. The text is divided into chunks, of which there are three types: text, mail header, and punctuation. The significance of a chunk depends upon the significances of the words within it, the number of words in the chun
k, and the type and position of the chunk.

<:#200,8486><+!><[>Abbrev]<-!>

@1st lev para@<:#600,8486>Abbreviates the text. @Abstract uses an Abbreviation Dictionary to substitute abbreviations for words in the text (see "Files", below). You can control other aspects of the abbreviation process with the following commands (which have no affect unless 
<+">followed by<-"> the <[>Abbrev] command):

@1st lev para@<:#200,8486><+!><[>UseDict]<-!>

@1st lev para@<:#400,8486><+!>	<-!>Specifies that the Abbreviation Dictionary should be used. This is the default.

@1st lev para@<:#200,8486><+!><[>NoDict]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Specifies that the Abbreviation Dictionary should not be used.

@1st lev para@<:#200,8486><+!><[>DropVowels]<-!>

@1st lev para@<:#400,8486>	Removes vowels from words. Words that begin with a vowel aren't affected.

@1st lev para@<:#200,8486><+!><[>KeepVowels]<-!>

@1st lev para@<:#400,8486><+!>	<-!>Keeps vowels in words. Words that begin with a vowel aren't affected. This is the default.

@1st lev para@<:#200,8486><+!><[>DropFirstVowels]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Drops vowels from the beginning of words. 

@1st lev para@<:#200,8486><+!><[>KeepFirstVowels]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Keeps vowels at the beginning of words. This is the default.

@1st lev para@<:#200,8486><+!><[>TrimWhite]<-!>

@1st lev para@<:#400,8486><+!>	<-!>Removes extra white space characters from the text. This is the default.

@1st lev para@<:#200,8486><+!><[>NoTrimWhite]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Retains extra white space characters in the text.

@1st lev para@<:#200,8486><+!><[>TrimPunct]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Removes extra white space characters surrounding punctuation.

@1st lev para@<:#200,8486><+!><[>NoTrimPunct]<-!>

@1st lev para@<:#200,8486><+!>	<-!>Retains extra white space characters surrounding punctuation.

@Chead@<:#200,8486>Files

<:#600,8486>The following files are used by @Abstract. In your path, you can provide all, some, or none of these files, depending on how you want to use @Abstract. The files must be present in your path when you start the Notes software.

<:#200,8486>Abbreviation Dictionary (noteabbr.txt)

@1st lev para@<:#400,8486>Each line of the file should contain two words: the first is the original word and the second is its abbreviation. An abbreviation must be shorter than the word it replaces.

<:#200,8486>Significant Words (notesigl.txt)

@1st lev para@<:#600,8486>The file should be a free-form list of significant words, such as "urgent" or "immediately". When @Abstract computes the significance of text, it boosts the significance of any words included in the significant word list.

<:#200,8486>Insignificant Words (notestop.txt)

@1st lev para@<:#400,8486>The file should be a free-form list of words that are always insignificant, such as "the", "and", and "of". When @Abstract computes the significance of words, it ignores any words included in this file.

<:#200,8486>Mail Headers (notehead.txt)

@1st lev para@<:#400,8486>The file should be a free-form list of words that indicate mail headers, such as Subject, From, and To. If you want a mail header to be considered significant, place an asterisk after the word.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ABSTRACT<-*>

@Chead title@<:#200,8486>Examples: @Abstract

<:#200,8486>1. This formula takes the contents of the description field and abbreviates it by eliminating vowels.

@Mono@<:#200,8486>@Abstract( <[>DropVowels]:<[>Abbrev]; 200; ""; description )<-!>

<:#200,8486>If the description field contained this text:

<:#200,8486>The kickoff meeting for our capital campaign is tomorrow.

<:#200,8486>Then the formula returns:

<:#200,8486><+!>Th kckff mtng fr or cptl cmpgn is tmrrw.<-!>

<:#400,8486>2. This formula abbreviates the contents of the description field by using an Abbreviation Dictionary and eliminating vowels.

@Mono@<:#200,8486>@Abstract(<[>UseDict]:<[>DropVowels]:<[>Abbrev]; 200; ""; description )

<:#200,8486>If the Abbreviation Dictionary contains the following:

@Mono@<:#600,8486>capital cap<**>meeting mtg<**>tomorrow tom

<:#200,8486>Then the formula returns:

<:#200,8486><+!>Th kckff mtg fr or cap cmpgn is tom.<-!>

<:R1,8,1,0,1,720,1,720,1,1440,1,2160,1,2880,1,3600,1,4320,><:#400,8486>3. This formula shows a misunderstanding in the use of @Abstract. It returns the contents of the description field unaltered, since the <[>Abbrev] command incorrectly precedes <[>DropVowels].

@Mono@<:R1,8,1,0,1,720,1,720,1,1440,1,2160,1,2880,1,3600,1,4320,><:#200,8486>@Abstract( <[>Abbrev]:<[>DropVowels]; 200; ""; description )

<:R1,8,1,0,1,720,1,720,1,1440,1,2160,1,2880,1,3600,1,4320,><:#400,8486>4. This formula shows how @Abstract can re-order the contents of fields based upon on the significance of their chunks.

@Mono@<:R1,8,1,0,1,720,1,720,1,1440,1,2160,1,2880,1,3600,1,4320,><:#200,8486>@Abstract(<[>CountWords]:<[>SortChunks]; 200; ""; problem:action)<-!>

<:R1,8,1,0,1,720,1,720,1,1440,1,2160,1,2880,1,3600,1,4320,><:#400,8486>The table below shows several possible return values for this formula, depending on the contents of the problem and action fields, and the Significant Words file.

<:R><:t13>

<:#600,8486>5. In example 4c, the returned text is truncated because the text contained in the problem and action fields exceeds the specified size of 200 bytes. If we needed to keep the text size down to 200 bytes, we could use the following formulas to remedy this.

<:t14>

<:#200,8486>

@Bhead title@<:#220,8486>@Accessed<:X8,6;Index "@Accessed" #>

<:#200,8486><:f,,>Indicates the time and date when the document was last accessed, whether for reading or writing.<:f><:f,,> 

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><:f,,><+!>@Accessed<-!>

@Chead@<:#200,8486><:f,,>Return Value

<:#200,8486><:f,,><+">lastAccessed<-">

@1st lev para@<:#200,8486><:f,,><-">Time-date. The time and date that the current document was last accessed.<-">

@Chead@<:#200,8486><:f,,>Usage

<:#200,8486>@@Accessed is most useful in field formulas, selection formulas, and macros.

<:#400,8486>The value returned by @Accessed is exact only to the day, not the hour. If the document is accessed twice during the same 24</m>hour period, the value is not updated.

<:#600,8486>The last</m>accessed value is <+">not<-"> <:f,,>replicated; each replica copy of the document maintains its own value. The value returned by @Accessed represents the last time the document was accessed in that replica copy of the database.<:f>

<:#400,8486><:f,,>If the database is stored on CDROM, @Accessed has no meaning because read/write access is not controlled by the Notes editor.<:f>

@Chead@<:#200,8486><:f,,>Usage in Workflow Applications

<:#600,8486><:f,,>This function is useful for determining whether a document has been 
<:f><:f,,></S><:f><:f,,>stalled<:f></T><:f,,> in a workflow application; for example, you could run a macro that checks the last</m>accessed date on a series of documents and sends out reminders about documents that should have been read but have not.

<:#400,8486>@@Accessed can also be used in a macro to determine which of a database</R>s documents have not been accessed within a certain period of time, and archive them.

@Note@<:#400,8486>@Accessed is similar to @Modified, which records the date the document was last edited and saved.

@Chead@<:#200,8486>Usage in Column or Selection Formulas

<:#800,8486>Be careful when using @Accessed in views (in column formulas or selection formulas) because it forces the view to be refreshed every time it</R>s opened. You can prevent this by selecting the Manual/Background option for the view</R>s refresh frequency. Als
o, use of @Accessed in a view will cause that view to perpetually appear to need refreshing</W>the question mark will always display in the corner.

@Chead@<:#200,8486>Example 

<:#400,8486><:f180,QCourier New,0,0,0>@Accessed<:f,,> returns <+!><:f180,BArial,0,0,0>9/30/92 11:00:00 AM<-!><:f,,> if the document was last read or edited on September 30, 1992 at 11:00 A.M.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Created

@Crossref@<:#200,8486>@Modified

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Acos<:X8,7;Index "@Acos" #>

<:#200,8486>Calculates the arc (inverse) cosine using the cosine of an angle.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Acos( <-!><+">cosine <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">cosine<-">

@1st lev para@<:#200,8486>Number. A cosine of an angle, from -1 through 1.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">angle<-">

@1st lev para@<:#400,8486>Number. An angle, in radians, from 0 through pi. This represents an angle between 0 and 180 degrees.

@Chead@<:#200,8486>Examples

<:#200,8486>1. <:f,QCourier New,>@Acos( 0 )<:f> returns pi/2.

<:#400,8486>2. The cosine of an angle is 0.5. To determine the size of the angle, use 
<:f,QCourier New,>@ACOS(0.5)<:f>, which returns <+!>1.0472<-!> 

<:#200,8486>radians (60 degrees).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Cos

@Crossref@<:#200,8486>@Pi

<:#200,8486><+#>

@Bhead title@<:#220,8486>@Adjust

<:#400,8486><:X8,8;Index "@Adjust" #><:f,,>Adjusts the specified time</m>date value by the amount in each succeeding argument in increments of the argument. The amount of adjustment may be positive or negative.<:f>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Adjust( <-!><+"><-%>dateToAdjust <-"><+!>; <-!><+">year <-"><+!>; 
<-!><+">month<-"><+!> ; <-!><+">day <-"><+!>; <-!><+">hour<-"><+!> ; 
<-!><+">minute<-"><+!> ; <-!><+">second <-"><+!>)

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><+">dateToAdjust<-">

@1st lev para@<:#200,8486>Time-date. The time-date value you want to increment. This should be a single value, not a range.

<:#200,8486><+">year<-">

@1st lev para@<:#200,8486>Number. The number of years to increment by.

<:#200,8486><+">month<-">

@1st lev para@<:#200,8486>Number. The number of months to increment by.

<:#200,8486><+">day<-">

@1st lev para@<:#200,8486>Number. The number of days to increment by.

<:#200,8486><+">hour<-">

@1st lev para@<:#200,8486>Number. The number of hours to increment by.

<:#200,8486><+">minute<-">

@1st lev para@<:#200,8486>Number. The number of minutes to increment by.

<:#200,8486><+">second<-">

@1st lev para@<:#200,8486>Number. The number of seconds to increment by.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">adjustedDate<-">

@1st lev para@<:#200,8486>Time-date. The date, incremented by the amount of time you have specified.

@Chead@<:#200,8486>Usage

<:#200,8486><:f,,>You must include all arguments. Use <:f180, Helvetica,0,0,0>0<:f,,> for those you don</R><:f><:f,,>t want to adjust.<:f>

<:#600,8486>While the order of the arguments is that of the value that changes most slowly (year) to the value that changes most quickly (second), @Adjust acts on the arguments from the one that changes most quickly to the one that changes most slowly.

@Chead@<:#200,8486><:f,,>Calculating Due Dates

<:#400,8486>A typical use for @Adjust is calculating a due date from an entry date, by adjusting only one component of the 
<:f180, Helvetica,0,0,0>time</m>date<:f,,> value, for example, the month component.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Adjust(<[>9/30/92];2;2;2;0;0;0) <:f,,>returns 
<:f180,QCourier New,0,0,0>12/2/94<:f,,><-!>.

<:#400,8486>Notes sees 30 in the days portion of the time</m>date value and adjusts it by 2, which immediately increments the month value by 1. Notes then adjusts the month value by 2, and the year value by 2. 

<:#200,8486><:f180,QCourier New,0,0,0>@Adjust(<[>01/30/93];</m>2;0;</m>10;0;0;0)<:f180, Helvetica,0,0,0> 
<:f,,>returns <:f180,QCourier New,0,0,0>01/20/91<:f,,><-!>.

<:#200,8486>Notes returns a date that is 2 years and 10 days before the supplied date.

<:#200,8486><:f180,QCourier New,0,0,0>@Adjust(Date;0;1;0;0;0;0)<:f,,> returns the date one month from the date in the field named Date. 

<:#200,8486><:f180,QCourier New,0,0,0>@Adjust(@Now;0;1;1;0;0;0)<:f,,> returns the date one month and one day from the current time</m>date.

@Bhead title@<:#220,8486>@All<:X8,9;Index "@All" #>

<:#200,8486>Returns the value TRUE.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@All

@Chead@<:#200,8486><+!>Return Value

<:#200,8486>TRUE

@Chead@<:#200,8486>Usage

<:#600,8486>Use @All in selection formulas, filter macros, and search macros, or in any statement requiring a SELECT statement. Notes appends SELECT @All to macros in contexts where @All is needed; all views default to a selection formula of SELECT @All.

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>SELECT @All<:f,,> selects all documents in the database when used as a view</R><:f><:f,,>s selection formula.

<:#400,8486><:f180,QCourier New,0,0,0>FIELD Status:=<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Open<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;SELECT@All 
<:f,,>when used in a filter macro, selects all documents and sets the Status field to 
<:f><:f,,></S><:f><:f,,>Open<:f><:f,,></T><:f><:f,,>.

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@AllChildren<:X8,9;Index "@AllChildren" #>

<:#200,8486>Allows you to define a selection formula that selects a set of documents and their immediate responses.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>SELECT <-!><+">selectionFormula <-"><+!>I @AllChildren<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486>Selects all the documents that match <+">selectionFormula <-">plus their immediate responses.

@Chead@<:#200,8486><+!>Usage<-!>

<:#600,8486>@@AllChildren can only be used in a view selection or selective replication formula. It must be appended to the end of a selection formula using the boolean OR operator ("|"). Don't use it within complex expressions in a formula.

<:#600,8486>@@AllChildren allows you to define a view as a set of documents that match a given formula plus the immediate responses to those documents. It also allows you to create a selective replication formula to replicate a set of documents along with the immediate 
responses.

<:#600,8486>Selection formulas that use @AllChildren may provide a significant advantage over formulas that use @IsResponseDoc.  While @IsResponseDoc returns TRUE for 
<+">any <-">response document in a database, @AllChildren returns only those responses that are children of matching documents.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ALLCHILDREN_AND_ALLDESCENDANTS<-*>

@Crossref@<:#200,8486><+)>@AllDescendants<-)><+*>H_ALLDESCENDANTS<-*>

@Crossref@<:#200,8486><+)>@IsResponseDoc<-)><+*>H_ISRESPONSEDOC<-*>

@Bhead title@<:#220,8486>@AllDescendants<:X8,9;Index "@AllDescendants" #>

<:#400,8486>Allows you to define a selection formula that selects a set of documents and their responses, including response-to-responses.

@Chead@<:#200,8486>Syntax

<:#200,8486><+">selectionFormula <-"><+!>I @AllDescendants<-!>

@Chead@<:#200,8486>Return Value

<:#400,8486>Selects all the documents that match <+">selectionFormula <-">plus their responses and responses-to-responses, for as many levels of response documents that exist.

@Chead@<:#200,8486><+!>Usage<-!>

<:#600,8486>@@AllDescendants can only be used in a view selection or selective replication formula. It must be appended to the end of a selection formula using the boolean OR operator ("|"). Don't use it within complex expressions in a formula.

<:#600,8486>@@AllDescendants allows you to define a view as a set of documents that match a given formula plus the immediate responses to those documents. It also allows you to create a selective replication formula to replicate a set of documents along with the immedia
te responses.

<:#600,8486>Selection formulas that use @AllDescendants return fewer documents than formulas that use @IsResponseDoc.  While @IsResponseDoc returns TRUE for any response document in a database, @AllDescendants selects only those responses that are children of matching 
documents.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ALLCHILDREN_AND_ALLDESCENDANTS<-*>

@Crossref@<:#200,8486><+)>@AllChildren<-)><+*>H_ALLCHILDREN<-*>

@Crossref@<:#200,8486><+)>@IsResponseDoc<-)><+*>H_ISRESPONSEDOC<-*>

@Chead title@<:#200,8486>Examples: @AllChildren and @AllDescendants

<:#200,8486>1. Suppose we had the following documents in a response hierarchy.

@1st lev para@<+@><:#1200,8486>1.0 What is your favorite color? (Esteban Garcia)<**>  1.1 Blue (Mary Lu)<**>  1.2 Aqua (Jim Thompson)<**>    1.2.1 Why do you like aqua? (Mary Lu)<**>    1.2.2 It reminds me of the ocean (Jim Thompson)<**>  1.3 I like the color orange (Bill Jones)

<+@><:#200,8486><:f,QCourier New,>SELECT @Author = "Jim Thompson<:f><:f,QCourier New,>" | @AllChildren<:f> selects documents 1.2, 1.2.1, and 1.2.2.

<+@><:#400,8486><:f,QCourier New,>SELECT @Author = "Esteban Garcia" | @AllChildren<:f> selects documents 1.0, 1.1, 1.2, and 1.3.

<+@><:#200,8486><:f,QCourier New,>SELECT @Contains( Subject; "like" ) | @AllChildren<:f> selects documents 1.2.1 and 1.3.

<+@><:#400,8486><:f,QCourier New,>SELECT @Author = "Esteban Garcia" | @AllDescendants<:f><:f,QCourier New,> 
<:f><:f180,BArial,0,0,0>selects <:f><:f180,BArial,0,0,0>documents 1.0, 1.1, 1.2, 1.2.1, 1.2.2, and 1.3<:f>.

<+@><:#600,8486>2. You have a Flowers discussion database and you want to add a new view that will show only those documents having to do with orchids. You create an Orchid view, use the View InfoBox to indicate that it should show documents in a response hierarchy, and wr
ite the following selection formula for the view:

@Mono@<+@><:#200,8486>SELECT @Contains( Subject; "orchid" ) | @IsResponseDoc

<:#200,8486>The view looks great <+!><+">YY will be replaced with screenshot and name changes 
<-!><-">:<-">

@1st lev para@<:#1200,8486><+!>Date         Topic<**><-!>04/08/95   The orchid family of flowers  (Anne Pycha, 2 responses)<**>04/08/95      Sighting of new variation  (Anne Pycha)<**>04/08/95      The "ghost" orchid  (Anne Pycha)<**>04/08/95   Local flower shops that carry orchids  
(Anne Pycha, 1 response)<**>04/08/95      Try the Blumenhaus  (Anne Pycha)

<+@><:#600,8486>Although the view looks great, it's selecting <+">every <-">response document in the entire database, whether or not it has to do with orchids. For example, here's what the view looks like when the response hierarchy is turned off:

@1st lev para@<:#1600,8486><+!>Date         Topic<**><-!>04/08/95   The orchid family of flowers  (Anne Pycha)<**>04/08/95   Sighting of new variation  (Anne Pycha)<**>04/08/95   Special varieties of roses  (Anne Pycha)<**>04/08/95   My roses bloomed late this year  (Anne Pycha)<**>0
4/08/95   Local flower shops that carry orchids  (Anne Pycha)<**>04/08/95   Try the Blumenhaus  (Anne Pycha)<**>04/08/95   The "ghost" orchid  (Anne Pycha)

<+@><:#400,8486>The unneeded documents take up valuable space in the view index on the database's server. (Likewise, if you used this same formula for replication, the unneeded documents would be replicated).

<+@><:#200,8486>You use @AllChildren to rewrite the selection formula:

@Mono@<+@><:#200,8486>SELECT @Contains( Subject; "orchid" ) | @AllChildren

<+@><:#600,8486>This formula selects and displays <+">only<-"> those response documents whose parent contains "orchid" in the Subject field. Again, the view looks great, but this time the view does not contain any hidden response documents:

@1st lev para@<:#1200,8486><+!>Date         Topic<**><-!>04/08/95   The orchid family of flowers  (Anne Pycha, 2 responses)<**>04/08/95      Sighting of new variation  (Anne Pycha)<**>04/08/95      The "ghost" orchid  (Anne Pycha)<**>04/08/95   Local flower shops that carry orchids  
(Anne Pycha, 1 response)<**>04/08/95      Try the Blumenhaus  (Anne Pycha)

<:#400,8486>3. Just as you'd hoped, the orchids generate a lively discussion. The Main View of the database, which selects all documents, now looks like this:

@1st lev para@<:#3000,8486><+!>Date       Topic<-!><**>04/08/95   The orchid family of flowers  (Anne Pycha, 7 responses)<**>04/08/95      Sighting of new variation  (Anne Pycha, 2 responses)<**>04/08/95         What color?  (Anne Pycha)<**>04/08/95         Please post exact location
  (Anne Pycha)<**>04/08/95      The "ghost" orchid  (Anne Pycha, 3 responses)<**>04/08/95         Very difficult to see  (Anne Pycha, 1 response)<**>04/08/95            Only blooms for an hour or so!  (Anne Pycha)<**>04/08/95         Some sightings reported
 in Florida  (Anne Pycha)<**>04/08/95   Roses beginning to bloom  (Anne Pycha, 2 responses)<**>04/08/95      Special varieties of roses  (Anne Pycha)<**>04/08/95      My roses bloomed late this year  (Anne Pycha)<**>04/08/95   Local flower shops that carry 
orchids  (Anne Pycha, 1 response)<**>04/08/95      Try the Blumenhaus  (Anne Pycha)<**>04/08/95   Tulip trips to Holland  (Anne Pycha)

<:#400,8486>The Orchid view you just created, however, does not contain all the documents you want. @AllChildren only selects the immediate children of any parent document(s) that meet the selection criteria:

@1st lev para@<:#1600,8486><+!>Date       Topic<-!><**>04/08/95   The orchid family of flowers  (Anne Pycha, 4 responses)<**>04/08/95      Sighting of new variation  (Anne Pycha)<**>04/08/95      The "ghost" orchid  (Anne Pycha, 2 responses)<**>04/08/95         Very difficult to see 
 (Anne Pycha)<**>04/08/95         Some sightings reported in Florida  (Anne Pycha)<**>04/08/95   Local flower shops that carry orchids  (Anne Pycha, 1 response)<**>04/08/95      Try the Blumenhaus  (Anne Pycha)

<:#200,8486>In this case, @AllDescendants might provide a better solution. You rewrite the selection formula:

@Mono@<+@><:#200,8486>SELECT @Contains( Subject; "orchid" ) | @AllDescendants

<:#200,8486>Success! The Orchid view now contains entire threads of orchid discussion:

@1st lev para@<:#2200,8486><+!>Date       Topic<-!><**>04/08/95   The orchid family of flowers  (Anne Pycha, 7 responses)<**>04/08/95      Sighting of new variation  (Anne Pycha, 2 responses)<**>04/08/95         What color?  (Anne Pycha)<**>04/08/95         Please post exact location
  (Anne Pycha)<**>04/08/95      The "ghost" orchid  (Anne Pycha, 3 responses)<**>04/08/95         Very difficult to see  (Anne Pycha, 1 response)<**>04/08/95            Only blooms for an hour or so!  (Anne Pycha)<**>04/08/95         Some sightings reported
 in Florida  (Anne Pycha)<**>04/08/95   Local flower shops that carry orchids  (Anne Pycha, 1 response)<**>04/08/95      Try the Blumenhaus  (Anne Pycha)

@Bhead title@<:#220,8486>@Ascii<:X8,12;Index "@Ascii" #>

<:#200,8486>Given a LMBCS (Lotus Muli-Byte Character S<+!><+">YY??<-"><-!>) string, converts it to an Ascii string.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Ascii( <-!><+">string <-"><+!>)<**>@Ascii( <-!><+">string <-"><+!>; <[>AllInRange] )<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text or text-list. A LMBCS string.<-">

<:#200,8486><+!><[>AllInRange]<-!>

@1st lev para@<:#400,8486><-!>Keyword. Specifies that @Ascii should return a null string ("") if any characters in the original 
<+">string<-"> cannot be represented by ASCII codes 32 to 127.<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">newString<-">

@1st lev para@<:#800,8486><-">Text or text-list. The original <+">string, <-">with each character converted to an ASCII-compliant character. Any character that can't be represented by ASCII codes 32 to 127 is replaced with a question mark (?). If you specify <[>AllInRange] and there
 are characters that can't be converted, returns a null string ("").<-">

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ASCII<-*>

@Chead title@<:#200,8486>Examples: @Ascii

<:#200,8486>1. <:f,QCourier New,>@Ascii( "<\G><\|><\i>" )<:f> returns <:f,QCourier New,>Cue<:f>.

<:#200,8486>2. <:f,QCourier New,>@Ascii( "<\G><\|><\i></c></e>" )<:f> returns 
<:f,QCourier New,>Cue??<:f>.

<:#400,8486>3. <:f,QCourier New,>@Ascii("<\G><\|><\i></c></e>";<[>AllInRange])<:f> returns a null string ("") since the last 2 characters can't be represented by ASCII codes 32 to 127.

<:#200,8486>4.<:f,QCourier New,> @Ascii( fld1 )<:f> returns<:f,QCourier New,>Cue??; cat 
<:f>if fld1 is a field containing the text list "<\G><\|><\i></c></e>";"cat".

<:#200,8486><+#>

@Bhead title@<:#220,8486>@Asin<:X8,12;Index "@Asin" #>

<:#200,8486>Calculates the arc (inverse) sine using the sine of an angle.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Asin( <+"><-!>sine <-"><+!>)<-!><-"><-"><-"><-"><-"><-">

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">sine<-">

@1st lev para@<:#200,8486>Number. A sine of an angle, from -1 through 1.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">angle<-">

@1st lev para@<:#400,8486>Number. An angle, in radians, from -pi/2 through pi/2. This represents an angle between -90 and 90 degrees.

@Chead@<:#200,8486>Example

<:#200,8486>1. <:f,QCourier New,>@Asin( 1 )<:f> returns pi/2.

<:#400,8486>2. The sine of angle x is 0.66. To determine the size of angle x, use 
<:f,QCourier New,>@Asin(0.66)<:f>, which returns <+!>0.72082<-!> radians (41.3 degrees).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Sin

@Crossref@<:#200,8486>@Pi

<:#200,8486>

@Bhead title@<:#220,8486>@AttachmentLengths

<:#600,8486><:X8,13;Index "@AttachmentLengths" #><:f,,>Returns a number or a number list containing the length of each of the current document</R><:f><:f,,>s attachment(s). The number(s) returned are only approximations; the actual size(s) of the attachment(s) may be s
lightly different.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@AttachmentLengths<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">sizeInBytes<-">

@1st lev para@<:#200,8486>Number or number list.

@Indnt bullet@<:#400,8486>If the current document contains one attachment, <+">sizeInBytes <-">is a number representing the size of that attachment in bytes.

@Indnt bullet@<:#400,8486>If the current document contains more than one attachment, <+">sizeInBytes 
<-">is a number list where each number in the number list is the size of one of the attachments, in bytes.

@Chead@<:#200,8486>Usage

<:#600,8486>The attachment size is computed based on uncompressed file size (that is, the number of bytes the attachment would use if you extracted it); the actual disk storage space required for the file may be somewhat smaller.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@AttachmentLengths<:f,,> returns <:f180,QCourier New,0,0,0>6102<:f,,> if that is the approximate size of the single, attached file. 

<:#200,8486>Given a semicolon as the multi</m>value separator:

<:#600,8486><:f180,QCourier New,0,0,0>@AttachmentNames + <:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0> : 
<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0> + @Text(@AttachmentLengths)<:f,,> returns 
<:f180,QCourier New,0,0,0>AUTOEXEC.BAT:112;CONFIG.SYS:1549;Q4SALES.WK4:17636<+!> 
<:f,,><-!>if those are the names and lengths of the files attached.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@AttachmentNames<-)>

@Crossref@<:#200,8486><+)>@Attachments<-)>

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@AttachmentNames<-!><+!><:f200, Helvetica,0,0,0> 

<:#400,8486><:X8,14;Index "@AttachmentNames" #><:f,,>Returns the operating system file names of any files attached to a document. If there are multiple files attached, the names are returned as a multiple</m>value text list.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@AttachmentNames<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">names<-">

@1st lev para@<:#200,8486><-">Text or text-list.

@Indnt bullet@<:#400,8486>If the current document contains one attachment, <+">names <-">is text representing the file name of that attachment.

@Indnt bullet@<:#400,8486>If the current document contains more than one attachment, <+">names 
<-">is a text-list where each item<+"> <-">is the file name of one of the attachments.<-">

@Chead@<:#200,8486>Examples 

<:#400,8486><:f180,QCourier New,0,0,0>@AttachmentNames<:f,,> returns <:f180,QCourier New,0,0,0>SALESQ1.WK4 
<:f,,>if a file named SALESQ1.WK4 is attached to the document. 

<:#200,8486>Given a semicolon as the multi</m>value separator:

<:#400,8486><:f180,QCourier New,0,0,0>@AttachmentNames<:f,,> returns <:f180,QCourier New,0,0,0>SALESQ1.WK4; ADMIN.DOC<:f,,> if files with those names are attached to the document.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@AttachmentLengths<-)>

@Crossref@<:#200,8486><+)>@Attachments<-)>

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Attachments<-!><+!><:f200, Helvetica,0,0,0> 

<:#200,8486><:X8,14;Index "@Attachments" #><:f,,>Returns the number of files attached to a document.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@Attachments<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">numFiles<-">

@1st lev para@<:#200,8486><-">Number. The number of files attached to the current document.<-">

@Chead@<:#200,8486>Usage in a Column Formula

<:#800,8486>When used in a column formula in a view,<:f180,QCourier New,0,0,0> @If(@Attachments;5;0)<:f,,> can be used to display the paper clip icon if the current document has one or more attachments, or displays a blank if there are no attachments. This is the formu
la used to indicate attachments in the Notes mail template. For this formula to work, you must select 
<:f><+!>Icon<-!> <:f,,>in the Column Definition dialog box for this column<:f><:f,,>.<:f>

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Attachments<:f,,> returns <:f180,QCourier New,0,0,0>3<:f,,><-!> if there are three files attached to a document. 

<:#200,8486><:f180,QCourier New,0,0,0>@Attachments <:f,,>returns <:f180,QCourier New,0,0,0>0<:f,,><-!> if there are no files attached to a document. 
<:f>

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@AttachmentLengths<-)>

@Crossref@<:#200,8486><+)>@AttachmentNames<-)>

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Atan<:X8,15;Index "@Atan" #>

<:#200,8486>Calculates the arc (inverse) tangent using the tangent of an angle.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Atan( <+"><-!>tangent <-"><+!>)<-!><-"><-"><-"><-"><-"><-"><-"><-">

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">tangent<-">

@1st lev para@<:#200,8486>Number. The tangent of an angle.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">angle<-">

@1st lev para@<:#400,8486>Number. An angle, in radians, from -pi/2 through pi/2. This represents an angle between -90 and 90 degrees.

@Chead@<:#200,8486>Examples

<:#200,8486>1. <:f180,QCourier New,0,0,0>@Atan( 1 )<:f> returns pi/4.

<:#200,8486>2. <:f180,QCourier New,0,0,0>@Atan( -1 )<:f> returns -pi/4.<-#><-#><-#><-#><-#><-#>

<:#400,8486>3. The tangent of angle x is 2/1, or 2. To determine the size of angle x, use 
<:f,QCourier New,>@Atan(2)<:f>, which returns <+!>1.10715<-!> radians  (63.4 degrees).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Atan2

@Crossref@<:#200,8486>@Tan

<:#200,8486><+#>

@Bhead title@<:#220,8486>@Atan2<:X8,15;Index "@Atan2" #>

<:#200,8486>Calculates the arc tangent using the tangent y/x of an angle. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Atan2( <-!><+">x <+!><-">; <-!><+"> y <+!><-">)<-!>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><+">x<-">

@1st lev para@<:#200,8486>Number. The denominator of the tangent value <+">y / x.<-">

<:#200,8486>y

@1st lev para@<:#200,8486>Number. The numerator of the tangent value <+">y / x.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">angle<-">

@1st lev para@<:#400,8486>Number. An angle, in radians, from -pi through pi. This represents an angle between -180 and 180 degrees, depending on the sign of x and y (see the list below).

@1st lev para@<:t12>

@Chead@<:#200,8486>Example

<:#200,8486>1. <:f,QCourier New,>@Atan2( 1; 1 )<:f> returns pi/4.

<:#200,8486>2. <:f,QCourier New,>@Atan2( -1; 1)<:f> returns 3pi/4

<:#400,8486>3. In a right triangle, the two sides that form the right angle measure 1 and 2. To determine the size of the larger of the two acute angles, use 
<:f,QCourier New,>@Atan2(1;2)<:f>, which returns 1.10715 radians (63.4 degrees).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Atan

@Crossref@<:#200,8486>@Tan

<:#200,8486>

@Bhead title@<:#220,8486>@Author<-!><+!><:f200, Helvetica,0,0,0> 

<:#200,8486><:X8,16;Index "@Author" #><:f,,>Returns a text list containing the names of the document</R><:f><:f,,>s author(s).

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@Author<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">authorList<-">

@1st lev para@<:#600,8486><-">Text-list. All the authors of the current document. In the case of authors with hierarchical names, Notes always returns the abbreviated form of the name (as in 
<:f,QCourier New,>Denise Lee/Research/Acme<:f>), rather than the canonical form (<:f,QCourier New,>CN=Denise Lee/OU=Research/O=Acme<:f>).<-">

<:#400,8486>@@Author uses the following instructions (in the sequence outlined below) to find a document</R>s author(s) and return the appropriate text list:

@Numbered list@<:#600,8486>Search the document for a field of type Author Names. If there is one, return the name(s) stored there. (If there are multiple Author Names fields, returns the contents of the first Author Names field found in the document.)

@Numbered list@<:#400,8486>If there is no Author Names field, look for a field called From. If there is a From field, look for the field FromDomain.

@Indnt bullet@<:#400,8486>If both fields are found, combine the two fields, separating them by an @ sign (as in, Mary Tsen@AcmeWest).

@Indnt bullet@<:#200,8486>Otherwise, return the contents of the From field only.

@Numbered list@<:#400,8486>If there is no From field, look for a field named $UpdatedBy. If there is one, return the contents of the field.

@Numbered list@<:#400,8486>If there is no $UpdatedBy field <+">and<-"> <:f,,>this is a new document (not yet saved), return the current user</R><:f><:f,,>s name.

@Numbered list@<:#200,8486>If none of the above can be found, return the null string </S></S>.

@Chead@<:#200,8486>Usage

<:#200,8486>@@Author is most useful for documents containing an Author Names or From field.

@Chead@<:#200,8486>Examples

<:#400,8486>A document has one Author Names field that contains: Mary Tsen, David Smith, Denise Lee/Research/Acme. 

<:#200,8486><:f180,QCourier New,0,0,0>@Author<:f,,> returns <:f180,QCourier New,0,0,0>Mary Tsen; David Smith; Denise Lee/Research/Acme<-!><:f,,>.

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Begins<-!>

<:#200,8486><:X8,17;Index "@Begins" #>Determines whether a particular substring is stored at the beginning of another string.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@Begins(<-!><+">string <-"><+!>;<-!><+"> substring <-"><+!>)<-!><-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. Any string.<-"><-"><-">

<:#200,8486><+">substring<-">

@1st lev para@<:#200,8486><-">Text. The string you want to search for at the beginning of <+">string.<-"><-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. Returns 1 (TRUE) if <+">substring <-">is contained within 
<+">string<-">, beginning from the first letter; returns 0 (FALSE) if not.<-"><-"><-"><-">

@Chead@<:#200,8486>Usage

<:#200,8486>This function is case</m>sensitive.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Begins(<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>Hi There<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Hi<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>
)<:f,,> returns <:f180,QCourier New,0,0,0>1<:f,,><-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Begins(<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Hi There<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>hi<:f><:f180,QCourier New,0,0,0>
"<:f><:f180,QCourier New,0,0,0>)<:f,,> returns <:f180,QCourier New,0,0,0><-!>0<:f,,><-!>. 

<:#600,8486><:f180,QCourier New,0,0,0>@If(@Begins(Topic;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>All desks memo<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>);<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Junk Mail<:f><:f180,QCourier New,0,0,0>
"<:f><:f180,QCourier New,0,0,0>; <:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Read this first<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>)<:f,,> checks the field named Topic; if that field begins with the string 
</S><:f><:f,,>All desks memo</T><:f><:f,,>, returns the string <:f,QCourier New,>Junk Mail<:f,,>; otherwise returns the string 
<:f><:f180,QCourier New,0,0,0>Read this first<:f,,>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Char

<:#200,8486><:X8,18;Index "@Char" #><:f,,>Converts an IBM Code Page 850 code <:f180, Helvetica,0,0,0>number<:f,,> into the corresponding one</m>character string.<:f>

@Chead@<:#200,8486><-!>Syntax

<:#200,8486><+!>@Char(<-!><+"> codePageNumber <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><-!><+">codePageNumber

@1st lev para@<:#400,8486>Number. Any numeric argument between 0 and 255. Non</m>integer numbers are truncated to integers before translation.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">correspondingChar<-">

@1st lev para@<:#200,8486><-">Text. A single character that corresponds to <+">codePageNumber.<-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Char(65)<:f,,> returns <:f180,QCourier New,0,0,0>A<:f,,><-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Char(97)<:f,,> returns <:f180,QCourier New,0,0,0>a<:f,,><-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Char(56)<:f,,> returns <:f180,QCourier New,0,0,0>8<:f,,><-!>. 

<:#600,8486><:f180,QCourier New,0,0,0>@If(@IsAvailable(QuestionnaireNumber);@Char(QuestionnaireNumber);"")<:f,,> returns the character in the field named QuestionnaireNumber if that field is currently filled in; otherwise, returns a null string.

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Command

<:#400,8486><:X8,18;Index "@Command" #><:f,,>Executes a Notes command. All of the standard menu commands can be executed using @Command. In addition, a number of specialized commands are available.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@Command( <[><-!><+">command<-"><+!>] ; <-!><+">parameters<-"><+!> )<-!><:f,,><-!>

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Contains

<:#200,8486><-!><:X8,18;Index "@Contains" #>Determines whether substring is stored anywhere within string.<-!>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Contains( <-!><+">string <-"><+!>; <-!><+">substring <-"><+!>)<-!><-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to search.<-">

<:#200,8486><+">substring<-">

@1st lev para@<:#200,8486><-">Text or text-list. The string you want to search for in <+">string.<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486><-">Boolean. <:f,,>Returns 1 (TRUE) if <:f180, Helvetica,0,0,0>substring<:f,,> is contained within 
<:f180, Helvetica,0,0,0>string<:f,,>; otherwise returns 0 (FALSE). 
<:f><-"><-"><-">

@Chead@<:#200,8486>Usage

<:#200,8486>This function is case sensitive; use field names or strings enclosed in quotation marks as arguments.

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Contains("Hi There";"Th")<:f,,> returns 
<:f180,QCourier New,0,0,0><-!>1<:f,,><-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@If(@Contains(Topic;"I want":"I need":"I must have");"Polite refusal     needed";"Don</R>t delay response")<:f>

<:#600,8486>Checks the field named Topic to see if it contains the phrases </S>I want</T>, 
</S>I need</T>, or </S>I must have</T>; if any of the phrases is contained in the Topic field, the string 
<:f180,QCourier New,0,0,0>Polite refusal needed<-!><:f,,> is returned, otherwise the string 
<:f><:f180,QCourier New,0,0,0>Don</R><:f180,QCourier New,0,0,0>t delay response<-!><:f,,> is returned.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Begins

@Crossref@<:#200,8486>@Ends

@Crossref@<:#200,8486>@Left

@Crossref@<:#200,8486>@LeftBack

@Crossref@<:#200,8486>@Middle

@Crossref@<:#200,8486>@MiddleBack

@Crossref@<:#200,8486>@Right

@Crossref@<:#200,8486>@RightBack

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@Cos<:X8,19;Index "@Cos" #>

<:#400,8486>Calculates the cosine of an angle. The cosine is the ratio of the side adjacent an acute angle of a right triangle to the hypotenuse.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Cos( <-!><+">angle <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">angle<-">

@1st lev para@<:#200,8486>Number. An angle measured in radians.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">cosine<-">

@1st lev para@<:#200,8486>Number. The cosine of <+">angle<-">, from -1 to 1.

@Chead@<:#200,8486>Examples

<:#200,8486>1. This formula returns 0, the cosine of angle Pi/2 (90 degrees).

@Mono@<:#200,8486>@Cos( @Pi/2 )

<:#400,8486>2. Suppose you have a triangle ABC. You know the value of angle C in radians, and the lengths of sides a and b. This formula finds the length of side c.

@Mono@<:#400,8486>@Sqrt( @Power( sideA; 2 )+@Power( sideB; 2 )-( 2*sideA*sideB*( @Cos( angleC ) ) ))

<:#400,8486>This formula is a version of the law of cosines, which states that for any triangle ABC, c<+&>2<-&> = a<+&>2<-&>+b<+&>2<-&>-2abcosC.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Acos

@Crossref@<:#200,8486>@Sin

@Crossref@<:#200,8486>@Tan

@Crossref@<:#200,8486>@Pi

<:#200,8486>

@Bhead title@<:#220,8486>@Created

<:#200,8486><-!><:X8,20;Index "@Created" #><:f,,>Returns the time</m>date when the document was created.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@Created<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">dateCreated<-">

@1st lev para@<:#200,8486><-">Time-date. The date the current document was created.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@Created differs from @Now in that @Created returns a time</m>date value that remains constant, while @Now returns a dynamic time</m>date that changes with each formula evaluation when it is used in a computed field.

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Created<:f,,> returns <:f180,QCourier New,0,0,0>2/15/93 1:01:00 PM<:f,,><-!> for a document created February 15, 1993 at 1:01 P.M. 

<:#400,8486><:f180,QCourier New,0,0,0>@Adjust(@Created;1;4;0;0;0;0)<:f,,> returns 
<:f180,QCourier New,0,0,0>8/4/93 3:10:00 PM<:f,,><-!> for a document created April 4, 1992 at 3:10 P.M.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@Accessed

@Crossref@<:#200,8486>@Modified

<:#200,8486>

@Bhead title@<:#220,8486>@Date

<:#200,8486><:X8,20;Index "@Date" #><:f,,>Translates numbers for the various components of time and date; then returns the time</m>date value.<:f>

@Chead@<:#200,8486>Syntax

<:#600,8486><+!>@Date( <-!><+">year <-"><+!>; <-!><+">month <-"><+!>; <-!><+">day 
<-"><+!>)<-!><+!><**>@Date( <-!><+">year <-"><+!>; <-!><+">month <-"><+!>; 
<-!><+">day <-"><+!>; <-!><+">hour <-"><+!>; <-!><+">minute <-"><+!>; 
<-!><+">second <-"><+!>)<-!><+!><-"><**>@Date( <[><-!><+">time-date<-"><+!>] )<-!><-"><-"><-"><-"><-"><-"><-"><-"><-"><-">

@Chead@<:#200,8486>Parameters

<:#200,8486><+">year<-">

@1st lev para@<:#200,8486>Number. The year you want to appear in the resulting date.

<:#200,8486><+">month<-">

@1st lev para@<:#200,8486>Number. The month you want to appear in the resulting date.

<:#200,8486><+">day<-">

@1st lev para@<:#200,8486>Number. The day you want to appear in the resulting date.

<:#200,8486><+">hour<-">

@1st lev para@<:#200,8486>Number. The number of hours. This value will be truncated from the resulting date.

<:#200,8486><+">minute<-">

@1st lev para@<:#200,8486>Number. The number of minutes. This value will be truncated from the resulting date.

<:#200,8486><+">second<-">

@1st lev para@<:#200,8486>Number. The number of seconds. This value will be truncated from the resulting date.

<:#200,8486><+">time-date

@1st lev para@<:#600,8486><-">Time-date. This is a special use of the function. With a time</m>date value as the argument, @Date removes the time portion of the value, leaving only the date. Enclose the time</m>date value in square brackets, for example <[>10/31/93 12:00:00].<-"><-">
<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">truncatedTimeDate<-">

@1st lev para@<:#400,8486><-">Time-date. The date corresponding to the parameters you sent to @Date, minus any time components.<-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Date(1993;11;20)<:f,,> returns <:f><+!>11/20/93<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Date(1993;01;20;8;58;12)<:f,,> returns 
<:f><+!>1/20/93<-!><:f,,>.

<:#200,8486><:f180,QCourier New,0,0,0>@Date(<[>11/20/93 8:58:12])<:f,,> returns 
<:f><+!>11/20/93<-!><:f,,>.

<:#400,8486><:f180,QCourier New,0,0,0>@Date(ResponseDate)<:f,,> returns <:f><+!>7/14/93<-!><:f,,> if the time</m>date value in the field named ResponseDate is 7/14/93 2:23:30 P.M.

@Bhead title@<:#220,8486>

@Bhead title@<:#220,8486>@Day

<:#200,8486><:X8,21;Index "@Day" #><:f,,>Extracts the day of the month from the specified date.<:f>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Day(<-!><+"> <-"><-%><+">timeDateValue<-"><+"> <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">timeDateValue<+!><-">

@1st lev para@<:#200,8486>Time-date. The date containing the day value you want to extract.

@Chead@<:#200,8486><:f,,>Return Value

<:#200,8486><:f,,><+"><-!>dayOfMonth<-">

@1st lev para@<:#200,8486><:f,,><-!>Number. The number corresponding to the day of the month indicated by 
<+">timeDateValue.<-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Day(@Now) <:f,,>returns <:f><+!>15<-!> 
<:f,,>if today is July 15 or August 15 or September 15, and so on. 

<:#800,8486><:f180,QCourier New,0,0,0>@If(@Day(PaymentReceived)<<16;"Payment received on or before the 15th";"Payment received after the 15th")<:f,,> returns the string 
<:f><+!>Payment received on or before the 15th<-!> if the PaymentReceived field is filled in on or before the 15th of the month; otherwise it returns the string 
<+!>Payment received after the 15th<-!>.

@See also hlp@<:#270,8486>See related topics

@Crossref@<:#200,8486><+)>@Hour<-)>

@Crossref@<:#200,8486><+)>@Minute<-)>

@Crossref@<:#200,8486><+)>@Month<-)>

@Crossref@<:#200,8486><+)>@Second<-)>

@Crossref@<:#200,8486><+)>@Year<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@DbColumn with Notes databases

<:#400,8486><:X8,22;Index "@DbColumn" # "Notes databases"><:f,,>Looks up and returns an entire column of values from a view in either the active database or another Notes database.

@Chead@<:#200,8486><:f,,>Syntax

<:#200,8486><+!>@DbColumn(<-!><+!> <-!><+">class<-"><+!> :<-!><+!> "<-!><+!>NoCache<-!><+!>"<-!><+!> ;<-!><+!> 
<-!><+">server<-"><+!> :<-!><+!> <-!><+">database<-"><+!> ;<-!><+!> 
<-!><+">view<-"><+!> ;<-!><+"> columnNumber <-"><+!>)<-!><-!><-!><-!><-!><-!><-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">class<-">

@1st lev para@<:#400,8486><-">Text. Indicates what type of database you are accessing. You can indicate a Notes database with either 
</S></T> or </S>Notes</T>.<-">

<:#200,8486><+!>"NoCache"<-!>

@1st lev para@<:#1000,8486>Keyword. Optional. If you exclude "NoCache", the results of the lookup are cached, that is, they are stored for re</m>use. Each subsequent lookup to the same location (within the same Notes session and so long as the database executing this lookup remains o
pen) will simply re</m>use that information. If you want to ensure that Notes retrieves the latest information for every lookup, specify this option, using a colon after the class argument, as in 
</S>Notes</T>:</S>NoCache</T>.

@1st lev para@<:#400,8486>If you omit </S>NoCache</T>, you do not have to replace it with anything</W>the lookup results are cached automatically. See "Specifying NoCache," below.

<:#200,8486><+">server <+!><-">: <-!><+">database<-">

@1st lev para@<:#400,8486>Text-list. <:f,,>The server location and file name of the database. See "Specifying the server and database," below.

<:#200,8486><:f,,><-"><+">view<-"><-">

@1st lev para@<:#800,8486>Text. The name of the view in which to search. The view name must exactly match the view</R>s full name as specified in the Design View Attributes dialog box (you can omit any synonyms). If the view cascades from another name on the menu, include that name,
 too. See "Specifying the view name," below.

<:#200,8486><+">columnNumber<-">

@1st lev para@<:#600,8486>Number. The column number within the view. Because Notes looks up information in the view based on column numbers, you can only retrieve data that actually appears in the view. See "Specifying the column number," below.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">valuesFound<-">

@1st lev para@<:#400,8486><-">Text or text-list. The values found in the view column that you indicated. See "Accessing the values found," below.<-"><-"><-">

@Chead@<:#200,8486>Specifying "NoCache"

<:#800,8486>The decision to use </S>NoCache</T> is based on performance issues. On one hand, forcing Notes to connect to the database and retrieve the same information again and again takes time, and slows your overall performance. On the other hand, if you expect that
 data to be changing on a frequent basis, it</R>s worth the extra time to make sure you</R>re getting up</m>to</m>date information.

<:#800,8486>For example, if you</R>re using lookups to a database that stores customer addresses, it</R>s generally safe to use caching because you don</R>t expect the addresses to change very often. But if you</R>re using a lookup to a database where stock prices are 
stored, and that database gets updated hourly, it</R>s safer to skip the caching and force a new lookup each time.

@Chead@<:#200,8486>Specifying the server and database

<:#200,8486><:f,,>There are several ways to specify <:f><:f,,>the <+">server <+!><-">: 
<-!><+">database <-">parameter:

@Bullet@<:#400,8486>To perform the lookup on the current database (the same database in which the formula is being evaluated), simply specify 
</S></T> as the entire argument to the function.

@Bullet@<:#400,8486>To perform a lookup on a local database, use </S></T> for the server name and specify the database name explicitly, such as 
</S></T>:</S>DATABASE.NSF</T>.

@Bullet@<:#400,8486>To perform a lookup (from the workstation) on a Notes database that resides on a server, include the server plus the path and file name as a text list, as in 
</S>SERVER</T>:</S>DATABASE.NSF</T>.

@Bullet@<:#600,8486>To perform the lookup (from a background macro) on a database that is located on the same server or workstation as the database containing the formula, use 
</S></T> for the server name and specify the database name explicitly, such as 
</S></T>:</S>DATABASE.NSF</T>.

@Bullet@<:#1400,8486>If there are multiple copies of the database, located on various Notes servers, using the database</R>s replica ID in place of both the server and database name lets you access any replica copy of that database without having to specify either the server na
me or the database name. For example, if you use </S>85255CEB:0032AC04</T><:f,,> (a database</R><:f><:f,,>s replica ID, found in the File Database Information Replication dialog box) as the database name, Notes searches first the local workspace, then the c
urrent server, then the remaining servers in your domain, and uses the first database it finds with the same replica ID.

@Tip@<:#400,8486>To avoid typing errors in the replica ID, choose Design </m> Synopsis and select Replication Information. Then copy the replica ID from the synopsis and paste it into your formula.

@Note@<:#600,8486>If your database is located in a DOS or OS/2 subdirectory, such as MAIL\MINE.NSF, put a double backslash between the directory and the database name, as in 
</S>MAIL\\MINE.NSF</T> because formulas treat backslashes as </S>quote</T> characters.

@Chead@<:#200,8486>Specifying a view

<:#600,8486>You can specify a view parameter using either the full name of the view or its synonym. For example, if your Last Name view is cascaded from By Author in the View menu, and has the synonym |LName, it looks like this in the View Attributes dialog box:

@Mono@<:#200,8486>By Author\Last Name|LName

<:#400,8486><:f,,>When you reference this view with @DbColumn, you can just use the LName synonym, enclosed in quotation marks:

@Mono@<:#200,8486>"LName"

<:#600,8486>If the view name didn</R>t have a synonym, you</R>d use the By Author name plus the Last Name cascade, again enclosed in quotation marks (but without the synonym). And since the view name is used in a formula, the 
</S>\</T> must be preceded with an additional </S>\</T> to ensure that Notes interprets it correctly:

@Mono@<:#200,8486><-!>"By Author\\Last Name"<-!><-!>

@Chead@<:#200,8486>Specifying the column number

<:#600,8486>To specify a columnNumber parameter, you count the view's columns from left to right. Normally, a view</R>s columns are numbered from left to right, with the leftmost column being column number 1. But because of the way Notes indexes views, not every column
 is counted for the lookup.

<:#400,8486>For example, if a view contains four columns and you want to perform a lookup on the last, or rightmost column, you perceive it as column number 4</W>but Notes may not.

<:#200,8486>Use this method to calculate the column</R>s number for lookup purposes:

@Numbered list@<:#600,8486>Count the columns in the view, from left to right. Be sure you don</R>t miss any columns, for example, a column used for sorting or categorizing the view may not show up. Look at the view in design mode to make sure you see all its columns.

@Numbered list@<:#600,8486>Discount all columns that display a constant value, such as 32 or 
</S>Submitted by:</T>. If a column contains a formula that happens to return the same result for every document, it is not considered a 
</T>constant</S> so be sure to include it in your column count.

@Numbered list@<:#600,8486>Discount all columns that consist solely of the following @functions: @DocChildren, @DocDescendants, @DocLevel, @DocNumber, @DocParentNumber, @DocSiblings, @IsCategory, @IsExpandable.

@Numbered list@<:#200,8486>Now re</m>count the columns, working from left to right.

<:#200,8486>This revised column number is the value to specify in the lookup formula.

<:#200,8486>If you specify a non</m>existent column, Notes won</R>t flag it as an error--it will simply return a null value.

@Chead@<:#200,8486>Accessing the return values

<:#400,8486>If multiple values are returned by @DbColumn, they are formatted as a list and are separated with the multi</m>value separator designated for the current field in the Design Field Separators dialog box.

<:#400,8486>@@DbColumn can return no more than 55K bytes of data. Use the following equations to determine how much of your data can be returned using @DbColumn.

<:#200,8486>For lookups that return text:

<:#200,8486>2 + (2 * number of entries returned) + total text size of all entries

<:#200,8486>For lookups that return numbers or dates:

<:#200,8486>(10 number of entries returned) + 6

@Chead@<:#200,8486><:f,,>Usage<:f>

<:#600,8486>@@DbColumn is intended mainly for use with keyword formulas. Instead of hard</m>coding a list of keywords and then periodically updating that list by re</m>editing the form containing the keyword field, @DbColumn lets you dynamically retrieve a list of value
s from a database view or table.

<:#800,8486>You can use @DbColumn in fields, buttons, SmartIcons, PopUps, and in any type of macro except mail macros. (If a database contains a mail/paste macro that uses @DbColumn, it will execute only when a document is pasted into the database, not when a document 
is mailed into the database.) Note that @DbColumn is also NOT for use in column or selection formulas and selective replication formulas.

@Chead title@<:#200,8486>Users per server

<:#600,8486>Whenever Notes executes a formula using @DbColumn or @DbLookup, it opens an additional session for the user on the server. Therefore, the number of users that a server can support is reduced when a database on that server uses @DbColumn or @DbLookup.

@Chead@<:#200,8486>Server agents and security

<:#400,8486>Consider the database containing @DbColumn the <+!>source<-!> database, and the database being accessed the 
<+!>target<-!> database.

<:#600,8486>When @DbColumn is used in a scheduled agent, it can only access target databases stored on the same workstation or server as the source database. The source database must have at least Reader access to the target database.

<:#400,8486>If it is not possible to assign Reader access or better to the </m>Default</m> group for security reasons, it is still possible to grant the source database</R>s @DbColumn macros access to the target database.

@Numbered list@<:#400,8486>Use the Database InfoBox to determine the Replica ID of the source database, which will look something like this: 85255CEB:0032AC04.

@Numbered list@<:#1000,8486>Add a new entry to the target database's ACL, whose name is the Replica ID itself, and give that name at least Reader access. In the above example, you</R>d add an entry with the name 85255CEB:0032AC04.<**>By doing this, you</R>re specifically granting the 
macros in the source database access to the target database, even if 
</m>Default</m> has No Access.

@Chead@<:#200,8486>Other agents and security

<:#600,8486>When @DbColumn is used in any other type of formula or agent, it has unlimited access to any target database stored on the user</R>s own workstation. If the target database is stored on another Notes server, @DbColumn</R>s access is determined by the user</R>
s own access level (based on the user's Notes ID).

<:#400,8486>@@DbColumn is not subject to the Read Access list on a view; so long as it has Reader access to the target database, it can retrieve data from all shared views.

@Chead@<:#200,8486>Examples

<:#400,8486>1. Suppose you want your Sales Projections database to include a form with a ProductID field, and you want this field to be formatted as a keyword list.

<:#400,8486>You already have a Product Planning database that contains the product IDs, descriptions, and development schedules for all your planned products; they</R>re displayed in a view called 
</S>By Product.</T>

@Book art@<:#200,8486><[>art]

<:#400,8486>If you didn</R>t have the @DbColumn function and wanted product IDs available as keywords, you would have to figure out how to get the list from the Product Planning database to the ProductID Field InfoBox.

<:#800,8486>You would probably have to print the view displaying the list of product IDs in the Product Planning database. Then you</R>d create the ProductID field in a form within the Sales Projections database, and designate it a Keywords field. You</R>d manually typ
e the list of product IDs, being careful to avoid typing errors, and making sure you didn</R>t miss any IDs.

@Book art@<:#200,8486><[>art]

<:#1000,8486>After you created your keyword list of product IDs, you</R>d proofread it, making sure it was correct and up</m>to</m>date. But what would happen when the list of products in the Product Planning database was updated? You</R>d have to pay close attention to
 that database and make sure you were aware of any additions (or deletions, for that matter), so you could update your keyword list accordingly. If your product base was expanding, this could be a lot of work.

<:#800,8486>If, instead of hard</m>coding your keyword list, you use the @DbColumn function in conjunction with Keyword Formulas, you can maintain the form</R>s list of product IDs automatically. This ensures that the current, up</m>to</m>date list of product IDs is av
ailable to anyone who creates a new document or modifies an existing one.

<:#600,8486>To create the keyword formula, select Use Formula for Choices <:f,,>in the Basics tab of the ProductID Field InfoBox<:f><:f,,>. Then, instead of typing in a list of product IDs, enter a formula that uses @DbColumn to retrieve the current list from the Produ
ct Planning database:

@Book art@<:#200,8486><[>art]

<:#1000,8486>In this case, the @DbColumn function opens a copy of the Notes database called 
</S>PRODPLAN.NSF</T> located on the same server as the Sales Projections database. Within PRODPLAN.NSF, there is a view called 
</S>By Product</T> whose first column is the list of product IDs. @DbColumn obtains the list of product IDs by loading the entire contents of the view</R>s first column, and then displays it in the keyword field using the selected interface (such as a radio
 button or checkbox).

@Book art@<:#200,8486><[>art]

<:#1000,8486>Now, let</R>s get a bit fancier. Assume that the product IDs are obscure, internal identifiers such as 
</S>ID1234.</T> While these identifiers are great for tracking, cross</m>referencing, and filing, it</R>s hard to know which products they represent. So, expanding upon the example above, let</R>s say that while you want to store these obscure product IDs i
n the Sales Projections database, you</R>d like to display a friendlier product description in the keywords field when prompting the user with the form. 

<:#1200,8486>You can do this if the Product Planning database PRODPLAN.NSF (the one that had product IDs in the first column) also contains friendly product descriptions, for example, in the second column. You can make these descriptions available within the form by usi
ng the </S>Keyword Synonyms</T> feature of keyword fields. Keyword synonyms work as follows: If any given keyword is found to contain a vertical</m>bar character 
</S>|</T><:f,,>, the text to the right of the vertical bar is what</R><:f><:f,,>s stored in the database, and the text to the left of the vertical bar is what</R><:f><:f,,>s displayed to the user of the form.

@Book art@<:#200,8486><[>art]

<:#600,8486>This formula concatenates the second column, with the friendly descriptions, to the first column, which contains the product IDs, so the user sees things that he or she understands, but the internal product ID codes will still be stored in the database.

@Book art@<:#200,8486><[>art]

<:#800,8486><:f,,>2. Here we use @DbColumn <:f><:f,,>in a keyword formula. Whenever a document is composed using the form, Notes retrieves the list of product names stored in column 2 of the Inventory On Hand view of the Inventory database (INVENTRY.NSF). This lookup i
s used in a purchase requisitions application to retrieve a fairly current list of products in available inventory.<:f>

<:#200,8486><:f180,QCourier New,0,0,0>@DbColumn(""<:f180,QCourier New,0,0,0>;""<:f180,QCourier New,0,0,0>:<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>INVENTRY.NSF<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>;<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>
Inventory On Hand<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>;2)<:f>

@See also hlp@<:#270,8486>See related topics

@Crossref@<:#200,8486>@DbLookup

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@DbColumn (ODBC)

<:#800,8486>Given data source information from the ODBC.INI file, uses this information to activate the appropriate ODBC driver. The driver then locates the specified DBMS, table and column, and returns all values in that column. You can optionally specify whether the 
returned list of values is sorted, whether duplicate values are deleted and how null values are handled.

@Note@<:#200,8486> @DbColumn can only retrieve data; it can't add, delete, or modify data.

@Chead@<:#200,8486><+!>Syntax

<:#400,8486><+!>@DbColumn( </S><-!><+!>ODBC<-!><+!></T><-!><+!> : </S><-!><+!>NoCache</T><-!><+!> ;<-!><+!> 
</S><-!><+">data_source<-"><+!></T> <-!><+!> ; </S><-!><+">user_ID1<-"><+!></T><-!><+!> : 
</S><-!><+">user_ID2<-"><+!></T><-!><+!> ;<-!> "<+">password1<-">"<+!> : 
<-!>"<+">password2<-">"<+!> ;<-!><+!> <-!><+!></S><-!><+">table<-"><+!></T><-!><+!> ; 
</S><-!><+">column<-"><+!></T><-!><+!> : </S><-!><+">null_handling<-"><+!></T> ;<-!><+!> 
</S><-!><+!>Distinct<-!><+!></T> <-!><+!> : </S><-!><+">sort<-"><+!></T><-!><+!> 
<-!><+!>)<-!>

@Chead@<:#200,8486><-!><-#><-!><-#>Parameters

<:#200,8486><-!><-#><+!>"ODBC"<-!><-#>

@1st lev para@<:#200,8486>Keyword. Required. Indicates that you are accessing an ODBC data source.

<:#200,8486><+!>"NoCache<-!>"

@1st lev para@<:#1000,8486>Keyword. Optional. If you want to ensure that Notes retrieves the latest information for every lookup, specify this option, as in 
</S>ODBC</T>:</S>NoCache</T>. Omit NoCache i you want the results of the lookup to be 
<+">cached<-">, that is, stored for re-use. Each subsequent lookup to the same location (within the same Notes session and so long as the database executing this lookup remains open) will simply re</m>use that information.

@1st lev para@<:#400,8486>If you omit </S>NoCache</T>, you do not have to replace it with anything</W>the lookup results are cached automatically, but you may specify "Cache" for readability.

@See also prnt@<:#200,8486>See Specifying NoCache, below.

<:#200,8486><+"><-#>"data_source<-"><-!><-">"

@1st lev para@<:#400,8486>Text. The name of the external data source being accessed. A data source indicates the location of one or more database tables.

@See also prnt@<:#200,8486>See Specifying the data source, below.

<:#200,8486><+">"user_ID1<-"> : <+">user_ID2<-">"

@1st lev para@<:#600,8486>Text-list. The user IDs needed to connect to the external database. You may need up to two IDs, depending on the DBMS being accessed. Often, the first ID is for the driver, and the second one is for the target database. 

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486><+">"password1" :<-"><+"> "<-"><+">password2"

@1st lev para@<:#200,8486>Text-list. The passwords required by the user IDs.

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486><+">"table<-">"

@1st lev para@<:#200,8486>Text. The name of the database table being accessed.

<:#200,8486><+">"column"

@1st lev para@<:#200,8486>Text. The name of the column from which data is being retrieved.

<:#200,8486><+">"null_handling<-">"

@1st lev para@<:#200,8486>Text. Specifies how null values are treated when the data is retrieved. 

@See also prnt@<:#200,8486>See Specifying null handling, below.

<:#200,8486><+!>"Distinct"<-!>

@1st lev para@<:#200,8486>Keyword. Optional. Removes duplicate values from the list before returning data to Notes. 

@See also prnt@<:#200,8486>See Specifying Distinct, below.

<:#200,8486><+">"sort<-">"

@1st lev para@<:#400,8486>Text, number, date-time, or a list of these. Sorts the list of values into either ascending or descending order before it is returned to Notes.

@See also prnt@<:#200,8486>See Specifying sort, below.

@Chead@<:#200,8486><-"><-">Return Value

<:#200,8486><+">valuesFound<-">

@1st lev para@<:#200,8486><-">Text, number, date-time, or a list of these types. The values found in the 
<+">column <-">you indicated. 

@See also prnt@<:#200,8486>See Accessing the values found, below.<-">

@Chead@<:#200,8486>Specifying NoCache

<:#800,8486>The decision to use </S>NoCache</T> is based on performance. Forcing Notes to connect to the database and retrieve the same information repeatedly takes time, and slows overall performance. Otherwise, if you expect that data to be changing on a frequent bas
is, it's worth the extra time to get up</m>to</m>date information.

<:#800,8486>For example, if you</R>re using lookups to a database that stores customer addresses, it</R>s generally safe to use caching because you don</R>t expect the addresses to change very often. But if you</R>re using a lookup to a database where stock prices are 
stored, and that database gets updated hourly, it</R>s safer to omit caching and force a new lookup each time.

@Indnt note@<:#800,8486>If you use the Radio button or the Checkbox user interface for a keywords field, Notes updates the keyword list only when the document is composed or is loaded for editing. If you use the Standard user interface for the list, the keyword list is additionall
y updated every time the document is recalculated.

<:#600,8486>Using </S>NoCache</T> has no effect on how often the field gets updated. It only determines whether the lookup itself is reactivated or the previously retrieved information is re</m>used when the field does get updated.

@Chead@<:#200,8486>Specifying the data source

<:#200,8486>The data source name can contain up to 30 alphanumeric characters.

<:#600,8486>@@DbColumn can access data sources that have already been registered in the ODBC.INI file. It can also autoregister a data source not present in ODBC.INI, if enough connection information about the data source is provided in the parameter list.

@Chead@<:#200,8486>Specifying IDs and passwords

<:#200,8486>You'll only need these arguments if your DBMS requires them.

<:#1000,8486>Instead of storing the IDs in the @DbColumn formula, you can replace them with null strings (""). Then, if an ID is required, the user will be prompted for it. This is useful when you do not want other designers to see the IDs, or when you want users to ent
er their own IDs when accessing external data. However, you must include IDs and passwords in formulas that run automatically (e.g., agents??) because they don't prompt for information.

<:#1000,8486>The user IDs and passwords for accessing a data source are required only once per Notes database session. If your database contains multiple formulas that access the same data source, the user will only be prompted once for the user IDs and passwords as lon
g as that database remains open. If the user opens another Notes database and executes a formula that accesses the same data source, the user ID and password will be required again.

<:#600,8486>Password parameters are necessary only when ID parameters are specified. Like the IDs, the passwords can either be stored in the @DbColumn formula, or prompted for by substituting the null string. If the database password is null, you can omit it from the f
ormula.

<:#200,8486>For example, for the full ID/password specification, enter:

@Bullet@<:#400,8486>"";"" (two null strings, separated by a semi-colon) to specify no ID and password, or to prompt for both

@Bullet@<:#200,8486> "user_ID1":"password1" to specify one user ID and password combination

@Bullet@<:#200,8486>"user_ID1":"user_ID2";"password1":"password2"  to specify two user ID and password combinations

<:#400,8486>(??Is there ever a time where the user might specify the first ID/password, but prompt for the second one?)

@Chead@<:#200,8486>Specifying the table name

<:#600,8486>You can optionally include the name of the table's owner to remove ambiguity; use the format "owner_name. table_name", with a period to separate the owner name from the table name. For example:

@Mono@<:#200,8486>"dbo.author"

<:#200,8486><+">Table<-"> can also refer to a database view in the DBMS being accessed.

@Chead@<:#200,8486>Specifying null handling

<:#600,8486>Normally, a null text value is represented with the null string ("") when the column is returned to Notes; for numbers and dates, the null values are ignored and the resulting list is shortened (same as using the Discard option described below).

<:#400,8486>To control how null values are handled, specify one of the following, appended to the 
<+">column<-"> parameter with a colon:

@Bullet@<:#200,8486>"Fail"  Generates this error message if the column of data contains any null values:

@Mono@<:#200,8486>	Null balues found - cancelling @Db function

@1st lev para@<:#200,8486>No data is returned with the message.

@Bullet@<:#600,8486>"Discard" Discards the null values, thus shortening the returned list of values. If one or more values are discarded when the @DbColumn formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL values discarded from @Db list.

@Bullet@<:#600,8486>"<+">Replacement value<-">" Value that you specify to be used instead of null values. The replacement value must be a quoted string, but if the column is numeric or date-time, the string must be convertible to that type.

@1st lev para@<:#1200,8486>If your formula includes a sort keyword, the list of values to be returned is sorted 
<+">before<-"> the replacement values are inserted. During sorting, all null values are placed at the beginning of the list for an ascending sort; and at the end for a descending sort. They are not replaced until sorting is complete. This can result in a li
st that has some values sorted incorrectly. For example, if you specify "zzz" as your replacement value, all the "zz" values will appear at the beginning of the list, even if you sorted it in ascending order.

@1st lev para@<:#400,8486>If one or more values are replaced when the @DbColumn formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL value replaced with user-defined value in @Db list

@1st lev para@<:#600,8486>Generally, the replacement value should be one that is not likely to appear in the list as valid data; for example, if the column is text, your replacement value might be "***" so you can easily find those values in Notes.

@Chead@<:#200,8486>Specifying Distinct

<:#600,8486>The Distinct keyword is similar to the @Unique function in Notes, except that Distinct ensures that duplicate values are removed 
<+">before<-"> the data is returned to Notes. Using Distinct instead of @Unique has two advantages:

@Bullet@<:#200,8486>The formula operates more quickly because  the additional work is performed outside of Notes.

@Bullet@<:#400,8486>You can potentially retrieve a larger amount of useful data into Notes--since the duplicate values are removed at the back-end, more unique values can be returned to Notes.

@Note@<:#400,8486>Distinct may not be supported by all ODBC drivers. If there are null values in the data and you specify Distinct, one null is usually returned.

@Chead@<:#200,8486>Specifying sort

<:#400,8486>If you use the Distinct keyword, append the <+">sort<-"> parameter to it with a colon. Use one these keywords for the 
<+">sort<-"> parameter to specify sorting of the return values:

@Bullet@<:#200,8486>Ascending sorts the list in ascending order

@Bullet@<:#200,8486>Descending sorts the list in descending order

@Note@<:#600,8486>The <+">sort<-"> keywords are not supported by all ODBC drivers. If you attempt to use both Ascending and Descending in your formula, Notes displays an "Invalid argument" message.  If no sort keyword is specified, values are returned in arbitrary order.

@Chead@<:#200,8486>Accessing values found

<:#400,8486>If multiple values are returned, they are formatted as a list and are separated with the multi-value separator designated for the current field.

<:#400,8486>@@DbColumn can return no more than 55K bytes of data. Use the following equations to determine how much of your data can be returned with @DbColumn.

@Bullet@<:#200,8486>For lookups that return text:

@1st lev para@<:#200,8486>2 + (2 * number of entries returned) + total text size of all entries

@1st lev para@<:#200,8486>Each text string is limited to 511 bytes; if only one text string is returned, it is limited to 55K bytes.

@Bullet@<:#200,8486>For lookups that return numbers or dates:

@1st lev para@<:#200,8486>(10 * number of entries returned) + 6

<:#200,8486>If the user's NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>the @DbColumn formula will be disabled. The user will not see an error message, the formula will simply fail to execute. This applies to @DbColumn only when you use it with ODBC.

@Chead@<:#200,8486>Usage

<:#600,8486>@@DbColumn is intended mainly for use with keyword formulas. Instead of hard</m>coding a list of keywords and then periodically updating that list, @DbColumn lets you dynamically retrieve a list of values from an external database table.

<:#400,8486>For example, you can use @DbColumn to retrieve the complete list of colors in which your company</R>s uniforms are available. The data is stored in the inventory database like this:

@Table title@<:t0>

<:#200,8486>Use @DbColumn to retrieve the entire contents of the COLOR column (column 3):

@Mono@<:#200,8486><:f180,QCourier New,0,0,0>@DbColumn(<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>OBDC<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>INVENTORY<:f><:f180,QCourier New,0,0,0>"<:f>
<:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>
UNIFORMS<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Color<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>)<:f>

<:#400,8486>Values in the resulting list appear just as they were encountered in the database; they are not sorted and duplicate values are retained:

@Mono@<:#200,8486><:f180,QCourier New,0,0,0>Red:Green:Red:Yellow<:f>

@Chead@<:#200,8486>Examples

@Mono@<:#400,8486><:f,QCourier New,>@DbColumn("ODBC";<:f><:f,QCourier New,>"<:f><:f,QCourier New,>PUBLISHERS<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f><:f,QCourier New,>dbo<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f>
<:f,QCourier New,>vanilla<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f><:f,QCourier New,>dbo authors<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;   
<**>	<:f><:f,QCourier New,>"<:f><:f,QCourier New,>au_lname<:f><:f,QCourier New,>"<:f><:f,QCourier New,>:<:f><:f,QCourier New,>"<:f><:f,QCourier New,>Discard<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f><:f,QCourier New,>Ascending<:f>
<:f,QCourier New,>"<:f><:f,QCourier New,>)<:f>

<:#800,8486><:f,,>This example uses the sample <:f><:f,,></S><:f><:f,,>pubs<:f><:f,,></T><:f><:f,,> database that is included with Microsoft SQL Server. The formula uses the ODBC SQL Server driver to access the database, locate the table called 
<:f><:f,,></S><:f><:f,,>authors<:f><:f,,></T><:f><:f,,> that is owned by user 
<:f><:f,,></S><:f><:f,,>dbo<:f><:f,,></T><:f><:f,,>, and then retrieve the list of names in the 
<:f><:f,,></S><:f><:f,,>au_lname<:f><:f,,></T><:f><:f,,> column. The author names are sorted in ascending order; null values are discarded.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DbCommand (ODBC)

@Crossref@<:#200,8486>@DbLookup (ODBC)

<:#200,8486>

@Bhead title@<:#220,8486>@DbCommand (ODBC)

<:#200,8486>(??This command hasn't been completely spec'd out yet. This information is subject to change.)

<:#600,8486>Given data source information from the ODBC.INI file, uses this information to activate the appropriate ODBC driver. The driver then locates the specified DBMS, passes the specified command to it for processing, and returns the data retrieved by that comman
d.

@Note@<:#400,8486>@DbCommand only works with non-Notes databases. You can use it only to retrieve data; @DbCommand can't add, delete, or modify data.

@Chead@<:#200,8486><+!>Syntax

<:#400,8486><+!>@DbCommand( </S><-!>ODBC<+!></T><-!><+!> : </S><-!><+!>NoCache</T><-!><+!> ;<-!><+!> 
</S><-!><+">data_source<-"><+!></T> <-!><+!> ; </S><-!><+">user_ID1<-"><+!></T><-!><+!> : 
</S><-!><+">user_ID2<-"><+!></T><-!><+!> ;<-!> "<+">password1<-">"<+!> : 
<-!>"<+">password2<-">"<+!> ;<-!><+!> <-!><+!></S><-!><+">command_string<-"><+!></T><-!><+!> : 
</S><-!><+">null_handling<-"><+!></T> <-!><+!> <-!><+!>)<-!>

@Chead@<:#200,8486><-!><-#><-!><-#>Parameters

<:#200,8486><-!><-#><+!>"ODBC<-!><-#>"

@1st lev para@<:#200,8486>Keyword. Required. Indicates that you are accessing an ODBC data source.

<:#200,8486><+!>"NoCache<-!>"

@1st lev para@<:#800,8486>Keyword. Optional.  If you want to ensure that Notes retrieves the latest information for every lookup, specify this option, as in 
</S>ODBC</T>:</S>NoCache</T>. Omit "NoCache" if you want  the results of the lookup to be 
<+">cached<-">, that is, stored for re-use by each subsequent lookup to the same location (within the same Notes session and so long as the database executing this lookup remains open).

@1st lev para@<:#400,8486> If you omit </S>NoCache</T>, you do not have to replace it with anything</W>the lookup results are cached automatically, but you can specify "Cache" for readability.

@See also prnt@<:#200,8486>See Specifying NoCache, below.

<:#200,8486><-#>"<+">data_source<-"><-!><-">"<-!><-"><-#><-!><-"><-#>

@1st lev para@<:#400,8486>Text. The name of the external data source being accessed. A data source indicates the location of one or more database tables.

@See also prnt@<:#200,8486>See Specifying the data source, below.

<:#200,8486>"<+">user_ID1<-"> : <+">user_ID2<-">"

@1st lev para@<:#600,8486>Text-list. The user IDs needed to connect to the external database. You may need up to two IDs, depending on the DBMS being accessed. Often the first ID is for the driver, and the second is for the target database. 

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486>"<+">password1 :<-"><+"> password2<-">"

@1st lev para@<:#200,8486>Text-list. The passwords required by the user ID(s). 

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486>"<+">command_string<-">"

@1st lev para@<:#200,8486>Text. A SQL statement, command statement, or name of a procedure to be executed.

@See also prnt@<:#200,8486>See Specifiyng a command string, below.

<:#200,8486>"<+">null_handling<-">"

@1st lev para@<:#200,8486>Text. Specifies how null values are treated when the data is retrieved. 

@See also prnt@<:#200,8486>See Specifying null handling, below.

@Chead@<:#200,8486><-"><-">Return Value

<:#200,8486><+">valuesFound<-">

@1st lev para@<:#200,8486><-">Text, number, date-time, or a list of these types. The values returned by the 
<+">command_string<-">.

@See also prnt@<:#200,8486>See Accessing values found, below.<-">

@Chead@<:#200,8486>Specifying NoCache

<:#800,8486>The decision to use </S>NoCache</T> is based on performance issues. Forcing Notes to connect to the database and retrieve the same information repeatedly takes time, and slows overall performance. Otherwise, if you expect that data to be changing on a frequ
ent basis, it's worth the extra time to get up</m>to</m>date information.

<:#800,8486>For example, if you</R>re using lookups to a database that stores customer addresses, it</R>s generally safe to use caching because you don</R>t expect the addresses to change very often. But if you</R>re using a lookup to a database where stock prices are 
stored, and that database gets updated hourly, it</R>s safer to omit caching and force a new lookup each time.

@Indnt note@<:#800,8486>If you use the Radio button or the Checkbox user interface for a keywords field, Notes updates the keyword list only when the document is composed or is loaded for editing. If you use the Standard user interface for the list, the keyword list is additionall
y updated every time the document is recalculated.

@1st lev para@<:#600,8486>Using </S>NoCache</T> has no effect on how often the field gets updated. It only determines whether the lookup itself is reactivated or the previously retrieved information is re</m>used when the field does get updated.

@Chead@<:#200,8486>Specifying the data source

<:#200,8486>The data source name can contain up to 30 alphanumeric characters.

<:#1000,8486>@@DbCommand can only access data sources that have been registered in the ODBC.INI file. It can also 
<+#>autoregister<-#> a data source not present in ODBC.INI if enough connection information about the data source is provided in the parameter list. For example, if connecting to the data source requires an ID and password, they must be provided in the para
meter list for the data source to be properly autoregistered. (??Is this how it works? How about a better example?)

@Chead@<:#200,8486>Specifying IDs and passwords

<:#200,8486>You'll only need these arguments if your DBMS requires them.

<:#1000,8486>Instead of storing the IDs in the @DbCommand formula, you can replace them with null strings (""). Then, if an ID is required, the user will be prompted for it. This is useful when you do not want other designers to see the IDs, or when you want users to en
ter their own IDs when accessing external data. However, you must include IDs and passwords in formulas that will run automatically (e.g., agents??) because they don't prompt for information.

<:#1000,8486>The user IDs and passwords for accessing a data source are required only once per Notes database session. If your database contains multiple formulas that access the same data source, the user will only be prompted once for the user IDs and passwords as lon
g as that database remains open. If the user opens another Notes database and executes a formula that accesses the same data source, the user ID and password will be required again.

<:#600,8486>Password parameters are necessary only when ID parameters are specified. Like the IDs, the passwords can either be stored in the @DbColumn formula, or prompted for by substituting the null string. If the database password is null, you can omit it from the f
ormula.

<:#200,8486>For example, for the full ID/password specification, enter:

@Bullet@<:#400,8486>"";"" (two null strings, separated by a semi-colon) to specify no ID and password, or to prompt for both

@Bullet@<:#200,8486> "user_ID1":"password1" to specify one user ID and password combination

@Bullet@<:#200,8486>"user_ID1":"user_ID2";"password1":"password2"  to specify two user ID and password combinations

@Note@<:#400,8486>For complex connections, additional ID and password parameters may be required to connect to the data source.

@Chead@<:#200,8486>Specifying the command string

<:#200,8486>The "<+">command_string<-">" can be any of the following:

@Bullet@<:#200,8486>An SQL statement (it must use the SQL syntax accepted by the back-end DBMS).

@Bullet@<:#200,8486>A command statement using the back-end DBMS' own command language.

@Bullet@<:#400,8486>The name of a procedure stored within the back-end DBMS (the procedure contains one or more command strings that are activated when the procedure is called by @DbCommand).

@Chead@<:#200,8486>Specifying null handling

<:#600,8486>Normally, a null text value is represented with the null string ("") when the column is returned to Notes; for numbers and dates, the null values are ignored and the resulting list is shortened (same as using the Discard option described below).

<:#400,8486>To control how null values are handled, specify one of the following, appended to the 
<+">column<-"> parameter with a colon:

@Bullet@<:#200,8486>"Fail"  Generates this error message if the column of data contains any null values:

@Mono@<:#200,8486>Null values found - cancelling @Db function

@1st lev para@<:#200,8486>No data is returned with the message.

@Bullet@<:#600,8486>"Discard" Discards the null values, thus shortening the returned list of values. If one or more values are discarded when the @DbCommand formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL values discarded from @Db list.

@Bullet@<:#600,8486>"<+">Replacement value<-">" Value that you specify to be used instead of null values. The replacement value must be a quoted string, but if the column is numeric or date-time, the string must be convertible to that type.

@Bullet@<:#1200,8486>If your command string includes a sort keyword, the list of values to be returned is sorted 
<+">before<-"> the replacement values are inserted. During sorting, all null values are placed at the beginning of the lis for an ascending sort, or at the end for a descending sort. They are not replaced until sorting is complete. This can result in a list
 that has some values sorted incorrectly. For example, if you specify "zzz" as your replacement value, all the "zz" values will appear at the beginning of the list, even if you sorted it in ascending order.

@1st lev para@<:#400,8486>If one or more values are replaced when the @DbCommand formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL value replaced with user-defined value in @Db list

@1st lev para@<:#600,8486>Generally, the replacement value should be one that is not likely to appear in the list as valid data; for example, if the column is text, your replacement value might be "***" so you can easily find those values in Notes.

@Chead@<:#200,8486>Accessing values found

<:#600,8486>@@DbCommand can retrieve information from multiple columns, and assign these values to multiple fields in the Notes form (??This is a v4 enhancement-waiting for more information on implementation specifics.)

<:#400,8486>@@DbCommand can return no more than 55K bytes of data.(??Is this still true?)  Use the following equations to determine how much of your data can be returned with @DbCommand.

@Bullet@<:#200,8486>For lookups that return text:

@1st lev para@<:#200,8486>2 + (2 * number of entries returned) + total text size of all entries

@1st lev para@<:#200,8486>Each text string is limited to 511 bytes; if only one text string is returned, it is limited to 55K bytes.

@Bullet@<:#200,8486>For lookups that return numbers or dates:

@1st lev para@<:#200,8486>(10 * number of entries returned) + 6

<:#200,8486>If the user's NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>the @DbCommand formula will be disabled. The user will not see an error message, the formula will simply fail to execute. This applies to @DbCommand only when you use it with ODBC.

@Chead@<:#200,8486>Usage

<:#800,8486>Like @DbLookup, @DbCommand can retrieve data based upon a key value. But @DbLookup can only test for equality when selecting data to retrieve. If you want to test for a different relationship (such as less</m>than), or test multiple conditions at the same t
ime, you must pass a command to the back</m>end database for processing.

<:#200,8486>For example, you cannot use @DbLookup to return data from records where 

@Mono@<:#200,8486>BALANCE <;>= 1000.00 and DAYS_OVERDUE <;> 30.

<:#400,8486>But you can write the appropriate selection statement in SQL, and then use @DbCommand to pass that statement to the DBMS for processing; @DbCommand then returns the requested data.

<:#400,8486>(??Waiting for further information about the multiple column enhancements from Shirley. Here's a shot at it from her memo)

<:#400,8486>To assign multiple column information to multiple fields, issue the first @DbCommand according to syntax:

@Mono@<:#400,8486>@DbCommand ("ODBC";"datasourcename";"":"";"SELECT col1, col2, col3 from table where col1='value'")

<:#200,8486>Then issue subsequent calls to @DbCommand, specifying that result set and the column to retrieve:

@Mono@<:#200,8486>@DbCommand ("ODBC";"datasourcename";"":"";"ResultSet(<+">n<-">)")

<:#200,8486>where n is the ordinal column to retrieve.

<:#400,8486>You must always cache the result set so it will be available for subsequent calls, (??i.e., do not specify NoCache).

<:#200,8486>((??the above info is subject to change.)

@Chead@<:#200,8486>Examples

<:#600,8486><:f,QCourier New,>@DbCommand("ODBC";"PUBLISHERS";"dbo":"";"vanilla":"";   
<**>	"SELECT au_lname FROM dbo.authors WHERE contract=1 AND<**>	state='CA' ")<:f>

<:#1000,8486>This example uses the sample </S>pubs</T> database that is included with Microsoft SQL Server. The formula uses an ODBC driver to access the data source called PUBLISHERS, locate the table called 
</S>authors</T> that is owned by user </S>dbo</T>, and then retrieve the list of names in the 
</S>au_lname</T> column for those authors who live in California and have a contract. Notice that the string CA is enclosed in single quotation marks, since it is already embedded within a quoted command string.

<:#200,8486>(??also need an example for a complex connection, and one retrieving multiple columns)

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DbCommand (ODBC)

@Crossref@<:#200,8486>@DbLookup (ODBC)

<:#200,8486>

@Bhead title@<:#220,8486>@DbLookup with Notes databases

<:#600,8486><:X8,-32768;Index "@DbLookup" # "Notes databases"><:f,,>Given a <:f><:f,,>key<:f><:f,,> value, looks in the specified view and finds all documents containing the key value 
<:f><:f,,>in the first sorted column within the view. For each selected document<:f><:f,,>, @DbLookup returns either the contents of a specified column in the view, or the contents of a specified field<:f><:f,,>.<:f>

@Chead@<:R1,1,1,1890,><:#200,8486><+!>Syntax

<:R1,1,1,1890,><:#400,8486><+!>@DbLookup( <-!><+">class<-"><+!> : "<-!><+!>NoCache"<-!><+!> ; 
<-!><+">server<-"><+!> : <-!><+">database<-"><+!> ; <-!><+">view<-"><+!> ; 
<-!><+">key<-"><+!> ; <-!><+!>"<-!><+">fieldName<-"><+!>"<-!><+!> 
<-!><+!>)<-!> or<**><+!>@DbLookup( <-!><+">class<-"><+!> : "<-!><+!>NoCache"<-!><+!> ; 
<-!><+">server<-"><+!> : <-!><+">database<-"><+!> ; <-!><+">view<-"><+!> ; 
<-!><+">key<-"><+!> ; <-!><+">colum<-"><+">nNumber<-"><+"><-#> <-"><+!>)<-!><-!><-!><-#><-!><-#>

@Chead@<:R1,1,1,1890,><:#200,8486>Parameters

<:R1,1,1,1890,><:#200,8486><-!><+">class<-"><-!>

@1st lev para@<:R><:#400,8486>Text. Indicates what type of database you are accessing. You can indicate a Notes database with either 
</S></T> or </S>Notes</T>.

<:#200,8486><+!>"NoCache"<-!>

@1st lev para@<:#1000,8486>Keyword. Optional. If you exclude it, the results of the lookup are are 
<+">cached<-">, that is, they are stored for re</m>use. Each subsequent lookup to the same location (within the same Notes session and so long as the database executing this lookup remains open) will simply re</m>use that information. If you want to ensure 
that Notes retrieves the latest information for every lookup, specify this option, using a colon after the class argument, as in 
</S>Notes</T>:</S>NoCache</T>.

@1st lev para@<:#400,8486>If you omit </S>NoCache</T>, you do not have to replace it with anything</W>the lookup results are cached automatically.

<:#200,8486><+">server<-"> <+!>: <-!><+">database<-">

@1st lev para@<:#400,8486><-">Text-list. The server location and file name of the database. See "Specifying the server and database," below.<-">

<:#200,8486><+">view<-">

@1st lev para@<:#800,8486>Text. The name of the view in which to search. The view name must exactly match the view</R>s full name as specified in the Design View Attributes dialog box (you can omit any synonyms). If the view cascades from another name on the menu, include that name 
too. See "Specifying the view name," below.

<:#200,8486><+">key<-">

@1st lev para@<:#400,8486>Text. Determines which Notes document is actually read in order to retrieve a value. A document</R>s key is the value displayed in the first 
<+">sorted<-"> column within the view. See "Specifying a key," below.

<:#200,8486><+">fieldName<-">

@1st lev para@<:#400,8486>Text. The name of the field from which the data will be retrieved, once the correct document(s) has been identified. Enclose the field name in quotation marks. See "Specifying a field name," below.

<:#200,8486><+">columnNumber<-">

@1st lev para@<:#800,8486>Number. When you use a column number, Notes finds all documents in the view that match the specified key, and returns whatever value is 
<+">displayed<-"> in the indicated column for each of those documents, regardless of the formula used to display the data. See "Specifying a column number," below.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">valuesFound<-">

@1st lev para@<:#400,8486><-">Text or text-list. The values found in the <+">fieldName <-">or 
<+">column <-">you indicated. See "Accessing the values found," below.<-"><-%>

@Chead@<:#200,8486>Specifying "NoCache"

<:#800,8486>The decision to use </S>NoCache</T> is based on performance issues. On  one hand, forcing Notes to connect to the database and retrieve the same information again and again takes time, and slows your overall performance. On the other hand, if you expect tha
t data to be changing on a frequent basis, it</R>s worth the extra time to make sure you</R>re getting up</m>to</m>date information.

<:#800,8486>For example, if you</R>re using lookups to a database that stores customer addresses, it</R>s generally safe to use caching because you don</R>t expect the addresses to change very often. But if you</R>re using a lookup to a database where stock prices are 
stored, and that database gets updated hourly, it</R>s safer to skip the caching and force a new lookup each time.

@Chead@<:#200,8486>Specifying the server and database

<:#200,8486>There are several ways to specify the <+">server<+!><-"> : <-!><+">database 
<-">parameter:

@Bullet@<:#400,8486>To perform the lookup on the current database (the same database in which the formula is being evaluated), simply specify 
</S></T> as the entire argument to the function.

@Bullet@<:#400,8486>To perform a lookup on a local database, use </S></T> for the server name and specify the database name explicitly, such as 
</S></T>:</S>DATABASE.NSF</T>.

@Bullet@<:#400,8486>To perform a lookup (from the workstation) on a Notes database that resides on a server, include the server plus the path and file name as a text list, as in 
</S>SERVER</T>:</S>DATABASE.NSF</T>.

@Bullet@<:#600,8486>To perform the lookup (from a background macro) on a database that is located on the same server or workstation as the database containing the formula, use 
</S></T> for the server name and specify the database name explicitly, such as 
</S></T>:</S>DATABASE.NSF</T>.

@Bullet@<:#1400,8486>If there are multiple copies of the database, located on various Notes servers, using the database</R>s replica ID in place of both the server and database name lets you access any replica copy of that database without having to specify either the server na
me or the database name. For example, if you use </S>85255CEB:0032AC04</T> (a database</R>s replica ID, found in the File Database Information Replication dialog box) as the database name, Notes searches first the local workspace, then the current server, t
hen the remaining servers in your domain, and uses the first database it finds with the same replica ID.

@Note@<:#600,8486>If your database is located in a DOS or OS/2 subdirec</m>tory, such as MAIL\MINE.NSF, put a double backslash between the directory and the database name, as in 
</S>MAIL\\MINE.NSF</T> because formulas treat backslashes as </S>quote</T> characters.

@Chead@<:#200,8486>Specifying a view

<:#600,8486>You can specify a <+">view<-"> parameter using either the full name of the view or its synonym. For example, if your Last Name view is cascaded from By Author in the View menu, and has the synonym |LName, it looks like this in the View Attributes dialog box
:

<:#200,8486><:f,QCourier New,>By Author\Last Name|LName<:f>

<:#400,8486>When you reference this view with @DbLookup, you can just use the LName synonym, enclosed in quotation marks:

<:#200,8486><:f,QCourier New,>"LName"<:f>

<:#600,8486>If the view name didn</R>t have a synonym, you</R>d use the By Author name plus the Last Name cascade, again enclosed in quotation marks (but without the synonym). And since the view name is used in a formula, the 
</S>\</T> must be preceded with an additional </S>\</T> to ensure that Notes interprets it correctly:

<:#200,8486><:f,QCourier New,><+!>"<-!><:f><:f,QCourier New,>By Author\\Last Name<+!>"<-!><:f>

@Chead@<:#200,8486>Specifying a key

<:#1200,8486>Rather than specify a particular key to match, you</R>ll generally want to use a field name, so that for a particular document, Notes will look up a value based on that field</R>s contents within that particular document. For example, if you specify the fie
ld LastName as the key (Notes knows it</R>s a field because there are no quotation marks around it), then whenever the @DbLookup formula is executed, the current value of the LastName field is used as the lookup criteria. This method lets you use the lookup
 formula in a field, when you cannot predict what values will be entered in other fields.

@Indnt note@<:#400,8486>You can only test for values that match the key (equality); there is no way to specify a different operator such as << (less</m>than).

<:#400,8486>The match between the lookup key and the value in the sort column must be exact--capitalization doesn</R>t matter, but spacing and punctuation must be precise.

<:#200,8486>The view must contain a sorted column in order for the lookup to work; otherwise a null value is returned.

@Chead@<:#200,8486>Specifying a field name

<:#800,8486>When you use a <+">fieldName<-"> to perform a lookup, the value returned is the value that is actually stored in the field; it may be different from what displays in the view. Notes can retrieve data from any field in any document displayed in the specified
 view, but if the field isn</R>t displayed as a view column, Notes must search the entire document to find the field, which may result in a slower lookup.

<:#400,8486>Some of the documents matching the key may not even contain the specified field if they were created using different forms.

@Chead@<:#200,8486>Specifying a column number

<:#400,8486>Lookups based on view columns are more efficient than those based on fields not included in the view. For best results, we recommend you include the desired field in the view.

<:#800,8486>For example, if your view is categorized by product ID and you specify 
</S>01776</T> as the lookup key and 2 as the column, Notes returns whatever is displayed in column 2 for all documents categorized under product ID 01776. In this form, @DbLookup is similar to @DbColumn, except that @DbColumn always returns the entire colum
n.

<:#400,8486>Normally, a view</R>s columns are numbered from left to right, with the leftmost column being column number 1. But because of the way Notes indexes views, not every column is counted for the lookup.

<:#400,8486>For example, if a view contains four columns and you want to perform a lookup on the last, or rightmost column, you perceive it as column number 4</W>but Notes may not.

<:#200,8486>Use this method to calculate the column</R>s number for lookup purposes:

@Numbered list@<:#200,8486>Count the columns in the view, from left to right. 

@1st lev para@<:#400,8486>Be sure you don</R>t miss any columns, for example, a column used for sorting or categorizing the view may not show up. Look at the view in design mode to make sure you see all its columns.

@Numbered list@<:#200,8486>Discount all columns that display a constant value, such as 32 or 
</S>Submitted by: </T>. 

@1st lev para@<:#400,8486>If a column contains a formula that happens to return the same result for every document, it is not considered a 
</S>constant</T> so be sure to include it in your column count.

@Numbered list@<:#600,8486>Discount all columns that consist solely of the following @functions: @DocChildren, @DocDescendants, @DocLevel, @DocNumber, @DocParentNumber, @DocSiblings, @IsCategory, @IsExpandable.

@Numbered list@<:#200,8486>Now re</m>count the columns, working from left to right.

@1st lev para@<:#200,8486>This revised column number is the value to specify in the lookup formula.

@Note@<:#400,8486>If you choose to use a column number instead of a field name in an @DbLookup formula, you can only retrieve data that actually appears in the view.

@Chead@<:#200,8486>Accessing values found

<:#400,8486>If multiple values are returned by @DbLookup, they are formatted as a list and are separated with the multi</m>value separator designated in the current field's InfoBox.

<:#400,8486>@@DbLookup can return no more than 55K bytes of data. Use the following equations to determine how much of your data can be returned with @DbLookup.

<:#200,8486>For lookups that return text:

<:#200,8486>2 + (2 * number of entries returned) + total text size of all entries

<:#200,8486>For lookups that return numbers or dates:

<:#200,8486>(10 * number of entries returned) + 6

@Chead@<:#200,8486>Usage

<:#600,8486>You can use @DbLookup in fields, in buttons, SmartIcons, hotspots, and in any type of agent except those that occur when new mail arrives. Note that @DbLookup is also NOT for use in column or selection formulas and selective replication formulas.

@Chead title@<:#200,8486>Users per server

<:#600,8486>Whenever Notes executes a formula using @DbColumn or @DbLookup, it opens an additional session for the user on the server. Therefore, the number of users that a server can support is reduced when a database on that server uses @DbColumn or @DbLookup.

@Chead@<:#200,8486>Scheduled agents and security

<:#400,8486>Consider the database containing @DbLookup the <+!>source<-!> database, and the database being accessed the 
<+!>target<-!> database.

<:#600,8486>When @DbLookup is used in a scheduled agent, it can only access target databases stored on the same workstation or server as the source database. The source database must have at least Reader access to the target database.

@indent tip@<:#400,8486>If it is not possible to assign Reader access or better to the </m>Default</m> group for security reasons, it is still possible to grant the source database</R>s @DbLookup macros access to the target database.

@1st lev para@<:#400,8486>First, use <+!>File </m> Database </m> Information </m> Replication<-!> to determine the Replica ID of the source database, which will look something like this: 85255CEB:0032AC04.

@1st lev para@<:#600,8486>Then, while using <+!>File </m> Database </m> Access Control<-!> on the target database, add a new entry whose name is the Replica ID itself, and give that name at least Reader access. In the above example, you</R>d add an entry with the name 85255CEB:0032A
C04.

@1st lev para@<:#400,8486>By doing this, you</R>re specifically granting the macros in the source database access to the target database, even if 
</m>Default</m> has No Access.

@Dhead@<:#200,8486>Other agents and security

<:#600,8486>When @DbLookup is used in any other type of formula or agent, it has unlimited access to any target database stored on the user</R>s own workstation. If the target database is stored on another Notes server, @DbLookup</R>s access is determined by the user</R>
s own access level (based on the user's Notes ID).

<:#400,8486>@@DbLookup is not subject to the Read Access list on a view; so long as it has Reader access to the target database, it can retrieve data from all shared views.

@Chead@<:#200,8486>Examples

<:#400,8486>1. Suppose your organization maintains employee office location and department information in the Person documents in the public Name & Address Book.

@Book art@<:#200,8486><[>art]

<:#600,8486>You can have your Notes application look up this information and automatically insert it into documents. For example, you might have a Purchasing application where employees fill out Purchase Requests for office supplies.

<:#600,8486>Let</R>s say Mary Tsen composes a Purchase Order. The P.O. Number, Date, and Requested By fields are filled in automatically by Notes. Mary fills in the details of the purchase order: quantity, part number, and so on.

@Book art@<:#200,8486><[>art]

<:#600,8486>When Mary saves the Purchase Order, the delivery information in the lower half of the document is calculated using a series of @DbLookup formulas to retrieve information about that user from the public Name & Address Book:

@Book art@<:#200,8486><[>art]

<:#400,8486>This is accomplished by using computed fields and writing a lookup formula for each field to be retrieved (Location and Telephone). For example, the formula for the Location field would be:

<+@><:#400,8486><:f,QCourier New,>@DbLookup(""<:f><:f,QCourier New,>;"Purchasing":"Names.NSF";"People"; @Right(RequestedBy;" ");"Location")<:f>

<:#800,8486><:f,,>This formula instructs Notes to open the Name & Address Book (NAMES.NSF) on the Purchasing server, locate the People view, and then locate the person whose last name matches the last name in the purchase order</R><:f><:f,,>s RequestedBy field. Once th
e correct document has been located, Notes copies the information from the Person document</R><:f><:f,,>s Location field into the purchase order Location field.

<:#400,8486>A similar formula then copies Mary</R>s telephone number from the Person record OfficePhoneNumber field into the purchase order Phone field.

@Note@<:#400,8486>For the DeliverTo field, Mary</R>s name is determined when the document is composed, using @UserName.

<:#400,8486>Using the Name & Address Book again, suppose you want to retrieve a list of office telephone numbers for everyone in the Purchasing department.

<:#800,8486>You could use @DbLookup with the key </S>Purchasing</T> to retrieve the OfficePhoneNumber field, and Notes would return the telephone number for every employee with 
</S>Purchasing</T> entered in the Department field of their Person record. The phone numbers are returned as a text list, using the selected multi</m>value separator for the field.

<:R1,1,1,1890,><:#800,8486><:f,,>2.<:f> <:f,,>The formula below returns the value stored in the Status field of the Virus Check document, which is accessed via the In Progress view of the PROJECTS.NSF database stored in the SMITH subdirectory on the RESEARCH server. The information w
ill not be cached, so if this formula is evaluated again during the same Notes session, a new lookup will be performed to ensure that the status retrieved is up to date.<:f>

<:R1,1,1,1890,><:#400,8486><:f180,QCourier New,0,0,0>@DbLookup(""<:f><:f180,QCourier New,0,0,0>:"<:f180,QCourier New,0,0,0>NoCache"<:f180,QCourier New,0,0,0>;"<:f180,QCourier New,0,0,0>RESEARCH"<:f180,QCourier New,0,0,0>:"<:f180,QCourier New,0,0,0>SMITH\\PROJECTS.NSF"<:f180,QCourier New,0,0,0>
; <:f><:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>In Progress"<:f180,QCourier New,0,0,0>;"<:f180,QCourier New,0,0,0>Virus Check"<:f180,QCourier New,0,0,0>;"<:f180,QCourier New,0,0,0>Status"<:f180,QCourier New,0,0,0>)<:f>

@See also hlp@<:R><:#270,8486>See related topics

@Crossref@<:#200,8486>@DbColumn

<:#200,8486><:f,,>

@Bhead title@<:#220,8486>@DbLookup (ODBC)

<:#1000,8486>Given data source information from the ODBC.INI file, uses this information to activate the appropriate ODBC driver. The driver then locates the specified DBMS, table, and column, and returns only the values in that column belonging to records whose value i
n the key column matches the specified key. You can optionally specify whether the returned list of values is sorted, whether duplicate values are deleted and how null values are handled.

@Note@<:#200,8486> @DbLookup can only retrieve data; it can't add, delete, or modify data.

@Chead@<:#200,8486><+!>Syntax

<:#400,8486><+!>@DbLookup( </S><-!><+!>ODBC<-!><+!></T><-!><+!> : </S><-!><+!>NoCache</T><-!><+!> ;<-!><+!> 
</S><-!><+">data_source<-"><+!></T> <-!><+!> ; </S><-!><+">user_ID1<-"><+!></T><-!><+!> : 
</S><-!><+">user_ID2<-"><+!></T><-!><+!> ;<-!> "<+">password1<-">"<+!> : 
<-!>"<+">password2<-">"<+!> ;<-!><+!> <-!><+!></S><-!><+">table<-"><+!></T><-!><+!> ; 
</S><-!><+">column<-"><+!></T><-!><+!> : </S><-!><+">null_handling<-"><+!></T> ;<-!><+!> 
</S><-!><+">key_columm<-"><-"><+!> <-!><+!></T> ; <-!><+!></S><-!><+">key<-"><+!></T><-!><+!> ; 
</S><-!><+!>Distinct</T><-!><+!> : </S><-!><+">sort<-"><+!></T><-!><+!> 
<-!><+!>)<-!><-">

@Chead@<:#200,8486><-!><-#><-!><-#>Parameters

<:#200,8486><-!><-#><+!>"ODBC"<-!><-#>

@1st lev para@<:#400,8486>Keyword. Required. Indicates that you are accessing a non-Notes database using the ODBC Application Interface.

<:#200,8486><+!>"NoCache<-!><+!>"<-!>

@1st lev para@<:#800,8486>Keyword. Optional.  If you want to ensure that Notes retrieves the latest information for every lookup, specify this option, as in 
</S>ODBC</T>:</S>NoCache</T>. Omit "NoCache" if you want  the results of the lookup to be 
<+">cached<-">, that is, stored for re-use by each subsequent lookup to the same location (within the same Notes session and so long as the database executing this lookup remains open).

@1st lev para@<:#400,8486> If you omit </S>NoCache</T>, you do not have to replace it with anything</W>the lookup results are cached automatically, but you can specify "Cache" for readability. 

@See also prnt@<:#200,8486>See Specifying NoCache, below.

<:#200,8486><+"><-#>"data_source<-"><-!><-">"

@1st lev para@<:#400,8486>Text. The name of the external data source being accessed. A data source indicates the location of one or more database tables.

@See also prnt@<:#200,8486>See Specifying the data source, below.

<:#200,8486><+">"user_ID1" <-"> : <+">"user_ID2<-">"

@1st lev para@<:#600,8486>Text-list. The user IDs needed to connect to the external database. You may need up to two IDs, depending on the DBMS being accessed. Often the first ID is for the driver, and the second ID for the database.

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486><+">"password1" :<-"><+"> "password2"

@1st lev para@<:#200,8486>Text-list. The passwords required by the user IDs. 

@See also prnt@<:#200,8486>See Specifying IDs and passwords, below.

<:#200,8486><+">"table<-">"

@1st lev para@<:#200,8486>Text. The name of the database table being accessed.

<:#200,8486><+">"column"

@1st lev para@<:#200,8486>Text. The name of the column from which data is being retrieved.

<:#200,8486><+">"null_handling<-">"

@1st lev para@<:#400,8486>Text. Specifies how null values are treated when the data is retrieved. See Specifying null handling, below.

<:#200,8486>"<+">key_column<-">"

@1st lev para@<:#200,8486>Text. The name of the column used for key matching.

<:#200,8486>"<+">key<-">"

@1st lev para@<:#200,8486>Text, number, or date-time. The value to be looked up in <+">key_column<-">.

<:#200,8486><+!>"Distinct"<-!>

@1st lev para@<:#200,8486>Keyword. Optional. Removes duplicate values from the list before returning data to Notes. 

@See also prnt@<:#200,8486>See Specifying Distinct, below.

<:#200,8486><+">"sort<-">"

@1st lev para@<:#200,8486>Text. Sorts the list of values into either ascending or decending order before it is returned to Notes. 

@See also prnt@<:#200,8486>See Specifying sort, below.

@Chead@<:#200,8486><-"><-">Return Value

<:#200,8486><+">valuesFound<-">

@1st lev para@<:#200,8486><-">Text, number, date-time, or a list of these types. The values found in the 
<+">column <-">you indicated. 

@See also prnt@<:#200,8486>See Accessing the values found, below.<-">

@Chead@<:#200,8486>Specifying NoCache

<:#600,8486>The decision to use </S>NoCache</T> is based on performance. Forcing Notes to connect to the database and retrieve the same information repeatedly takes time, and slows overall performance. Otherwise, if you expect that data to be changing on a frequent bas
is, it's worth the extra time to get updated information.

<:#800,8486>For example, if you</R>re using lookups to a database that stores customer addresses, it</R>s generally safe to use caching because you don</R>t expect the addresses to change very often. But if you</R>re using a lookup to a database where stock prices are 
stored, and that database gets updated hourly, it</R>s safer to omit caching and force a new lookup each time.

@Indnt note@<:#800,8486>If you use the Radio button or the Checkbox user interface for a keywords field, Notes updates the keyword list only when the document is composed or opened for editing. If you use the Standard user interface for the list, the keyword list is additionally u
pdated every time the document is recalculated.

@1st lev para@<:#600,8486>Using </S>NoCache</T> has no effect on how often the field gets updated. It only determines whether the lookup itself is reactivated or the previously retrieved information is re</m>used when the field does get updated. 

@Chead@<:#200,8486>Specifying the data source

<:#200,8486>The data source name can contain up to 32 alphanumeric characters.

<:#1000,8486>@@DbLookup can access data sources that have already been registered in the ODBC.INI file. It can also 
<+#>autoregister<-#>  a data source not present in ODBC.INI if enough connection information about the data source is provided in the parameter list. For example, if connecting to the data source requires an ID and password, they must be provided in the par
ameter list for the data source to be properly autoregistered. (??Is this how it works? How about a better example?)

@Chead@<:#200,8486>Specifying IDs and passwords

<:#200,8486>You'll only need these arguments if your DBMS requires them.

<:#1000,8486>Instead of storing the IDs in the @DbLookup formula, you can replace them with null strings (""). Then, if an ID is required, the user will be prompted for it. This is useful when you do not want other designers to see the IDs, or when you want users to ent
er their own IDs when accessing external data. However, you must include IDs and passwords in formulas that will run automatically (e.g., agents??) because they don't prompt for information.

<:#1000,8486>The user IDs and passwords for accessing a data source are required only once per Notes database session. If your database contains multiple formulas that access the same data source, the user will only be prompted once for the user IDs and passwords as lon
g as that database remains open. If the user opens another Notes database and executes a formula that accesses the same data source, the user ID and password will be required again.

<:#600,8486>Password parameters are necessary only when ID parameters are specified. Like the IDs, the passwords can either be stored in the @DbLookup formula, or prompted for by the ODBC driver by substituting the null string. If the database password is null, you can
 omit it from the formula.

<:#200,8486>For example, for the full ID/password specification, enter:

@Bullet@<:#400,8486>"";"" (two null strings, separated by a semi-colon) to specify no ID and password, or to prompt for both

@Bullet@<:#200,8486> "user_ID1":"password1" to specify one user ID and password combination

@Bullet@<:#200,8486>"user_ID1":"user_ID2";"password1":"password2"  to specify two user ID and password combinations

<:#400,8486>(??Is there ever a time where the user might specify the first ID/password, but prompt for the second one?)

@Chead@<:#200,8486>Specifying the table name

<:#600,8486>If the DBMS supports it, you can optionally include the name of the table's owner to remove ambiguity. Use the format "owner_name.table_name", with a period separating the owner name and the table name. (??Shirley-there should be a period between the two - 
a <+!>space<-!> causes errors, right?)

<:#200,8486> For example:

@Mono@<:#200,8486>"dbo.author"

<:#200,8486><+">Table<-"> can also refer to a database view in the DBMS being accessed.

@Chead@<:#200,8486>Specifying null handling

<:#600,8486>Normally, a null text value is represented with the null string ("") when the column is returned to Notes; for numbers and dates, the null values are ignored and the resulting list is shortened (same as using the Discard option described below).

<:#400,8486>To control how null values are handled, specify one of the following, appended to the 
<+">column<-"> parameter with a colon:

@Bullet@<:#200,8486>"Fail"  Generates this error message if the column of data contains any null values:

@Mono@<:#200,8486>	Null values found - cancelling @Db function

@1st lev para@<:#200,8486>No data is returned with the message.

@Bullet@<:#600,8486>"Discard" Discards the null values, thus shortening the returned list of values. If one or more values are discarded when the @DbLookup formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL values discarded from @Db list.

@Bullet@<:#600,8486>"<+">Replacement value<-">" Value that you specify to be used instead of null values. The replacement value must be a quoted string, but if the column is numeric or date-time, the string must be convertible to that type.

@1st lev para@<:#1200,8486>If your formula includes a sort keyword, the list of values to be returned is sorted 
<+">before<-"> the replacement values are inserted. During sorting, all null values are placed at the beginning of the list for an ascending sort, and at the end for a descending sort. They are not replaced until sorting is complete. This can result in a li
st that has some values sorted incorrectly. For example, if you specify "zzz" as your replacement value, all the "zz" values will appear at the beginning of the list, even if you sorted it in ascending order.

@1st lev para@<:#400,8486>If one or more values are replaced when the @DbLookup formula is executed, Notes displays this message on the status bar:

@Mono@<:#200,8486>	Warning: NULL value replaced with user-defined value in @Db list

@1st lev para@<:#600,8486>Generally, the replacement value should be one that is not likely to appear in the list as valid data; for example, if the column is text, your replacement value might be "***" so you can easily find those values in Notes.

@Chead@<:#200,8486>Specifying key_column

<:#800,8486>Use </S>key_column</T> to indicate which column to search for the specified 
</S>key</T>; enclose the column name in quotation marks. If the DBMS product uses case</m>sensitive column names, be sure to use the correct capitalization here. The values in the key column do 
<+">not<-"> have to be sorted before you retrieve data with @DbLookup.

<:#200,8486>The key can be any value; if it</R>s a string (text) value, enclose it in quotation marks.

<:#200,8486>Together, the key column and the key form the </S>where</T> clause of a selection statement: 

@Mono@<:#200,8486></S>SELECT column WHERE key_column = key</T>

<:#1200,8486>The ODBC Application Interface always tests for equality and only returns data from records where the value in the key column exactly matches the key. To test whether the value in the key column matches one of several possible values, format the key value a
s a list, separating items with colons as in </S>Red</T>:</S>Blue</T>:</S>Green</T>. This acts like an OR operation, returning data from all records where the value in the key column matches 
</S>Red</T> OR </S>Blue</T> OR </S>Green</T>. To perform an AND operation or to test for inequality, use @DbCommand to pass the appropriate command string to the DBMS.

@Chead@<:#200,8486>Specifying Distinct

<:#600,8486>The Distinct keyword is similar to the @Unique function in Notes, except that Distinct ensures that duplicate values are removed 
<+">before<-"> the data is returned to Notes. Using Distinct instead of @Unique has two advantages:

@Bullet@<:#200,8486>The formula operates more quickly because  the additional work is performed outside of Notes.

@Bullet@<:#400,8486>You can potentially retrieve a larger amount of useful data into Notes--since the duplicate values are removed at the back-end, more unique values can be returned to Notes.

@Note@<:#400,8486>Distinct may not be supported by all ODBC drivers. If there are null values in the data and you specify Distinct, one null is usually returned.

@Chead@<:#200,8486>Specifying sort

<:#400,8486>If you use the Distinct keyword, append the <+">sort<-"> parameter to it with a colon. Use one these keywords for the 
<+">sort<-"> parameter to specify sorting of the return values:

@Bullet@<:#200,8486>Ascending sorts the list in ascending order

@Bullet@<:#200,8486>Descending sorts the list in descending order

@Note@<:#600,8486>The <+">sort<-"> keywords are not supported by all ODBC drivers. If you attempt to use both Ascending and Descending in your formula, Notes displays an "Invalid argument" message. If no sort keyword is specified, values are returned in arbitrary order.

@Chead@<:#200,8486>Accessing values found

<:#400,8486>If multiple values are returned, they are formatted as a list and are separated with the multi-value separator designated for the current field.

<:#400,8486>@@DbLookup can return no more than 55K bytes of data. Use the following equations to determine how much of your data can be returned with @DbLookup.

@Bullet@<:#200,8486>For lookups that return text:

@1st lev para@<:#200,8486>2 + (2 * number of entries returned) + total text size of all entries

@1st lev para@<:#200,8486>Each text string is limited to 511 bytes; if only one text string is returned, it is limited to 55K bytes.

@Bullet@<:#200,8486>For lookups that return numbers or dates:

@1st lev para@<:#200,8486>(10 * number of entries returned) + 6

<:#200,8486>If the user's NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>the @DbLookup formula will be disabled. The user will not see an error message, the formula will simply fail to execute. This applies to @DbLookup only when you use it with ODBC.

@Chead@<:#200,8486>Usage

<:#600,8486>@@DbLookup is intended mainly for use with keyword formulas. Instead of hard</m>coding a list of keywords and then periodically updating that list, @DbLookup lets you dynamically retrieve a list of values from an external database table.

<:#400,8486>For example, you can use @DbLookup to retrieve the complete list of colors in which your company</R>s uniforms are available. The data is stored in the inventory database like this:

@Table title@<:t1>

<:#400,8486>Use @DbLookup to retrieve the entire contents of the COLOR column (column 3) for all records where the first sorted column (column 1, ITEM) contains "Shirt" or "Trousers":

@Mono@<:#400,8486><:f180,QCourier New,0,0,0>@DbLookup(<:f180,QCourier New,0,0,0>"<:f180,QCourier New,0,0,0>OBDC<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>INVENTORY<:f><:f180,QCourier New,0,0,0>"<:f>
<:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>
UNIFORMS<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>Color<:f><:f180,QCourier New,0,0,0>"<:f><:f180,QCourier New,0,0,0>;"Item";"Shirt":"Trousers")<:f>

<:#200,8486>Since multiple records contain at least one of the keys, the result is a list:

@Mono@<:#200,8486><:f180,QCourier New,0,0,0>Red:Yellow<:f>

<:#400,8486>Values in the resulting list appear just as they were encountered in the database; they are not sorted and duplicate values are retained.

<:#200,8486>@@DbLookup can't be used in mail macros, although it does work in paste macros.

@Chead@<:#200,8486>Examples

@Mono@<:#400,8486><:f,QCourier New,>@DbLookup("ODBC";<:f><:f,QCourier New,>"<:f><:f,QCourier New,>PUBLISHERS<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f><:f,QCourier New,>dbo<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f>
<:f,QCourier New,>vanilla<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,>"<:f><:f,QCourier New,>dbo authors<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;   
<**>	<:f><:f,QCourier New,>"<:f><:f,QCourier New,>au_lname<:f><:f,QCourier New,>"<:f><:f,QCourier New,>:<:f><:f,QCourier New,>"<:f><:f,QCourier New,>Discard<:f><:f,QCourier New,>"<:f><:f,QCourier New,>;<:f><:f,QCourier New,> "state";"CA":"TN";"<:f><:f,QCourier New,>
Ascending<:f><:f,QCourier New,>"<:f><:f,QCourier New,>)<:f>

<:#1200,8486><:f,,>This example uses the sample <:f><:f,,></S><:f><:f,,>pubs<:f><:f,,></T><:f><:f,,> database that is included with Microsoft SQL Server. The formula uses an ODBC driver to access the data source called PUBLISHERS and locate the table called 
<:f><:f,,></S><:f><:f,,>authors<:f><:f,,></T><:f><:f,,> that is owned by user 
<:f><:f,,></S><:f><:f,,>dbo<:f><:f,,></T><:f><:f,,>. In this table, the 
<:f><:f,,>values in the "state" column are compared with the values "CA" and "TN". For every record whose state field contains either "CA" or "TN",<:f><:f,,> the values stored in the 
<:f><:f,,></S><:f><:f,,>au_lname<:f><:f,,></T><:f><:f,,> field are returned. The author names are sorted in ascending order; null values are discarded.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DbCommand (ODBC)

@Crossref@<:#200,8486>@DbColumn (ODBC)

<:#200,8486>

@Bhead title@<:#220,8486>@DbManager<+!> 

<:#400,8486><:X8,43;Index "@DbManager" #>Returns a list of users, groups, and servers who currently have manager access to the database. In a window title formula, only the name of the first manager listed in the ACL is displayed.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DbManager<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">managers<-">

@1st lev para@<:#200,8486><-">Text or text-list. The users, groups, and servers that have manager access.<-">

@Chead@<:#200,8486>Examples

<:#400,8486><:f,QCourier New,>@DbManager<:f> returns <+!>Harold Brown<-!> if Harold Brown is the only user with manager access to the current database. 

<:#400,8486><:f180,QCourier New,0,0,0>@<:f180,QCourier New,0,0,0>DbManager<:f> returns 
<+!>Harold Brown;Supervisors<-!> if Harold Brown and a group called Supervisors have manager access to the current database. 

<:#400,8486><:f180,QCourier New,0,0,0>@UpperCase(@DbManager)<:f> returns <+!>HAROLD BROWN;LOIS BOYD<-!> if Harold Brown and Lois Boyd are the two users with manager access to the current database.

@See also hlp@
@Crossref@<:#200,8486>@DbName

@Crossref@<:#200,8486>@DbTitle

@Crossref@<:#200,8486>@MailDbName

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@DbName

<:#200,8486><:X8,44;Index "@DbName" #>Returns the name of the current Notes server and database. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DbName<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">server<+!><-"> ; <-!><+">path<-">

@1st lev para@<:#200,8486><-">Text list with two elements.

@Indnt bullet@<:#400,8486><+">server<-"> is the name of the server on which the current database resides, or the null string if the database is local.

@Indnt bullet@<:#200,8486><+">path<-"> is the directory and file name of the database.<-">

@Chead@<:#200,8486>Examples

<:#200,8486>These examples assume the semicolon is the selected separator.

<:#400,8486><:f180,QCourier New,0,0,0>@DbName<:f> returns <+!>;PERSONAL.NSF<-!> if the current document is in the PERSONAL database stored in the data directory of the user</R>s own computer.

<:#1000,8486><:f180,QCourier New,0,0,0>@DbName<:f> returns <+!>SALES1;ADMIN\STATUS.NSF<-!> if the current document is stored in a Notes database named STATUS.NSF in the ADMIN directory on the SALES1 server. If the database is stored at the server</R>s root directory (th
at is, it is not stored in a subdirectory), the result would be <+!>SALES1;STATUS.NSF<-!>. You can extract just the filename of the list by combining @DbName with @Subset, as shown in the example below.

<:#400,8486><:f180,QCourier New,0,0,0>@Subset(@DbName;</m>1)<:f> returns <+!>STATUS.NSF<-!>, the file name, since this is the last element in the returned list. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DbManager

@Crossref@<:#200,8486>@DbTitle

@Crossref@<:#200,8486>@MailDbName

<:#200,8486>

@Bhead title@<:#220,8486>@DbTitle<:X8,45;Index "@DbTitle" #>

<:#200,8486>Returns the title of the current database.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DbTitle<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">title<-">

@1st lev para@<:#200,8486>Text. The title of the current database.

@Chead@<:#200,8486>Example

<:#200,8486><:f,QCourier New,>@DbTitle<:f> returns <+!>A Quick Tour of Lotus Notes<-!> if the tutorial database is the current database. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DbManager

@Crossref@<:#200,8486>@DbName

@Crossref@<:#200,8486>@MailDbName

<:#200,8486>

@Bhead title@<:#220,8486>@DDEExecute

<:#600,8486><:X8,45;Index "@DDEExecute" #>(Windows and OS/2 only) Passes the specified command string to the DDE application, which is identified by the conversation ID. @DDEExecute is always used in conjunction with @DDEInitiate and @DDETerminate.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DDEExecute(<-!><+"> conversationID <-"><+!>; <-!><+">command<-"><+!> )<-!><-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">conversationID<-">

@1st lev para@<:#800,8486><+!><+">YY Data type?<-"> <-!>The <+">conversationID <-">is returned by the @DDEInitiate function, which must precede the use of @DDEExecute. Use your own variable name; that</R>s how you</R>ll pass the conversation ID between Notes and the other applicatio
n. If the conversation ID is invalid, Notes returns an error (see @IsError).

<:#200,8486><+">command<-">

@1st lev para@<:#600,8486><-">Text. The <+">command <-">must be a text string that adheres to the syntax rules of the receiving application (see that application</R>s documentation). Enclose the command in quotation marks so it can be passed intact to the DDE application; that appli
cation will then interpret it as a DDE command.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">acknowledgment<-">

@1st lev para@<:#400,8486><-">Number. Returns @True (1) if the DDE command is successfully executed. Otherwise returns @False(0). If for some reason the conversation ID is invalid, an error is returned.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>This function is intended for use primarily in field formulas and macros, buttons, and SmartIcons. Since the Macintosh does not support DDE, these commands will not work on Macintosh workstations. In addition, the format of the DDE commands may vary somewha
t with each platform or application.

<:#200,8486>If the user</R>s NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>then any formula involving @DDE functions will be disabled. The user will not see an error message, the formula will simply fail to execute.

<:#400,8486>You can have up to 10 DDE conversations running concurrently, although under normal circumstances you should only have 1 conversation running at a time.

@Caution@<:#400,8486>Be sure to terminate all DDE conversations once they</R>re completed, or you may run out of sessions and be unable to initiate more conversations when needed.

@Chead@<:#200,8486>Example

<:#200,8486>This formula conducts a DDE conversation between 1</m>2</m>3 for Windows and Notes.

<:R1,1,1,1890,><:#2000,8486><:f,QCourier New,>Conv_ID := @DDEInitiate("123W</T>;</S>Budget93.wk3</T>);<**>@If (@IsError(Conv_ID); @Do(@Prompt(<[>Ok];</S>Error</T>; 
<**>	</S>Unable to initiate conversation</T>);@Return(</S></T>));<**>@Do(@DDEPoke(Conv_ID;</S>A:B6</T>@Text(Amount));<**>@DDEExecute(Conv_ID;</S><[>RUN(\</T>{Goto}A:B6~\</S>)]</T>);<**>@DDEExecute(Conv_ID;</S><[>RUN(\</T>/rfc~~\</S>)]</T>);<**>@DDEExecute(C
onv_ID;</S><[>RUN(\</T>{Goto}A:B10~{Edit</m>Copy}\</S>)]</T>);<**>@DDETerminate(Conv_ID);<**>@Command(<[>EditNextField]);<**>@Command(<[>EditPaste])))<:f>

<:R><:#200,8486>Here</R>s the same formula, with line</m>by</m>line explanations.

<:#200,8486><:f,QCourier New,>Conv_ID := @DDEInitiate(</S>123W</T>;</S>Budget93.wk3</T>);<:f>

<:#600,8486>Initiates a conversation between Notes and 1</m>2</m>3. This statement specifies which worksheet to use (BUDGET93.WK3) and stores the conversation ID in the variable Conv_ID. Note that the specified file must be open before the @DDEInitiate is executed.

<:R1,1,1,1890,><:#400,8486><:f,QCourier New,>@If (@IsError(Conv_ID); @Do(@Prompt(<[>Ok];</S>Error</T>;   
<**>	</S>Unable to initiate conversation</T>); @Return(</S></T>));<:f>

<:R><:#600,8486>Determines whether the DDE conversation was successfully initiated. If it was, the formula continues; if it wasn</R>t, a message box appears with the specified error message, and the formula immediately stops executing.

<:#200,8486><:f180,QCourier New,0,0,0>@Do(@DDEPoke(Conv_ID;</S>A:B6</T>;@Text(Amount));

<:#400,8486>Converts the contents of the numeric Amount field to text, and then passes that value to cell A:B6 in the 1</m>2</m>3 worksheet. The value must be converted to text because only text can be passed via DDEPoke.

<:#200,8486><:f180,QCourier New,0,0,0>@DDEExecute(Conv_ID;</S><[>RUN(\</T>{Goto}A:B6~\</S>)]</T>);

<:#200,8486>Makes cell A:B6 the current location in the worksheet.

<:#200,8486><:f180,QCourier New,0,0,0>@DDEExecute(Conv_ID;</S><[>RUN(\</T>/rfc~~\</S>)]</T>);

<:#200,8486>Passes the Range, Format, Currency command to 1</m>2</m>3; cell A:B6 is now formatted for currency values.

<:#200,8486><:f180,QCourier New,0,0,0>@DDEExecute(Conv_ID;</S><[>RUN(\</T>{Goto}A:B10~{Edit</m>Copy}\</S>)]</T>);

<:#400,8486>Passes the Goto and Edit Copy commands to 1</m>2</m>3; cursor is moved to cell A:B10 within the worksheet and the value stored in that cell is copied to the Windows Clipboard.

<:#200,8486><:f180,QCourier New,0,0,0>@DDETerminate(Conv_ID);

<:#200,8486>Terminates the DDE conversation.

<:#200,8486><:f180,QCourier New,0,0,0>@Command(<[>EditNextField]); @Command(<[>EditPaste])))

<:#400,8486>Navigates to the next field within the current Notes document; the contents of the Clipboard (the value from cell A:B10) are pasted into that field.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DDEInitiate

@Crossref@<:#200,8486>@DDEPoke

@Crossref@<:#200,8486>@DDETerminate

<:#200,8486>

@Bhead title@<:#220,8486>@DDEInitiate

<:#200,8486><:X8,47;Index "@DDEInitiate" #>(Windows and OS/2 only) Initiates a conversation with a DDE server, and returns the conversation ID. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DDEInitiate( <-!><+">application<-"><+!> ; <-!><+">topic<-"><+!> )<-!>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">application<-">

@1st lev para@<:#800,8486><-">Text. The name of the application you want to initiate a DDE conversation with. This application must be launched before you call @DDEInitiate. The values for 
<+">application <-">and <+">topic <-">vary from one application to another; the appropriate values can usually be found in the index for the application</R>s documentation, under 
</S>DDE.</T><-"><-"><-">

<:#200,8486><+">topic<-">

@1st lev para@<:#200,8486><-">Text. The data file you want to use. This file must be opened before you call @DDEInitiate.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">conversationID<-">

@1st lev para@<:#600,8486><+!><+">YY <-!><+!>Data type?<-"> <-!>This ID identifies the particular DDE conversation so you can pass commands and data to it with @DDEExecute and @DDEPoke, and eventually terminate the conversation with @DDETerminate. Returns an error (see @IsError)  if
 the conversatioin cannot be inititated.

@Chead@<:#200,8486>Usage

<:#400,8486>This function is intended for use primarily in field formulas, macros, buttons, and SmartIcons. Since the Macintosh does not support DDE, these commands will not work on Macintosh workstations.

<:#200,8486>If the user</R>s NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>then any formula involving @DDE functions will be disabled. The user will not see an error message; the formula will simply fail to execute.

<:#400,8486>You can have up to 10 DDE conversations running concurrently, although under normal circumstances you should only have 1 conversation running at a time.

@Caution@<:#400,8486>Be sure to terminate all DDE conversations once they</R>re completed, or you may run out of sessions and be unable to initiate more conversations when needed.

@Chead@<:#200,8486>Initiation failures

<:#400,8486>If the conversation cannot be initiated, @DDEInitiate will return an error (see @IsError). Below are some reasons why the initiation could fail:

@Bullet@<:#200,8486>The workstation</R>s operating system does not support DDE (Macintosh).

@Bullet@<:#400,8486>The DDE application you</R>re trying to set up a conversation with is not running, or the specified file is not open.

@Bullet@<:#400,8486>The DDE application is running, but the specified topic is not open or the application does not support the topic specified with @DDEInitiate.

@Bullet@<:#200,8486>The DDE application is running, but the specified file does not open.

@Bullet@<:#400,8486>The maximum number of concurrent DDE conversations has been reached (currently, the maximum is 10).

@Chead@<:#200,8486>Examples

<:#400,8486>The example for @DDEExecute also uses @DDEInitiate, to illustrate how the various @DDE functions are used together.

@See also hlp@<:S+288><:#358,8486>

@Crossref@<:#200,8486>@DDEExecute

@Crossref@<:#200,8486>@DDEPoke

@Crossref@<:#200,8486>@DDETerminate

<:S+288><:#288,8486>

@Bhead title@<:#220,8486>@DDEPoke

<:#1000,8486><:X8,48;Index "@DDEPoke" #>(Windows and OS/2 only) Deposits unsolicited data into the specified location within the DDE server application. If the data was successfully inserted into the target location, @DDEPoke returns an ACK (acknowledgement) with the va
lue @True(1); if the attempt was not successful, the call returns a NACK (negative acknowledgement) with the value @False(0). If for any reason the conversation ID is invalid, an error is returned (see @IsError).

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@DDEPoke(<-!><+"> conversationID <-"><+!>; <-!><+">location<-"><+!> ; 
<-!><+">data<-"><+!> )<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">conversationID<-">

@1st lev para@<:#200,8486><+!><+">YY <-!><+!>Data type?<-"> <-!>The <+">conversationID <-">is returned by @DDEInitiate.

<:#200,8486><+">location<-">

@1st lev para@<:#400,8486><-">Text. The name of the location where you want to place the <+">data. 
<-">The location must be a cell, range, or field name; enclose it in quotation marks as shown.<-"><-"><-">

<:#200,8486><+">data<-">

@1st lev para@<:#1000,8486><-">Text. Optional. The data you want to place at <+">location.<-"> If you want to pass the contents of a non</m>text field, use @Text to convert it to text first. If 
<+">data <-">is a text list, only the first value in the list gets passed. If you omit 
<+">data <-">, Notes passes the contents of the Windows Clipboard to the receiving application. If you supply the data as a parameter, either enclose it in quotation marks or specify a Notes field name.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>This function is intended for use primarily in field formulas, macros, buttons, and SmartIcons. Since the Macintosh does not support DDE, these commands will not work on Macintosh workstations.

<:#200,8486>If the user</R>s NOTES.INI file includes this statement:

<:#200,8486>NoExternalApps=1

<:#400,8486>then any formula involving @DDE functions will be disabled. The user will not see an error message; the formula will simply fail to execute.

@Chead@<:#200,8486>Examples

<:#400,8486>The example for @DDEExecute also uses @DDEPoke, to illustrate how the various @DDE functions are used together.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DDEExecute

@Crossref@<:#200,8486>@DDEInitiate

@Crossref@<:#200,8486>@DDETerminate

<:#200,8486>

@Bhead title@<:#220,8486>@DDETerminate

<:#200,8486><:X8,49;Index "@DDETerminate" #>(Windows and OS/2 only) Terminates the conversation with a DDE application.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DDETerminate(<-!><+"> conversationID <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">conversationID<-">

@1st lev para@<:#400,8486><+!><+">YY <-!><+!>Data type?<-"><-!> The <+">conversationID <-">is returned by @DDEInitiate. Use the same 
<+">conversationID <-">you used with the@DDEInitiate and @DDEExecute commands.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">status<-">

@1st lev para@<:#200,8486>Returns an error (see @IsError) if the <+">conversationID<-"> is invalid. Otherwise returns nothing.

@Chead@<:#200,8486>Usage

<:#400,8486>This function is intended for use primarily in field formulas, macros, buttons, and SmartIcons. Since the Macintosh does not support DDE, these commands will not work on Macintosh workstations.

<:#200,8486>If the user</R>s NOTES.INI file includes this statement:

@Mono@<:#200,8486>NoExternalApps=1

<:#400,8486>then any formula involving @DDE functions will be disabled. The user will not see an error message, the formula will simply fail to execute.

@Caution@<:#400,8486>Be sure to terminate all DDE conversations once they</R>re completed, or you may run out of sessions and be unable to initiate more conversations when needed.

@Chead@<:#200,8486>Example

<:#400,8486>The example for @DDEExecute also uses @DDETerminate, to illustrate how the various @DDE functions are used together.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DDEExecute

@Crossref@<:#200,8486>@DDEInitiate

@Crossref@<:#200,8486>@DDEPoke

<:#200,8486>

@Bhead title@<:#220,8486>DEFAULT

<:#200,8486>Does one of the following:

@Bullet@<:#200,8486>Assigns a default value to a field. 

@Bullet@<:#400,8486>Says that for the duration of the computation of this formula, if a document does not have this field, act as though it does with this as its value. 

@Bullet@<:#200,8486>Allows you to assign values that provide dynamic defaults to fields. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>DEFAULT<-!> <+">variableName<-"> <+!>:=<-!> <+">value<-"><+"><-%> 
<-"><+!>;<-!>

@Chead@<:#200,8486><+!>Examples

<:#600,8486>The following two formulas display the value in the field named KeyThought, if that field exists; otherwise, the value in the field Topic is displayed. Using DEFAULT lets you write a simpler formula that is less prone to error, and easier for others to unde
rstand.

@Mono@<:#200,8486>@If(@IsAvailable(KeyThought);KeyThought;Topic); 

<:#200,8486>and

@Mono@<:#400,8486>DEFAULT KeyThought := Topic;<**>KeyThought;

<:#200,8486>

@Bhead title@<:#220,8486>@DeleteDocument<:X8,50;Index "@DeleteDocument" #>

<:#200,8486>In an agent that runs a formula, @DeleteDocument deletes the document currently being processed.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DeleteDocument

@Chead@<:#200,8486>Usage

<:#200,8486>@@DeleteDocument is useful in any agent that runs a formula.

<:#400,8486>To create an agent that deletes documents from a database without using a formula, select the action 
<+!>Delete from database <-!>in the Agent Builder.

@Chead@<:#200,8486>Example

<:#400,8486><:f,QCourier New,>FIELD Status:=@If(Status=</S>Closed</T>;@DeleteDocument;Status);<:f><**>deletes only those documents where the Status field equals 
</S>Closed.</T>

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DeleteField

@Crossref@<:#200,8486>@Unavailable

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@DeleteField<:X8,50;Index "@DeleteField" #>

<:#200,8486>In an agent that runs a formula, @DeleteField deletes the specified field.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DeleteField

@Chead@<:#200,8486><+!>Usage

<:#200,8486>@@DeleteField is useful in any agent that runs a formula.

@Chead@<:#200,8486>Example

<:#400,8486><:f,QCourier New,>FIELD RoutingList:=@DeleteField;<:f> deletes the field named RoutingList from each document that is processed by the macro.

<:#200,8486>This statement is equivalent to:

<:#200,8486><:f,QCourier New,>FIELD RoutingList:=@Unavailable;<:f>

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DeleteDocument<-)>

@Crossref@<:#200,8486><+)>@Unavailable<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Do

<:#200,8486><:X8,51;Index "@Do" #>Evaluates expressions from left to right, and returns the value of the last expression in the list.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Do(<-!><+"> expressions <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">expressions<-">

@1st lev para@<:#400,8486><-">Any number of expressions that you want @Do to evaluate. Separate multiple expressions with semi-colons: 
<+">expression1 <+!><-">; <-!><+">expression2 <+!><-">; <-!><+">expression3<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">lastExpression<-">

@1st lev para@<:#200,8486><-">The value of the last expression.<-">

@Chead@<:#200,8486>Usage

<:#800,8486>@@Do is useful when you want to execute multiple expressions from within a single @function. If your @Do statement contains an @Command function, it will execute only after all other statements within the entire formula have executed. Multiple @Commands will
 execute in the order in which they appear within the @Do statement.

<:#200,8486>@@Do is especially useful with agents that run formulas, buttons, and SmartIcons.

@Chead@<:#200,8486>Example

<:#800,8486>This formula displays a dialog box asking whether the user wants to edit the current document. If the user selects Yes, another dialog appears, prompting for the user</R>s name. If the user now selects Cancel, the formula stops execution; if the user enters
 a name and selects OK, the document is opened in edit mode.

<:#400,8486>If the user selects No at the first dialog, a different one follows it. This time, a message appears noting that the user chose not to edit the document, and Notes navigates to the next document in the view.

<:R1,1,1,1890,><:#2000,8486><:f,QCourier New,>@If(@Prompt(<[>YesNo]; </S>Question</T>; </S>Edit this document?</T>))<**>@If(@Prompt(<[>OkCancelEdit]; 
</S>Positive Response</T>; </S>You have chosen to <**>	edit this document. Select OK if the name below is correct.</T>;<**>	@UserName) != 
</S>ERR_CANCEL</T>;@Command(<[>EditDocument]);<**>	@Return(</S></T>));<**>@Do(@Prompt(<[>Ok]; 
</S>Negative Response</T>; </S>You have chosen not to<**>	edit this document. Select OK to continue to the next document.</T>))<**>@Command(<[>NavigateNext])))<:f>

@Bhead title@<:R><:#220,8486>@DocChildren<:X8,51;Index "@DocChildren" #>

<:#600,8486>In a column or window title formula, returns the number of child documents or categories belonging to the current document or category. Only immediate responses count as 
</S>children.</T> For example, the responses to a main document are its children, but the responses to a response document are not.

@Chead@<:#200,8486>Syntax

<:#800,8486><+!>@DocChildren<-!> or<+!><**>@DocChildren(<-!><+"> <-"><+">defaultString 
<-"><+!>)<-!> or<+!><**>@DocChildren(<-!><+"> zero</m>string <-"><+!>;<-!><+">defaultString 
<-"><+!>)<-!> or<+!><**>@DocChildren(<-!><+"> zero</m>string <-"><+!>;<-!><+">one</m>string 
<-"><+!>;<-!><+">defaultString <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">defaultString<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return. If a "%" is used in the string, it will be replaced with the number of children documents or categories. Example: "% Responses"<-"><-"><-">

<:#200,8486><+">zero-string<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return if the document or category has no children, such as "No Responses".<-"><-"><-">

<:#200,8486><+">one-string<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return if the document or category has just one child, such as "One Response".<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486>The return value can be depends on how you call @DocChildren:

<:#200,8486><+">numChildren<-">

@1st lev para@<:#600,8486><-">Special text. If @DocChildren is called with no parameters, then the number of child documents belonging to the current document or category is returned.<-"><-"><-"> You cannot convert special text to a number.

<:#200,8486><+">childString<-">

@1st lev para@<:#600,8486><-">Special text. If @DocChildren is called with one or more parameters, it returns the appropriate string, based on the number of child documents belonging to the current document or category.<-"><-"><-"> You cannot convert special text to a number.

@Chead@<:#200,8486>Usage

<:#800,8486>Use @DocChildren in window title and column formulas, when you want to indicate how many top</m>level responses a particular document has, or how many main documents are within a particular category. @DocChildren can be used in field formulas, but is not su
pported in keyword, section, and input validation formulas, or in buttons.

@Chead@<:#200,8486>Examples

<:#200,8486>If there are three direct descendants to a document: 

<:#200,8486><:f,QCourier New,>@DocChildren<:f> returns <+!>3<-!>. 

<:#400,8486><:f,QCourier New,>@DocChildren(</S>% Responses</T>)<:f> returns <+!>3 Responses<-!>. Notes substitutes the appropriate number for 
<+!>%<-!>. If the document doesn</R>t have any responses, this formula returns 
<+!>0 Responses<-!>.

<:#400,8486>@@DocChildren(</S>No Responses</T>;</S>% Responses</T>)<:f180,QCourier New,0,0,0> returns 
<:f><+!>3 Responses<-!><:f180,QCourier New,0,0,0>. This time, if the document doesn</R>t have any 
<:f>responses, the formula returns the message, <+!>No Responses<-!>.

<:#600,8486><:f180,QCourier New,0,0,0>@DocChildren(</S>No Responses</T>;</S>1 Response</T>;</S>There are % Responses.</T>)<:f> returns 
<+!>There are 3 Responses<-!>. If the document has one response, the message is 
<+!>1 Response<-!>; if the document has no responses, the message is 
<+!>No Responses<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@DocDescendants

@Crossref@<:#200,8486>@DocLevel

@Crossref@<:#200,8486>@DocNumber

@Crossref@<:#200,8486>@DocParentNumber

@Crossref@<:#200,8486>@DocSiblings

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@DocDescendants<:X8,53;Index "@DocDescendants" #>

<:#600,8486>In a column or window title formula, returns the number of descendant documents or subcategories belonging to the current document or category. Where @DocChildren only counts direct descendants, @DocDescendants counts all descendants, regardless of level.

@Chead@<:#200,8486>Syntax

<:#800,8486><+!>@DocDescendants<-!> or<+!><**>@DocDescendants(<-!><+">defaultString 
<-"><+!>)<-!> or<+!><**>@DocDescendants(<-!><+">zero</m>string <-"><+!>;<-!><+">defaultString 
<-"><+!>)<-!> or<+!><**>@DocDescendants(<-!><+">zero</m>string <-"><+!>;<-!><+">one</m>string 
<-"><+!>;<-!><+">defaultString <-"><+!>)<-!><-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">defaultString<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return. If a "%" is used in the string, it will be replaced with the number of descendant documents or categories. Example: "% Responses"<-"><-"><-">

<:#200,8486><+">zero-string<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return if the document or category has no descendants, such as "No Responses".<-"><-"><-">

<:#200,8486><+">one-string<-">

@1st lev para@<:#400,8486><-">Text. Optional. The text to return if the document or category has just one descendant, such as "One Response".<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486>The return value can be either special text or text:

<:#200,8486><+">numChildren<-">

@1st lev para@<:#600,8486><-">Special text. If @DocDescendants is called with no parameters, then the number of descendant documents belonging to the current document or category is returned. You cannot convert special text to a number.<-"><-"><-">

<:#200,8486><+">childString<-">

@1st lev para@<:#600,8486><-">Speical text. If @DocChildren is called with one or more parameters, it returns the appropriate string, based on the number of descendant documents belonging to the current document or category.<-"><-"><-"> You cannot convert special text to a number.<-">
<-"><-">

@Chead@<:#200,8486>Usage

<:#600,8486>Use @DocDescendants in window title and column formulas, when you want to indicate the total number of responses (at all levels) to a particular document, or the total number of documents within a particular category.

@Chead@<:#200,8486>Examples

<:#200,8486>If there are a total of three descendants to a document: 

<:#200,8486><:f,QCourier New,>@DocDescendants<:f> returns <+!>3<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@DocDescendants(</S>% Response(s)</T>)<:f> returns 
<+!>3 Response(s)<-!>.

<:#400,8486><:f180,QCourier New,0,0,0>@DocDescendants(</S>No Responses</T>;</S>% Responses</T>)<:f> returns 
<+!>3 Responses<-!>. If there are no responses to the document, the formula returns 
<+!>No Responses<-!>.

<:#600,8486><:f180,QCourier New,0,0,0>@DocDescendants(</S>No Responses</T>;</S>1 Response</T>;</S>There are % responses.</T>)<:f> returns 
<+!>There are 3 responses<-!>. If the document has one response, the message is 
<+!>1 Response<-!>; if the document has no responses, the message is 
<+!>No Responses<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocLevel<-)>

@Crossref@<:#200,8486><+)>@DocNumber<-)>

@Crossref@<:#200,8486><+)>@DocParentNumber<-)>

@Crossref@<:#200,8486><+)>@DocSiblings<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@DocFields<:X8,54;Index "@DocFields" #>

<:#200,8486>Returns a list of all the fields on a document.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DocFields<-!>

@Chead@<:#200,8486><+!>Return Value<-!>

<:#200,8486><+"><-!>fields<-"><-!>

@1st lev para@<:#200,8486><-">Text-list. Each item in the list is the name of a field on the document.<-">

<:#200,8486>

@Bhead title@<:#220,8486>@DocLength

<:#400,8486><:X8,54;Index "@DocLength" #>Returns the approximate size of a document in bytes. The number returned is only an approximation. The actual size of the document may differ for the following reasons: 

@Bullet@<:#400,8486>The number accounts for user data only; it does not take into account per</m>document or per</m>field constants such as static text or formulas.

@Bullet@<:#400,8486>The database allocates storage in 64</m>byte increments; a document may not use all of the 64 bytes allotted to it.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@DocLength<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><-"><+">length<-"><-"><-">

@1st lev para@<:#200,8486><-">Number. The size of the document.<-">

@Chead@<:#200,8486>Examples

<:#400,8486><:f,QCourier New,>@DocLength<:f> returns <+!>1808<-!> if that is the approximate number of bytes in the document (one</m>page document, no enhanced text).

@Bhead title@<:#220,8486>@DocLevel

<:#200,8486><:X8,54;Index "@DocLevel" #>Returns a text string that represents the level of the document or category.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DocLevel<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">level<-">

@1st lev para@<:#200,8486><-">Special text. The level of the document or category. You cannot convert special text to a number.<-">

@Chead@<:#200,8486><+!>Usage

<:#600,8486>@@DocLevel is typically used in column and window title formulas. If you use it in a window title or field formula, it will always evaluate to 
</S>1</T> until the document has been saved and reopened. @DocLevel is not supported in section, keyword, or input validation formulas, or in buttons.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@DocLevel<:f> of a category returns <+!>1<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@DocLevel<:f> of a main document in a category returns 
<+!>2<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@DocLevel<:f> of a response document in a category returns 
<+!>3<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@DocLevel<:f> of a main document that is not in a category returns 
<+!>1<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocDescendants<-)>

@Crossref@<:#200,8486><+)>@DocNumber<-)>

@Crossref@<:#200,8486><+)>@DocParentNumber<-)>

@Crossref@<:#200,8486><+)>@DocSiblings<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@DocMark<:X8,55;Index "@DocMark" #>

<:#200,8486>In an agent that runs a formula, indicates whether or not you want to save the changes to a document.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@DocMark( <[>Update] )<-!><**><+!>@DocMark( <[>NoUpdate] )<-!>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><-!><+!>Update<-!><-!>

@1st lev para@<:#200,8486>Keyword. Marks a document so that changes made to it are saved to disk.

@Chead@<:#200,8486>NoUpdate

@1st lev para@<:#200,8486>Keyword. Marks a document so that changes made to it will not be saved to disk.

@Chead@<:#200,8486>Usage

<:#400,8486>Use @DocMark in an agent to indicate if the changes made to a document by the agent should be saved.

<:#200,8486>This function has no effect when used on a form or in a view.

@Bhead title@<:#220,8486>@DocNumber

<:#600,8486>In a column or window title formula,<:X8,55;Index "@DocNumber" #> returns a string representing the entry number of the current document or category. For example, 2.3 indicates that the document is the third entry below the second entry.

@Chead@<:#200,8486>Syntax

<:#600,8486><+!>@DocNumber<-!><+!><**>@DocNumber(<-!><+"> separator <-"><+!>)<-!><+!><**>@DocNumber( 
<-!><+!>"" <-!><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">separator<-">

@1st lev para@<:#200,8486>Text. Optional. Indicates a separator to be used in the document number instead of "." (period).

<:#200,8486><-"><-!><-"><+!> <-!><+!>""<-!>

@1st lev para@<:#400,8486>Optional. Tells the function to return the least significant item of the document number (in other words, its rightmost component).

@Chead@<:#200,8486>Return Value

<:#200,8486><+">docNum<-">

@1st lev para@<:#200,8486><-">Text. Value that represents the document number of the document or category in the view.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@DocNumber is typically used in column or window title formulas. In window title or field formula, it will evaluate to 
</S>0</T> until the document has been saved and reopened. @DocNumber is not supported in section, keyword, or input validation formulas, or in buttons.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@DocNumber<:f> returns <+!>37.1.3<-!> for entry 37.1.3. 

<:#200,8486><:f180,QCourier New,0,0,0>@DocNumber(</S></m></T>)<:f> returns <+!>37</m>1</m>3<-!> for entry 37.1.3. 

<:#200,8486><:f180,QCourier New,0,0,0>@DocNumber(</S></T>)<:f> returns <+!>3<-!> for entry 37.1.3.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocDescendants<-)>

@Crossref@<:#200,8486><+)>@DocLevel<-)>

@Crossref@<:#200,8486><+)>@DocParentNumber<-)>

@Crossref@<:#200,8486><+)>@DocSiblings<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@DocParentNumber

<:#400,8486>In a column or window title formula, r<:X8,56;Index "@DocParentNumber" #>eturns a string that represents the entry number of a view entry</R>s parent. Both the current view entry and the parent can be either documents or categories.

@Chead@<:#200,8486>Syntax

<:#600,8486><+!>@DocParentNumber<-!><**><+!>@DocParentNumber( <-!><+">separator 
<-"><+!>)<-!><+!><**>@DocParentNumber( ""<-!><+!> )<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">separator<-">

@1st lev para@<:#200,8486>Text. Optional. Indicates a separator to be used in the parent document number instead of ".".

<:#200,8486><-"><-!><-"><+!> <-!><+!>""<-!><-!><-"><-!><-"><-!><-">

@1st lev para@<:#400,8486>Optional. Tells the function to return the least significant item of the parent document number (in other words, its rightmost component).

@Chead@<:#200,8486>Return Value

<:#200,8486><+">docNum<-">

@1st lev para@<:#400,8486><-">Special text. Value that represents the document number of the document or category in the view. You cannot convert special text to a number.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@DocParentNumber is typically used in column and window title formulas. If you use it in a field formula or window title formula, no result is displayed until the document has been saved and reopened. @DocParentNumber is not supported in section, keyword, o
r input validation formulas, or in buttons.

<:#200,8486>To determine the current entry</R>s own number, use @DocNumber instead.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@DocParentNumber<:f> returns <+!>37.1.3<-!> for the document or category whose parent is entry 37.1.3. 

<:#200,8486><:f180,QCourier New,0,0,0>@DocParentNumber(</S></m></T>)<:f> returns 
<+!>37</m>1</m>3<-!> for the document or category whose parent is entry 37.1.3.

<:#200,8486><:f180,QCourier New,0,0,0>@DocParentNumber(</S></T>)<:f> returns <+!>3<-!> for the document or category whose parent is entry 37.1.3.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocDescendants<-)>

@Crossref@<:#200,8486><+)>@DocLevel<-)>

@Crossref@<:#200,8486><+)>@DocNumber<-)>

@Crossref@<:#200,8486><+)>@DocSiblings<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@DocSiblings

<:#800,8486>In a column or window title formula, <:X8,57;Index "@DocSiblings" #>returns a string that represents the total number of entries at the same level as a view entry (document or category). The returned total includes the document itself. For example, if the d
ocument is entry 8.2, and entries 8.1, 8.3, and 8.4 also exist, then there are four document siblings.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@DocSiblings

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">numSiblings<-">

@1st lev para@<:#400,8486><-">Special text. The number of entries at the same level as the document or category. You cannot convert special text to a number.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@DocSiblings is typically used in column and window title formulas. If you use it in a field or window title formula, it evaluates to 0 until the document has been saved and reopened. @DocSiblings is not supported in section, keyword, input validation, or b
utton formulas.

@Chead@<:#200,8486>Example

<:R1,1,1,1890,><:#400,8486><:f,QCourier New,>@If(@IsNewDoc;</S>New Document</T>;</S>Response</T> + @DocNumber(</S> 
</T>) +<**>	</S> of </T> + @DocSiblings + </S> to </T> + Topic) <:f>

<:R1,1,1,1890,><:#800,8486>returns <+!>Response 1 of 4 to Current Vacation Policy<-!> if the document is one of four responses to a document with the string Current Vacation Policy in the Topic field. Note that @DocSiblings will not evaluate properly in a window title unless a docume
nt has already been saved because it evaluates to 0 for a new document.

@See also hlp@<:R1,1,1,1890,><:#270,8486>

@Crossref@<:R><:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocDescendants<-)>

@Crossref@<:#200,8486><+)>@DocLevel<-)>

@Crossref@<:#200,8486><+)>@DocNumber<-)>

@Crossref@<:#200,8486><+)>@DocParentNumber<-)>

<:R1,1,1,1890,><:#200,8486>

@Bhead title@<:R1,1,1,1890,><:#220,8486>@DocumentUniqueID<:X8,58;Index "@DocumentUniqueID" #>

<+@><:R><:#400,8486>A 32-character combination of letters and numbers that uniquely identifies a document across all replicas of a database. Two documents are replicas of one another if they share the same unique ID.

@Chead@<+@><:#200,8486>Syntax

<:#200,8486><+!>@DocumentUniqueID<-!>

@Chead@<:#200,8486>Usage

<+@><:#800,8486>The unique ID is one part of a document's entire ID number. To see a document's ID, click the info tab of the document InfoBox. The first line after "ID" indicates the unique ID, while the rest of the characters comprise other parts of the document's ID. @D
ocumentUniqueID returns the first line, minus the OF and ON characters.

<+@><:#400,8486>Once created, a document's unique ID never changes, unless the user copies and pastes a document. Notes considers a pasted document to be a newly-created document, and creates a new unique ID for it.

@Chead title@<+@><:#200,8486>Parent and child documents

<+@><:#600,8486>Application developers can use the unique ID to navigate response hierarchies of documents. Every child document has a special field called $Ref, which contains the unique ID of the child's parent document. For example, suppose we had the following document
s in a hierarchical view:

<+@><:#200,8486><+!>1.0 What is your favorite color? ( 1 response )<-!>

<+@><:#200,8486><+!>   <-!>  1.1 Mine is blue.

<+@><:#200,8486>@@DocumentUniqueID for 1.0 might return:

<+@><:#200,8486><+!>FF863D8A:CB6E2210-852561BD:005867C7<-!>

<+@><:#200,8486>The $Ref field on 1.1 contains the same number:

<+@><:#200,8486><+!>FF863D8A:CB6E2210-852561BD:005867C7<-!>

<+@><:#400,8486>This means you can write formulas on the child document that find the parent by comparing its $Ref field with the value returned by @DocumentUniqueID.

<+@><:#400,8486>In many cases, however, @GetDocField and @SetDocField eliminate the need to use @DocumentUniqueID.

@Chead title@<+@><:#200,8486>Field formulas

<+@><:#600,8486>In a field formula, @DocumentUniqueID creates a link to the current document. If the document is mailed, however, the link will fail because it only contains enough information to locate the document from within its original database.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_DOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486><+)>@InheritedDocumentUniqueID<-)><+*>H_INHERITEDDOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486><+*><+)>@GetDocField<-)><-*><+*>H_GETDOCFIELD<-*>

@Crossref@<:#200,8486><+)>@SetDocField<-)><+*>H_SETDOCFIELD<-*>

@Chead title@<:#200,8486>Examples: @DocumentUniqueID

<+@><:#200,8486>1. In a column formula,

@Mono@<+@><:#200,8486>@Text(@DocumentUniqueID)

<:#200,8486>displays a string such as: <+!>FF863D8A:CB6E2210-852561BD:005867C7<-!>.

<:#200,8486>2. In a computed field formula,

@Mono@<:#200,8486>@DocumentUniqueID

<:#200,8486>creates a doclink to the current document.

<+@><:#600,8486>3. Suppose you want the Project field on a child document (created with a Reponse form) to match the Project field on the parent document (created with a Main Topic form). In the form InfoBox for Response, you check Inherit Identical Field Names. You make P
roject a computed field and give it the formula:

@Mono@<+@><:#200,8486>Project

<+@><:#400,8486>This technique successfully places the Project field from the Main Topic into the Project field of a newly-created Response, but what if the Project field on the Main Topic changes? 

<+@><:#400,8486>Field inheritance only happens once: when the Response is created. But you want to access the Main Topic even after its Response has already been created. Therefore, you do the following:

@Bullet@<+@><:#200,8486>Create a hidden view in the database, called "By doc ID".

@Bullet@<+@><:#400,8486>The selection formula for the view is:<**><:f,QCourier New,>SELECT Form = "Main Topic"<:f>

@Bullet@<+@><:#400,8486>The first column is sorted and its formula is: <:f,QCourier New,><**>@Text(@DocumentUniqueID)<:f>

@Bullet@<:#1000,8486>Create an agent that runs on a schedule, selects all documents in the database that use the form "Response," and runs the following formula:<:f,QCourier New,><**>FIELD Project := @DbLookup("":""; ""; "By doc ID"; @Text($Ref); "Project");<**>@All<:f>

<+@><:#600,8486>Each time the agent runs, it performs a lookup into the By doc ID view to find the Main Topic that's the parent of the current Response (that is, the document whose @DocumentUniqueID matches the current document's $Ref field). It then copies the contents of
 the Project field from the parent to the child.

<+@><:#600,8486>4. The following formula accomplishes the same task as the formula in the agent above, but eliminates the need to create an extra view. It also eliminates the need to use @DocumentUniqueID, because @GetDocField automatically finds the document pointed to by
 $Ref.

@Mono@<+@><:#400,8486>FIELD Project:=@GetDocField($Ref; "Project");<**>@All

@Bhead title@<:#220,8486>@Domain

<:#200,8486><:X8,59;Index "@Domain" #>Returns the name of the current user</R>s Notes domain listed in the NOTES.INI or Notes Preferences file.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Domain<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">domain<-">

@1st lev para@<:#200,8486><-">Text. The current user's domain.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>@@Domain is useful in formulas that manipulate mail addresses.

@Chead@<:#200,8486>Example

<:#200,8486><:f,QCourier New,>@Domain<:f> returns <+!>WorkSavers<-!> if the current user belongs to the WorkSavers domain.

<:#200,8486><:f180,QCourier New,0,0,0>FIELD CopyTo:=@Replace(CopyTo;@UserName+</S>@</T>+@Domain;</S></T>);

<:#400,8486>In this example, any occurrences of the user</R>s mail address is replaced with a null string, thus removing the current user</R>s name from CopyTo.

@Note@<:#400,8486>The above example works only with non</m>hierarchical names (those IDs certified by a non</m>hierarchical certifier).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@UserName<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Elements

<:#400,8486><:X8,60;Index "@Elements" #>Calculates the number of text, number, or time</m>date values in a list. This function always returns a number to indicate the number of entries in the list.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Elements(<-!><+"> list <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">list<+!><-">

@1st lev para@<:#200,8486>Text list, number list, or time-date list.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">numElements<-">

@1st lev para@<:#400,8486><-">Number. The number of elements in the list. If the field</R>s value is a null string, @Elements(list) returns the number 0.<-"><-"><-">

@Chead@<:#200,8486>Examples

<:#400,8486><:f,QCourier New,>@Elements(SalesForce)<:f> returns <+!>4<-!> if the list in the field named SalesForce is 
</S>Rogers</T>:</S>Binney</T>:</S>Harris</T>:</S>Larson</T>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Elements(</S>Jones</T>:</S>Smith</T>)<:f> returns 
<+!>2<-!>.

<:#200,8486><:f,QCourier New,>3 + @Elements(</S>Liston</T>:</S>Reed</T>)<:f> returns 
<+!>5<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>

@Bhead title@<:#220,8486>@Ends

<:#200,8486><:X8,60;Index "@Ends" #>Determines if a substring is at the very end of a string.  @Ends is case sensitive. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Ends(<-!><+"> string <-"><+!>;<-!><+">substring <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string to search.<-">

<:#200,8486><+">substring<-">

@1st lev para@<:#200,8486><-">Text. The string to search for at the end of <+">string.<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486><-">Boolean. Returns 1 (TRUE) if it is at the end of string1; returns 0 (FALSE) if it is not.<-"><-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Ends(</S>Hi There</T>;</S>re</T>)<:f> returns <+!>1<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Ends(</S>Hi There</T>;</S>The</T>)<:f> returns 
<+!>0<-!>.

<:R1,1,1,1890,><:#400,8486><:f180,QCourier New,0,0,0>@If(@Ends(Signature;</S>Owens</T>:</S>Irons</T>:</S>Baker</T>);</S>Verify signature</T>;<**>	</S>Don</R>t Verify Signature</T>) 

<:R><:#600,8486>checks to see if the very end of the field named Signature contains the strings 
</S>Owens</T> or </S>Irons</T> or </S>Baker</T>. If it does, the string 
<+!>Verify Signature<-!> is returned; otherwise, the string <+!>Don</R><-!><+!>t Verify Signature<-!> is returned.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

<:p<* >>

@Bhead title@<:#220,8486>@Environment

<:#400,8486><:X8,62;Index "@Environment" #>Sets or returns an environment variable stored in the user</R>s NOTES.INI file (Windows, OS/2, and UNIX) or Notes Preferences file (Macintosh).

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Environment(<-!><+"> variable <-"><+!>)<**>@Environment(<-!><+"> variable 
<-"><+!>;<-!><+"> value <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">variable<-">

@1st lev para@<:#400,8486><-">Text or text list. The name of the environment variable you want to retrieve. To retrieve multiple environment variables, use a text list.<-"><-"><-">

<:#200,8486><+">value<-">

@1st lev para@<:#600,8486><-">Text. Optional. The value you want to assign to the environment variable. Since each user has his or her own NOTES.INI or Notes Preferences file, this value can be customized for each user.<-"><-"><-"> Omit this parameter if you just want to retrieve th
e value, not set it.

@Indnt bullet@<:#200,8486>If <+">variable<-"> is a text list, every environment variable in the list will be assigned 
<+">value. <-">

@Indnt bullet@<:#200,8486>If <+">value<-"> is a text list, only the first value in the list is used; the rest are ignored.<-"> 

@Chead@<:#200,8486>Return Value

<:#200,8486><+">environmentVariable<-">

@1st lev para@<:#400,8486>Text. The value of the environment variable you specified. To use the return value in arithmetic operations, use @TextToNumber to convert it to a number.

@Chead@<:#200,8486><+!>Usage<-!>

@See also prnt@<:#400,8486>For information on how to use environment variables, see "Getting and setting environment variables" in Chapter 6.

<:#800,8486>@@Environment is intended for use in field and form formulas, buttons, SmartIcons, and agents that run formulas. Some formulas in Notes, such as selection and column formulas for shared views and folders, as well as scheduled agents, are run on the server in
stead of the user's workstation. In this case, the environment variables affected are the 
<+">server</R><-"><+">s<-"> environment variables, not the workstation</R>s.

<:#400,8486>To set the value of an environment variable, you can also use @SetEnvironment or the ENVIRONMENT keyword, which achieve the same result.

@See also hlp@<:#270,8486>

@See also btn@<:#400,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ENVIRONMENT_SETENVIRONMENT_AND_ENVIRONMENT<-*>

@Crossref@<:#400,8486><+)>Getting and setting environment variables<-)><+*>H_GETTING_AND_SETTING_ENVIRONMENT_VARIABLES<-*>

@Crossref@<:#200,8486><+)>@SetEnvironment<-)>

@Crossref@<:#200,8486><+)>ENVIRONMENT<-)><+*>H_ENVIRONMENT<-*>

<:#200,8486>

@Bhead title@<:#220,8486>ENVIRONMENT

<:#400,8486><:X8,62;Index "@Environment" #>Sets an environment variable stored in the user</R>s NOTES.INI file (Windows, OS/2, and UNIX) or Notes Preferences file (Macintosh).

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>ENVIRONMENT <-!><+">variable <-"><+!>:= <-!><+">textValue<-"><+!> ;<-!>

@Caution@<:#400,8486>Fields that contain environment variables must be of the Text data type 
<+!><+">YY not true--seems to work OK<-"><-!>. If the fields are defined as any other data type, nothing will be stored.

@Chead@<:#200,8486>Usage

@See also prnt@<:#400,8486>For information on how to use environment variables, see "Getting and setting environment variables" in Chapter 6.

<:#200,8486>To get the value of an environment variable, use @Environment.

<:#400,8486>To set the value of an environment variable, you can also use @Environment or @SetEnvironment, which achieve the same result.

<:#200,8486>Although environment variables are stored as text, 

@See also hlp@<:#270,8486>

@See also btn@<:#400,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ENVIRONMENT_SETENVIRONMENT_AND_ENVIRONMENT<-*>

@Crossref@<:#400,8486><+)>Getting and setting environment variables<-)><+*>H_GETTING_AND_SETTING_ENVIRONMENT_VARIABLES<-*>

@Chead title@<:#200,8486>Examples: @Environment, @SetEnvironment, and ENVIRONMENT

<:#600,8486>1. <:f,QCourier New,>@Environment("OrderNumber")<:f> returns </S><+!>8009<-!></T>, if that is the value of the variable OrderNumber stored in the current user</R>s NOTES.INI or Notes Preferences file. This value may differ for different users, allowing you 
to sequentially number each user</R>s orders. 

<:#400,8486>2. <:f180,QCourier New,0,0,0>@Environment("OrderNumber";"0") <:f>places a variable called OrderNumber in the current user</R>s NOTES.INI or Notes Preferences file, and assigns it a value of zero.

<:#400,8486>3. To save users time while completing Profile documents, you want to automatically fill in an office location for them. You create an editable text field called OfficeLocation. Its default formula is:

@Mono@<:#200,8486>@Environment("ENVOfficeLocation")

<:#200,8486>Its input translation formula is:

@Mono@<:#400,8486>@Environment("ENVOfficeLocation"; OfficeLocation);<**>OfficeLocation

<:#1000,8486>The first time the user creates a Profile document, the OfficeLocation field is blank, so the user types in her office location. When the document is saved, the contents of the OfficeLocation field are saved in her NOTES.INI or Notes Preferences file. The n
ext time she creates a Profile document, her office location is retrieved from the environment varialbe ENVOfficeLocation, and she doesn't have to type it in again (unless her office location changes, in which case she simply edits the field).

<:#400,8486>You could also write the input translation formula using either @SetEnvironment or the ENVIRONMENT keyword, both of which achieve the same result:

@Mono@<:#400,8486>@SetEnvironment("ENVOfficeLocation"; OfficeLocation);<**>OfficeLocation

<:#200,8486>Or:

@Mono@<:#400,8486>ENVIRONMENT ENVOfficeLocation:=OfficeLocation;<**>OfficeLocation

<:#600,8486>4. In addition to the OfficeLocation, you want to use an environment variable to store a user's birthday. You create an editable time field called Birthday. Its default formula is similar to the one used for OfficeLocation:

@Mono@<:#200,8486>@Environment("ENVBirthday")

<:#200,8486>Its input translation formula uses @Text to convert the time value into text:

@Mono@<:#400,8486>@SetEnvironment("ENVBirthday"; @Text(Birthday));<**>Birthday

<:#200,8486>You use a @Text to write a similar input translation formula for a number field.

<:#400,8486> <+!><+">YY how about an example that does the same as above, but for multiple fields at once, using a button as in the SPR database "Save default project settings" button.<-"><-!>

<:#600,8486>5. Suppose you want to generate sequential numbers on a per user basis, and you want to store the number in a field called OrderNumber. Define the field OrderNumber to be a Text data type; it must be some form of Computed field. Then write the following for
mula for the field.

@Mono@<:#1200,8486>Temporary := @Environment("OrderNumber");<**>Temporary2 := @If(Temporary="";"0";Temporary);<**>CurrentOrderNumber := @TextToNumber(Temporary2);<**>NextOrderNumber := CurrentOrderNumber + 1;<**>ENVIRONMENT OrderNumber := @Text(NextOrderNumber);<**>@Text(Curr
entOrderNumber);

<:#800,8486>5. This formula whether an environment variable called OrderNumber has been stored in the user</R>s NOTES.INI or Notes Preferences file. If there is no such variable stored, @SetEnvironment is used to initialize it to zero. If a value has already been store
d, @Return is used to return it and stop the formula from executing.

@Mono@<:#400,8486>@If(@Environment(OrderNumber)=""; @SetEnvironment("OrderNumber";"0"); @Return(@Environment("OrderNumber")))

<:#600,8486>6. In this example, two macros are used to look up a list of possible group names that users might belong to, prompt the user to select one, and then enter that name in the Group field for all selected documents (which in this case, pertain to the current u
ser).

<:#1000,8486>The </S>Set Group</T> macro looks up the list of group names stored in column 1 of the Service Requests 
</m> By Group view, prompts the user to select a group name, and then stores the selected name in the MacroTmp environment variable before running the 
</S>(Set Group Helper)</T> macro. The </S>(Set Group Helper)</T> macro then retrieves the group name from the user</R>s NOTES.INI or Notes Preferences file, and stores it in the Group name field for all selected documents.

<:#200,8486><+!>Set Group<-!> macro executes once:

<:R1,1,1,1920,><:#1200,8486><:f180,QCourier New,0,0,0>GroupList:=@DbColumn(</S></T>:</S>NoCache</T>;</S></T>;</S>Service Requests\\By 
<**>	Group</T>;1);<**>Group:=@Prompt(<[>OKCancelEditCombo];</S>Choose a group</T>;</S>Choose 
<**>	a group</T>;</S>Marketing</T>;GroupList);<**>Tmp1:=@Environment(</S>MacroTmp</T>;Group);<**>@Command(<[>ToolsRunMacro];</S>(Set Group Helper)</T>);

<:R><:#200,8486><+!>(Set Group Helper)<-!> macro runs on each selected document:

<:#200,8486><:f180,QCourier New,0,0,0>FIELD Group:=@Environment(</S>MacroTmp</T>);<:f>

@Bhead title@<:#220,8486>@Error

<:#400,8486><:X8,64;Index "@Error" #>Allows you to generate an error condition within an expression. This is useful if you want to then evaluate the current values in several fields, and need to know if an error has occurred in the entry of any of them. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Error<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+!>@Error<-!>

@Chead@<:#200,8486>Usage

<:#200,8486>Use @IsError to test for a data entry error.

<:#200,8486>When an error has occurred, <+!>@ERROR<-!><:f,QCourier New,> <:f>is returned. The function cannot return any other value.

<:#400,8486>@@Error always results in an error condition when it tests a single value. If you use @Error alone as a formula, you will always generate an error; the error is returned as<+!> @ERROR<-!>.

<:#400,8486>Note that you cannot test for an @Error value with any operator or @function other than @IsError. If you use an error value as an argument to an operator or @function, the return is always<+!> @ERROR<-!>.

@Chead@<:#200,8486>Examples 

<:#200,8486>Read the following examples closely to understand the difference between @Error and @IsError.

<:#400,8486><:f180,QCourier New,0,0,0>@If(Price<;>100;Price;@Error)<:f> returns the value in the field Price if it is greater than 100, otherwise returns 
<+!>@ERROR<-!>. 

<:#800,8486><:f180,QCourier New,0,0,0>@If(@IsError(Price);</S>There is an error in the price field</T>;</S>Price Field Okay</T>)<:f> checks to see if there is an @ERROR in the field named Price. If there is an @ERROR, the string 
<+!>There is an error in the price field<-!> is returned. If the contents of the field is anything other than @ERROR, 
<+!>Price Field Okay<-!> is returned. 

@Bhead title@<:#220,8486>@Exp

<:#400,8486><:X8,65;Index "@Exp" #>Calculates the number <+">e<-"> (approximately 2.718282) raised to the power specified (this value can contain up to 14 decimal places).

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Exp(<-!><+"> power <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">power<-">

@1st lev para@<:#600,8486><-">Number. The power to which you want to raise <+">e.<-"> <-#>Notes can only calculate this function when number is between 
</m>11355.1371 and 11356.5234. Values outside this range will return the value @ERROR.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>Natural logs use the constant <+">e<-"> as their base. Use @Exp in formulas requiring exponential functions.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Exp(1.25)<:f> returns <+!>3.49034295746184<-!> (<+">e<-"> raised to the power of 1.25, or 
<+">e<-"><+&>1.25<-&>).

<:#200,8486><:f180,QCourier New,0,0,0>@Exp(</m>1.25)<:f> returns <+!>0.28650479686019<-!> (<+">e<-"> raised to the power of 
</m>1.25, or <+">e<-"><+&></m>1.25<-&>).

<:#200,8486><:f180,QCourier New,0,0,0>@Exp(1)<:f> returns <+!>2.71828182845904<-!> (<+">e<-"> raised to the power of 1, or 
<+">e<-"><+&>1<-&>).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Ln<-)>

@Crossref@<:#200,8486><+)>@Log<-)>

@Crossref@<:#200,8486><+)>@Power<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Explode

<:#200,8486><:X8,65;Index "@Explode" #>Returns a text list composed of the elements of a text string or date range. 

@Bullet@<:#400,8486>If you specify a text string, elements are defined either as words (if they are separated by spaces) or as clauses separated by the specified separator.

@Bullet@<:#200,8486>If you specify a date range, elements are defined as the individual days that are within the range.

@Chead@<:#200,8486>Syntax

<:#800,8486><+!>@Explode(<-!> <+">dateRange <-"><+!>)<**><-!><+!>@Explode(<-!><+"> string 
<-"><+!>)<**>@Explode(<-!><+"> string <-"><+!>; <-!><+">separator<-"><+!> )<-!><+!><**>@Explode(<-!><+"> string 
<-"><+!>; <-!><+">separator<-"><+!> ; <-!><+">includeEmpties <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">dateRange<-">

@1st lev para@<:#200,8486><-">Date range. The range of dates whose individual days you want to make into a text list.<-">

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string whose contents you want to make into a text list.<-">

<:#200,8486><+">separator<-">

@1st lev para@<:#600,8486><-">Text. Optional. One or more characters in <+">string<-"> that are used to define the end of an element. The default separator is " ,;" (space comma semicolon), which means that Notes adds a new element to the text list each time a space, comma, or semic
olon is encountered in the original <+">string.<-"><-">

<:#200,8486><+">includeEmpties<-">

@1st lev para@<:#800,8486><-"><-">Boolean. Optional. Specify TRUE (1) if you want Notes to place an empty string ("") in the returned list whenever a 
<+">separator <-">appears at the very beginning or end of the <+">string, 
<-">or whenever two occurrences of a <+">separator<-"> occur consecutively in the 
<+">string. <-">Specify FALSE (0) if you do not want to include such empty occurrences in the returned list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">explodedString<-">

@1st lev para@<:#200,8486><-">Text list. A list containing each element found in <+">string<-"> or each date found in 
<+">dateRange.<-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486>Given a semicolon (;) as the default display separator:

<:#400,8486>1. <:f,QCourier New,>@Explode(Topic)<:f> returns <+!>Weekly;Status;Report<-!> if the contents of the Topic field is 
</S>Weekly Status Report</T>.

<:#400,8486>2. <:f,QCourier New,>@Explode(Topic)<:f> also returns <+!>Weekly;Status;Report<+"> 
<-!><-">if the contents of the Topic field is "Weekly,Status,Report" or "Weekly;Status;Report".

<:#400,8486>2. <:f180,QCourier New,0,0,0>@Explode(Headline;",") <:f>returns <+!>Attendance grows at UCLA; Pomona Colleges; and USC<-!> if the contents of the Headline field is 
</S>Attendance grows at UCLA, Pomona Colleges, and USC</T>.

<:#400,8486>3. <:f180,QCourier New,0,0,0>@Elements(@Explode(Country; ","))<:f> returns 
<+!>4<-!> if the contents of the Country field is </S>Mexico, Guatemala, Costa Rica, El Salvador</T>.

<:#200,8486>4. <:f,QCourier New,>@Explode(<[>07/02/96 - 07/05/96])<:f>returns 
<+!>07/02/96; 07/03/96; 07/04/96; 07/05/96<-!>.

<:#1000,8486>5. <+!><+">YY needs some cleaning up, but this is the only way to do it! 
<-"><-!>You want users to be able to enter a range of dates into an editable time-date field called Duration. Create the field and give it the following input translation formula: @Date(Duration). Then create a computed text field called Days and give it th
e following formula: @Explode(Duration). Users can enter stuff in the Duration field in this format: 04/16/71-04/18/71.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Implode<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Failure

<:#400,8486><:X8,67;Index "@Failure" #>Returns a message that you supply; when used in an input validation formula, @Failure displays its message whenever the entered value does not meet the validation criteria.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Failure(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The error message you want returned.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The error message.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@Failure is mainly used in input validation formulas for editable fields, although you can also use it in agents that run formulas and form formulas. When @Failure is used in formulas other than input validation formulas, the result is the input string; Not
es displays no prompt or error box.

@Chead@<:#200,8486>Examples 

<:#200,8486>This example shows @Failure being used in an input validation formula:

<:#600,8486><:f,QCourier New,>@If(AreaCode<<999;@Success;@Failure(</S>Area codes have only 3 digits</T>))<:f> returns the error message 
<+!>Area codes have only 3 digits<-!> if the user enters a number greater than 999 in the field named AreaCode. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Success<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@False

<:#200,8486><:X8,67;Index "@False" #>Returns the number 0. This function is equivalent to @No.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@False<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486>0

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@False<:f> returns <+!>0<-!>. 

<:#200,8486><:f,QCourier New,>@If(Dept<;>100;@True;@False)<:f> returns <+!>0<-!>, if the value in the field named Dept is 100 or less.

@See also hlp@<:S+288><:#358,8486>

@Crossref@<:#200,8486><+)>@No<-)>

@Crossref@<:#200,8486><+)>@True<-)>

@Crossref@<:#200,8486><+)>@Yes<-)>

@Crossref@<:#200,8486><+)>

@Bhead title@<:#220,8486>FIELD

<:#800,8486>The <:X8,68;Index "Formula" # "FIELD"><:X8,68;Index "FIELD" #>FIELD keyword is necessary when you are assigning values to fields that are stored in a document (as opposed to temporary fields). You can use FIELD to change the contents of an existing field, o
r to create new fields. Don</R>t use FIELD to define temporary fields; use it only with fields that are (or will be) stored in the document.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>FIELD <-!><+">fieldName <-"><+!>:=<-!> <+">value<-"> <-%><+!>;<-!>

@Caution@<:#400,8486>When you use FIELD to create a new field in existing documents, make sure that you do not duplicate the name of a field that already exists.

@Chead@<:#200,8486>Example

<:#600,8486>Suppose there is a field named Company in a form. When users compose documents with this form, they enter the name of the company in this field. You write the following filter which adds 
</S>Inc.</T> to the contents of the Company field:

@Mono@<:#200,8486>FIELD Company := Company + </S>, Inc.</T>; 

<:#400,8486>Alternatively, you can create a new field called CompanyName in the form to hold the name of the company plus 
</S>Inc.</T> by assigning it the following formula:

@Mono@<:#200,8486>FIELD CompanyName := Company + </S>, Inc.</T>; 

<:#400,8486>To delete the field CompanyName from an existing set of documents, you could use the following formula:

@Mono@<:#200,8486>FIELD CompanyName := @DeleteField;

@Mono@<:#200,8486>

@Bhead title@<:#220,8486>@GetDocField<:X8,68;Index "@GetDocField" #>

<:#200,8486>Given the unique ID of a document, returns the contents of a specific field on that document.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@GetDocField( <-!><+">documentUNID<-"><+!> ; <-!><+">fieldName<-"><+!> )<-!>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><+">documentUNID<-">

@1st lev para@<:#200,8486><+!><+">YY datatype?<-">. <-!>The unique ID of a document.<-">

<:#200,8486><+">fieldName<-">

@1st lev para@<:#200,8486>Text. The name of a field on the document.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">fieldValue<-">

@1st lev para@<:#400,8486>Text or text-list; number or number-list; time-date or time-date range. The contents of the field on the specified document.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_GETDOCFIELD<-*>

@Crossref@<:#200,8486><+)>@DocumentUniqueID<-)><+*>H_DOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486><+)>@InheritedDocumentUniqueID<-)><+*>H_INHERITEDDOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486>

@Chead title@<:#200,8486>Examples: @GetDocField

<:#800,8486>1. You have a discussion database with main topics and responses. In each response, you want to store the subject of parent document in a field called OriginalSubject. You want OriginalSubject to change if the subject of the main topic changes, so you write
 this formula for it. $Ref is a special field on a response document that contains the unique ID of the parent document. 
<+!><+">YY formula is incorrect.<-"><-!>

@Mono@<:#200,8486>@If(@IsNewDoc; Subject; @GetDocField($Ref; "Subject"))

@Bhead title@<:#220,8486>@Hour

<:#200,8486><:X8,69;Index "@Hour" #>Returns the number of the hour in the specified time</m>date.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Hour(<-!> <-%><+">timeDateValue<-"> <-#><+!>)<-!><-#><-#><-#>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">timeDateValue<-">

@1st lev para@<:#200,8486><-">Time-date. The value whose hour you want to extract.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">hour<-">

@1st lev para@<:#200,8486><-">Number. A number representing the hour contained in <+">timeDateValue.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Hour(<[>9:30])<:f> returns <+!>9<-!>.

<:#200,8486><:f,QCourier New,>@Hour(Date)<:f> returns <+!>8<-!>, if the time in the field named Date is 8:56:34 P.M.

<:#200,8486><:f,QCourier New,>@Hour(Date)<:f> returns <+!>9<-!>, if a field named Date is made up of date and time as follows: 7/30/90 9:59:59. 

<:#200,8486><:f,QCourier New,>@Hour(@Created)<:f> returns <+!>3<-!>, if the current document was created on 2/15/92 at 3:00:12 A.M.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Day<-)>

@Crossref@<:#200,8486><+)>@Minute<-)>

@Crossref@<:#200,8486><+)>@Month<-)>

@Crossref@<:#200,8486><+)>@Second<-)>

@Crossref@<:#200,8486><+)>@Year<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@If

<:#600,8486><:X8,69;Index "@If" #>Evaluates a condition; if the condition is TRUE, Notes performs the action listed immediately after that condition, and stops. But if the condition is FALSE, Notes skips to the next condition and tests it, and so on. If none of the con
ditions are TRUE, Notes performs the else_action.

@Chead@<:#200,8486>Syntax

<:R1,1,1,1890,><:#200,8486><+!>@If( <-!><+">condition1 <-"><+!>; <-!><+">action1 <-"><+!>; <-!><+">condition2 
<-"><+!>; <-!><+">action2 <-"><+!>; <-!><+">... <-"><+!>; <-!><+">condition99 
<-"><+!>;<-!><+!> <-!><+">action99 <-"><+!>; <-!><+">else_action<-"><+!> )<-!>

@Chead@<:R1,1,1,1890,><:#200,8486><+!>Parameters

<:R1,1,1,1890,><:#200,8486><+">condition<-">

@1st lev para@<:R1,1,1,1890,><:#400,8486><-">Expression that returns a boolean. If this expression returns TRUE, 
<+">action1<+!><-"> <-!>is performed. If it's false, skips to the next 
<+">condition<-">, if there is one; otherwise, performs <+">else_action.<-"><-">

<:R1,1,1,1890,><:#200,8486><+">action<-">

@1st lev para@<:R1,1,1,1890,><:#200,8486>An action to be performed or a value to be returned if the preceding condition returns TRUE.

<:R1,1,1,1890,><:#200,8486><+">else_action<-">

@1st lev para@<:R1,1,1,1890,><:#200,8486><-">An action to be performed or a value to be returned if none of the preceding conditions returns TRUE.<-">

@Chead@<:R><:#200,8486>Usage

<:#200,8486>In its simplest form, the If statement looks like this:<+!>@If(<-!><+"> condition 
<-"><+!>; <-!><+">action <-"><+!>; <-!><+">else_action <-"><+!>)<-!>. 

<:#800,8486>You can list up to 99 conditions and corresponding actions, followed by just 1 action to be performed when the conditions are all false. As soon as a condition evaluates TRUE, Notes performs the associated actions and ignores the remainder of the If stateme
nt. Notes accepts <+!>@If( <-!><+">condition<+!><-"> )<-!>, but does not perform any action based on the condition.

@Chead@<:#200,8486>Examples 

@Mono@<:#200,8486>@If(CostOfGoods<;>=12.45;</S>Over Budget</T>;</S>Bill of Materials OK</T>) 

<:#600,8486>Looks at the single value in the field named CostOfGoods. If the value is greater than or equal to 12.45, the condition is TRUE, and the string 
<+!>Over Budget<-!> is returned. If the value is less than 12.45, the condition is FALSE and the string 
<+!>Bill of Materials OK<-!> is returned. 

@Mono@<:#200,8486>@If(CostOfGoods<;>=12.45;</S>Over Budget</T>;</S></T>) 

<:#200,8486>In the example above, if CostOfGoods is less than 12.45, the null string is returned.

@Mono@<:R1,1,1,1830,><:#400,8486>@If(CostOfGoods<;>12.45;</S>Over Budget</T>;CostOfGoods<<12.45;<**>	</S>Bill of Materials OK</T>;</S>Estimate Right on Target</T>)

<:R><:#1200,8486>In this example, @If looks at the value in the field named CostOfGoods; if the value is greater than 12.45, then the string 
<+!>Over Budget<-!> is returned; if not, Notes skips to the next condition. The second condition also evaluates the CostOfGoods field and if the value is less than 12.45, then the condition is TRUE and Notes returns the string 
<+!>Bill of Materials OK<-!>. If the value is neither greater than nor less than 12.45, Notes moves on to the 
</S>else</T> action specified, and the string <+!>Estimate Right on Target<-!> is returned. 

@Mono@<:#400,8486>@If(@IsNewDoc;NewNoteTitle;@ViewTitle = </S>Author View</T>;ByAuthorTitle;    StandardTitle)

<:#800,8486>Notes first checks that the document has never been saved; if this is true, the value in the field NewNoteTitle is returned. If the first condition is false, Notes then checks whether the view is the Author View; if this is true, the value in the field ByAu
thorTitle is returned. If both conditions are false, the value in the field StandardTitle is returned.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@V2If<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Implode

<:#200,8486><:X8,70;Index "@Implode" #>Concatenates all members of a text list and returns a text string.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Implode(<-!><+"> textlistValue <-"><+!>)<-!> or<+!><**>@Implode(<-!><+"> textlistValue 
<-"><-!><+!>;<-!><+"> separator <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">textListValue<-">

@1st lev para@<:#400,8486><-">Text or text list. List containing the items you want to concatenate into a single string. If you send a single piece of text instead of a list, @Implode returns the text unaltered.<-"><-"><-">

<:#200,8486><+">separator<-">

@1st lev para@<:#400,8486><-">Text. Used to separate the values in the concatenated string. If you don't specify a 
<+">separator, <-">a space is used.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">implodedString<-">

@1st lev para@<:#200,8486><-">Text. String containing each member of <+">textListValue, <-">separated by 
<+">separator.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples

<:#400,8486><:f,QCourier New,>@Implode(City)<:f> returns <+!>Minneapolis Detroit Chicago<-!> if the contents of the City field is 
</S>Minneapolis</T>:</S>Detroit</T>:</S>Chicago</T>. 

<:#400,8486><:f,QCourier New,>@Implode(City;</S>,</T>)<:f> returns <+!>Minneapolis,Detroit,Chicago<-!> if the contents of the City field is 
</S>Minneapolis</T>:</S>Detroit</T>:</S>Chicago</T>. 

<:#600,8486><:f,QCourier New,>@Implode(Categories + </S>/</T> + City ; </S> : 
</T>)<:f> returns <+!>European Capitals/Bonn : European Capitals/Lisbon : European Capitals/Madrid<-!> if the contents of the Categories field is European Capitals, and the contents of the Cities field is a list consisting of Bonn, Lisbon, and Madrid.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Explode<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@InheritedDocumentUniqueID<:X8,71;Index "@InheritedDocumentUniqueID" #>

<+@><:#400,8486>The unique ID of the current document's parent. This ID is the same across all of the database replicas on all servers the database resides on.

@Chead@<+@><:#200,8486>Syntax

<:#200,8486><+!>@InheritedDocumentUniqueID<-!>

@Chead@<:#200,8486>Usage

<:#400,8486>In a field formula, @InheritedDocumentUniqueID creates a doclink to the current document (not the parent document).

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_INHERITEDDOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486><+)>@DocumentUniqueID<-)><+*>H_DOCUMENTUNIQUEID<-*>

@Chead title@<:#200,8486>Examples: @InheritedDocumentUniqueID

<:#200,8486>

@Bhead title@<:#220,8486>@Integer

<:#600,8486><:X8,71;Index "@Integer" #>Truncates the values in a number or number list at the whole number, leaving off any decimals. The values in the resulting list are separated using the multi</m>value separator selected for display in the field containing the form
ula.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Integer(<-!><+"> numberValue <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">numberValue<-">

@1st lev para@<:#200,8486><-">Number or number list. The value(s) you want to truncate.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">truncatedValue<-">

@1st lev para@<:#200,8486><-">Number or number-list. The truncated value(s).<-"><-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Integer(123.001 : 789.999)<:f> returns <+!>123;789<-!>.

<:#400,8486><:f180,QCourier New,0,0,0>@Integer(Sales:CommissionRate:Commission)<:f> returns 
<+!>127580;5;7341<-!> if the numbers in the Sales, CommissionRate, and Commission fields are 127580.35, 5.75, and 7341.62015 respectively.

<:#200,8486><:f180,QCourier New,0,0,0>@Integer(3.12)<:f> returns <+!>3<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Integer(6.735)<:f> returns <+!>6<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Round<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@IsAvailable

<:#200,8486><:X8,72;Index "@IsAvailable" #>Checks a document for the existence of a field name.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsAvailable( <-!><+">fieldName<-"><+!> )<-!><-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">fieldName<-">

@1st lev para@<:#200,8486><-">Field. The name of a field.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486>Returns 1 (TRUE) if the field is contained in the document, otherwise 0 (FALSE).

@Chead@<:#200,8486>Usage

<:#400,8486>Use @IsAvailable to provide a default value for documents created with forms that do not include a field name.

@Chead@<:#200,8486>Examples

@Mono@<:#200,8486>@If(@IsAvailable(Dept);Dept;</S>Consultant</T>) 

<:#200,8486>Returns the value of the field named Dept if it exists in the document, otherwise returns 
<+!>Consultant<-!>. 

@Mono@<:#200,8486>@If(@IsAvailable(Topic);Topic;Subject) 

<:#400,8486>Returns the value of the field named Topic if it exists in the document, otherwise returns the value contained in the field named Subject.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsUnavailable<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@IsCategory

<:#400,8486><:X8,72;Index "@IsCategory" #>In a column formula, eturns a specified string based upon whether any item in the row of a view is defined as a category. 

@Chead@<:#200,8486>Syntax

<:#600,8486><+!>@IsCategory<-!><+!><**>@IsCategory(<-!><+"> <-"><+">trueString<-"><+!> )<-!><+!><**>@IsCategory( 
<-!><+">t<-"><+">rueString <-"><+"> <-"><+!>; <-!><+">falseString 
<-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">trueString<-">

@1st lev para@<:#200,8486><-">Text. A string to return if an item in the view row is a category.<-">

<:#200,8486><+">falseString<-">

@1st lev para@<:#200,8486><-">Text. A string to return if no item in the row is a category.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">specifiedString<-">

@1st lev para@<:#800,8486>Text. With no parameters, @IsCategory returns<:f180,,> *<:f> if the entry is a category, and returns nothing if the entry is a document. With a single 
<+">trueString<-"> parameter, returns <+">trueString <-">instead of *. With both 
<+">trueString <-">and <+">falseString<-"> parameters, returns <+">trueString 
<-">instead of * and <+">falseString <-"> instead of nothing.

@Chead@<:#200,8486>Usage

<:#200,8486>@@IsCategory is only intended for use in column formulas.

<:#400,8486>This function only looks at the columns to its right, so be sure to place it to the left of the categorized column you</R>re referring to.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsCategory<:f> returns <+!>*<-!> if the row is a category, or nothing if the row is not a category. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsCategory(</S>C</T>)<:f> returns <+!>C<-!> if the row is a category, or nothing if the row is not a category. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsCategory(</S>Y</T>;</S>N</T>)<:f> returns 
<+!>Y<-!> if the row is a category, or <+!>N<-!> if the row is not a category. 

<:#200,8486>

@Bhead title@<:#220,8486>@IsDocBeingEdited<:X8,73;Index "@IsDocBeingEdited" #>

<:#400,8486>Checks the current status of the document and returns 1 (TRUE) if the document is being edited; otherwise returns 0 (FALSE).

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsDocBeingEdited<-!>

@Chead@<:#200,8486><+!>Return Value<-!>

<:#200,8486><-!><-"><+">flag<-"><-"><-!><-"><-!><-"><-!><-">

@1st lev para@<:#200,8486><-">Boolean. Returns 1 (TRUE) only when the document is being edited. Otherwise returns 0 (FALSE).<-"><-"><-">

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486>@IsDocBeingLoaded

@Crossref@<:#200,8486>@IsDocBeingMailed

@Crossref@<:#200,8486>@IsDocBeingRecalculated

@Crossref@<:#200,8486>@IsDocBeingSaved

@Bhead title@<:#220,8486>

@Bhead title@<:#220,8486>@IsDocBeingLoaded<+!> 

<:#400,8486><:X8,73;Index "@IsDocBeingLoaded" #>Checks the current status of the document and returns 1 (TRUE) if the document is being loaded into memory for display; otherwise returns 0 (FALSE). 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsDocBeingLoaded<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. Returns 1 (TRUE) only when the document is actually being loaded into memory. Otherwise returns 0 (FALSE).<-">

@Chead@<:#200,8486>Usage

<:#200,8486>Use @IsDocBeingLoaded in field and form formulas.

@Chead@<:#200,8486>Examples

<:#200,8486>@@IsDocBeingLoaded returns <+!>1<-!> when the document is being loaded into memory. 

<:#200,8486>@@IsDocBeingLoaded returns <+!>0<-!> when the document is saved.

@Mono@<:R1,1,1,1890,><:#400,8486>@If(@IsDocBeingLoaded;$UpdatedBy;@IsDocBeingRecalculated;<**>	(</S>Current Editor 
</V> </T> + @UserName):$UpdatedBy;Editors) 

<:R><:#800,8486>The above example, when used in a computed field named </S>Editors,</T> displays the contents of $UpdatedBy when the document is being loaded. When the user recalculates the field (by pressing 
<+!>F9)<-!>, the field displays the user</R>s name as the current editor, followed by previous editors</R> names. When the document is saved, the value of 
</S>Editors</T> remains unchanged.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsDocBeingEdited

@Crossref@<:#200,8486><+)>@IsDocBeingMailed<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingRecalculated<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingSaved<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsDocBeingMailed

<:#400,8486><:X8,74;Index "@IsDocBeingMailed" #>Checks the current status of the document and returns 1 (TRUE) if the document is being mailed; otherwise returns 0 (FALSE). 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsDocBeingMailed <-!>

@Chead@<:#200,8486>Return Values

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. Returns 1 (TRUE) only while the document is actually being mailed. Otherwise returns 0 (FALSE).<-">

@Chead@<:#200,8486>Usage

<:#200,8486>Use @IsDocBeingMailed in field formulas and buttons.

<:#600,8486>This function is useful for calculating the number of times the user has mailed a document, including the number of times the document has been forwarded. It is also useful for changing a document during mailing; for example, you can change a document</R>s 
form when it is mailed.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsDocBeingMailed<:f> returns <+!>1<-!> when the document is being mailed. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsDocBeingMailed<:f> returns <+!>0<-!> before and after the document has been mailed.

@Mono@<:#200,8486>@If(@IsUnavailable(TimesMailed);0;TimesMailed+@IsDocBeingMailed)

<:#1000,8486>Can be used as a formula in a field to calculate the number of times a document has been mailed. When this formula is provided as the definition of a computed field called TimesMailed, the field is initialized to 0 (since the document has not been mailed). 
TimesMailed is incremented with every mail operation, so if the document has been mailed once, the contents become 1, and the count increases by one each time the document is mailed.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsDocBeingEdited<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingLoaded<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingRecalculated<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingSaved<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@IsDocBeingRecalculated

<:#400,8486><:X8,75;Index "@IsDocBeingRecalculated" #>Checks the current status of the document and returns 1 (TRUE) if the document is being recalculated; otherwise returns 0 (FALSE). 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsDocBeingRecalculated<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486>Boolean. Returns 1 (TRUE) only when the fields on the document are actually being recalculated. Otherwise returns 0 (FALSE).

@Chead@<:#200,8486>Usage

<:#200,8486>Use @IsDocBeingRecalculated in field formulas and buttons.

<:#400,8486>Remember, if you are using this function to increment a counter, the count increases by one every time the user recalculates the fields on a form.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsDocBeingRecalculated<:f> returns <+!>1<-!> while the document is being calculated or recalculated. 

<:#200,8486><:f,QCourier New,>@IsDocBeingRecalculated<:f> returns <+!>0<-!> before and after the document is calculated or recalculated. 

@Mono@<:#200,8486>@If(@IsDocBeingRecalculated;@Now;@Created) 

<:#600,8486>Can be used in a time</m>date field to display different dates under different circumstances. The formula causes the current time</m>date to be displayed if the document is recalculated during the editing process; otherwise, it displays the original creatio
n date of the document.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsDocBeingEdited<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingLoaded<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingMailed<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingSaved<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsDocBeingSaved

<:#400,8486><:X8,75;Index "@IsDocBeingSaved" #>Checks the current status of the document and returns 1 (TRUE) if the document is being saved; otherwise returns 0 (FALSE).

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@IsDocBeingSaved

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486>Boolean. Returns 1 (TRUE) only when the document is actually being saved. 

@Chead@<:#200,8486>Usage

<:#200,8486>Use @IsDocBeingSaved in field formulas and buttons.

<:#400,8486>Remember, if you are using this function to increment a counter, the count increases by one every time the user saves the document.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsDocBeingSaved<:f> returns <+!>1<-!> while the document is being saved. 

<:#200,8486><:f,QCourier New,>@IsDocBeingSaved<:f> returns <+!>0<-!> before or after the document is saved. 

@Mono@<:#200,8486>@If(@IsDocBeingSaved;</S>Admins</T>;Readers)

<:#600,8486>The formula above sets the field named Readers, which is a Reader Names field, to Admins when the document is saved. Otherwise, it sets the Readers field to the value already in the field. This type of formula is useful for changing the Read Access of a doc
ument after it has been composed and saved.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsDocBeingEdited<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingLoaded<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingMailed<-)>

@Crossref@<:#200,8486><+)>@IsDocBeingRecalculated<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@IsError

<:#200,8486>Returns 1 (TRUE) if the value is an @ERROR value, returns 0 (FALSE) if not an error.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsError(<-!><+"> value <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Any data type. Any value. <+!><+">YY True?<-"><-!><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486>Boolean. <:X8,76;Index "@IsError" #>Returns 1 (TRUE) if the value is an @ERROR value, returns 0 (FALSE) if not an error.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsError(1/0)<:f> returns <+!>1<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsError(1/2)<:f> returns <+!>0<-!>.

<:#600,8486><:f180,QCourier New,0,0,0>@If(@IsError(Price);@Failure(</S>There is an error in the price field</T>);@Success)<:f> checks to see if there is an @ERROR in the field named Price, and returns 
</S>There is an error in the price field</T> if it encounters an error, otherwise it returns 0.

<:#200,8486>

@Bhead title@<:#220,8486>@IsExpandable<:X8,77;Index "@IsExpandable" #>

<:#200,8486>In column formulas, returns a specified string based upon whether a row in a view can be expanded.

@Chead@<:#200,8486>Syntax

<:#600,8486><+!>@IsExpandable<**>@IsExpandable(<-!><+"> <-"><+">trueString<-"><+"><-%> 
<-"><+!>)<**>@IsExpandable(<-!><+"> <-"><+">trueString<-"><+"><-%> 
<-"><+"> <-"><+!>;<-!><+"> <-"><+">falseString<-"><+"><-%> <-"><+!>)<-!><-%><-%><-%><-%><-%><-%><-%><-%><-%>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">trueString<-">

@1st lev para@<:#200,8486><-">Text. A string to return if the view row is expandable.<-">

<:#200,8486><+">falseString<-">

@1st lev para@<:#200,8486><-">Text. A string to return if the view row is not expandable.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">specifiedString<-">

@1st lev para@<:#800,8486>Text. With no parameters, returns <+!>+<-!> if the entry is expandable and 
<+!></V> <-!>if the entry is not expandable. With a single <+">trueString<-"> argument, returns the 
<+">trueString<-"> instead of <+!>+<-!> if the entry is expandable and nothing if it is not expandable. The two parameter form returns 
<+">trueString<-"> instead of <+!>+<-!> and <+">falseString<-"> instead of 
<+!></V><-!>. 

@Chead@<:#200,8486>Usage 

<:#400,8486>Use @IsExpandable in column formulas to indicate whether the current level of documents can be expanded.

<:#400,8486>In the single parameter and two parameter forms, it</R>s a good idea to limit the string to a single character, especially if the lines already have a lot of text on them.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsExpandable<:f> returns <+!>+<-!> if the document or category is expandable, or 
<+!>-<-!> if it is not expandable. 

<:#200,8486><:f,QCourier New,>@IsExpandable(</S>&</T>)<:f> returns <+!>&<-!> if the document or category is expandable. 

<:#400,8486><:f,QCourier New,>@IsExpandable(</S>Y</T>;</S>N</T>)<:f> returns <+!>Y<-!> if the document or category is expandable, or 
<+!>N<-!> if it is not expandable.

<:#200,8486>

@Bhead title@<:#220,8486>@IsMember

<:#400,8486>Indicates if a piece of text (or a text-list) is contained within another text-list. The function is case</m>sensitive.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@IsMember(<-!><+">textValue <-"><+!><-%>;<-!><+"> textListValue 
<-"><+!><-%>)<-!><+!><**>@IsMember(<-!><+">textListValue1 <-"><+!><-%>;<-!><+"> textListValue2<-"> 
<+!><-%>)

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><-"><+">textValue<-"><-">

@1st lev para@<:#200,8486><-">Text.<-">

<:#200,8486><+">textListValue<-">

@1st lev para@<:#200,8486><-">Text-list.<-">

<:#200,8486><+">textListValue1<-">

@1st lev para@<:#200,8486>Text-list.

<:#200,8486><+">textListValue2<-">

@1st lev para@<:#200,8486><-">Text-list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. <:X8,78;Index "@IsMember" #>Returns 1 (TRUE) if the <+">textValue<-"> is contained in 
<+">textListValue<-">; returns 0 (FALSE) if not. If both parameters are lists, returns 1 if all elements of 
<+">textListValue1<-"> are contained in <+">textListValue2<-">.<-#><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Usage

<:#600,8486>In processing lists, @IsMember differs from a simple = test. An = returns TRUE if the intersection of 2 entities has even one member, that is, the intersection is non</m>empty. @IsMember returns TRUE only if the first parameter is a subset of the second.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@IsMember(</S>computer</T>;</S>printer</T>:</S>computer</T>:</S>monitor</T>)<:f> returns 
<+!>1<-!>. 

<:#200,8486><:f,QCourier New,>@IsMember(</S>computer</T>:</S>Notes</T>;</S>Notes</T>:</S>printer</T>:</S>monitor</T>)<:f> returns 
<+!>0<-!>. 

<:#400,8486><:f,QCourier New,>@IsMember(</S>R&D</T>;Department)<:f> returns 1 if R&D is in the list in the field Department; returns 0 if R&D is not in the list. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsNotMember<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsNewDoc

<:#200,8486>For a document being edited, indicates if the document has been saved to disk.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsNewDoc<-!>

@Chead@<:#200,8486><+!>Return Value<-!>

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. <:X8,78;Index "@IsNewDoc" #>Returns 1 (TRUE) if the document being edited has not yet been saved to disk; returns 0 (FALSE) if the document has been saved.<-"><-"><-">

@Chead@<:#200,8486><+!>Usage

<:#400,8486>This function evaluates the current state of the document when it is used in window title formulas, SmartIcons, buttons, and field and form formulas. In other contexts, it 
<+">always<-"> returns a 0.

@Chead@<:#200,8486>Examples 

@Mono@<:#200,8486>@If(@IsNewDoc;</S>New Document</T>;Subject) 

<:#600,8486>When used in a window title formula, this returns <+!>New Document<-!> while the document is composed the first time. When a document is opened after it has been saved, this formula returns the value of the Subject field.

@Mono@<:#400,8486>@If(@IsNewDoc;</S>New General Information</T>; </S>General Information for</T>   + EmpName + 
</S>/</T> + EmpNumber) 

<:#600,8486>If a new document is being created, the string <+!>New General Information<-!> appears in the window title. When an existing document is opened, the string 
<+!>General Information for<-!>, then the contents of the field EmpName, then a slash and then the contents of the field EmpNumber appear in the window title.

<:#400,8486><+!><+">YY how to use a form formula that's been coded for a view, but you don't want it to execute when users create new documents from the create menu:<-!><-">

<:#200,8486><+"><+!>@If(@IsNewDoc;Form;<<your current formula goes here<;>)<-"><-!>

<:#200,8486>

@Bhead title@<:#220,8486>@IsNotMember<:X8,79;Index "@IsNotMember" #>

<:#400,8486>Indicates if a text string (or a text-list) is not contained within another text-list. The function is case</m>sensitive.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@IsNotMember(<-!> <+">textValue <-"><+!><-%>;<-!> <+">textListValue 
<-"><+!><-%>)<-!> or<+!><**>@IsNotMember(<+%> <-!><-%><+">textListValue1 
<-"><+!><-%>;<-!> <+">textListValue2<-"> <+!><-%>)<-!><-%><-%><-%>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><-"><+">textValue<-"><-"><-"><-">

@1st lev para@<:#200,8486><-">Text.<-"><-"><-">

<:#200,8486><+">textListValue<-">

@1st lev para@<:#200,8486><-">Text-list.<-"><-"><-">

<:#200,8486><+">textListValue1<-">

@1st lev para@<:#200,8486>Text-list.

<:#200,8486><+">textListValue2<-">

@1st lev para@<:#200,8486><-">Text-list.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#600,8486><-">Boolean. <:X8,79;Index "@IsMember" #>Returns 1 (TRUE) if the <+">textValue<-"> is not contained in 
<+">textListValue<-">; returns 0 (FALSE) if it is contained . If both parameters are lists, returns 1 if all elements of 
<+">textListValue1<-"> are <+">not<-"> contained in <+">textListValue2<-">.<-#><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Usage

<:#600,8486>Remember that in processing lists, @IsNotMember differs from a simple != test. != returns TRUE if the intersection of 2 entities has no entities in common. @IsNotMember returns TRUE only if no member of the first argument is contained in the second argument
.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@IsNotMember(</S>computer</T>;</S>printer</T>:</S>computer</T>:</S>monitor</T>)<:f> returns 
<+!>0<-!>. 

<:#400,8486><:f,QCourier New,>@IsNotMember(</S>R&D</T>;Department)<:f> returns 1 if R&D is not in the list of values in the field name Department; returns 0 if R&D is in the list. 

@Mono@<:#400,8486>FIELD Dept:=@If(@IsNotMember(@Username;SalesDepartment);<**>   </S>Marketing</T>; 
</S>Sales</T>); 

<:#400,8486>returns <+!>Marketing<-!> in the field named Dept if the current user is not contained in the list in the field SalesDepartment; otherwise 
<+!>Sales<-!> is returned in the Dept field.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsMember<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsNumber<:X8,80;Index "@IsNumber" #>

<:#200,8486>Indicates if a given value is a number (or a number list).

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@IsNumber(<-!><+"> value <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Any data type. Any value.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486><-">Boolean. Returns 1 (TRUE) if the <+">value<-"> is a number or a number list; otherwise returns 0 (FALSE).<-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Usage

<:#200,8486>This is a useful function for checking to see that you have assigned field data types correctly.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@IsNumber(123)<:f> returns <+!>1<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsNumber(@Created)<:f> returns <+!>0<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsNumber(</m>345:2.78:997:.7)<:f> returns 
<+!>1<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@IsNumber(CostCenters)<:f> returns 1 if the field named CostCenters contains a list of number values; returns 0 if the list contains at least one text string. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsText<-)>

@Crossref@<:#200,8486><+)>@IsTime<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsResponseDoc

<:#200,8486>Indicates if a document is a response to another document. <:X8,80;Index "@IsResponseDoc" #>

<:#200,8486><+!>Syntax

<:#200,8486><+!>@IsResponseDoc<-!>

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#600,8486><-">Boolean. Returns 1 (TRUE) if the document is a response document, otherwise returns 0 (FALSE). Returns 0 for new documents, since @IsResponseDoc doesn</R>t recognize a document</R>s type until after the document is saved.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>A response document is one that was composed with a form whose type is either Response or Response to Response. The designer uses the Form InfoBox to specify the type.

@Chead@<:#200,8486>Example

<:#400,8486><:f,QCourier New,>@If(@IsResponseDoc;</S>Response</T>;</S>Topic</T>)<:f> returns 
<+!>Response<-!> if the document is a response; <+!>Topic<-!> if the document is not a response.

<:#200,8486>

@Bhead title@<:#220,8486>@IsText

<:#200,8486>Indicates if a value is text (or a text list).<:X8,81;Index "@IsText" #>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsText(<-!><+"> value<-"><+!> )<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Any data type. Any value.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486><-">Boolean. Returns 1 (TRUE) if the <+">value<-"> is text or a text list; otherwise returns 0 (FALSE).<-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@IsText(</S>Blanchard & Sons</T>)<:f> returns <+!>1<-!>. 

<:#400,8486><:f,QCourier New,>@IsText(BranchOffices)<:f> returns <+!>1<-!>, if the field named BranchOffices contains the text string list 
</S>New Orleans</T>:</S>Houston</T>:</S>Dallas</T>:</S>Mobile</T>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsNumber<-)>

@Crossref@<:#200,8486><+)>@IsTime<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@IsTime

<:#200,8486>Indicates if a value is a time-date (or a time-date list).

@Chead@<:#200,8486><:X8,81;Index "@IsTime" #>Syntax

<:#200,8486><+!>@IsTime( <-!><+">value<-"><+!> )<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Any data type. Any value.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. Returns 1 (TRUE) if the <+">value<-"> is a time</m>date or a time</m>date list; otherwise returns 0 (FALSE).<-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@IsTime(DueDate)<:f> returns <+!>1<-!> if the field named DueDate contains a time</m>date value. 

<:#200,8486><:f180,QCourier New,0,0,0>@IsTime(123)<:f> returns <+!>0<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsNumber<-)>

@Crossref@<:#200,8486><+)>@IsText<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@IsUnavailable

<:#200,8486>Indicates if a field name exists on a document.<:X8,82;Index "@IsUnavailable" #>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@IsUnavailable( <-!><+">fieldname<-"><+!> )<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+"><+#>fieldname<-"><-#>

@1st lev para@<:#200,8486><-">The name of a field. Do not enclose the name in quotes.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#200,8486><-">Boolean. Returns 1 (TRUE) if the field name is not contained in the document, otherwise 0 (FALSE).<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>Use @IsUnavailable to provide default values for fields in documents created with forms that do not include a particular field name.

@Chead@<:#200,8486>Example

<:#400,8486><:f,QCourier New,>@If(@IsUnavailable(Dept);</S>Consultant</T>;Dept)<:f> returns 
<+!>Consultant<-!> if the field Dept does not exist; if Dept does exist, the value contained in Dept is returned.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@IsAvailable<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Keywords<:X8,82;Index "@Keywords" #>

<:#400,8486>Given two text lists, returns only those items from the second list that are found somewhere in the first list.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Keywords( <-!><+">textList1<-"><+!> ; <-!><+">textList2<-"><+!> )<-!> or<+!><**>@Keywords( 
<-!><+">textList1<-"><+!> ; <-!><+">textList2<-"> <+!>; <-!><+">separator<-"><+!> )<-!>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">textList1<-">

@1st lev para@<:#200,8486><-">Text list. A list of items that may or may not contain any of the items in 
<+">textList2<-">.<-">

<:#200,8486><+">textList2<-">

@1st lev para@<:#200,8486><-">Text list. A list of items that you want to compare to <+">textList1<-">.<-!><-!><-">

<:#200,8486><+">separator<-">

@1st lev para@<:#800,8486><-">Text. One or more characters to be used as delimiters between words. @Keywords considers each character (not the combination of mutiple characters) to be a delimiter. For example, defining separator as 
</S>. ,</T> (period, space, comma) tells the function that periods, spaces, and commas are not to be considered parts of the words.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">resultTextList<-">

@1st lev para@<:#1000,8486><-">Text list. A list containing each item from <+">textList2<-"> that was also found in 
<+">textList1<-">.<-!> If none of the items are found, returns a null string (""). In the three</m>argument form, the returned value(s) are the result of exactly matching characters and must be preceded by the separator defined in the third argument.<-!><-">

@Chead@<:#200,8486>Usage

<:#600,8486>In the two</m>argument form of the function, the default word delimiters are<**></T> , ? ! ; : <[>] () {} <<<;>  (double quotes, space, comma, question mark, exclamation point, semicolon, colon, brackets, parentheses, braces, and angle brackets). 

<:#400,8486>This function is case sensitive; you must standardize the case of stringlist1 and stringlist2 if you want case to be ignored (use @LowerCase, @ProperCase or @UpperCase).

@Chead@<:#200,8486>Examples

@Mono@<:R1,1,1,1890,><:#600,8486>@Keywords(</S>EPA Head speaks at Harvard,Yale</T>:</S>UCLA Chancellor Retires</T>:</S>Ohio State wins big game</T>:</S>Reed and University of Oregon share research facilities</T>;</S>Harvard</T>:</S>Brown</T>:</S>Stanford</T>:</S>Yale</T>:</S>Vassar</T>:</S>
UCLA</T>) 

<:R><:#200,8486>returns <+!>Harvard;Yale;UCLA<-!>. 

@Mono@<:R1,1,1,1890,><:#600,8486>@Keywords(</S>EPA Head speaks at Harvard,Yale</T>:</S>UCLA Chancellor Retires</T>:</S>Ohio State wins big game</T>:</S>Reed and University of Oregon share research facilities</T>;</S>harvard</T>:</S>brown</T>:</S>stanford</T>:</S>vassar</T>:</S>ucla</T>) 

<:R><:#200,8486>returns <+!></S><-!><+!></T><-!>, a null string. 

@Mono@<:#600,8486>@Keywords(</S>EPA Head speaks at Harvard,Yale</T>:</S>UCLA Chancellor Retires</T>:</S>Ohio State wins big game</T>:</S>Reed and University of Oregon share research facilities</T>;</S>Harvard</T>:</S>Brown</T>:</S>Stanford</T>:</S>Yale</T>:</S>UCLA</T>;</S>,
</T>) 

<:#200,8486>returns <+!>Yale<-!>.

<:#600,8486><+!><+">YY Thus, @Keywords(A; B; ", ") (comma space) would parse the text list in A by commas and spaces.  For example, "EPA Head speaks at Harvard, Yale, Ohio State" would be parsed out into "EPA" : "Head" : "speaks" : "at" : "Harvard" : "Yale" : "Ohio" : 
"State"<-"><-!>

@Bhead title@<:#220,8486>@Left

<:#200,8486><:X8,83;Index "@Left" #>Searches a string from left to right and returns the leftmost characters of the string.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Left( <-!><+">stringToSearch<-"><+"> <-"><+!>; <-!><+">numberOfChars<-"> 
<+!>)<-!><+!><**>@Left( <-!><+">stringToSearch<-"> <+!>; <-!><+">subString<-#><-"><-#> 
<+!>)<-!><-#><-#><-#><-#><-#><-#><-#><-#>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">stringToSearch<-">

@1st lev para@<:#200,8486>Text. The string whose leftmost characters you want to find.

<:#200,8486><+">numberOfChars<-">

@1st lev para@<:#400,8486>Number. The number of characters to return. If the number is 2, the first two characters of the string are returned; if the number is 5, the first five characters are returned, and so on.

<:#200,8486><+">subString<-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">stringToSearch. <-">@Left returns all of the characters to the left of 
<+">subString. <-">It finds <+">subString<-"> by searching <+">stringToSearch<-"> from left to right.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">resultString<-">

@1st lev para@<:#400,8486>Text. The left-most characters in <+">stringToSearch<-">. The number of characters returned is determined by either 
<+">numberOfChars<-"> or <+">stopString<-">.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Left(</S>Lennard Wallace</T>;3)<:f> returns <+!>Len<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Left(Contact;</S>la</T>)<:f> returns <+!>Lennard Wal<-!> if the string in the field named Contact is Lennard Wallace. 

<:#200,8486><:f180,QCourier New,0,0,0>@Left(Author;3)<:f> returns <+!>Tim<-!> if the string in the field named Author is Timothy Altman. 

<:#200,8486><:f180,QCourier New,0,0,0>@Left(Author;</S> </T>)<:f> returns <+!>Timothy<-!> if the string in the field named Author is Timothy Altman.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

@Bhead@<:#220,8486>

@Bhead title@<:#220,8486>@LeftBack

<:#200,8486><:X8,84;Index "@LeftBack" #>Searches a string from right to left and returns a substring.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@LeftBack( <-!><+">stringToSearch<-"> <+!>; <-!><+">numToSkip<-"><+!> )<-!> or<+!><**>@LeftBack( 
<-!><+">stringToSearch<-"><+!> ; <-!><+">startString <-"><+!>)<-#><-!><-#><-#><-#><-#><-#>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">stringToSearch<-">

@1st lev para@<:#200,8486>Text. The string whose leftmost characters you want to find.

<:#200,8486><+">numToSkip<-">

@1st lev para@<:#400,8486><-">Number. Counting from right to left, the number of characters to skip. All the characters to the left of that number of characters are returned.<-"><-"><-">

<:#200,8486><+">startString<-">

@1st lev para@<:#200,8486>Text. A substring of <+">stringToSearch<-">. All the characters to the left of 
<+%>string2<-%> <+">startString<-"> are returned.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">resultString<-">

@1st lev para@<:#400,8486><-">Text. The left-most characters in <+">stringToSearch<-">. The number of characters returned is determined by either 
<+">numToSkip <-">or <+">startString<-">.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@LeftBack(</S>Lennard Wallace</T>;3)<:f> returns 
<+!>Lennard Wall<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@LeftBack(</S>Lennard Wallace</T>; </S> 
</T>)<:f> returns <+!>Lennard<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@LeftBack(Author;3)<:f> returns <+!>Timothy Alt<-!> if the string in the field named Author is Timothy Altman.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

@Bhead@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#220,8486>

@Bhead title@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#220,8486>@Length

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486>Returns the number of characters in a text string.

@Chead@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486>Syntax

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+!>@Length(<-!> <+">string<-"> <+!>)<-!> or

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+!>@Length(<-!> <+">stringlist<-"> <+!>)<-!>

@Chead@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+!>Parameters

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+">string<-">

@1st lev para@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><-">Text. A single string whose length you want.<-">

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+">stringList<-">

@1st lev para@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486>Text list. A list of strings.

@Chead@<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486>Return Value

<:R1,4,1,2606,1,2869,1,3347,1,3826,><:#200,8486><+">length<-">

@Indnt bullet@<:R><:#400,8486><:X8,85;Index "@Length" #>If the parameter is a text string, @Length returns the number of characters in the specified string, including spaces and punctuation.

@Indnt bullet@<:#400,8486>If the argument is a text list, @Length searches the list of strings and returns the number of characters in each string, as a number list.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Length(</S>The boy crossed the wide, but gentle, stream.</T>)<:f> returns 
<+!>45<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Length(</S></T>: </S>abcde</T>: </S>xyz</T> )<:f> returns 
<+!>0;5;3<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Length(From: Topic: @Text(Date))<:f> returns 
<+!>16;10;17<-!> if the contents of the fields From, Topic, and Date are Stephen Brewster, News Flash, and 04/11/89 16:45:10, respectively.

<:#200,8486>

@Bhead title@<:#220,8486>@Like<:X8,85;Index "@Like" #>

<:#200,8486>Matches a string with a pattern. Case-sensitive. Supports the NotesSQL ODBC driver.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Like( <-!><+">string <+!><-">; <-!><+">pattern <+!><-">)<**><-!><+!>@Like( 
<-!><+">string <+!><-">; <-!><+">pattern <+!><-">; <-!><+">escape 
<+!><-">)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486>Text. The value to be tested to see if it matches the <+">pattern.<-">

<:#200,8486><+">pattern<-">

@1st lev para@<:#400,8486>Text. The sequence of characters to search for within <+">string.<-">  May also contain any of the wildcard characters listed below.

<:#200,8486><+">escape<-">

@1st lev para@<:#200,8486>Text. Optional. Used before a wildcard character to indicate that it should be treated literally.

@Chead@<:#200,8486>Wildcard Characters

<:t11>

@Chead@<:#200,8486><+!>Return Values<-!>

@Bhead title@<:t10>

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Like( "A big test" ; "A_test" ) <:f>returns 
<:f180,QCourier New,0,0,0>0<:f>. The underscore matches only a single character.

<:#200,8486><:f180,QCourier New,0,0,0>@Like( "A big test" ; "A_____test" )<:f> returns 
<:f180,QCourier New,0,0,0>1<:f>. The five underscores match " <:f180,QCourier New,0,0,0>big 
<:f>".

<:#200,8486><:f180,QCourier New,0,0,0>@Like( "A big test" ; "%test" )<:f> returns 
<:f180,QCourier New,0,0,0>1<:f>. The <:f180,QCourier New,0,0,0>%<:f> matches "<:f180,QCourier New,0,0,0>A big 
<:f>".

<:#200,8486><:f180,QCourier New,0,0,0>@Like( "A big test" ; "A BIG test" )<:f> returns 
<:f180,QCourier New,0,0,0>0<:f>. @Like is case-sensitive.

<:#600,8486><:f180,QCourier New,0,0,0>@Like( "A 100% improvement" ; "A %\% improv%" ; "\" ) 
<:f>returns <:f180,QCourier New,0,0,0>1<:f>. The first percent  matches "<-!><:f180,QCourier New,0,0,0>100<-!><:f>". The 
<:f180,QCourier New,0,0,0>"\%" <:f>matches the percent sign because "<:f180,QCourier New,0,0,0>\"<:f> is specified as the escape character.  The last percent matches 
<:f180,BArial,0,0,0>"<:f180,QCourier New,0,0,0>ement<:f>".<-!><-!><-!>

<:#200,8486>

@Bhead title@<:#220,8486>@Ln

<:#200,8486><:X8,86;Index "@Ln" #>Returns the natural log of a number. Natural logs use 
<+">e<-"> (approximately 2.718282) as their base.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Ln( <-!><+">number<-"><+!> )<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. May be any value greater than 0, and can contain up to 15 decimal places<+%>)<-%>.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">naturalLog<-">

@1st lev para@<:#200,8486><-">Number. The natural log of <+">number.<-"><-"><-"><-">

@Chead@<:#200,8486>Usage

<:#200,8486>Use @Ln in formulas requiring natural logs, such as compound growth or loss.

<:#200,8486>@@Ln is the inverse of @Exp.

@Chead@<:#200,8486>Example

<:#200,8486><:f,QCourier New,>@Ln(2)<:f> returns <+!>0.693147180559945<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Exp<-)>

@Crossref@<:#200,8486><+)>@Log<-)>

@Crossref@<:#200,8486><+)>@Power<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Log

<:#200,8486><:X8,87;Index "@Log" #>Returns the common logarithm (base 10) of any number greater than zero.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Log( <-!><+">number <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. Must be greater than zero.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">commonLog<-">

@1st lev para@<:#200,8486><-">Number. The log of <+">number.<-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>Use @Log in any formula requiring a common log, such as the formula to calculate the root of a number. @Log is the reciprocal of scientific notation.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Log(4)<:f> returns <+!>0.602059991327962<-!>.

<:#200,8486><:f,QCourier New,>@Log(1.0E+14)<:f> returns <+!>14<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Exp<-)>

@Crossref@<:#200,8486><+)>@Ln<-)>

@Crossref@<:#200,8486><+)>@Power<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@LowerCase

<:#200,8486><:X8,87;Index "@LowerCase" #>Converts the uppercase letters in the specified string to lowercase.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@LowerCase(<-!><+"> string <-"><+!>)

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486>Text. The string you want to convert to lowercase.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">lowerCaseString<-">

@1st lev para@<:#200,8486>Text. The <+">sting, <-">converted to lowercase letters.

@Chead@<:#200,8486>Usage

<:#600,8486>This function is useful when you want to search for a particular value and cannot predict whether it will appear in lowercase, uppercase, or a combination of the two. You can also use it as an input translation formula to convert a field</R>s contents to lo
wercase.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@LowerCase(</S>Juan Mendoza</T>)<:f> returns <+!>juan mendoza<-!>. 

<:#400,8486><:f,QCourier New,>@LowerCase(Furniture)<:f> returns <+!>arm chair<-!> if the Furniture field contains 
</S>Arm Chair</T>, </S>Arm chair</T>, </S>arm chair</T>, or even </S>ARM CHAIR</T>.

<:#400,8486><:f,QCourier New,>@LowerCase(@Right(@UserName;</S> </T>))<:f> returns 
<+!>fletcher<-!> if William Fletcher is the name associated with the current User ID.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@ProperCase<-)>

@Crossref@<:#200,8486><+)>@UpperCase<-)>

@Crossref@<:#200,8486>

<:#200,8486>

@Bhead title@<:#220,8486>@MailDbName

<:#200,8486><:X8,88;Index "@MailDbName" #>Returns the name of the Notes server and the name of the current user</R>s Mail database.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@MailDbName

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">server<+!><-"> ; <-!><+">path<-">

@1st lev para@<:#400,8486>Text list with two elements. <+">server<-"> is the name of the server on which the current database resides, or the null string if the database is local. 
<+">path<-"> is the directory and file name of the database.

@Chead@<:#200,8486>Usage

<:#400,8486>The returned value is formatted as a two</m>item text list specifying the Server;Directory\Database.NSF, as in:

<:#200,8486>NOTESMAIL;LEGAL\DLEE.NSF

<:#600,8486>If the database is stored on the user</R>s own computer, Notes returns the null string for the server name. For example, a dial</m>up user may keep a local replica of her Mail database on her workstation; when she is set up for workstation</m>based mail, @M
ailDbName returns:

<:#200,8486>;DLEE.NSF

<:#400,8486>This is useful in applications that send mail, for example, you can use it to determine whether the current user is set up for server</m>based mail, and determine the appropriate course of action based on the result.

@Chead@<:#200,8486>Examples

<:#400,8486><:f,QCourier New,>@MailDbName<:f> returns <+!>;MTSEN.NSF<-!> if the user</R>s mail is in the MTSEN.NSF database stored on the user</R>s own computer and the user is set up to use workstation</m>based mail.

<:#600,8486><:f180,QCourier New,0,0,0>@MailDbName<:f> returns <+!>SALES1;MAIL\MTSEN.NSF<-!> if the user</R>s mail is stored in MTSEN.NSF in the MAIL directory on the SALES1 server and the user is set up to use server</m>based mail. If the database is stored at the serv
er</R>s root directory (that is, it is not stored in a subdirectory), the result would be 

@disp:sys@<:#200,8486><+!>SALES1;MTSEN.NSF<-!>. 

<:#400,8486>You can extract just the filename of the list by combining @MailDbName with @Subset, as shown in the example below.

<:#400,8486><:f180,QCourier New,0,0,0>@Subset(@MailDbName;</m>1)<:f> returns <+!>MTSEN.NSF<-!>, the file name, since this is the last element in the list returned by @MailDbName.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DbManager<-)>

@Crossref@<:#200,8486><+)>@DbName<-)>

@Crossref@<:#200,8486><+)>@DbTitle<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@MailSend

<:#200,8486>There are two ways to use @MailSend:

@Bullet@<:#600,8486>When used with no parameters, @MailSend mails the current document (the one being processed when the @function is evaluated) to the recipient designated in the document</R>s SendTo field. There 
<+">must<-"> be a SendTo field for this to work).

@Bullet@<:#600,8486>When used with one or more parameters, @MailSend composes a new mail memo based on the information you supply in the arguments list, and sends it to the recipients listed in the sendto, copyto, and blindcopyto arguments.

<:#200,8486><+!><+">YY Sal says this works to send mail to users of alternate mail, also. Investigate.<-"><-!>

@Chead@<:#200,8486><+!>Syntax

<:#400,8486><+!>@MailSend<-!><+!><**>@MailSend(<-!><+">sendTo <-"><+!>;<-!><+"> copyTo<-"><+!> 
<-!><+!>; <-!><+">blindCopyTo<-"><+!> <-!><+!>; <-!><+">subject<-"><+!> 
<-!><+!>; <-!><+">remark<-"><+!> <-!><+!>; <-!><-!><+!>"<+"><-!>bodyFields<+!><-">" 
<-!><-"><+!>; <[><-!><+"> flags<-"><+!> ]<-!><+!><-%> )<-!><:X8,89;Index "@MailSend" #><-!><-"><-%><-!><-"><-%><-!><-"><-%>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">sendTo<-">

@1st lev para@<:#200,8486>Text or text list. The primary recipient(s) of the mail memo.

<:#200,8486><+">copyTo<-">

@1st lev para@<:#200,8486><-">Text or text list. Optional. The copy recipient(s) of the mail memo.<-">

<:#200,8486><+">blindCopyTo<-">

@1st lev para@<:#200,8486>Text or text list. Optional. The blind copy recipient(s) of the mail memo.

<:#200,8486><+">subject<-">

@1st lev para@<:#600,8486><-">Optional. Text. Optional. The text you want displayed in the Subject field. This is equivalent to the Subject field on a mail memo; the message is displayed in the Subject column in the views in the recipients</R> mail databases.<-">

<:#200,8486><+">remark<-">

@1st lev para@<:#200,8486><-">Text. Optional. Any text you want at the beginning of the memo's body field.<-">

<:#200,8486><+!><-">"<+"><-!>bodyFields<+!><-">"<-!><-">

@1st lev para@<:#1400,8486>Text, rich text, or keyword. Optional. One or more fields from the current document that you want included in the mail memo. The fields are appended to the memo in the order in which you list them. Enclose each field name in quotation marks. If you want to 
list multiple fields, use the Notes list format: "description":"issues":"resolution". If you omit the bodyfield, you should use the <[>IncludeDocLink] flag (described below) to include a doclink to the current document--otherwise, the mail memo will have no
 body text. If Notes cannot locate a field by name, it uses the string literal instead.

<:#200,8486><+!><[><-!><+"> flags <-"><+!>]<-!>

@1st lev para@<:#600,8486>One or more flags indicating the memo</R>s priority and security. If you specify multiple flags, format them as a list, as in <[>Sign]:<[>PriorityHigh]:<[>ReturnReceipt]. Enclose each flag in square brackets as shown.

<:#200,8486>The available flags are:

<:#200,8486><+!><[>Sign]

@1st lev para@<:#400,8486>Electronically sign the memo when mailing it, using information from the user</R>s ID. Signing will not occur unless you include this flag.

<:#200,8486><+!><[><-!><+!>Encrypt]

@1st lev para@<:#400,8486>Encrypt the document using the recipient</R>s public key, so that only the recipient whose private key matches can read the document. Encryption will not occur unless you include this flag.

<:#200,8486><+!><[>PriorityHigh] <-!>

@1st lev para@<:#800,8486>Immediately routes the message to the next</m>hop server as defined by the combination of Mail Connection records and server records. If a phone call has to be made in order to route the message, then the call is placed immediately, regardless of the schedu
le set in the Remote Connection record. If you omit this flag, the priority defaults to Normal.

<:#200,8486><+!><[>PriorityNormal]

@1st lev para@<:#600,8486>Routes the message to the next</m>hop server based on the schedule defined in the Mail Connect records. If the recipient</R>s mail file resides on a server on the same Notes Network, then delivery occurs immediately. If you omit this flag, the priority defa
ults to Normal.

<:#200,8486><+!><[>PriorityLow] <-!>

@1st lev para@<:#1200,8486>Routes the message overnight if the recipient</R>s mail file does not reside on a server on the same Notes Network. If the recipient</R>s mail file does reside on a server on the same Notes Network, then delivery occurs immediately. Low Priority mail can al
so be controlled by a Notes environment variable called MailLowPriorityTime=x, where x is equal to a number from 0 to 23. When placed in the server NOTES.INI file, this variable tells the server when to route Low Priority mail. If you omit this flag, the pr
iority defaults to Normal.

<:#200,8486><+!><[>ReturnReceipt]

@1st lev para@<:#400,8486>Notify the sender when each recipient reads the message. No receipt is returned unless you include this flag.

<:#200,8486><+!><[>DeliveryReportConfirmed]

@1st lev para@<:#400,8486>Notify the sender whether delivery of the memo was successful or not. By default, the Basic delivery report is used, which notifies the sender only when a delivery failure occurs.

<:#200,8486><+!><[>IncludeDocLink]

@1st lev para@<:#400,8486>Include a doclink pointing to the document that was open or selected when @MailSend was used. You must include this flag if you want that document doclinked to the mail memo.

@Chead@<:#200,8486>Usage

<:#600,8486>Use @MailSend in execute</m>once macros, background macros, buttons, and SmartIcons. @MailSend is especially useful with background macros as a means of sending mail at a predetermined interval, for example, to send reminders about a departmental meeting.

<:#200,8486>If the user</R>s NOTES.INI file includes this statement:

<:#200,8486>NoExternalApps=1

<:#400,8486>then any formula involving @MailSend will be disabled. The user will not see an error message; the formula will simply fail to execute.

<:#1600,8486>When you use @MailSend with no parameters, the current document may contain one or more mail</m>related fields; if it does, those fields are used when routing the document. If the document contains the CopyTo or BlindCopyTo fields, it is routed to those rec
ipients at the same time. If the document contains the DeliveryPriority, DeliveryReport, or ReturnReceipt fields, they are used to control the delivery priority, generation of a delivery report, and generation of a return receipt, just as it</R>s done when 
you use the File - Mail </m> Memo <-!>command. If the document doesn</R>t contain these fields, they default to normal priority, no delivery report, and no return receipt, respectively.

@Chead@<:#200,8486>Examples

<:#400,8486>@@MailSend mails the current document to the people listed in the SendTo, CopyTo, and BlindCopyTo fields stored within the document.

@Mono@<:R1,1,1,1890,><:#600,8486>@MailSend(</S>David Lee/</T>;</S></T>;</S>Joseph Smith/Support</T>;</S>Status Report</T>;<**>	</S>Sorry it</R>s late!</T>; 
</S>STATUS</T>:</S>PLANS</T>; 		<[>Sign]:<[>DeliveryReportConfirmed]:<[>ReturnReceipt]) 

<:R1,1,1,1890,><:#1400,8486><**>sends a memo to David Lee with a blind copy to Joseph Smith in Support. The memo is titled 
</S>Status Report</T>, its body contains the message </S>Sorry it</R>s late!</T> and the contents of the STATUS and PLANS fields from the current document. The document is mailed with the following options: it is signed, delivery confirmation is requested, 
and a return receipt will be sent when each recipient reads the memo. Notice that the recipients are listed using distinguished naming syntax (available to Release 3 users only). The copyto information was omitted, and was replaced with the null string beca
use additional arguments follow. 

@Mono@<:R1,1,1,1890,><:#400,8486>@MailSend(</S>Mary Tsen/</T>:</S>Joseph Smith/Support</T>;</S></T>;</S></T>;TOPIC;</S></T>;<**>	</S>COMMENTS</T>)

<:R1,1,1,1890,><:#1000,8486><**>sends a memo to Mary Tsen and to Joseph Smith in Support. The subject will use the text stored in the current document</R>s TOPIC field, and the body of the memo will be drawn from the COMMENTS field. The copyto, blindcopyto, and remark arguments were o
mitted, and were replaced with null strings because additional arguments still followed. The flags were omitted but because no arguments followed their position, the null string was not needed.

@Mono@<:R><:#200,8486>@MailSend(</S>Mary Tsen/</T>;</S></T>;</S></T>;</S>Follow this doclink</T>;</S></T>;</S></T>;<[>IncludeDocLink])

<:#400,8486><**>sends a memo to Mary Tsen with the message </S>Follow this doclink</T> in the Subject field, and a doclink to the original document in the Body field.

<:#200,8486>

@Bhead title@<:#220,8486>@Matches

<:#400,8486><:X8,91;Index "@Matches" #>Tests a string for a pattern string. Because the pattern string can contain a number of 
</S>wildcard</T> characters and logical symbols, you can test for complex character patterns.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Matches(<-!><+"> string <-"><+!>;<-!><+"> pattern <-"><+!>)<-!><-!>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to scan.<-">

<:#200,8486><+">pattern<-">

@1st lev para@<:#400,8486><-">Text. The pattern you want to scan for in <+">string.<-"> May contain wildcard characters and symbols (see table below).<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">flag<-">

@1st lev para@<:#400,8486><-">Boolean. 1 (TRUE) if the string contains the pattern; 0 (FALSE) if the string does not contain the pattern.<-">

<:#200,8486>

<:#200,8486><:X8,91;Index "Symbols" # "for @Matches">The allowable wildcard characters and symbols are: 

@AmiTable@<:t9>

@Note@<:#400,8486>When specifying sets, be sure to enclose them in { }. For example, the set A...F is represented as {A-F}.

<:#200,8486>

<:#200,8486>Examples of pattern matching: 

@AmiTable@<:t8>

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Matches(</S>A big test</T>;</S>a?test</T>)<:f> returns 
<+!>0<-!>. 

<:#200,8486><:f,QCourier New,>@Matches(</S>A big test</T>;</S>a?????test</T>)<:f> returns 
<+!>1<-!>.

<:#400,8486><:f180,QCourier New,0,0,0>@Matches(@Lowercase(State);</S>*mont*</T>) 
<:f>converts the contents of the State field to lowercase, and returns 1 for any value in the field that contains 
</S>mont</T>, for example Vermont or Montana. 

<:#800,8486><:f180,QCourier New,0,0,0>@If(@Matches(Division;</S>Central | Midwest</T>);224;124)<:f> could be the default value formula for a field named SalesNumber. The formula returns the number 224 if the contents of the field named Division is either Central or Mid
west. If the contents of Division is anything else, the formula returns the number 124.

<:#200,8486>

@Bhead title@<:#220,8486>@Max

<:#200,8486>Given two numbers, returns the larger number.<:X8,92;Index "@Max" #>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Max( <-!><+">number1 <-"><+!>; <-!><+">number2 <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">number1<-">

@1st lev para@<:#200,8486>Number or number list.

<:#200,8486><+">number2<-">

@1st lev para@<:#200,8486>Number or number list.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">maxNumber<-">

@1st lev para@<:#600,8486>Number or number list. Either <+">number1 <-">or <+">number2<-"><+">, 
<-">whichever is larger. If the parameters are number lists, @Max returns a list that is the result of pair</m>wise computation on the list values.  
<+!><+">YY Can you specify more than 2 arguments?<-"><-!>

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Max(1;3)<:f> returns <+!>3<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Max(99:2:3;5:6:7:8)<:f> returns <+!>99;6;7;8<-!>. 

@Mono@<:#200,8486>FIELD Bonus:=@If(@Max(Commission;Salary)<;>50000; 0; (0.10Salary)); 

<:#600,8486>Finds the larger of the values in the fields named Commission and Salary, and compares the value to 50,000; if it is larger than 50,000, the field named Bonus is changed to 0; if it is smaller than 50,000, Bonus becomes 10% of the value in the Salary field.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Min<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@Member

<:#200,8486>Given a value, finds its position in a text list.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Member(<-!><+"> value<-"><+!> ;<-!><+"> stringlist <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Text. The value you whose position in <+">stringlist<-"> you want to find.<-">

<:#200,8486><+">stringlist<-">

@1st lev para@<:#200,8486><-">Text list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">position<-">

@1st lev para@<:#400,8486><-">Number. Returns 0 if the <+">value<-"> is not contained in <+">stringlist<-"><+">,<-"> returns 1 to n if the 
<+">value<-"> is contained in the <+">stringlist<-">, where 1 to n is the position of the 
<+">value <-">in the <+">stringlist<-">.

@Chead@<:#200,8486><:X8,93;Index "@Member" #>Examples

<:#200,8486><:f,QCourier New,>@Member(</S>Sales</T>;</S>Finance</T>:</S>Service</T>:</S>Legal</T>)<:f> returns 
<+!>0<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Member(ReportName;RequiredReading)<:f> returns 12 if the value in the field named ReportName is the 12th value in a list contained in the field named RequiredReading; otherwise returns 0. 

<:#400,8486><:f180,QCourier New,0,0,0>@Member(Author;EditorialBoard)<:f> returns 4 if the name contained in the field named Author is the 4th value in a list contained in the field named EditorialBoard; otherwise returns 0.

<:#200,8486>

@Bhead title@<:#220,8486>@Middle<:X8,94;Index "@Middle" #>

<:#400,8486>Returns any substring from the middle of a string. The middle is found by scanning the string from left to right, and parameters determine where the middle begins and ends.

@Chead@<:#200,8486>Syntax

<:#800,8486><+!>@Middle(<-!><+"> string <-"><+!>;<-!><+"> offset <-"><+!>;<-!><+"> numberchars 
<-"><+!>)<-!><+!><**>@Middle( <-!><+">string<-"><+!> ; <-!><+">offset<-"><+!> ; 
<-!><+">stopString<-"><+!> )<-!><**><+!>@Middle( <-!><+">string <-"><+!>;<-!><+"> startString<-"><+!> ;<-!><+"> stopString 
<-"><+!>)<**><-!><+!>@Middle( <-!><+">string <-"><+!>; <-!><+">startString 
<-"><+!>; <-!><+">numberchars <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. Any string.<-"><-"><-">

<:#200,8486><+">offset<-">

@1st lev para@<:#400,8486><-">Number. A character position in <+">string <-">that indicates where you want the "middle" to begin, always counting from left to right. The middle begins one character after the 
<+">offset<-">.<-"><-"><-">

<:#200,8486><+">startString<-"><-"><-"><-"><-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">string <-"> that indicates where you want the middle to begin, always scanning from left to right. The middle begins one character after the end of 
<+">startString.<-"><-"><-"><-">

<:#200,8486><+">numberchars<-">

@1st lev para@<:#600,8486><-">Number. The number of characters that you want in the middle. If 
<+">numberchars <-">is negative, the middle starts at the <+">offset 
<-">or <+">startString <-">and continues from right to left. If <+">numberchars 
<-">is positive, the middle starts one character past the <+">offset 
<-">or <+">startString <-">and continues from left to right.<-"><-"><-"><-"><-"><-"><-">

<:#200,8486><+">stopString<-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">string<-"> that indicates the end of the middle. @Middle returns all  the characters in between 
<+">offset <-">and <+">stopString<-">.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">middle<-">

@1st lev para@<:#400,8486><-">Text. The substring from the middle of <+">string, <-">which begins at the 
<+">offset<-"> you specify and ends at the <+">stopString<-"> you specify, or after the 
<+">numberchars <-">have been reached.<-">

@Chead@<:#200,8486>Examples 

<:#600,8486><:f,QCourier New,>@Middle(</S>North Carolina</T>;4;3) <:f>returns 
<+!>h C<-!>. The offset is positioned at the </S>t</T> (the fourth character from the left), and the count starts with the first character 
<+">after<-"> the offset, moving from left to right.

<:#400,8486><:f180,QCourier New,0,0,0>@Middle(</S>North Carolina</T>;4;</m>3)<:f> returns 
<+!>ort<-!>. The offset is positioned at the </S>t</T> (the fourth character from the left), and the count begins 
<+">at<-"> the offset, moving from right to left.

<:#400,8486><:f180,QCourier New,0,0,0>@Middle(</S>North Carolina</T>;</S> </T>;3)<:f> returns 
<+!>Car<-!>. The offset is positioned at the first space in the string 
</S>North Carolina</T> and the count starts with the first character after the offset.

<:#400,8486><:f180,QCourier New,0,0,0>@Middle(</S>North Carolina</T>;</S>th</T>;</m>2)<:f> returns 
<+!>or<-!>. The offset is positioned at the substring </S>th</T> and the count starts with the first character after the entire offset, moving from right to left.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@MiddleBack

<:#400,8486>Returns any substring from the middle of a string. The middle is found by scanning the string from right to left, and parameters determine where the middle begins and ends.<:X8,95;Index "@MiddleBack" #>

@Chead@<:#200,8486>Syntax

<:#800,8486><+!>@MiddleBack(<-!><+"> string<-"><+!> ;<-!><+"> offset <-"><+!>;<-!><+"> numberchars 
<-"><+!>)<-!><+!><**>@MiddleBack( <-!><+">string<-"><+!> ; <-!><+">offset<-"><+!> ; 
<-!><+">stopString<-"><+!> )<-!><**><+!>@MiddleBack( <-!><+">string 
<-"><+!>;<-!><+"> startString<-"><+!> ;<-!><+"> stopString <-"><+!>)<**><-!><+!>@MiddleBack( 
<-!><+">string <-"><+!>; <-!><+">startString <-"><+!>; <-!><+">numberchars 
<-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. Any string.<-"><-"><-"><-">

<:#200,8486><+">offset<-">

@1st lev para@<:#400,8486><-">Number. A character position in <+">string <-">that indicates where you want the "middle" to begin, always counting from right to left. The middle begins one character after the 
<+">offset<-">.<-"><-"><-">

<:#200,8486><+">startString<-"><-"><-"><-"><-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">string <-"> that indicates where you want the middle to begin, always scanning from right to left. The middle begins one character after the end of 
<+">startString.<-"><-"><-"><-">

<:#200,8486><+">numberchars<-">

@1st lev para@<:#600,8486><-">Number. The number of characters that you want in the middle. If 
<+">numberchars <-">is negative, the middle starts at the <+">offset 
<-">or <+">startString <-">and continues from right to left. If <+">numberchars 
<-">is positive, the middle starts one character past the <+">offset 
<-">or <+">startString <-">and continues from left to right.<-"><-"><-"><-"><-"><-"><-"><-"><-"><-"><-">

<:#200,8486><+">stopString<-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">string<-"> that indicates the end of the middle. @Middle returns all  the characters in between 
<+">offset <-">and <+">stopstring<-">.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">middle<-">

@1st lev para@<:#400,8486><-">Text. The substring from the middle of <+">string, <-">which begins at the 
<+">offset<-"> you specify and ends at the <+">stopString<-"> you specify, or after the 
<+">numberchars <-">have been reached.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@MiddleBack(Author;</S> </T>;3)<:f> returns <+!>Alt<-!> if the contents of the field called Author is Timothy Altman. 

<:#400,8486><:f180,QCourier New,0,0,0>@MiddleBack(Committee;</S> </T>;3)<:f> returns 
<+!>Alt;Wal;Bro;Lar<-!> if there are four values in the field named Committee and the values are 
</S>Timothy Altman</T>, </S>Lennard Wallace</T>, </S>Sandy Brown</T>, 
</S>Maria Larsosa</T>. 

<:#400,8486><:f180,QCourier New,0,0,0>@MiddleBack(Author;</S> </T>;3)<:f> returns blank if the contents of the field named Author is any string with no spaces, for example 
</S>Smith</T>.

<:#400,8486><:f180,QCourier New,0,0,0>@MiddleBack(</S>Middleback searches the string from right to left</T>; 
</S>ing</T>;25)<:f> returns <+!>from right to left<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Min

<:#200,8486>Given two numbers, returns the smaller number.<:X8,96;Index "@Min" #>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Min(<-!><+"> number1 <-"><+!>;<-!><+"> number2 <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">number1<-">

@1st lev para@<:#200,8486><-">Number or number list.<-">

<:#200,8486><+">number2<-">

@1st lev para@<:#200,8486><-">Number or number list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">minNumber<-">

@1st lev para@<:#600,8486><-">Number or number list. Either <+">number1 <-">or <+">number2<-"><+">, 
<-">whichever is smaller. If the parameters are number lists, @Min returns a list that is the result of pair</m>wise computation on the list values.<+"> 
<+!>YY Can you specify more than 2 arguments?<-"><-!><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Min(35;100)<:f> returns <+!>35<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Min(99:2:3;5:6:7:8)<:f> returns <+!>5;2;3;3<-!>. 

@Mono@<:#200,8486>@Min(Precinct1;Precinct2) 

<:#400,8486>Returns the contents of the field containing the smallest value. If Precinct1 contains 150,000 and Precinct2 contains 100,000, then this formula returns 100,000.

@Mono@<:#200,8486>@Min(AreaAPopulation;AreaBPopulation) </m> DistrictPopulation 

<:#400,8486>Returns 85,000 if 100,000 is the smallest number contained in either of the fields AreaAPopulation or AreaBPopulation, and the field DistrictPopulation contains the value 15,000.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Max<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Minute

<:#200,8486><:X8,96;Index "@Month" #>Extracts the number of minutes from the specified time</m>date.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Minute(<-!><+"> time</m>date <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">minutes<-">

@1st lev para@<:#200,8486><-">Number. The number of minutes in the minute part of the time.<-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Minute(<[>9:30])<:f> returns <+!>30<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Minute(Time)<:f> returns <+!>56<-!> if the field Time contains 8:56:34 P.M. 

<:#400,8486><:f180,QCourier New,0,0,0>@Minute(Date)<:f> returns <+!>59<-!> if a field named Date is made up of date and time as follows: 7/30/88 9:59:59. 

<:#200,8486><:f180,QCourier New,0,0,0>@Minute(@Created)<:f> returns <+!>00<-!> if the current document</R>s created date was 9/29/92 3:00:12 A.M.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Day<-)>

@Crossref@<:#200,8486><+)>@Hour<-)>

@Crossref@<:#200,8486><+)>@Month<-)>

@Crossref@<:#200,8486><+)>@Second<-)>

@Crossref@<:#200,8486><+)>@Year<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@Modified

<:#200,8486><:X8,97;Index "@Modified" #>Returns a time</m>date value indicating when the document was last edited and saved. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Modified<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">lastModified<-">

@1st lev para@<:#200,8486><-">Time-date. The date that the current document was last modified.<-">

@Chead@<:#200,8486>Usage

<:#400,8486>@@Modified is similar to @Accessed, which indicates the last time a document was accessed for reading 
<+">or<-"> writing.

@Chead@<:#200,8486>Examples 

<:#400,8486><:f,QCourier New,>@Modified<:f> returns <+!>9/30/92 11:00:00 AM<-!> if the document was last saved on September 30, 1992 at 11:00 A.M.

<:#600,8486><:f180,QCourier New,0,0,0>Topic + </S> </T> + </S>Last Edited: </T> + @Text(@Modified)<:f> returns a string made up of the contents of the field named Topic, then a space, then the string 
<+!>Last Edited:<-!> and then the time</m>date value of the last time the document was saved, converted to text.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Accessed<-)>

@Crossref@<:#200,8486><+)>@Created<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Modulo

<:#200,8486><:X8,98;Index "@Modulo" #>Returns the remainder of a division operation. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Modulo(<-!><+"> number1<-"><+!> ;<-!><+"> number2<-"><+!> )<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">number1<-">

@1st lev para@<:#200,8486><-">Number or number list.<-">

<:#200,8486><+">number2<-">

@1st lev para@<:#200,8486><-">Number or number list. If this is equal to 0, @Modulo returns @ERROR.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">remainder<-">

@1st lev para@<:#600,8486><-">Number or number list. The remainder of <+">number1<-"> divided by 
<+">number2. <-">If the parameters are number lists, @Modulo returns a list that is the result of pair</m>wise computation on the list values.The sign of the result is always the same as the sign of the 
<+">number1<-">.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Modulo(4;3)<:f> returns <+!>1<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Modulo(4;2)<:f> returns <+!>0<-!>. A common use of @Modulo is to determine whether a number is odd or even; if the result of @Modulo(number;2) is 1, the number is odd; if the result is 0, the number is even.

<:#200,8486><:f180,QCourier New,0,0,0>@Modulo(</m>14;3)<:f> returns <+!></m>2<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Modulo(4:6:8:9;3:4:5:6)<:f> returns <+!>1;2;3;3<-!>. 

<:#200,8486>

@Bhead title@<:#220,8486>@Month

<:#200,8486><:X8,98;Index "@Month" #>Extracts the number of the month from the specified time</m>date.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Month(<-!><+"> time</m>date <-"><+!>) <-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">month<-">

@1st lev para@<:#200,8486><-">Number. The number of the month.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Month(<[>1/15/88])<:f> returns <+!>1<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Month(@Now)<:f> returns <+!>12<-!> if it is December. 

<:#400,8486><:f180,QCourier New,0,0,0>@Month(@Adjust(@Now;2;2;2;2;2;2))<:f> returns 
<+!>2<-!> if it is any date in December other than the 30th or 31st. If it is December 30 or 31, returns 
<+!>3<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Day<-)>

@Crossref@<:#200,8486><+)>@Hour<-)>

@Crossref@<:#200,8486><+)>@Minute<-)>

@Crossref@<:#200,8486><+)>@Second<-)>

@Crossref@<:#200,8486><+)>@Year<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@Name

<:#600,8486><:X8,99;Index "@Name" #>Lets you manipulate hierarchical names. You can abbreviate the canonical format of a name, expand an abbreviated name to its canonical format, identify particular components within the name, and reverse the order of the components so
 you can categorize a view by hierarchical names.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Name( <[><-!><+"> action <-"><+!>] ;<-!><+"> name <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+!><[> <-!><+">action<+!><-"> <-!><+!>]<-!>

@1st lev para@<:#400,8486>Indicates what you want done to the name--whether you want to expand it, abbreviate it, and so on (see list of possible actions below).

<:#200,8486><+">name<-">

@1st lev para@<:#400,8486><-">Text or names. A user or server name, entered in any form. Notes will determine the full hierarchical name and then return the requested components.<-"><-"><-">

<:#200,8486>With @Name, you can perform the following actions on a hierarchical name:

<:#200,8486><+!><[>A]<-!>

@1st lev para@<:#200,8486>Returns the ADMD component (administration management domain name).

<:#200,8486><+!><[>Abbreviate] <-!>

@1st lev para@<:#400,8486>Abbreviates a hierarchical name, removing the component labels. This saves space in the display, and looks friendlier.

<:#200,8486><+!><[>C]

@1st lev para@<:#200,8486>Returns the country component of a hierarchical name.

<:#200,8486><+!><[>Canonicalize]

@1st lev para@<:#200,8486>Expands an abbreviated name, adding in whatever components are missing, as well as their labels.

<:#200,8486><+!><[>CN]

@1st lev para@<:#200,8486>Returns the common name component of the name.

<:#200,8486><-!><+!><[>G]<-!><-!>

@1st lev para@<:#200,8486>Returns the given name component (the first name).

<:#200,8486><-!><-!><-!><+!><[>I]<-!><-!>

@1st lev para@<:#200,8486>Returns the initials component.

<:#200,8486><+!><[>O]

@1st lev para@<:#200,8486>Returns the organization component of the hierarchical name.

<:#200,8486><+!><[>OU<+">n<-">]

@1st lev para@<:#800,8486>Returns the specified organizational unit component of the name; <+!><+">n<-!><-"> can be from 1 to 4, as in OU1. In the canonical form of the name, the OU components are not numbered; however, they are counted from right to left so that the first occurrenc
e of the OU label is treated as OU1, the second occurrence is treated as OU2, and so on. Notes will not accept 
<+!><[>OU]<-!> as a keyword.

<:#200,8486><+!><[>P]<-!>

@1st lev para@<:#200,8486>Returns the PRMD component (private management domain name).

<:#200,8486><-!><-!><-!><-!><+!><[>Q]<-!><-!>

@1st lev para@<:#200,8486>Returns the generation component (such as "Jr").

<:#200,8486><-!><-!><+!><[>S]<-!><-!>

@1st lev para@<:#200,8486>Returns the surname component (the last name).

<:#200,8486><+!><[>ToKeyword]

@1st lev para@<:#1000,8486>Reverses the order in which the naming components are displayed, and replaces slashes with backslashes: Country\Organization\Organization Unit...<**>This is useful when you want to categorize a view by the components of a user</R>s hierarchical name (backsl
ashes represent subcategories in views). The <[>ToKeyword] option does 
<+">not <-">return the Common Name portion of the user name.<-!><-!><-!><-!><-!>

@Chead@<:#200,8486>Usage

<:#200,8486>@@Name is particularly useful for abbreviating hierarchical names in a view.

<:#600,8486><:X8,100;Index "Distinguished names" #>A <+!>distinguished name<-!> is qualified with a series of components identifying the full name, organizational unit, organization, and country. Using distinguished names guarantees that each user and server has a uniq
ue name.

<:#1000,8486>As the database designer, you are responsible for controlling how user names are input and displayed within Notes applications. For simplicity, you should always allow users to enter names in abbreviated form; then you can use @Name to expand the name to it
s canonical format. Likewise, you should display names in abbreviated form, using @Name to convert the stored canonical format of the name to its abbreviated form.

<:#800,8486>When you use Names, Author Names, or a Names data type field, Notes automatically converts hierarchical names to an appropriate format for display and storage. If the user enters an abbreviated name, Notes expands it to canonical format when storing it; the
 name is always displayed in a form in abbreviated format.

<:#600,8486>When you display the contents of a hierarchical name field in a view there is no automatic conversion; the entire canonical format of the name is displayed. You</R>ll probably want to convert the name to its abbreviated form with @Name.

@Chead@<:#200,8486>Examples

<:#600,8486><:f,QCourier New,>@Name(<[>Abbreviate];AUTHOR)<:f> returns <+!>Mary Tsen/Illustration/ Documentation/Development/R&D/WorkSavers/US<-!> if a user running Notes Release 3 is looking at a document where the AUTHOR field contains the hierarchical form of Mary T
sen</R>s name.

<:#400,8486><:f180,QCourier New,0,0,0>@Name(<[>Canonicalize];"Mary Tsen")<:f> returns 
<+!>Mary Tsen<-!>. Since there is no slash following the name, it is a non</m>hierarchical name and has no additional components.

<:#400,8486><:f180,QCourier New,0,0,0>@Name(<[>Canonicalize];"Mary Tsen/")<:f> returns 
<+!>CN=Mary Tsen/    OU=Illustration/OU=Documentation/OU=Development/OU=R&D/O=WorkSavers/C=US<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Name(<[>CN];AUTHOR)<:f> returns <+!>Mary Tsen.

<:#200,8486><:f180,QCourier New,0,0,0>@Name(<[>OU2];AUTHOR)<:f> returns <+!>Development<-!>.

<:#800,8486><:f180,QCourier New,0,0,0>@Name(<[>ToKeyword];AUTHOR) <:f>returns 
<+!>US\WorkSavers\R&D\Development\Documentation\Illustration<-!>; notice that the slashes are now backslashes, which allow the naming components to be used as subcategories in a view. Remember, the common name component is not returned.

@Bhead title@<:#220,8486>@NewLine

<:#200,8486><:X8,101;Index "@NewLine" #>Inserts a new line (carriage return) into a text string.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@NewLine 

@Chead@<:#200,8486>Return Value

<:#200,8486><+">carriageReturn<-">

@1st lev para@<:#200,8486><-">Text. A carriage return.<-">

@Chead@<:#200,8486>Examples 

<:#600,8486></S>Hi</T>+@NewLine+</S>There</T> returns<**><+!>Hi<**>There <-!>

<:#200,8486><:f,QCourier New,>FIELD EmpName:= LastName + </S>,</T> + @NewLine + FirstName;<:f> 

<:#400,8486>returns <+!>Foster,<**>Steven<-!> 

<:#400,8486>in the field EmpName, if the string in the field named LastName is Foster, and the string in the field named FirstName is Steven.

<:#200,8486>

@Bhead title@<:#220,8486>@No

<:#200,8486><:X8,101;Index "@No" #>Returns the number 0. This function is equivalent to @False.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@No

@Chead@<:#200,8486>Return Value

<:#200,8486><+">nope<-">

@1st lev para@<:#200,8486><-">Number. Zero ( 0 ).<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@No<:f> returns <+!>0<-!>. 

<:#400,8486><:f,QCourier New,>@If(Dept<;>100;@Yes;@No)<:f> returns 1 if the value in the field named Dept is greater than 100; otherwise returns 0.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@False<-)>

@Crossref@<:#200,8486><+)>@True<-)>

@Crossref@<:#200,8486><+)>@Yes<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@NoteID<:X8,101;Index "@NoteID" #>

<+@><:I0,0,0,0><:#200,8486>The ID number of the current document.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@NoteID<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+!>NT<-!><+">idnumber<-">

@1st lev para@<:#200,8486>String. The prefix <+!>NT<-!> followed by the note ID.

@Bhead title@<:#220,8486>

@Bhead title@<:#220,8486>@Now

<:#200,8486><:X8,102;Index "@Now" #>Returns the current time</m>date. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Now 

@Chead@<:#200,8486>Return Value

<:#200,8486><+">now<-">

@1st lev para@<:#200,8486>Time-date.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Now <:f>returns <+!>01/21/93 7:30:45 AM<-!> at 7:30:45 A.M. on January 21, 1993. 

<:#200,8486><:f,QCourier New,>@Now<:f> returns <+!>8/26/93 10:05:01 AM<-!> at 10:05:01 A.M. on August 26, 1993.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Today<-)>

@Crossref@<:#200,8486><+)>@Tomorrow<-)>

@Crossref@<:#200,8486><+)>@Yesterday<-)>

@disp:@<:S+288><:#288,8486><:f,,>

@Bhead title@<:S+288><:#288,8486>@OptimizeMailAddress

<+@><:I0,0,0,0><:#200,8486>Given a mail address, returns it with all unecessary domains removed.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@OptimizeMailAddress( <-!><+">address <+!><-">)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">address<-">

@1st lev para@<:#200,8486>String. The mail address to optimize.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">optimizedAddress<-">

@1st lev para@<:#200,8486>String. The optimized address.

@Chead@<:#200,8486>Usage

<+@><:I0,0,0,0><:#400,8486>@@OptimizeMailAddress removes all domains between two duplicate domains, including the duplicate domain.

@Chead@<+@><:I0,0,0,0><:#200,8486>Example

@Mono@<+@><:I0,0,0,0><:#400,8486>@OptimizeMailAddress ("username @firstdomain @secondomain @firstdomain @thirdomain")

<+@><:I0,0,0,0><:#200,8486>returns <:f180,BArial,0,0,0>"<:f180,QCourier New,0,0,0>username @ firstdomain @ thirdomain<+!><:f,QCourier,>"<-!><:f>.

@Mono@<+@><:I0,0,0,0><:#200,8486>@OptimizeMailAddress ("username @firstdomain @firstdomain @secondomain") 

<:S+288><:#288,8486>returns <:f,QCourier,><+!>"<:f180,QCourier New,0,0,0><-!>username @ firstdomain @ secondomain<:f180,BArial,0,0,0>"<:f>.

<:S+288><:#288,8486>

@Bhead title@<:#220,8486>@Password<:X8,103;Index "@Password" #>

<:#200,8486>Encodes a string.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Password(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want encoded.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">encodedString<-">

@1st lev para@<:#200,8486><-">Text. The encoded string. If <+">string<-"> is a list, only the first element is encoded, the rest are ignored.<-">

@Chead@<:#200,8486>Usage

<:#400,8486>@@Password is especially useful in an input translation formula to protect a user</R>s password from being seen by others.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Password(</S>grumpy</T>)<:f> returns <+!>(382B112E2E2E99559269337AD9D8AF3C1E)<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Password(</S>sneezy</T>)<:f> returns <+!>(64DFE4C65D72187D4ED2998COFE)<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Password(</S>grumpy</T>:</S>sneezy</T>)<:f> returns 
<+!>(382B112E2E2E99559269337AD9D8AF3C1E)<-!>.

@Note@<:#200,8486>There is no way to decode the original string once it has been encoded by @Password.

@Bhead title@<+@><:I0,0,0,0><:#220,8486>@Pi<:X8,103;Index "@Pi" #>

<+@><:I0,0,0,0><:#400,8486>Returns the constant value </v>, accurate to fifteen decimal places. The value 
</v> is the ratio of the circumference of a circle to its diameter.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<+@><:I0,0,0,0><:#200,8486><+!>@Pi<-!>

@Chead@<+@><:I0,0,0,0><:#200,8486><+!>Return Value<-!>

<+@><:I0,0,0,0><:#200,8486><+"><-!>pi<-!><-"><-!><-!>

@1st lev para@<+@><:#200,8486>The number 3.14159265358979.<-!><-!><-!><-!>

@See also hlp@<+@><:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_PI<-*>

@Chead title@<+@><:#200,8486>Examples: @Pi

<+@><:#400,8486>1. This formula returns the circumference of a circle whose radius equals 5. The circumference of a circle with radius r equals 2</v>r.

@Mono@<+@><:#200,8486>2 * @Pi * 5

<+@><:#400,8486>2. This formula converts an angle from degrees to radians. One degree equals 
</v>/180 radians. So an angle of 360 degrees equals 2</v> radians, 180 degrees equals 
</v> radians, and so on.

@Mono@<+@><:#200,8486>( angle * @Pi ) / 180

<+@><:#600,8486>3. Given the latitude of a particular location, we can find the location's distance from the equator. Here, the numeric field 
<:f,QCourier New,>latitude<:f> holds the latitude in degrees. The numeric field 
<:f,QCourier New,>distance<:f> computes the distance from the equator using this formula:

@Mono@<+@><:#200,8486>@If( latitude = ""; 0; ( ( latitude * @Pi ) / 180 ) * 6440 )

<+@><:#400,8486>First, latitude is converted to radians. Next, it's multiplied by 6440, the approximate radius of the earth in kilometers. This gives us the length of the arc from the equator to the given latitude.

<+@><:#400,8486>Notes treats an empty numeric field as a text field, so the formula uses @If to check for an empty latitude field.

@Bhead title@<:#220,8486>@Platform

<:#200,8486><:X8,104;Index "@Platform" #>Returns the name of the currently running platform version of Notes. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Platform

@Chead@<:#200,8486><+!>Return Value<-!><+!><-">

<:#200,8486><+">platform<-">

@1st lev para@<:#200,8486>Text. The name of the platform. May be any of the following:

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"Netware"	Netware version

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"MS-DOS"

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"Windows/16"	16</m>bit Windows version

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"Windows/32"	32-bit Windows version

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"OS/2v1"	

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"OS/2v"	32</m>bit OS/2 version (OS/2 2.x)

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"Macintosh"	Macintosh version

@1st lev para@<+@><:R1,4,1,2280,1,2880,1,4320,1,5760,><:#200,8486>"UNIX"	UNIX version (Sun, SCO, HPUX, AIX)

@Chead@<:R><:#200,8486>Usage

<:#800,8486>When it is used in column or selection formulas, scheduled agents that run formulas, or selective replication formulas, @Platform returns the current platform that the database resides on. If the database resides on a server, @Platform returns the server</R>
s platform; if the database resides locally, @Platform returns the workstation</R>s platform.

<:#600,8486>Your application may perform certain operations that are not available in all platform versions of Notes (such as the DDE</m>related functions). Rather than receive an error, you could use @Platform to determine whether or not to perform the operation.

@Chead@<:#200,8486>Example

<:#200,8486>On a workstation running Notes for Macintosh, <:f,QCourier New,>@Platform<:f> returns 
<+!></S><-!><+!>Macintosh</T><-!>.

<:#200,8486>

@Bhead title@<:#220,8486>@Power

<:#200,8486>Raises a number to the power of an exponent.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Power(<-!><+"> base<-"><+!> ;<-!><+"> exponent <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">base<-">

@1st lev para@<:#200,8486><-">Number. The value you want raised to <+">exponent. <-">May be positive or negative.<-"><-">

<:#200,8486><+">exponent<-">

@1st lev para@<:#200,8486><-">Number. The power.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">result<-">

@1st lev para@<:#200,8486><:X8,105;Index "@Power" #>Number. The value of <+">base<-"> raised to the power of 
<+">exponent<-">.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Power(2;3)<:f> returns <+!>8<-!> (2 raised to the power of 3, o<:f180,,>r 2<+&>3<-&>).<:f>

<:#200,8486><:f180,QCourier New,0,0,0>@Power(</m>2;3)<:f> returns <+!></m>8<-!> (-2 raised to the power of 3, or 
</m>2<+&>3<-&>).

<:#200,8486><:f180,QCourier New,0,0,0>@Power(2;</m>3)<:f> returns <+!>0.125<-!> (2 raised to the power of 
</m>3, or 2<+&></m>3<-&>).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Exp<-)>

@Crossref@<:#200,8486><+)>@Ln<-)>

@Crossref@<:#200,8486><+)>@Log<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Prompt<:X8,105;Index "@Prompt" #>

<:#600,8486>Displays a dialog box to the user and returns a text value based on the user's actions in the dialog box. @Prompt is useful for prompting a user for information and determining a course of action based on the user</R>s input.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Prompt( <[><-!><+"> style <-"><+!>] : <+#><[><-!> <+!>No Sort ]<-!><-#> 
<+!>; <-!><+">title<-"><+!> ; <-!><+">prompt<-"><+!> ; <-!><+">defaultChoice<-"><+!> ; 
<-!><+">choiceList<-"><+!> )<-!>

@Chead@<:#200,8486>Summary of Dialog Box Styles

<:#400,8486>There are eight different styles of dialog boxes you can display. @Prompt accepts parameters and returns a value based on the style you indicate.

@1st lev para@<:t6>

@Chead@<:#200,8486>Parameters

<:#200,8486><-!><+!><[><-!><+">style<-"><+!> ]<-!><-#><-!><-#><-!><-#><-!><-#>

@1st lev para@<:#200,8486>Constant. Indicates the type of dialog box you want to display. May be any of the following values:

@1st lev para@<:#200,8486><+!>OK<-!>

@1st lev para@<:#200,8486><+!>YesNo<-!>

@1st lev para@<:#200,8486><+!>OkCancelEdit<-!>

@1st lev para@<:#200,8486><+!>OkCancelList<-!>

@1st lev para@<:#200,8486><+!>OkCancelCombo<-!>

@1st lev para@<:#200,8486><+!>OkCancelEditCombo<-!>

@1st lev para@<:#200,8486><+!>OkCancelListMulti<-!>

@1st lev para@<:#200,8486><+!>Password<-!>

<:#200,8486><-"><+!><[>NoSort]<-!><-"><-"><-">

@1st lev para@<:#600,8486>Keyword. Optional. Include this keyword if you want the members of 
<+">choiceList<-"> to appear in the exact order in which you enter them. If you omit this keyword, the members of 
<+">choiceList<-"> are sorted alphabetically.

<:#200,8486><+">title<-">

@1st lev para@<:#400,8486>Text. The text you want displayed in the dialog box</R>s title bar. Required for all 
<+">style<-">s, although you can simply specify a null string with 
</S></T>.

<:#200,8486><+">prompt<-">

@1st lev para@<:#600,8486>Text. The text you want displayed within the dialog box. Required for all 
<+">style<-">s. If you use a formula for <+">prompt<-"> and that formula returns a list, only the first item in the list will be displayed as the 
<+">prompt<-">. To display the entire list, use @Implode. @NewLine cannot be used in 
<+">prompt<-">.

<:#200,8486><+">defaultChoice<-">

@1st lev para@<:#800,8486>Text. The value that will be used as the default value for the user's input. The input section of the dialog box will be primed with the value; the user can either accept it by selecting OK or replace it with another value. Not applicable to dialog boxes of
 <+">style<-"> <[>Ok] or <[>YesNo]. Required for all other <+">style<-">s.<-"><-"><-"><-"><-">

<:#200,8486><+">choiceList<-">

@1st lev para@<:#800,8486>Text list. The values<+%> <-%>that you want displayed in the dialog box</R>s list box. The user can select one of these values as the input. Separate the values with colons, as in: 
</S>PHONE.NSF</T>:@MailDbName. Each value in your list can be a text string, or an @function that returns a text string. Not applicable to dialog boxes of 
<+">style<-"> <[>Ok], <[>YesNo], <[>OkCancelEdit], or <[>Password]. Required for all other 
<+">style<-">s.

@Chead@<:#200,8486>Usage

<:#600,8486>@@Prompt can be used in field formulas, buttons, SmartIcons, and in agents that are run manually. Since @Prompt requires user input, It cannot be used in any agent that is executed at the server. @Prompt cannot be used in a SELECT statement.

@Chead@<:#200,8486>Examples 

<:#200,8486>Below are examples of each style of prompt.

@Chead@<:#200,8486><[>Ok]

<:#200,8486><:f,QCourier New,>@Prompt(<[>Ok];"Reminder";"Don</R>t forget to run backup tonight.")<:f>

<:#200,8486>displays an informational message; the user selects OK to close the message box.

@Book art@<:#200,8486><[>art]

<:#400,8486>Use this style when you want to inform the user about something, without receiving anything back except an acknowledgement. 

@Note@<:#200,8486>This message box has no title bar on the Macintosh, but you must still supply one.

@Chead@<:#200,8486><[>YesNo]

@Mono@<:#400,8486>@Prompt(<[>YesNo]; "Send memo?"; "This memo will be sent to everyone listed in the To, CC, and BCC fields.")

<:#400,8486><**>displays a warning, and gives the user a chance to proceed or cancel the operation. If the user selects Yes the value 
</S>1</T> is returned. If the user selects No the value </S>0</T> is returned.

@Book art@<:#200,8486><[>art]

@Note@<:#200,8486>This message box has no title bar on the Macintosh, but you must still supply one.

@Chead@<:#200,8486><[>OkCancelEdit]

@Mono@<:#400,8486>@Prompt(<[>OkCancelEdit]; "Enter Your Name"; "Type your name in the box below."; @UserName) 

<:#600,8486><**>prompts the user to enter his or her name, which is returned as a text string. The name defaults to the current user</R>s Notes user name, which is calculated using @UserName. If the user selects Cancel, Notes cancels the formula evaluation.

@Book art@<:#200,8486><[>art]

@Chead@<:#200,8486><[>OkCancelList]

@Mono@<:#400,8486>@Prompt(<[>OkCancelList]; "Select a Database"; "Select a database to open."; "Schedule"; "Schedule":"Phone Book":@Subset(@MailDbName;</m>1))

<:#600,8486><**>displays a list box with database names (sorted alphabetically), prompts the user to select a database, and returns that database</R>s name as a text string for use in a subsequent operation. If the user selects Cancel, Notes cancels the formula evaluat
ion.

<:#600,8486>The third option in the list is the current user</R>s own mail database, the name of which is calculated with @MailDbName. The user must select one of the listed options; by default, Schedule is highlighted (the value listed as the default must also be incl
uded in the display list).

@Book art@<:#200,8486><[>art]

@Chead@<:#200,8486><[>OkCancelCombo]

@Mono@<:#400,8486>@Prompt(<[>OkCancelCombo]; "Select a Database"; "Select a database to open."; "Schedule"; "Schedule":"Phone Book":Subset(@MailDbName;</m>1))

<:#1000,8486><**>displays a dialog box similar to the previous example, except that a dropdown list is used, so that initially only the default value is displayed. The user clicks the down arrow on the box to display the rest of the list. As in the previous example, the
 user must select one of the listed values; by default, Schedule is selected. This function returns the user</R>s selection. If the user selects Cancel, Notes cancels the formula evaluation.

@Book art@<:#200,8486><[>art]

@Chead@<:#200,8486><[>OkCancelEditCombo]

@Mono@<:#600,8486>@Prompt(<[>OkCancelEditCombo]; "Select a Database"; "Select a database to open, or type a database specification."; "Schedule"; "Schedule":"Phone Book": @Subset(@MailDbName;</m>1)) 

<:#600,8486>is similar to the example above, except that in this case, the user can edit the text box and type in 
<+">any<-"> database name; this way, the user is not limited to the selections in the list. This function returns the user</R>s selection or entry. If the user selects Cancel, Notes cancels the formula evaluation.

<:#200,8486>The default value must be included in the list, or the text box that displays initially will be blank.

@Chead@<:#200,8486><[>OkCancelListMult]

@Mono@<:#600,8486>@Prompt(<[>OkCancelListMult]; "Select a Name"; "Select one or more names as recipients for this request."; "Mary Tsen"; "Mary Tsen":"Bill Chu": "Michael Bowling":"Marian Woodward") 

<:#600,8486><**>displays a list of names, from which the user can select one or more (Mary Tsen appears as the default selection). This function returns the user</R>s selection(s). If the user selects Cancel, Notes cancels the formula evaluation.

<:#200,8486>The default value must be included in the list.

@Book art@<:#200,8486><[>art]

@Chead@<:#200,8486><[>Password]

@Mono@<:#400,8486>@Prompt(<[>PASSWORD]; "Password"; "Enter the password for Oracle database." ; "")

<:#400,8486>displays a dialog box where the user can enter a password. Notes does not display the password on the screen. This function returns the password.

@Bhead title@<:#220,8486>@ProperCase

<:#400,8486><:X8,108;Index "@ProperCase" #>Converts the words in a string to proper</m>name capitalization: the first letter of each word becomes uppercase, all others become lowercase.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@ProperCase(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to convert.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">properString<-">

@1st lev para@<:#200,8486><-">Text. The <+">string, <-">converted to proper-name capitalization.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>A </S>word</T> is a consecutive set of characters with no spaces. Hyphenated words are considered two words, as are words separated by any other punctuation except an apostrophe.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@ProperCase(</S>every CHILD LOves toys</T>)<:f> returns 
<+!>Every Child Loves Toys<-!>. 

<:#200,8486><:f,QCourier New,>@ProperCase(</S>3</m>digit code</T>)<:f> returns 
<+!>3</m>Digit Code<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@ProperCase(City)<:f> returns <+!>Los Angeles 
<-!>if the string in the field named City contains the string los angeles, Los Angeles, LOS ANGELES, los Angeles, or any other variation.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@LowerCase<-)>

@Crossref@<:#200,8486><+)>@UpperCase<-)>

<:#200,8486>

@Bhead title@<:I0,0,0,0><:#220,8486>@Random<:X8,109;Index "@Random" #>

<+@><:I0,0,0,0><:#200,8486>Generates a random number between 0 and 1, inclusive.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@Random<-!>

@Chead@<:#200,8486>Usage

<+@><:I0,0,0,0><:#400,8486>To generate a random number between any two numbers x and y, use the formula 
<+!>(<-!><+"> y <-"><+!>- <-!><+">x <-"><+!>)*@Random<-!><+!> + <-!><+">x<-">.

@See also hlp@<+@><:I0,0,0,0><:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_RANDOM<-*>

@Chead title@<+@><:I0,0,0,0><:#200,8486>Examples: @Random

<:I0,0,0,0><:#400,8486>1. This formula generates a random number between 7 and 22, inclusive. For example, it might return 13.

@Mono@<:I0,0,0,0><:#200,8486>15 * @Random + 7

<:I0,0,0,0><:#200,8486>

@Bhead title@<:#220,8486>REM

<:#600,8486>The <:X8,109;Index "Formula" # "REM"><:X8,109;Index "REM" #>REM keyword allows you to add explanatory comments to a formula. Adding comments to a formula makes it easier to maintain the database. It is especially useful to add comments to a long or complica
ted formula.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>REM "<-!><+">comments<+!><-">" ;<-!>

@Chead@<:#200,8486>Usage

<:#200,8486>If the comment doesn</R>t fit on one line, add another REM statement to complete the comment.

@Chead@<:#200,8486>Example

<:#200,8486>The following example shows a formula commented with REM statements.

@Mono@<:#1200,8486>REM </S>6/15/90</T>;<**>REM </S>The following formula calculates the date</T>;<**>REM 
</S>for the DueDate field</T>;<**>REM </S>DueDate is the Date field + thirty days</T>;<**>REM;<**>@Adjust(Date; 0;0;30;0;0;0); 

@Bhead title@<:#220,8486>@Repeat

<:#200,8486><:X8,110;Index "@Repeat" #>Repeats a string a specified number of times.

<:#400,8486><+!>Syntax<-!><+!><-%><**>@Repeat(<-!><+"> string <-"><+!>; <-!><+">number 
<-"><+!>; <-!><+">numberchars <-"><+!>) <-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to repeat.<-"><-"><-">

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. The number of times you want to repeat <+">string.<-"><-"><-"><-">

<:#200,8486><+">numberchars<-">

@1st lev para@<:#400,8486><-">Number. Optional. The maximum number of characters you want returned. @Repeat truncates the result to this number.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">repeatedString<-">

@1st lev para@<:#200,8486>Text. The <+">string, <-">repeated <+">number<-"> times until <+">numberchars 
<-">(if specified) is reached.

@Chead@<:#200,8486>Usage

<:#200,8486>The resultant string cannot be larger than 1,024 characters.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Repeat(</S>Hello</T>;3)<:f> returns <+!>HelloHelloHello<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Repeat(</S>Bye</T>;2;5)<:f> returns <+!>ByeBy<-!>. 

@Mono@<:#200,8486>FIELD Comments:=@If(Sales<;>=100000;@Repeat(</S>Great Month!</T>;3);</S>Good Month</T>);

<:#400,8486>Returns <+!>Great Month! Great Month! Great Month!<-!> in the Comments field if the amount in the field named Sales is greater than or equal to 100,000; otherwise it returns the string 
<+!>Good Month<-!>.

<:#200,8486>

@Bhead title@<:#220,8486>@Replace<:X8,110;Index "@Replace" #>

<:#200,8486>Performs a find-and-replace operation on a text list.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Replace(<-!><+"> sourcelist<-"><+!> ;<-!><+"> fromlist <-"><+!>;<-!><+"> tolist 
<-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">sourcelist<-">

@1st lev para@<:#200,8486><-">Text list. The list whose values you want to scan.<-">

<:#200,8486><+">fromlist<-">

@1st lev para@<:#200,8486><-">Text list. A list containing the values that you want to replace.<-">

<:#200,8486><-"><-"><+">tolist<-"><-">

@1st lev para@<:#200,8486><-">Text list. A list containing the values you want to use to replace those in 
<+">fromlist.<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">replacedList<-">

@1st lev para@<:#400,8486><-">Text list. The <+">sourcelist, <-">with any values from <+">fromlist<-"> replaced by the corresponding value in 
<+">tolist.<-"> If none of the values in <+">fromlist <-">matched the values in 
<+">sourcelist<-">, then <+">sourcelist <-">is returned unaltered.<-">

@Chead@<:#200,8486>Examples

<:#200,8486>1. Here</R>s a simple example to demonstrate how @Replace works:

@Mono@<:#200,8486>@Replace(</S>Red</T>:</S>Orange</T>:</S>Yellow</T>:</S>Green</T>;</S>Orange</T>:</S>Blue</T>;</S>Black</T>:</S>Brown</T>)

<:#600,8486>Here, <+">sourcelist <-">contains </S>Red</T>:</S>Orange</T>:</S>Yellow</T>:</S>Green</T>, 
<+">fromlist <-">contains </S>Orange</T>:</S>Blue</T>, and <+">tolist 
<-">contains </S>Black</T>:</S>Brown</T>. Notes compares <+">fromlist 
<-">to <+">sourcelist<-">; whenever a value in <+">fromlist <-">matches a value in 
<+">sourcelist<-">, the corresponding value in <+">tolist <-">is substituted for the value in 
<+">sourcelist<-">.

<:#600,8486>In this example, both <+">sourcelist <-">and <+">fromlist <-">contain 
</S>Orange</T>, which is the first value in <+">fromlist<-">. Thus, the first value in 
<+">tolist <-">replaces </S>Orange</T> in <+">sourcelist<-">. No other matches were found, so the remainder of 
<+">sourcelist <-">is left intact; the result is shown below:

@Book art@<:S+223><:t7>

<:#200,8486>

<:#600,8486>2.This formula looks at the Categories field in each document that it runs against. If one of the keywords in a document</R>s Categories field is 
</S>To be assigned</T> then that keyword is replaced with the name stored in that document</R>s AssignedTo field.

@Mono@<:#200,8486>FIELD Categories:= @Trim(@Replace(Categories;</S>To be assigned</T>; AssignedTo));

<:#1000,8486>Suppose you have a database where you log service requests. Incoming requests are automatically categorized as 
</S>To be assigned</T> by a mail/paste filter. Each day, you review all of the new (unassigned) service requests, and assign them to various technicians by entering the appropriate name in the AssignedTo field. Once a request has been assigned, you want it 
to appear under that technician</R>s name in the view, instead of under 
</S>To be assigned.</T>

@Book art@<:#200,8486><[>art]

<:#600,8486>Rather than manually re</m>categorizing each document, you can write a filter macro, like the one above, to delete the documents from the 
</S>To be assigned</T> category and add them to the appropriate technician categories.

@Book art@<:#200,8486><[>art]

<:#200,8486>

@Bhead title@<:I0,0,0,0><:#220,8486>@ReplaceSubstring<:X8,111;Index "@ReplaceSubstring" #>

<+@><:I0,0,0,0><:#400,8486>Replaces specific words or phrases in a string with new words or phrases that you specify. Case-sensitive.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@ReplaceSubstring<-!><+!>( <-!><+">sourceList<+!><-"> ; <-!><+">fromList<+!><-"> ; 
<+"><-!>toList <-"><-!><+!>)<-!><-!><-!><-!>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><+">sourceList<-">

@1st lev para@<:#200,8486>Text or text list.  This is the string whose contents you want to modify.

<:#200,8486><+">fromList<-">

@1st lev para@<:#400,8486>Text or text list. Specifies the words or phrases you want to have replaced in 
<+">sourceList<-">.  Each string specified in <+">fromList<-"> is replaced in 
<+">sourceList <-">with the corresponding string from <+">toList<-">.

<:#200,8486><+">toList<-">

@1st lev para@<:#200,8486><-!>Text or text list. Specifies the words or phrases that should replace those in 
<+">fromList<-">.<-!><-!><-!><-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">newSourceList<-">

@1st lev para@<:#400,8486>Text or text list. The <+">sourceList<-">, modified so that each string specified in 
<+">fromList<-"> and found in <+">sourceList<-"> is replaced with the correct string in 
<+">toList<-">.

@Chead@<+@><:I0,0,0,0><:#200,8486>Example

@Mono@<:I0,0,0,0><:#200,8486>@ReplaceSubstring( "I like apples" ; "like" ; "hate" )

<:I0,0,0,0><:#200,8486>returns <:f180,BArial,0,0,0>"<:f180,QCourier New,0,0,0>I hate apples<+!><:f,QCourier,>"<-!><:f>.

@Mono@<:I0,0,0,0><:#200,8486>@ReplaceSubstring( "I like apples" ; "like" : "apples" ; "hate" : "peaches")

<:I0,0,0,0><:#200,8486>returns <:f,QCourier,><+!>"<:f180,QCourier New,0,0,0><-!>I hate peaches<:f180,BArial,0,0,0>"<:f>.

<:#200,8486>

@Bhead title@<:#220,8486>@Responses

<:#200,8486><:X8,112;Index "@Responses" #>Returns the number of responses (in the current view) to the document.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Responses<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">numResponses<-">

@1st lev para@<:#200,8486>Number. The number of responses to the document.

@Chead@<:#200,8486>Usage

<:#200,8486>Use @Responses in window title and field formulas.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Responses<:f> returns <+!>5<-!> if there are five responses to the document. 

@Mono@<:#200,8486>@If(@Responses=0; </S>No one has responded to this document</T>; </S> 
</T>) 

<:#400,8486>Returns the string <+!>No one has responded to this document<-!> if there are no responses to the current document; otherwise a blank is returned.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DocChildren<-)>

@Crossref@<:#200,8486><+)>@DocDescendants<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Return

<:#400,8486><:X8,112;Index "@Return" #>Immediately stops the execution of a formula and returns the specified value. This is useful when you only want the remainder of the formula to be executed if certain conditions are true.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Return(<-!><+"> value <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">value<-">

@1st lev para@<:#600,8486><-">The value you want returned. You can specify another @function such as @Error, or a text string such as 
</S>Formula stopped,</T> or a Boolean value (TRUE or FALSE). If you don</R>t want anything returned, use the null string (</S></T>).<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">result<-">

@1st lev para@<:#200,8486>Returns <+">value.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>@@Return is most useful in field formulas, agents that run formulas, buttons, and SmartIcons. Generally you</R>ll want to use it with @If to determine whether to perform the @Return or to perform one or more other statements.

@Chead@<:#200,8486>Examples

<:#400,8486>1. This formula displays a dialog offering the user a Yes/No choice. If the user selects Yes, the next document in the view is opened; if the user selects No, the formula stops and nothing more happens.

@Mono@<:#400,8486>@If(@Prompt(<[>YesNo];</S>Continue?</T>;</S>Do you want to continue reading your mail?</T>);@Command(<[>NavigateNext]);@Return(</S></T>))

<:#800,8486>2. This formula whether an environment variable called OrderNumber has been stored in the user</R>s NOTES.INI or Notes Preferences file. If there is no such variable stored, @SetEnvironment is used to initialize it to zero. If a value has already been store
d, @Return is used to return it and stop the formula from executing.

@Mono@<:#400,8486>@If(@Environment(OrderNumber)=</S></T>;@SetEnvironment(</S>OrderNumber</T>;</S>0</T>);@Return(@Envioonment(</S>OrderNumber</T>)))<+!> 

<:#200,8486>

@Bhead title@<:#220,8486>@Right<:X8,113;Index "@Right" #>

<:#400,8486>Returns the rightmost characters in the string. You can specify the number of rightmost characters you want returned, or you can indicate that you want all the characters to the right of a specific substring.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Right(<-!><+"> stringToSearch <-"><+!>;<-!><+"> numberOfChars 
<-"><+!>)<-!> or<+!><**>@Right(<-!><+"> stringToSearch <-"><+!>;<-!> 
<+">subString <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">stringToSearch<-">

@1st lev para@<:#200,8486><-">Text. The string whose rightmost characters you want to find.<-"><-"><-">

<:#200,8486><+">numberOfChars<-">

@1st lev para@<:#400,8486><-">Number. The number of characters to return. If the number is 2, the last two characters of 
<+">string<-"> are returned; if the number is 5, the last five characters are returned, and so on.<-"><-"><-">

<:#200,8486><+">subString<-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">stringToSearch<-"><+">. <-">@Right returns all of the characters to the right of 
<+">subString. <-">It finds <+">subString<-"> by searching <+">stringToSearch<-"> from left to right.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">resultString<-">

@1st lev para@<:#400,8486>Text. The right-most characters in <+">stringToSearch<-">. The number of characters returned is determined by either 
<+">numberOfChars<-"> or <+">subString<-">.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Right(</S>Lennard Wallace</T>;3)<:f> returns <+!>ace<-!>, the rightmost 3 characters in the string.

<:#400,8486><:f180,QCourier New,0,0,0>@Right(</S>Lennard Wallace</T>;</S> </T>)<:f> returns 
<+!>Wallace<-!>, which represents everything to the right of the first occurrence of the blank space character.

<:#200,8486><:f180,QCourier New,0,0,0>@Right(Author;3)<:f> returns <+!>man<-!> if the Author field contains 
</S>Timothy Altman</T>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Right(Author;</S> </T>)<:f> returns <+!>Altman<-!> if the Author field contains 
</S>Timothy Altman</T>. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@RightBack<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@RightBack<:X8,114;Index "@RightBack" #>

<:#200,8486>Returns the rightmost characters in a string.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@RightBack( <-!><+">stringToSearch <-"><+!>;<-!><+"> numberOfChars 
<-"><+!>)<-!>

<:#200,8486><+!>@RightBack(<-!><+">stringToSearch <-"><+!>; <-!><+">subString 
<-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">stringToSearch<-">

@1st lev para@<:#200,8486><-">Text. The string whose rightmost characters you want to find.<-">

<:#200,8486><+">numberOfChars<-">

@1st lev para@<:#400,8486><-">Number. Counting from left to right, the number of characters to skip. All the characters to the right of that number are returned.<-">

<:#200,8486><+">subString<-">

@1st lev para@<:#400,8486><-">Text. A substring of <+">stringToSearch.<-"> @RightBack returnes all the characters to the right of 
<+">subString<-">. <+"> <-">It finds <+">subString<-"> by searching 
<+">stringToSearch<-"> from left to right.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">resultString<-">

@1st lev para@<:#400,8486>Text. The right-most characters in <+">stringToSearch<-">. The number of characters returned is determined by either 
<+">numberOfChars<-"> or <+">subString<-">.<-"><-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@RightBack(</S>Lennard Wallace</T>;3)<:f> returns 
<+!>nard Wallace<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@RightBack(</S>Lennard Wallace</T>;</S></T>) 
<:f>returns a blank. 

<:#200,8486><:f180,QCourier New,0,0,0>@RightBack(</S>Lennard Wallace</T>;</S>  
</T>)<:f> returns <+!>Wallace<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@RightBack(Author;3) <:f>returns <+!>othy Altman<-!> if the name in the field named Author is Timothy Altman.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Begins<-)>

@Crossref@<:#200,8486><+)>@Contains<-)>

@Crossref@<:#200,8486><+)>@Ends<-)>

@Crossref@<:#200,8486><+)>@Left<-)>

@Crossref@<:#200,8486><+)>@LeftBack<-)>

@Crossref@<:#200,8486><+)>@Middle<-)>

@Crossref@<:#200,8486><+)>@MiddleBack<-)>

@Crossref@<:#200,8486><+)>@Right<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Round

<:#400,8486><:X8,115;Index "@Round" #>Rounds the designated number to the nearest whole number; if an additional number is specified, it is used as the rounding factor.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Round( <-!><+">number<+!><-"> )<**><-!><+!>@Round(<-!> <+">number<-"><+!> ;<-!> 
<+">factor<-"> <+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number or number list.<-">

<:#200,8486><+">factor<-">

@1st lev para@<:#600,8486><-">Number. Optional. The rounding factor to use. For example, if 
<+">factor <-">is 10, @Round rounds to the nearest number that is a factor of 10. If you don't specify a 
<+">factor, <-">the <+">number<-"> is rounded to the nearest whole number.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+"><-!>roundedNumber<-"><-!>

@1st lev para@<:#600,8486><-">Number. The value of <+">number, <-">rounded to the specified 
<+">factor<-"> or to the nearest whole number. If <+">number<-"> is a list, each number in the list is rounded to the specified 
<+">factor<-"> or to the nearest whole number.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Round(1.499)<:f> returns <+!>1<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Round(1.5)<:f> returns <+!>2<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Round(NumberOfEmployees;10)<:f> returns 
<+!>12340<-!> if the number in the field named NumberOfEmployees is 12338. 

<:#200,8486><:f180,QCourier New,0,0,0>@Round(1.333:2.897654:3.1:4)<:f> returns 
<+!>1:3:3:4<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Round(4505:45005:450005;10)<:f> returns<+!> 4510:45010:450010<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Integer<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Second

<:#200,8486><:X8,116;Index "@Second" #>Extracts and returns the seconds value from the specified time</m>date.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Second(<-!><+"> time</m>date <-"><+!>) <-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">seconds<-">

@1st lev para@<:#200,8486><-">Number. The number of seconds in the second part of the time.<-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Second(<[>9:30:45])<:f> returns <+!>45<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Second(@Now)<:f> returns <+!>45<-!> if the current time is 12:30:45 P.M. 

<:#400,8486><:f180,QCourier New,0,0,0>@Text(@Second(Date))<:f> returns <+!>45<-!> as a text string if the contents of the field named Date is any time</m>date value in which the number of seconds is 45.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Day<-)>

@Crossref@<:#200,8486><+)>@Hour<-)>

@Crossref@<:#200,8486><+)>@Minute<-)>

@Crossref@<:#200,8486><+)>@Month<-)>

@Crossref@<:#200,8486><+)>@Year<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Select

<:#600,8486><:X8,116;Index "@Select" #>Returns the value that appears in the number position. If number is greater than the number of values, returns the last value in the list. If the value in the number position is a list, returns the entire list contained within val
ue.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Select(<-!><+"> number <-"><+!>;<-!><+"> values<-"> <-%><+!>)<-!>

@Chead@<:#200,8486><+!>Parameters

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. The position of the value you want to retrieve.<-">

<:#200,8486><+">values<-">

@1st lev para@<:#400,8486><-">Any number of values, separated by semicolons. A value may be a number, text, time-date, or a number list, text list, or time-date list.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Select(3;1;2;3)<:f> returns <+!>3<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Select(5;1;2;3<:f180,QCourier New,0,0,0>)<:f> returns 
<+!>3<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Select(2;</S>Jan</T>:</S>Feb</T>:</S>Mar</T>;</S>Apr</T>:</S>May</T>:</S>Jun</T>;</S>Jul</T>:</S>August</T>:</S>Sep</T>;    
<**>   </S>Oct</T>: </S>Nov</T>:</S>Dec</T>)<:f> returns <+!>Apr;May;Jun<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Select(3;SalesOffices;ServiceOffices;TrainingCenters)<:f> returns 
<+!>San Diego;Sydney;Hong Kong;Amsterdam<-!> if the field named TrainingCenters contains these city names.

@Bhead title@<:S+194><:#194,8486><:f,,>SELECT

<:#600,8486>The <:X8,117;Index "Formula" # "SELECT"><:X8,117;Index "SELECT" #>SELECT keyword defines criteria for the selection of documents in an agent that runs a formula, in a view, or during replication. You use a SELECT statement 
<+">before <-">an expression to define the set of documents that you want to change, see in a view, or replicate.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>SELECT <+"><-!>formula <-"><+!><+">;<-"><-!>

@Chead@<:#200,8486>Usage

@Bullet@<:#400,8486>In an agent, you can use the Agent Builder to select the documents you want to act upon. There is no need to write a selection formula.

@Bullet@<:#600,8486>In an agent that runs a formula, you may include a SELECT statement in the formula. The agent will act upon all the documents selected with the Agent Builder 
<+">and<-"> all the documents selected by the SELECT statement.

@Bullet@<:#400,8486>In a view, you can use the Search Builder to select the documents you want to see in the view. There is no need to write a selection formula, although you can use SELECT to do so if you want.

@Bullet@<:#600,8486>For selective replication, you can use the Search Builder to select the documents you want to replicate. There is no need to write a selection formula, although you can use SELECT to do so if you want.

<:#200,8486><+!><+">YY should I remove the following paragraphs? not sure of implications...<-"><-!>

<:#200,8486>SELECT is not intended for use in execute</m>once macros, search macros, buttons, or SmartIcons.

<:#600,8486>Using SELECT in the formula eliminates the need to go through the database to select the documents. You can run the filter macro on all the documents in the database, and the SELECT statement performs the selection process.

<:#200,8486>The word SELECT is automatically prepended to the view selection formula when the formula is saved.

<:#800,8486>Use SELECT @All to select all documents for an operation (for example, use it in the selection formula for a view that displays all of the database</R>s documents). @All should never be used without the SELECT keyword. If your formula contains @All by itsel
f, Notes appends the SELECT @All statement to your formula:

@Mono@<:#400,8486>@All;<**>SELECT @All;

@Chead@<:#200,8486>Examples

<:#600,8486>Suppose you want to change the contents of the status field in several documents to Closed. However, you do not want to change the Status field of any document that contains the value Unsigned Contracts in the Categories field. 

<:#800,8486>To make the desired change, you can write and run a filter macro. When you write the filter, you must specify the documents that you want Notes to scan to make the change. By adding a SELECT statement to the filter macro</R>s formula, you can further limit 
the documents that Notes looks at when you run the filter macro.

@Mono@<:#400,8486>SELECT Categories != </S>Unsigned Contracts</T>;<**>FIELD Status := 
</S>Closed</T>;

@Bhead title@<:#220,8486>@Set

<:#600,8486><:X8,118;Index "@Set" #>Assigns a value to a temporary variable for use within the formula. You can also assign a temporary value with a separate assignment statement, but @Set lets you do the same thing within another @function such as @If or @Do.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Set(<+"> <-"><-!><+">variableName<-"><+!> ;<+"> <-!>value <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">variableName<-">

@1st lev para@<:#200,8486><-">Text. The name of a temporary variable.<-">

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Text, number, or time-date. The value you want to give to <+">variableName.<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486>None.

@Chead@<:#200,8486>Usage

<:#600,8486>Before you use @Set in your formula, the variable receiving the assignment must have already been declared within the same formula. An easy way to do this is to assign it a null value at the beginning of your formula:

<:#200,8486>TemporaryVariable:=</S></T>

@Chead@<:#200,8486>Example 

<:#800,8486>This formula determines whether the FirstName field was left blank. If so, it sets the variable FullName to the concatenation of the Title field with the LastName field, as in 
</S>Ms. Tsen.</T> If the FirstName field contains a value, the variable FullName is instead set to the concatenation of the FirstName with the LastName, as in 
</S>Mary Tsen.</T>

@Mono@<:#600,8486>Full Name:=</S></T>;<**>@If(FirstName=</S></T>;@Set(</S>FullName</T>;Title+</S> 
</T>+LastName);  <**>   @Set(</S>FullName</T>;FirstName+</S> </T>+LastName))

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@SetEnvironment<-)>

@Crossref@<:#200,8486><+)>@SetField<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@SetDocField<:X8,118;Index "@SetDocField" #>

<:#200,8486>Given the unique ID of a document, sets the value of a specific field on that document.<-#><-#><-#><-#><-#><-#><-#>

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@SetDocField( <-!><+">documentUNID<-"><+!> ; <-!><+">fieldName 
<-"><+!>; <-!><+">newValue <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameters<-!>

<:#200,8486><+"><-!>documentUNID<-"><-!><-!><-!><-!><-!><-!>

@1st lev para@<:#200,8486><+!><-"><+">YYdata type?<-"> <-!>The unique ID of a document.<-"><-"><-"><-"><-"><-">

<:#200,8486><+">fieldName<-">

@1st lev para@<:#200,8486><-">Text. The name of a field on the document.<-"><-"><-"><-"><-"><-">

<:#200,8486><+">newValue<-">

@1st lev para@<:#400,8486><-">Text or text-list; number or number-list; time-date or time-date range. The value you want to give to the field.<-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#><-"><-#>

@Chead@<:#200,8486>Usage

<:#200,8486>@@SetDocField is particularly useful in field formulas, button formulas, and agent formulas.

@See also hlp@<:#270,8486>

@See also btn@<:#200,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_SETDOCFIELD<-*>

@Crossref@<:#200,8486><+)>@DocumentUniqueID<-)><+*>H_DOCUMENTUNIQUEID<-*>

@Crossref@<:#200,8486><+)>@InheritedDocumentUniqueID<-)><+*>H_INHERITEDDOCUMENTUNIQUEID<-*>

@Chead title@<:#200,8486>Examples: @SetDocField

<:#400,8486>1. This formula, if placed on a button in a response form, changes the Subject of the parent document to 
<+!>More people are commuting by bicycle<-!>. 

@Mono@<:#200,8486>@SetDocField($Ref; "Subject"; "More people are commuting by bicycle")

<:#800,8486>2. In a database, you want to update the parent Project document whenever its child Status document changes. Each Project document has exactly one Status document. Specifically, you want to update the 
<:f,QCourier New,>latestStatus <:f>field on the Project document so that it reflects the contents of the 
<:f,QCourier New,>lastAction <:f>field on the child Status document.

<:#200,8486>You write this input translation formula for the lastAction field on the Status form:

@Mono@<:#400,8486>@SetDocField($Ref; "latestStatus"; lastAction );<**>lastAction

@Bhead title@<:#220,8486>@SetEnvironment

<:#400,8486><:X8,119;Index "@Environment" #>Sets an environment variable stored in the user</R>s NOTES.INI file (Windows, OS/2, and UNIX) or Notes Preferences file (Macintosh).

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@SetEnvironment(<-!><+"> <-"><+">variableName<-"> <-#><+!>;<-!><+"> value 
<-"><+!>)<-!><-#>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">variableName<-">

@1st lev para@<:#400,8486><-"><-!>Text. The name of the environment variable, enclosed in quotation marks. If you enter a text list for the 
<+">variableName<-">, then every variable named in that list receives the specified 
<+">value<-">.<-!><-"><-!><-"><-!><-">

<:#200,8486><+">value<-">

@1st lev para@<:#400,8486><-">Text. The value you want to give to <+">variableName. <-">If you use a text list for 
<+">value<-">, only the first value in the list is used; the rest are ignored.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486>None.

@Chead@<:#200,8486>Usage

<:#600,8486>Some formulas in Notes, such as selection and column formulas for shared views and folders, as well as scheduled agents, are run on the server instead of the user's workstation. In this case, the environment variables affected are the 
<+">server</R><-"><+">s<-"> environment variables, not the workstation</R>s.

<:#200,8486>To get the value of an environment variable, use @Environment.

<:#400,8486>To set the value of an environment variable, you can also use @Environment or the ENVIRONMENT keyword, which achieve the same result.

@See also hlp@<:#270,8486>

@See also btn@<:#400,8486><+)>{bmc 1details.bmp}See examples<-)><+*>H_EXAMPLES_ENVIRONMENT_SETENVIRONMENT_AND_ENVIRONMENT<-*>

@Crossref@<:#200,8486><+)>@Environment<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@SetField

<:#400,8486><:X8,120;Index "@SetField" #>Assigns a value to a field stored within a document (use @Set for temporary variables). This is similar to using the FIELD keyword, except that @SetField can be used within another @function.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@SetField(<-!><+"> <+!><-">"<+"><-!>fieldName<-"><+!>"<-!><+"><-#> 
<-"><+!>;<-!><+"> value <-"><+!>)<-!><-#>

@Chead@<:#200,8486>Parameters

<:#200,8486><-"><+!>"<+"><-!>fieldName<+!><-">"<-!><-"><-"><-"><-">

@1st lev para@<:#200,8486><-!>The name of the field whose value you want to set, enclosed in quotation marks.<-!><-!><-!>

<:#200,8486><+">value<-">

@1st lev para@<:#400,8486><-">The value you want to give to <+">fieldName.<-"> The <+">value 
<-">must be the same data type as the field; for example, if the field is numeric, the 
<+">value <-">must be a number.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486>None.

@Chead@<:#200,8486>Usage

<:#600,8486>Before you use @SetField in your formula, the field receiving the assignment must have already been declared within the same formula. An easy way to do this is to declare it at the beginning of your formula:

<:#200,8486>FIELD Fieldname:=Fieldname;

<:#200,8486>@@SetField is most useful in field formulas, macros, buttons, and SmartIcons.

@Chead@<:#200,8486>Example

@Mono@<:#600,8486>FIELD Status:=Status;<**>@If(Priority=</S>Low</T>|Priority=</S>Medium</T>;@SetField(</S>Status</T>;</S>Closed</T>);<**>@SetField(</S>Status</T>;</S>Open</T>))

<:#600,8486>This formula checks the value of the Priority field; if the Priority is Low or Medium, the Status field is set to Closed; otherwise the Status is set to Open. Notice that before @SetField is encountered in the formula, the Status field is declared using the
 FIELD keyword.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Set<-)>

@Crossref@<:#200,8486><+)>@SetEnvironment<-)>

<:#200,8486>

@Bhead title@<:I0,0,0,0><:#220,8486>@Sign<:X8,120;Index "@Sign" #>

<+@><:I0,0,0,0><:#200,8486>Indicates whether a number is positive, negative, or zero.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@Sign<-!><+!>( <-!><+">signedNumber <-"><+!>)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486>Number. The number whose sign you want to determine.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">sign<-">

@1st lev para@<:#200,8486>Number. May be any of the following values:

@Bhead title@<:t3>

<:#200,8486>

@Bhead title@<:#220,8486>@Sin<:X8,121;Index "@Sin" #>

<:#400,8486>Given an angle in radians, returns the sine of the angle. In a right triangle, the sine of an acute angle is the ratio of the length of its opposite side to the length of the hypotenuse.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Sin( <-!><+">angle<+!><-"> )<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">angle<-">

@1st lev para@<:#200,8486>Number. An angle expressed in radians.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">sine<-">

@1st lev para@<:#200,8486>Number. The sine of <+">angle<-">, accurate to 15 decimal places.

@Chead@<:#200,8486>Example

<:#200,8486>1. This formula returns 1, the sine of the angle Pi/2 (90 degrees).

@Mono@<:#200,8486>@Sin( @Pi/2 )

<:#400,8486>2. Suppose you have a triangle ABC. You know the value of angle A in radians, and the lengths of sides a and b. This formula finds angle B, in radians.

@Mono@<:#200,8486>@ASin( ( sideB *( @Sin( angleA ) ) ) / sideA )

<:#400,8486>This formula is a version of the law of sines, which states that for any triangle ABC, (sin A / a) = (sin B / b) = (sin C / c).

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Pi<-)>

@Crossref@<:#200,8486><+)>@Asin<-)>

@Crossref@<:#200,8486><+)>@Cos<-)>

@Crossref@<:#200,8486><+)>@Tan<-)>

<:#200,8486>

@Bhead title@<:#220,8486>Soundex

<:#200,8486><:X8,121;Index "@Soundex" #>Returns the Soundex (the Notes phonetic speller) code for the specified string. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Soundex(<-!><+"> string <-"><+!>) <-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string whose Soundex code you want.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">code<-">

@1st lev para@<:#200,8486><-">Text. The soundex code. You cannot convert it to any other data type.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#200,8486>The function is used almost exclusively by the Name & Address Book. You will rarely use this function.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Soundex(</S>field</T>)<:f> returns <+!>F430<-!>. 

<:#200,8486><:f,QCourier New,>@Soundex(</S>phield</T>)<:f> returns <+!>P430<-!>.

<:#200,8486>

@Bhead title@<:#220,8486>@Sqrt<:X8,122;Index "@Sqrt" #>

<:#200,8486>Given a number, returns its positive square root.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Sqrt( <-!><+">number <+!><-">)<-!>

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">number<-">

@1st lev para@<:#400,8486>Number. The number whose square root you want to find. The <+">number<-"> must be positive, otherwise @Sqrt returns an error.

@Chead@<:#200,8486>Example

@Mono@<:#200,8486>@Sqrt( 16 )<+!> <-!>

<:#200,8486>returns 4.

<:#200,8486>

@Bhead title@<:#220,8486>@Subset

<:#600,8486><:X8,122;Index "@Subset" #>Searches a list from left to right and returns the number values you specify. If you specify a negative number, @Subset searches the list from right to left, but the result is ordered as from the beginning of the list.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Subset(<-!><+"> list <-"><+!>;<-!><+"> number <-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">list<-">

@1st lev para@<:#200,8486><-">Text list, number list, or time-date list. <+!><+">YY Correct?<-"><-!>The list whose subset you want.<-"><-"><-">

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. The number of values from <+">list<-"> that you want.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">subsetList<-">

@1st lev para@<:#400,8486><-">Text list, number list, or time-date list.<+!> <-!><+!><+">YY Correct?<-"><-!> The 
<+">list,<-"> containing the <+">number<-"> of values you specified.<-"><-"><-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f180,QCourier New,0,0,0>@Subset(</S>New Orleans</T>:</S>London</T>:</S>Frankfurt</T>:</S>Tokyo</T>;2)<:f> returns 
<+!>New Orleans;London<-!>.

<:#400,8486><:f180,QCourier New,0,0,0>@Subset(</S>New Orleans</T>:</S>London</T>:</S>Frankfurt</T>:</S>Tokyo</T>;</m>3)<:f> returns 
<+!>London;Frankfurt;Tokyo<-!>. 

<:#600,8486><:f180,QCourier New,0,0,0>@Subset(BranchOffices;3)<:f> returns <+!>New Orleans;London;Frankfurt<-!> if the field named BranchOffices is made up of the list 
</S>New Orleans</T> : </S>London</T> : </S>Frankfurt</T> : </S>Tokyo</T> : 
</S>Singapore</T> : </S>Sydney</T>. 

<:#200,8486>

@Bhead title@<:#220,8486>@Success

<:#400,8486><:X8,123;Index "@Success" #>Returns 1 (TRUE). Use this function with @If in field validation formulas to indicate that the value entered satisfies the validation criteria.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Success

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><-"><+">true<-"><-"><-">

@1st lev para@<:#200,8486><-">Number. The number 1, meaning TRUE.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>@@Success is mainly used in input validation formulas for editable fields. 

@Chead@<:#200,8486>Example

<:#600,8486><:f180,QCourier New,0,0,0>@If(Price<<100;@Success;@Failure(</S>Price too large</T>))<:f> returns 1, and allows the document to be saved, when the value in the field Price is less than 100. This indicates that acceptable data was entered when used in an inpu
t validation formula.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Failure<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Sum<:X8,123;Index "@Sum" #>

<:#200,8486>Adds a set of numbers or number lists.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Sum( <-!><+">numbers<+!><-"> <-!><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">numbers<-">

@1st lev para@<:#200,8486>Number or number lists. As many number or number lists as you want to sum.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">result	<-">

<:#200,8486><+">	<-">Number. The sum of all the <+">numbers<-">, including members of number lists.

@Chead@<:#200,8486>Usage

<:#400,8486>Make sure all of the fields you send as parameters contain a number value -- Notes interprets empty number fields as the null string.

@Chead@<:#200,8486>Examples

<:#200,8486>1. <:f,QCourier New,>@Sum( 1 : 2 )<:f> returns <+!>3<-!>.<-#><-#><-#><-#><-#><-#>

<:#200,8486>2. <:f,QCourier New,>@Sum( 1 : 2 ; 10 : 20 )<:f> returns <+!>33<-!>.

@Bhead title@<:#220,8486>

@Bhead title@<:#220,8486>@Tan<:X8,124;Index "@Tan" #>

<:#200,8486>Given an angle, returns its tangent.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Tan( <+"><-!>angle <+!><-">)<-!><-"><-"><-"><-">

@Chead@<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">angle<-">

@1st lev para@<:#200,8486>Number. Any angle, expressed in radians.

@Chead@<:#200,8486>Return Value

<:#200,8486><+">tangent<-">

@1st lev para@<:#200,8486>Number. The tangent of <+">angle.<-">

@Chead@<:#200,8486>Example

@Mono@<:#200,8486>@Tan( @Pi/4 ) 

<:#200,8486>returns 1.

<:#200,8486>

@Bhead title@<:#220,8486>@Text

<:#200,8486><:X8,124;Index "@Text" #>Converts any value to a text string. 

<:#400,8486>Syntax<**><+!>@Text(<-!><+"> value <-"><+!>;<-!><+"> <-"><+!>"<-!><+">format</m>string<-"><+!>"<-!><+"> 
<-"><+!>)<-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">value<-">

@1st lev para@<:#200,8486><-">Number, time-date, or text. The value you want to convert to text.<-"><-"><-">

<:#200,8486><-"><+!>"<-!><+">format-string<+!><-">"<-!><-"><-"><-">

@1st lev para@<:#400,8486><-!>Optional. Up to four format-strings (see table below). These determine how the text is returned. If the 
<+">value <-">is already a text data type, the <+">format</m>string 
<-">is ignored. <-!><-!><-!>

@Chead@<:#200,8486>Return Value

<:#200,8486><+">textValue<-">

@1st lev para@<:#200,8486>Text. The <+">value<-"> you specified, converted to text. If you used any 
<+">format-strings, <-">they are applied.

@Chead@<:#200,8486>@Text with Time</m>Date Components

<:#600,8486><:X8,124;Index "Symbols" # "for @Text">There are four separate categories of time</m>date format</m>string components. You can include up to four components, but only one from each category. In the table below, categories of components are separated by hori
zontal lines. 

@AmiTable@<:t4>

@Chead@<:#200,8486>Time</m>Date Examples 

<:#200,8486><:f,QCourier New,>@Text(@Now)<:f> returns <+!>04/11/93 10:43 AM<-!>. 

<:#200,8486><:f,QCourier New,>@Text(@Now;</S>D1S0</T>)<:f> returns <+!>2/28<-!> if the date is February 28. 

<:#200,8486><:f180,QCourier New,0,0,0>@Text(@Now;</S>D1S1</T>)<:f> returns <+!>10:50:30 AM<-!> if the time is 10:50:30 A.M. 

<:#200,8486><:f180,QCourier New,0,0,0>@Text(@Now;</S>D3T1</T>)<:f> returns <+!>04/93 10:43 AM<-!>. 

@Chead@<:#200,8486><+!>@Text with Number Values<-!>

<:#400,8486><:X8,125;Index "Symbols" # "for @Text">For number values, compose a format</m>string by combining any of the following components into a string. Separate the components with commas.

@AmiTable@<:t5>

@Chead@<:#200,8486>Number Examples 

<:#200,8486><:f,QCourier New,>@Text(123.45)<:f> returns <+!>123.45<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Text(Sales;</S>C,2</T>)<:f> returns <+!>$800.00<-!> if the value in the Sales field is 800. 

<:#200,8486><:f180,QCourier New,0,0,0>@Text(800;</S>S</T>)<:f> returns <+!>8.00E+02<-!>. 

@Chead@<:#200,8486>Usage

<:#400,8486>Remember that once a number value is converted to text, you will not be able to use the number for arithmetic calculations.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@TextToNumber<-)>

@Crossref@<:#200,8486><+)>@TextToTime<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@TextToNumber

<:#200,8486><:X8,126;Index "@TextToNumber" #>Converts a text string to a number, where possible.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@TextToNumber(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#600,8486><-">Text. The string you want to convert to a number. If the <+">string 
<-">contains both numbers and letters, it must begin with a number to be converted properly. For example, the string 
</S>12ABC</T> converts to 12, but </S>ABC12</T> produces an error.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. The <+">string, <-">converted to a number.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>This function is useful for converting a number in a text field to a number that can be used for computation in a number field.

<:#400,8486>You can't use @TextToNumber to convert special text (such as that returned by @DocChildren or @DocDescendants) to a number.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@TextToNumber(</S>123</T>)<:f> returns <+!>123<-!> as a number. 

<:#400,8486><:f180,QCourier New,0,0,0>@TextToNumber(Cost)<:f> returns <+!>@ERROR<-!> if the contents of the field named Cost cannot be converted to a number.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@TextToTime<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@TextToTime

<:#200,8486><:X8,126;Index "@TextToTime" #>Converts a text string to a time</m>date value, if possible.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@TextToTime(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to convert to a time-date.<-"><-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date. The <+">string, <-">converted to a time-date.<-"><-"><-">

@Chead@<:#200,8486>Usage

<:#400,8486>This function is useful for converting a date within a text field to a value that can be used for computation in a time</m>date field. 

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@TextToTime(</S>8/10/90 2:40</T>)<:f> returns <+!>8/10/90 2:40:00 AM<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@TextToTime(</S>Today</T>)<:f> returns Today.

@Note@<:#600,8486></S>Tomorrow</T> and </S>Yesterday</T> are the only other legal strings to use to represent relative dates. The formula @TextToTime(</S>Next week</T>) returns a blank because the text string 
</S>Next week</T> cannot be converted to a time</m>date value.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@TextToNumber<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Time

<:#200,8486><:X8,127;Index "@Time" #>Converts the various components of a time and date and yields a time</m>date value.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Time(<-!><+"> hour<-"><+!> ;<-!><+"> minute<-"><+!> ;<-!><+"> second<-"><+!> )<-!> or<**><+!>@Time(<-!><+"> year 
<-"><+!>;<-!><+"> month <-"><+!>;<-!><+"> day <-"><+!>;<-!><+"> hour 
<-"><+!>;<-!><+"> minute <-"><+!>;<-!><+"> second <-"><+!>) <-!>

@Chead@<:#200,8486>Parameters

<:#200,8486><+">hour, minute, second<-">

@1st lev para@<:#200,8486><-">Number. The hour, minute, and second components of a time, respectively.<-">

<:#200,8486><+">year, month, day<-">

@1st lev para@<:#200,8486><-">Number. Optional. The year, month, and day components of a date, respectively.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">time<-">

@1st lev para@<:#400,8486><-">Time-date. A time date value that contains the <+">hour, <-"><+">minute,<-"> and 
<+">second<-"> components that you specified. The <+">year, <-"><+">month, 
<-">and <+">day, <-">if any, are truncated.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Time(1951;04;11;23;50;30) <:f>returns <+!>11:50:30 PM<-!>.

<:#200,8486><:f180,QCourier New,0,0,0>@Time(@Now)<:f> returns <+!>09:19:24 AM<-!> at 9:19:24 A.M. on any day.

<:#200,8486><:f180,QCourier New,0,0,0>@Time(@Created)<:f> returns <+!>09:19:24 AM<-!> if 9:19:24 A.M. is the time the document was created. 

<:#200,8486>

@Bhead title@<:#220,8486>Today

<:#200,8486><:X8,127;Index "@Today" #>Returns today</R>s date. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Today

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><-"><+">today<-"><-"><-">

@1st lev para@<:#200,8486><-">Time-date. Today's date.<-">

@Chead@<:#200,8486>Usage

<:#400,8486>This function is identical to the formula @Date(@Now). It is usually used in default value formulas to automatically enter the current date.

@Chead@<:#200,8486>Example

<:#200,8486><:f,QCourier New,>@Today<:f> returns <+!>02/19/93<-!> if today is February 19, 1993. 

<:#200,8486><:f,QCourier New,>FIELD ReceivedDate:=@Today;<:f>sets the field named ReceivedDate to today</R>s date.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Now<-)>

@Crossref@<:#200,8486><+)>@Tomorrow<-)>

@Crossref@<:#200,8486><+)>@Yesterday<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Tomorrow

<:#200,8486><:X8,128;Index "@Tomorrow" #>Returns the time</m>date value that corresponds to tomorrow</R>s date.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Tomorrow

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><+">tomorrow<-">

@1st lev para@<:#200,8486><-">Time-date. Tomorrow's date.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Tomorrow<:f> returns <+!>4/26/93<-!> if today is April 25, 1993. 

<:#200,8486><:f180,QCourier New,0,0,0>FIELD AnswerBack:=@Tomorrow;<:f>sets the field named AnswerBack to tomorrow</R>s date.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Now<-)>

@Crossref@<:#200,8486><+)>@Today<-)>

@Crossref@<:#200,8486><+)>@Yesterday<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Trim

<:#400,8486><:X8,128;Index "@Trim" #>Removes leading, trailing, and redundant spaces from a text string. If the parameter is a text list, the function removes blank text list elements.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Trim(<-!><+"> string <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text or text list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">trimmedString<-">

@1st lev para@<:#400,8486><-">Text or text list. The <+">string, <-">with extra spaces removed. If 
<+">string<-"> is a text list, blank list elements are removed.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>The function works with the spaces that exist in the text string; it does not correct spacing. 

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Trim(@UpperCase(</S>Robert Smith</T> ))<:f> returns 
<+!>ROBERT SMITH<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@UpperCase(@Trim(</S>Robert Smith</T> ))<:f> returns 
<+!>ROBERT SMITH<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Trim(Topic)<:f> returns <+!>Just a quick reminder<-!>, even if the original Topic field was entered as 

<:#200,8486>Just    a quick    reminder. 

<:#600,8486><:f180,QCourier New,0,0,0>@Trim(City:StateOrProvince:Country)<:f> returns 
<+!>Seattle;Toronto;Santiago;USA;Canada;Chile<-!>if the list of values contained in the City field consists of Seattle, Toronto, Santiago; the StateOrProvince field contains no values; and the Country field contains the list of values USA, Canada, Chile. 

<:#600,8486><:f180,QCourier New,0,0,0>@Trim(@Text(@Second(Date)))<:f> returns 
<+!>45<-!> as a text string stripped of all spaces around it if the contents of the field named Date is 8/29/89 16:30:45, or any other time</m>date value in which the number of seconds is 45.

<:#200,8486>

@Bhead title@<:#220,8486>@True

<:#200,8486><:X8,129;Index "@True" #>Returns the number 1. This function is equivalent to @Yes.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@True

@Chead@<:#200,8486><+!>Return Value

<:#200,8486><-"><+">true<-"><-"><-">

@1st lev para@<:#200,8486><-">Number. The number 1.<-">

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@True<:f> returns <+!>1<-!>. 

<:#200,8486><:f,QCourier New,>@If(Dept<;>100;@True;@False)<:f> returns <+!>1<-!> if the value in the field named Dept is greater than 100. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@False<-)>

@Crossref@<:#200,8486><+)>@No<-)>

@Crossref@<:#200,8486><+)>@Yes<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>@Unavailable

<:#400,8486><:X8,129;Index "@Unavailable" #>Use this function to make a field unavailable. Do not use this function to test to see if a field is available, use @IsUnavailable instead. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>FIELD <-!><+">fieldName<+!><-"> = <-!><+!>@Unavailable<-!>

@Chead@<:#200,8486>Return Value

<:#200,8486>None.

@Chead@<:#200,8486>Example

@Mono@<:#200,8486>FIELD NewDate:=@Today;FIELD OldDate:=@Unavailable;

<:#400,8486>This formula creates a field named NewDate and sets it to today</R>s date, then removes the field named OldDate from the document.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@DeleteDocument<-)>

@Crossref@<:#200,8486><+)>@DeleteField<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Unique

@Bullet@<:#200,8486>With no parameters, returns a random, unique text value.

@Bullet@<:#400,8486>With a parameter, <:X8,130;Index "@Unique" #>removes duplicate values from a text list by returning only the first occurrence of each member of the list.

@Chead@<:#200,8486>Syntax

<:#400,8486><+!>@Unique<**><-!><+!>@Unique( <-!><+">textlist<-"><+!> )<-!>

@Chead@<:#200,8486><+!>Parameter

<:#200,8486><+">textlist<-">

@1st lev para@<:#200,8486><-">Text list. Any text list.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486>With no parameters:

<:#200,8486><+">uniqueValue<-">

@1st lev para@<:#200,8486><-">Text. A random, unique text value.<-">

<:#200,8486>With one parameter:

<:#200,8486><+">uniqueList<-">

@1st lev para@<:#200,8486><-">Text list. The text list, with duplicate values removed.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>@@Unique is case sensitive.

@Chead@<:#200,8486>Examples

<:#200,8486><:f,QCourier New,>@Unique(</S>red</T>:</S>green</T>:</S>blue</T>:</S>green</T>:</S>red</T>)<:f> returns 
<+!>red; green; blue<-!>. 

<:#200,8486><:f,QCourier New,>@Unique(</S>red</T>:</S>green</T>:</S>blue</T>:</S>Green</T>:</S>red</T>)<:f> returns 
<+!>red; green; blue; Green<-!>. 

<:#200,8486>

@Bhead title@<:#220,8486>@UpperCase

<:#200,8486><:X8,130;Index "@UpperCase" #>Converts the lowercase letters in the specified string to uppercase.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@UpperCase(<-!><+"> string <-"><+!>) <-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text. The string you want to convert to uppercase.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">uppercaseString<-">

@1st lev para@<:#200,8486><-">Text. The <+">string, <-">converted to all uppercase letters.<-">

@Chead@<:#200,8486>Usage

<:#600,8486>This function is useful when you want to search for a particular value and cannot predict whether it will appear in lowercase, uppercase, or a combination of the two. You can also use it as an input translation formula to convert a field</R>s contents to up
percase.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@UpperCase(</S>Robert T. Smith</T>)<:f> returns 
<+!>ROBERT T. SMITH<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@UpperCase(State)<:f> returns <+!>MA<-!> if the State field contains 
</S>ma</T>, </S>Ma</T>, or </S>MA</T>.

<:#600,8486><:f180,QCourier New,0,0,0>@UpperCase(@Right(@UserName;</S> </T>))<:f> returns 
<+!>FLETCHER<-!> if </S>William Fletcher</T> is the name associated with the current User ID. Notice how @UpperCase was used in conjunction with @Right to find and convert only the user</R>s last name.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@LowerCase<-)>

@Crossref@<:#200,8486><+)>@ProperCase<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@UserName

<:#400,8486><:X8,131;Index "@UserName" #>Returns the current user name or server name. Using @UserName on a local database or in a private view in a server-based database returns the user</R>s name. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@UserName 

@Chead@<:#200,8486>Return Value

<:#200,8486><+">name<-">

@1st lev para@<:#200,8486><-">Text. The current user name or server name.<-">

@Chead@<:#200,8486>Usage

@note:caution@<:#200,8486>We do not recommend using @UserName in a public view. Doing so will produce unpredictable results. 

<:#600,8486>One use for @UserName is to display only those documents relevant to the current user. For example, your Service Request database could use @UserName in the private view named Assignments to display each technician</R>s assignments, weeding out everyone els
e</R>s:

<:#200,8486>SELECT @UserName=AssignedTo

<:#400,8486>However, the user can still design a different private view that retrieves all documents, so don</R>t depend on @UserName as a security mechanism.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@UserName<:f> returns <+!>Robert T. Smith<-!> if this is the name associated with the current user ID. 

<:#400,8486><:f180,QCourier New,0,0,0>@Right(@UserName;</S> </T>)<:f> returns 
<+!>Fletcher<-!> if William Fletcher is the name associated with the current User ID. 

<:#400,8486><:f180,QCourier New,0,0,0>@UpperCase(@Right(@UserName;</S> </T>))<:f> returns 
<+!>FLETCHER<-!> if William Fletcher is the name associated with the current User ID.

<:#200,8486>

@Bhead title@<:#220,8486>@UserPrivileges <+">YY phased out of R4<-">

<:#400,8486><:X8,132;Index "@UserPrivileges" #>Returns a text list of the current user</R>s privileges. The function returns only the position of the privilege in the privilege list, not the name of the privilege.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@UserPrivileges

@Chead@<:#200,8486>Return Value

<:#200,8486><+">privileges<-">

@1st lev para@<:#200,8486>Number or number list.

@Chead@<:#200,8486>Examples

<:#200,8486>Suppose a database has five privileges. User Mary Tsen has been assigned Privileges 2 and 3.

<:#200,8486><:f,QCourier New,>@UserPrivileges<:f> returns <+!>2:3<-!> (as a text list, not a numeric list).

<:#200,8486>Sandy Braun has not been assigned any privileges, so for him 

<:#200,8486><:f180,QCourier New,0,0,0>@UserPrivileges<:f> returns a blank.

<:#600,8486><:f180,QCourier New,0,0,0>@If(@UserPrivileges = </S>1</T>; </S>Marketing Report</T>; 
</S>Main Topic</T>)<:f> in a Form Formula will cause the Marketing Report form to be used if the current user has been assigned the first privilege in the list (regardless of what it is called); otherwise the Main Topic form will be used.

<:#200,8486>

@Bhead title@<:#220,8486>@UserRoles<:X8,132;Index "@UserRoles" #>

<:#400,8486>For a database on a server, returns a list of roles that the current user has. Roles are defined in a database's Access Control List.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@UserRoles<-!>

@Chead@<:#200,8486><+!>Return Value<-!>

<:#200,8486><+"><-!>roles<-"><-!>

@1st lev para@<:#400,8486><-">Text-list. Each item in the list is the name of a role that the current user has in the current database.<-"> Returns an empty string ("") if the current database is local.

@1st lev para@<:#200,8486>

<:#200,8486>

@Bhead title@<:#220,8486>@V2If 

<:#600,8486><:X8,132;Index "@V2If" #><:f><+"><+!>YY phased out of R4<-">?<-!><:f,,>This function performs an @If operation; the syntax is the same as for @If. Use @V2If when you expect your application to be used with Notes Release 2.x users. If the application will on
ly be used with Notes Release 3, you should use @If.

@Chead@<:#200,8486><:f,,>Syntax

<:#400,8486><+!>@V2If(condition1;action1;condition2;action2;condition99;    <**>   action99;else_action)<-!>

<:#600,8486>The @If function in Notes Release 3 has been redesigned to work in conjunction with the new @functions available in Release 3 (such as @Prompt). Due to these changes, the earlier releases of Notes cannot evaluate the Release 3 version of @If correctly, and 
will return an error message. 

<:#200,8486>If all of your application</R>s users are running Release 3 software, you should use @If instead.

@Note@<:#400,8486>In applications created with earlier releases of Notes, the @If function will automatically be renamed to @V2If during the upgrade to Release 3.

@See also hlp@<:#270,8486>

<:#200,8486>@@If

<:#200,8486>

@Bhead title@<:I0,0,0,0><:#220,8486>@Version<:X8,133;Index "@Version" #>

<+@><:I0,0,0,0><:#200,8486>Returns the build number of the Notes software you're running.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@Version

@Chead@<:#200,8486>Return Value

<:#200,8486><+">versionNumber<-">

@1st lev para@<:#200,8486><-">Number. May be any of the following <+!><+">YY need numbers for R4!<-"><-!><-">

<:t2>

<:#200,8486>

@Bhead title@<:#220,8486>@ViewTitle

<:#200,8486><:X8,133;Index "@ViewTitle" #>Returns the current view</R>s name. If there are aliases and synonyms, they are returned in a text list.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@ViewTitle 

@Chead@<:#200,8486>Return Value

<:#200,8486><+">title<-">

@1st lev para@<:#200,8486><-">Text or text list.<-">

@Chead@<:#200,8486>Usage

<:#200,8486>Use @ViewTitle in macros, except execute</m>once macros.

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@ViewTitle<:f> returns <+!>Main View<-!> if that is the title of the current view. 

<:#200,8486><:f180,QCourier New,0,0,0>@ViewTitle<:f> returns <+!></S><-!><+!>Main View</T><-!><+!>:</S><-!><+!>By Date</T><-!> if the view name is Main View|By Date. 

<:#400,8486><:f180,QCourier New,0,0,0>@UpperCase(@ViewTitle)<:f> returns <+!>MAIN VIEW<-!> if the title of the current view is 
</S>main view</T> in any combination of uppercase and lowercase letters. 

<:#200,8486>

@Bhead title@<:#220,8486>@Weekday

<:#200,8486><:X8,133;Index "@Weekday" #>Computes the day of the week and returns a number that identifies the day.

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Weekday(<-!><+"> time</m>date <-"><+!>)<-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date. The date whose weekday value you want.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">weekdayNumber<-">

@1st lev para@<:#200,8486><-">Number. Weekday numbers are 1 through 7, with Sunday = 1, Monday = 2, and so on. 
<-"><-"><-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Weekday(<[>9/29/88])<:f> returns <+!>5<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@Weekday(ResponseDate)<:f> returns <+!>2<-!> if the date in the response field happens to fall on a Monday.

@Mono@<:#400,8486>@If(@Weekday(ResponseDate) = 7 | @Weekday(ResponseDate) = 1;</S>Working on the Weekend</T>;@Text(@Created)) 

<:#400,8486>Returns the string <+!>Working on the Weekend<-!> if the contents of the field named ResponseDate is 7 (Saturday) or 1 (Sunday); otherwise it returns the date the document was created as a text string.

<:#200,8486>

@Bhead title@<:#220,8486>@Word

<:#800,8486><:X8,134;Index "@Word" #>Returns the specified word from a text string. A 
</S>word</T> is defined as the part of a string that is delimited by the defined separator character. For example, if you specify a space (</S> 
</T>) as the separator, then a word is any series of characters preceded by and followed by a space (or by the quotation marks that indicate the beginning or end of the string). 

<:#200,8486><+!>@Word(<-!><+"> string<-"><+!> ;<-!><+"> separator<-"><+!> ;<-!><+"> number<-"><+!> )<-!>

@Chead@<:#200,8486>Syntax

<:#200,8486><+">string<-">

@1st lev para@<:#200,8486><-">Text or text list. The string you want to scan.<-">

<:#200,8486><+">separator<-">

@1st lev para@<:#200,8486><-">Text. The character that you want used to delimit a word in the 
<+">string.<-"><-">

<:#200,8486><+">number<-">

@1st lev para@<:#200,8486><-">Number. A position indicating which word you want returned from 
<+">string.<-"><-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">word<-">

@1st lev para@<:#600,8486><-">Text or text list. The word that holds the position specified by the 
<+">number <-">in the <+">string<-">; for example, if <+">number <-">is 3, @Word returns the third word in the 
<+">string<-">. If a text list is used, @Word returns (in list format) a word from each list that holds the specified position.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Word(</S>Larson, Collins, and Jensen</T>; </S> 
</T> ; 2)<:f> returns <+!>Collins,<-!>. 

<:#400,8486><:f180,QCourier New,0,0,0>@Word(</S>Larson, Collins, and Jensen</T>:</S>Sales, Marketing, and Administration</T>;</S> 
</T>;2)<:f> returns <+!>Collins,:Marketing,<-!>.

<:#400,8486><:f180,QCourier New,0,0,0>@Word(</S>Larson,James,M.</T>;</S>,</T>;3) 
<:f>returns <+!>M.;<-!> here, the specified separator is the comma. The string contains 3 words: Larson, James, and M.

<:#400,8486><:f180,QCourier New,0,0,0>@Word(@Username;</S> </T>;2)<:f> returns 
<+!>Larson<-!> if James Larson is the name associated with the current User ID. It returns 
<+!>M<-!>. if James M. Larson is the name associated with the current User ID.

<:#200,8486>

@Bhead title@<:#220,8486>@Year

<:#200,8486><:X8,134;Index "@Year" #>Extracts and returns the year from the specified time</m>date value. 

@Chead@<:#200,8486>Syntax

<:#200,8486><+!>@Year( <-!><+">time</m>date <-"><+!>) <-!>

@Chead@<:#200,8486>Parameter

<:#200,8486><+">time-date<-">

@1st lev para@<:#200,8486><-">Time-date. The time-date whose year you want.<-">

@Chead@<:#200,8486>Return Value

<:#200,8486><+">year<-">

@1st lev para@<:#400,8486><-">Number. The year of <+">time-date. <-">@Year returns the year relative to the time zone in which the date was generated. 
<-">

@Chead@<:#200,8486>Example

<:#200,8486><:f180,QCourier New,0,0,0>@Year(<[>9/29/91])<:f> returns <+!>1991<-!>.

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Day<-)>

@Crossref@<:#200,8486><+)>@Hour<-)>

@Crossref@<:#200,8486><+)>@Minute<-)>

@Crossref@<:#200,8486><+)>@Month<-)>

@Crossref@<:#200,8486><+)>@Second<-)>

<:#200,8486>

@Bhead title@<:#220,8486>@Yes

<:#200,8486><:X8,135;Index "@Yes" #>Returns the value 1. This function is equivalent to @True. 

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Yes

@Chead@<:#200,8486>Return Value

<:#200,8486><+">yes<-">

@1st lev para@<:#200,8486><-">Number. The number 1.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f180,QCourier New,0,0,0>@Yes<:f> returns <+!>1<-!>. 

<:#200,8486><:f180,QCourier New,0,0,0>@If(Dept<;>100;@Yes;@No)<:f> returns <+!>1<-!> if the value in the field named Dept is greater than 100. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@False<-)>

@Crossref@<:#200,8486><+)>@No<-)>

@Crossref@<:#200,8486><+)>@True<-)>

@Chead@<:#200,8486>

@Bhead title@<:#220,8486>Yesterday

<:#200,8486><:X8,135;Index "@Yesterday" #>Returns the time</m>date value which corresponds to yesterday</R>s date.

@Chead@<:#200,8486><+!>Syntax

<:#200,8486><+!>@Yesterday

@Chead@<:#200,8486>Return Value

<:#200,8486><+">yesterday<-">

@1st lev para@<:#200,8486><-">Time-date. Yesterday's date.<-">

@Chead@<:#200,8486>Examples 

<:#200,8486><:f,QCourier New,>@Yesterday<:f> returns <+!>12/31/92<-!> if today is January 1, 1993.

<:#200,8486><:f,QCourier New,>@Yesterday <:f>returns <+!>8/16/93<-!> if today is August 17, 1993. 

@See also hlp@<:#270,8486>

@Crossref@<:#200,8486><+)>@Now<-)>

@Crossref@<:#200,8486><+)>@Today<-)>

@Crossref@<:#200,8486><+)>@Tomorrow<-)>

@disp:@<:S+288><:#288,8486><:f,,>

@Bhead title@<:S+288><:#288,8486>@Zone<:X8,136;Index "@Zone" #>

<+@><:I0,0,0,0><:#200,8486>Returns the time zone setting, and indicates if Daylight Savings Time is observed.

<+@><:I0,0,0,0><:#800,8486> If Daylight Saving Time is being observed, @Zone(TimeDate) will return the settings using the format zone.dst, where zone is the time zone number and dst is 1 if the specified date falls within the Daylight Saving Time boundary or is omitted if it does not
 fall within the Daylight Saving Time boundary.  If Daylight Saving Time is not being observed, @Zone(TimeDate) will return only the time zone number.

@Chead@<+@><:I0,0,0,0><:#200,8486>Syntax

<:#200,8486><+!>@Zone( <-!><+">currentTimeDate<+!><-"> )<-!><-"><-"><-"><-">

<:#200,8486><+!>Parameter<-!>

<:#200,8486><+">currentTimeDate<-">

@1st lev para@<:#400,8486>Time-date. Optional. The time-date whose zone you want to know. You must specify both a date and a time; otherwise @Zone returns 0.

@Chead@<:#200,8486>Return Value

<:#200,8486><+"><-!>zoneNumber<-"><+!>.<-!><+">dstFlag<-!><-"><-!><-!>

@1st lev para@<:#200,8486>Number. The time zone, followed by a period, followed by a flag indicating Daylight Savings Time.<-!><-!><-!><-!>

@Chead@<:#200,8486>Usage

<:#400,8486>When used without a parameter, @Zone returns the zone and Daylight Savings Time setting of the currently running version of Notes.

<:#400,8486>When used with the parameter <+">currentTimeDate<-">, @Zone returns the zone and Daylight Savings Time setting of 
<+">currentTimeDate<-">.

>

[Embedded]
00438964
