Stublog trace

Hello,

Second question from an obvious EntireX newbie today:

SAG support asked me to provide a stublog trace. The support ticket states:

We need a client stublog trace. A stublog trace has the text 'EntireX Broker Stub Trace' on the first line of the trace. I do not see that in any of the traces you have supplied. To produce the trace you need to use stub BKIMBTSO. If you do not have BKIMBTSO linked to your Natural batch nucleus, add the following dynamic override in the batch job RCA=(BROKER),RCALIAS=(BROKER,BKIMBTSO).

In the batch job, add the following to your JCL before executing the batch job:

//SAGTOK1 EXEC PGM=SAGTOKEN,PARM=(‘SET LOCAL,STUBLOG=3’) //STEPLIB DD DSN=your.exx.load,DISP=SHR

Your EntireX load library must be APF authorized. Add the following DD card to the JCL
//TRACE1 DD SYSOUT=*

Supply the output of TRACE1.

Question: how do I do this? Are these changes in the batch Natural nuke of the job where the call to the service is made, or is this in the Natural RPC Server (though if the latter I don’t know where this is used)? If this is for the batch job, can I add the step mentioned above running SAGTOKEN in my batch Natural proc so the JCL of the job itself doesn’t need to be modified?

Current:
//NATCA02D PROC NATPGM=NATBATED, NATURAL PROGRAM NAME
// NATREG=3M, NATURAL,DDM,OS SORT
// SYSDA=SYSDA, TEMPORARY DISK ALLOCATION
// SRTLIB=‘SYS1.SORTLIB’, SORT LIBRARY NAME
// SRTSPCE=5, SORT WORK SPACE
// NINDX=‘VSTA.DEV1.NATURAL’, NATURAL
// AINDX=‘VSTA.DEV1.ADABAS’, ADABAS
// SYSOUT=‘‘, SYSOUT CLASS
// SYSUDMP=’
’, SYSUDUMP DATA SET
// PRM=(‘IM=D,AUTO=ON,MT=0’) NATURAL PARMS
//CANSTEP EXEC PGM=&NATPGM,REGION=&NATREG,PARM=&PRM
//STEPLIB DD DSN=&NINDX…LOAD,DISP=SHR,DCB=BLKSIZE=32760
// DD DSN=&AINDX…LOAD,DISP=SHR
// DD DSN=SYSP.VERTEX.V401.LOADLIB.MAINT,DISP=SHR
// DD DSN=VSTA.USER.LOAD,DISP=SHR

Proposed:
//NATCA02D PROC NATPGM=NATBATED, NATURAL PROGRAM NAME
// NATREG=3M, NATURAL,DDM,OS SORT
// SYSDA=SYSDA, TEMPORARY DISK ALLOCATION
// SRTLIB=‘SYS1.SORTLIB’, SORT LIBRARY NAME
// SRTSPCE=5, SORT WORK SPACE
// NINDX=‘VSTA.DEV1.NATURAL’, NATURAL
// AINDX=‘VSTA.DEV1.ADABAS’, ADABAS
// SYSOUT=‘‘, SYSOUT CLASS
// SYSUDMP=’
’, SYSUDUMP DATA SET
// PRM=(‘IM=D,AUTO=ON,MT=0,RCA=(BROKER),RCALIAS=(BROKER,BKIMBTSO)’)
//SAGTOK1 EXEC PGM=SAGTOKEN,PARM=(‘SET LOCAL,STUBLOG=3’)
//STEPLIB DD DSN=your.exx.load,DISP=SHR
//*

//CANSTEP EXEC PGM=&NATPGM,REGION=&NATREG,PARM=&PRM
//STEPLIB DD DSN=&NINDX…LOAD,DISP=SHR,DCB=BLKSIZE=32760
// DD DSN=&AINDX…LOAD,DISP=SHR
// DD DSN=SYSP.VERTEX.V401.LOADLIB.MAINT,DISP=SHR
// DD DSN=VSTA.USER.LOAD,DISP=SHR

//TRACE1 DD SYSOUT=*

Please advise. I know nothing about this at all.

Thanks,

Brian

Brian,

without being able to try this myself, for obvious reasons, this looks correct.

Yes, when a client stublog is requested this is from the environment issuing
the calls (“the client”).

Whether you need RCA / RCALIAS or not depends on what stub has been linked
to your nat nucleus.

Hi Brian,

You must also add your exx.load to to the Natural step to be able to dynamically load the other Broker stub.

I thought that was what the 1st step was. Why do I need to run SAGTOKEN if I am instead going to do the same thing again in the batch Natural step?

Brian,

SAGTOKEN just sets a “global variable”, like an environment variable in Windows,
you will still need to enable your batch natural to find the broker stub load module.

Ok.

Now I am having trouble as the batch Natural step of this proc (with EXX load lib in the steplib chain even) acts as though AUTO=OFF even though AUTO=ON is specified. Why would it do that? Our jobs are not expecting to provide NSC credentials but to use RACF pass-through.

Why would this change and how do I fix it. AUTO=ON is explicitly given in the parm list.

Does Natural flag any parm errors and thus invalidate the whole bunch of override parms ?

No parm errors I can see, but I do see these suspicious messages:

10.17.59 STC22269 ---- TUESDAY,   24 APR 2012 ----                              
10.17.59 STC22269  IEF677I WARNING MESSAGE(S) FOR JOB DV020002 ISSUED           
10.17.59 STC22269  IEF695I START DV020002 WITH JOBNAME DV020002 IS ASSIGNED TO U
10.17.59 STC22269  $HASP373 DV020002 STARTED                                    
10.17.59 STC22269  IEF403I DV020002 - STARTED - TIME=10.17.59                   
10.18.00 STC22269  Sagtok03: Invalid Command to Token Services                  
10.18.00 STC22269  -                                                --TIMINGS (M
10.18.00 STC22269  -JOBNAME  STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB
10.18.00 STC22269  -DV020002          SAGTOK1     00     11      1    .00    .00
10.18.00 STC22269  +NATUEX1 USERID VSPRCTL ASSIGNED                             
10.18.01 STC22269  -DV020002          CANSTEP     12    267    123    .00    .00
10.18.01 STC22269  IEF404I DV020002 - ENDED - TIME=10.18.01                     
10.18.01 STC22269  -DV020002 ENDED.  NAME-QMNG-Q02..Q14        TOTAL TCB CPU TIM
10.18.01 STC22269  $HASP395 DV020002 ENDED                                      
 STMT NO. MESSAGE                                                               
        3 IEFC001I PROCEDURE NATCA02D WAS EXPANDED USING SYSTEM LIBRARY SYS1.VST
       60 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS NOT RES
IEF695I START DV020002 WITH JOBNAME DV020002 IS ASSIGNED TO USER VSPRCTL , GROUP
IEF236I ALLOC. FOR DV020002 SAGTOK1 NATURAL                                     
IEF237I 11A8 ALLOCATED TO STEPLIB                                               
IEF237I 117A ALLOCATED TO VTSDCS                                                
IEF237I 117A ALLOCATED TO VTSTATE                                               
IEF237I 117A ALLOCATED TO VTRATE                                                
IEF237I 1136 ALLOCATED TO VTSXREF                                               
IEF237I 1136 ALLOCATED TO VTSXREF1                                              
IEF237I 1119 ALLOCATED TO VTSREG4                                               
IEF237I DMY  ALLOCATED TO JESMSG                                                
IEF237I DMY  ALLOCATED TO JESJCL                                                
IEF237I DMY  ALLOCATED TO SYSMSG                                                
IEF237I JES2 ALLOCATED TO SYSABEND                                              
IEF237I JES2 ALLOCATED TO SYSUDUMP                                              
IEF237I DMY  ALLOCATED TO DDPRINT                                               
IEF237I JES2 ALLOCATED TO CMPRINT                                               
IEF237I JES2 ALLOCATED TO CMPRT01                                               
IEF237I JES2 ALLOCATED TO SYSIN                                                 
IEF142I DV020002 SAGTOK1 NATURAL - STEP WAS EXECUTED - COND CODE 0000           
IEF285I   VSTA.DEV1.EXX.LOAD                           KEPT                     
IEF285I   VOL SER NOS= DBA003.                                                  
IGD104I VSTA.DEV1.VERTEX.STAX.VTSDCS                 RETAINED,  DDNAME=VTSDCS   
IGD104I VSTA.DEV1.VERTEX.STAX.VTSTATE                RETAINED,  DDNAME=VTSTATE  
IGD104I VSTA.DEV1.VERTEX.STAX.VTRATE                 RETAINED,  DDNAME=VTRATE   
IGD104I VSTA.DEV1.VERTEX.STAX.VTSXREF                RETAINED,  DDNAME=VTSXREF  
IGD104I VSTA.DEV1.VERTEX.STAX.VTSXREF.GEOAIX.PATH    RETAINED,  DDNAME=VTSXREF1 
IGD104I VSTA.DEV1.VERTEX.STAX.VTSREG                 RETAINED,  DDNAME=VTSREG4  
IEF285I   VSPRCTL.DV020002.STC22269.D0000102.?         SYSOUT                   
IEF285I   VSPRCTL.DV020002.STC22269.D0000103.?         SYSOUT                   
IEF285I   VSPRCTL.DV020002.STC22269.D0000104.?         SYSOUT                   
IEF285I   VSPRCTL.DV020002.STC22269.D0000105.?         SYSOUT                   
IEF285I   VSPRCTL.DV020002.STC22269.D0000101.?         SYSIN                    
IEF373I STEP/SAGTOK1 /START 2012115.1017                                        
IEF374I STEP/SAGTOK1 /STOP  2012115.1018 CPU    0MIN 00.00SEC SRB    0MIN 00.00S
IEF236I ALLOC. FOR DV020002 CANSTEP NATURAL                                     
IEF237I 1196 ALLOCATED TO STEPLIB                                               
IEF237I 1146 ALLOCATED TO                                                       
IEF237I 11A8 ALLOCATED TO                                                       
IEF237I 350B ALLOCATED TO                                                       
IEF237I 1152 ALLOCATED TO                                                       
IEF237I 1277 ALLOCATED TO                                                       
IEF237I 1277 ALLOCATED TO                                                       
IEF237I 1277 ALLOCATED TO                                                       
IEF237I 370D ALLOCATED TO SORTLIB                                  
IEF237I JES2 ALLOCATED TO SYSUDUMP                                 
IEF237I 1146 ALLOCATED TO DDCARD                                   
IEF237I JES2 ALLOCATED TO DDDRUCK                                  
IEF237I JES2 ALLOCATED TO MPMDUMP                                  
IEF237I JES2 ALLOCATED TO DDPRINT                                  
IEF237I JES2 ALLOCATED TO JESMSG                                   
IEF237I JES2 ALLOCATED TO JESJCL                                   
IEF237I JES2 ALLOCATED TO SYSMSG                                   
IEF237I JES2 ALLOCATED TO SYSPRINT                                 
IEF237I JES2 ALLOCATED TO SYSABEND                                 
IEF237I JES2 ALLOCATED TO SYSOUT                                   
IEF237I JES2 ALLOCATED TO TRACE1                                   
IEF237I DMY  ALLOCATED TO SORTOUT                                  
IGD100I 122B ALLOCATED TO DDNAME DDSORTIN DATACLAS (        )      
IEF237I 122B ALLOCATED TO DDSORTUT                                 
IGD100I 3519 ALLOCATED TO DDNAME SORTWK01 DATACLAS (        )      
IGD100I 3556 ALLOCATED TO DDNAME SORTWK02 DATACLAS (        )      
IGD100I 1294 ALLOCATED TO DDNAME SORTWK03 DATACLAS (        )      
IGD100I 3514 ALLOCATED TO DDNAME SORTWK04 DATACLAS (        )      
IEF237I JES2 ALLOCATED TO SORTMSG                                  
IEF237I JES2 ALLOCATED TO CMPRINT                                  
IEF237I JES2 ALLOCATED TO CMPRT01                                  

Is it better to somehow assemble these parms into my batch Natural nuke instead of passing them as parms?

RCA=(BROKER),RCALIAS=(BROKER,BKIMBTSO)

Are these subparms of the NTRPC macro or under NTPRM?

Or is there an NTRCA macro?

TIA

There is some JCL syntax error around line 60 - presumably a DDNAME in the calling JCL that does //ddx dd DDNAME=SOMETHNG and no //SOMETHNG was provided, perhaps because you’ve added another step and the resolution is now ambiguous.

I like using SYSPARM to define parameters used for RPC clients and servers. Simplifies the JCL and keeps the parms in an accessible and easy to update place.

Hi Brian,

RCA and RCAALIAS are Natural parameters and is not directly relater to NATRPC. Therefor they are not sub-parameters to the RPC parameters.

The first step is ‘just’ to set the environment variable to activate stublog trace that is inherited by the next step.
The second step is your actual step. In this step you want to dynamic load another stub (and not to use the stub you may have linked to Natural). Therefore this step must know where it can load the stub from.

Have you changed the name of your job? AUTO=ON may use the name of your job as userid.

Try to set PLOG=ON as first dynamic parameter. Then a report is printed about all dynamic parameters specified.

You can also specify dynamic parameters under CMPRMIN in addition to the PARM parameter:

//CMPRMIN DD *
<dynamic parameters>
/*

or

//CMPRMIN DD DSN=data.set(member),...

That won’t work in a PROC :wink:

The other one does, of course, and I prefer CMPRMIN on a dataset as well,
gives you a lot of freedom as far as changing parms without changing the
proc or job is concerned.

About Brian’s sagtoken error - very strange, the command is perfectly OK ?!?
SAGTOKEN ends with a zero rc anyway, so … let’s see.
But THAT by itself shouldn’t have any impact on whether Natural starts up or not,
it just won’t create the stublog.

So there must be a Natural startup error having passed by undetected (as in: not shown),
so PLOG=ON should tell us more.

That’s the reason why I showed both. :wink:

And it is not fully correct that it won’t work in a proc - from z/OS 1.13 it will. :idea:

Brian,

Maybe you should look into your NATUEX1 because of this message in your output:

+NATUEX1 USERID VSPRCTL ASSIGNED

It could look as it has influence on the userid setup(?).

Well, looks like this is the “correct” userid anyway as

IEF695I START DV020002 WITH JOBNAME DV020002 IS ASSIGNED TO USER VSPRCTL , GROUP

One thing that comes to my mind - is that extra EXX loadlib APF authorized ?

If not this may affect things negatively (and probably explain the SAGTOKEN) error as well.

VSTA.DEV1.EXX.LOAD is APF-authorized and has been as it is part of the STEPLIB concatenation for the Broker itself, and every load lib in the STEPLIB chain for that was required to be APF-authorized.

The NATUEX1 for the Natural step works the same with or without the SAGTOKEN step, so I don’t think it’s that.

I’m not seeing any messages that the parm list is invalid, but it does seem to act as though it was invalidated. Is there a max length for the string? I was concerned about passing that long of a dynamic parm list.

Guess I can just try different things to see how to make a regular batch job run normally with this configuration.

The DD name issue is a reference to CMSYNIN which would be resolved if the parm issue is resolved, I think.

60 XXCMSYNIN DD DDNAME=SYSIN

Yes, there’s a max length of 100 for the PARM, but you’re way below that,
assuming your actual JCL looks like what you pasted here.

Did you try PLOG=ON ?

Also, is IMSG set to OFF, by any chance ?

I didn’t try PLOG=ON and I have never heard of IMSG so it’s probably whatever is the default.

It’s typical in our shop for a batch job to override the parms with its own parm passing.

//LOADP2 EXEC NATCA02D,PARM=(‘INTENS=1,AUTO=ON,IM=D,MT=0’)

When this is done, the AUTO=OFF seems to kick in. When I removed it, which I have no control over in a true setting, we were back to AUTO=ON but the SYSIN was being ignored and it ran with an empty CMSYNIN.

Then I found that it’s by adding the SAGTOKEN step, that the Natural step ignores what we pass in the SYSIN DD card. Just removing the SAGTOKEN step allows CMSYNIN to match up to SYSIN.

I don’t know how I am ever going to get a stublog or fix this critical problem that I am on the hook for.

Take the sysin cards and assign them directly to your CMSYNIN of your natbatch step. If I remember the syntax correct:

//...   EXEC NATCA02D
//CANSTEP.CMSYNIN DD …

What do you have in sysin?

You could also try with AUTO=OFF and stack the logon credentials (library, uid, pw) in CMSYNIN.

Mogens,

All I can control is the proc. The JCL for the job is already set, and there are lots of them. I would break a lot of jobs everywhere if I change how this batch Natural proc has always worked.

The jobs need to be able to override parms. They need to be able to pass the Natural command and data in SYSIN DD. We need to be able to use AUTO=ON.

-Brian