Administering the RPC server for IMS
The EntireX RPC Server for IMS allows standard RPC clients to communicate with RPC servers on the operating system z/OS running with IMS in BMP mode. It supports the programming languages COBOL, PL/I and C and can provide IMS-specific PCB pointers for access to IMS databases if needed.
Customizing the RPC server
Configuration file
The name of the delivered example configuration file is CONFIGI (see source
library EXP110.SRCE). The configuration file is specified as a DD definition with a user-defined DD
name in the Started task JCL. The configuration file
contains the configuration for the RPC Server for IMS.
- connection information such as broker ID, server address (class, name, service)
- scalability parameters
- trace settings
For more information see Configuring the RPC server.
IBM LE runtime options
Depending on the feature the RPC Server for IMS needs to support (see the following table) additional runtime options for IBM's Language Environment need to be set. For a full description of LE runtime options, see IBM Resource Link.
| Feature | LE Runtime Options | Description |
|---|---|---|
| Call RPC server programs with AMODE 24 as well | ALL31(OFF),STACK(,,BELOW) | If not specified, AMODE 31 is supported. |
CSECT CEEUOPT (for application-specific LE runtime options) linked to
the RPC Server; etc. We recommend you use the IBM standard approach with CEEOPTS DD
statement in the started task JCL. See Started task JCL
for this purpose. Add the following lines to your started task JCL: //...
//CEEOPTS DD *
ALL31(OFF),STACK(,,BELOW)
/*
//.. The previous example uses an in-stream data set to configure
ALL31(OFF),STACK(,,BELOW) to allow calling of 24-bit and 31-bit programs and
configure RPTOPTS(ON) to list all used LE runtime options to
SYSOUT. Started task JCL
The name of the started task is EXPSRVI (see EntireX job library EXX110.JOBS).
- the target server libraries of the called COBOL or PL/I server
- for PL/I, if IMS-specific PCB pointers are used, the stub library; see stublib
- the configuration file used; see Configuration
file; specified as a DD definition with a user-defined DD name as RPC server startup argument
CFG:
CFG=DD:ddnameUnder IMS, server startup arguments are passed with the DD nameERXPARMS. So to pass the argument for the previous example, you need to specify a data set in the DD definition forERXPARMS. This data set needs a line containing the CFG argument, for exampleCFG=DD:CONFIGI.//* //G.ERXPARMS DD * ERXPARMS - DEFINE ONLY THE CONFIG DD NAME HERE CFG=DD:CONFIGI - LE runtime options used; see IBM LE runtime options
Configuring the RPC server
- In the configuration file:
- Comments must be on a separate line.
- Comment lines can begin with
*,/and;. - Empty lines are ignored.
- Headings in square brackets [<topic>] are ignored.
- Keywords are case-insensitive.
- Underscored letters in a parameter indicate the minimum number of letters that can be used for
an abbreviated command.
For example, in
brokerid=localhost, brokis the minimum number of letters that can be used as an abbreviation, that is, the commands/parametersbroker=localhostandbrok=localhostare equivalents.
| Parameter | Default | Values | Req/Opt |
|---|---|---|---|
| brokerid | localhost | Broker ID used by the server. See Using the Broker ID in
applications in the RPC Programming documentation. Example:
|
R |
| ceeoptions | Allows you to change IBM's LE runtime options. This parameter is deprecated. See IBM LE runtime options for how to set the LE runtime options. | O | |
| class | RPC | Server class part of the server address used by the server. The server address must be
defined as a service in the broker attribute file (see Service-specific attributes). Case-sensitive, up to 32 characters. Corresponds to CLASS
attribute of the broker attribute file. Example: |
R |
| codepage | no codepage transferred | The codepage tells the broker the encoding of the data. The application must ensure the
encoding of the data matches the codepage. The RPC server itself does not convert your application
data. The application's data is shipped and received as given. Often, the codepage must also match
the encoding used in the RPC server environment for file and terminal IO, otherwise unpredictable
results may occur. By default, no codepage is transferred to the broker. It is assumed the broker's
locale string defaults match. See Locale string mapping. If they do not match, provide the codepage here. Example:
Enable character conversion in the broker by setting the service-specific attribute CONVERSION to
|
|
| compresslevel | N | Enforce compression when data is transferred between broker and server. See Data compression in EntireX
broker.
Example: |
O |
| deployment | NO | Activates the deployment service, see Deployment service. Required to
use the Server Mapping Deployment Wizard. See Server
Mapping Deployment wizard in the Designer documentation.
Example: |
O |
| etblnk | BROKER | Define the broker stub to be used. See Administering Broker
Stubs for available stubs. Example: |
O |
| extractor | NO | The extractor service is a prerequisite for remote extractions. See Extractor service.
Example: |
O |
| impersonation | NO | Defines if RPC requests are executed under the RPC user ID of the calling RPC client.
Depending on settings, different levels of checks are done prior to RPC server execution. See also Impersonation under Introduction to the RPC Server for IMS.
|
O |
| library | no default | library = search_logic [- library]
Where,
This parameter applies to programming language C only. Do not set if other programming languages for RPC server are used.
Example Example |
O |
| logon | YES | Execute broker functions LOGON/LOGOFF in worker threads. Must match the
setting of the broker attribute AUTOLOGON.
Reliable RPC requires logon set to YES. See Reliable RPC.
Example: |
O |
| marshalling | COBOL | The RPC Server for IMS can be configured to support either COBOL, PL/I, or C. See also Locating and calling the target server
.
|
O |
| password | no default | The password for secured access to the broker. If possible (write access) the password is
encrypted and written to parameter password.e. The parameter
password is removed. To change the password, add the parameter
password with the new password as value. If the Configuration file is an inline data set in the Started task JCL, password encryption does not take place.
Example: |
O |
| restartcycles | 15 | Number of restart attempts if the broker is not available. This can be used to keep the RPC
Server for IMS running while the broker is down for a short time. A restart cycle will be repeated
every 60 seconds. Note: Internally, the server waits in periods of 10 seconds (performing six times
more cycles), which you can see in the server output.
When the number of specified cycles is reached and a connection to the broker is not possible, the RPC Server for IMS stops. Example: The server waits up to 30 minutes (30*6*10 seconds) before it terminates due to a missing broker connection. |
O |
| return_code | NO | Enable application-specific errors.
Example: |
O |
| runoption | no default | This parameter is for special purposes. It provides the RPC Server for IMS with additional
information. The runoptions are normally set to meet the platform's requirements. Set this parameter
only if a support representive provides you with an option and asks you to do so. Example:
|
O |
| servername | SRV1 | Server name part of the server address used by the server. The server address must be defined
as a service in the broker attribute file. See Service-specific attributes. Case-sensitive, up to 32 characters. Corresponds to SERVER of the
broker attribute file. Example: |
R |
| service | CALLNAT | Service part of the server address used by the server. The server address must be defined as
a service in the broker attribute file. See Service-specific attributes. Case-sensitive, up to 32 characters. Corresponds to SERVICE
attribute of the broker attribute file. Example: |
R |
| stublib | no default | For PL/I server if its interface has IMS-specific PCB
pointers to access IMS databases. Provide the DD name of the library where the PL/I server
interface object(s) are located. Not required for COBOL or if the interface of your PL/I server does
not have IMS-specific PCB pointers.
Example: PLISTUBS in the started task JCL of the RPC Server for IMS (see Started task JCL) as
|
O |
| svm | ERXSVM | Usage and location of server-side mapping files (Designer files with extension .svm) at
runtime, see Server-side mapping files in the RPC server. If the
svm parameter is omitted, the RPC server tries to open the server-side mapping
container using DD name ERXSVM. If this DD name is not available, no server-side
mapping files are used. If you use server-side mapping files at runtime, the server-side mapping
container must be installed and configured; see Installing the server-side mapping container for an RPC server for IMS (optional) in the
z/OS Installation documentation. Server mapping files with extension .svm are no longer supported at design time by the Designer. You can still use them at runtime in a server-side mapping container. All special COBOL syntax and features supported by server mapping files with extension .svm are also covered by server mapping files with extension .cvm. See When is a server mapping file required? We recommend migrating .svm files to .cvm files. See Migrating server mapping files under Server Mapping Files for COBOL in the Designer documentation.
Example: For the example, define the DD name See also Usage of server mapping files . |
O |
| timeout | 60 | Timeout in seconds, used by the server to wait for broker requests. See WAIT under Broker
ACI Fields for more information. Also influences restartcycles. Example:
|
O |
| tracedestination | DD:ERXTRACE |
The name of the destination file for trace output. See also Activating tracing for the RPC server.
Example: The DD name
|
O |
| tracelevel | None | Trace level for the server. See also Activating tracing for the
RPC server.
Example:tracelevel=standard |
O |
| traceoption | None | Additional trace option if trace is active. See also Activating
tracing for the RPC server.
Example: |
O |
| userid | ERX-SRV | The user ID for access to the broker. The default ERX-SRV will be used if
this parameter is omitted or specified without a value: userid=. Example:
|
O |
Locating and calling the target server
COBOL
The z/OS module name for the RPC server called is taken from the server mapping if one is available. See Usage of server mapping files for an introduction. If no server mapping is used, the IDL program name is used as the z/OS module name of the RPC server and the IDL library name is ignored.
- Make sure that all z/OS modules called as RPC servers
- are compiled with IBM's Language Environment (see IBM Resource Link)
- use COBOL calling conventions
- can be called dynamically ("fetched") from any Language Environment program
- are accessible through the RPC Server for IMS started task JCL STEPLIB concatenation. See Started task JCL.
- Configure the parameter marshalling for COBOL, for example:
marshalling=COBOL
See also Scenario I: Calling an existing COBOL server or Scenario II: Writing a new COBOL server.
C
The approaches needed to derive the dynamic-link library (DLL) names for the RPC server are more complex for C, for the following reasons:
- the limitation of 8 characters per (physical) member (DLL name in PDSE)
- the maximum length of 128 characters per IDL library name (see Rules for coding library, library alias, program, program alias and structure names).
Either you restrict yourself in short IDL library names (up to 8 characters) and use the flexible
PREFIX configuration, or, if you need independence from the IDL library length and
names, use the FIX configuration. The parameter library is used for this purpose.
- Make sure all dynamic-link libraries (DLLs) called as RPC servers and client interface objects are accessible through the RPC Server for IMS started task JCL STEPLIB concatenation. See Started task JCL.
- Configure the parameter marshalling for C, for example marshalling=C.
- Configure the parameter library either with the FIX configuration or PREFIX configuration, depending on how you have built your DLLs. See Using the C Wrapper for the server side (z/OS, Linux, Windows).
See also Scenario V: Writing a new C server.
Assembler (IBM 370)
- The IDL program name is used as the z/OS module name
- The IDL library name is not used.
- Make sure all z/OS modules called as RPC servers:
- are accessible through the RPC Server for IMS started task JCL STEPLIB concatenation. See Started task JCL.
- Use PL/I or COBOL calling conventions. Configure the parameter marshalling for PL/I or COBOL.
Using SSL/TLS with the RPC Server
RPC servers can use Secure Sockets Layer/Transport Layer Security (SSL/TLS) as the transport medium. The term SSL here refers to both SSL and TLS. RPC-based servers are always SSL clients. The SSL server can be either the EntireX Broker, Broker SSL Agent, or Direct RPC in webMethods Integration Server (IS inbound). For an introduction see SSL/TLS, HTTP(S), and certificates with EntireX in the platform-independent Administration documentation.
SSL delivered on a z/OS mainframe will typically use the Resource Access Control Facility (RACF) as the certificate authority (CA). Certificates managed by RACF can only be accessed through the RACF keyring container. A keyring is a collection of certificates that identify a networking trust relationship (also called a trust policy). In an SSL client/server network environment, entities identify themselves using digital certificates called through a keyring. Server applications on z/OS that wish to establish network connections to other entities can use keyrings and their certificate contents to determine the trustworthiness of the client or peer entity. Note that certificates can belong to more than one keyring, and you can assign different users to the same keyring. Because of the way RACF internally references certificates, they must be uniquely identifiable by owner and label, and also unique by serial number plus data set name (DSN).
For establishing an SSL connection on z/OS, IBM's Application Transparent Transport Layer Security (AT-TLS) can be used, where the establishment of the SSL connection is pushed down the stack into the TCP layer.
Using IBM's Application Transparent Transport Layer Security (AT-TLS)
Configure the AT-TLS rules for the policy agent (PAGENT)
using an appropriate client
and the z/OS Management
Facility (z/OSMF)
.
Together with SSL parameters (to provide certificates stored in z/OS as RACF keyrings) define AT-TLS
rules, for example by using the application
job name and remote TCP port number. If the rules match, the TCP connection is
turned into an SSL connection
. Refer to your IBM documentation for more information, for example the IBM
Redbook Communications Server for z/OS VxRy TCP/IP Implementation Volume 4: Security and
Policy-Based Networking.

| Legend | Description |
|---|---|
|
Client to interact with z/OS Management Facility (z/OSMF). |
|
AT-TLS rules are defined with z/OSMF policy management. |
|
Policy Repository with AT-TLS rules stored as z/OS files. |
|
Policy Agent, MVS task PAGENT, provides AT-TLS rules through a policy enforcement point (PEP) to TCP/IP stack. |
|
Application using TCP connection. |
|
If AT-TLS rules match, the TCP connection is turned into an SSL connection. |
- The client
may vary
per operating system, for example a web browser for z/OS 2.1. - z/OSMF
includes
other administration and management tasks in addition to policy management. - Policy Management
includes other rules, such as IP filtering, network address translation etc.
- To operate with SSL, certificates need to be provided and maintained. Depending on the platform, IBM EntireX provides sample certificates, but we strongly recommend that you create your own. See SSL/TLS, HTTP(S), and certificates with EntireX in the EntireX Security documentation.
- Set up the RPC Server for IMS for a TCP/IP connection. On mainframe platforms, use Transport-method-style Broker ID. Example:
ETB024:1699:TCP - Configure AT-TLS to turn the TCP/IP connection to an SSL connection, using a client to interact with the z/OS Management Facility (z/OSMF) See z/OSMF considerations in the z/OS Administration documentation. The outcome of this configuration is a Policy Repository with AT-TLS rules stored as z/OS files. This file is the configuration file for the Policy Agent, MVS task PAGENT.
- Make sure the SSL server to which the RPC Server for IMS connects is prepared for SSL connections as well. The SSL server can be EntireX Broker, Broker SSL Agent, or Direct RPC in webMethods Integration Server (IS inbound). See:
Starting the RPC server
- Modify the member EXPSRVI (see EntireX job library EXX110.JOBS) according to your system requirements and copy the started task JCL to your system PROCLIB concatenation. See Started task JCL.
- Modify the server parameters Configuration file according to your system requirement. For details, see Configuring the RPC server.
- Start the task manually with:
/s EXPSRVIOr:
Add the task to your system automation tool(s)
Stopping the RPC server
- Use the operator command
STOP. Examples:/p EXPSRVI /f EXPSRVI,STOPOr:
Add the
STOPcommand to your system automation tool(s).
Activating tracing for the RPC server
- Set the parameters tracelevel, traceoption and tracedestination. See Configuring the RPC server.
- Start the RPC Server for IMS. See Starting the RPC server.
- Temporarily change the trace level with the operator
command
F EXPSRVI,TRACELEVEL=tracelevel,for valid tracelevel values, see tracelevel.
The
TRACELEVELcommand without any value will report the currently active trace options, for example:F EXPSRVI,TRACELEVELmight reply with the operator message
Tracelevel=0 TraceFile=DD:ERXTRACE
To switch off tracing, set the tracelevel parameter to None.