View previous topic :: View next topic
|
Author |
Message |
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
Hi all,
I had a written a sample PL/I-IMS program which just reads a record from IMS Database...
I was able to compile and link-edit it.
But, when i made the program to run, it ended up in "Abend Code U0260".
The reasons are listed below:-
* The number of parameters in the application program call to IMS
exceeded the allowable limit of 18 or is equal to 0.
* The checkpoint call was used and one of the following applies:
- Too few parameters were specified.
- The number of user-specified areas exceeds the number specified on
the XRST call.
- The user area parameters are not paired (a length and address for
each area to be dumped).
* The application program overlaid the DL/I function code so that the
first character was not alphanumeric. This causes the field to be
treated as a count field.
I am not using any check-point ny my sample program.
Can anyone help me out in this.
I am very much new to both (PL/I & IMS).
Thanks In advance.
Thank you,
__________________
Abhilash G S |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Please post the code regarding to the DLI-call so we can help you better. Now your post only displays the possible reasons for the 0260. |
|
Back to top |
|
|
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
Hi,
Thanks for your instant reply.
I am herewith posting the code i have written, hope u can help me out.
PLIIMS: PROCEDURE(IO_PTR_MAST,DB_PTR_MAST,DB_PTR_DETAIL) OPTIONS(MAIN);
DCL IO_PTR_MAST POINTER;
DCL DB_PTR_MAST POINTER;
DCL DB_PTR_DETAIL POINTER;
DCL PLITDLI ENTRY EXTERNAL;
DCL FUNC_GU CHAR(4) INIT('GU ');
DCL FUNC_GN CHAR(4) INIT('GN ');
DCL FUNC_GHU CHAR(4) INIT('GHU ');
DCL FUNC_GHN CHAR(4) INIT('GHN ');
DCL FUNC_GNP CHAR(4) INIT('GNP ');
DCL FUNC_GHNP CHAR(4) INIT('GHNP');
DCL FUNC_ISRT CHAR(4) INIT('ISRT');
DCL FUNC_REPL CHAR(4) INIT('REPL');
DCL FUNC_DLET CHAR(4) INIT('DLET');
DCL 1 DB_IO_AREA,
2 EMPL_EID CHAR(5),
2 EMPL_ENAME CHAR(25),
2 EMPL_BYYYY CHAR(04),
2 EMPL_BMM CHAR(02),
2 EMPL_BDD CHAR(02),
2 EMPL_HYYYY CHAR(04),
2 EMPL_HMM CHAR(02),
2 EMPL_HDD CHAR(02),
2 EMPL_ADDR1 CHAR(40),
2 EMPL_ADDR2 CHAR(40),
2 EMPL_CITY CHAR(15),
2 EMPL_STATE CHAR(15),
2 EMPL_PCODE CHAR(10),
2 EMPL_CNTRY CHAR(15),
2 EMPL_PHONE CHAR(12),
2 EMPL_FAX CHAR(12);
DCL 1 QUAL_SSA STATIC UNALIGNED,
2 SEG_NAME CHAR(8) INIT('EMPLOYEE'),
2 SEG_QUAL CHAR(1) INIT('('),
2 SEG_KEY_NAME CHAR(8) INIT('EMPID '),
2 SEG_OPR CHAR(2) INIT(' ='),
2 SEG_KEY_VALUE CHAR(6) INIT('48047'),
2 SEG_END_CHAR CHAR(1) INIT(')');
DCL 1 UNQUAL_SSA STATIC UNALIGNED,
2 SEG_NAME_U CHAR(8) INIT('EMPLOYEE'),
2 BLANK CHAR(1) INIT(' ');
DCL 1 IO_PCB BASED (IO_PTR_MAST),
2 FILLER CHAR(10),
2 STAT CHAR(2);
DCL 1 DB_PCB_MASK BASED (DB_PTR_MAST),
2 MAST_DB_NAME CHAR(8),
2 MAST_SEG_LEVEL CHAR(2),
2 MAST_STAT_CODE CHAR(2),
2 MAST_PROC_OPT CHAR(4),
2 FILLER FIXED BINARY (31,0),
2 MAST_SEG_NAME CHAR(8),
2 MAST_LEN_KFB FIXED BINARY (31,0),
2 MAST_NO_SENSEG FIXED BINARY (31,0),
2 MAST_KEY_FB CHAR (4);
DCL FOUR FIXED BINARY (31,0) INITIAL(4);
DISPLAY ('MAST_STAT_CODE');
CALL PLITDLI (FOUR,FUNC_GU,DB_PCB_MASK,
DB_IO_AREA,QUAL_SSA);
DISPLAY ('MAST_STAT_CODE');
RETURN;
END PLIIMS;
Waiting for your reply,
Thank you,
___________
Abhilash G S |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Could you try to modify:
Code: |
DCL FUNC_GU CHAR(4) INIT('GU ');
DCL FUNC_GN CHAR(4) INIT('GN ');
DCL FOUR FIXED BINARY (31,0) STATIC INITIAL(4);
|
I will have to look further |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Is your io-area large enough to keep the entire segment? |
|
Back to top |
|
|
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
hi,
yes.
I just want one occurance of segment, as i have mentioned in the ssa,
i just want to fetch all the detail of "48047" employee.(i.e, only one record).
Thank you,
_________
Abhilash G S |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
My guess is this has to do with static. Did you check your compile listing for overlay warnings?
Quote: |
* The application program overlaid the DL/I function code so that the
first character was not alphanumeric. This causes the field to be
treated as a count field.
|
|
|
Back to top |
|
|
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
When i compile my program i am getting no warnings, infact return code is zero for compiling and link editing. |
|
Back to top |
|
|
donateeye
New User
Joined: 01 Jun 2007 Posts: 62 Location: chennai
|
|
|
|
hi,
first why, char(4) for function??
second, please try the same call using unqualifies ssa. i know it will browse through all, but still lets try we get what we want
third, try using command code C, u have the key values right..??
Also, just make sure you have the big area for your IO area, cos, it seems like as if you are fetching the root, i understand you want the whole record, but do you have the IO area structure specifying all the segment fileds???
Please check... meanwhile let me think of anything else.. |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Quote: |
first why, char(4) for function??
|
that's normal; init is 'GU ' and not 'GU '. IMHO boundary misses since it's all dynamic and not static.
Quote: |
second, please try the same call using unqualifies ssa. i know it will browse through all, but still lets try we get what we want
|
just a simple'unqualified SSA won't browse the whole database; just the first root.
Quote: |
Also, just make sure you have the big area for your IO area, cos, it seems like as if you are fetching the root, i understand you want the whole record, but do you have the IO area structure specifying all the segment fileds??? |
asked him that and he confirmed it |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Why is the display statement in your source? |
|
Back to top |
|
|
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
hi,
the display statements were put to just check the status code,
its not for any reference.
And about the command code C....i am not able to figure it out.... |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Display in PL/1 is for sending a message to a user. Use put skip in stead of cobol display. |
|
Back to top |
|
|
abhilash g s
New User
Joined: 27 Apr 2007 Posts: 37 Location: bangalore
|
|
|
|
hi,
Thanks for your reply,
Actually, I dont wont the display, it was added later.
Do you have any sample program structure of this kind?
We are just testing this(PL/I-IMS) evironment on our system,It would be of great help. |
|
Back to top |
|
|
Mistermind
New User
Joined: 08 Feb 2008 Posts: 46 Location: Dublin
|
|
|
|
From memory,
try change your program name from PLIIMS to DLITPLI and recompile. |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Mistermind wrote: |
From memory,
try change your program name from PLIIMS to DLITPLI and recompile. |
Why |
|
Back to top |
|
|
|