Natural Development Server Frequently Asked Questions

This document contains frequently asked questions concerning the Natural Development Server (NDV) under z/OS (Batch).

The following topics are covered:


Natural Development Server starts and terminates immediately

At server initialization, the Natural Development Server

  • allocates central control blocks,

  • opens the datasets STGTRACE, STGSTDO, STGSTDE, STGCONFG,

  • obtains the configuration file,

  • loads the Natural front-end,

  • initializes the first Natural session and

  • launches the TCP/IP listener task.

If one of these steps fails, the server will not be able to continue and will terminate immediately.

Analyze the trace output (STGTRACE) or the error output (STGSTE) to find out the problem.

STGTRACE, STGSTDO, STGSTDE are synonyms for serveridE, serveridO and serveridT.

Which dataset should I analyze to get error information?

STGSTE Contains only error output. Each record consists of 2-4 lines, depending on whether it is a Natural error, a system error or an NDV stub error.
  • Natural Error

    1. DayOfMonth Time TaskId UserId

    2. TaskId NDV Error: error classification

    3. Natural FrontEnd error or Natural runtime error

    4. Natural error text

  • System Error

    1. DayOfMonth Time TaskId UserId

    2. TaskId NDV Error: error classification

    3. TaskId Sys Error: System error text

  • NDV Stub Error

    1. DayOfMonth Time TaskId UserId

    2. TaskId NDV Error: error classification

STGTRACE Contains NDV trace information and error information.

Each trace record contains DayOfMonth Time TaskId trace information text.

The string PrintError in the trace information text prefixes errors.

STGSTO Content of the configuration file allocated to STGCONFG.
SYSOUT Messages from LE runtime system.

Trace output shows: Cannot load Natural front-end ...

The Natural front-end specified by the NDV configuration parameter FRONTEND_NAME was not found in the load library concatenation.

Trace output shows: Transport initialization failed, EDC8115I address already in use

The TCP/IP port number specified by the NDV configuration parameter PORT_NUMBER is already in use by another process.

How do I get information about which process occupies a port number?

TSO command NETSTAT (PO 4712) displays connections of Port 4712. The first column of the list refers to the task that owns the port. Or enter the z/OS Unix System Services command netstat -P4712.

The task that occupies a port number is not active but the port is still occupied. How do I drop the stuck connections?

Enter TSO command NETSTAT (PO nnnn) to list connections for port nnnn.

Output of the NETSTAT (PO 4712) command:

EZZ2350I MVS TCP/IP NETSTAT CS V2R8       TCPIP NAME: DAEFTCP2        06:45:19

EZZ2585I User Id  Conn     Local Socket           Foreign Socket         State

EZZ2586I -------  ----     ------------           --------------         -----

EZZ2587I SAGNDV31 000031CC 157.189.160.55..4712   192.168.40.11..3152    Establsh

EZZ2587I SAGNDV31 000005E9 0.0.0.0..4712          0.0.0.0..0             Listen

EZZ2587I SAGNDV31 000031CD 157.189.160.55..4712   192.168.40.27..4250    Establsh

EZZ2587I SAGNDV31 000031D5 157.189.160.55..4712   157.189.164.133..2906  Establsh

EZZ2587I SAGNDV31 000031D8 157.189.160.55..4712   157.189.164.152..1099  Establsh
User Id The job that uses port 4712.
Conn Connection ID.
Foreign Socket Connected clients.
State Connection status.

If State contains FinWait, you need not drop that connection, because connections of that status do not prevent a Natural Development Server from using that port.

To drop the connection, enter the MVS command VARY TCPIP,DAEFTCP2,DROP,000005E9.

Where DAEFTCP2 must match your TCP/IP job name (TCPIP NAME: DAEFTCP2) in the first line of the NETSTAT output) and 000005E9 is the connection ID in the column Conn.

Trace output shows: Error at: Template runtime connect

When a Natural Development Server initializes, it starts a Natural session using the session parameter(s) defined by the NDV configuration parameter SESSION_PARAMETER. The profile definition of the NDV configuration parameter DEFAULT_PROFILE is appended. If the initialization of the template session fails, the server terminates immediately. The original error can be found below the message Error at:Template runtime connect.

Typical error situations could be:

  • No Natural buffer pool defined.

  • Natural system file FNAT not accessible.

  • Natural profile parameter ITERM=ON (Session Termination in Case of Initialization Error).

  • NDV initial user ID not defined.

NDV task abends with User Code 4093 and SYSOUT Message CEE5101C

The account of the Natural Development Server is not defined in z/OS Unix System Services. If you start the Natural Development Server as a started task, the member name of the started task must be defined under z/OS Unix System Services. If you start the Natural Development Server as a batch job, the user that submits the job must be defined under z/OS Unix System Services.

Required LE runtime options

IBM Language Environment (LE) runtime options that must be specified to operate a Natural Development Server.

Note:
These recommendations apply to the region of the NDV server. They do not apply to the CICS region if the NDV CICS adapter is used.

POSIX(ON) Enables the Natural Development Server to access the POSIX functionality of z/OS.

If you start a Natural Development Server with POSIX(OFF), it terminates immediately with a user abend U4093 and the system message EDC5167.

IBM supplies the default OFF.

TRAP(ON,NOSPIE) Defines the abend handling of the IBM Language Environment.

ON enables the Language Environment condition handler.

NOSPIE specifies that Language Environment will handle program interrupts and abends via an ESTAE, that is the Natural abend handler will receive control to handle program interrupts and abends. If you do not specify TRAP(ON,NOSPIE) the Natural abend handling does not work properly.

IBM supplies the default ON,SPIE.

TERMTHDACT(UADUMP) Defines the the level of information that is produced in case of an abend. The option UADUMP generates a Language Environment CEEDUMP and system dump of the user address space. The CEEDUMP does not contain the storage areas relevant to Natural.

IBM supplies the default TRACE.

Useful LE runtime options

IBM Language Environment (LE) runtime options to monitor and tune Natural Development Servers.

Note:
These recommendations apply to the region of the NDV server. They do not apply to the CICS region if the NDV CICS adapter is used.

RPTOPTS(ON) Prints LE runtime option settings to SYSOUT after server termination.
HEAPPOOLS The HEAPPOOLS run-time option is used to control an optional heap storage management algorithm, known as heap pools. Refer also to Language Environment for z/OS & VM Programming Reference.

The setting of this parameter depends on NDV functionality mostly used by NDV clients. A good value to start with is:

HEAPP=(ON,40,3,80,7,224,7,528,3,1344,8,2048,8)
ALL31(ON) Specify ALL31(ON) if your entire Natural environment runs in 31-bit mode to prevent LE switching addressing mode.
STACK(64K,16K,ANY,FREE) Specify the ANY option if your entire Natural environment runs in 31-bit mode. This enables LE to allocate the storage for the STACK segment above the 16 MB line. The STACK segment above 16 MB increases the number of subtasks you can create within the NDV region. The initial and extend size (64 KB and 16 KB in the example) should be determined for your own environment by using the LE storage report generated when you specify RPTSTG(ON).
HEAP(800K,64K,ANY,FREE,,) Initial heap storage (see STACK option).
ANYHEAP(1300K,200K,ANY,FREE) Library heap storage (see STACK option).
RPTSTG(ON) Generates, after server termination, a report of the storage the server used. At the end of the report, it suggests cell sizes for the HEAPPOOLS option. This option decreases performance of the server. Use it only as an aid to find best settings for HEAPPOOLS definition.
ENVAR(TZ=…) The ENVAR option enables you to set UNIX environment variables. The only environment variable applicable for the Natural Development Server is TZ (time zone).

Example: ENVAR(TZ=CET-1DST) CET - 1 hour daylight saving time

How do I pass LE runtime options?

  1. With the PARM parameter specified in the EXEC card of the NDV startup job. The length of the options is limited by the maximum length of the PARM parameter.

    ...
    //NDV EXEC PGM=NATRDEVS,
    // PARM='RPTOPTS(ON)/server-id'
    ...
  2. Assemble an LE runtime option module CEEUOPT and link it to the NDV load module.

    //KSPLNDV  JOB  KSP,CLASS=K,MSGCLASS=X
    //*
    //* RELINK NDV SERVER WITH LE RUNTIME OPTIONS
    //*
    //******************************************************************
    //* STEP1: ASSEMBLE LE RUNTIME OPTION MODULE
    //*
    //STEP1 EXEC PGM=ASMA90,PARM='DECK,NOOBJECT'
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT2   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT3   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSPUNCH DD DSN=&&TEMPOBJ(CEEUOPT),DISP=(,PASS),UNIT=SYSDA,
    // SPACE=(TRK,(1,1,1)),DCB=(BLKSIZE=3120,LRECL=80,DSORG=PO)
    //SYSLIB   DD DSN=CEE.SCEEMAC,DISP=SHR                     <<<<<<
    //         DD DSN=SYS1.MACLIB,DISP=SHR                     <<<<<<
    //SYSIN    DD *
    CEEUOPT  CSECT
    CEEUOPT  AMODE ANY
    CEEUOPT  RMODE ANY
             CEEXOPT ENVAR=(TZ=CET-1DST),                                  X
                   HEAPPOOLS=(ON,40,50,80,90,224,80,528,50,1344,90,2048,   X
                   90),                                                    X
                   POSIX=(ON),                                             X
                   RPTOPTS=(ON)
             END
    /*
    //******************************************************************
    //* STEP1: LINK RUNTIME OPTION MODULE
    //*
    //STEP2    EXEC  PGM=IEWL,
    //         PARM='NCAL,RENT,LIST,XREF,LET,MAP,SIZE=(9999K,96K)'
    //SYSPRINT DD  SYSOUT=*
    //SYSUT1   DD  UNIT=SYSDA,SPACE=(TRK,(5,5))
    //SYSLMOD  DD  DSN=&&CEEOBJ(CEEUOPT),DISP=(,PASS),UNIT=SYSDA,
    // SPACE=(TRK,(1,1,1))
    //SYSLIB   DD  DSN=&&TEMPOBJ,DISP=(OLD,PASS)
    //SYSLIN   DD  *
     INCLUDE SYSLIB(CEEUOPT)
      ENTRY  CEEUOPT
       ORDER CEEUOPT
     NAME CEEUOPT(R)
    /*
    //******************************************************************
    //* STEP3: RELINK NDV SERVER WITH RUNTIME OPTION MODULE
    //*
    //STEP3    EXEC PGM=IEWL,
    //         PARM='RENT,XREF,LIST,LET,REUS,SIZE=(300K,64K),CASE=MIXED,
    //               AMODE=31,RMODE=ANY'
    //SYSUT1   DD  UNIT=(SYSDA),SPACE=(TRK,(10,4))
    //SYSLMOD  DD  DISP=SHR,DSN=NATURAL.NDV.LOAD      <<<<<<
    //SYSPRINT DD  SYSOUT=X
    //NDVLOAD  DD  DISP=SHR,DSN=NATURAL.NDV.LOAD      <<<<<<
    //CEELOAD  DD  DISP=SHR,DSN=&&CEEOBJ
    //SYSLIN     DD *
     REPLACE CEEUOPT
     INCLUDE NDVLOAD(NATRDEVS)
     INCLUDE CEELOAD(CEEUOPT)
     NAME NATRDEVS(R)
    /*

The lines marked with <<<<<< must be adapted to your environment.

Definitions required in Natural Security

  • Each client must be defined in Natural Security (NSC) if the Transition Period Logon flag in NSC is set to NO. Otherwise, your Map Environment attempt fails with a NAT0873 error.

  • You must define an NDV initial user ID (default ID is STARGATE) unless you run with Natural profile parameter AUTO=OFF (no automatic logon).

  • Each user must have either a default library or a private library. Otherwise, your Map Environment attempt will fail with a NAT1699 error.

  • You must not specify a startup program that executes an I/O statement or stacks a LOGON, LOGOFF or RETURN command, because the program is executed whenever you change the focus to that library within the tree view.

  • If you add a new user, you must specify a password for this user. Otherwise, his/her Map Environment attempt will fail with a NAT0838 error.

I do not get a NAT0954 even if I specify DU=OFF

The IBM Language Environment (LE) runtime option TRAP must be set to TRAP(ON,NOSPIE).

Map Environment fails with a NAT3048

Specify session parameter ETID=' '. If you are using Natural Security, clear the ETID (Adabas User Identification) definition for that user.

Map Environment fails with Stub RCnn

Stub return codes are raised by the NDV front-end stub, if it detects a logical processing error when dispatching the NDV request. The NDV trace output contains detailed information about the reason for the error.

The following stub return codes are possible:

Code Meaning, Reason, Action
1

Error during session reconnect (for future use).

2

Cannot create new session directory entry or subtask.

When Natural Studio executes a Map Environment command, the Natural Development Server allocates an entry in its session directory and creates a new subtask. If one of these actions fails, the Stub RC 2 is raised.

Reason:
  • Region size (virtual storage below 16 MB) for the Natural Development Server is too small,

  • Number of subtasks exceeds the limit specified by the z/OS Unix System Services parameter MAXTHREADS.

Action:

Increase region size or MAXTHREADS, or distribute the clients to several Natural Development Servers. To save memory below 16 MB, you can also specify the ANY option of the LE parameter STACK (refer to Useful LE runtime options).

The number of active tasks can be displayed using the z/OS system command D OMVS,PID= process-id (where process-id is the process id of the Natural Development Server).

The value of MAXTHREADS can be displayed with D OMVS,OPTIONS.

3

Cannot initialize new session.

This error occurs if a storage allocation for internal NDV control buffers fails due to a lack of virtual memory above 16 MB.

Reason:

Virtual memory above 16 MB too small.

Action:

Increase the virtual memory above 16 MB, decrease the number of physical storage threads, configure NDV to use the Natural roll server, or distribute the clients to several Natural Development Servers.

4

Session execution failed.

Internal error. Natural Studio uses an invalid session identifier to process a request.

Reason:
  • When a Map Environment command is issued, the session ID already exists.

  • The Natural session with the specified ID is not initialized.

Action:

Locate the defective session ID in the server trace file and cancel it using the monitor task, or restart your Natural Studio session.

5

I/O execution not allowed.

In some situations, a Natural I/O is prohibited at the Natural Development Server.

Reason:
  • I/O execution during LOGON request.

  • I/O execution while a transaction processor is executing.

Action:

Locate the I/O buffer in the server trace file to find out which I/O should be processed. Check for any startup program specified for the library you want to logon to.

6 Not applicable.
7

Error during I/O execution.

The Natural Development Server cannot finish a terminal I/O.

Reason:
  • Virtual memory above 16 MB too small.

  • I/O reply buffer sent by Natural Studio is invalid.

Action:

Increase the virtual memory above 16 MB. If the I/O reply buffer is invalid, contact Software AG support.

8

Protocol element missing.

Internal error, contact Software AG support.

9

NDV not installed on Natural system file.

Natural Development Server cannot execute the Natural module TRPRO located on library SYSLIB.

Reason:
  • The NDV modules were not loaded on the system file FNAT.

Action:

Use the Natural utility INPL to load the NDV modules.

10

LOGON command required.

If you execute a program on the Natural Development Server that executes a LOGOFF (or a RETURN when no SETUP record is available), the logon library is undefined.

In an online environment, the Natural Security logon screen is displayed in this situation. Under NDV, the Natural session rejects all requests except a LOGON command. This applies only if Natural Security is installed. You can issue a LOGON command either via the command line or by clicking on any library in your tree view.

Special characters are not translated correctly

The ASCII-to-EBCDIC translation for NDV uses the Natural translation tables TABA1/TABA2. These tables are automatically or manually adapted at the customer's site.

Automatic Adaptation of Translation Tables

Automatic adaptation of the Natural translation tables TABA1/TABA2 takes place if the following Natural profile parameters are set:

  • CFICU=ON and

  • CP=value

    where value can be any value except OFF or AUTO.

For further information on possible settings, see the corresponding profile parameter descriptions in the Natural Parameter Reference documentation.

At session initialization (when you map to the NDV server) Natural automatically adapts its conversion tables TABA1/TABA2 according to the CP parameter definition and the code page used at the client. To verify if the conversion tables have been adapted, set NDV TRACE_LEVEL=31, connect to the NDV host via Natural Studio, and review the NDV trace file.

Each Map Environment starts with:

11 07:58:02 00000003 Got new connection

some lines down you find:

11 07:58:02 00000005 Client codepage: windows-1252
11 07:58:02 00000005 Client operation = 18

and again some lines down you find:

11 07:58:03 00000005 TABA1/TABA2 adapted according CP definitions

which indicates that the table has been adapted.

Manual Adaptation of Translation Tables

The translate tables can be modified as follows:

  1. Modify source member NTTABA1/NTTABA2 on the Natural distribution library. Reassemble NATCONFG and relink the Natural nucleus.

  2. Specify the Natural session parameter TABA1/TABA2.

Manual adaptation requires setting CP=OFF. It also requires that TERMINAL_EMULATION=WEBIO be off. As a result, you cannot use the statements REQUEST DOCUMENT and PARSE.

Automatic and manual adaptation are mutually exclusive. If the automatic adaptation is effective, any TABA1/TABA2 definitions are discarded. You can use either the automatic or the manual update but not a mix of both.

Do not use Natural Studio session parameters as an approach to permanently implementing these changes. You run the risk that different clients may use different translations, and this could corrupt source code the clients share. It is better to maintain the translation centrally. You can do this in two different ways:

  1. Maintain the Natural parameter module, or

  2. Use the NDV configuration parameter SESSION_PARAMETER.

    This affects the SPoD users only.

Characters are not displayed correctly in the terminal emulation of Natural Studio

In Natural Studio, see also Tools / Options / Workspace / Terminal emulation setting in Natural Studio. The default (Latin) may not be the correct choice. For instance, in the US, you probably want to select "United States".

A simple Natural program on the mainframe can reveal the EBCDIC representation of a character which is not converting correctly:

#A(A1) = '{'
WRITE #A(EM=H)
END

If none of the available code pages applies to your needs, it is possible to adapt one of the N3270_USER 3270 translation tables in the etc directory. Details are in the Natural for Windows product documentation.

The web-site http://www.tachyonsoft.com/uc0000.htm is a good resource for finding valid EBCDIC and ASCII values for a given character (glyph) in various code pages.

How do I find out which hexadecimal value must be specified for TABA1/TABA2?

Run the following program on your Natural for Windows locally.

#A(A1) = '{'
WRITE #A(EM=H)
END

Output is 7B.

Run the program on a mainframe (edit the program with the Natural mainframe editor). Output is 75, assuming that you use a German EBCDIC table. If you use a US EBCDIC table, the output will be C0.

Start your Natural Development Server session with TABA1=(75,7B) and TABA2=(7B,75).

The modifications of TABA1/TABA2 do not apply to sources listed in the remote debugger

Specify the NDV configuration parameter DBG_CODEPAGE=USER.

Accessing work files

This topic is discussed in the Natural Operations for Mainframes documentation. Refer to Natural as a Server under z/OS, Print and Work File Handling with External Datasets in a Server Environment.

I have problems when accessing DB2

Ensure that your Natural Development Server is started with the configuration parameter KEEP_TCB=YES.

If you run the Natural Development Server with impersonation enabled (see NDV configuration parameter SECURITY_MODE), ensure that you have linked the interface module DSNRLI (instead of DSNALI) to the Natural nucleus.

Are there any Natural profile parameter settings required for NDV?

The following Natural profile parameter values are required for NDV:

  • ETID=OFF is required to allow multiple Natural sessions for each client.

  • DBCLOSE=ON is required to remove database resources immediately after session termination rather than to keep them until they are removed due to a timeout.

  • ITERM=OFF is required to continue with the Natural Development Server initialization, even if session initialization errors occur.

  • AUTO=ON/AUTO=OFF (Automatic Logon) has a different behavior under Natural Single Point of Development. In an online Natural environment, this parameter controls whether you are prompted for your user ID and password or whether your user ID is treated to be a trusted user ID from the TP environment. With Natural Single Point of Development, you must always specify your user ID and password in the Map Environment dialog.

  • The Natural profile parameter MT (Maximum CPU Time) is required to avoid endless loops within user programs. If you run a Natural session under NDV with MT=0, there is no timeout handler that interrupts a looping Natural program. The NDV server is still responding to other clients but with an excessive CPU time consumption. This applies only to NDV servers under z/OS Batch.

The NDV server consumes a lot of CPU time even if only a few clients are using it

If you run your NDV server without a CPU time limit on session level, a Natural program might run into an endless loop. Issue a server command list sessions and examine whether any of the listed sessions has the status code "IO" (under the column header St. in the list output). The character I means that the client owns an initialized session, and the O flags mean that the client occupies a thread and is currently executing.

If a second list sessions command results in an "IO" for the same client with an unaltered Last Activity, it is probably a stuck or looping client. You can try to cancel the session using a CANCEL SESSION server command. If the cancelation fails, a restart of the NDV server is required.

If the list sessions function does not show a stuck or looping client, cancel the NDV server by using the DUMP option, and consult Software AG support.

You can define a CPU time limit for NDV servers under z/OS Batch with the Natural profile parameter MT. MT=3 defines a maximum CPU time limit of 3 seconds.

I get a NAT0873 internal error at user authentication for Map Environment

Please check the system messages in your NDV job output for the error message ICH408I USER(… ) with BPX.SERVER CL(FACILITY) and INSUFFICIENT ACCESS AUTHORITY in the NDV Job output. This message indicates that the NDV server account (USER(…) in the ICH408I message) has no read access to the facility BPX.SERVER.

I get a NAT0920 Program … cannot be loaded (CEE3518)

Please check the system messages in you NDV job output for the error message ICH422I THE ENVIRONMENT CANNOT BECOME UNCONTROLLED and CSV042I REQUESTED MODULE … NOT ACCESSED. THE MODULE IS NOT PROGRAM CONTROLLED. This message indicates that the load module … is not defined as "program controlled". Please define the corresponding load library to the program class "**".

I receive a NAT0873 and the server trace logs ‘Sys Error, errno:163 errno2:0x0BE80820 EDC5163I SAF/RACF extract error’

The client is not granted to use z/OS Unix System Services. Please check if the client has an OE segment. And if you have defined the OMVSAPPL, each client must have read access to OMVSAPPL.

The server fails to start with return code 4 and in the error log I find ‘Transport initialization failed‘

Probably the TCP/IP environment is in error. See the system error message after the error log entry and ask your system programmer(s) for assistance.