Natural Batch RPC server with 5 subtask could not start

We want to start a Batch RPC server with 5 subtask.
Enviroment as below :
Natural : 3.1.6
Entirex : 6.1.1
Os/390 :2.10
We have defined NTASK=5 in SMAI060 JCL

//ETBSRV4 PROC
//SAGTOK3 EXEC PGM=SAGTOKEN,
// PARM=(‘DELETE LOCAL,STUBLOG=’),REGION=0M
//STEPLIB DD DSN=SAGLIBT.EXX611.LOAD,DISP=SHR
//STASRV4 EXEC PGM=NATBATCH,REGION=0M
//STEPLIB DD DSN=SAGLIBT.EXS611.LOAD,DISP=SHR
// DD DSN=SAGTEST.ADA713.LOAD,DISP=SHR
// DD DSN=SAGLIBT.EXX611.LOAD,DISP=SHR
// DD DSN=SAGTEST.NAT316.LOAD,DISP=SHR
//SYSTCPD DD DSN=HTPLEX.TCPIP.PARMS(DATAHT30),DISP=SHR
//SYSUDUMP DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//CMPRINT DD SYSOUT=X
//CMPRINT1 DD SYSOUT=X
//CMPRINT2 DD SYSOUT=X
//CMPRINT3 DD SYSOUT=X
//CMPRINT4 DD SYSOUT=X
//CMPRT10 DD SYSOUT=X
//CMPRT11 DD SYSOUT=X
//CMPRT12 DD SYSOUT=X
//CMPRT13 DD SYSOUT=X
//CMPRT14 DD SYSOUT=X
//TRACE1 DD SYSOUT=X
//TRACE2 DD SYSOUT=X
//TRACE3 DD SYSOUT=X
//TRACE4 DD SYSOUT=X
//TRACE5 DD SYSOUT=X
//STUBLOG DD SYSOUT=X
//SYSOUT DD SYSOUT=X
//DDCARD DD DSN=SAGLIBT.EXX611.JOBS(ADACARD4),DISP=SHR
//*
//CMPRMIN DD DSN=HTPLEX.ADABAS.PROCLIB(PARM4),DISP=SHR
//* CMPRMIN DD *
//*

PARM4 member as below

INTENS=1,BPID=0,DSIZE=32,IM=D,MADIO=0,MAXCL=0,DBID=2,
ETID=’ ',PRINT=((10),AM=STD)
RPC=(SERVER=ON,MAXBUFF=20,SRVNAME=SRV4,TRACE=3,RPCSIZE=32,
SRVNODE=ETB148),
RCA=(BROKER),RCALIAS=(BROKER,BKIMBTSO)
STACK=(LOGON SYSRPC,ETBSRV1,ETBSRV22)

When we try to start RPC server with 5 subtask ,it can start just only 2 subtask .And we get below messages .

M *** Natural RPC version: 5.1.1 - update level 0
M *** Highest supported protocol version: 1130
M EntireX Broker Stub Version=6.1.1, Patch Level=30, Highest API Supported=6
M *** LOGON to Broker ETB148 at 11:27:39
M *** Initialisation successful at 11:27:39
M *** Server SRV4 is up.
M *** Subtask 1 successfully attached.
M *** Subtask 2 successfully attached.
M *** NATSRVI: call to CMTASK failed - 274726924
M 00000000 Successful response
MC *** Initialization aborted at 11:27:47

What should we check to start RPC server with 5 subtask ?

Regards .

The usual suspect is re-entrancy.

  1. when you link Adabas with your Natural nucleus, use ADALNKR rather than ADAUSER
  2. the Natural nucleus must be linked with RENT,REUS. In Natural 3.1, there are some modules that are not provided with reentrant links, but can be reassembled and linked as reentrant (NATOS comes to mind).

Insufficient memory can sometimes cause this also. If you are using a local buffer pool (rather than a global), set the LBPNAME parm in the NTOS macro to a non-blank 8 character name. This allows the RPC server job to share the buffer pool (default is each server gets its own lbp). Use a shared nucleus so that approx 2mb is shared by all servers, or better yet, put it in the ELPA where all users can get to it (TSO, batch and CICS).

here’s some notes I found on the topic:

Natural RPC NTASKS

  • NTASKS - reentrant Natural batch needed. Allows n tasks in batch address space: n is fixed number.
  • change linkedit of NATCONFG, NATOS (job NATI055) to include RENT: REUS,RENT,XREF,LET,LIST,NCAL,SIZE=(512K,128K)
  • replace ADAUSER with ADALNKR (will no longer read DDCARDs, DBID, etc must be set with appropriate NATPARMs)
  • for Natural Security environment, AUTO=ON is necessary. ETID=’ ’ (blank) is required (so GET TRANSACTION DATA won’t be useful).
  • recommended: use the shared nucleus feature rather than one nucleus. Even if not in LPA (recommended), using the shared nucleus reduces memory requirements for multi-tasked Natural.
  • recommended: use LBPNAME: set in NATI055: (* if you use split screen, set this in NTII070 / NTTSO also). Not required if using GBP.
  • GENERATE THE NATURAL/BATCH INTERFACE
    NTOS OPSYS=XA, OPERATING SYSTEM MVS/XA OR MVS/ESA X
    ABEXIT=ESTAE, ABEND MODE, FURTHER PARAM.:SPIE,NONE X
    SUBPOOL=0, STORAGE SUBPOOL NUMBER FOR GETMAINS X
    LE370=NO, LE/370 LANGUAGE ENVIRONMENT X
    LBPNAME=NAT31LB, LOCAL BUFFER POOL NAME X
    USERID=YES TAKE USERID FROM JOBNAME
    END
  • recommended: tune the Natural sizes for an execution-only batch environment. Can set these dynamically (CMPRMIN):
    PLOG=ON
    AUTO=ON,STACK=(LOGON SYSRPC),ETID=’ ',INTENS=1
    DSIZE=0,ESIZE=64,SSIZE=0,WSIZE=1
    BPSFI=ON
    RPC=(SERVER=ON,TRACE=1,SRVUSER=XXXXX,NTASKS=5,
    LOGONRQ=ON,SRVNAME=SRVN001)
    Your environment may have other sizes that can be tuned. Depending on your settings, each task will need around 750k - 1mb of region.
  • if TRACE is on (=1,2 or 3), you need a CMPRT10x dataset. If it is not allocated, tracing is turned off for that task.
  • for subtask 1, output is sent to CMPRINT and trace to CMPRT10, same as with no NTASKS specified.
  • for subtask 2 thru 10, output is sent to CMPRINT1 thru CMPRINT9
  • for subtask 11 thru 99, output is sent to CMPRIN10 thru CMPRIN99
  • for subtask 2 thru 99, trace is sent to CMPRT101 thru CMPRT199.
  • CMPRINTx does not have to be in JCL: Natural will dynamically allocate if missing.

ETBSRV4 startup proc. is as below .

//ETBSRV4 PROC
//SAGTOK3 EXEC PGM=SAGTOKEN,
// PARM=(‘DELETE LOCAL,STUBLOG=’),REGION=0M
//STEPLIB DD DSN=SAGLIBT.EXX611.LOAD,DISP=SHR
//*
//STASRV4 EXEC PGM=NATBATCH
//STASRV4 EXEC PGM=NATBATCH,REGION=0M
//STEPLIB DD DSN=SAGTEST.SMALOAD,DISP=SHR
// DD DSN=SAGLIBT.SMALOAD,DISP=SHR
// DD DSN=SAGLIBT.EXS611.LOAD,DISP=SHR
// DD DSN=SAGTEST.ADA713.LOAD,DISP=SHR
// DD DSN=SAGLIBT.EXX611.LOAD,DISP=SHR
// DD DSN=SAGTEST.NAT316.LOAD,DISP=SHR
//SYSTCPD DD DSN=HTPLEX.TCPIP.PARMS(DATAHT30),DISP=SHR
//SYSUDUMP DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//CMPRINT DD SYSOUT=X
//CMPRINT1 DD SYSOUT=X
//CMPRINT2 DD SYSOUT=X
//CMPRINT3 DD SYSOUT=X
//CMPRINT4 DD SYSOUT=X
//CMPRT10 DD SYSOUT=X
//CMPRT101 DD SYSOUT=X
//CMPRT102 DD SYSOUT=X
//CMPRT103 DD SYSOUT=X
//CMPRT104 DD SYSOUT=X
//CMPRT105 DD SYSOUT=X

//STUBLOG DD SYSOUT=X
//SYSOUT DD SYSOUT=X
//DDCARD DD DSN=SAGLIBT.EXX611.JOBS(ADACARD4),DISP=SHR
//

//CMPRMIN DD DSN=HTPLEX.ADABAS.PROCLIB(PARM4),DISP=SHR
//* CMPRMIN DD *
//*

PARM4 member is as below

INTENS=1,BPID=0,DSIZE=32,IM=D,MADIO=0,MAXCL=0,DBID=2,
ETID=’ ',PRINT=((10),AM=STD)
RPC=(SERVER=ON,SRVNAME=SRV4,TRACE=3,RPCSIZE=48,MAXBUFF=30,
SRVNODE=ETB148),
RCA=(BROKER),RCALIAS=(BROKER,BKIMBTSO)
STACK=(LOGON SYSRPC,ETBSRV1,ETBSRV22)

JESMSGLG output is as below

— TUESDAY, 29 MAR 2005 ----
IEF695I START ETBSRV4 WITH JOBNAME ETBSRV4 IS ASSIGNED TO USER BROKER , GROUP OMVSGRP
İHASP373 ETBSRV4 STARTED
IEF403I ETBSRV4 - STARTED - TIME=14.58.55
Sagtok02: Token Services Error 00000004 Returned

  •                                            --TIMINGS (MINS.)--            ----PAGING COUNTS---             
    

-JOBNAME STEPNAME PROCSTEP RC EXCP CONN TCB SRB CLOCK SERV PG PAGE SWAP VIO SWAPS
-ETBSRV4 SAGTOK3 STARTING 00 4 8 .00 .00 .0 270 0 0 0 0 0
IEW4000I FETCH FOR MODULE NATBATCH FROM DDNAME STEPLIB FAILED BECAUSE INSUFFICICIENT STORAGE WAS AVAILABLE.
CSV031I LIBRARY ACCESS FAILED FOR MODULE NATBATCH, RETURN CODE 24, REASON CODE 26080021, DDNAME STEPLIB

CMPRINT

NAT9995 NATURAL SESSION TERMINATED NORMALLY

CMPRT10

M *** Init a NAT316 RPC server on MVS/ESA in lib SYSRPC at 15:04:15
M *** Startup parameters for transport:
M *** Server = SRV4
M *** Node = ETB148
M *** UserID =
M *** Natural RPC version: 5.1.1 - update level 0
M *** Highest supported protocol version: 1130
M EntireX Broker Stub Version=6.1.1, Patch Level=30, Highest API Supported=6
M *** LOGON to Broker ETB148 at 15:04:16
M *** Initialisation successful at 15:04:16
M *** Server SRV4 is up.
M *** Subtask 1 successfully attached.
M *** Subtask 2 successfully attached.
M *** NATSRVI: call to CMTASK failed - 274726924
M 00000000 Successful response
MC *** Initialization aborted at 15:04:23

CMPRT101

M *** Init a NAT316 RPC server on MVS/ESA in lib SYSRPC at 15:04:19
M *** Startup parameters for transport:
M *** Server = SRV4
M *** Node = ETB148
M *** UserID =
M *** Natural RPC version: 5.1.1 - update level 0
M *** Highest supported protocol version: 1130
M EntireX Broker Stub Version=6.1.1, Patch Level=30, Highest API Supported=6
M *** LOGON to Broker ETB148 at 15:04:19
M *** Initialisation successful at 15:04:19

CMPRT102

M *** Init a NAT316 RPC server on MVS/ESA in lib SYSRPC at 15:04:21
M *** Startup parameters for transport:
M *** Server = SRV4
M *** Node = ETB148
M *** UserID =
M *** Natural RPC version: 5.1.1 - update level 0
M *** Highest supported protocol version: 1130
M EntireX Broker Stub Version=6.1.1, Patch Level=30, Highest API Supported=6
M *** LOGON to Broker ETB148 at 15:04:21
M *** Initialisation successful at 15:04:21

Finaly we could not start ETBSRV4 batch RPC with NTASK=5 subtask.

REgards .

Please take a look at my earlier notes to you. The message:

IEW4000I FETCH FOR MODULE NATBATCH FROM DDNAME STEPLIB FAILED BECAUSE INSUFFICICIENT STORAGE WAS AVAILABLE.
CSV031I LIBRARY ACCESS FAILED FOR MODULE NATBATCH, RETURN CODE 24, REASON CODE 26080021, DDNAME STEPLIB

indicates that you are running out of memory for the task. Verify that you are using a shared, reentrant nucleus with a reentrant ADALINK and NATOS LBPNAME parameter is set. Check your installation steps - it is unlikely that you have a shared nucleus since the subtask is trying to load another copy of “NATBATCH”.