Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Problems with CHNG call when switching programs

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> IMS DB/DC
View previous topic :: :: View next topic  
Author Message
nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Thu Feb 08, 2007 5:53 pm    Post subject: Problems with CHNG call when switching programs
Reply with quote

hi,
I am trying to switch the transaction from the current application program to another program. For this I understand that i need to issue a CHNG call to set the destination an ISRT call to the destination and then a PURG call. My change call is abending with return code A1. This is how my call looks
MOVE 'ET100AU1' TO WL-ALT-MOD-NAME
MOVE 'ET100A' TO WL-ALT-LTERM-NAME
MOVE 'ET100A' TO WS-TRANS-CODE
CALL 'CBLTDLI' USING WS-DLI-CHNG
WL-ALT-PCB
WS-TRANS-CODE
END-CALL

WL-ALT-MOD-NAME is within the ALT-PCB and I am passing the destination programs's MFS-modname to this variable.
MOVE 'ET100A' TO WL-ALT-LTERM-NAME
here i am moving the transaction code of the destination.
(i tried moving the current lterm to the above variable but that also is abending).

please help me out with the correct syntax. The current syntax I am using, i got it from the IBM site.

Thanks,
Nithya.
Back to top
View user's profile Send private message

nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Thu Feb 08, 2007 5:58 pm    Post subject:
Reply with quote

just an additional information to whatever i have said above... I could see that the ALT-PCB which I am using is defined as EXPRESS=YES. Does this make any difference?

Thanks,
Nithya.
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Mon Feb 12, 2007 12:55 am    Post subject:
Reply with quote

Here's a program to program switch in PL/!; almost the same as in cobol execpt for the LL-field. Check your code against this one. Did you send a message to the program to take control?

Code:
DCL 1 IOAREA CHAR(1924);             
DCL 1 MID_E0 UNAL BASED(ADDR(IOAREA))
      3 LL          BIN FIXED(31),   
      3 ZZ          BIT(16),         
      3 TC          CHAR(09),       
     
LL       = 294;           
TC       = 'NPBE22';                 
DCL ALT_TRX CHAR(8);           
ALT_TRX = 'NPBE22';                             
PARMCT  = 3;                                     
CALL  PLITDLI (PARMCT,'CHNG',PALTERN,ALT_TRX);   
CALL  PLITDLI (PARMCT,'ISRT',PALTERN,IOAREA);   


Are you making this change call for a printer? Check this
Back to top
View user's profile Send private message
nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Mon Feb 12, 2007 8:22 pm    Post subject:
Reply with quote

Thanks George,
The CHNG is to another transaction (that is another program). So do we need to make the ISRT call with the MID area for the new transaction? What does the variable PALTERN (in your example) contain? And what is the significance of PARMCT? Are these specific to PLI?

Thanks & Regards,
Nithya Iyer.
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Mon Feb 12, 2007 9:02 pm    Post subject:
Reply with quote

Insert the message to invoke the other program and supply it with information about what it is supposed to do. PALTERN is the alternate IO-PCB which is required in the CHNG-call.
Code:
********************************* Top of Data **************************
         2 QATNAM  CHAR(8),        /* NAME DES ALTERNATE-PCB */         
         2 QATRES  CHAR(2),        /* RESERVED */                       
         2 QATSTAT CHAR(2);        /* STATUSCODE */                     
******************************** Bottom of Data ************************

A different way is to modify the trx in your spa but we're talking about a change-call now. Parmcount contains the number of parameters to the dli-call. Long ago I wrote cobol and also provided the count in the call.

Information about your status code A1:
here

Sorry can't stay with you further today, I'm in a rush. More tomorrow.
Back to top
View user's profile Send private message
nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Thu Feb 15, 2007 9:25 pm    Post subject:
Reply with quote

Thanks a lot George. I was not able to acces the site for a couple of days. Thanks for the information.

Can you please tell me how do we change the display colour for a particular screen field dynamically through the program?

Thanks
Nithya Iyer.
Back to top
View user's profile Send private message
amitchaudhary
Warnings : 1

New User


Joined: 13 May 2005
Posts: 8

PostPosted: Thu Feb 15, 2007 10:37 pm    Post subject:
Reply with quote

Hello,
As per my knowledge whenever we want to invoke a new program we need to send the message to the respective Transaction queue. for this we need to configure any ALTRMPCB using the CHNG call and then ISRT the message as per the format required by the called program.

I think you are getting confused with the MOD name in the ISRT call. whenever we see some data on the screen that is first processed by the respective program and then it throws the data on the screen via MOD and that is after execution but you are trying to invoke a new program so you should send the message to the called program Transaction Queue. no need of any MOD name here, the only thing you need to take care is that you are passing the data via correct layout (i..e how MID sends the data to the called program).

Please let me know if I am wrong somewhere and the changes u made once execute the same successfully
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Thu Feb 15, 2007 11:35 pm    Post subject:
Reply with quote

Hi Amit,

If you'd read all posts you'd see we are beyond the MOD-thing. Glad though you confirm my previous post. Seems his message/CHNG problem has been solved and there's a new question about screencolours. This one will take some digging because I myself never did this; just highlight or not but I've seen some discussions somewhere so let's concentrate on that one icon_wink.gif
Back to top
View user's profile Send private message
nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Fri Feb 16, 2007 8:29 pm    Post subject: Re: Problems with CHNG call when switching programs
Reply with quote

Hi George, Amit,
Yes CHNG call was succesfull and I am able to switch between the transactions. Now I am concerned about changing the colur for some fields on the display screen dynamically. Could you please help me out?

Thanks
nithusi.
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Sat Feb 17, 2007 1:04 am    Post subject:
Reply with quote

Hm............ this item has been passed before. Seems difficult to me bt I will look into it. Reply you later on.
Back to top
View user's profile Send private message
amitchaudhary
Warnings : 1

New User


Joined: 13 May 2005
Posts: 8

PostPosted: Wed Feb 21, 2007 5:13 pm    Post subject:
Reply with quote

Hello All,
Regarding chainging the colours in DC screens from the program you can use the Extended Field Attributes
for more information check the link
http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.ims9.doc.aptm/p2hopmf.htm

section "Dynamic Modification of Extended Field Attributes "
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Wed Feb 21, 2007 6:06 pm    Post subject:
Reply with quote

Right Amit: knew I've seen it before. Btw, I send you a PM.
Back to top
View user's profile Send private message
Bitneuker

CICS Moderator


Joined: 07 Nov 2005
Posts: 1105
Location: The Netherlands at Hole 19

PostPosted: Wed Feb 21, 2007 6:39 pm    Post subject:
Reply with quote

Found this function at our site (is for prot, highlite, clear etc). Not for colours but anyway, just another field icon_wink.gif
Code:
$ATTR:                                                                 
   PROC(F,A) REORDER;                                                 
                                                                       
DCL  (F,           /* MOD - FELD */                                   
     A) CHAR(*);   /* ATTRIBUTES */                                   
                                                                       
DCL  CA CHAR(10) VAR,                                                 
     1 AS BASED(AP),                                                   
       2 A1 BIT(8),                                                   
       2 A2 BIT(8),                                                   
     AP PTR,                                                           
     AM BIN FIXED(31) BASED(ADDR(AP)),                                 
     (SUBSTR,INDEX,ADDR,LENGTH) BUILTIN,                               
     (I,                                                               
     J) BIN FIXED(15);                                                 
                                                                       
%INCLUDE $CAPS;                                                       
                                                                       
     AP = ADDR(F);                                                     
     AM = AM - 2;                                                     
     A2 = A2 | '10000000'B;                                           
                                                                       
     J = 1;                                                           
     I = INDEX(SUBSTR(A,J),',');                                       
                                                                       
     DO WHILE(I > 0 | J < LENGTH(A));                                 
        IF I > 0 THEN                                                 
           DO;                                                     
              CA = SUBSTR(A,J,I - 1);                               
              J = J + I;                                           
           END;                                                     
        ELSE                                                       
           DO;                                                     
              CA = SUBSTR(A,J);                                     
              J = LENGTH(A);                                       
           END;                                                     
                                                                   
                                                                   
        SELECT($CAPS(CA));                                         
           WHEN('CLR','CLEAR')                                     
              DO;                                                   
                 A1 = '00000000'B;                                 
                 A2 = '10000000'B;                                 
              END;                                                 
           WHEN('NULL')                                             
              DO;                                                   
                 A1 = '00000000'B;                                 
                 A2 = '00000000'B;                                 
              END;                                                 
           WHEN('C','CU','CUR','CURS','CURSO','CURSOR')             
              A1 = A1 | '11000000'B;                               
           WHEN('+C','+CU','+CUR','+CURS','+CURSO','+CURSOR')       
              A1 = A1 & '00111111'B;                               
           WHEN('P','PR','PRO','PROT')                             
              A2 = A2 | '00100000'B;                               
           WHEN('+P','+PR','+PRO','+PROT')                           
              A2 = A2 & '11011111'B;                                 
           WHEN('NU','NUM')                                           
              A2 = A2 | '00010000'B;                                 
           WHEN('+NU','+NUM')                                         
              A2 = A2 & '11101111'B;                                 
           WHEN('H','HI','HIG','HIGH')                               
              A2 = A2 | '00001000'B;                                 
           WHEN('+H','+HI','+HIG','+HIGH')                           
              A2 = A2 & '11110111'B;                                 
           WHEN('ND','NDIS','NDISP','NODISP','DARK')                 
              A2 = A2 | '00000100'B;                                 
           WHEN('+ND','+NDIS','+NDISP','+NODISP','+DARK')             
              A2 = A2 & '11111011'B;                                 
           WHEN('M','MO','MOD')                                       
              A2 = A2 | '00000001'B;                                 
           WHEN('+M','+MO','+MOD')                                   
              A2 = A2 & '11111110'B;                                 
           WHEN('S','SK','SKI','SKIP')                               
              A2 = A2 | '00110000'B;                                 
           WHEN('+S','+SK','+SKI','+SKIP')                           
              A2 = A2 & '11001111'B;                                 
           WHEN('R','RE','REP','REPL')                               
              A2 = A2 | '01000000'B;                                 
           WHEN('+R','+RE','+REP','+REPL')                           
              A2 = A2 & '10111111'B;                                 
           WHEN('NP','NPR','NPRO','NPROT') DO;                       
              A2 = A2 & '11011111'B;                                 
              A2 = A2 & '10111111'B;                             
           WHEN('NP','NPR','NPRO','NPROT') DO;                   
              A2 = A2 & '11011111'B;                             
              A2 = A2 | '01000001'B;                             
           END;                                                   
           WHEN('NORM')                                           
              A2 = A2 & '11110111'B;                             
           OTHER;                                                 
        END;                                                     
        I = INDEX(SUBSTR(A,J),',');                               
     END;                                                         
                                                                 
END $ATTR;                                                       
Back to top
View user's profile Send private message
nithusi

New User


Joined: 12 Apr 2006
Posts: 30

PostPosted: Thu Feb 22, 2007 8:21 pm    Post subject:
Reply with quote

Thanks Amit/George,
I will work on this and get back in case of any further doubts.

Thanks & Regards
Nithya.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> IMS DB/DC All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Cobol list of programs being called biswajit.dattagupta COBOL Programming 5 Tue Nov 01, 2016 2:10 am
No new posts Can sending 5 MB data between cobol p... Kevin Vaz CICS 12 Tue Oct 18, 2016 4:50 pm
No new posts Cobol EZASOKET call to SETSOCKOPT fails Andi1982 COBOL Programming 6 Thu Oct 06, 2016 7:12 pm
No new posts Strange EXEC function call in z/VM Willy Jensen CLIST & REXX 3 Wed Oct 05, 2016 2:07 pm
No new posts COBOL DB2 - CALL statement - high CPU... TS70363 DB2 15 Sun Sep 11, 2016 6:07 am


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us