98  

The ISSUG Infobase contains archived postings from our on-line discussion forums. This index is for most of the 1998 postings. Nothing here may be quoted without the written permission of the author(s) of the original postings.

FAQ98 content: George Simpson

                 

FAQ 98 - Section 3

#SUBJECT: COOL:Gen Server to Server call in MVS/CICS
#BY : jo jo calora

Does anyone know whether a CICS START or a CICS LINK is used in a COOL:Gen Server to Server Call in MVS/CICS via a USE Procedure Step statement? Is there a way to influence the USE Procedure Step statement to force a CICS START instead of a CICS LINK and vice versa? Any info would be greatly appeciated!

RE: COOL:Gen Server to Server call in MVS/CICS
#BY : Glenn

Server to server flows are not supported (in any environemnt including MVS). You will not be able to package a procedure containing a procedure step use as a server. You can obviously hand-code this (a bit tricky but can be done) in which case you can choose whether to use a LINK or a START (or, as I would recommend, a START RETURN IMMEDIATE).

RE: COOL:Gen Server to Server call in MVS/CICS
#BY : jo jo

I am doing it right now via the USE (of a procedure step) statement. I have not encountered any problem packaging the server that uses a USE(procedure step) statement. I do not know if it works via dialog flows. The generated code for the USE(procedure step) statement calls a TI module which I do not have source code to help me figure out if it uses a CICS LINK or a CICS START transaction. We have multiple CICS regions and I want to call a server from one region to another and the only way that would work in our shop is to start the called transaction in the other region using a CICS START. The called transaction must be remotely defined to the CICS region which the calling server resides. I am trying to avoid coding a EAB.Client 1 is in a Windows NT box, Server A & B are in MVS/CICSClient 1 USEs Server A, Server A USEs Server B.

RE: COOL:Gen Server to Server call in MVS/CICS
#BY : jo jo

....was not able to get info needed so ended up coding an EAB to CICS START another COOL:Gen Transaction in a different CICS region...


#SUBJECT: Use server procedurestep MVS/CICS
#BY : Kees van Winden

I try to use a server procedure step from another server procedure step on our target environment MVS/CICS. The first transaction is started successfully, but the second transaction gets an ASRA/0C4 abend. I changed the code a few times. Nothing seems to help.

RE: Use server procedurestep MVS/CICS
#BY : Predrag

As I know, the primary funktion of the USE ProcedureStep is aimedat client/server applications. In that kind of applications it works fine. Still, it should be possible within CICS,a) but there are some restrictions (something like "not within the same load-module" or so)b) something has to be done in CICS (settings or so) to make it possible.That is my knowledge in our shop.

RE: Use server procedurestep MVS/CICS
#BY : JoJo

I have used the USE(procedure step) statement without any problem.The application was a client server application.Client A was on Windows NT. Server A & Server B was on MVS/CICS. Client A USEd Server B and Server B USEd Server C.Cooperative Packaging was used for the client and each of the Servers.How did you package your Servers? If I remember it correctly, OC4 errors are linkage errors.I remember having linkage errors sometimes when the High Performance View Passing is turned on. Have you tried turning off the High Performance View Passingin your server procedures and then re-installing them?


#SUBJECT: Calling CABs from CICS/Cobol
#BY : DAVID MORRIS

Is it possible (without too much grief) and, if so, does anyone have an API that enables a CAB to be called from a (non COOL:Gen / Composer) CICS / Cobol / DB2 program? Can calling the Servermanager to invoke the CAB be avoided? Alternatively, is there a guide to what fields of Globdata need to be populated so the CAB will function correctly. Any help/ideas would be appreciated.

RE: Calling CABs from CICS/Cobol
#BY : Glenn Smyth

I can e-mail you a paper on how to do this I wrote at DEETYA .Yes it is possible (even desireable, and certainly easier) to call action blocks bypassing the server manager.

.Glenn@emeryworld.com


#SUBJECT: passing CICS Pointers
#BY : David Gest

Please can someone tell me how I can pass a CICS Pointer from an EAB (Written in Cobol II) to a Composer CAB (Coolgen 4.1A) and thenpass the pointer to another EAB witout losing the Pointer address.

MATIF France

RE: passing CICS Pointers
#BY : Glenn Smyth

1) If you mean the pointers to the CICS control blocks then IEF-RUNTIME-PARM1 and IEFRUNTIME-PARM2 will contain pointers to DFHEIBLK and DFHCOMMAREA already (populated by the dialog manager and passed around).

2) If you need pass another pointer then you have two choices :

a) If you have Composer 4 or later you can pass it in any 9 digit numeric field with the COBOL data type set to COMP in the TD properties (you will need to redefine it as POINTER in the receiving EAB to do a SET ADDRESS). b) Without Composer 4 (or later) your only option is to use (abuse) a field in GLOBDATA. Set PSMGR-EABPCB-ADR(1) to be the address you want and it will be passed through to your receiving EAB. Assuming you don't use IMSDB from the EABs then this won't cause you any problem. You could also use PSTEP-FAIL-MSG-PTR (assuming you are running Compsoer 3 or later and can set HPVM on for EABs). If you feel nervous about playing with these fields save the before value in the first EAB and restore it afterwards.

RE: passing CICS Pointers
#BY : Pier

assuming that with "pointer address" you mean the content of a pointer field, I would suggest you try:

- pass a CHAR(4) field to thr first EAB

- redefine the field in the EAB to be a PIC s9(8) COMP or a POINTER

- initialize it

- set it with your pointer value

- send it back to the calling CAB

- pass it to the second EAB, where you'll still need to redefine it to be either a PIC s9(8) COMP or a POINTER


#SUBJECT: CICS Password expiration/change
#BY : Theresa Ellis

We are deploying with Windows NT client and MVS/CICS/DB2 server and would like to handle signon errors, invalid password, expired password, etc. From what I've beenable to find from Electronic books, CICS manuals, and such I THINK that what we need to do is write an APPC requestor to interface with the CICS PEM (Password Expiration Managment) Server. I've found the CIDEXIT program for the client manager and am guessing that this is where the code would go. Has anyone ever had any experience with this or have any other (better or correct) ways of handling CICS signon/password errors from the Client side? I can't imagine that this hasn't already been done somewhere else.

RE: CICS Password expiration/change
#BY : Preben_Nilsson

I have seen the same problem in another danish company. They had to build a WWW system with arranger and have people sign on, passing the userid/password to CICS. They solved it by having a general userid/password combination for thelogon screen/server. The server was then responsible for doing an EXEC CICS VERIFY PASSWORD and return the result to the WWW application. The WWW application could then safely pass the validated userid/password combination to all the business transactions/servers, which where secured in the standard way.

RE: CICS Password expiration/change
#BY : SHIRIEF_NOSSEIR

There is a white paper published by Sterling Software titled "APPC Password Expiration Management for Composer 4 or COOL:Gen." The author is Teresa Bredenkamp. It seems like it would help you with all your needs (see below). I have an electronic copy of the document. The solution covers the following requirements:

1. The user must be able to change the password when required.

2. The user must be notified when the failure of a Client/Server application is due to incorrectly supplied userid and/or password.

3. The user would be able to find out when the password will expire (number of days left until password expires).


#SUBJECT: Changing Passwords NT / CICS
#BY : jim c

Our distributed process Cool:Gen application has NT clients, CICS servers, and uses the client manager and comm bridge. We would like to enable the client user to change the mainframe password from the application, withoutleaving the application and signing onto TSO or a CICS region. Has anyonedone this; where can I found out more about doing this?

RE: Changing Passwords NT / CICS
#BY : Gsmyth Smyth

There maybe another way of doing it but the way I have done it is by using an EAB called by the CICS server transaction (I assume you are referring to changing the users own password). In the implementation I was involved withACF2 was the security system and an API was developed for us to call so I can'thelp you out with the actual coding of the ACF2 bit (and the Composer bit is trivial).


#SUBJECT: Security on CICS with Cool:Gen
#BY : David Gest

We implement an Cool:Gen application for NT-SNA Server- CICS -DB2.

I try to get the Userid on CICS for security checking purposes but this userid is still set to the local value (the name of the CICS server).

I changed the WRSCTOKEN section of the user exit WREXITN.c in order to set up the SecurityUSed. After i saw on the log file of client manager that the userid was passed within the common buffer. I have few questions about it. Do i need to set up the "bClnMgrSecurity" option to true ? Do i need to set up the tokenlen option to an other value than zero ?

I try to understand if there is something else to implement on the server part to get the userid passed by the client manager. Is there someone could help me to understand what i need ?

RE: Security on CICS with Cool:Gen
#BY : karl erik bergaust

Have you deployed the wre410n.dll file to the CommsBridge and the Client Manager?

RE: Security on CICS with Cool:Gen
#BY : murat_gungor

All you have to do is to set the bClntMgrSecurity to TRUE and return SecurityUsed in WRSECTOKEN exit. But the userid value is in ClientUserid attribute, not in USERID !


#SUBJECT: Obtaining IMS messages through block mode
#BY : glenn .c.achtemeier

How does one go about accepting an IMS message in a non-display block mode procedure? I've written an external to do the call to IMS in order to get the message which worksin batch but it doesn't find a valid message online. It appears the dialog manager has already gotten my message but doesn't pass it to the procedure. Has anyone encountered this?

RE: Obtaining IMS messages through block mode
#BY : Darius Panahy

The dialog manager calls an TI runtime module to issue the GU and GN calls thus removing the message from the message queue, so your external will not work as you expect. If you want to start a COOL:Gen generated application from an IMS message, you will have to structure the message to use standard COOL:Gen message formats, ie, use clear screen input parameters.

RE: Obtaining IMS messages through block mode
#BY : glenn.c.achtemeier

Thanks for the quick response, Darius.

Using the clear screen inputs was my first idea too...but the tool doesn't allow them with non-display procedures. Thats why I went the external route. I need to find a way to get at the GU info that was read by the dialog manager.

RE: Obtaining IMS messages through block mode
#BY : Darius Panahy

There are a few things you could try:

1) Try and use clear screen input passing just COMMAND. This will have a limit on the number of characters. See the BB archive several postings last year on this subject

2) Create a screened procedure to enable the use of clear screen input and then don't ever display the screen, for example execute first and then flow to a non screened procedure at the end so that the screen is not displayed.

RE: Obtaining IMS messages through block mode
#BY : Anders Romell

Just a comment on Darius' last message; We have used alternative 2 and it works just fine. Two procedure steps in one procedure. The first one screened and the second one non-screened. Don't forget to define the transactions an non-response in IMS by the way...

Apart from tuning (which is always the issue), the databases/applications worked well.


#SUBJECT: screenlist client/server windows
#BY : Greg Nesheim

We are trying to build a "screenless" server. For testing we created a client/server transaction which we use to test the server. We plan to have this same server called to by some middleware software. Does anyone have a suggestion on how a person can package a server both as client/server and "screenless" transaction? And are there any gotcha's? all done in MVS...

I thought this was an option we learned in IEF class.... Thanks

RE: screenlist client/server windows
#BY : Glenn Smyth

I just tested this on the 4.11 toolset and had it allowed me to package a screenless procedure step simultaneously in a server manager and an online dialog manager. Is the issue that this is lost on check-in or how to do this on the CE (I can't get to MVS right now to test it)? If not then you should be able to add it to two different load modules, one using online packaging and one using coop packaging.