How to handle a program to return by PF3 key?



Support for CICS/ESA, CICS/TS & Transaction Gateway, CICS Configuration Manager and CICS Performance Analyzer

How to handle a program to return by PF3 key?

Postby Mehdi shri » Sun Jul 21, 2013 10:10 pm

Dear friends
I write a program like following to link to another program.
PROCEDURE DIVISION.                                         
    PERFORM P2000-SEND-INIT-MAPS.                           
    EVALUATE TRUE                                           
        WHEN EIBAID = DFHPF5                                 
            PERFORM P1000-DO-PROG-ACCTOP                     
        WHEN EIBAID = DFHPF6                                 
            MOVE 'PRG FOR CREDIT IS NOT READY' TO M1ERORMESGO
            PERFORM G1000-SEND-MSGS-MAPS                     
    END-EVALUATE.                                           
    EXIT.                                                   
    GOBACK.
*************************************************************************
P1000-DO-PROG-ACCTOP  SECTION.                 
    EXEC CICS LINK PROGRAM  ('ACCTOPEN')       
            COMMAREA (ACCTOPEN-COMMAREA)       
            LENGTH   (ACCTOPEN-COMMAREA-LENGTH)
    END-EXEC.                                 
    EXIT.                                       

So when I press PF5 I will link to a program called ACCTOPEN by EXEC CICS LINK PROGRAM ('ACCTOPEN') command.
Now in the ACCTOPEN i have following code:
PROCEDURE DIVISION.                 
    IF  EIBAID = DFHPF2   THEN       
        PERFORM P2000-SEND-EMPT-MAPS.
    IF  EIBAID = DFHPF3   THEN       
        PERFORM X0000-EXIT-TO-LASTPG.
    EXIT.                           
    GOBACK.
*************************************************************************
X0000-EXIT-TO-LASTPG  SECTION.           
        EXEC CICS RETURN TRANSID('AC00') 
        END-EXEC.                         
    EXIT.                                 

(AC00 is the major program transaction)
When I want to return to major program I must press PF3 two times or press PF3 and then another key. THIS IS MY PROBLEM!!! How I can return to last program by pressing PF3 only once. OR when I press PF3 then PF2 I want to do "PERFORM P2000-SEND-EMPT-MAPS" but I returned to last program (or map linked to it).
Mehdi shri
 
Posts: 138
Joined: Sun Jan 16, 2011 6:30 pm
Has thanked: 57 times
Been thanked: 0 time

Re: How to handle a program to return by PF3 key?

Postby dick scherrer » Mon Jul 22, 2013 3:24 am

Hello,

Your question appears to be in conflict with itself . . .

How I can return to last program by pressing PF3 only once. OR when I press PF3 then PF2 I want
F3 should do whatever is specified for F3. How can there be an OR?

Obviously, I misunderstand . . .
Hope this helps,
d.sch.
User avatar
dick scherrer
Global moderator
 
Posts: 6268
Joined: Sat Jun 09, 2007 8:58 am
Has thanked: 3 times
Been thanked: 93 times

Re: How to handle a program to return by PF3 key?

Postby Mehdi shri » Mon Jul 22, 2013 9:58 am

Mr dick scherrer
I mean is that when I press PF3 I must press any PF keys one more time to doeing RETURN. But I want to RETURN upon I press the PF3 key.
Mehdi shri
 
Posts: 138
Joined: Sun Jan 16, 2011 6:30 pm
Has thanked: 57 times
Been thanked: 0 time

Re: How to handle a program to return by PF3 key?

Postby Monitor » Mon Jul 22, 2013 11:52 am

To give you a more correct answere and a solution to your problem, I would like to see the whole logic, not just part of the program that you think is relevant. I assume the logic is pseudoconversational and the second program handles its own map with send and return transid. If this is true you should change the RETURN to an EXEC CICS XCTL(firtspgmname) to have the first program started.
Monitor
 
Posts: 98
Joined: Wed Jan 18, 2012 8:59 pm
Has thanked: 0 time
Been thanked: 7 times

Re: How to handle a program to return by PF3 key?

Postby Mehdi shri » Mon Jul 22, 2013 12:35 pm

Yes friend
This is my first program
LINKAGE SECTION.                                                 
 01  DFHCOMMAREA                PIC X(600).
****************************************************
PROCEDURE DIVISION.                                             
    PERFORM P2000-SEND-INIT-MAPS.                               
    EVALUATE TRUE                                               
        WHEN EIBAID = DFHPF5                                     
            PERFORM P1000-DO-PROG-ACCTOP                         
        WHEN EIBAID = DFHPF6                                     
            MOVE 'PRG FOR CREDIT IS NOT READY' TO FRSTMAPERORMESGO   
            PERFORM G1000-SEND-MSGS-MAPS                         
        WHEN EIBAID = DFHPF7                                     
            MOVE 'PRG FOR DEBIT IS NOT READY'  TO FRSTMAPERORMESGO   
            PERFORM G1000-SEND-MSGS-MAPS                         
        WHEN EIBAID = DFHENTER                               
            PERFORM P2000-SEND-INIT-MAPS                     
        WHEN OTHER                                           
            MOVE 'INVALID PF KEYS PRESSED'     TO FRSTMAPERORMESGO
            PERFORM G1000-SEND-MSGS-MAPS                     
    END-EVALUATE.                                           
MAIN-PROCESS-EXIT.                                           
    EXIT.                                                   
    GOBACK.
****************************************************   
P2000-SEND-INIT-MAPS            SECTION.                         
    MOVE LOW-VALUE              TO FRSTMAPO.                     
    MOVE CURRENT-TRANSACTION-ID TO FRSTMAPTRANIDO.                   
    MOVE EIBTRMID               TO FRSTMAPTERMIDO.                   
    MOVE 'Select your option'   TO FRSTMAPERORMESGO.                 
    EXEC CICS SEND MAP    (K-MAP-NAME)                           
                   MAPSET (K-MAPSET-NAME)                       
                   FROM   (FRSTMAPO)                             
                   CURSOR                                       
                   FREEKB                                       
                   ERASE                                         
    END-EXEC.                                                   
P2000-SEND-INIT-MAPS-EXIT.                                       
    EXIT.
****************************************************   
G1000-SEND-MSGS-MAPS            SECTION.           
    MOVE CURRENT-TRANSACTION-ID TO FRSTMAPTRANIDO.       
    MOVE EIBTRMID               TO FRSTMAPTERMIDO.       
    EXEC CICS SEND MAP    (K-MAP-NAME)             
                   MAPSET (K-MAPSET-NAME)           
                   FROM   (FRSTMAPO)               
                   CURSOR                           
                   FREEKB                           
                   ERASE                           
    END-EXEC.                                       
G1000-SEND-MSGS-MAPS-EXIT.                         
    EXIT.                                           
****************************************************
   P1000-DO-PROG-ACCTOP  SECTION.                     
    EXEC CICS LINK PROGRAM  ('ACCTOPEN')           
            COMMAREA (ACCTOPENCOMA-COMMAREA)           
            LENGTH   (ACCTOPENCOMA-COMMAREA-LENGTH)   
    END-EXEC.                                     
P1000-DO-PROG-ACCTOP-EXIT.                         
    EXIT.                                         



XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

And this is my secound program. (ACCTOPEN)
LINKAGE SECTION.                                                 
01  DFHCOMMAREA                     PIC X.                       
****************************************************
PROCEDURE DIVISION.                                             
    PERFORM P2000-SEND-INIT-MAPS.                               
    IF  EIBAID = DFHPF2   THEN                                   
        PERFORM P2000-SEND-EMPT-MAPS.                           
    IF  EIBAID = DFHPF3   THEN                                   
        PERFORM X0000-EXIT-TO-LASTPG.                           
MAIN-PROCESS-EXIT. 
    EXIT.           
    GOBACK.         
****************************************************
P2000-SEND-INIT-MAPS            SECTION.                       
    MOVE LOW-VALUE              TO ACCTOPENMAPO.                   
    MOVE CURRENT-TRANSACTION-ID TO ACCTOPENMAP-TRANIDO.               
    MOVE EIBTRMID               TO ACCTOPENMAP-TERMIDO.               
    MOVE SET-CURSOR-POSITION    TO ACCTOPENMAP-BRANCODE-HL.           
   MOVE 'PRESS PF4=OPEN ACCOUNT | PF2=NEW DATA | PF3=EXIT'     
   TO ACCTOPENMAP-INFOMESGO.                                         
    EXEC CICS SEND MAP    (K-MAP-NAME)                             
                   MAPSET (K-MAPSET-NAME)                         
                   FROM   (ACCTOPENMAPO)                               
                   CURSOR                                         
                   FREEKB                                         
                   ERASE                                           
    END-EXEC.                                                     
P2000-SEND-EMPT-INIT-EXIT.                                         
    EXIT.                                                         
****************************************************
P2000-SEND-EMPT-MAPS            SECTION.                       
    MOVE LOW-VALUE              TO ACCTOPENMAPO.                   
    MOVE CURRENT-TRANSACTION-ID TO ACCTOPENMAP-TRANIDO.               
    MOVE EIBTRMID               TO ACCTOPENMAP-TERMIDO.               
    MOVE SET-CURSOR-POSITION    TO ACCTOPENMAP-BRANCODE-HL.           
    MOVE 'REDAY FOR INSERT NEW DATA '
    TO ACCTOPENMAP-INFOMESGO.             
    EXEC CICS SEND MAP    (K-MAP-NAME)                         
                   MAPSET (K-MAPSET-NAME)                       
                   FROM   (ACCTOPENMAPO)                           
                   CURSOR                                       
                   FREEKB                                       
                   ERASE                                       
    END-EXEC.                                                   
P2000-SEND-EMPT-MAPS-EXIT.                                     
    EXIT.
****************************************************   
Mehdi shri
 
Posts: 138
Joined: Sun Jan 16, 2011 6:30 pm
Has thanked: 57 times
Been thanked: 0 time

Re: How to handle a program to return by PF3 key?

Postby Monitor » Mon Jul 22, 2013 2:04 pm

I cant see any RETURN commands in the code you posted. You should do som reading on PSEUDOCONVERSATIONAL PROGRAMMING, which is the normal programming model.
Try Google and correct your programs according to what you have found. If any problem persist, we can help you.
Monitor
 
Posts: 98
Joined: Wed Jan 18, 2012 8:59 pm
Has thanked: 0 time
Been thanked: 7 times

Re: How to handle a program to return by PF3 key?

Postby Mehdi shri » Mon Jul 22, 2013 6:19 pm

Dear monitor
I was eliminated a matter section of my program in my last post. Here is complete:
This is my first program
LINKAGE SECTION.                                                 
 01  DFHCOMMAREA                PIC X(600).
****************************************************
PROCEDURE DIVISION.                                             
    PERFORM P2000-SEND-INIT-MAPS.                               
    EVALUATE TRUE                                               
        WHEN EIBAID = DFHPF5                                     
            PERFORM P1000-DO-PROG-ACCTOP                         
        WHEN EIBAID = DFHPF6                                     
            MOVE 'PRG FOR CREDIT IS NOT READY' TO FRSTMAPERORMESGO   
            PERFORM G1000-SEND-MSGS-MAPS                         
        WHEN EIBAID = DFHPF7                                     
            MOVE 'PRG FOR DEBIT IS NOT READY'  TO FRSTMAPERORMESGO   
            PERFORM G1000-SEND-MSGS-MAPS                         
        WHEN EIBAID = DFHENTER                               
            PERFORM P2000-SEND-INIT-MAPS                     
        WHEN OTHER                                           
            MOVE 'INVALID PF KEYS PRESSED'     TO FRSTMAPERORMESGO
            PERFORM G1000-SEND-MSGS-MAPS                     
    END-EVALUATE.                                           
MAIN-PROCESS-EXIT.                                           
    EXIT.                                                   
    GOBACK.
****************************************************   
P2000-SEND-INIT-MAPS            SECTION.                         
    MOVE LOW-VALUE              TO FRSTMAPO.                     
    MOVE CURRENT-TRANSACTION-ID TO FRSTMAPTRANIDO.                   
    MOVE EIBTRMID               TO FRSTMAPTERMIDO.                   
    MOVE 'Select your option'   TO FRSTMAPERORMESGO.                 
    EXEC CICS SEND MAP    (K-MAP-NAME)                           
                   MAPSET (K-MAPSET-NAME)                       
                   FROM   (FRSTMAPO)                             
                   CURSOR                                       
                   FREEKB                                       
                   ERASE                                         
    END-EXEC.                                                   
P2000-SEND-INIT-MAPS-EXIT.                                       
    EXIT.
****************************************************   
G1000-SEND-MSGS-MAPS            SECTION.           
    MOVE CURRENT-TRANSACTION-ID TO FRSTMAPTRANIDO.       
    MOVE EIBTRMID               TO FRSTMAPTERMIDO.       
    EXEC CICS SEND MAP    (K-MAP-NAME)             
                   MAPSET (K-MAPSET-NAME)           
                   FROM   (FRSTMAPO)               
                   CURSOR                           
                   FREEKB                           
                   ERASE                           
    END-EXEC.                                       
G1000-SEND-MSGS-MAPS-EXIT.                         
    EXIT.                                           
****************************************************
   P1000-DO-PROG-ACCTOP  SECTION.                     
    EXEC CICS LINK PROGRAM  ('ACCTOPEN')           
            COMMAREA (ACCTOPENCOMA-COMMAREA)           
            LENGTH   (ACCTOPENCOMA-COMMAREA-LENGTH)   
    END-EXEC.                                     
P1000-DO-PROG-ACCTOP-EXIT.                         
    EXIT.


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

And this is my secound program. (ACCTOPEN)

LINKAGE SECTION.                                                 
01  DFHCOMMAREA                     PIC X.                       
****************************************************
PROCEDURE DIVISION.                                             
    PERFORM P2000-SEND-INIT-MAPS.                               
    IF  EIBAID = DFHPF2   THEN                                   
        PERFORM P2000-SEND-EMPT-MAPS.                           
    IF  EIBAID = DFHPF3   THEN                                   
        PERFORM X0000-EXIT-TO-LASTPG.                           
MAIN-PROCESS-EXIT. 
    EXIT.           
    GOBACK.         
****************************************************
P2000-SEND-INIT-MAPS            SECTION.                       
    MOVE LOW-VALUE              TO ACCTOPENMAPO.                   
    MOVE CURRENT-TRANSACTION-ID TO ACCTOPENMAP-TRANIDO.               
    MOVE EIBTRMID               TO ACCTOPENMAP-TERMIDO.               
    MOVE SET-CURSOR-POSITION    TO ACCTOPENMAP-BRANCODE-HL.           
   MOVE 'PRESS PF4=OPEN ACCOUNT | PF2=NEW DATA | PF3=EXIT'     
   TO ACCTOPENMAP-INFOMESGO.                                         
    EXEC CICS SEND MAP    (K-MAP-NAME)                             
                   MAPSET (K-MAPSET-NAME)                         
                   FROM   (ACCTOPENMAPO)                               
                   CURSOR                                         
                   FREEKB                                         
                   ERASE                                           
    END-EXEC.                                                     
P2000-SEND-EMPT-INIT-EXIT.                                         
    EXIT.                                                         
****************************************************
P2000-SEND-EMPT-MAPS            SECTION.                       
    MOVE LOW-VALUE              TO ACCTOPENMAPO.                   
    MOVE CURRENT-TRANSACTION-ID TO ACCTOPENMAP-TRANIDO.               
    MOVE EIBTRMID               TO ACCTOPENMAP-TERMIDO.               
    MOVE SET-CURSOR-POSITION    TO ACCTOPENMAP-BRANCODE-HL.           
    MOVE 'REDAY FOR INSERT NEW DATA '
    TO ACCTOPENMAP-INFOMESGO.             
    EXEC CICS SEND MAP    (K-MAP-NAME)                         
                   MAPSET (K-MAPSET-NAME)                       
                   FROM   (ACCTOPENMAPO)                           
                   CURSOR                                       
                   FREEKB                                       
                   ERASE                                       
    END-EXEC.                                                   
P2000-SEND-EMPT-MAPS-EXIT.                                     
    EXIT.
**************************************************** 
X0000-EXIT-TO-LASTPG  SECTION.               
        EXEC CICS RETURN TRANSID('ACMU')     
        END-EXEC.                             
X0000-EXIT-TO-LASTPG-EXIT.                   
    EXIT.                                     


Where ACMU is the first program tranaciotn ID.
Whit the must regards and thank you.
Mehdi shri
 
Posts: 138
Joined: Sun Jan 16, 2011 6:30 pm
Has thanked: 57 times
Been thanked: 0 time

Re: How to handle a program to return by PF3 key?

Postby Monitor » Mon Jul 22, 2013 7:19 pm

You didnt read about Pseudo Conversation! Your program lacks some basics like RETURN TRANSID() COMMAREA and RECEIVE MAP, to mention some. I will not write a complete program.
Monitor
 
Posts: 98
Joined: Wed Jan 18, 2012 8:59 pm
Has thanked: 0 time
Been thanked: 7 times

Re: How to handle a program to return by PF3 key?

Postby Robert Sample » Mon Jul 22, 2013 8:15 pm

Mehdi shri, properly coded pseudo-conversational CICS programs will handle PF3 (or any other PF) key as part of the normal program logic. As Monitor indicated, your program is NOT properly coded hence there should be no surprise that it does not handle PF3 as it should.
Robert Sample
Global moderator
 
Posts: 3719
Joined: Sat Dec 19, 2009 8:32 pm
Location: Dubuque, Iowa, USA
Has thanked: 1 time
Been thanked: 279 times


Return to CICS

 


  • Related topics
    Replies
    Views
    Last post