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 completely wildcarded (?) 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:
Starting LU name (TCPM1000)
Ending LU name (TCPM1100)
Range rules (FFFFFNNN)
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. Notice in the above
example that 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, @, #, $.
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 the ranges above 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 |
SEQUENTIALLU: Telnet, by default, uses a sequential method to choose LUs from a group.
LUGROUP LUGRP1
LU001..LU120..FFNNN
LU201..LU250..FFNNN
LU240..LU280..FFNNN
LU010..LU050..FFFNN
ENDLUGROUP
From the previous example, the first LU assigned is LU001, second is LU002, and so on. If five clients repeatedly connect and disconnect, they will be assigned new LUs farther into the range each time:
When the end of the first range is reached, selection goes to the beginning of the second range.
At the end of the second range, selection goes to the beginning of the third range.
At the end of the third range, selection goes to the beginning of the fourth range.
At the end of the fourth range, selection goes to the beginning of the first range again.
Telnet does not enforce an overall ascension in LU name selection. The selection process begins at the first name of the first range and progresses to the last name of the last range. In the example, after LU250 is assigned from range 2, LU240 from range 3 is attempted next. After LU280, LU010 is attempted . After LU050, the process starts over and LU001 is attempted.
The SEQUENTIALLU function can be turned off by coding NOSEQUENTIALLU. In this case, the five LUs that are repeatedly connecting and disconnecting would never use any LU names other than LU001, LU002, LU003, LU004, and LU005. NOSEQUENTIALLU might degradate LU lookup performance when a large range is specified and only LUs at the end of the range are available. Every connection has to relearn that most of the LUs are already in use. SEQUENTIALLU allows Telnet to start its search near the last chosen LU where LUs are more likely to be available. SEQUENTIALLU and NOSEQUENTIALLU parameters can be coded at all three parameter block levels for different levels of granularity.
If several clients are connecting at the same time, the order of LU assignment might not be in exactly the same order as the connection IDs due to process timing between connection ID assignment and LU name assignment.
If single LU names are in a group with LU ranges, the single LU names are selected before any LU range names are selected, regardless of their order. In the example below, LUAAA, LUBBB, LUCCC, and LUDDD are all processed before any of the range LU names.
Profile LUGROUP |
LUGROUP as used by Telnet |
LUGROUP LUGRP2 |
LUGROUP LUGRP2 |
LUAAA |
LUAAA |
LU001..LU120..FFNNN |
LUDDD |
LU201..LU250..FFFNN |
LUBBB |
LUDDD |
LUCCC |
LUBBB |
LU001..LU120..FFNNN |
LU240..LU280..FFFNN |
LU201..LU250..FFFNN |
LU010..LU050..FFFNN |
LU240..LU280..FFFNN |
LUCCC |
LU010..LU050..FFFNN |
ENDLUGROUP |
ENDLUGROUP |
---------------------------------------------------------------------------------------------------------------------------------------------------
© Copyright IBM Corp. 2000, 2003
---------------------------------------------------------------------------------------------------------------------------------------------------
IBM Library Server Copyright 1989, 2004 IBM Corporation. All rights reserved.