Topic
9 replies Latest Post - ‏2013-05-21T17:32:18Z by Jeff.Douglas
Nithyakala
Nithyakala
5 Posts
ACCEPTED ANSWER

Pinned topic Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

‏2013-04-25T12:51:46Z |

We need to develop PF3 key functionality from PBM000A program(EGL) to COMSEC Menu.
When we press PF3 key in PBML00 screen control should be sent to "PRIMARY OPTIONS MENU".
 
I am calling PBM00-TSFR-PGM() function when pressing PF3 key in PBM000A program.

Function PBM00-TSFR-PGM()

sysVar.transferName = "PBMEXIT";
transfer to transaction sysVar.transferName passing PBMREC1 ;

end // end PBM00-TSFR-PGM()

 PBMREC1 record:
 Record PBMREC1 type basicRecord  
  3 DATA char(500);
  end // end PBMREC1

I have attached the source code for PBMEXIT Program and PBMEXIT PSB.
I compiled the program PBMEXIT and link edited. Also copied the load modules to the correct library where PBM000A will look for load module.
I refreshed the IMS region and pressed PF3 key from PBML00 screen.

Getting the abend as shown below.

1GU CALL STATUS CODE=            
 SPA LENGTH=             0       
 SPA TRAN CODE=                 
 PBMEXIT PROGRAM ERROR INSERT SPA IO_PCB.STATUS_CODE=QF
 PBMEXIT PROGRAM ERROR INSERT MOD IO_PCB.STATUS_CODE=QH

Kindly help us to resolve this issue.

Please let us know the reason for this abend and how to resolve this issue.

Thanks for your help & support in advance.

 

Attachments

  • Hsieh
    Hsieh
    511 Posts
    ACCEPTED ANSWER

    Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

    ‏2013-04-25T13:55:33Z  in response to Nithyakala

    Could you attached EGL source ?

    Does abend occurs when PF3 key is pressed or inside of PBMEXIT ?
     

    Hsieh

    • markevans
      markevans
      2523 Posts
      ACCEPTED ANSWER

      Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

      ‏2013-04-25T21:30:20Z  in response to Hsieh

      Hi,

      From your messages, you are failing within your PLI program not within the EGL program.

      Looking up the IMS status codes, they mean this:

       

      QF
      Explanation:

      Start of change

      • If in a non-shared queues environment, segment length is less than five characters (segment length is message text length plus four control characters).

      • If in a shared queues environment and the application program ISRT(s) results in a message that spans multiple queue buffers, the second and subsequent buffers are PUT to the shared queues. If the shared queues are full and those CQS PUTs are rejected, this results in a STATUSQF being passed back to the application program.

      End of change

      Programmer response:

      Start of change

      • If a non-shared queues environment, correct the segment and issue a ROLB to back out any incomplete data.

      • If a shared queues environment, follow the procedure to increase queue size.

      End of change

      QH
      Explanation:

      There has been a terminal symbolic error. The output logical terminal name or transaction code is unknown to IMS. Some reasons for receiving this status code are:

      • The program tried to insert an alternate response PCB receiving a QC status code for a GU call.

      • The program tried to insert to an I/O PCB that has a logical terminal name of blanks. This could occur after the program issued a GU call for a message that originated either from a batch-oriented BMP or a CPI Communications driven program.

      • SMB or CNT could not be found.

      • The program deallocated a conversation with a SETO call with the DEALLOCATE_ABEND option. Any subsequent ISRT calls are rejected with this status code.

      • The program issued an ISRT call without first issuing a GU call.

      • The logical terminal name or transaction code specified is Fast Path exclusive and is not available to this program.

      • The program issued an ISRT call for a segment shorter than 5 bytes.

      • The program issued an ISRT call for a SPA shorter than 6 bytes.

      • The logical terminal name or transaction code has leading blanks, instead of being left-aligned.

      Programmer response:

      Check the logical terminal name or transaction code, and correct it.

      I noticed you are blanking out the transaction code in the PLI program before the isrt call.

      Also... you did not list the other trace entries you are doing... so not sure if they would tell you more about what you are asking IMS to do.

      There is a SPASIZE build descriptor in EGL... don't know if that would have any relation to this problem.    Did you use it when you genned the EGL program.

      You may also want to look at this section in the EGL helps:

      http://publib.boulder.ibm.com/infocenter/rbdhelp/v8r0m0/topic/com.ibm.egl.pg.doc/topics/pegl_xfer_ims_spa_ref.html

       

      And finally, you may want to look at the materials in the EGL Learning Center in the module named IMS for the EGL Developer.   Slide 211 has some info about message switching (transfer to transaction being one of them).

      The link to this is:

      http://www.ibm.com/developerworks/community/wikis/home?lang=en-us#/wiki/EGL%20Learning%20Center/page/EGL%20for%20the%20IMS%20Developer%20-%20Course%20Materials

       

      • Nithyakala
        Nithyakala
        5 Posts
        ACCEPTED ANSWER

        Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

        ‏2013-05-06T06:04:10Z  in response to markevans

        Hi Mark,

            Thanks for your comments.
           
            I have corrected the Transaction code before insert call and tried .
            Actually PBMEXIT program is getting abended in GU call itself.
            
            Abend details displayed in  COMSEC screen:
                                                                                         
                                                                                        
         DFS555I TRAN PBMEXIT  ABEND S000,U4087 ;                  MSG IN PROCESS:      
         QMGR RC NE 0, MSG NOT AVAIL                                                    
          2013/123  12:09:21     

           These are some Trace statements I got in SYSPRINT of spool.

           1TRACEA: PBMEXIT INVOKED                                         
         TRACEB:START                                                    
         TRACEC:TERMINAL        :                        IN18056         
         TRACED:STATUS_CODE     :                                        
         TRACEE:CURRENT_DATE    :                             13123      
         TRACEF:CURRENT_TIME    :                           1209169      
         TRACEG:MESSAGE_SEQ_NUM :                                    12  
         TRACEH:MOD_NAME        :                        PBM000O         
         TRACEI:USER_ID         :                        IN18056         

         Please find the complete job details in the attached joblog.txt file.

         I have checked the SPASIZE in the build descriptor. We are using the SPASIZE as 4082 in build descriptor as well as in PBMEXIT program.
         
         I have checked the slide number 211 it is mentioned that for Immediate program-to-program message switch "The FormGroup can be the same or different for the two programs." . Could you please tell me where I can find the formgroup.


        PBM000A is main program which is calling PBMEXIT when PF3 key is pressed. We are using  PBM00-TSFR-PGM Para to transfer the control to PBMEXIT program.  

        PBMREC1 record:

         Record PBMREC1 type basicRecord  
          3 DATA char(500);
          end // end PBMREC1

        Function PBM00-TSFR-PGM()

        sysVar.transferName = "PBMEXIT";
        transfer to transaction sysVar.transferName passing PBMREC1 ;

        end // end PBM00-TSFR-PGM()

          I have one more questions. Generally to transfer the control to COMSEC menu I got the below mentioned 2 approaches from 2 teams.
        Can you please tell me which one is appropriate.

        1. MK508 common module can be used to display COMSEC Menu.
        2. New PLI program should be used to transfer control to COMSEC menu.

        I have tried the first option as well. But it is not working.
        If you could tell me the correct approach I will concentrate on that approach.

        Please let me know your comments.
        Thanks for your help in advance.

        Thanks,
        Nithyakala

        Attachments

        • Jeff.Douglas
          Jeff.Douglas
          157 Posts
          ACCEPTED ANSWER

          Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

          ‏2013-05-06T12:53:44Z  in response to Nithyakala

          It appears that you are getting into a recursive abend situation which is reported by the U4087 abend. The program that is abending is PBMEXIT at offset 4C2. The abend code is an 0C1 which means an invalid instruction is trying to be executed. There is not enough in the joblog.txt file that was attached for me to get any more information that this, however, your system is using Fault Analyzer and a dump was taken. You could look and see what FA is complaining about, or if you need assistance I could help. 

          This information would be helpful: 1) if PBMEXIT is an EGL program, then make sure it has been generated with statement trace, 2) the compiler listing from PBMEXIT that includes the assembler code for the instructions - if this is cobol, then use compiler option LIST, 3) a complete joblog.txt, 4) a Fault Analzyer dump that is downloaded in binary and sent to us (I think you would use TERSE to copy the FA dataset and make it so it could be downloaded as binary).

          Is PBMEXIT an EGL program or a user written program?

           

           

           12.09.22 JOB14836  +IDI0002I Module PBMEXIT, program PBMEXIT, offset X'4C2': Abend U4087
           12.09.23 JOB14836  IEA995I SYMPTOM DUMP OUTPUT  462
           
          • Nithyakala
            Nithyakala
            5 Posts
            ACCEPTED ANSWER

            Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

            ‏2013-05-09T10:49:48Z  in response to Jeff.Douglas

            Thanks for the details.

            PBMEXIt is a user written PLI Program.
            I have attached the compile listing of PBMEXIT program.
            PBMEXIT program is abending in 'GU' call.
            I have attached the complete JOBLOG details already.
            I need your assistance  to download FA dump.Could you please help me.
            I have attached the IDIREPORT available on Spool for this job.

             

            Thanks,

            Nithyakala
             

            Attachments

            • Jeff.Douglas
              Jeff.Douglas
              157 Posts
              ACCEPTED ANSWER

              Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

              ‏2013-05-09T15:33:01Z  in response to Nithyakala

              I have looked at your Fault Analyzer report and found a couple of strange things going on. The most important one is this message:

               

               <H3> Anywhere Heap Analysis
               
               *ERROR* The eyecatcher in the HANC at address 1C9B7000 + X'0' is not valid - the characters "HANC" were expected
               

              This generally happens when a storage overlay has happened. It is likely that some type of memory corruption is occurring.

              The 2nd problem I found, is that on the call to PLITDLI, it looks like the address of the 4 arguments is right at the start of memory that is not accessible.

              Also, it seems that you are using an old, out of support PL/I compiler. You should be using the enterprise edition, not the MVS and VM edition.

              I have also talked with a level 2 PL/I person, who pointed me at the storage violation problem. They need you to open a PMR against PL/I so they can investigate this with some more information from you. Please open the PMR and then IBM support is more than happy to help.

              • Nithyakala
                Nithyakala
                5 Posts
                ACCEPTED ANSWER

                Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

                ‏2013-05-17T11:06:22Z  in response to Jeff.Douglas

                Thanks.

                Could you please give me the procedure to open PMR and raise PL/I compiler upgrade request.

                 

                • Nithyakala
                  Nithyakala
                  5 Posts
                  ACCEPTED ANSWER

                  Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

                  ‏2013-05-17T11:50:02Z  in response to Nithyakala

                  Hi All,  

                      I have corrected the Transaction code before insert call and tried .
                      Actually PBMEXIT program is getting abended in GU call itself.
                      
                      Abend details displayed in  COMSEC screen:
                                                                                                   
                                                                                                  
                   DFS555I TRAN PBMEXIT  ABEND S000,U4087 ;                  MSG IN PROCESS:      
                   QMGR RC NE 0, MSG NOT AVAIL                                                    
                    2013/123  12:09:21     

                     These are some Trace statements I got in SYSPRINT of spool.

                     1TRACEA: PBMEXIT INVOKED                                         
                   TRACEB:START                                                    
                   TRACEC:TERMINAL        :                        IN18056         
                   TRACED:STATUS_CODE     :                                        
                   TRACEE:CURRENT_DATE    :                             13123      
                   TRACEF:CURRENT_TIME    :                           1209169      
                   TRACEG:MESSAGE_SEQ_NUM :                                    12  
                   TRACEH:MOD_NAME        :                        PBM000O         
                   TRACEI:USER_ID         :                        IN18056         

                   Please find the complete job details in the attached joblog.txt file.

                   I have checked the SPASIZE in the build descriptor. We are using the SPASIZE as 4082 in build descriptor as well as in PBMEXIT program.
                   
                   I have checked the slide number 211 it is mentioned that for Immediate program-to-program message switch "The FormGroup can be the same or different for the two programs." . Could you please tell me where I can find the formgroup.


                  PBM000A is main program which is calling PBMEXIT when PF3 key is pressed. We are using  PBM00-TSFR-PGM Para to transfer the control to PBMEXIT program.  

                  PBMREC1 record:

                   Record PBMREC1 type basicRecord  
                    3 DATA char(500);
                    end // end PBMREC1

                  Function PBM00-TSFR-PGM()

                  sysVar.transferName = "PBMEXIT";
                  transfer to transaction sysVar.transferName passing PBMREC1 ;

                  end // end PBM00-TSFR-PGM()

                    I have one more questions. Generally to transfer the control to COMSEC menu I got the below mentioned 2 approaches from 2 teams.
                  Can you please tell me which one is appropriate.

                  1. MK508 common module can be used to display COMSEC Menu.
                  2. New PLI program should be used to transfer control to COMSEC menu.

                  I have tried the first option as well. But it is not working.
                  If you could tell me the correct approach I will concentrate on that approach.

                  Please let me know your comments.
                  Thanks for your help in advance.

                  Thanks,
                  Nithyakala

                  • Jeff.Douglas
                    Jeff.Douglas
                    157 Posts
                    ACCEPTED ANSWER

                    Re: Need Help to develop PF3 functioality from PBML00 screen to COMSEC Menu

                    ‏2013-05-21T17:32:18Z  in response to Nithyakala

                    From what I am reading here, it seems that your EGL application is trying to do a transfer (and pass a data record) to a non-EGL program/transaction called PBMEXIT. It also seems that the abend is occurring in PBMEXIT.

                    I'd have to do some research to verify this, but I believe that EGL is passing the data record as part of the output message being sent to IMS, that becomes the input message to your non-EGL transaction. There might be a 10 byte header to this record as well. I think you need to dump the data that you received as part of the input message. This new transaction called PBMEXIT will need to have an ACB set up with the same name, and it will need to have an IOPCB defined, using CMPAT=YES in the PSB definition. As this is an abend in a user-written program, you will need to determine what the problem is.

                    Why are you using a non-EGL program for this exit in the first place? You could transfer to an EGL transaction instead and pass the data record along and have an EGL transaction display this COMSEC menu instead. It might be easier to do this as an alternative to writing a PL/I user exit.