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
<[email protected]> 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 [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html