MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

PSB Definition error

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> IMS
View previous topic :: View next topic  
Author Message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Tue Jan 30, 2007 4:22 am    Post subject: PSB Definition error Reply with quote

Dear All,

I'm new to IMS, I've created a DBD and PSB and given to DBA to generate it. ANd then i Coded a program to perform various operations on the Database such as LOAD/READ/WRITE/REPLACE/DELETE. It is an online program where CICS is used as the Front-end screen. Also I'm using the new method called "EXEC DLI" method. And the first command which i'm using in all of my online program is SCHEDULING the PSB. The command is as follows:

Code:

EXEC DLI SCHD PSB(TIMBFH01)
END-EXEC.   


When i try to execute the transaction, the program failed at the PSB sceduling command itself with the ABEND DHTJ.

And the Quick reference manual provides the following error description:

Explanation: A task has issued a program specification block (PSB) schedule request but the request failed because CICS is not connected to DBCTL.

But my DBA is telling that it is a problem with my PSB definitions:

PCB TYPE=DB,DBDNAME=PAYROLL,KEYLEN=32,PROCOPT=LS
SENSEG NAME=MASTER,PARENT=0
SENSEG NAME=SALARY,PARENT=MASTER
SENSEG NAME=LEAVE,PARENT=MASTER
SENSEG NAME=BONUS,PARENT=MASTER
PSBGEN PSBNAME=PAYRLPSB,LANG=COBOL
END

Do I have mdoify the PSB and include one more PCB for different Procopt,

Please help me out in this regard,

Thank you,

Regards,
Praveen
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Tue Jan 30, 2007 4:31 am    Post subject: Reply with quote

Correction in the above PSB:

Code:

PCB TYPE=DB,DBDNAME=PAYROLL,KEYLEN=32,PROCOPT=LS
SENSEG NAME=MASTER,PARENT=0
SENSEG NAME=SALARY,PARENT=MASTER
SENSEG NAME=LEAVE,PARENT=MASTER
SENSEG NAME=BONUS,PARENT=MASTER
PSBGEN PSBNAME=TIMBFH01,LANG=COBOL
END

Do I have mdoify the PSB and include one more PCB for different Procopt,

Please help me out in this regard,

Thank you,

Regards,
Praveen
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Tue Jan 30, 2007 2:48 pm    Post subject: Reply with quote

Did you make an entry into the RCT table ?
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Wed Jan 31, 2007 6:40 am    Post subject: Reply with quote

Hi Programmer,

Yes an entry has been made in the RCT table is the statement from my DBA,

This is how my DBA generated the PSB and ACB:

Code:

//TIMBFH01 EXEC GENPSBV,SPSB=TIMBFH01,                                 
//             LNKPSB=TIMBFH01                                         
//C.SYSIN DD *                                                         
         PRINT NOGEN                                                   
PCB01    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=LS,                                             *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                       
PCB02    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=A,                                              *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                       
         PSBGEN LANG=COBOL,PSBNAME=TIMBFH01
         END                                                           
//*                                                                     
//TIMOSM01 EXEC GENPSBV,SPSB=TIMOSM01,                                 
//             LNKPSB=TIMOSM01                                         
//C.SYSIN DD *                                                         
         PRINT NOGEN                                                   
PCB01    PCB   TYPE=TP,                                                *
               LTERM=TERM1                                             
         PSBGEN LANG=COBOL,PSBNAME=TIMOSM01                             
         END                                                           
//*                                                                     
//ACB    EXEC GENACBV                                                   
//ACB.SYSIN DD *                                                       
         BUILD PSB=TIMBFH01                                             
         BUILD PSB=TIMOSM01                                             
//*

Also he is insisting that the problem is with the PSB definitions / Procoptions,

Any idea what went wrong in the PSB definitions?

Thanks in Advance

Regards,
Praveen
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Wed Jan 31, 2007 11:43 am    Post subject: Reply with quote

Can you try changing the schedule call to:

EXEC DLI SCHD PSB(TIMBFH01) NODHABEND
END-EXEC.

and rerun the program.

This call should atleast give you a proper IMS error code that can be looked at.
DHTJ is a generic CICS code, which would be issued for any kind of failure while talking to IMS.
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Wed Jan 31, 2007 12:38 pm    Post subject: Reply with quote

Also, if you are using DBCTL, you will need to include I/O PCB and Alternate PCB in your PSB and your schedule call will change to:

EXEC DLI SCHD PSB(TIMBFH01) SYSSERVE
END-EXEC.
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Fri Feb 02, 2007 12:46 am    Post subject: Reply with quote

Dear Programmer,

I tried the following command as per your advice,

EXEC DLI SCHD PSB(TIMBFH01) NODHABEND
END-EXEC.

And i displayed the error message in the screen,

The program failed at scheduling with an error code = "TE"

And the ABEND i got along with this is "DHTE"

The Quick reference manual says the following message:

Explanation:
A task has issued a terminate request but the request failed because the program specification block (PSB) is not scheduled.

It seems to the program is unable to initialise the PSB!

Do i have to change the procopt in the PCB's or should i have to include some more PCB. Need your suggestions please,
Thank you,

Regards,
Praveen
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Fri Feb 02, 2007 8:15 pm    Post subject: Reply with quote

As per my knowledge, changing the procopt should not work because you are facing an abend at scheduling stage.

Did you try including Alternate PCB in the PSB block?

Try the following:

1) Include Alternate PCB in your PSB block
2) Issue the schedule request as :
EXEC DLI SCHD PSB(TIMBFH01) SYSSERVE
END-EXEC.

Hopefully this should take us to the next stage !
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Mon Feb 05, 2007 7:51 am    Post subject: Reply with quote

Dear Programmer,

Thanks a lot for your valuable suggestions,

As per your advice, I tried the following code with the different PSB name and the curent error got cleared.

Code:

EXEC DLI SCHD PSB(TIMOSM01) SYSSERVE
END-EXEC.


And I have update the PSB information and given back to my DBA for generation process.
The updated code is as follows:
Code:

//TIMBFH01 EXEC GENPSBV,SPSB=TIMBFH01,                                 
//             LNKPSB=TIMBFH01                                         
//C.SYSIN DD *                                                         
         PRINT NOGEN                                                   
PCB01    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=LS,                                             *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                     
PCB02    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=GOP,                                            *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                     
PCB03    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=AP,                                             *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                                                                                           
PCB04    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=A,                                              *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*                                                                       
         PSBGEN LANG=COBOL,PSBNAME=TIMBFH01
         END                                                           
//*
--------------------------------------------------------------------------------                                                                   
//TIMOSM01 EXEC GENPSBV,SPSB=TIMOSM01,                                 
//             LNKPSB=TIMOSM01                                         
//C.SYSIN DD *                                                         
         PRINT NOGEN                                                   
PCB01    PCB   TYPE=TP,                                                *
               LTERM=TERM1                                             
PCB02    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=LS,                                             *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER 
*
PCB03    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=GOP,                                            *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*
PCB04    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=AP,                                             *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*
PCB05    PCB   TYPE=DB,                                                *
               DBDNAME=PAYROLL,                                        *
               PROCOPT=A,                                              *
               KEYLEN=32                                               
         SENSEG NAME=MASTER,PARENT=0                                   
         SENSEG NAME=SALARY,PARENT=MASTER                               
         SENSEG NAME=LEAVE,PARENT=MASTER                               
         SENSEG NAME=BONUS,PARENT=MASTER                               
*
         PSBGEN LANG=COBOL,PSBNAME=TIMOSM01,CMPAT=YES
         END                                                           
//*                                                                     
//ACB    EXEC GENACBV                                                   
//ACB.SYSIN DD *                                                       
         BUILD PSB=TIMBFH01                                             
         BUILD PSB=TIMOSM01                                             
//*


In IMS batch modules, what is the replacement for "ENTRY 'DLITCBL' USING PCB-MASK1." statement in "EXEC DLI" Method; Any idea in this regard would be a Great help for me, Thank you.

Best Regards,
Praveen

Best Regards,
Praveen
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Mon Feb 05, 2007 1:36 pm    Post subject: Reply with quote

Praveen,

I don't think we need an ENTRY statement if the program is invoked from a CICS transaction.

You just need to schedule your PSB to CICS and after use, you must Terminate your PSB.
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Tue Feb 06, 2007 12:05 am    Post subject: Reply with quote

Dear Programmer,

I'm actually working in 2 separate modules.

1. COBOL+CICS+IMS-DB ( Online )

2. COBOL+JCL+IMS-DB ( Batch )

As I mentioned earlier, I need to use "Entry" statement in the "Batch" Modules. And we are forced to use "EXEC DLI" Method instead of "CALL 'CBLTDLI'" method, since our client system doesn't support "Call CBLTDLI" statements any longer in their mainframe systems. Also in "EXEC DLI" method, there is no need to declare any PCB mask in the Linkage system, In such cases, what would be the replacement for "ENTRY 'DLITCBL'" Statement in "EXEC DLI" method? Any suggestions in this regard would be a Great help for me, Thanks in Advance

Best Regards,
Praveen
Back to top
View user's profile Send private message
programmer1
Beginner


Joined: 18 Feb 2004
Posts: 138
Topics: 14

PostPosted: Tue Feb 06, 2007 12:31 pm    Post subject: Reply with quote

Sorry Praveen, I just assumed that you are working only on the IMS-CICS program.

For a batch program just specify the option as DLI if you don't want to use the conventional ENTRY statement.
_________________
Regards,
Programmer
Back to top
View user's profile Send private message
pravonline
Beginner


Joined: 09 Jan 2007
Posts: 7
Topics: 1

PostPosted: Fri Feb 16, 2007 5:07 am    Post subject: Reply with quote

Dear Programmer,

In Batch modules, Can you please explain me about the replacement statement for "ENTRY" statement in EXEC DLI method for mapping the PSB . if you can you please provide me an example for that would be a Great help for me in rectifying the error in my program. or just give me the steps to follow for retrieving a record in IMS DB in EXEC DLI format.

Thanks in Advance,

Regards,
Praveen
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> IMS All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group