George I was going to say "To be sure you have understood this, be sure to read carefully the description of the TELNETDEVICE statement in the Communications Server (CS) IP Configuration Reference manual." but I'm not really sure that helps. I even took a peek at the Configuration Guide manual - which is supposed to have the "mission" to cover tricky topics and, really - apart from being misleading - that doesn't help either.
So, since you have been so confused over the topic, here's a little tutorial on session initiation with the CS TN3270E server - for TN3270 sessions, that is, excluding so-called "linemode" - and the role of the TELNETDEVICE statement in that session initiation process. First we'll deal with the table of codes and mode table entry names as held as an array, logically or indeed physically, in the TN3270E server storage. This array is initialised according to the famous Table 33 in the description of the TELNETDEVICE statement in the CS Configuration Reference manual. Recalling that we are restricting the discussion only to TN3270 sessions, I can say, with one exception to be covered later, that the mode table entry names are all to be found in the IBM-supplied mode table ISTINCLM as described in Appendix A of the CS SNA Resource Definition Reference manual. - If you want to change one of the mode table entry names so that it refers to a customised mode table entry in an installation-specific mode table, then you need to define the appropriate TELNETDEVICE statement to override the default mode table entry name with the installation-specific mode table entry - and - you need to set up an installation-specific mode table module named in the MODETAB operand of the APPL statement which the TN3270E server will use in order to support the SNA session initiation. - If you want to change one of the mode table entry names so that it refers to a mode table entry different from the default mode table entry but still one to be found in ISTINCLM, then you need to define the appropriate TELNETDEVICE statement to override the default mode table entry name with the other mode table entry. - If, for the purposes of documentation, you want to emphasise which mode table entry from ISTINCLM will be used in your installation as a result of the way you have prepared the customisation of the TN3270 client emulators, then you can define the appropriate TELNETDEVICE statement with the default mode table entry name. The array consists of three columns and a number of rows. The three columns are (1) the code, (2) the mode table entry that is used when "TN3270" protocols are used and (3) the mode table entry that is used when "TN3270E" protocols are used. There is a row for each of the possible codes. The table in storage is changed as follows according to the TELNETDEVICE statement prototypes: TELNETDEVICE code entry1,entry2 "code" matches a code in column 1 which selects a row. Then both entry1 replaces the default entry in the column 2 and entry2 replaces the default entry in the column 3. TELNETDEVICE code entry1 "code" matches a code in column 1 which selects a row. Then entry1 replaces the default entry in the column 2. The default entry is column 3 is unaffected. TELNETDEVICE code ,entry2 "code" matches a code in column 1 which selects a row. Then entry2 replaces the default entry in the column 3. The default entry is column 2 is unaffected. Once the TELNETDEVICE statements have been processed, we have the table in the state in which it will *possibly* be used in order to initiate the SNA sessions to be concatenated to the TN3270 connections, "possibly" because, after all this trouble, it may never be needed! Now the TN3270 client initiates a TN3270 TCP connection. The contacted TN3270 server initiates "negotiation" in a manner covered by the examples described in section 13.4 "Examples" of RFC 2355, for example, http://www.faqs.org/rfcs/rfc2355.html The TN3270 server offers to operate with the protocols associated with RFC 2355 by proposing "TN3270E". - If the TN3270 client refuses "TN3270E", we say we are using "TN3270" protocols, see the first example. - If the TN3270 client accepts "TN3270E", we say we are using "TN3270E" protocols, see all the other examples. Also, as part of the "negotiation", a code is agreed which is supposed to describe the nature and characteristics of the TN3270 connection. If we are using "TN3270" protocols, the code is referred to as a TERMINAL- TYPE whereas, if we are using "TN3270E" protocols, the code is referred to as a DEVICE-TYPE - again, see those examples.[1] The set of codes is the same in the two cases.[2] If an Unformatted System Services (USS) table is in use - rather than the "TELNET solicitor" panel, DEFAULTAPPL statement or DEFAPPL parameter, the name of the mode table entry to be used in the SNA session can be chosen by the logic involving the use of the USS LOGON command with the consequence that the storage array defined by the TELNETDEVICE statements - default or actual - can gather dust. USS LOGON logic is used for the purposes of defining three elements involved in an SNA session setup: 1. the primary LU name (application name) - required 2. the mode name (mode table entry name)[3] - required eventually but optional at this stage 3. data - intended for use as an identification to be associated with the human end user - optional If the mode name has been specified, the logic which is necessarily used when an USS LOGON command is not used and was always used prior to the enhancement which introduced the possibility to use an USS LOGON command is bypassed and whatever the TELNETDEVICE statements - default or actual - specify is irrelevant. At the point in the processing where the TN3270 server need to use the VTAM API in order to pass parameters to VTAM which will allow the SNA INIT-type request to be passed to the VTAM SSCP mimicking the behaviour of a traditional peripheral node "device-type" secondary LU, if the mode name has *not* been specified, a decision over what value should be put into the field which contains the mode name needs to be made. This is where the logical array constituting a table build from the TELNETDEVICE statements - default or actual - comes in. And, of course, now that all the circumstances have been explained, it is simplicity itself! The TERMINAL-TYPE or DEVICE-TYPE code determined during the negotiation shortly after the TN3270 TCP connection was established is used as a means to locate a row in the logical table. Whether the negotiation determined that "TN3270" protocols or "TN3270E" protocols should be used determines which mode table entry name will be selected as the mode name. If "TN3270" protocols, the mode name is taken from column 2, if "TN3270E", from column 3. But there is a small subtlety with which to deal. Actually the subtlety has a touch of stupidity in it. If the "special" mode name "NONE" is found, it is not regarded to be a mode name but to represent 8 blanks - a mode name field in SNA is always 8 positions long padded, if necessary, with trailing blanks AFAIK.[4] At this point the REQSESS, "request session", call is made over the VTAM API and the INIT-type request is sent, internally in the case of a TN3270 server supported in the same operating system as VTAM, to the VTAM SSCP. Until this point VTAM has been involved only in that, if USS facilities are used, VTAM supplied the macros which were used in order to create the USS tables. If, because an installation's standard assembly and linkage edit job or procedure was used in order to create the USS table object module and the object module is stored in a partitioned data set previously only used in the VTAMLIB concatenation in the VTAM procedure and possibly containing "VTAMLIB" as a token, that partitioned data set needs to be accessible by the EZBTNINI program running in the installation's TN3270E procedure. When the VTAM SSCP logic processes the INIT-type request, it checks in order to see whether or not the mode name field is 8 blanks. If the field does contain 8 blanks, VTAM undertakes to find a mode name from the definitions associated with the APPL statement which applies to the secondary LU in the SNA session in the process of being initiated from which the INIT-type request logically originated. - If this APPL statement specifies a value for the DLOGMOD operand, it is used as the mode name. The mode name specified can correspond to a mode table entry in either a mode table named in a MODETAB operand or the IBM-supplied mode table ISTINCLM.[5] - If this APPL statement does not specify a DLOGMOD operand, the first entry name in the applicable mode table is used as the mode name. -- If this APPL statement specifies a value for the MODETAB operand, this is the applicable mode table and the first entry name in this mode table is used as the mode name. -- If this APPL statement does not specify the MODETAB operand, the applicable mode table is the IBM-supplied mode table ISTINCLM and the first entry name in ISTINCLM is used as the mode name. Note that all these references to the DLOGMOD and MODETAB operands are relevant *only* if the systems programmer has taken the trouble actually to create at least one TELNETDEVICE statement which includes "NONE" in the position of a mode table entry name. If no such TELNETDEVICE statement is specified, there is no role whatsoever for the DLOGMOD operand of the APPL statement. At a later stage in the session setup process, the specified mode name is used as a means to select a mode table entry - hence the frequent use of the term "mode table entry name" as the concrete entity associated with the term "mode name" - and from that mode table entry the session setup requests continue with the defined "BIND image" included. - [1] It's also perhaps helpful to provide an opinion over why the name for the code changed in RFC 2355 from TERMINAL-TYPE to DEVICE-TYPE. The TN3270 enhancements associated with "TN3270E", first introduced with RFC 1647, introduced 3270 printer support. In the world of TN3270, a "display" is called a "terminal" but now "terminal types" need to cover printers and so the terminology needed to change. Thus the TERMINAL-TYPE became the DEVICE- TYPE. QED! It's interesting to note that IBM - perhaps, more strictly the probably graduate students in the university where the original product which became "TCP/IP for VM" was created - have always used the term "device" rather than "terminal". How prescient of them! I was able to check this as far back as "TCP/IP for MVS" V2R2.1 but I can't see why it need ever have been different. [2] This isn't strictly true. The DEVICE-TYPE codes which were mandated in RFC 2355 do not bother with the "3279" display device in their set of codes whereas the TERMINAL-TYPE codes do include "3279". Thus all TELNETDEVICE statements which include "3279" cannot ever invoke the mode table entry name in the second positional parameter position. While doing the "historical research" on this topic, I noted that it was only when the "configuration" manual was reorganised into two manuals between OS/390 V2R8 to OS/390 V2R10 - there were no "communications server" changes for OS/390 V2R9 - that, for whatever reason - not excluding some objection from a customer with clout - we all know who they are!, the developers decided that, contrary to RFC 2355, the codes extended to the "3279" as well as the "3278", thereby very belatedly announcing 3279 models 4 and 5! [3] The mode table entry name or mode name can be specified in one of three ways in USS LOGON logic: 1. The mode name can have been specified as a default name to be used with the USS LOGON command used which is typically - but not necessarily - a user-friendly version of the "application name", for example "CICS" instead of "A55CICSZ". 2. The mode name can have been keyed in by the end user as part of the USS LOGON command. 3. And, since we are using PCs running a TN3270 client emulator, some scripting logic may be implementing what would, in the case of a "dumb" device, be option 2. [4] The stupidity is that when this technique to deal with not wanting a mode name to be specified was dreamt up, it was no doubt assumed that nobody would ever think to use the token NONE as a mode name. This might be a just about reasonable assumption - as long as the folk involved used the English language ... I believe my point is made. [5] The IBM-supplied mode table ISTINCLM is always available even when you have specified a value for the MODETAB operand since, in effect, mode table ISTINCLM is always concatenated after the mode table you specify. The VTAM manuals are logically incorrect when they specify ISTINCLM as the default value for the MODETAB operand. The "small print" negates the syntax diagram: <quote> If you do not supply a logon mode table for <whatever> on the MODETAB operand, an IBM-supplied default logon mode table (ISTINCLM) is used. If you specify a table, both the table you specify and the default table are used. </quote> Chris Mason ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html

