|
|
1.1 root 1: .pa 1
2: .he 'FORM (I)'6/15/72'FORM (I)'
3: .ti 0
4: NAME
5: .br
6: form -- form letter generator
7: .sp
8: .ti 0
9: SYNOPSIS
10: .br
11: form____ proto arg918 ...
12: .sp
13: .ti 0
14: DESCRIPTION
15: .br
16: form____ generates a form letter from a prototype
17: letter, an associative memory, arguments and in a special case, the
18: current date.
19: .sp
20: If form____ is invoked with the proto_____ argument 'x', the associative memory is
21: searched for an entry with name 'x' and the contents filed under that name are
22: used as the prototype. If the search fails, the message "[x]:" is typed on
23: the console and whatever text is typed in from the console, terminated by
24: two new lines, is used as the prototype.
25: .sp
26: If the prototype argument is missing, '{letter}' is assumed.
27: .sp
28: Basically, form____ is a copy process from the prototype to the output file.
29: If an element of the form [n] (where n_ is a digit from 1 to 9) is encountered,
30: the n_th argument arg___9n8 is inserted in its place, and that argument is then
31: rescanned. If [0] is encountered, the current date is inserted. If
32: the desired argument has not been given, a message of the form "[n]:" is
33: typed. The response typed in then is used for that argument.
34: .sp
35: If an element of the form [name] or {name} is encountered, the name is looked up in the
36: associative memory. If it is found, the contents of the memory under this
37: name replaces the original element (again rescanned). If
38: the name is not found, a message of the form "[name]:" is typed.
39: The response typed in is used for that element. The response is
40: entered in the memory under the name if the name is enclosed in [].
41: The response is not entered in the memory but is remembered for the
42: duration of the letter if the name is enclosed in {}.
43: .sp
44: In both of the above cases, the response is typed in by entering
45: arbitrary text terminated by two new lines. Only the first of the
46: two new lines is passed with the text.
47: .sp
48: If one of the special characters [{]}\\ is preceded by
49: a \\, it loses its special character.
50: .sp
51: If a file named "forma" already exists in the users directory, "formb" is
52: used as the output file and so forth to "formz".
53: .sp
54: The file "form.m" is created if none exists. Because form.m is
55: operated on by the disc allocater, it should only be changed by using
56: fed___, the form letter editor, or form____.
57: .sp
58: .fi
59: .ti 0
60: FILES
61: .br
62: form.m associative memory
63: .br
64: form? output file (read only)
65: .sp
66: .fi
67: .ti 0
68: SEE ALSO
69: .br
70: fed(I), type(I), roff(I)
71: .sp
72: .fi
73: .ti 0
74: DIAGNOSTICS
75: .br
76: "cannot open output file" "cannot open memory file"
77: when the appropriate files cannot be located or created.
78: .sp
79: .fi
80: .ti 0
81: BUGS
82: .br
83: An unbalanced ] or } acts as an end of file but
84: may add a few strange entries to the associative memory.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.