Mainframe Natural to Web Service - NAT6971 RC=1

Add Broker Attributes class definition now for TECXML1, broker id is ETBTEC. Now I start a Java RPC server, and it shows up in Control Center so all is fine there.

The, I start my Natural session with:
RPC=(RPCSIZE=32,MAXBUFF=28,AUTORPC=ON,COMPR=2,
DFS=(TECXML1,ETBTEC,L))’

Here’s my program:
DEFINE DATA LOCAL USING RPCINFOL
LOCAL
1 BORR-SSN-I (A9)
1 NAME (A30)
END-DEFINE


CALLNAT ‘TECXML1’
BORR-SSN-I
NAME
*
WRITE
‘=’ BORR-SSN-I
‘=’ NAME
*
ON ERROR
CALLNAT ‘RPCINFO’ SERVER-PARMS CLIENT-PARMS
DISPLAY C-NODE C-NAME C-ERROR-TEXT (AL=55)
END-ERROR
.

I Get NAT6971 Connection error on Client, reason 1 .

C-NODE C-NAME C-ERROR-TEXT


ETBTEC TECXML1 ETB is not available

RPCERR shows me
RPCERROR More: >
NATURAL error number: NAT6971
NATURAL error text :
Connection error on Client, reason 1 ,TECXML1 /ETBT

RPC error information:
ETB is not available

Server Node: ETBTEC Library: SADFAP
Server Name: TECXML1 Program: ESIGN
Line No: 0070

What is missing, any help/clues…thanks?

-Don

Dear Don,

the Broker stub is missing on the Natural RPC client side.
Please

  • link NATETB23 to your Natural nucleus
    or
  • start your Natural with RCA=BROKER and add the EXX loadlib to your STEPLIB chain

Wolfgang

Great, that worked.

Now I’m getting an RC=9, and the message says:

00080003 Access Denied password not authorized
NAT6971 Connection error on Client, reason 9 ,TECXML1

So I take it this is my ACF2 password. I do see the violation in my broker so I now think I’m getting that far.

Do I need to run a user exit? I’ve tried USR1071, USR2071, USR2072, not sure???

Before the first Broker call you have to logon to the EntireX Broker using USR2071 with a valid user ID and password for the security environment used by the EntireX Broker. If the EntireX Broker runs on z/OS you have to use a valid ACF2 user ID and password.

Now using USR2071, still getting invalid password…broker security shows the id and ACF2 response code saying invalid password being issued, so I guess I’m getting to EntireX security. My password also works to login to broker control center, also using it for Natural IDL generation, etc…so I know it’s authenticating correctly to broker and entirex security.

Is there something else that is prohibiting this from being passed correctly? Is there something else in the install that could be stopping this from passed correctly…not sure where to look? I’ve got GWMSGL=3 in broker startup but I don’t know where the trace is going? Just curious too, our new password standard rules enforce that we use a number and national sign in the password, so I’m using a number and the ‘@’ sign, but like I said it works into control center so is this an issue?

Did you get the “invalid password” already for the USR2071 call?
Is your password in mixed case?

Some hnts:

  1. add ACIVERS=8 to your RPC parameter string
  2. use exactly the same Broker ID ETBTEC in USR2071 as in your DFS parameter
  3. if you invoke USR2071P for logon:
    user ID is uppercase translated in any case
    password is uppercase translated if Mixed case = N
    if you call USR2071N via application, user ID and password are taken ASIS

I have broker attributes file as such:
NODE = 220
BROKER-ID = ETBTEC

So, I was thinking that my Natural parms would then be:
RPC=(RPCSIZE=32,MAXBUFF=28,AUTORPC=ON,COMPR=2,DFS=(TECXML1,ETBTEC,L))

and that I would setup USR2071:
1 PARM-INPUT
2 I-FUNCTION (A08) INIT <‘LOGON’>
2 I-BROKER-ID (A32) INIT <‘ETBTEC’>
2 I-USER-ID (A08) INIT <‘RPC0011’>
2 I-PASSW (A08) INIT <‘PASSWORD OMITTED FOR THIS LOG’>
2 I-NEWPASSW (A08)
1 PARM-OUTPUT
2 O-RC (N04)
2 O-ERRTEXT (A80)

Results:
“00200216 API: Invalid BROKER-ID”
…hmmm, kinda seems funny to have to do that bt ???

So I changed my RPC parms to 220 and the calling program uses 220 as this:
1 PARM-INPUT
2 I-FUNCTION (A08) INIT <‘LOGON’>
2 I-BROKER-ID (A32) INIT <‘220’>
2 I-USER-ID (A08) INIT <‘RPC0011’>
2 I-PASSW (A08) INIT <‘PASSWORD OMITTED FOR THIS LOG’>
2 I-NEWPASSW (A08)

That has got me this far, but don’t know if that has been causing me these issues too???

################################################################################
Now, per your suggestions I have my parms as:
RCA=(BROKER),
RPC=(RPCSIZE=32,MAXBUFF=28,AUTORPC=ON,COMPR=2,ACIVERS=8,
DFS=(TECXML1,220,L))’

Results:
C-NODE: 220
C-NAME: TECXML1
C-ERROR-TEXT: 00200208 * No message text associated with this error code *
ESIGN 0260 NAT6971 Connection error on Client, reason 9 ,TECXML1

So I think ACI problem so I make it:
ACIVERS=4

Results:
C-NODE: 220
C-NAME: TECXML1
C-ERROR-TEXT:
00200379 API: Inconsistent Security Installation
ESIGN 0260 NAT6971 Connection error on Client, reason 9 ,TECXML1

Then:
ACIVERS=2

Results:
C-NODE: 220
C-NAME: TECXML1
C-ERROR-TEXT:
00080003 Access Denied password not authorized
ESIGN 0260 NAT6971 Connection error on Client, reason 9 ,TECXML1

################################################################################
Here’s the remaining code for your review.


END-DEFINE
*
EXAMINE I-PASSW TRANSLATE INTO UPPER
EXAMINE I-NEWPASSW TRANSLATE INTO UPPER
*
CALLNAT ‘USR2071N’ USING PARM-INPUT PARM-OUTPUT
/*
/*
CALLNAT ‘TECXML1’
BORR-SSN-I
NAME
*
WRITE
‘=’ BORR-SSN-I
‘=’ NAME
*
ON ERROR
CALLNAT ‘RPCINFO’ SERVER-PARMS CLIENT-PARMS
WRITE
/ ‘=’ C-NODE
/ ‘=’ C-NAME
/ ‘=’ C-ERROR-TEXT (AL=78)
END-ERROR
END

Sorry that I have overlooked the problem with your Broker ID: the broker ID ETBTEC is not valid when using NET communication (the default for NATET23).
I assume that you have setup your Broker for NET (=Adabas SVC)communication.

Please try again as follows:

RPC=(RPCSIZE=32,MAXBUFF=28,AUTORPC=ON,COMPR=2,ACIVERS=8,
DFS=(TECXML1,ETB220,L))

Call USR2071P with I-BROKER-ID = ETB220

The Broker ID in DFS must be identical to I-BROKER-ID

Please note that the prefix ETB in ETB220 has no meaning for NET communication. The EntireX Broker stub just looks for the trailing digits to build the DBID.

That works, I get 00000000 Successful Response from RPC Server…but I’m not out of the woods yet???

Now I get a NAT0082, ugh? No line number or object, but it’s the TECXML1 object right? Why can’t it find this object?

Oh yea, I to go with ACIVERS=2 or got inconsistency errors?

RPC=(RPCSIZE=32,MAXBUFF=28,AUTORPC=ON,COMPR=2,ACIVERS=2,
DFS=(TECXML1,ETB220,L))’

ACIVERS=8 is OK.

The NAT0082 is reported from the EntireX Java RPC server because he does not find TECXML1. Possible reasons:

  • TECXML1 is not the correct program name (must be the first or only name in the IDL)
  • the libray name is wrong (the first or only name in the IDL)
    The most possible reason is the wrong library name. For historical reasons the Natural RPC client sends its own client library name to the RPC server. If you want to use a different name you must call USR4008N to set the library name before calling the RPC server.
    The library name send to the RPC server is currently restricted to 8 characters.