Copyright © TIBCO Software Inc. All Rights Reserved
Copyright © TIBCO Software Inc. All Rights Reserved


Chapter 7 Using the TIBCO Service Gateway for CICS : Starting TIBCO Object Service Broker Sessions

Starting TIBCO Object Service Broker Sessions
Using the Command Line to Start a Session
To start a session from the CICS screen in command mode, enter a CICS transaction name (for example, HURN) that is associated with a TIBCO Object Service Broker CICS client program. Non-seamless client programs use screen input following the transaction name as the session parameter string. No data is passed to the TIBCO Object Service Broker session.
The TIBCO Object Service Broker transaction HURN uses the TIBCO Object Service Broker CICS client S6BCSSC2. S6BCSSC2 is non-seamless, permits screen I/O, and uses the CICS security user ID (which can be overridden with the USERID session parameter). When you use parameters with your HURN transaction, the syntax is:
HURN parameter[=value][,]
where:
 
The parameter name or abbreviation (valid abbreviations are listed in TIBCO Object Service Broker Parameters). Separate parameters on the command line with commas.
Error messages generated by TIBCO Object Service Broker or by the ENDMSG tool appear on your CICS screen.
Example of the HURN Transaction
An example of the HURN transaction is:
HURN U=USR09,PASSWORD=USR09
This establishes a session with the parameters USERID (abbreviated as U) and PASSWORD. You do not have to specify a user ID and password if you logged on to CICS using CESN or CSSN (or equivalent transactions). Since no rule is specified, the workbench appears, unless the profile of the user ID specifies a rule.
Using EXEC CICS START to Start a Session
To start a TIBCO Object Service Broker CICS client with EXEC CICS START TRANSID, do the following:
1.
For details, see Passing the COMMAREA Between a TIBCO Object Service Broker CICS Client and a Session.
2.
Execute the CICS ASSIGN FACILITY instruction to include the terminal ID in the EXEC CICS START TRANSID instruction.
Note: If you run TIBCO Object Service Broker as a background (nonterminal) task, skip this step.
3.
Optional. For an additional level of security, execute the EXEC CICS START TRANSID instruction with different transaction IDs to start TIBCO Object Service Broker.
Assembler Example Using EXEC CICS START TRANSID

 
The following program shows EXEC CICS START TRANSID, which starts the TIBCO Object Service Broker CICS client program S6BCSSC2 as a new transaction and does not return to the assembler application.
 
BRTESTS  TITLE    'CICS START TASK EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                           BRTESTS                                   *
*                                                                     *
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN   *
*           BE ACCESSED FROM A USER APPLICATION PROGRAM.  THIS        *
*           PROGRAM STARTS A OSB-CICS TRANSACTION AND PASSES        *
*           PARAMETERS TO OSB THROUGH A COMMAREA.  THE MESSAGES     *
*           SENT FROM THIS PROGRAM INDICATE THE POINT AT WHICH THIS   *
*           PROGRAM IS PROCESSING. FURTHER COMMENTS CAN BE FOUND      *
*           AT EACH SECTION.                                          *
*                                                                     *
* LINKAGE:-                                                           *
*   STANDARD CICS.                                                    *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         SPACE
BRTESTS  DFHEIENT ,                                                    X
               CODEREG=R12
BRTESTS  CSECT
BRTESTS  AMODE 31
BRTESTS  RMODE ANY
*
BEGIN    DS    0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
         EXEC  CICS SEND                                               X
               FROM(BRTEXT1)                                           X
               LENGTH(BRTEXTL1)                                         X
               ERASE                                                   X
               WAIT
*
*MOVE LENGTH OF PARMS INTO COMMAREA
* # NOTE # THIS IS THE LENGTH OF THE PARM STRING ONLY
*          THE COMMAREA LENGTH MUST INCLUDE AT MINIMUM, THE PARM
*          LENGTH PLUS THE LENGTH OF THE PARM LENGTH FIELD ITSELF.
*
         MVC   HURNPRML,=X'001B'
*
*MOVE PARMS INTO COMMAREA. RULE NAME AND PARMS SPECIFIED HERE ARE
*JUST EXAMPLES
*
         MVC   HURNPARM,=C'RULE=TESTX(3245,BANK,DATES)'
*
*GET USER'S TERMINAL ID FOR SUBSEQUENT EXECUTION OF OSB-CICS
*AS STARTED TASK. FOR NON-TERMINAL STARTED TASK, THIS STEP CAN BE
*IGNORED.
*
        EXEC  CICS ASSIGN                                               X
               FACILITY(TERM)
*
*START OSB AS SEPARATE TASK AT USER'S TERMINAL USING DATA AREA
*TO PASS RULES AND PARMS.
*
         EXEC  CICS START                                               X
               TRANSID('HURN')                                          X
               FROM(HURNPRML)                                           X
               LENGTH(X'00A3')                                          X
               TERMID(TERM)
*
* RETURN TO CICS
*
BREND    EXEC  CICS RETURN
         SPACE
         LTORG                      FORCE OUT ASSEMBLY LITERALS
BRTEXTL1 DC    Y(L'BRTEXT1)         LENGTH OF LINK MESSAGE
BRTEXT1  DC    C'BRTESTS - ABOUT TO START OSB-CICS TASK'
         COPY  REGEQU
***>                                                          <***
*****>THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE<*****
***>                                                          <***
*
*  DSECT FOR BRTESTS                                                    
*
DFHEISTG DSECT
*
TERM     DS       CL4                TERMINAL ID
HURNCOMA DS       0F                 COMMAREA FOR STARTED TASK
HURNPRML DS       H                  LENGTH OF PARMS IN HURNPARM
HURNPARM DS       CL161              PARMS (CAN BE LARGER)
HURNCOML EQU      *-HURNCOMA         LENGTH OF DSECT
         SPACE
         END      BRTESTS

 
COBOL Example Using EXEC CICS START TRANSID

 
The following program shows EXEC CICS START TRANSID, which starts the TIBCO Object Service Broker CICS client program S6BCSSC2 as a new transaction and does not return to the COBOL application.
IDENTIFICATION DIVISION.
PROGRAM-ID. CHISC2.
AUTHOR. RICHARD PLANT
INSTALLATION. CORPORATE.
DATE-WRITTEN. 5 APRIL 2007.
 
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
 
  01 S6B-COMMAREA.
     02 S6B-PARM-AREA-LENGTH PIC S9(4) COMP VALUE +40.
     02 S6B-PARM-AREA PIC X(40) VALUE SPACES.
     02 S6B-DATA-AREA PIC X(90) VALUE SPACES.
 
  01 S6B-COMMAREA-LENGTH PIC S9(4) COMP VALUE +256.
  01 S6B-USERID PIC X(8) VALUE SPACES.
 
LINKAGE SECTION.
 
  01 CICS-COMMAREA PIC X(256).
 
PROCEDURE DIVISION USING CICS-COMMAREA.
 
    EXEC CICS ASSIGN USERID(S6B-USERID) END-EXEC.
 
    MOVE 'U=USR10' TO S6B-PARM-AREA.
    MOVE '== DATA AREA ==' TO S6B-DATA-AREA.
    MOVE S6B-COMMAREA TO CICS-COMMAREA.
 
    EXEC CICS TRANSID
        PROGRAM('S6BCSSC2')
        COMMAREA(CICS-COMMAREA)
        LENGTH(S6B-COMMAREA-LENGTH) END-EXEC.
 
    GOBACK.

 
Using EXEC CICS START to Start a Session with Channel
To start a TIBCO Object Service Broker CICS session with EXEC CICS START TRANSID, do the following:
1.
For details, see CICS Channels and Containers in the TIBCO Object Service Broker CICS Session Environment.
2.
Execute the CICS ASSIGN FACILITY instruction to include the terminal ID in the EXEC CICS START TRANSID instruction.
Note: If you run TIBCO Object Service Broker as a background (nonterminal) task, skip this step.
3.
Optional. For an additional level of security, execute the EXEC CICS START TRANSID instruction with different transaction IDs to start TIBCO Object Service Broker.
Assembler Example Using EXEC CICS START TRANSID with Channel
The following program shows EXEC CICS START TRANSID, which starts the TIBCO Object Service Broker CICS client program S6BCSSC2 as a new transaction and does not return to the assembler application.

 
BRTESTSH TITLE 'OSB-CICS START TASK EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* BRTESTSH *
* *
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN *
* BE ACCESSED FROM A USER APPLICATION PROGRAM. THIS *
* PROGRAM STARTS A OSB-CICS TRANSACTION AND PASSES *
* PARAMETERS TO OSB THROUGH A CHANNEL. THE MESSAGES *
* SENT FROM THIS PROGRAM INDICATE THE POINT AT WHICH THIS *
* PROGRAM IS PROCESSING. FURTHER COMMENTS CAN BE FOUND *
* AT EACH SECTION. *
* *
* LINKAGE:- *
* STANDARD CICS. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SPACE
BRTESTSH DFHEIENT , X
CODEREG=R12
BRTESTSH CSECT
BRTESTSH AMODE 31
BRTESTSH RMODE ANY
*
BEGIN DS 0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
EXEC CICS SEND X
FROM(BRTEXT1) X
LENGTH(BRTEXTL1) X
ERASE X
WAIT
*
* PUT Container SESSIONDATA for user session data
*
MVC STRSDATA,CC1SDATA Copy session data
LA R0,L'STRSDATA Get session data length
ST R0,STRSDATL Set the length
*
EXEC CICS PUT CONTAINER('SESSIONDATA') CHANNEL('ABC') X
FROM(STRSDATA) FLENGTH(STRSDATL) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
* PUT Container PARMCONTAINER for session parameters
*
MVC STRSPARM,CC1SPARM Copy session parm
LA R0,L'CC1SPARM Get session parm length
ST R0,STRSPRML Set the length
*
EXEC CICS PUT CONTAINER('PARMCONTAINER') CHANNEL('ABC') X
FROM(STRSPARM) FLENGTH(STRSPRML) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
*GET USER'S TERMINAL ID FOR SUBSEQUENT EXECUTION OF OSB-CICS
*AS STARTED TASK. FOR NON-TERMINAL STARTED TASK, THIS STEP CAN BE
*IGNORED.
*
EXEC CICS ASSIGN X
FACILITY(TERM)
*
*START OSB AS SEPARATE TASK AT USER'S TERMINAL USING DATA AREA
*TO PASS RULES AND PARMS.
*
EXEC CICS START TRANSID('HURN') CHANNEL('ABC') X
TERMID(TERM)
*
MVC STRERMSG,CC1MSG03 Trans HURN STARTed
B CC1SENDM
*
* Send message and return to CICS
*
CC1SENDM EXEC CICS SEND FROM(STRERMSG) LENGTH(CC1ERMLN)
EXEC CICS RETURN
*
LTORG , FORCE OUT ASSEMBLY LITERALS
*
CC1SPARM DC CL16'U=USR10,P=PUSR10'
CC1SDATA DC CL36'This is user session data'
CC1ERMLN DC Y(L'STRERMSG)
*
BRTEXTL1 DC Y(L'BRTEXT1) LENGTH OF LINK MESSAGE
BRTEXT1 DC C'BRTESTSH - ABOUT TO START OSB-CICS TASK'
CC1MSG02 DC CL20'PUT CONTAINER error'
CC1MSG03 DC CL20'Trans HURN STARTed'
*
DFHREGS , EQUate registers
***> <***
*****>THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE<*****
***> <***
DFHEISTG ,
*
TERM DS CL4
STRSDATL DS F
STRSDATA DS CL(L'CC1SDATA)
STRSPRML DS F
STRSPARM DS CL(L'CC1SPARM)
STRERMSG DS CL20
END BRTESTSH

 
COBOL Example Using EXEC CICS START TRANSID with Channel
The following program shows EXEC CICS START TRANSID, which starts the TIBCO Object Service Broker CICS client program S6BCSSC2 as a new transaction and does not return to the COBOL application.

 
IDENTIFICATION DIVISION.
PROGRAM-ID. CHISC2.
AUTHOR. RICHARD PLANT
INSTALLATION. CORPORATE.
DATE-WRITTEN. 8 DECEMBER 2010.
 
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 S6B-CONTAINER.
02 S6B-SESSION-PARM-LENGTH PIC S9(5) COMP VALUE +16.
02 S6B-SESSION-PARM PIC X(16) VALUE SPACES.
02 S6B-SESSION-DATA-LENGTH PIC S9(5) COMP VALUE +36.
02 S6B-SESSION-DATA PIC X(36) VALUE SPACES.
02 TERM PIC X(4) VALUE SPACES.
 
PROCEDURE DIVISION.
 
EXEC CICS ASSIGN FACILITY(TERM) END-EXEC.
 
      MOVE 'U=USR10,P=PUSR10' TO S6B-SESSION-PARM.
 
      EXEC CICS PUT CONTAINER('PARMCONTAINER') CHANNEL('ABC')
      FROM(S6B-SESSION-PARM) FLENGTH(S6B-SESSION-PARM-LENGTH)
      END-EXEC.
 
MOVE 'This is user session data' TO S6B-SESSION-DATA.
 
      EXEC CICS PUT CONTAINER('SESSIONDATA') CHANNEL('ABC')
      FROM(S6B-SESSION-DATA) FLENGTH(S6B-SESSION-DATA-LENGTH)
       END-EXEC.
 
EXEC CICS TRANSID('HURN') CHANNEL('ABC') TERMID(TERM) END-EXEC.
 
    GOBACK.

 
Using EXEC CICS LINK to Start a Session
To start a TIBCO Object Service Broker session using EXEC CICS LINK, establish a COMMAREA and LINK to the appropriate TIBCO Object Service Broker CICS client program.
The following program shows EXEC CICS LINK, which accesses TIBCO Object Service Broker CICS client program S6BCSSC2 and returns to the assembler application.

 
BRTESTL TITLE     'OSB-CICS LINK EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                           BRTESTL                                   *
*                                                                     *
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN   *
*              BE ACCESSED FROM A USER APPLICATION PROGRAM. IT WILL   *
*              ASSEMBLE TO EXECUTABLE FORM. THIS PROGRAM LINKS TO     *
*              OSB-CICS BY PASSING PARAMETERS THROUGH A COMMAREA.   *
*              THE MESSAGES SENT FROM THIS PROGRAM INDICATE THE POINT *
*              AT WHICH THIS PROGRAM IS PROCESSING. FURTHER COMMENTS  *
*              CAN BE FOUND AT EACH SECTION.                          *
*                                                                     *
* LINKAGE:-                                                           *
*   STANDARD CICS.                                                    *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         SPACE
BRTESTL  DFHEIENT,                                                    X
               CODEREG=R12
BRTESTL  CSECT
BRTESTL  AMODE 31
BRTESTL  RMODE ANY
*
BEGIN    DS    0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
         EXEC  CICS SEND                                              X
               FROM(BRTEXT1)                                          X
               LENGTH(BRTEXTL1)                                        X
               ERASE                                                  X
               WAIT
*
*MOVE LENGTH OF PARMS INTO COMMAREA
* # NOTE # THIS IS THE LENGTH OF THE PARM STRING ONLY.
*          THE COMMAREA LENGTH MUST INCLUDE AT MINIMUM, THE PARM
*          LENGTH PLUS THE LENGTH OF THE PARM LENGTH FIELD ITSELF.
*
         MVC   HURNPRML,=X'001B'
*
*MOVE PARMS INTO COMMAREA. RULE NAME AND PARMS SPECIFIED HERE ARE
*JUST EXAMPLES.
*
         MVC   HURNPARM,=C'RULE=TESTX(3245,BANK,DATES)'
*
*LINK TO OSB CICS USING COMMAREA TO PASS RULES AND PARMS
*
         EXEC  CICS LINK                                                X
               PROGRAM('S6BCSSC2')                                      X
               COMMAREA(HURNCOMA)                                      X
               LENGTH(X'00A3')
*
*SEND MESSAGE INDICATING LINK RETURN
*
         EXEC  CICS SEND                                               X
               FROM(BRTEXT2)                                           X
               LENGTH(BRTEXTL2)                                        X
               ERASE                                                   X
               WAIT
*
* RETURN TO CICS
*
BREND    EXEC CICS RETURN
         SPACE
BRTEXTL1 DC   Y(L'BRTEXT1)                LENGTH OF LINK MESSAGE
BRTEXT1  DC   C'BRTESTL - ABOUT TO LINK TO OSB/CICS'
BRTEXTL2 DC   Y(L'BRTEXT2)                LENGTH OF RETURN MESSAGE
BRTEXT2  DC   C'BRTESTL- RETURNED SUCCESSFULLY FROM OSB/CICS'
         LTORG                            FORCE OUT ASSEMBLY LITERALS
         COPY REGEQU
***>                                                            <***
*****> THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE <*****
***>                                                            <***
*
* DSECT FOR BRTESTL
*
DFHEISTG DSECT
*
TERM     DS         CL4                  TERMINAL ID
HURNCOMA DS         0F                   COMMAREA FOR LINK
HURNPRML DS         H                    LENGTH OF PARTMS IN HURNPARM
HURNPARM DS         CL161                PARMS (CAN BE LARGER)
HURNCOML EQU        *-HURNCOMA           LENGTH OF DSECT
         SPACE
         END        BRTESTL

 
Using EXEC CICS LINK to Start a Session with Channel
To start a TIBCO Object Service Broker session with EXEC CICS LINK, create a Channel with the desired Containers and LINK to the appropriate TIBCO Object Service Broker CICS client program.
The following program shows EXEC CICS LINK, which accesses TIBCO Object Service Broker CICS client program S6BCSSC2 and returns to the assembler application.

 
BRTESTLH TITLE 'OSB-CICS LINK EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* BRTESTLH *
* *
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN *
* BE ACCESSED FROM A USER APPLICATION PROGRAM. THIS *
* PROGRAM LINKS TO OSB-CICS BY PASSING PARAMETERS THROUGH *
* A CHANNEL WITH CONTAINERS. THE MESSAGES SENT FROM THIS *
* PROGRAM INDICATES THE POINT AT WHICH THIS PROGRAM IS *
* PROCESSING. FURTHER COMMENTS CAN BE FOUND AT EACH *
* SECTION. *
* *
* LINKAGE:- *
* STANDARD CICS. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SPACE
BRTESTLH DFHEIENT , X
CODEREG=R12
BRTESTLH CSECT
BRTESTLH AMODE 31
BRTESTLH RMODE ANY
*
BEGIN DS 0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
EXEC CICS SEND X
FROM(BRTEXT1) X
LENGTH(BRTEXTL1) X
ERASE X
WAIT
*
* PUT Container SESSIONDATA for user session data
*
MVC STRSDATA,CC1SDATA Copy session data
LA R0,L'STRSDATA Get session data length
ST R0,STRSDATL Set the length
*
EXEC CICS PUT CONTAINER('SESSIONDATA') CHANNEL('ABC') X
FROM(STRSDATA) FLENGTH(STRSDATL) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
* PUT Container PARMCONTAINER for session parameters
*
MVC STRSPARM,CC1SPARM Copy session parm
LA R0,L'CC1SPARM Get session parm length
ST R0,STRSPRML Set the length
*
EXEC CICS PUT CONTAINER('PARMCONTAINER') CHANNEL('ABC') X
FROM(STRSPARM) FLENGTH(STRSPRML) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
* LINK to OSB CICS using Channel to pass session PARMS and
* user session data.
*
EXEC CICS LINK PROGRAM('S6BCSSC2') CHANNEL('ABC')
*
*SEND MESSAGE INDICATING LINK RETURN
*
EXEC CICS SEND X
FROM(BRTEXT2) X
LENGTH(BRTEXTL2) X
ERASE X
WAIT
B BREND
*
* Send message and return to CICS
*
CC1SENDM EXEC CICS SEND FROM(STRERMSG) LENGTH(CC1ERMLN)
*
* Return to CICS
*
BREND EXEC CICS RETURN
*
LTORG , FORCE OUT ASSEMBLY LITERALS
*
CC1SPARM DC CL16'U=USR10,P=PUSR10'
CC1SDATA DC CL36'This is user session data'
CC1ERMLN DC Y(L'STRERMSG)
*
BRTEXTL1 DC Y(L'BRTEXT1) LENGTH OF LINK MESSAGE
BRTEXT1 DC C'BRTESTLH - ABOUT TO LINK TO OSB/CICS'
BRTEXTL2 DC Y(L'BRTEXT2) LENGTH OF RETURN MESSAGE
BRTEXT2 DC C'BRTESTLH- RETURNED SUCCESSFULLY FROM OSB/CICS'
CC1MSG02 DC CL20'PUT CONTAINER error'
*
DFHREGS , EQUate registers
***> <***
*****>THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE<*****
***> <***
DFHEISTG ,
*
STRSDATL DS F
STRSDATA DS CL(L'CC1SDATA)
STRSPRML DS F
STRSPARM DS CL(L'CC1SPARM)
STRERMSG DS CL20
END BRTESTLH

 
Using EXEC CICS XCTL to Start a Session
To start a TIBCO Object Service Broker session using EXEC CICS XCTL, establish a COMMAREA and transfer to the appropriate TIBCO Object Service Broker CICS client program.
The following program shows the use of EXEC CICS XCTL, which accesses the TIBCO Object Service Broker CICS client program S6BCSSC2 and does not return to the assembler application.

 
BRTESTX  TITLE    'OSB-CICS XCTL EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                           BRTESTX                                   * 
*                                                                     * 
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN   * 
*           BE ACCESSED FROM A USER APPLICATION PROGRAM.  THIS        * 
*           EXAMPLE PERFORMS A TRANSFER OF CONTROL TO OSB-CICS AND  * 
*           PASSES PARAMETERS THROUGH A COMMAREA.  THE MESSAGES SENT  * 
*           FROM THIS PROGRAM INDICATE THE POINT AT WHICH THIS        * 
*           PROGRAM IS PROCESSING.  FURTHER COMMENTS CAN BE FOUND     * 
*           AT EACH SECTION.                                          * 
*                                                                     * 
* LINKAGE:-                                                           * 
*   STANDARD CICS.                                                    * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
         SPACE
BRTESTX  DFHEIENT ,                                                     X
               CODEREG=R12
BRTESTX  CSECT
BRTESTX  AMODE 31
BRTESTX  RMODE ANY
*
         B     BEGIN-BRTESTX(,R12)
BEGIN    DS    0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
         EXEC  CICS SEND                                               X
               FROM(BRTEXT1)                                            X
               LENGTH(X'0024')                                          X
               ERASE                                                    X
               WAIT
*
*MOVE LENGTH OF PARMS INTO COMMAREA 
* # NOTE # THIS IS THE LENGTH OF THE PARM STRING ONLY.
*          THE COMMAREA LENGTH MUST INCLUDE AT MINIMUM, THE PARM
*          LENGTH PLUS THE LENGTH OF THE PARM LENGTH FIELD ITSELF.
*
         MVC   HURNPRML,=X'001B'
*
*MOVE PARMS INTO COMMAREA. RULE NAME AND PARMS SPECIFIED HERE ARE
*JUST EXAMPLES.
*
         MVC   HURNPARM,=C'RULE=TESTX(3245,BANK,DATES)'
*
*TRANSFER CONTROL TO OSB-CICS USING COMMAREA TO PASS RULES,PARMS
*
         EXEC  CICS XCTL                                                X
               PROGRAM('S6BCSSC2')                                      X
               COMMAREA(HURNCOMA)                                       X
               LENGTH(X'00A3')
*
* RETURN TO CICS
*
BREND    EXEC  CICS RETURN
         SPACE
         LTORG                      FORCE OUT ASSEMBLY LITERALS
BRTEXTL1 DC    Y(L'BRTEXT1)         LENGTH OF LINK MESSAGE
BRTEXT1  DC    C'BRTESTX - ABOUT TO XCTL TO OSB-CICS'
         COPY  REGEQU
***>                                                          <***
*****>THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE<*****
***>                                                          <***
*
*  DSECT FOR BRTESTX
*
DFHEISTG DSECT
*
TERM     DS       CL4                TERMINAL ID
OSBCOMA DS       0F                 COMMAREA FOR XCTL
OSBPRML DS       H                  LENGTH OF PARMS IN HURNPARM
OSBPARM DS       CL161              PARMS (CAN BE LARGER)
OSBCOML EQU      *-OSBCOMA         LENGTH OF DSECT
         SPACE
         END      BRTESTX

 
Using EXEC CICS XCTL to Start a Session with Channel
To start a TIBCO Object Service Broker session with EXEC CICS XCTL, create a Channel with the desired Containers and transfer to the appropriate TIBCO Object Service Broker CICS client program.
The following program shows the use of EXEC CICS XCTL, which accesses the TIBCO Object Service Broker CICS client program S6BCSSC2 and does not return to the assembler application.

 
BRTESTXH TITLE 'OSB-CICS XCTL EXAMPLE PROGRAM'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* BRTESTXH *
* *
* FUNCTION: THIS PROGRAM SERVES AS AN EXAMPLE OF HOW OSB-CICS CAN *
* BE ACCESSED FROM A USER APPLICATION PROGRAM. THIS *
* EXAMPLE PERFORMS A TRANSFER OF CONTROL TO OSB-CICS AND *
* PASSES PARAMETERS TO OSB THROUGH A CHANNEL. THE *
* MESSAGES SENT FROM THIS PROGRAM INDICATE THE POINT AT *
* WHICH THIS PROGRAM IS PROCESSING. FURTHER COMMENTS CAN *
* BE FOUND AT EACH SECTION. *
* *
* LINKAGE:- *
* STANDARD CICS. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SPACE
BRTESTXH DFHEIENT , X
CODEREG=R12
BRTESTXH CSECT
BRTESTXH AMODE 31
BRTESTXH RMODE ANY
*
BEGIN DS 0H
*
* SEND MESSAGE INDICATING COMMENCEMENT
*
EXEC CICS SEND X
FROM(BRTEXT1) X
LENGTH(BRTEXTL1) X
ERASE X
WAIT
*
* PUT Container SESSIONDATA for user session data
*
MVC STRSDATA,CC1SDATA Copy session data
LA R0,L'STRSDATA Get session data length
ST R0,STRSDATL Set the length
*
EXEC CICS PUT CONTAINER('SESSIONDATA') CHANNEL('ABC') X
FROM(STRSDATA) FLENGTH(STRSDATL) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
* PUT Container PARMCONTAINER for session parameters
*
MVC STRSPARM,CC1SPARM Copy session parm
LA R0,L'CC1SPARM Get session parm length
ST R0,STRSPRML Set the length
*
EXEC CICS PUT CONTAINER('PARMCONTAINER') CHANNEL('ABC') X
FROM(STRSPARM) FLENGTH(STRSPRML) X
RESP(STRQRESP)
*
MVC STRERMSG,CC1MSG02 PUT container error message
CLC STRQRESP,DFHRESP(NORMAL) Command ok?
BNE CC1SENDM No, send error message
*
* Transfer control to OSB CICS using Channel to pass session PARMS
* and user session data.
*
EXEC CICS XCTL PROGRAM('S6BCSSC2') CHANNEL('ABC')
*
* Send message and return to CICS
*
CC1SENDM EXEC CICS SEND FROM(STRERMSG) LENGTH(CC1ERMLN)
EXEC CICS RETURN
*
LTORG , FORCE OUT ASSEMBLY LITERALS
*
CC1SPARM DC CL16'U=USR10,P=PUSR10'
CC1SDATA DC CL36'This is user session data'
CC1ERMLN DC Y(L'STRERMSG)
*
BRTEXTL1 DC Y(L'BRTEXT1) LENGTH OF LINK MESSAGE
BRTEXT1 DC C'BRTESTXH - ABOUT TO XCTL TO OSB-CICS'
CC1MSG02 DC CL20'PUT CONTAINER error'
*
DFHREGS , EQUate registers
***> <***
*****>THE FOLLOWING DSECTS ALL EXIST IN CICS DYNAMIC STORAGE<*****
***> <***
DFHEISTG ,
*
TERM DS CL4
STRSDATL DS F
STRSDATA DS CL(L'CC1SDATA)
STRSPRML DS F
STRSPARM DS CL(L'CC1SPARM)
STRERMSG DS CL20
END BRTESTSH

 

Copyright © TIBCO Software Inc. All Rights Reserved
Copyright © TIBCO Software Inc. All Rights Reserved