All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.ims.connect.TmInteraction Maven / Gradle / Ivy

The newest version!
/*
 * File: TmInteraction.java                                               
 * ==========================================================================
 * Licensed Material - Property of IBM
 *  
 * IBM Confidential
 * 
 * OCO Source Materials
 * 
 * 5655-TDA
 * 
 * (C) Copyright IBM Corp. 2009, 2014 All Rights Reserved. 
 * 
 * The source code for this program is not published or  
 * otherwise divested of its trade secrets, irrespective 
 * of what has been deposited with the U.S. Copyright 
 * Office.
 * 
 * US Government Users Restricted Rights - Use, duplication or
 * disclosure restricted by GSA ADP Schedule Contract with
 * IBM Corp.
 * =========================================================================== 
 */
package com.ibm.ims.connect;

import com.ibm.ims.connect.impl.TmInteractionImpl.CorrelatorToken;


/**
 * Configures interaction properties and executes an interaction with IMS Connect in an IMS transaction.
 * 

* The following code sample shows how to obtain a TMInteraction instance * from a valid com.ibm.ims.connect.Connection instance (myConn), load * the initial interaction properties settings from a TMInteraction attributes file, * use the TMInteraction methods to customize the interaction, and execute * the interaction using the configured settings. *

*

*
 * // a previously configured connection object
 * Connection myConn;
 * ...
 *
 * // create a new TMInteraction instance
 * TMInteraction myTMInteraction = myConn.createInteraction();
 *
 * // load properties from file
 * myTMInteraction.loadTMInteractionAttributesFromFile("TMIntAttributes.txt");
 *
 * // customize the TMInteraction property settings
 * myTMInteraction.setImsDatastoreName("IMS1");
 *
 * myTMInteraction.setTrancode("IVTNO     ");
 *
 * // create an input byte array and set thetransaction input data
 * byte[] indata;
 *
 * indata = (new String("DISPLAY LAST1     ").getBytes(myTMInteraction.getImsConnectDataCodepage()));
 *
 * // get InputMessage instance from myTMInteraction
 * InputMessage inMsg = myTMInteraction.getInputMessage();
 *
 * // the setInputMessageSegmentsIncludeLlzzAndTrancode(boolean) method specifies if the input message will include 
 * // values for LLZZ (and trancode, if applicable).
 * inMsg.setInputMessageSegmentsIncludeLlzzAndTrancode(false);
 *
 * // populate input message data with indata byte array
 * inMsg.setInputMessageData(indata);
 *
 * // execute the transaction
 * myTMInteraction.execute();
 * 
 * // process the output
 * if ((myTMInteraction.getImsConnectReturnCode() == ApiProperties.IMS_CONNECT_RETURN_CODE_SUCCESS) && 
 *  (myTMInteraction.getImsConnectReasonCode() == ApiProperties.IMS_CONNECT_REASON_CODE_SUCCESS)) 
 * {
 *    System.out.println("\nInteraction was successful"); 
 *    
 *    // get output from myTMInteraction
 *    OutputMessage outMsg = myTMInteraction.getOutputMessage();
 *
 *    // get data from outMsg as a string
 *    String outData = outMsg.getDataAsString();
 * } else 
 * {
 *     System.out.println("\nInteraction returned a non-zero return code and/or reason code");
 * }
 * 
*
*/ public interface TmInteraction extends ApiProperties { public static final String copyright = "Licensed Material - Property of IBM " + "5655-TDA" + "(C) Copyright IBM Corp. 2009, 2013 All Rights Reserved. " + "US Government Users Restricted Rights - Use, duplication or " + "disclosure restricted by GSA ADP Schedule Contract with IBM Corp. "; /** * Executes a complete interaction with IMS Connect in an IMS transaction or executes an IMS command. * Use the execute method to execute a single interaction with IMS Connect. Based on the interaction type * specified, you can use this method to send a request to execute an IMS transaction, receive the output of an * IMS transaction, or both send the request and receive the output. The execute method handles: *
    *
  1. Creating a socket connection to be used for the interaction, *
  2. Setting up the IMS Connect header for the interaction, *
  3. Submitting the interaction request, *
  4. Receiving the interaction response, and finally *
  5. Closing the socket. *
* The execute method builds an IRM header based on the interaction properties specified in the * dynamically loaded interaction properties file, or set programmatically by the user. The method sends * the input data byte array for an IMS transaction and returns the output data (transaction response) * in the form of an output data array, and updates the interaction status of the TmInteraction * instance. *

* This version of execute is used to execute an interaction using the InputMessage * object which must be configured beforehand in the parent TmInteraction instance. * The response will be used to populate the OutputMessage object which is also a member of * the parent TmInteraction instance. * @throws Exception * @see InputMessage * @see OutputMessage */ public void execute() throws Exception; /** * Reads in interaction attributes from a interaction attributes files and configures this * TmInteraction instance. * @throws Exception * @param anInteractionAttributesFileName text file containing the interaction attributes */ public void loadTmInteractionAttributesFromFile(String anInteractionAttributesFileName) throws Exception; // Getter methods for read-only output properties /** * Gets the InputMessage instance to store the input data to send to IMS Connect. * @return the InputMessage instance * @throws ImsConnectApiException * @see InputMessage */ public InputMessage getInputMessage() throws ImsConnectApiException; /** * Get the OutputMessage instance which stores the output data received from IMS Connect. * @return the OutputMessage instance * @throws ImsConnectApiException * @see OutputMessage */ public OutputMessage getOutputMessage() throws ImsConnectApiException; /** * Gets the clientType property value. * * @return an int value containing the clientType property value */ // Response properties /** * Gets the ImsConnectReturnCode property value. * This response property specifies the IMS Connect or IMS Connect user message exit return code if * IMS Connect or the IMS Connect user message exit detected an error during processing of the current * interaction. *

See Return and reason codes" for a description of the IMS Connect return codes. * @return an int value containing the return code */ public int getImsConnectReturnCode(); /** * Gets the imsConnectReasonCode property value. *

This response property specifies the IMS Connect or IMS Connect user message exit reason code if * IMS Connect or the IMS Connect user message exit detected an error during processing of the current * interaction. *

See Return and reason codes for a description of the IMS Connect reason codes. * @return an int value containing the reason code */ public int getImsConnectReasonCode(); /** * Gets the OTMA reason code. An OTMA reason code may be returned whenever OTMA returns a * sense code value of X'1A' (decimal 26.) * @return an int value containing the otmaReasonCode * @see TmInteraction#getOtmaSenseCode() */ public int getOtmaReasonCode(); /** * Gets the OTMA sense code property value. For information about OTMA sense codes, see * the IMS Messages and Codes documentation, under the topic * "OTMA sense codes for NAK messages". * @return int value representing the OTMA sense code */ public int getOtmaSenseCode(); /** * Gets the RACF return code property value. * @return int value representing the RACF return code */ public int getRacfReturnCode(); /** * Gets a short descriptive String associated with the RACF return code. * @return String value representing the RACF return code meaning */ public String getRacfReturnCodeString(); /** * Gets the ackNakNeeded property value. *

This property indicates whether or not this response from IMS must be acknowledged or negatively * acknowledged prior to any other activity on this connection. *

If ackNakProvider was set to API_INTERNAL_ACK (the default value) in the original request message, * this property will always be set to false in the corresponding response message since the acknowledgement * of the response, if required, will have been processed internally by the IMS Connect API. The internal ACK * function is only supported for RESUMETPIPE_SINGLE and RESUMETPIPE_SINGLE_NOWAIT values for {@link #setResumeTpipeProcessing(int)} *

When ackNakProvider is set to CLIENT_ACK_NAK in the original request message, this property will * be set according to the IMS Connect protocol. Whenever this property is set to true in the response, the * client must send in an ACK or NAK interaction as the next interaction on that connection or IMS Connect * will respond with a protocol violation. *

* Use the constants defined in ApiProperties to determine the ackNakNeeded property value. * For example, *

     * if(myTmInteraction.isAckNakNeeded() == ApiProperties.ACK_NAK_NEEDED)
     * {
     *    // submit an ACK or NAK interaction as required as the next 
     *    // interaction on this connection
     * }
     * 
* @return a boolean value indicating whether or not the response from IMS must be acknowledged * or negatively acknowledged prior to any other activity on this connection * @see ApiProperties#ACK_NAK_NEEDED * @see ApiProperties#NO_ACK_NAK_NEEDED */ public boolean isAckNakNeeded(); /** *

Gets the asyncOutputAvailable property value.

*

This property specifies whether or not there are any more asynchronous output messages queued in on * the asynchronous hold queue for this client's tpipe in IMS and available for retrieval by this or another * client.

*

The value of this property is only valid in a non-shared queues environment. In a shared queues * environment, the client must issue a ResumeTpipe interaction in order to know if there is asynchronous * output available (in which case, output will be returned if there is any available).

*

* Use the constants defined in ApiProperties to determine the asyncOutputAvailable property value. * For example,

*
     * if(myTmInteraction.isAsyncOutputAvailable() == ApiProperties.ASYNC_OUTPUT_AVAILABLE)
     * {
     *    // retrieve additional asynchronous output or save a flag that you can use 
     *    // to retrieve the asynchronous output at a later time
     * }
     * 
*

For more information, see Asynchronous output support * in IMS Version 12 Communications and Connections. * @return a boolean value indicating whether or not there are any more asynchronous * output messages queued on the asynchronous hold queue for this client's tpipe in IMS and * available for retrieval by this or another client * @see ApiProperties#ASYNC_OUTPUT_AVAILABLE * @see ApiProperties#NO_ASYNC_OUTPUT_AVAILABLE */ public boolean isAsyncOutputAvailable(); /** *

Gets the inCoversation property value.

*

This response property specifies whether or not this interaction uses IMS Connect conversational transaction * support.

* Use the constants defined in ApiProperties to determine the InCoversation property value. * For example, *

     * if(myTmInteraction.isInConversation() == ApiProperties.IN_CONVERSATION)
     * {
     *    // client application needs to continue the conversation or send in 
     *    // an interaction to end the conversation.  API will not include the 
     *    // trancode in an input message for an interaction if the 
     *    // inConversation property value is true.
     * }
     * 
*

For more information, see * IMS Connect conversational support in IMS Version 12 Communications and Connections. * @return a boolean value indicating whether or not this interaction is part of a * currently active IMS conversation * @see ApiProperties#IN_CONVERSATION * @see ApiProperties#NOT_IN_CONVERSATION */ public boolean isInConversation(); /** * Gets the mfsModname name property value. The mfsModname property value is set internally * when the API client application receives an output message with a request mod message (RMM). * This property value is the name of the requested MFS MOD. * If the interaction fails, the modname is not returned. * @return the mfsModname value returned by the IMS application through IMS Connect */ public String getMfsModname(); // Getter and setter methods for user-settable properties // Interaction properties /** * Gets a boolean value indicating whether each response message does or * does not include LLLL * @return a boolean value containing whether the response messages * returned to the IMS Connect API by IMS Connect start with LLLL (true - * response messages processed using HWSSMPL1 in IMS Connect do start with * LLLL) or do not start with LLLL (false - response messages processed * using HWSSMPL0 do not start with LLLL) * @see TmInteraction#setResponseIncludesLlll(boolean) */ public boolean isResponseIncludesLlll(); /** * Sets the responseIncludesLlll property value to be used for this interaction. This property is used to tell * the API whether each response message does or does not include LLLL. This property is most useful in client * applications which use a non-IBM supplied user message exit which has a user message exit identifier other * than *SAMPLE* or *SAMPL1*, in which case, the API needs to be told whether the * user-written user message exit prepends an LLLL value to each response message. If the * imsConnectUserMessageExitIdentifier property is set to *SAMPL1*, the IBM-supplied HWSSMPL1 user * message exit will be used and response messages processed using the HWSSMPL1 t in IMS Connect do start with * an LLLL value so true is returned by this method. On the other hand, if the * imsConnectUserMessageExitIdentifier property is set to *SAMPLE*, the HWSSMPL0 user message exit * will be used and response messages processed using the HWSSMPL0 user message exit in IMS Connect do not start * include an LLLL value so false is returned by this method. * @param aResponseIncludesLlll * a boolean value indicating whether the response messages * returned to the IMS Connect API by IMS Connect do or do not start with * an LLLL value. * @see TmInteraction#isResponseIncludesLlll() */ public void setResponseIncludesLlll(boolean aResponseIncludesLlll); /** * Gets a byte value representing whether the client application code or the * internal API code will provide the acknowledgment messages to IMS Connect when required * after receiving output from IMS Connect. * @return a byte value containing whether the IMS Connect API (0) or the * client application (1) will ACK or NAK replies from IMS Connect whenever an ACK * or NAK response is required * @see TmInteraction#setAckNakProvider(byte) */ public byte getAckNakProvider(); /** * Sets the ackNakProvider property value which specifies whether the IMS Connect API or the client * application will ACK or NAK replies from IMS Connect whenever an ACK or NAK response is required. * The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • API_INTERNAL_ACK - Indicates that the API will submit ACK messages internally (API never * NAKs output as it has no criteria for determining when expected output should be NAKed rather than ACKed). If * API_INTERNAL_ACK is used, the client must not submit ACK or NAK interactions since the acknowledgement * response will already have been sent back to IMS Connect before the client application receives * back control after an execute() method call has completed. The internal ACK function is * only available when link {@link #setResumeTpipeProcessing(int)} is set to RESUMETPIPE_SINGLE_WAIT or RESUMETPIPE_SINGLE_NOWAIT. *
  • CLIENT_ACK_NAK - Indicates that the client application will submit an ACK or NAK response explicitly as * a separate interaction after a execute() method call for a send-receive, receive, or ResumeTpipe * interaction. *
  • DEFAULT_ACK_NAK_PROVIDER - same as API_INTERNAL_ACK *
* If a value for this property is not supplied by the client, the default value (API_INTERNAL_ACK) * will be used. *

Note that if API_INTERNAL_ACK is used, the IMS Connect API will internally issue a receive * interaction after sending the ACK message, but will return the return and reason codes of the send-receive, * receive, or ResumeTpipe interaction which triggered the response that the ACK is acknowledging. The * exception to this is if the ACK fails, in which case an exception containing the non-zero IMS Connect * return code and reason code for the ACK will be thrown to the client application. *

API_INTERNAL_ACK is intended for primarily for use in transactions that return a single response message. * When used with send-receive interactions for transactions which return multiple output messages, the * first output message will be returned to the client application and all subsequent messages will be * internally NAKed by the API causing them to be returned to the OTMA asynchronous output hold queue. * While this does work, it results in inefficient use of network resources and is therefore not recommended. * The preferred approach for transactions which return multiple response messages is to use CLIENT_ACK_NAK so * that the subsequent messages can be received and processed by the client application without being NAKed. * @param * anAckNakProvider value for this interaction. Use the constants defined in ApiProperties * to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#CLIENT_ACK_NAK * @see ApiProperties#API_INTERNAL_ACK * @see TmInteraction#getAckNakProvider() */ public void setAckNakProvider(byte anAckNakProvider) throws ImsConnectApiException; // Interaction properties /** * Gets the cm0IgnorePurge property value. * @return a boolean indicating if the IMS application should ignore DL/I purge calls * for multi-segment commit mode 0 response messages prior to insertion of the last * segment of the message. * * @see TmInteraction#setCm0IgnorePurge(boolean) */ public boolean isCm0IgnorePurge(); /** * Sets the cm0IgnorePurge property value for this interaction. Use this property to indicate * if the IMS application should ignore DL/I purge calls for multi-segment commit mode 0 response * messages prior to insertion of the last segment of the message. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • CM0_DO_IGNORE_PURGE - Indicate that IMS should ignore DL/I PURG calls until all segments * of a multi-segment output message have been inserted to the TP PCB *
  • CM0_DO_NOT_IGNORE_PURGE - Indicate that IMS should accept all DL/I PURG calls after a * segment is inserted to the TP PCB *
  • DEFAULT_CM0_IGNORE_PURGE - same as CM0_DO_NOT_IGNORE_PURGE *
* If a value for this property is not supplied by the client, the default value * (CM0_DO_NOT_IGNORE_PURGE) will be used. * @param acm0IgnorePurge the cm0IgnorePurge value to use for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @see ApiProperties#DEFAULT_CM0_IGNORE_PURGE * @see ApiProperties#CM0_DO_IGNORE_PURGE * @see ApiProperties#CM0_DO_NOT_IGNORE_PURGE * @see TmInteraction#isCm0IgnorePurge() * @see Output message to client in IMS V11 Communications and Connections */ public void setCm0IgnorePurge(boolean aCm0IgnorePurge); /** * Gets the cancelClientId property value. * @return a boolean indicating whether an existing connection with the same clientID will be canceled or retained for the interaction. * client ID should be canceled or not. * * @see TmInteraction#setCancelClientId(boolean) */ public boolean isCancelClientId(); /** * Sets the cancelClientId property value for this interaction. Use this property to indicate whether * an existing connection with the same clientID should be canceled or retained for the interaction. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_CANCEL_CLIENTID - Indicates that if there is another connection with the same client ID * that connection should be closed and the requesting connection should be granted.
  • *
  • DO_NOT_CANCEL_CLIENTID - Indicates that that if there is another connection * with the same client ID that connection should be kept live * and the current request denied.
  • *
  • DEFAULT_CANCEL_CLIENTID - same as DO_CANCEL_CLIENTID
  • *
*

* If a value for this property is not supplied by the client, the default value * (DO_CANCEL_CLIENTID) will be used. * @param aCancelClientID the cancelClientID value to use for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @return a boolean indicating if the IMS application should ignore DL/I purge calls * for multi-segment commit mode 0 response messages prior to insertion of the last * segment of the message. * @see TmInteraction#isCancelClientId() */ public void setCancelClientId(boolean aCancelClientID); /** * Specifies to IMS Connect whether to generate a unique client ID for the connection if a duplicate client ID already exists. * To enable this property the cancelClientId property should be set to false,else the cancel clientId gets the precedence. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_GENERATE_CLIENTID - Indicates to IMS Connect to generate the client ID for the connection.
  • *
  • DO_NOT_GENERATE_CLIENTID - Indicates to IMS Connect not to generate the client ID for the connection. *
  • *
  • DEFAULT_IMS_CONNECT_GENERATE_CLIENTID - Same as DO_NOT_GENERATE_CLIENTID.
  • *
*

* If a value for this property is not supplied by the client, the default value * (DO_NOT_GENERATE_CLIENTID) is used. * @param aGenerateValue the imsConnectGenerateClientID value to use for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @see ApiProperties#DEFAULT_IMS_CONNECT_GENERATE_CLIENTID * @see ApiProperties#DO_GENERATE_CLIENTID * @see ApiProperties#DO_NOT_GENERATE_CLIENTID * @see TmInteraction#isImsConnectGenerateClientId() */ public void setGenerateClientIdWhenDuplicate(boolean aGenerateClientIdValue); /** * Gets the imsConnectGenerateClientId property value. * @return a boolean indicating if a client ID will be generated by IMS Connect for a given duplicate client ID. * @see TmInteraction#setGenerateClientIdWhenDuplicate(boolean) */ public boolean isGenerateClientIdWhenDuplicate(); /** * Identifies if IMS Connect would generate a unique client ID for the connection when no client ID is * specified by the client, or a duplicate client ID already exists for the connection. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_RETURN_CLIENTID - Indicates to IMS Connect to return the client ID for the connection.
  • *
  • DO_NOT_RETURN_CLIENTID - Indicates to IMS Connect not to return the client ID for the connection.
  • *
  • DEFAULT_RETURN_CLIENTID - Same as DO_NOT_RETURN_CLIENTID
  • *
*

* If a value for this property is not supplied by the client, the default value * (DO_NOT_RETURN_CLIENTID) is used. * @param aReturnClientIdValue the returnClientID value to use for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @see ApiProperties#DEFAULT_RETURN_CLIENTID * @see ApiProperties#DO_RETURN_CLIENTID * @see ApiProperties#DO_NOT_RETURN_CLIENTID * @see TmInteraction#isReturnClientId() */ public void setReturnClientId(boolean aReturnClientIdValue); /** * Gets the returnClientId property value. * @return a boolean indicating if a client Id will be returned with the output * client ID should be canceled or not. * * @see TmInteraction#setReturnClientId(boolean) */ public boolean isReturnClientId(); /** * Gets the commitMode property value. * @return an byte value containing the commitMode property value * @see ApiProperties#DEFAULT_COMMIT_MODE * @see ApiProperties#COMMIT_MODE_0 * @see ApiProperties#COMMIT_MODE_1 * @see TmInteraction#setCommitMode(byte) */ public byte getCommitMode(); /** * Sets the commitMode property value to be used for this interaction. Only one value can be specified * per interaction. The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • COMMIT_MODE_0 - Commit-then-send (CM0 maps to IRM_F2 value of 0X40) *
  • COMMIT_MODE_1 - Send-then-commit (CM1 maps to IRM_F2 value of 0X20) *
  • DEFAULT_COMMIT_MODE - same as COMMIT_MODE_0 *
* COMMIT_MODE_0 is the default used if client does not provide a value. *

A value for commit mode is required by IMS Connect and OTMA. However, the value provided for commitMode * will be over-ridden internally if the type of interaction is only supported with a specific commit mode. * For example, resumeTpipe and send-only interactions are only supported for Commit Mode 0 while Two-Phase * Commit (2PC), though not supported in the initial release of the IMS Connect API, always uses Commit Mode 1. * If the commitMode property value is over-ridden internally by the API and if the traceLevel is set to * TRACE_LEVEL_INTERNAL, an informational trace message will be written to the trace output file.

*

If a value for this property is not supplied by the client and cannot be determined based on the * messageFunction value, the default value (COMMIT_MODE_0) will be used. The commit mode value is passed to * IMS Connect in the OMHDRSYN field of the OTMA header.

* @param aCommitMode byte value representing the commit mode. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#COMMIT_MODE_0 * @see ApiProperties#COMMIT_MODE_1 * @see TmInteraction#getCommitMode() */ public void setCommitMode(byte aCommitMode) throws ImsConnectApiException; /** * Gets the IMS Connect User Message Exit Identifier that specifies which User * Message Exit is to be used by IMS Connect for this interaction. * @return a String value containing the imsConnectUserMessageExit property value * @see ApiProperties#IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL0 * @see ApiProperties#IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL1 * @see TmInteraction#setImsConnectUserMessageExitIdentifier(String) */ public String getImsConnectUserMessageExitIdentifier(); /** * Sets the imsConnectUserMessageExitIdentifier property value which is used to determine which IMS Connect * user message exit is to be used for this interaction after the complete input or output message has been * received by IMS Connect. Only one value can be specified per interaction. * The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL0 - Use the HWSSMPL0 user message * exit (identifier is *SAMPLE*) *
  • IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL1 - Use the HWSSMPL1 user message * exit (identifier is *SAMPL1*) *
  • IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSCSLO1 - Use the HWSCSLO1 user message exit. Use * this exit with the Type-2 command interaction type only. *
  • DEFAULT_IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER - same as IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL1 *
  • *USRMOD* - Set this property to the name of a user exit routine module to request that IMS Connect load that module * for this interaction. The specified module must follow the same input and output message format as the HWSSMPL0 and HWSSMPL1 * user message exits. You must also request the response LLLL by using setResponseIncludesLlll(true). *
* * If a value for this property is not supplied by the client, the default value (IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL1) will be used. *

For more details on the use of this property, see the topic * "IMS Connect exit routines" * in the V13 IMS Communications and Connections documentation. * @param anIConUserMessageExitIdentifier * a String value containing the IMS Connect user message exit identifier to be used for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL0 * @see ApiProperties#IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSSMPL1 * @see ApiProperties#IMS_CONNECT_USER_MESSAGE_EXIT_IDENTIFIER_FOR_HWSCSLO1 * @see TmInteraction#getImsConnectUserMessageExitIdentifier() */ public void setImsConnectUserMessageExitIdentifier(String anIConUserMessageExitIdentifier) throws ImsConnectApiException; /** * Gets imsDatastoreName property value, which identifies the target IMS datastore for this interaction. * @return a String value containing the imsDatastoreName property value * @see TmInteraction#setImsDatastoreName(String) */ public String getImsDatastoreName(); /** * Sets the imsDatastoreName property value. * The imsDatastoreName property specifies the target IMS datastore name (a string of 1 to 8 uppercase * alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters identifying the IMS destination * ID as defined in a DATASTORE statement in the IMS Connect configuration member. The client or the IMS * Connect user message exit must provide a valid value for this property. Neither IMS Connect nor the IMS * Connect user message exit validates the imsDatastoreName value. Instead, it is copied directly into the * IRM_IMSDESTID field. The unvalidated imsDatastoreName value will also be copied by the IMS Connect user * message exit into the OMUSR_DESTID field in the OTMA header. If a datastore by that name cannot be found, * IMS Connect will return a datastore not found error (Return Code 4, Reason Code NFNDDST) to the client. * If the datastore is found but is currently closed, IMS Connect will return a datastore closed error * (Return Code 12, Reason Code DSCLOSE) to the client. * @param aDataStoreName * the IMS datastore name to be used for this interaction. * @throws ImsConnectApiException * @see TmInteraction#getImsDatastoreName() */ public void setImsDatastoreName(String aDataStoreName) throws ImsConnectApiException; /** * Gets a boolean value representing whether the data segments in the input messages include * an LLZZ (plus trancode if applicable) prefix. * @return a boolean value containing the inputMessageDataSegmentsIncludeLlzzAndTrancode * property value * @see ApiProperties#INPUT_MESSAGE_DATA_SEGMENTS_DO_NOT_INCLUDE_LLZZ_AND_TRANCODE * @see ApiProperties#INPUT_MESSAGE_DATA_SEGMENTS_DO_INCLUDE_LLZZ_AND_TRANCODE * @see TmInteraction#setInputMessageDataSegmentsIncludeLlzzAndTrancode(boolean) */ public boolean isInputMessageDataSegmentsIncludeLlzzAndTrancode(); /** * Sets the inputMessageDataSegmentsIncludeLlzzAndTrancode property value to be used for this interaction. * This property is used to tell the API whether the client application code has already included * an LLZZ value and a trancode value in the message data provided to the InputMessage object. * When the inputMessageDataSegmentsIncludeLlzzAndTrancode property is set to true, the API * will interpret the first four bytes of the provided input message data as an LLZZ value and * will not insert a trancode into the input message data byte array to be sent to IMS * Connect (on the assumption that the trancode is in the provided input message data.) *

If this property is set to false, the API uses the trancode value specified with * {@link TmInteraction#setTrancode(String)}, or the default value ("TRANCODE") if the value has not been set.

* @param anInputMessageDataSegmentsIncludeLlzzAndTrancode * a boolean value representing whether or not the data segments * in the input messages include an LLZZ prefix and a trancode if required * @see TmInteraction#isInputMessageDataSegmentsIncludeLlzzAndTrancode() */ public void setInputMessageDataSegmentsIncludeLlzzAndTrancode(boolean anInputMessageDataSegmentsIncludeLlzzAndTrancode); /** * Gets the message type. * @return an int value containing the inputMessageOptions property value * @see ApiProperties#INPUT_MESSAGE_OPTIONS_NO_OPTIONS * @see ApiProperties#INPUT_MESSAGE_OPTIONS_EBCDIC * @see TmInteraction#setInputMessageOptions(int) */ public int getInputMessageOptions(); /** * Sets the InputMessageOptions property value which specifies the characteristics of the input message * byte array supplied by the client. Multiple values, if specified, are logically OR'd together. * The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • INPUT_MESSAGE_OPTIONS_NO_OPTIONS - Hex value of 0X00. No input message options specified.
  • *
  • INPUT_MESSAGE_OPTIONS_EBCDIC - Hex value of 0X40. Input message is in EBCDIC. * No translation from ASCII to EBCDIC required in the IMS Connect user message exit.
  • *
  • DEFAULT_INPUT_MESSAGE_OPTIONS - Uses INPUT_MESSAGE_OPTIONS_NO_OPTIONS.
  • *
*

If a value for this property is not supplied by the client, * the default value (INPUT_MESSAGE_OPTIONS_NO_OPTIONS) will be used.

* @param inputMessageOptions The inputMessageOptions to set. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#INPUT_MESSAGE_OPTIONS_NO_OPTIONS * @see ApiProperties#INPUT_MESSAGE_OPTIONS_EBCDIC * @see TmInteraction#getInputMessageOptions() */ public void setInputMessageOptions(int inputMessageOptions) throws ImsConnectApiException; /** * Gets the type of interaction with IMS Connect to be performed. * @return a String value containing the InteractionTypeDescription property value * @see ApiProperties#INTERACTION_TYPE_DESC_ACK * @see ApiProperties#INTERACTION_TYPE_DESC_CANCELTIMER * @see ApiProperties#INTERACTION_TYPE_DESC_ENDCONVERSATION * @see ApiProperties#INTERACTION_TYPE_DESC_NAK * @see ApiProperties#INTERACTION_TYPE_DESC_RECEIVE * @see ApiProperties#INTERACTION_TYPE_DESC_RESUMETPIPE * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLY * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLYACK * @see ApiProperties#INTERACTION_TYPE_DESC_SENDRECV * @see TmInteraction#setInteractionTypeDescription(String) */ public String getInteractionTypeDescription(); /** * Sets the interactionTypeDescription property value which specifies the function to be performed in * IMS Connect and/or OTMA in this interaction. Only one function can be specified at a time. * The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • INTERACTION_TYPE_DESC_ACK - Positive acknowledgment (IRM_F4 = 'A'). * Must be sent to IMS Connect with no application data segment in the message. * Used to accept the IMS response to an IMS transaction request message in which the sync level was set to * CONFIRM. *
  • INTERACTION_TYPE_DESC_CANCELTIMER - Cancel wait for response from IMS (IRM_F4 = 'C'). * Must be sent to IMS Connect with no application data segment in the message. Used to cancel the current * CONN state (wait for response from IMS) on another connection which is using the same client ID as this * connection and is connected to the same port on this IMS Connect. Then IMS Connect will return that other * connection to RECV state and send a canceltimer complete message to the client and disconnect this connection. *
  • INTERACTION_TYPE_DESC_END_CONVERSATION - End conversation associated with this convID and/or * connection (IRM_F4 = 'D') *
  • INTERACTION_TYPE_DESC_NAK - Negative acknowledgment (IRM_F4 = 'N'). Must be sent to * IMS Connect with no application data segment in the message. Used to reject the IMS response to an IMS * transaction request message in which the sync level was set to CONFIRM. *
  • INTERACTION_TYPE_DESC_RECEIVE - Receive-only request to receive a single response message * from IMS. This corresponds to an internal API interaction type that causes the API to do only a receive on * the TCP/IP socket for the current interaction. It does not involve sending any type of request to IMS Connect, * so there is no IRM created and therefore, no flag setting associated with this interaction type. *
  • INTERACTION_TYPE_DESC_RESUMETPIPE - Request asynchronous output (IRM_F4 = 'R'). * Must be sent to IMS Connect with no application data segment in the message. Used to request asynchronous * output data from the OTMA Tpipe whose name is the same as the client ID for this connection. The * RESUMETPIPE must execute on a transaction socket or persistent socket using commit mode zero. *
  • INTERACTION_TYPE_DESC_SENDONLY - Send-only IMS transaction request with no response from * IMS expected to be returned (IRM_F4 = 'S'). Used to send a transaction request for a non-response mode * transaction to IMS Connect and IMS. The application data segment must contain the transaction code and input * data required for that transaction. The DFS2082 message that would normally be returned to the client if the * host application terminates without issuing an insert to the IOPCB is suppressed for SENDONLY requests. * SENDONLY requests must execute as commit mode zero. Any response resulting from a SENDONLY function will be * queued on an asynchronous hold queue associated with the tpipe used by the client application and can be retrieved * later by submitting a RESUMETPIPE messageFunction. *
  • INTERACTION_TYPE_DESC_SENDONLYACK - Send-only with acknowledgment IMS transaction * request (IRM_F4 = 'K'). Used to send a transaction request for a non-response mode transaction to IMS * Connect and IMS. The application data segment must contain the transaction code and input data required * for that transaction. The DFS2082 message that would normally be returned to the client if the host * application terminates without issuing an insert to the IOPCB is suppressed for SENDONLY requests. * SENDONLY requests must execute as commit mode zero. The INTERACTION_TYPE_SENDONLYACK function differs * from the INTERACTION_TYPE_SENDONLY function in that the client application receives an ACK response message * from OTMA for each input message successfully enqueued by IMS. All output generated by the * INTERACTION_TYPE_SENDONLYACK interaction is sent to the asynchronous hold queue. *
  • INTERACTION_TYPE_DESC_SENDONLYXCFORDEREDDELIVERY - Send-only with XCF ordered delivery IMS * transaction request (IRM_F4 = 'S', IRM_F3 = 0x10). Used to send a transaction request for a non-response mode * transaction to IMS Connect and IMS. The application data segment must contain the transaction code and input * data required for that transaction. The DFS2082 message that would normally be returned to the client if the host * application terminates without issuing an insert to the IOPCB is suppressed for SENDONLY requests. SENDONLY * requests must execute as commit mode zero. The INTERACTION_TYPE_DESC_SENDONLYXCFORDEREDDELIVERY * function is similar to the INTERACTION_TYPE_SENDONLY function except that the client application is * guaranteed that all input messages are delivered by XCF to IMS OTMA in the order in which they are received by XCF. * Note that the ordered delivery of input messages does not imply that the response messages will be returned to the * client application in that order. This is because the order of delivery of response messages is dependent not only * on the order that the input messages are received, but also on the time that it takes to process each message which * will vary due to a number of factors including the transaction execution time which varies from one transaction to * another. All output generated by the INTERACTION_TYPE_DESC_SENDONLYXCFORDEREDDELIVERY interaction is * sent to the asynchronous hold queue. *
  • INTERACTION_TYPE_DESC_SENDONLY_CALLOUT_RESPONSE - Send-only IMS synchronous callout response message. * Used to send a normal or error response to an IMS callout request. The callout correlator token in the original * callout request message (retrieved with {@link TmInteraction#getCorrelatorToken()}) must be set with * {@link TmInteraction#setCorrelatorToken(byte[])} for the response to associate the response message with the original request. * Use {@link #setCalloutResponseMessageType(String)} to specify a normal (CALLOUT_RESPONSE_MESSAGE) or error * (CALLOUT_ERROR_MESSAGE) response. For a normal response, set the callout response message data in the * {@link InputMessage} object for the interaction. For an error response, you can include a return code with * {@link TmInteraction#setNakReasonCode(short)}. *
  • INTERACTION_TYPE_DESC_SENDONLYACK_CALLOUT_RESPONSE - Send-only IMS synchronous callout response message with * acknowledgment. You can use this interaction type to return a response message or an error response. * This interaction type is the same as INTERACTION_TYPE_DESC_SENDONLY_CALLOUT_RESPONSE, but * IMS sends an ACK or NAK response to the client application after it receives the response message. You can use this * interaction type for applications where you must know whether the IMS application successfully received * the callout response message. After the {@link #execute()} method is called for the interaction, * the API issues an internal call to retrieve the ACK or NAK response from IMS. The return and reason code * associated with the ACK or NAK reply can be retrieved with the {@link #getImsConnectReturnCode()} and * {@link #getImsConnectReasonCode()} methods. If the return code and reason code are 0, the response was * a positive ACK indicating that the message was received successfully. *
  • INTERACTION_TYPE_DESC_SENDRECV - Send-Receive IMS transaction request with a response from * IMS expected to be returned IRM_F4 = ' ' (single blank character)). A blank character (0X40 for EBCDIC * messages, 0X20 for ASCII messages) is used to send SENDRECV requests for response-mode IMS transaction * requests to IMS Connect and IMS. The application data segment must contain the transaction code and input * data required for that transaction for IMS non-conversational transactions or for the first iteration of * an IMS conversational transaction. The application data segment for subsequent iterations of an IMS * conversational transaction does not contain a transaction code but rather contains the input data only. * This is the default value. *
  • INTERACTION_TYPE_DESC_TYPE2_COMMAND - Send a type-2 command to an IMS Connect with a registered * CSL OM (Common Service Layer Operations Manager) and one or more command processing clients. *
  • DEFAULT_INTERACTION_DESC_TYPE - same as INTERACTION_TYPE_DESC_SENDRECV *
* If a value for this property is not supplied by the client, the default value (INTERACTION_TYPE_DESC_SENDRECV) will be used. * @param anInterTypeDesc * type of interaction to be executed. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#INTERACTION_TYPE_DESC_ACK * @see ApiProperties#INTERACTION_TYPE_DESC_CANCELTIMER * @see ApiProperties#INTERACTION_TYPE_DESC_ENDCONVERSATION * @see ApiProperties#INTERACTION_TYPE_DESC_NAK * @see ApiProperties#INTERACTION_TYPE_DESC_RECEIVE * @see ApiProperties#INTERACTION_TYPE_DESC_RESUMETPIPE * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLY * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLYACK * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLYXCFORDEREDDELIVERY * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLY_CALLOUT_RESPONSE * @see ApiProperties#INTERACTION_TYPE_DESC_SENDONLYACK_CALLOUT_RESPONSE * @see ApiProperties#INTERACTION_TYPE_DESC_TYPE2_COMMAND * @see ApiProperties#INTERACTION_TYPE_DESC_SENDRECV * @see TmInteraction#getInteractionTypeDescription() */ public void setInteractionTypeDescription(String anInterTypeDesc) throws ImsConnectApiException; /** * Gets the LTERM override name. * @return a String value containing the ltermOverrideName property value * @see TmInteraction#setLtermOverrideName(String) */ public String getLtermOverrideName(); /** * Sets the ltermOverrideName property value to a valid MVS-style name which is a string of 1 to 8 uppercase alphanumeric * (A through Z, 0 to 9) or special (@, #, $) characters. This field can be set to a valid name or to blanks. * The ltermOverrideName is copied by the IMS Connect user message exit to the OMHDRLTM field in the OTMA header. * The specified IMS Lterm override name can also be ignored and replaced by a value dynamically or statically * determined in the IMS Connect user message exit. Neither IMS Connect nor the IMS Connect user message exit * validates the ltermOverrideName value. *

If there is a non-blank, non-null Lterm override name value after the message is processed in the IMS * Connect user exit, OTMA will place that value in the IOPCB LTERM field. If instead, the Lterm override name * value is all blanks or null, OTMA will place the IMS Connect-defined Tpipe name in the IOPCB LTERM field. * The TPIPE name is set to the CLIENT ID for commit mode 0 interactions and set to the PORT number for commit * mode 1 interactions. *

If you use the LTERM value in the IOPCB to make logic decisions, you must be careful to observe the * naming conventions of the IOPCB LTERM name. *

Note that the default value for ltermOverrideName is a string of eight blank characters, and the * ltermOverrideName property must be changed to a valid LTerm override name before use. * @param anLtermOverrideName the ltermOverrideName to set. * @throws ImsConnectApiException * @see TmInteraction#getLtermOverrideName() */ public void setLtermOverrideName(String anLtermOverrideName) throws ImsConnectApiException; /** * Gets the otmaTransactionExpiration property value. * @return a boolean value indicating whether IMS Connect will pass a transaction expiration * time to OTMA for this interaction. If this value is true, OTMA halts processing of the * transaction for this interaction if the transaction has not yet completed or IMS Connect * has not yet received the transaction response when the IMS Connect timeout expires. * @see TmInteraction#setOtmaTransactionExpiration(boolean) */ public boolean isOtmaTransactionExpiration(); /** * Sets the otmaTransactionExpiration property that controls the transaction expiration * time that OTMA uses for the current interaction. *

If the otmaTransactionExpiration property is turned on (set to true,) IMS Connect will * pass a transaction expiration time that matches the expiration time specified for its TIMEOUT value for * that interaction. OTMA then uses that value as its transaction expiration time, overriding the * transaction expiration set for that transaction in IMS. *

If the otmaTransactionExpiration property is turned off (set to false,) IMS Connect will * not pass a transaction expiration time. In this case, OTMA either uses the transaction expiration time * that was set in IMS, or disables transaction expiration if no transaction expiration time was specified * in IMS. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_NOT_EXPIRE_OTMA_TRANSACTION_ON_IMS_CONNECT_TIMEOUT: false *
  • DO_EXPIRE_OTMA_TRANSACTION_ON_IMS_CONNECT_TIMEOUT: true *
  • DEFAULT_OTMA_TRANSACTION_EXPIRATION: * Uses DO_NOT_EXPIRE_OTMA_TRANSACTION_ON_IMS_CONNECT_TIMEOUT * (false) *
* If a value for this property is not supplied by the client, the default value (SET_OTMA_TRANSACTION_EXPIRATION_OFF) will be used. *

For more details on the use of this property, see the topic * "IMS Connect transaction expiration support" * in IMS Version 12 Communications and Connections. * @param otmaTransactionExpiration * the otmaTransactionExpiration to set. Use the constants defined in ApiProperties to specify this parameter. * @see ApiProperties#DO_EXPIRE_OTMA_TRANSACTION_ON_IMS_CONNECT_TIMEOUT * @see ApiProperties#DO_NOT_EXPIRE_OTMA_TRANSACTION_ON_IMS_CONNECT_TIMEOUT * @see ApiProperties#DEFAULT_OTMA_TRANSACTION_EXPIRATION * @see TmInteraction#isOtmaTransactionExpiration() */ public void setOtmaTransactionExpiration(boolean otmaTransactionExpiration); /** * Gets a boolean value representing whether or not the target IMS Connect supports * returning the IMS Connect protocol level in the CSM. This value is determined internally by the API * based on information in the previous response from IMS Connect received by the API. If * isProtocolLevelAvailable() returns a value of true when preparing to issue an ACK of a CM0 * SendReceive response, the getProtocolLevel() method can be used to determine if the target IMS * Connect supports CM0 ACK NO WAIT. * @return the protocolLevelAvailable boolean value * @see ApiProperties#PROTOCOL_LEVEL_BASE (CM0_ACK_NOWAIT not supported) * @see ApiProperties#PROTOCOL_LEVEL_CM0_ACK_NOWAIT_SUPPORT * @see TmInteraction#getProtocolLevel() */ public boolean isProtocolLevelAvailable(); /** * Gets a byte value representing the protocol level of the target IMS Connect which * indicates whether or not the target IMS Connect supports CM0 ACK NO WAIT. This value is determined * internally by the API based on information in the previous response from IMS Connect received by the * API. If getProtocolLevel() returns a value of ApiProperties#PROTOCOL_LEVEL_CM0_ACK_NOWAIT_SUPPORT * when preparing to issue an ACK of a CM0 SendReceive response, the API will be able to use its CM0 * ACK NO WAIT processing when sending in an ACK to a CM0 SendReceive response. Otherwise, the API * will not use its CM0 ACK NO WAIT processing when sending in an ACK to a CM0 SendReceive response. * @return the protocolLevelAvailable byte value * @see ApiProperties#PROTOCOL_LEVEL_BASE (CM0_ACK_NOWAIT not supported) * @see ApiProperties#PROTOCOL_LEVEL_CM0_ACK_NOWAIT_SUPPORT * @see TmInteraction#isProtocolLevelAvailable() */ public byte getProtocolLevel(); /** * Gets a boolean value representing whether or not the API should wait for a timeout response * after an ACK of a CM0 response if the target IMS Connect supports CM0 ACK No Wait. * @return a boolean value containing the useCM0AckNoWait property value * @see ApiProperties#DO_USE_CM0_ACK_NOWAIT * @see ApiProperties#DO_NOT_USE_CM0_ACK_NOWAIT * @see ApiProperties#DEFAULT_USE_CM0_ACK_NOWAIT * @see TmInteraction#setUseCM0AckNoWait(boolean) * @return the useCM0AckNoWait value */ public boolean isUseCM0AckNoWait(); /** * Sets the useCM0AckNoWait property that controls whether or not user wants the API to wait for a timeout * response after an ACK of a CM0 (Commit Mode 0) response. This property is used to shield the API user * from the need to understand the details for using IMS Connect's CM0 ACK (and NAK) No Wait protocol. *

If the useCM0AckNoWait property is turned on (set to true) and IMS Connect has indicated * in a CSM for the response that you are acknowledging that it supports CM0 ACK No Wait, the API will set * the appropriate values in the IRM to tell IMS Connect that it is executing a CM0 ACK No Wait and therefore * will not be waiting for a timeout response after sending in the ACK. *

If the useCM0AcNakNoWait property is turned off (set to false) the API will not override the * the "normal" IRM values with the values needed for a CM0 Ack No Wait message and will do a receive for the * timeout response from IMS Connect after sending in the ACK. *

The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_USE_CM0_ACK_NOWAIT (true) *
  • DO_NOT_USE_CM0_ACK_NOWAIT (false) *
  • DEFAULT_USE_CM0_ACK_NOWAIT - same as DO_NOTUSE_CM0_ACK_NOWAIT (true) *
* If a value for this property is not supplied by the client, the default value (DO_USE_CM0_ACK_NOWAIT) * will be used. *

For more details on the use of this property, see the * "IMS Connect protocol level" * topic in IBM Knowledge Center. * @see ApiProperties#DO_USE_CM0_ACK_NOWAIT * @see ApiProperties#DO_NOT_USE_CM0_ACK_NOWAIT * @see ApiProperties#DEFAULT_USE_CM0_ACK_NOWAIT * @see TmInteraction#isUseCM0AckNoWait() * @param aUseCM0AckNoWait value to set */ public void setUseCM0AckNoWait(boolean aUseCM0AckNoWait); /** * Gets a boolean value representing whether or not the API should request that IMS Connect * return a response message containing a DFS2082 instead of a timeout error response when a CM0 SendReceive * interaction times out in IMS Connect. * @return a boolean value containing the returnDFS2082AfterCM0SendRecvNoResponse property value * @see ApiProperties#DO_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see ApiProperties#DO_NOT_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see ApiProperties#DEFAULT_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see TmInteraction#setReturnDFS2082AfterCM0SendRecvNoResponse(boolean) */ public boolean isReturnDFS2082AfterCM0SendRecvNoResponse(); /** * Sets the returnDFS2082AfterCM0SendRecvNoResponse property value with a boolean value * representing whether or not the API should request that IMS Connect return a response message * containing a DFS2082 instead of a timeout error response when a CM0 SendReceive interaction * times out in IMS Connect. * @param aReturnDFS2082AfterCM0SendRecvNoResponse the returnDFS2082AfterCM0SendRecvNoResponse to set * @see ApiProperties#DO_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see ApiProperties#DO_NOT_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see ApiProperties#DEFAULT_RETURN_DFS2082_AFTER_CM0_SENDRECV_NO_RESPONSE * @see TmInteraction#isReturnDFS2082AfterCM0SendRecvNoResponse() */ public void setReturnDFS2082AfterCM0SendRecvNoResponse(boolean aReturnDFS2082AfterCM0SendRecvNoResponse); /** * Gets a boolean value representing whether or not IMS Connect should pass back to the client * the MOD name returned by the IMS application. * @return a boolean value containing the returnMfsModname property value * @see ApiProperties#DO_RETURN_MFS_MODNAME * @see ApiProperties#DO_NOT_RETURN_MFS_MODNAME * @see TmInteraction#setReturnMfsModname(boolean) */ public boolean isReturnMfsModname(); /** * Sets the returnMfsModname property value which specifies if the MFS MOD name is to be returned to the * client by OTMA and IMS Connect. This value determines if an RMM (Request Mod Message) segment is built by IMS * Connect and returned to the client as part of the response message. Only one value can be specified per interaction. * The valid values, for which the following constants are defined in ApiProperties, are: *

    *
  • DO_NOT_RETURN_MFS_MODNAME - Boolean value false. User requests no MFS MOD name to be * returned (maps to IRM_F1 value of 0X00). *
  • DO_RETURN_MFS_MODNAME - Boolean value true. User requests MFS MOD name to be returned * (maps to IRM_F1 value of 0X80) *
  • DEFAULT_RETURN_MFS_MODNAME - same as DO_NOT_RETURN_MFS_MODNAME *
* If a value for this property is not supplied by the client, the default value (DO_NOT_RETURN_MFS_MODNAME) will be used. * @param aRreturnMfsModname to set. Use the constants defined in ApiProperties to specify this parameter. * @see ApiProperties#DO_NOT_RETURN_MFS_MODNAME * @see ApiProperties#DO_RETURN_MFS_MODNAME * @see TmInteraction#isReturnMfsModname() */ public void setReturnMfsModname(boolean aRreturnMfsModname); /** * Gets the sync level. * @return a byte value containing the syncLevel property value * @see ApiProperties#SYNC_LEVEL_CONFIRM * @see ApiProperties#SYNC_LEVEL_NONE * @see TmInteraction#setSyncLevel(byte) */ public byte getSyncLevel(); /** * Sets the syncLevel property value which specifies the synch level to be used for this interaction. * Only one value can be specified. * The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • SYNC_LEVEL_NONE - Maps to IRM_F3 byte value of 0X00. If a transaction is specified with * SYNC_LEVEL_NONE, no acknowledgement is required from the client. *
  • SYNC_LEVEL_CONFIRM - Maps to IRM_F3 byte value of 0X01. If a transaction is specified with * SYNC_LEVEL_CONFIRM, the client is required to send an acknowledgement to signal to IMS Connect whether or not * the output message was successfully (ACK) or unsuccessfully (NAK) processed by the client. *
  • DEFAULT_SYNC_LEVEL - SYNC_LEVEL_CONFIRM *
* If a value for this property is not supplied by the client, the default value (SYNC_LEVEL_CONFIRM) will be used. *

A value for synch level is required by IMS Connect and OTMA. However, the value provided for synch level * will be over-ridden internally if the commit mode or type of the interaction is only supported with a * specific synch level. For example, for Commit Mode 0 interactions, syncLevel must be set to CONFIRM. For * Commit Mode 1 interactions, synch level can be set to NONE or CONFIRM. If a value for synch level is not * supplied by the client and cannot be determined based on the messageFunction and commitMode values, the * default value (SYNC_LEVEL_CONFIRM) will be used. If the syncLevel property value is over-ridden * internally by the API and if the traceLevel is set to TRACE_LEVEL_INTERNAL, an informational trace * message will be written to the trace output file. *

For more details on the synch level property, see the topic * "Commit mode and synch level definitions" in the V11 Communications and Connections guide documentation. * @param aLevel * a byte value representing the syncLevel. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#SYNC_LEVEL_CONFIRM * @see ApiProperties#SYNC_LEVEL_NONE * @see TmInteraction#getSyncLevel() */ public void setSyncLevel(byte aLevel) throws ImsConnectApiException; /** * Gets the IMS transaction code (trancode). * @return a String value containing the trancode property value * @see TmInteraction#setTrancode(String) */ public String getTrancode(); /** * Sets the trancode property value. The trancode property specifies the IMS transaction code which is a * string of uppercase alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters. The trancode * property identifies the IMS application (transaction) to be executed. This trancode property is used by * the API to set the trancode in the data in situations where the client application has provided an input * data byte array that is not prefixed with LLZZ and the trancode. The first 8 characters of the trancode * property are also used internally by IMS Connect and OTMA to identify the trancode of the target IMS * application. *

If the trancode property value is in EBCDIC and contains invalid characters (i.e. characters * other than those listed above), an invalid trancode error will be returned to the client from OTMA. * If the trancode property value is in ASCII and contains invalid characters, an invalid trancode error * will be returned to the client by IMS Connect. If the trancode value is valid but cannot be found by IMS, * a trancode not found error will be returned to the client from IMS. The trancode value is placed in the * IRM_TRNCOD field in the IRM. *

The trancode must be formatted in the same format required by IMS Connect and the IMS * transaction. For example, if the trancode is always followed by 5 blanks before the LLZZ for the first * data segment starts, the trancode field must be set to a value that includes those 5 extra bytes. In the * case of the IMS Sample/IVP IVTNO program, the trancode would be set to one of the valid trancodes such as * IVTNO followed by 5 bytes of spaces. *

Note that the DEFAULT_TRANCODE has the String value "TRANCODE", and the trancode property must be * changed to a trancode that is defined in the target IMS system before use. * @param aTrancode * the trancode to be used for this interaction. * @throws ImsConnectApiException * @see TmInteraction#getTrancode() */ public void setTrancode(String aTrancode) throws ImsConnectApiException; // Message encoding properties /** * Gets the IMS Connect codepage property value for messages sent to and received from IMS * Connect. Used for conversion between the client codepage and the IMS Connect codepage * for this interaction. * @return a String value containing the imsConnectCodepage property value * @see TmInteraction#setImsConnectCodepage(String) */ public String getImsConnectCodepage(); /** * Sets the imsConnectCodepage property value which specifies the codepage for messages * from IMS Connect. *

This property is used internally by the API to determine what codepage is used for * conversion of messages passed back and forth between the client and IMS Connect. * Examples of valid values are: *

    *
  • "037" - EBCDIC code page 037 for Australia, Brazil, Canada, New Zealand, * Portugal, South Africa and USA *
  • "1047" - EBCDIC code page 1047 for Open Systems (MVS C compiler) *
  • "1252" - ASCII code page 1252 for Windows Latin-1 (Western Europe) (SAP * Codepage 1100, ISO-8859-1) (English, French, German, Danish, Norwegian, Finnish, Swedish, * Italian, Spanish, Icelandic and Dutch) *
* The DEFAULT_IMS_CONNECT_CODEPAGE has the value "037". * @param aCodepage * codepage to be used for conversion from the client codepage to the IMS Connect * codepage for input request messages and vice versa for the output response * messages for this interaction - used internally by the API * @see TmInteraction#getImsConnectCodepage() */ public void setImsConnectCodepage(String aCodepage); //throws ImsConnectApiException; // Timeout properties /** * Gets the imsConnectTimeout property value. * @return an int value containing the IMS Connect timeout property value * @see TmInteraction#setImsConnectTimeout(int) */ public int getImsConnectTimeout(); /** * Sets the imsConnectTimeout property value. * The imsConnectTimeout property specifies the time that IMS Connect will * wait to receive a response from IMS to be returned to the client. This property is * specified by the client on any input and updated by IMS Connect in the reply to the * client with the actual IRM_TIMER value used for that interaction. The default value is * IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_DEFAULT_VALUE (timeout determined by IMS Connect based on its defaults or configured TIMEOUT value). *

The following request types use the imsConnectTimeout to set the IMS Connect response timeout: *

    *
  • RESUME TPIPE *
  • ACK or NAK *
  • IMS transaction or IMS Command (both include data) *
*

* For more details on the use of this property, see the topic * * "Timeout intervals on input messages" * in the V11 IMS Communications and Connections guide documentation. *

* The valid values are: *

    *
  • IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_DEFAULT_VALUE - Use the IMS Connect TIMEOUT value as follows: *
      *
    • Use 0.25 second wait for ResumeTpipe non-single ACK/NAK calls *
    • Use 2 seconds for all RESUME_TPIPE calls *
    • Use IMS Connect's configured TIMEOUT value (or the default value if a TIMEOUT value * has not been configured) for IMS transactions or IMS commands *
    *
  • IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_NOWAIT_VALUE - Use the IMS Connect-defined NOWAIT value as follows: *
      *
    • 2 second delay for: *
        *
      • RESUME_TPIPE request *
      • conversational iteration (with or without trancode) *
      • ACK or NAK associated with a conversational transaction *
      • non-conversational transaction *
      *
    • *
    • 0.25 second delay for: *
        *
      • ACK or NAK associated with a non-conversational Commit Mode 1, Sync level confirm transaction *
      • ACK or NAK associated with a RESUMETPIPE_AUTO or RESUMETPIPE_NOAUTO *
      • ACK or NAK associated with non-conversational Commit Mode 0, Sync Level Confirm transaction *
      *
    • *
    • 0 second delay for: *
        *
      • SENDONLY *
      • ACK or NAK associated with RESUMETPIPE_SINGLE_WAIT or RESUMETPIPE_SINGLE_NOWAIT *
      *
    • *
    *
  • TIMEOUT_WAIT_FOREVER - For the imsConnectTimeout property, this constant sets an IRM_TIMER value of X'FF'. *
  • Specific time value between 10 milliseconds and 60 minutes (see following table for actual values used): * * * * * * * * * * * * * * * * * * * * * *
    Value specifiedResulting IRM_TIMER value
    0x01 - 0x19 10 - 250 milliseconds in 10 milliseconds increments
    0x1A - 0x27300 - 950 milliseconds in 50 milliseconds increments
    0x28 - 0x631 - 30 seconds in 1 second increments
    0x64 - 0x9E 1 - 60 minutes in 1 minute increments
    *
  • DEFAULT_IMS_CONNECT_TIMEOUT - same as IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_DEFAULT_VALUE *
* @param anImsConnectTimeout * the imsConnectTimeout value to be used for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#DEFAULT_IMS_CONNECT_TIMEOUT * @see ApiProperties#TIMEOUT_10_MILLISECONDS * @see ApiProperties#TIMEOUT_20_MILLISECONDS * @see ApiProperties#TIMEOUT_50_MILLISECONDS * @see ApiProperties#TIMEOUT_100_MILLISECONDS * @see ApiProperties#TIMEOUT_500_MILLISECONDS * @see ApiProperties#TIMEOUT_1_SECOND * @see ApiProperties#TIMEOUT_2_SECONDS * @see ApiProperties#TIMEOUT_5_SECONDS * @see ApiProperties#TIMEOUT_10_SECONDS * @see ApiProperties#TIMEOUT_30_SECONDS * @see ApiProperties#TIMEOUT_45_SECONDS * @see ApiProperties#TIMEOUT_1_MINUTE * @see ApiProperties#TIMEOUT_2_MINUTES * @see ApiProperties#TIMEOUT_5_MINUTES * @see ApiProperties#TIMEOUT_15_MINUTES * @see ApiProperties#TIMEOUT_10_MINUTES * @see ApiProperties#TIMEOUT_30_MINUTES * @see ApiProperties#TIMEOUT_45_MINUTES * @see ApiProperties#TIMEOUT_1_HOUR * @see ApiProperties#IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_DEFAULT_VALUE * @see ApiProperties#IMS_CONNECT_TIMEOUT_USE_IMS_CONNECT_NOWAIT_VALUE * @see ApiProperties#TIMEOUT_WAIT_FOREVER * @see TmInteraction#getImsConnectTimeout() */ public void setImsConnectTimeout(int anImsConnectTimeout) throws ImsConnectApiException; /** * Gets the interaction timeout. * @return an int value containing the interactionTimeout property value * @see TmInteraction#setInteractionTimeout(int) */ public int getInteractionTimeout(); /** *

* Sets the interactionTimeout property value. * The interactionTimeout property specifies the time that the IMS Connect API will * wait to receive a response from IMS Connect to be returned to the client. This property * is specified by the client on any input.

*

Note that the interactionTimeout value should always be set to a larger value than * the imsConnectTimeout value. Otherwise, the interactionTimeout will mask the * imsConnectTimeout meaning that the interactionTimeout would be triggered in situations * where the problem should have caused the imsConnectTimeout to be triggered.

*

Constants are provided in ApiProperties for specifying the interactionTimeout value. * The constant INTERACTION_TIMEOUT_MAX represents 2,147,483,647 msec or approximately 3.5 weeks. * If a value for this property is not supplied by the client, the default value * (INTERACTION_TIMEOUT_WAIT_FOREVER) will be used.

* @param interactionTimeout * the interactionTimeout to be used for this interaction. * Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#DEFAULT_INTERACTION_TIMEOUT * @see ApiProperties#TIMEOUT_1_MILLISECOND * @see ApiProperties#TIMEOUT_2_MILLISECONDS * @see ApiProperties#TIMEOUT_5_MILLISECONDS * @see ApiProperties#TIMEOUT_10_MILLISECONDS * @see ApiProperties#TIMEOUT_20_MILLISECONDS * @see ApiProperties#TIMEOUT_50_MILLISECONDS * @see ApiProperties#TIMEOUT_100_MILLISECONDS * @see ApiProperties#TIMEOUT_200_MILLISECONDS * @see ApiProperties#TIMEOUT_500_MILLISECONDS * @see ApiProperties#TIMEOUT_1_SECOND * @see ApiProperties#TIMEOUT_2_SECONDS * @see ApiProperties#TIMEOUT_5_SECONDS * @see ApiProperties#TIMEOUT_10_SECONDS * @see ApiProperties#TIMEOUT_30_SECONDS * @see ApiProperties#TIMEOUT_45_SECONDS * @see ApiProperties#TIMEOUT_1_MINUTE * @see ApiProperties#TIMEOUT_2_MINUTES * @see ApiProperties#TIMEOUT_5_MINUTES * @see ApiProperties#TIMEOUT_10_MINUTES * @see ApiProperties#TIMEOUT_30_MINUTES * @see ApiProperties#TIMEOUT_45_MINUTES * @see ApiProperties#TIMEOUT_1_HOUR * @see ApiProperties#TIMEOUT_2_HOURS * @see ApiProperties#TIMEOUT_4_HOURS * @see ApiProperties#TIMEOUT_8_HOURS * @see ApiProperties#TIMEOUT_12_HOURS * @see ApiProperties#TIMEOUT_1_DAY * @see ApiProperties#TIMEOUT_2_DAYS * @see ApiProperties#TIMEOUT_5_DAYS * @see ApiProperties#TIMEOUT_1_WEEK * @see ApiProperties#TIMEOUT_2_WEEKS * @see ApiProperties#INTERACTION_TIMEOUT_MAX * @see ApiProperties#TIMEOUT_WAIT_FOREVER * @see TmInteraction#getInteractionTimeout() */ public void setInteractionTimeout(int interactionTimeout) throws ImsConnectApiException; // Message routing properties /** * Gets a boolean value representing whether undeliverable output will be purged. * @return a boolean value containing the purgeUndeliverableOutput property value * @see TmInteraction#setPurgeUndeliverableOutput(boolean) */ public boolean isPurgeUndeliverableOutput(); /** * Sets the purgeUndeliverableOutput property value. The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • PURGE_UNDELIVERABLE_OUTPUT - Boolean value true. Discard undeliverable primary and/or * secondary commit mode 0 output (maps to IRM_F3_PURGE value of 0X04). Tells IMS Connect and OTMA to discard * undeliverable primary and/or secondary commit mode 0 output resulting from a transaction. *
  • DO_NOT_PURGE_UNDELIVERABLE_OUTPUT - Boolean value false. Requeue undeliverable primary * and/or secondary commit mode 0 output (no bits set in IRM_F3). Tells IMS Connect and OTMA to requeue * undeliverable primary and/or secondary commit mode 0 output resulting from a transaction. Causes undelivered * output indicator to not be returned to IMS Connect from the user message exit. *
  • DEFAULT_PURGE_UNDELIVERABLE_OUTPUT - same as DO_NOT_PURGE_UNDELIVERABLE_OUTPUT *
* If a value for this property is not supplied by the client, the default value (DO_NOT_PURGE_UNDELIVERABLE_OUTPUT) will be used. * If you specify true values for both purgeUndeliverableOutput and rerouteUndeliveredOutput at the same time, * undeliverable primary and/or secondary commit mode 0 output resulting from a transaction is neither purged * nor rerouted. In this case, OTMA stores the output onto the asynchronous message hold queue of the inputting * Tpipe (clientID Tpipe) and issues a DFS2407W warning message. * For more details on the purge undeliverable property, see the topic * "Purging undeliverable commit-then-send output" in the V13 Communications and Connections guide documentation. * @param aPurgeUndeliverableOutput the rerouteUndeliverableOutput to set. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#PURGE_UNDELIVERABLE_OUTPUT * @see ApiProperties#DO_NOT_PURGE_UNDELIVERABLE_OUTPUT * @see TmInteraction#isPurgeUndeliverableOutput() */ public void setPurgeUndeliverableOutput (boolean aPurgeUndeliverableOutput) throws ImsConnectApiException; /** * Gets a boolean value representing whether undeliverable output will be rerouted to a * different asynchronous hold queue. * @return a boolean value containing the rerouteUndeliverableOutput * property value * @see TmInteraction#setRerouteUndeliverableOutput(boolean) */ public boolean isRerouteUndeliverableOutput(); /** * Sets the rerouteUndeliverableOutput property value. * The valid values, for which the following constants are defined in ApiProperties, are: *
    *
  • REROUTE_UNDELIVERABLE_OUTPUT - Boolean value true. Save undeliverable primary and/or * secondary commit mode 0 output on the OTMA asynchronous hold queue corresponding to the configured * reroute name (maps to IRM_F3_REROUT value of 0X08). *
  • DO_NOT_REROUTE_UNDELIVERABLE_OUTPUT - Boolean value false. Save undeliverable * primary and/or secondary commit mode 0 output on the OTMA asynchronous message hold queue of the * inputting Tpipe (clientID Tpipe) (no bits set in IRM_F3). Causes the reroute undelivered output indicator * to not be returned to IMS Connect from the user message exit and, if the purgeUndeliverableOutput value is * also false, causes the undelivered output to be stored on the OTMA asynchronous message hold queue of the * inputting Tpipe (clientID Tpipe). *
  • DEFAULT_REROUTE_UNDELIVERABLE_OUTPUT - same as DO_NOT_REROUTE_UNDELIVERABLE_OUTPUT *
* If a value for this property is not supplied by the client, the default value (DO_NOT_REROUTE_UNDELIVERABLE_OUTPUT) will be used. * If the rerouteUndeliverableOutput property is set to true, providing a value for the rerouteName property is * optional. The reroute function applies only to Send-Recv, Send-Only and Send-Only-with-Acknowledgement * interactions. If you specify both purgeUndeliverableOutput and rerouteUndeliverableOutput at the same time, * undeliverable primary and/or secondary commit mode 0 output resulting from a transaction is neither purged * nor rerouted. In this case, OTMA stores the output onto the asynchronous message hold queue of the inputting * Tpipe (clientID Tpipe) and issues a DFS2407W warning message. *

For more details on rerouting output, see the topic * "Rerouting commit-then-send output" in the V11 Communications and Connections guide documentation. * @param aRerouteUndeliverableOutput the rerouteUndeliverableOutput to set. * Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#REROUTE_UNDELIVERABLE_OUTPUT * @see ApiProperties#DO_NOT_REROUTE_UNDELIVERABLE_OUTPUT * @see TmInteraction#isRerouteUndeliverableOutput() */ public void setRerouteUndeliverableOutput(boolean aRerouteUndeliverableOutput) throws ImsConnectApiException; /** * Gets the reroute name property value. * @return a String value containing the rerouteName property * @see TmInteraction#setRerouteName(String) */ public String getRerouteName(); /** * Sets the rerouteName property value which specifies the optional name of a reroute destination * (an OTMA Tpipe asynchronous hold queue). The rerouteName property is a string of 1 to 8 uppercase * alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters. * The value of the rerouteName property is validated in IMS Connect by converting all invalid characters * to blanks and then truncating the resulting rerouteName value at the leftmost blank character. As a result, * OTMA will always be passed a valid rerouteName to use (though not the intended rerouteName if the rerouteName * value specified is prefixed with or contains imbedded invalid characters or blanks). *

A value of all blanks in the resulting rerouteName value will cause the default reroute name defined in * IMS Connect, which is always validated during IMS Connect initialization, to be used as the reroute name * by IMS Connect. If the validation results in a non-blank rerouteName value, that value will be used as the * destination Tpipe name for all undeliverable Commit Mode 0 output in a SENDRECV, SENDONLY or SENDONLYACK * function interaction. Unless the IMS Connect user message exit or another user exit has been modified to * do otherwise, the rerouteName value is copied to the OMUSR_REROUT_NM field in the OTMA header by the IMS * Connect user message exit. *

The rerouteName and resumeTpipe_AlternateClientId values are mapped to the same offset in the IRM as * well as the OTMA header. As a result, they are mutually exclusive; that is, both cannot be used in the same request * message. The IMS Connect API will determine which value to use based on the function specified in the request. * If the function specified is a RESUMETPIPE, the rerouteName value will be ignored and the * resumeTpipeAlternateClientId value will be used by the API. Otherwise, the resumeTpipeAlternateClientId * value will be ignored and the rerouteName value will be used by the API. *

If the reroute function is to be used successfully, the following steps must be completed: *

    *
  1. The architectureLevel property must be set to 0X01 (Reroute support included) or higher. This is done * internally by the API since the API always sets the architectureLevel property value to 0x02. *
  2. The purgeUndeliveredOutput property must be set to false and the rerouteUndeliveredOutput * property must be set to true. *
  3. A valid value (or blanks if you have configured your application to use IMS Connect reroute name value) * must be provided for the rerouteName property. * * Note that DEFAULT_REROUTE_NAME has the String value of eight blank characters and the rerouteName property has to * be set during runtime to the name of the reroute queue on which you want OTMA to place undeliverable * response messages. *

    For more details on rerouting output, see the topic * "Rerouting commit-then-send output" in the V11 Communications and Connections guide documentation. * @param rerouteName * the rerouteName to be used for this interaction. * @throws ImsConnectApiException * @see ApiProperties#REROUTE_NAME_IMS_CONNECT_DEAD_LETTER_QUEUE * @see ApiProperties#REROUTE_NAME_NONE * @see TmInteraction#getRerouteName() */ public void setRerouteName(String rerouteName) throws ImsConnectApiException; /** * Gets the name of an alternate clientId (whose value is the name of an asynchronous * hold queue) from which output will be retrieved for a resumeTpipe interaction. * @return a String value containing the resumeTpipeAlternateClientId * property value * @see TmInteraction#setResumeTpipeAlternateClientId(String) */ public String getResumeTpipeAlternateClientId(); /** * Sets the resumeTpipeAlternateClientId property value which specifies the optional name of a reroute * destination (an OTMA Tpipe asynchronous hold queue). The resumeTpipeAlternateClientId property is a * string of 1 to 8 uppercase alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters. *

    The value of the resumeTpipeAlternateClientId property is validated in IMS Connect by converting * all invalid characters to blanks and then truncating the resulting resumeTpipeAlternateClientId * value at the leftmost blank character. As a result, OTMA will always be passed a valid alternate client * ID to use (though not the intended rerouteName if the rtAltClientID value specified is prefixed with * or contains imbedded invalid characters or blanks). *

    A value of all blanks in the resulting resumeTpipeAlternateClientId value will cause the * RESUMETPIPE interaction to be processed as a normal RESUMETPIPE function in which the output is * retrieved from the Tpipe associated with the clientID of the connection on which the RESUMETPIPE * request is received. If the validation results in a non-blank resumeTpipeAlternateClientId value, * that value will be used as the as name of the Tpipe from which one or more asynchronous output messages * are retrieved for RESUMETPIPE requests. Unless the IMS Connect user message exit or another user exit has * been modified to do otherwise, the validated resumeTpipeAlternateClientId value is copied to the * OMUSR_REROUT_NM field in the OTMA header by the IMS Connect user message exit. * @param aResumeTpipeAlternateClientId * the alternate client ID to set. * @throws ImsConnectApiException * @see TmInteraction#getResumeTpipeAlternateClientId() */ public void setResumeTpipeAlternateClientId(String aResumeTpipeAlternateClientId) throws ImsConnectApiException; /** * Gets an int value representing the type of resumeTpipe processing * (single-no wait, single-wait, auto, or no-auto) to be performed for a resumeTpipe * interaction. * @return an int value containing the resumeTpipeProcessing property value * @see TmInteraction#setResumeTpipeProcessing(int) */ public int getResumeTpipeProcessing(); /** *

    * Sets the resumeTpipeProcessing property value which specifies the type of processing to be used for * a resumeTpipe request. All of the SINGLE and AUTO values are mutually exclusive. The appropriate value * must be specified by the client on input and will be maintained in the message until the interaction * has completed. All RESUMETIPE interactions are used to retrieve output response messages from an OTMA * asynchronous message hold queue. The hold queue from which messages are retrieved is one of the following: *

    *
      *
    • If a resumeTpipeAlternateClientID value has not been specified for this interaction, the hold queue is * the Tpipe with the name of the clientID value for the current RESUMETPIPE interaction.
    • *
    • If a resumeTpipeAlternateClientID value has been specified, the hold queue is the Tpipe with the name * matches the resumeTpipeAlternateClientID value for the current RESUMETPIPE interaction.
    • *
    *

    Only one value can be specified per interaction.

    *

    The valid values, for which the following constants are defined in {@link ApiProperties}, are:

    *
      *
    • RESUMETPIPE_SINGLE_NOWAIT - Retrieves at most one response message per RESUMETPIPE_SINGLE_NOWAIT request. * If no message is present when the current RESUMETPIPE_SINGLE_NOWAIT interaction is received by OTMA from IMS * Connect, IMS Connect will return a timeout error to the client as soon as the IMS Connect response timer * (set according to the imsConnectResponseTimeout value in use for that interaction) has expired. * If there was no response message already available when OTMA received the RESUMETPIPE_SINGLE_NOWAIT request, * any output received by OTMA after time (but before a subsequent RESUMETPIPE request has been received by OTMA) * will be moved immediately to its asynchronous message hold queue by OTMA. Set the imsConnectResponseTimeout * to a smaller value to reduce the amount of time wasted waiting for the IMS Connect response timer to expire * when there is no message available to be retrieved at the time the RESUMETPIPE request is processed by OTMA. *
    • *
    • RESUMETPIPE_AUTO - Retrieves all available messages, one at a time. It is recommended that * the RESUMETPIPE_AUTO option be used only if the client is a dedicated output client and the ackNakProvider property is set to CLIENT_ACK_NAK. Set the imsConnectResponseTimeout to a larger value * to increase the probability of retrieving all expected response messages in a single RESUMETIPE interaction. * Each ACK sent by the client resets the IMS Connect response timer controlled by the * imsConnectResponseTimeout value. The IMS Connect response timer value used by the RESUMETPIPE_AUTO * interaction applies only to the first receive state. OTMA will continue to return output messages that * it gets from IMS after the time the RESUMETPIPE_AUTO request is received by OTMA until both of the * following conditions are true:
        *
      • no more output is available, and *
      • the IMS Connect response timer has expired in IMS Connect
      *
    • *
    • RESUMETPIPE_NOAUTO - Retrieves all messages available at the time the RESUMETPIPE_NOAUTO * request is received by OTMA, one at a time. It is recommended that the RESUMETPIPE_NOAUTO option be used only if the client is a dedicated * output client and the ackNakProvider property is set to CLIENT_ACK_NAK. Set the imsConnectResponseTimeout to a smaller value in order to reduce the amount of wait * time after the last message has been returned. Each ACK sent by the client resets the * imsConnectResponseTimeout value. The IMS Connect response timer value used by the RESUMETPIPE_NOAUTO * interaction applies only to the first receive state. A RESUMETPIPE_NOAUTO interaction differs from a * RESUMETPIPE_AUTO interaction in that, for _NOAUTO, OTMA will only return output messages that are already * available on the hold queue at the time the RESUMETPIPE_NOAUTO request is received by OTMA. Any output * received after the request is received by OTMA will not be returned to the client until a subsequent * RESUMETPIPE call is made. *
    • *
    • RESUMETPIPE_SINGLE_WAIT - Retrieves at most one response message per * RESUMETPIPE_SINGLE_WAIT request. If no message is present when the current RESUMETPIPE_SINGLE_WAIT * interaction is received by IMS Connect, IMS Connect will continue to wait for a response message to be * returned by OTMA or for the IMS Connect response timer (set according to the imsConnectResponseTimeout * value for this interaction) to time out. If IMS Connect receives a response message before the IMS Connect * response timer times out, it will return that response to the client and wait for an ACK or NAK from the * client. If the IMS Connect response timer times out before IMS Connect receives a response message, IMS * Connect will return a timeout error to the client. Any output received by IMS Connect from OTMA after the * IMS Connect response timer has expired but before a subsequent RESUMETPIPE request has been received by IMS * Connect for the target Tpipe will be considered a late response message and will be NAK'ed by IMS Connect * and returned to its asynchronous hold queue by OTMA. Set the imsConnectResponseTimeout to a larger value to * increase the probability of retrieving all expected response messages in a single RESUMETPIPE interaction. *
    • *
    • DEFAULT_RESUME_TPIPE_PROCESSING - same as RESUMETPIPE_SINGLE_WAIT
    • *
    *

    If a value for this property is not supplied by the client, the default value (RESUMETPIPE_SINGLE_WAIT) will be used. * @param resumeTpipeProcessing * the resumeTpipeProcessing to set. Use the constants defined in ApiProperties to specify this parameter. * @throws ImsConnectApiException * @see ApiProperties#RESUME_TPIPE_SINGLE_NOWAIT * @see ApiProperties#RESUME_TPIPE_NOAUTO * @see ApiProperties#RESUME_TPIPE_SINGLE_WAIT * @see ApiProperties#RESUME_TPIPE_AUTO * @see TmInteraction#getResumeTpipeProcessing() */ public void setResumeTpipeProcessing(int resumeTpipeProcessing) throws ImsConnectApiException; // Security properties /** * Gets the RACF APPL name. * @return a String value containing the RACF APPL name property value * @see TmInteraction#setRacfApplName(String) */ public String getRacfApplName(); /** * Sets the racfApplName property value. The racfApplName property is a string of 1 to 8 uppercase * alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters and is intended to match a RACF * APPL name defined to RACF in a PTKTDATA definition. If the racfApplName value specified is fewer than 8 * characters, the racfApplName value is right-padded with blanks to 8 characters by the IMS Connect API * before being copied to the IRM_APPL_NM field. If the racfApplName value is 8 0X00s or 8 blanks after * padding with blanks, the IMS Connect user message exit will use the default value from the IMS Connect * configuration member. If there is no value specified in the IMS Connect configuration, 8 blanks will be * copied to the IRM_APPL_NM field. If the racfApplName value is not 8 0X00s or 8 blanks after padding, it * is passed back to IMS Connect by the IMS Connect user message exit without first checking the validity. * IMS Connect will then use this racfApplName value in the RACROUTE VERIFY call where it is validated * before it is used. *

    Note that the DEFAULT_RACF_APPL_NAME is a String of eight blank characters, and the racfApplName * property must be changed during runtime to the appropriate RACF or SAF APPLID used by the target IMS * Connect or IMS if the client wishes to submit a request containing a passticket rather than a password. * @param aRacfApplName * the RACF application name to be used for this interaction * @throws ImsConnectApiException * @see TmInteraction#getRacfApplName() */ public void setRacfApplName(String aRacfApplName) throws ImsConnectApiException; /** * Gets the RACF Group name. * @return a String value containing the RACF group name property value * @see TmInteraction#setRacfGroupName(String) */ public String getRacfGroupName(); /** * Sets the racfGroupName property value. The racfGroupName property specifies the RACF group name which is a * string of 1 to 8 uppercase alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters. Providing a * value for the racfGroupName is optional. If the racfGroupName value specified is fewer than 8 characters, * it will be right-padded with blanks by the IMS Connect API. If RACF is on, IMS Connect will validate the * racfGroupName value by checking for invalid characters. IMS Connect will move all valid characters of * racfGroupName starting with the leftmost character up to but NOT including the first invalid character, into * a buffer which has been initialized to all blanks. If RACF is off, IMS Connect does not perform any * validation and the 8-character, unvalidated racfGroupName value is used directly by the IMS Connect user * message exit unless the IMS Connect user message exit has been modified to do otherwise. The RACF group * name value is used by IMS Connect during racroute verify calls for user authentication and by IMS OTMA for * user authorization. RACF will accept either the correct group name for the specified RACF user ID or, if * the group name is to be ignored in racroute verify calls, 0 to 8 blanks for this value. *

    Note that the DEFAULT_RACF_GROUP_NAME has the String value "RACFGRUP", and the racfGroupName property * must be changed during runtime to the name of appropriate RACF or SAF group under which the interaction * will be executed in IMS Connect. * @param aRacfGroupName * the RACF group name to be used for this interaction. * @throws ImsConnectApiException * @see TmInteraction#getRacfGroupName() */ public void setRacfGroupName(String aRacfGroupName) throws ImsConnectApiException; /** * Gets the RACF password. * @return a String value containing the RACF password property value * @see TmInteraction#setRacfPassword(String) */ public String getRacfPassword(); /** * Sets the racfPassword property value. The racfPassword property specifies the RACF passticket * or password which is a string of 1 to 8 uppercase alphanumeric (A through Z, 0 to 9) or special (@, #, $,.,<,+,|,&,!,*,-,%,_,>,?,:,=) * characters. If the racfPassword value specified is fewer than 8 characters, it will be right-padded with * blanks by the IMS Connect API. For non-trusted users, the client or one of the IMS Connect user exits * must provide a valid value for the racfPassword property if IMS Connect is configured to check SAF * authentication of clients. For trusted users or if IMS Connect is configured to NOT check SAF * authentication of clients, the client authentication is bypassed and therefore, the racfPassword * value is ignored by IMS Connect. The racfPassword value is not used by OTMA or IMS even if OTMA is * configured to check SAF authorization of clients. If IMS Connect is configured to check SAF * authentication of clients (i.e., RACF is on or yes in IMS Connect), IMS Connect checks for invalid * characters in the racfPassword value. It copies all valid characters in racfPassword that it encounters * in sequence, starting with the leftmost character and ending at 8 characters or before the first * invalid character, into a buffer which has been initialized to all blanks. If the leftmost character * is invalid, the buffer will contain 8 blanks. This buffer containing the validated racfPassword value * is used by the IMS Connect user message exit and also passed back to IMS Connect regardless of whether * or not it is used by IMS Connect, OTMA or IMS. If RACF is on and the racfPassword value is all blanks * or resolves to all blanks, IMS Connect will return an error. If RACF is off, IMS Connect does not * perform any validation. *

    Note that the DEFAULT_RACF_PASSWORD has the String value "RACFPSWD", and the racfPassword property * must be changed during runtime to the RACF or SAF password of the RACF or SAF userID under which the * interaction will be executed in IMS Connect. * @param aRacfPassword * the RACF password to be used for this interaction. * @throws ImsConnectApiException * @see TmInteraction#getRacfPassword() */ public void setRacfPassword(String aRacfPassword) throws ImsConnectApiException; /** * Gets the RACF userID. * @return a String value containing the RACF userID property value * @see TmInteraction#setRacfUserId(String) */ public String getRacfUserId(); /** * Sets the racfUserId property value. The racfUserId property specifies the RACF user ID which is a * string of 1 to 8 uppercase alphanumeric (A through Z, 0 to 9) or special (@, #, $) characters. The * client or one of the IMS Connect or IMS user exits must provide a valid value for the racfUserId * property if IMS Connect is configured to check SAF authentication of clients or OTMA is configured * to check SAF authorization of clients. If the racfUserId value specified is fewer than 8 characters, * it will be right-padded with blanks by the IMS Connect API. If RACF is on, IMS Connect checks for * invalid characters in the racfUserId value and moves all valid characters of racfUserId starting * with the leftmost character up to but NOT including the first invalid character, into a buffer * which has been pre-initialized to all blanks. If the leftmost character is invalid, IMS Connect * will use 8 blank characters as the racfUserId value. If RACF is on and the racfUserId value is all * blanks or resolves to all blanks, IMS Connect will return an error. If RACF is off, IMS Connect * does not perform any validation. *

    Note that the DEFAULT_RACF_USERID has the String value "RACFUID", and the racfUserId property must * be changed during runtime to the name of appropriate RACF or SAF userID under which the interaction * will be executed in IMS Connect. * @param aRacfUserId * the RACF userId to be used for this interaction. * @throws ImsConnectApiException * @see TmInteraction#getRacfUserId() */ public void setRacfUserId(String aRacfUserId) throws ImsConnectApiException; /** * Sets the calloutRequestNakProcessing property value. Set this property to send a negative * acknowledgement (NAK) in response to a synchronous callout message from * a RESUME TPIPE request. A NAK message frees the tpipe queue and tells OTMA * what to do with the synchronous callout request message and whether to maintain or end the * current RESUME TPIPE call. * *

    The IMS Connect client can specify one of the following options for a NAK response: *

      *
    • NAK_DISCARD_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE: Discard the rejected synchronous callout request * message and terminate the RESUME TPIPE connection. This is the default option if the client application does * not use this method to set a value for the property.
    • *
    • NAK_DISCARD_SYNC_CALLOUT_REQUEST_CONTINUE_RESUMETPIPE: Discard the rejected synchronous callout * request message, but maintain the RESUME TPIPE connection to continue retrieving other synchronous * callout request messages.
    • *
    • NAK_REQUEUE_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE: Keep the rejected synchronous callout request message * on the tpipe queue, but terminate the RESUME TPIPE connection.
    • *
    * @param aCalloutNakProcessing the calloutNakProcessing value needed by the client application * @throws ImsConnectApiException * @see TmInteraction#getCalloutRequestNakProcessing() * @see ApiProperties#NAK_DISCARD_SYNC_CALLOUT_REQUEST_CONTINUE_RESUMETPIPE * @see ApiProperties#NAK_DISCARD_SYNC_CALLOUT_REQUEST_CONTINUE_RESUMETPIPE_VALUE * @see ApiProperties#NAK_DISCARD_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE * @see ApiProperties#NAK_DISCARD_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE_VALUE * @see ApiProperties#NAK_REQUEUE_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE * @see ApiProperties#NAK_REQUEUE_SYNC_CALLOUT_REQUEST_END_RESUMETPIPE_VALUE * @since Enterprise Suite 2.1 */ public void setCalloutRequestNakProcessing(String aCalloutNakProcessing) throws ImsConnectApiException; /** * Gets the calloutRequestNakProcessing type. * @return a String value containing the calloutRequestNakProcessing property value * @see TmInteraction#setCalloutRequestNakProcessing(String) * @since Enterprise Suite 2.1 */ public String getCalloutRequestNakProcessing(); /** * Sets the calloutResponseMessageType property value. A client application returns * callout response messages using the send-only protocol. The send-only message contains * no transaction code and can contain either the response data or error information for * the IMS application program. To distingush between an error and a response data message * the API uses the calloutResponseMessageType property. Use this method to set * the property before sending the callout response message. The valid values are: *
      *
    • CALLOUT_ERROR_MESSAGE: The response message contains an error code. *
    • CALLOUT_RESPONSE_MESSAGE: The response message contains the expected response data. *
    *

    The DEFAULT_CALLOUT_RESPONSE_MESSAGE_TYPE is CALLOUT_RESPONSE_MESSAGE. * @param aCalloutResponseMsgType * the CalloutResponseMsgType value needed by the client application * @throws ImsConnectApiException * @see TmInteraction#getCalloutResponseMessageType() * @see ApiProperties#CALLOUT_ERROR_MESSAGE * @see ApiProperties#CALLOUT_RESPONSE_MESSAGE * @since Enterprise Suite 2.1 */ public void setCalloutResponseMessageType(String aCalloutResponseMsgType) throws ImsConnectApiException; /** * Gets the calloutResponseMessageType property value. * @return a String value containing the calloutResponseMessageType property value. * @see TmInteraction#setCalloutResponseMessageType(String) * @since Enterprise Suite 2.1 */ public String getCalloutResponseMessageType(); /** * Sets the resumeTpipeRetrievalType property value. Synchronous callout request messages are retrieved * by issuing a RESUME TPIPE call. You can code the RESUME TPIPE call to retrieve only synchronous callout * messages, only asynchronous callout messages, or both types of messages. *

    The valid values for the resumeTpipeRetrievalType property are: *

      *
    • RETRIEVE_SYNC_CALLOUT_ONLY *
    • RETRIEVE_SYNC_CALLOUT_OR_ASYNC_OUTPUT *
    • RETRIEVE_ASYNC_OUTPUT (This is equivalent to the DEFAULT_RESUME_TPIPE_RETRIEVAL_TYPE property value.) *
    * @throws ImsConnectApiException * @see TmInteraction#getCalloutResponseMessageType() * @see ApiProperties#RETRIEVE_SYNC_MESSAGE_ONLY * @see ApiProperties#RETRIEVE_SYNC_OR_ASYNC_MESSAGE * @see ApiProperties#RETRIEVE_ASYNC_MESSAGE_ONLY * @since Enterprise Suite 2.1 */ public void setResumeTpipeRetrievalType(byte aRetrievalType) throws ImsConnectApiException; /** * Gets the resumeTpipeRetrievalType property value. * @return * a byte value containing the ResumeTpipeRetrievalType property value * @see TmInteraction#setResumeTpipeRetrievalType(byte) * @since Enterprise Suite 2.1 */ public byte getResumeTpipeRetrievalType(); /** * Sets the nakReasoncode property value. If an error occurs after the client application has * already returned an ACK message to IMS Connect after retrieving a synchronous callout request message, * the client application can return an error response to IMS instead of the expected * data. The nakReasonCode property allows the client application to include an error * reason code with the error response message. This reason code value is not interpreted by * IMS and is passed directly to your IMS application. *

    The IRM_NAK_REASONCODE_DEFAULT property value is 0X00. *

    Values between 0X7D1 and 0XBB8 are valid for the reason code. * @param nakReasonCode * the nakReasonCode value needed by the client application * @see TmInteraction#getNakReasonCode() * @since Enterprise Suite 2.1 */ public void setNakReasonCode(short nakReasonCode); /** * Gets the nakReasonCode value associated with this TmInteraction object. * @return a byte byte value of the nakReasonCode property. * @see TmInteraction#setNakReasonCode(short) * @since Enterprise Suite 2.1 */ public short getNakReasonCode(); /** * Gets the correlatorToken value for this TmInteraction object. * @return the byte[] value of the correlatorToken property * @see TmInteraction#setCorrelatorToken(byte[]) * @since Enterprise Suite 2.1 */ public byte[] getCorrelatorToken(); /** * Sets the correlatorToken property value. Inbound and outbound synchronous callout messages contain a segment * for the correlator token. The correlator token is used to match a response message with the waiting * IMS application program that issued the callout requests. Client * application programs must store the token when reading callout request messages * and return it with callout response messages. The API internally sets this property value using the * setter method when a request is received. Your client application must set the property value to the value of * the received token before sending the response message. *

    The CORRELATOR_TOKEN_DEFAULT property value is an empty byte array. * @param aCorrelatorToken * @see TmInteraction#getCorrelatorToken() * @throws ImsConnectApiException * @since Enterprise Suite 2.1 */ public void setCorrelatorToken(byte[] aCorrelatorToken) throws ImsConnectApiException; /** *

    Provides access to several inner class methods that retrieve particular fields from the correlator token:

    *
      *
    • public short getCorrelatorTokenDetails().getCorrelatorLength() - Gets the length of the IRM.
    • *
    • public String getCorrelatorTokenDetails().getCorrelatorICALUserID() - Gets the 8-character user ID under which the ICAL call was executed.
    • *
    • public String getCorrelatorTokenDetails().getCorrelatorIMSID() - Gets the 4-character IMS ID.
    • *
    • public String getCorrelatorTokenDetails().getCorrelatorOTMATMember() - Gets the 8-character OTMA tmember name.
    • *
    • public String getCorrelatorTokenDetails().getCorrelatorOTMATPipeName() - Gets the 8-character OTMA tpipe name.
    • *
    • public String getCorrelatorTokenDetails().getCorrelatorOTMAMessageToken() - Gets the 8-character OTMA Message Token.
    • *
    * @since Enterprise Suite 2.2 */ public CorrelatorToken getCorrelatorTokenDetails(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy