Miscellaneous
If there are subcircuits in the input file, Spice3 expands instances of them. A subcircuit is delimited by the cards .subckt and .ends, or whatever the value of the variables substart and subend is, respectively. An instance of a subcircuit is created by specifying a device with type 'x' - the device line is written
xname node1 node2 ... subcktname
where the nodes are the node names that replace the formal parameters on the .subckt line. All nodes that are not formal parameters are prepended with the name given to the instance and a ':', as are the names of the devices in the subcircuit. If there are several nested subcircuits, node and device names look like subckt1:subckt2:...:name. If the variable subinvoke is set, then it is used as the prefix that specifies instances of subcircuits, instead of 'x'.
Spice3f5 occasionally checks to see if it is getting close to running out of space, and warns the user if this is the case.
C-shell type quoting with "" and '', and backquote substitution may be used. Within single quotes, no further substitution (like history substitution) is done, and within double quotes, the words are kept together but further substitution is done. Any text between backquotes is replaced by the result of executing the text as a command to the shell.
In the Qt window, the Up and Down keys step through the command history. Tenex-style command, filename, and keyword completion ('set filec' in the 4.3 C-shell) is only available when commands are read from a terminal: if EOF (control-D) is typed after the first character on the line, a list of the commands or possible arguments is printed, and if escape is typed, Spice3f5 tries to complete what has already been typed.
The values of variables may be used in commands by writing $varname where the value of the variable is to appear. The special variables $$ and $< refer to the process ID of the program and a line of input which is read from the terminal when the variable is evaluated, respectively. If a variable has a name of the form $&word, then word is considered a vector (see above), and its value is taken to be the value of the variable. If $foo is a valid variable, and is of type list, then the expression $foo[low-high] represents a range of elements. Either the upper index or the lower may be left out, and the reverse of a list may be obtained with $foo[len-0]. Also, the notation $?foo evaluates to 1 if the variable foo is defined, 0 otherwise, and $#foo evaluates to the number of elements in foo if it is a list, 1 if it is a number or string, and 0 if it is a boolean variable.
History substitutions, similar to C-shell history substitutions, are also available - see the C-shell manual page for all of the details.
The characters ~, {, and } have the same effects as they do in the C-Shell, i.e., home directory and alternative expansion. It is possible to use the wildcard characters *, ?, [, and ] also, but only if you unset noglob first. This makes them rather useless for typing algebraic expressions, so you should set noglob again after you are done with wildcard expansion. Note that the pattern [^abc] matchs all characters except a, b, and c.
IO redirection is available - the symbols >, >>, >&, >>&, and < have the same effects as in the C-shell.
You may type multiple commands on one line, separated by semicolons.