David

What a relief to find a query where the outcome of the effort expended is 
likely to be beneficial rather than having to deal with the depredations of 
luddites!

-

Just so nobody else need bother to look it up, 08570003 means that the 
secondary LU is not active, that is, there is no SSCP(VTAM) to LU session in 
place which there would be if the LU had been activated by the SSCP.

> Can someone explain what is going on ?

I don't expect anyone would be able to deal with this problem without at least 
some guidance on the structure of the program which imagines it is sending 
the data to the "logical printer". I assume that the "logical printer" is 
defined 
to use LU type 1 with the SNA character set (SCS) character string but 
without function management headers as is used with printers from the 3270 
family - or - LU type 3, implicitly with the 3270 data, as is also used with 
printers from the 3270 family.

Actually it strikes me that the program driving the "logical printer" is 
behaving 
rather well in that it was aware that the "buffers" it had already "tried" to 
print 
had not in fact been printed and so resent them when the session setup was 
successful.

It may be that your background is the unreliable connectionless world of IP - 
which some I have been dealing with lately inexplicably imagine is so far 
superior to SNA that one is labelled a disgrace to try to imagine otherwise, a 
sort of Taliban approach - sorry about that, it just came out! In that case it 
may be a surprise for you that an SNA-based application will tend not tolerate 
loss of data.

Anyhow we obviously need more information about your overall environment, 
including perhaps the identity of the application which is driving the "logical 
printer".

-

Meantime, when definitions are posted, I try to take the opportunity to make 
any comments on what is specified which might be helpful.

Unravelling your APPL statement for the purposes of commenting:

NOMPRT01 APPL  AUTH=NVPACE,
               EAS=1,
               PARSESS=NO,
               MODETAB=ISTINCLM,
               DLOGMOD=DSC2K,
               SESSLIM=YES,
               USSTAB=ISTINCDT

Since this APPL statement does not represent a "programmed operator", the 
following operand is superfluous:

USSTAB[1]

Since this APPL statement represents a secondary application, the following 
suboperand is superfluous:

AUTH=NVPACE[2]

Since the name of the mode table specified is the supplied mode table, the 
following specification is superfluous:

MODETAB=ISTINCLM[3]

Since it is a "negative" specification where the "positive" implies additional 
support and the "negative" specification is, as expected, the default, I tend 
not to bother with specifications such as the following although it is not 
strictly superfluous:

PARSESS=NO[4]

If your program is designed in such a way that you need one instance of your 
program for each "logical printer" which I guess is very likely, the following 
specification is not actually required but is very sensible in that a small 
amount of storage is saved:

EAS=1

Also the following specification is very probably useful should your operations 
or definitions get confused and another application driving a "logical printer" 
tries to set up a session with the secondary LU supporting a "logical printer" 
while it is already in session:

SESSLIM=YES

Finally, I see - and I should have checked this before offering the alternative 
of either LU type 1 or LU type 3 - that you, in effect, specify that the 
secondary LU is going to suggest that the BIND image should be the following:

*
* PRINTER WITH 2K BUFFER
*
123456789012345678901234567890123456789012345678901234567890123456
789012
........ ..... ...
DSC2K    MODEENT 
LOGMODE=DSC2K,FMPROF=X'03',TSPROF=X'03',PRIPROT=X'B1',*
               SECPROT=X'90',COMPROT=X'3080',RUSIZES=X'8787',          *
               PSERVIC=X'030000000000185018507F00',                    *
               APPNCOS=#CONNECT

This is a BIND image with is suggesting the use of an LU type 3 session as 
indicated by the first byte of the "presentation services" field.

I can now reflect that it is just as well I am sniffing around inside your 
definitions because I see the possibility for misunderstanding.

Note that the use of the word "buffer" in the comments relating to this mode 
table entry has no direct connection with any buffers which may or may not 
be used within the application program driving the "logical printer" nor within 
the application program representing the "logical printer" - nor with the 
implementation of a *physical* printer - although that would correspond to 
the microcode within the physical printer.

What the "buffer" size mentioned in the comments does address is the buffers 
provided in the earliest 3270 printers such as the 3284 and 3286 - I wonder 
how long the "folk memory" will continue to be available in this list!

What is important for you is that, assuming the program driving the "logical 
printer" respects completely the BIND image offered at the time the session is 
established and does not just ignore all or part of it, your program will need 
to 
deal with an outbound request unit size of 1024, which corresponds to the 
second byte of the RUSIZES operand, the "maximum RU size sent on the 
normal flow by the primary half-session".

If you insist on the 1024 size, you can check in your program when the BIND 
arrives that the specification in byte 11 (0 origin) is still X'87' and reject 
the 
session setup if it is not.

Note that an application program such as CICS as the primary LU may be 
configured to ignore the specifications in the BIND image offered during 
session setup and specify some values hard-coded during customization.

I was going on to refer to another limit specified in the "presentation 
services" 
field which is the set of  logical "display" device dimensions, 24 rows by 80 
columns, which maps to 1 920 bytes of data but the data stream used to 
transport these characters could contain formatting, such as "set buffer 
address" sequences, which would extend the size of the request unit data 
conveying the up to 1 920 bytes of data.

It's actually this limit, the set of logical "display" device dimensions, to 
which 
the 2K, 2 x 1024 = 2048, mentioned in the comments - and contained within 
the name of the mode table entry - refers.

In case you are thinking this is all a bit weird - and you are entitled to! - 
you 
need to know whence LU type 3 - and LU type 2, the "type" which relates to 
3270 "display" devices - originated. Before SNA the 3270 family appeared as 
both displays and printers and the same logic was used for both "display" 
devices and "printer" devices for the purposes of building an image of what 
was to be displayed or printed within the "hardware" buffer before the image 
made its way to the technology of the device itself, pixel-generation for 
displays (in general - I expect there were alternatives used by OEM devices at 
least), and probably some sort of golfball printing mechanism in a sort of 
typewriter without a keyboard for printers. I'm trying feebly to remember here 
but I hope you get the "picture".

Getting back to your APPL statement, probably all you really need is the 
following

NOMPRT01 APPL  
EAS=1,DLOGMOD=DSC2K,SESSLIM=YES,PACING=0,VPACING=0

You'll note I have added the PACING operands with value 0. The mode table 
entry has not specified the "pacing" operands, so the value of these 
parameters in the corresponding BIND image will be 0. The specification of 
pacing can be a bit complicated but one rule is easy: if you are using LU type 
3 - and LU type 2 with its intended mode of use - you will not need any 
pacing since the requirement for definite responses means that pacing has no 
benefits and is superfluous.

However the default value for both the PACING and VPACING operands is 
*not* 0 and so you need to specify 0 in order to guarantee not to have 
useless pacing overhead.

If you decide - and well you might - that using LU type 3 is inefficient and 
you 
should really be using LU type 1, don't forget to return to the issue of pacing 
since it will then be needed in order fully to exploit the possibility of 
greater 
efficiency.

I have just remembered - while setting up the footnotes - that you mentioned 
TELNET. It may be that you have modelled your APPL statement on some 
TELNET sample. Well, you will be able to see from the clarifications below that 
the sample was wrong where I said it was wrong. Also now I know why I have 
made much the same observations not so long ago - because they were for 
some TELNET sample!

Oddly enough the TN3270E server in Communications Server for z/OS V1R12 
has introduced an enhanced function which may require SESSLIM=NO - 
although the manual descriptions haven't caught onto that yet - ho hum, par 
for the course!

-

> Can someone explain what is going on ?

Another thought that comes to mind is that, if you really want a handle on 
what is going on, your friend is the "complete PIU" (CPIU) option used in a 
session trace of your session - and any related sessions - using NetView 
Session Monitor (aka NLDM). I do hope your support staff have installed 
NetView and its components. There are so many "holed" feet around from 
failure so to do!

-

Chris Mason


[] All descriptions taken from the Communications Server SNA Resource 
Definition Reference.

[1] USSTAB

...

Specifies a user-defined USS table that contains user-modified VTAM operator 
commands and VTAM operator messages to be used by the program operator.

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.

[2] AUTH=NVPACE (or AUTH=VPACE)

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. NVPACE is ignored 
for same-domain local SNA logical units.

My additional comment: Your application program is the SLU (secondary LU) 
and it is the program driving the "logical printer" which is the PLU (primary 
LU) 
in session with the SLU.

[3] MODETAB=ISTINCLM

... If you do not supply a logon mode table for the application program, on the 
MODETAB operand, an IBM-supplied default logon mode table (ISTINCLM) is 
used. ...

[4] PARSESS=NO

Restricts this application program to one LU-LU session, between itself and 
another logical unit, at a time. VTAM uses netnames rather than CIDs if 
PARSESS=NO.

PARSESS defaults to NO when APPC=NO.

On Mon, 14 Feb 2011 05:22:43 -0600, David Lesser 
<dav...@splsoftware.com> wrote:

>I have written a VTAM application which is similar to Telnet. It's purpose is
>to 'trap' printouts which were sent
>By various VTAM applications to VTAM printers, and save them in a database.
>
>For example, I define the following :
>
>APPLNOM VBUILD TYPE=APPL
>
>*                                                                     *
>NOMPRT01 APPL
>AUTH=NVPACE,EAS=1,PARSESS=NO,MODETAB=ISTINCLM,           +
>               DLOGMOD=DSC2K,SESSLIM=YES,USSTAB=ISTINCDT
>
>When my VTAM application is not active and I try to print, I get the 
following :
>
>IST663I INIT OTHER REQUEST FAILED, SENSE=08570003
>IST664I REAL  OLU=SAGNET.DAEFCO       REAL  DLU=SAGNET.NOMPRT01
>IST889I SID = CF237FFB2870626D
>IST264I REQUIRED RESOURCE NOMPRT01 NOT ACTIVE
>IST314I END
>
>This is correct. The problem is that when I start my VTAM application and
>print to NOMPRT01, I get both buffers !
>It seems that VTAM saves the first buffer somewhere, and when my
>application starts and does a RECEIVE, it gets
>The buffers that were printed (and failed) , and then the next buffer !!!
>
>Can someone explain what is going on ?
>
>Many thanks,
>David

----------------------------------------------------------------------
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