Some programming languages (unix shell, perl, php) provide a $ substitution mechanism where a literal string may contain embedded variable references which get replaced with the value of the variable.
This can be handy. Here's an example implementation of this kind of mechanism in J: IDCHARS=: '$ABCDEFGHIJKLMNOPQRSTUVWXYZ' dolsub1=: 1 :0 loc=. boxopen m n=. y (e. i. 0:) IDCHARS if. n < 3 do. <y return. end. nm=. }.n{. y if. 0 ~: nc__loc <nm do. <y return. end. <(,":do__loc nm),n}.y ) dolsub=: 1 :0 2 }. [: ; [: m dolsub1;.1 '$ ', ] ) Example, given: sample=:0 :0 This is some sample text Here's an example substitution: ($IDCHARS) ) dolsub can replace $IDCHARS with the value defined for IDXCHARS: 'base' dolsub sample This is some sample text Here's an example substitution: ($ABCDEFGHIJKLMNOPQRSTUVWXYZ) Notes: dolsub is an adverb. The locale used to resolve names is its left argument. If you do not want the z locale to be referenced, make sure it's not a part of the locale's path. In this implementation, I only allow names which are ALL CAPS and which are at least 2 characters long. Extending this to support lower case alphanumerics is trivial. In this implementation, I only interpolate names with noun definitions. I do not attempt to provide table formatting for tabular values, because that gets into ambiguities I do not care about. I'm ravelling so I can ignore leading 1 dimensions. The expression y (e. i. 0:) IDCHARS is supported by special code (but that's only a minor speed improvement for this kind of routine). FYI, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm