The Server has configuration settings which are available by changing the source code for the main MFDBSRVR program. The exact instructions for changing them are described in comments in the MFDBSRVR source code. The options are briefly explained in the source code and are explained in full below.
By default, the Server is set up to support a maximum DL/I packet size of 32,000 bytes. The maximum packet size allowed can be reduced by changing this setting in the Server. Reducing the size reduces the amount of memory required by the Server. The amount of memory saved is for each instance of the Server. For example, if you have 30 concurrent Servers running you save about 1/2 megabyte of memory on your mainframe by reducing the size from 32,000 to 16,000.
In the interest of flexibility, you probably do not want to set this value too precisely so that you can allow for changes to the applications or DBD structures. If you do not have any large segment IO areas you can reduce this value to save some memory in your IMS/ESA system. See the section Optimizing Buffer Sizes in the chapter Requester Configuration for additional information.
The DL/I packet consists of Remote IMS control information, SSAs, the PCB, the AIB and the segment IO area depending on what kind of call it is and the direction the packet is flowing.
For Requester to Server packet contents:
|SSAs||Segment search arguments from the application DL/I call|
|AIB for IMS Option application calls to AIBTDLI||Application interface block|
|Segment IO area||Segment data, update calls only (ISRT, REPL, DLET )|
For Server to Requester packet contents:
|PCB results||PCB area including keyfeedback information|
|AIB for IMS Option application calls to AIBTDLI||Application interface block|
|Segment IO area||Retrieval calls only|
The SSAs require the exact length of each SSA in the call. That is, the length of an unqualified SSA is the length up to and including the terminating blank. The length of a qualified SSA is the length up to and including the terminating right parenthesis. The PCB results are all the DB PCB values including the PCB keyfeedback area. The length of the PCB keyfeedback is the length returned by IMS/ESA in the DB PCB.
The AIB control block has a length code and this is used for sending and receiving the AIB parameter block for IMS Option applications which called AIBTDLI. This is usually 128. The segment IO area is the length of the area required for the segment as defined in the IMS Option DBDGEN for the database. The length used for variable length segments is the length contained in the first two bytes of the segment IO area. There is a fixed amount of control information for all calls which is 16 through 32 bytes.
For retrieval calls which use CBLTDLI on the Server, this control information includes a "Segment Length Descriptor" block from the Requester to the Server. There are several (currently 5) different types of Segment Length Descriptors. All but one of the descriptor blocks are less than 16 bytes long. The other block's size is the number of SEGMs in the DBD multiplied by 12 for a maximum of 3060 bytes. When this descriptor is sent to the Server, it is cached in the Server so consecutive calls to the same database do not retransmit it. The descriptor block chosen (of the five possible) is the one which minimizes network transmissions for the kind of call being issued and the structure of the database. You can eliminate the need to send the Segment Length Descriptors by defining a PCBNAME parameter in your PCB. This enabless the Server to use the AIBTDLI call even if the application issued a call to CBLTDLI (or any other xxxTDLI other than AIBTDLI). The next section on AIBTDLI Availability describes how this works.
When the IMS Option application program makes a call to AIBTDLI, the Requester sends the AIBTDLI call to the Server and it makes the same AIBTDLI call on IMS/ESA. When the IMS Option application calls any of the other DL/I entry points, such as CBLTDLI, the Server may call CBLTDLI or AIBTDLI. Which it calls depends on how the PCB is defined and the value of a configuration setting in the Server. This choice does not affect the results returned to the application running in IMS Option. It always receives the data that it expects as a result of the call it issued. The AIBTDLI Available setting on the Server controls which DL/I entry point the Server calls. By default, it is set to "Automatic". The Automatic setting causes AIBTDLI to be called by the Server program whenever either:
The advantage of the Server calling AIBTDLI when the application calls CBLTDLI (or the other language dependent xxxTDLI modules) is that the Requester does not have to send a Segment Length Descriptor block to the Server. This can improve performance and reduce the load on your network. When calling AIBTDLI the Server can use the AIBOAUSE field returned in the AIB parameter block instead of having to determine the lengths from the segment descriptor blocks. See the section Maximum DL/I Packet Size for details on this descriptor block.
You can achieve optimal packet transmission by using AIBTDLI as the default. In this case, when the remote IMS Requester sends a DL/I call for a PCB that has the 'PCBNAME' parameter defined, the Requester indicates to the server to use the AIBTDLI call interface. However, if the server's PSB does not contain the same 'PCBNAME' value, its AIBTDLI call fails. To force all calls sent from the Requester to use the CBLTDLI when CBLTDLI is called and AIBTDLI when AIBTDLI is called, change the LU62-AIB-AVAIL value to 'Y' from the default of 'A' (for Automatic). If you do not want the Requester to send any calls for AIBTDLI, set this value to 'N'.
In general, IMS Option uses the PCBNAME when it is specified. If, for some reason, the PCBNAME defined on the PC is not available in the mainframe PCB, IMS Option fails
By default, the PSB scheduled on IMS/ESA is the same PSB-name used by IMS Option when it scheduled the application. You may have the Server map this PSB-name to some other name if you want to schedule a different PSB on IMS/ESA. For example, the PSB on IMS/ESA may not be defined for parallel scheduling but you want to run multiple Requesters which reference this same PSB. You could change the PSB on IMS/ESA to support parallel scheduling. Or, you could create a new PSB on IMS/ESA which supports parallel scheduling and map requests to schedule the old one to the new one. The PCB sequence in a mapped PSB must match the PCB order in the original PSB-name if the Server calls CBLTDLI (not AIBTDLI). If the PCBNAME is defined and you are using "Automatic AIB Calling", the relative order can be different but the PCBNAMEs must match.
Heuristic syncpoint completions enable the Requester and IMS Option to report a successful syncpoint even when a problem occurs exchanging syncpoints between the Requester and the Server. See the chapter Syncpoint Considerations for complete details on heuristic syncpoints. The Server program has a setting which controls whether the Requester can complete heuristically. This setting is returned to the Requester during the conversation startup. Its value is displayed by the Remote IMS test utility upon a successful connection to a Server. The Heuristic Syncpoint setting in the Server has 4 values:
|Y||Enable commit and rollback heuristic completions. This is the default.|
|N||Disable any heuristic completions|
|C||Enable heuristic commits only|
|R||Enable heuristic rollbacks only|
There is only one situation when you must change this setting from its default. That is when you customize the Server program by adding DL/I or SQL statements to it which invalidate the Requester's knowledge of what occurred on IMS/ESA. Specifically:
Copyright © 2001 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.