I'm obliged to apologise for not appending previous posts. If I did so, I would 
blow the list limit of 1000 lines. I'm not even sure this will work. It might 
actually be handy if this page showed how many lines so that I wouldn't have 
to waste time reposting!!!

George

I hope your work with the z/OS Communication Server (CS) "TN3270E" server 
is still in a test phase since I don't want you making changes in a production 
environment.

This is first of all a response to your last point regarding the possible use 
of 
the IBM-DYNAMIC code. It makes sense to specify this only after you have 
distributed software to your TN3270 users' PCs which causes the Attachmate 
emulator to specify IBM-DYNAMIC as the TN3270E negotiation DEVICE-TYPE 
code. If you are unclear what this means, take a look at the 13.4 Examples 
section in RFC 2355, for example:

http://www.faqs.org/rfcs/rfc2355.html

As to the TELNETDEVICE statement which is actually relevant to your users, 
you can determine what this is by using the following command and looking for 
the value of "DEVICETYPE:"

DISPLAY TCPIP,tnserv,CONN,CONN=nnn

where tnserv is the name of your TN3270E procedure - which I see is 
TN3270E, logically enough! - and nnn is the number associated with one of 
the active connections.

This is really significant only when you want to specify a non-default value 
for 
the name of the mode table entry. However, you always show that you are on 
top of your definitions when you specify relevant defaults. 

As I said before, if the code you see from the command is IBM-3278-3-E, the 
TELNETDEVICE command which associates that code with the name of the 
mode table entry which the "TN3270E" server will use for the concatenated 
SNA session is as follows:

TELNETDEVICE IBM-3278-3-E ,SNX32703

The effect of the comma is to ensure that the mode table entry name is in the 
*second* positional parameter position and is hence the one used by a 
TN3270 connection where the use of the TN3270E protocols has been agreed -
 just like all but the first example in section 13.4 in RFC 2355.

The effect of *not* having the comma is to cause the named mode table 
entry to be used only when the use of TN3270 protocols have been agreed - 
as in the first example in section 13.4. Since you are always using TN3270E 
protocols, you will never use those mode table entries.

It was at this point I decided that you needed the "tutorial" on session setup 
where the z/OS Communications Server "TN3270E" server was involved. If you 
haven't read through that post yet, now is the time.

-

Note that the customisation I have been talking about assumes that all your 
users are configured identically as far as defining the TN3270E DEVICE-TYPE 
code is concerned. However, even if some are different and happen to specify 
other codes, they are still very likely to work since a suitable mode table 
entry 
from the IBM-supplied table is specified by default.

Now that - I hope - you understand the TN3270 session setup process 
including the role of the TELNETDEVICE statement, I hope you understand 
how you can best use the TELNETDEVICE statement - if indeed you need to 
specify any TELNETDEVICE statements at all.

-

Now let's look at the whole of your post.

> I didn't make the original changes to the system in support of this change.

Perhaps I should be discussing these matters with whomever did.

> ... in the server (as you call it).

I believe I'm using the word "server" only as in the "client"-"server" context 
- 
except where I am referring to Communications Server perhaps.

Regarding the APPL major node:

> DLOGMOD=MTQRYPC

Since none of your TELNETDEVICE statements - nor any of the default 
TELNETDEVICE statements - specifies "NONE" as a pseudo-mode table entry 
name, you will never use the DLOGMOD operand value as a mode table entry 
name. I hope that is clear from the "tutorial".

>From the description of the TELNETDEVICE statement:

<quote>

The LOGMODE name NONE prevents Telnet from specifying a LOGMODE 
request with the REQSESS.

</quote>

Yes, I agree that the manual authors do not actually say that only 
when "NONE" is specified does the value of the DLOGMOD operand have a role 
to play - assuming that they actually understand the VTAM API which cannot 
be taken for granted! - but that is what the consequences are.

> MODETAB=PBSBMODE

There is no evidence that you are using mode table entries other than those 
to be found in the IBM-supplied table ISTINCLM.

> USSTAB=VTMUSS0N

The USSTAB operand specified on an APPL statement applies only to the 
processing of operator commands and messages when the APPL statement 
works with the "programmed operator" API. It would appear that VTAM 
development have "missed a trick" here if they do not flag this as an error 
when AUTH=SPO or AUTH=PPO are not also specified.

>From the description of the APPL statement USSTAB operand:

<quote>

USSTAB applies only to a program operator application program (AUTH=PPO or 
AUTH=SPO). It is ignored if you code it for an application program that is not 
a program operator.

</quote>

> AUTH=NVPACE

Since the APPL statement defined for use by the "TN3270E" server will 
*always* be the secondary LU in SNA sessions, the AUTH=VPACE|NVPACE 
suboperand is irrelevant.

>From the description of the APPL statement AUTH operand VPACE|NVPACE 
suboperand:

<quote>

Determines whether this application program is subject to the VPACING 
specifications of SLUs with which the program is in session. Coding NVPACE is 
the same as coding VPACING=0 in the LU definition statements for all of
the SLUs with which the application program is in session.

</quote>

Just to be clear, if the session partners are SLUs (secondary LUs), then the 
APPL statement covered by the suboperand must be the *primary* LU and, in 
the case of your APPL statements, they are not primary LUs.

Otherwise EAS=1 is good since it conserves storage. PARSESS=NO is default 
so is not really necessary.

In the past I have recommended SESSLIM=YES but there's a new function, 
SHAREACB, in V1R12 which I suspect might require SESSLIM=NO, the default, 
if the new function is used.

Thus your GROUP statement for the APPL statements reduces to having just 
EAS=1 as an operand. In the past I may have added SESSLIM=YES but, in 
order to prepare for the V1R12 enhancement, maybe you had better leave it 
to default to SESSLIM=NO - or - better still - if you should implement the 
SHAREACB function when you start to use V1R12, just to show you are on top 
of the specifications upon which you rely, you should then actually specify 
SESSLIM=NO.

In checking previous releases of the Communications Server IP product, I 
found that the proposed APPL statement (in "TCP/IP for MVS" V3R2) was as 
follows:[1]

TCPIMS33 APPL   
AUTH=NVPACE,EAS=1,PARSESS=NO,MODETAB=ISTINCLM,SESSLIM=YES

I don't have a system to hand in which I can find the IVPLU member of 
SEZAINST which, in effect, has replaced actually providing a recommended 
APPL statement in the "configuration" manuals. However I happen to have 
what I believe is a copy of the data set members from a few years ago. The 
IVPLU member is the following - removing unnecessary comments which 
contain the date 1999:

<member>

* APPL Major node for TN3270(E) server LUs.
*
* This node defines a model application name of TCPABC*
* This node covers TCPABC00 to TCPABC99 as defined in
* the TCPIP PROFILE stmt. DEFAULTLUS TCPABC00..TCPABC99
*
TCPABC   VBUILD TYPE=APPL
*
TCPABC*  APPL 
AUTH=NVPACE,EAS=1,PARSESS=NO,MODETAB=ISTINCLM,SESSLIM=YES
              MODSRCH=FIRST

</member>

If this represents what the CS IP developers consider a valid example, then 
they need to go back to VTAM school!

As explained above, EAS=1 and SESSLIM=YES (with a question mark over 
V1R12) are sensible.

MODETAB=ISTINCLM is really pointless and PARSESS=NO is not really worth 
specifying since the "TN3270E" server logic will never try to create parallel 
sessions.

AUTH=NVPACE is arrant nonsense!

MODSRCH=FIRST is interesting. MODSRCH=NEVER is the default and this 
implies that model APPL statements will not be used when the application uses 
the INQUIRE APPSTAT/STATUS call over the VTAM API. However you don't 
specify MODSRCH=FIRST and you seem to be able to set up session quite 
happily with your model APPL statements. The conclusion is that whoever put 
that IVPLU member together got a hint possibly from reading about the TSO 
use of model APPL statements or seeing sample model APPL statements for 
TSO use where MODSRCH=FIRST is required and - sort-of to be on the safe 
side - decided that maybe MODSRCH=FIRST was a general requirement for the 
serious use of model APPL statements and so added/left MODSRCH=FIRST 
to/in his or her sample model APPL statement without really having the first 
clue what he or she was doing!

What these samples demonstrate is that you have been given rotten advice 
over how a TN3270 server VTAM APPL statement should be specified from the 
highest - if quite uninformed - source, namely the product "configuration" 
manuals. This illustrates that even now that the two former products have 
been "merged" as the Communications Server product, no effort has been 
made to improve the standard of the advice concerning the "sister" product. 
Thus, as always, any advice in product manuals about any other product is 
never to be trusted, a maxim I have found to be true time and time again 
even within IBM.

But - the fact that this example has only one asterisk shows us that your 
APPL statements - I guess - work but may not be precisely what you had in 
mind when you coded them.

Here's the relevant text from the description of the "name" of an APPL 
statement in the CS SNA Resource Definition Reference manual:

<quote>

name must follow the rules for naming application programs as described in the 
z/OS Communications Server: SNA Network Implementation Guide and can 
include the following wildcard characters:

Asterisk (*)

Represents 0 or more unspecified characters. An asterisk can be used as the 
second to eighth character.

Question mark (?)

Represents a single unspecified character. A question mark can be used as the 
first to eighth character.

</quote>

In 

> TELNI*** APPL
> TELNE*** APPL

you have three asterisks whereas one is sufficient. If you really wanted the 
match to be on say "TELNE" with precisely three additional characters, you 
should specify three question marks:

TELNE???

-

Turning now to what appears to be that part of your PROFILE data set 
covering essentially interface and routing definitions, the following points 
can 
be made:

> ARPAGE 20

>From the CS IP Configuration Reference manual:

<quote>

ARPAGE statement

... The ARPAGE statement only applies to LAN channel station (LCS) devices.

</quote>

Based on the HOME statement, you appear to have provided all the interface 
definitions and none of them are for "LCS devices" such as a 3172 or an OSA 
configured to appear to be a 3172. Thus ARPAGE is irrelevant.

> IPCONFIG ... SOURCEVIPA

SOURCEVIPA as a parameter of the IPCONFIG statement is - almost - an 
obsolete parameter. In case you haven't worked through this matter before, 
you should look through the following section in the CS IP Configuration Guide 
to be sure you are using the most suitable technique for controlling the source 
IP address in the IP packets that this IP node is sending:

Chapter 5. TCP/IP Customization
- Configuring PROFILE.TCPIP
-- Setting up TCP/IP operating characteristics in PROFILE.TCPIP
--- Source IP address selection

You will see that the IPCONFIG statement SOURCEVIPA technique is the 
seventh out of eight ways to set a source IP address and is just about the 
messiest - although tidier if you switch to using INTERFACE statements for 
your OSA interface definitions.

> DEVICE  OSA0402  MPCIPA   NONROUTER AUTORESTART
> LINK OSA0402LNK  IPAQGNET OSA0402   VLANID 25

I recommend you explore using the VMAC parameter. The mechanism 
associated with the VMAC parameter ensures that the OSA feature port 
behaves in a manner considerably superior to that of the original OSA QDIO 
design. So much so that it is really how it should have been designed in the 
first place and the original technique should be forgotten as a bad dream.

If you do decide to upgrade to using the QDIO OSA in, as it were, "VMAC 
mode", you will note that you will need to use the ROUTELCL parameter to 
replace the NONROUTER parameter.[2] I can't be sure but I would expect 
there will be a tendency to restrict future enhancements to OSA QDIO only 
to "VMAC mode" - and, incidentally, the point about future enhancements 
applies also to defining OSA QDIO using an INTERFACE statement rather than 
the DEVICE/LINK/HOME entry/BSDROUTINGPARMS entry statement 
combination.

Having raised that point, I'd better help by showing how your existing 
statements look when converted to INTERFACE statements:

<quote>

INTERFACE — IPAQENET OSA-Express QDIO interfaces statement

Use the INTERFACE statement to specify an OSA-Express QDIO Ethernet 
interface for IPv4.

</quote>

INTERFACE OSA0402 DEFINE IPAQENET
 PORTNAME OSA0402
 IPADDR 10.254.76.31/8
 SOURCEVIPAINTERFACE VIPA01L
 VLANID 25
 VMAC ROUTELCL

Notes:

a. I have chosen the name of the DEVICE statement for the INTERFACE 
statement in order to be compatible with the name used in the existing START 
statement.

b. The SOURCEVIPAINTERFACE is needed since this definition doesn't depend 
on the HOME statement list for the purposes of selecting the source IP 
address of a VIPA definition. If you decide on another way to specify the 
source IP address, this may not be needed.

c. There are later comments on the subnet mask. This really should be 
something much more sensible than /8 such as /26 in order to handle your 
already chosen addresses but, with different addresses, it could be 
as "narrow" as /28.

d. The mechanism associated with the AUTORESTART parameter of the 
DEVICE statement is assumed always to apply to an interface defined with an 
INTERFACE statement.[3]

e. MTU is a rather large topic and the MTU parameter could be specified with 
a value but the assumed default value is almost certainly acceptable as input 
to the logic which selects the MTU. See "Maximum transmission unit 
considerations" in Chapter 2, "IP configuration overview" in the CS IP 
Configuration Guide manual - and ask yourself whether or not 
PATHMTUDISCOVERY might be a handy function to enable in your IP network - 
given the imprimatur that it is standard with IPv6.

> TRANSLATE

I can't see what this statement - with or without any parameters - is doing in 
your definitions.

> BEGINROUTES
>  route 10.00.00.00/08 10.254.76.01  OSA0402LNK MTU 1492
>  route 10.00.00.00/08 10.254.76.01  OSA0602LNK MTU 1492
>  ...
> ENDROUTES

Rather oddly, you have chosen to assign an address range of in excess of 16 
million IP addresses from your intranet solely to the LAN - a VLAN (virtual 
LAN) 
superimposed on the real LAN to boot! - to which your OSA feature ports and 
at least the adjacent router connect. It is much more normal to assign a 
subnet mask which reflects the likely maximum number of interfaces which will 
ever connect to the (V)LAN. Thus, if the address range needs to allow for a 
maximum of 14 interfaces, your subnet mask would be /28, if 30, /27, if 
62, /26 and so on.

Unfortunately, you need to make this design choice *before* assigning actual 
addresses to interfaces. The addresses you have chosen will all fit into an 
address range for your VLAN only if the address range is defined by a subnet 
mask of /26 - or a more wastefully "generous" subnet mask.

I appreciate that when using RFC 1918 addresses within an int*ra*net, you 
can generally afford to be wasteful with no bad effects. However, a tidy 
approach is always to be preferred IMNSHO and assigning in excess of 16 
million to a VLAN which is likely to have just 10 or 20 or 30 interfaces 
attached to it is quite the opposite of a tidy approach. I hope the subnet 
mask did not get set at 8 because it was thought that subnet mask value was 
necessarily associated with an IP address with "10" as the first octet value. 
That "0" in front of the "8" is very suspicious!

Since you are not using dynamic routing, it may be that you are relying on 
the "gratuitous ARP" support in the OSA feature logic when configured as 
QDIO in order that your adjacent router on the VLAN can find your VIPA. In 
order to be sure that this is happening you should use the NETSTAT DEVLINKS 
command and expect to see something like the following:

EZZ2826I IPv4 LAN Group Summary
EZZ2827I LanGroup: 00001
EZZ2828I LnkName             LnkStatus     ArpOwner            VipaOwner
EZZ2829I -------             ---------     --------            ---------
EZZ2771I OSA0402LNK          Active        OSA0402LNK          Yes
EZZ2771I OSA0602LNK          Active        OSA0602LNK          No

If, say, OSA0402LNK became inactive, then you should see something like the 
following:

EZZ2826I IPv4 LAN Group Summary
EZZ2827I LanGroup: 00001
EZZ2828I LnkName             LnkStatus     ArpOwner            VipaOwner
EZZ2829I -------             ---------     --------            ---------
EZZ2771I OSA0402LNK          Not Active    OSA0602LNK          No
EZZ2771I OSA0602LNK          Active        OSA0602LNK          Yes

There is a Technote which supposedly covers this topic but it needs to have 
a "health warning" that it is as likely to confuse as elucidate. It would have 
helped enormously if the author had fully understood what he or she was 
writing about!

"Interface takeover function and gratuitous ARP"

http://www-01.ibm.com/support/docview.wss?uid=swg21243821

Actually I had hoped that there was some way that the system would be able 
to tell you that a particular VIPA had been included in a so-called "LAN Group" 
but having written up this topic here and checked the CS IP System 
Administrator’s Commands manual I can't see that you can check this point 
with any of the supplied commands. You will need to display the ARP cache in 
the adjacent router on the VLAN, the router with interface IP address 
10.254.76.01 I assume, in order to be sure that it includes an entry for the 
VIPA.

It was only on review that I noticed that your set of ROUTE statements 
doesn't follow the normal, well-understood pattern.

The "usual pattern" is to specify a "direct" route, the characteristic of which 
is 
to have an "=" sign in the "first hop" position. This "direct" route defines 
the 
interface over which IP packets which need to be sent to an "adjacent" router 
can be sent, an "adjacent" router being one which has an interface which 
connects to the same (V)LAN as the specified interface.

If the configuration is the most straightforward, the only "indirect" route 
which 
need be specified is the "default" route. This "default" route specifies a, 
probably, the "adjacent" router in the "first hop" position and the prior 
"direct" 
route is supposed to be necessary in order that the route to the "first hop" is 
defined.

In principle the "direct" route could be assumed since all the information 
needed is available - but I didn't think it worked like that!

Half-way through writing this I imagined there may be a level of confusion 
reigning in these definitions which was combining a dynamic routing protocol 
*and* static routing statements. This, if I took the time to try to disentangle 
it, might explain why you are getting away with not following the "usual 
pattern" for purely static routes.

However, I checked the CS IP Configuration Guide and Reference manuals in 
order to see if there was actual text - rather than just examples - to support 
the "usual pattern" and I couldn't find any - so maybe I learned something 
today!

Note I know of old that the "usual pattern" is *required* by routes defined 
using the GATEWAY statement - or used to be. However again, I could not 
find any text which made this point - suspicious!

Doubling up this "usual pattern" for two interfaces is just fine. However 
benefitting from having two equivalent interfaces is not permitted by default.

>From the description of BEGINROUTES in the CS Configuration Reference 
manual:

<quote>

In addition, multiple routes having an identical destination IP address and 
address mask can be specified. When multiple routes are specified, all of them 
are used when multipath is enabled on the IPCONFIG/IPCONFIG6 statement; 
otherwise, only the first active route specified is used.

</quote>

You need to specify the MULTIPATH parameter of the IPCONFIG statement. 
You then further need to decide for TCP connections whether to specify 
PERCONNECTION or PERPACKET. I incline to PERPACKET myself but there are 
some gurus who are probably watching who favour PERCONNECTION for 
reasons I forget!

Note that IPCONFIG MULTIPATH PERsomething applies only to outbound 
traffic. If you want to get a similar benefit for inbound traffic, you need to 
set 
up suitable definitions within the IP network, possible only in that all-
important "adjacent" router.

-

Now to something of a surprise: you included the TN3270E procedure!

> When you talk about TN3270 and TN3270E you mention that there's a 
comma missing in front of the mode table which makes it a TN3270 without 
the E. As I'm not sure of what I'm using, let me paste the TN3270E STC job:

I don't know why the TN3270E procedure could have anything to do with 
whether or not you are using TN3270E protocols.

One possible explanation - with which I can sympathise - is the rather dumb 
idea to decide to call the CS IP original non-UNIX TELNET program 
the "TN3270E" program. I can guess that some idiot "suit" came up with this 
idea as some sort of marketing ploy without having the foresight that it could 
confuse - as indeed in your case it would appear to have caused confusion.

Actually, the internal function supporting TELNET was called just that as far 
back as I can easily check, namely in "TCP/IP for MVS" V2R2.1.

>From TCP/IP for MVS V2R2.1 Planning and Customization, Chapter 10:

<quote>

This chapter describes how to configure the Telnet server. The Telnet server 
is part of TCPIP and acts as an internal client to it. 

</quote>

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, the "suit" influence must have crept in and the non-
UNIX TELNET program became the TN3270 server - quite ignoring the fact 
that "linemode" was still supported.[4]

Although support for TN3270E protocols had been introduced as far back as 
the change from "TCP/IP for MVS" V3R2 to the IP component of OS/390 
Communications Server V2R5 - don't ask! - around 1998, it was only with the 
z/OS V1R9 Communications Server around 2008[5] - 10 years later! - that 
the "suits" decided that the non-UNIX TELNET program should be described as 
the "TN3270E" program thus - probably - causing your confusion!

-

Of course what I really need to see is the full content of the 
OMVS.PROD.TCPIP.PARMLIB(TN32&SYSNAME) data set rather than merely the 
TELNETGLOBALS statement block. Once I see that, I expect to have all the 
definition information necessary to get back to your original problem!

Otherwise what is striking about the procedure are the three data sets, 
presumably partitioned data sets for object modules, with VTAMLIB as one of 
the tokens. You have indicated that you are using an USS table and I guess 
you may well have stored the object module corresponding to that USS table 
in the same partitioned data set in which you store the USS table object 
modules required by VTAM and which you include in the VTAMLIB 
concatenation in your VTAM typically NET, procedure.

All of this implies that you need only one of these "VTAMLIB" partitioned data 
sets in your TN3270E procedure, the one in which you have stored the one or 
two object modules corresponding to the one or two USS tables which you 
name on the USSTCP statement.

I don't expect you are using any "interpret" tables so I cannot see why you 
would *not* need to have any other "VTAMLIB" data sets in your STEPLIB 
concatenation.

Note that none of these "corrections" I am suggesting actually changes how 
the "TN3270E" server program works but whoever tries to solve problems with 
the "TN3270E" server in the future will thank you not to have quite so 
many "red herrings" lying around which will need to take up time checking the 
manuals and working out that they are irrelevant.

-

Since you have introduced the topic of the TN3270E started task procedure - 
and you are probably operating a fairly straightforward TN3270 server 
environment - that is, not one with masses and masses of mapping 
statements as I have seen installations use, you may like to treat 
the "TN3270E" server in the same way as you have traditionally handled all 
your other servers, namely by the use of the AUTOLOG statement list.

IBM developers in their questionable wisdom have however introduced a snag!

They were so focussed on the customers who screamed out for the possibility 
to separate the "TN3270E" server from the main CS IP program that they 
overlooked the simpler folk who suffered twisted arms when they discovered, 
when installing V1R9 or later from a release prior to V1R9, that the TN3270 
function didn't work any more. That is, these more simple customers were, in 
effect, dragged kicking and, in their turn, screaming into having to set up a 
separate procedure for the "TN3270E" server.

The IBM default PPT entry in module IEFSDPPT for the "TN3270E" program, 
EZBTNINI, as described in Table 23, "IBM-supplied Program Properties Table 
(PPT) Values"[6], specifies "Non-cancelable" (NC). If you override this PPT 
table entry with a SCHEDxx PPT entry as follows, you will be able to use the 
traditional AUTOLOG function for the "TN3270E" address space just like I guess 
you have always done for server procedures dependent on the main CS IP 
program address space:

PPT PGMNAME(EZBYNINI) CANCEL Key(6) NOSWAP PRIV SYST

If you ever want to run the TN3270E started task procedure with multiple job 
steps, you can also just omit the SYST attribute - or specify NOSYST - and 
place TIME=1440 on the EZBTNINI step.

-

I can perhaps take this opportunity to have a look at the statements other 
than the TELNETDEVICE statements in the TELNETGLOBALS statement block 
you posted.

> CodePage ISO8859-1 IBM-1047

The CODEPAGE statement applies only to "linemode" sessions/connections.

>From the CS IP Configuration Reference manual:

<quote>

CODEPAGE statement

Use the CODEPAGE parameter statement to specify ASCII-EBCDIC translation 
tables for linemode connections.

</quote>

In any case what you have specified appears to be the default for 
EBCDIC/ASCII translation.

> Inactive 1800

This specifies an interval of 1/2 hour for no activity on the SNA 
session/TN3270 TCP connection. Also, because a timer of exactly 1 800 
seconds is used according to the rule that the smallest - if not 0 - of the 
timers specified or defaulted for the KEEPINACTIVE, INACTIVE, 
PROFILEINACTIVE and PRTINACTIVE is used to monitor these events and two 
are 0 while the only other with a non-zero value is also 1 800.

However this is, I believe, what you expect as a the timeout and not just the 
few minutes you are reporting.

>...> The problem is that a user is timed out after a 2-3 minutes and it takes 
the user all the way back to the USSTAB.

I believe I may have misunderstood the "all the way back to the USSTAB". If 
there really is a disconnection of the TN3270 TCP connection but the TN3270 
client logic immediately re-establishes the session - and you do not have a 
DEFAULTAPPL/DEFAPPL applying to the TN3270 connection, that will look to 
the end-user as "all the way back to the USSTAB" although it will really be 
"all 
the way back" to no connection with an automatic reconnection.

I based a lot of my earlier guesswork on what your "TN3270E" server 
customization was on the assumption that there was no disconnection so all 
that effort may well have been wasted!

>...> In CICS I have coded USRDELAY=30 ...

I assume that this CICS parameter is the equivalent to the 1/2 hour "no 
traffic" check in the "TN3270E" server. I guess it will be interesting to see 
which of these session termination mechanisms wins. It's probably advisable in 
terms of consistent behaviour to rely on just one of these mechanisms and I 
suspect it might be cleverer to rely on the CICS mechanism and set INACTIVE 
3600 or something like that in order that the "TN3270E" server mechanism 
acts as a sort-of "backup".

> TimeMark 1800
> ScanInterval 120

What these specifications do is check for whether a connection exists or not. 
They are like the INACTIVE parameter in that the associated mechanism is 
triggered by a lack of activity but the mechanism does not cause 
disconnection but rather checks whether a disconnection of the TN3270 TCP 
connection has already happened.[7]  This can then have implications for the 
now orphaned SNA session which had hitherto been concatenated to the 
TN3270 TCP connection.

In the case of the specified values, TN3270 TCP connections are checked for 
activity every 2 minutes (120 seconds) and, if there has been no visible 
traffic 
for a total of 15 consecutive checks (15 x 120 = 1 800), the "timemark" 
mechanism is invoked in order to see whether or not the TN3270 TCP 
connection still works. If it does not work some element of the IP network 
path is deemed to be taking an unplanned rest and, after another 2 minutes 
when the check is made, the TN3270 TCP connection is "cleaned up".

>...> ... and in the TCP/IP profile parm we coded interval 120 on the 
TCPCONFIG card.

The INTERVAL parameter on the TCPCONFIG statement behaves somewhat 
like the TIMEMARK statement. However it concerns itself with all TCP 
connections not just - obviously - TN3270 TCP connections. Yet again 
however, we have two mechanisms performing the same job and it might be 
advisable for consistent behaviour to rely just on one and use the other for 
some sort of "backup".

Having written that I actually dipped into the manual in order to be sure about 
what I was saying. I was then reminded that, since the "TN3270E" server 
provides for its own "keepalive" facility, it probably has no interest 
whatsoever 
at all in the mechanism provided by the TCP logic and I would expect just 
does not enable the TCP-based "keepalive" mechanism. In order for an 
application using TCP to get the benefit of the TCP "keepalive" mechanism, it 
is necessary either that the application issues the SO_KEEPALIVE call and it 
will then use the checking interval value specified by the INTERVAL parameter 
or that the application issues the TCP_KEEPALIVE call and it will then use the 
checking interval value specified by the TCP_KEEPALIVE call itself.

-

I appreciate that none of this helps with your problem but - with the 
full "TN3270" PROFILE data set to hand - and some clarity concerning the 
behaviour of the TN3270 clients following disconnection - we will have all the 
facts I can think of for the moment.

Also once I see what I expect is the DEFAULTLUS/ENDDEFAULTLUS block, I 
expect I will have a better idea of what those events are that you reported in 
an earlier post which I can now see are probably an identification of the SNA 
sessions associated with the TN3270 TCP connections.

Before sending, I took another look at those apparently diagnostic messages 
provided I expect by some sort of "user" exit in your CICS system. 
Unfortunately I can see they say something but I'm unsure precisely what it 
is. For example, "signons" are not matched with "signoffs" so I'm not clear 
what the "signon" and "signoffs" mean.

There may be some log provided by the TN3270E procedure which describes 
what events the "TN3270E" server program "sees".

-

Chris Mason

[1] There was also the following explanation regarding the SESSLIM operand:

<quote>

Because the TCP/IP LU code cannot handle multiple concurrent sessions, you 
must code SESSLIM=YES for each TELNET LU defined to VTAM. Otherwise, if 
SESSLIM=NO, menu or session manager applications that use 'return session' 
processing might cause session termination. 

</quote>

An effectively identical statement can be found inn the latest, V1R12, CS 
Configuration Guide. It's actually an open issue quite how the SHAREACB 
function introduced in V1R12 could work if SESSLIM=YES is specified. I'll need 
to look into this. It may be that the logic of session managers - I suspect 
when working in "pass", as opposed to the more usual "relay", mode - may 
need to be adjusted in order to take account of the SHAREACB function.

[2] Just to cover a question that may come to mind, the PRIROUTER and 
SECROUTER parameters are replaced by the VMAC ROUTEALL parameter. The 
fact that no "pri"/"sec" distinction need be made is a tribute to the 
superiority 
of the mechanism associated with the VMAC parameter.

[3] Where in the manuals does it actually say this? Nowhere! Then how do I 
know. Well ...:

1. There is no AUTORESTART parameter on any INTERFACE statement type 
which are, with the single but very important exception of the OSA QDIO IPv4 
INTERFACE statement, for IPv6.

2. In the description of the DEVRETRYDURATION parameter of the IPCONFIG 
statement we find the following:

<quote>

For IPv6 interfaces, the autorestart function is always active.

</quote>

Could it be that the poor overworked lambs of authors just missed making the 
addition "and the IPv4 OSA QDIO interface" when that INTERFACE statement 
was introduced?

[4] I jumped on someone in one of the lists for calling the "TELNET server" 
the "TN3270 server" and it was gently and quietly suggested I actually take a 
look in the manual before making any point based purely on logic!

[5] z/OS V1R9 was the first release to drop support for what we must 
subsequently train ourselves to call the "TN3270E server" as an "internal 
client".

[6] http://publibz.boulder.ibm.com/cgi-
bin/bookmgr_OS390/BOOKS/IEA2E2B0/75.7

It looks like the CS IP developers' hearts were not really in this ludicrous 
name 
change which the "suits" insisted upon and so they forgot to pass on to the 
z/OS developers that the name should be changed in this table from "TN3270" 
to "TN3270E"!

[7] The text explaining the operation of the TIMEMARK parameter mentions 
that the TN3270 TCP "connection" is disconnected, actually "dropped", when 
there is no response to sending the "timemark". This "disconnection" is 
actually 
just "cleaning up" the TN3270 server side of the TN3270 TCP connection and 
is not a usual "disconnection" since there is evidently no communication with 
the TN3270 client side of the previous real connection.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to