Indexing vs. subscripting: First, note the difference between indexing, as in alpha, and subscripting, as in alpha__2 (that's two underscores). (The 2 can be almost anything, not necessarily numeric.) These look almost the same in prettyprinted output: With subscripting, the 2 will be italicized[*1], and with indexing the 2 will be upright. But these two variable types mean very different things: Subscripting produces completely independent variables, and indexing produces variables which'll become linked into a single data structure called a table if a value is assigned to any one of them. So, when you're assigning values to variables, you almost always want subscripting.
The types atomic, name, symbol, indexed, and suffixed: In much Maple documentation (especially in GUI menus), what I'm calling subscripted variables are often called atomic variables. However, this terminology is misleading because any variable is atomic in Maple's formal type system (see ?type). In that system, those without indices are called symbols. The union of the set of symbols and the set of indexed symbols are called names. The type system has no formal predefined nomenclature for subscripted symbols constructed with double-underscore, but, if need be, one could be constructed from suffixed. See the help pages ?type, ?name, ?type,name, ?type,symbol, ?type,indexed, and ?type,suffixed.
Catenation: Producing a symbol from underlying characters (or groups of characters) arranged in a particular order is called catenation. This term is not specific to Maple; it's widely used in computer science and other fields. Maple has three primary commands for catenation: cat, nprintf, and the infix operator || (double-vertical-bar). The end result of all these are essentially the same: global symbols. There's no way to construct local symbols with catenation.
Examples: alpha__||2, cat(alpha__, 2), and nprintf("alpha__%d", 2) all do the same thing.
The commands cat and || (but not nprintf) have two additional features that are especially applicable to your Question:
- They can produce sequences of symbols.
- They can be used on the left side of the assignment operator :=, and (unlike seq or $) that remains true even if a sequence is produced.
Multiple assignment: This works as you said. A sequence of n assignable entities (such as names) followed by := followed by a sequence of values (numeric or otherwise) will do all the assignments at once.
Putting it all together: Your goal can be achieved by
alpha__||(1..JointNum):= 0 $ JointNum;
cat(alpha__, 1..JointNum):= 0 $ JointNum;
There's only a stylistic difference, not a practical one, between these two.
[*1] It's also possible to produce subscripted symbols whose subscripts are not italicized and thus prettyprint exactly the same as their indexed counterparts. Doing this is a little bit beyond the scope of this Answer, but ask if that's what you want.