LU range specification

Telnet LU range rules allow for almost any type of LU range needed. Ranges can be alphabetic (A), numeric (N), alphanumeric (B), hexadecimal (X), or a complete wildcard (?), which includes alphanumeric and the three national characters (@,#,$). The range type can be different for each character position. Within the LU range, any character position can be fixed (F). To conform with VTAM® LU naming convention, the first character must be alphabetic or a national character. If the first character is a range, only the alphabetic range can be used.

An LU range is created by specifying a starting LU name, an ending LU name, and the range rules to be used. For example, the following statement creates a range from TCPM1000 to TCPM1100.

TCPM1000..TCPM1100..FFFFFNNN

The three components are:

All three components must be the same length, the Starting LU name overall must be lower than the Ending LU name, and each character position value must be appropriate for the specified range rule.

Tip: In the above example, the character 1 following the character M is defined as fixed because it cannot change. The range rule cannot specify N even though it seems to be part of the number range.

The ascending order of characters is 0-9, A-Z, @, #, $.

If the range rule is omitted, Telnet assumes the following style, where LowerRange and UpperRange must be all numeric or all alphabetic:

LuBase+LowerRange..LuBase+UpperRange

Numeric values are lower than alphabetic values to facilitate the use of hexadecimal ranges. The range rules are:

Range         Rule       Characters    
--------------------------------------
Numeric       N          0-9          
Alphabetic    A          A-Z          
AlphaNumeric  B          0-9,A-Z      
Hexadecimal   X          0-9,A-F      
Wildcard      ?          0-9,A-Z,@,#,$

The maximum number of LUs per range is 4294967295 and the maximum number of LUs per group is 4294967295.

The creation of LU name values from the range specification begins at the Starting LU and increments the rightmost variable position first, moving to the left as each variable position reaches its range maximum. The process is like an odometer, except that each position can have different basing instead of all positions being base 10. For example, the following statement has 223 LU name entries.

LU555..LU777..FFNNN

The breakdown of the range is:

LU555->LU559,                                                5
LU560->LU569, LU570->LU579, LU580->LU589, LU590->LU599,     40
LU600->LU699,                                              100
LU700->LU769, LU770->LU777                                  78
                                                           ===
Total  --------------------------------------------------> 223

The LU names increment just as the numbers on an odometer would. A less intuitive case involves an alphabetic range of 1407 LU name entries.

LUCCC..LUEEE..FFAAA

The breakdown of the range is:

LUCCC->LUCCZ,                                                  24
LUCDA->LUCDZ, LUCEA->LUCEZ, LUCFA->LUCFZ, ... LUCZA->LUCZZ,   598
LUDAA->LUDZZ,                                                 676
LUEAA->LUEDZ, LUEEA->LUEEE                                    109
                                                             ====
Total  ----------------------------------------------------> 1407

It is important to realize that these ranges do not break down in the following patterns:

LUCCC->LUCCE, LUCDC->LUCDE, LUCEC->LUCEE, ...
LU555->LU557, LU565->LU567, LU575->LU577, ...

It is an incorrect assumption that the LU name after LUCCE would be LUCDC. The correct LU name after LUCCE is LUCCF. The LU names increment to LUCCZ and the next name is LUCDA. When the rightmost position reaches the range maximum, the position to its left is incremented by one, and the rightmost position starts at the range beginning, not the character specified in the Starting LU name.

All range types are handled the same way. The position is incremented to its maximum value and then wraps to the beginning range value, not the specified Starting LU name value. By the same logic, the position is incremented to the ending range value and not the Ending LU name value.

All LU names increment the same way. A more complicated example mixes fixed and variable character positions with several different range types. The LU range has 39744 LUs.

LUAD1800..LUGD98FZ..FFAFNFXB

Calculating the number of LUs is easier if the fixed positions are removed. For purposes of calculating the number of LUs, the range is specified as follows:

A100..G9FZ..ANXB

This breaks down as follows:

A100->A10Z, D110->D11Z, ... A190->A19Z, A1A0->A1AZ ... A1F0->A1FZ    576
A200->A2FZ, A300->A3FZ, ... A900->A9FZ                              4608
B000->B9FZ, C000->C9FZ, ... F000->F9FZ                             28800
G000->G9FZ                                                          5760
                                                                   =====
Total -----------------------------------------------------------> 39744