View previous topic :: View next topic
|
Author |
Message |
iqbal.mallick
New User
Joined: 13 Dec 2012 Posts: 14 Location: India
|
|
|
|
Hi,
I have written a simple IRXLOAD to load an rexx exec called CODCOVEX from my personel PDS 'WOK.CLAX.REXX1' into inter-storage location. The DD name that is being used from the JCL is EXECLOAD
Code: |
//EXECLOAD DSN=WOK.CLAX.REXX1,DISP=SHR |
The code is below:
Code: |
PGM1: PROC OPTIONS(MAIN);
/*********************************************************************/
/* COMPILE_DATE */
/*********************************************************************/
/*********************************************************************/
/* BUILTIN FUNCTIONS */
/*********************************************************************/
/* LINE INSERTED BY CODE COVERAGE TOOL - starts */
DCL SYSNULL BUILTIN;
DCL PLIRETV BUILTIN;
DCL IRXLOAD ENTRY EXTERNAL OPTIONS(ASSEMBLER RETCODE);
DCL 1 EXECBLK,
3 EXECBLK_ACRYN CHAR(8) INIT('IRXEXECB'),
3 EXECBLK_LENGTH FIXED BINARY(31) init(48),
3 EXECBLK_reserved FIXED BINARY(31) init(0),
3 EXECBLK_MEMBER CHAR(8) init('CODCOVEX'),
3 EXECBLK_DDNAME CHAR(8) init('EXECLOAD'),
3 EXECBLK_SUBCOM CHAR(8) init(' '),
3 EXECBLK_DSNPTR PTR,
3 EXECBLK_DSNLEN FIXED BINARY(31) init(25);
DCL 1 INSTBLK,
3 INSTBLK_ACRYN CHAR(8) init('IRXINSTB'),
3 INSTBLK_HDRLEN FIXED BINARY(31) init(128),
3 INSTBLK_ADDVEC PTR,
3 INSTBLK_USERLEN FIXED BINARY(31) init(72),
3 INSTBLK_MEMBER CHAR(8) init('CODCOVEX'),
3 INSTBLK_DDNAME CHAR(8) init('EXECLOAD'),
3 INSTBLK_SUBCOM CHAR(8) init(' '),
3 INSTBLK_DSNLEN FIXED BINARY(31) init(25),
3 INSTBLK_DSNNAME CHAR(54)
init('WOK.CLAX.REXX1(CODCOVEX)');
DCL 1 EVALBLK,
3 EVALBLK_EVPAD1 FIXED BINARY(31),
3 EVALBLK_EVSIZE FIXED BINARY(31),
3 EVALBLK_EVLEN FIXED BINARY(31),
3 EVALBLK_EVPAD2 FIXED BINARY(31),
3 EVALBLK_EVDATA CHAR(256);
DCL EXECBLK_PTR PTR;
DCL ARGTABLE_PTR PTR;
DCL INSTBLK_PTR PTR;
DCL RESERVED_PARM5 PTR;
DCL EVALBLK_PTR PTR;
DCL RESERVED_WORKAREA_PTR PTR;
DCL RESERVED_USERFIELD_PTR PTR;
DCL RESERVED_ENVBLOCK_PTR PTR;
DCL REXX_RETURN_CODE_PTR PTR;
DCL ARG1 CHAR(160);
DCL RUNINF CHAR(50);
DCL FLAGS CHAR(4);
DCL REXX_RETURN_CODE FIXED BINARY(31);
DCL RETURN_CODE FIXED BINARY(31);
EXECBLK_DSNPTR = SYSNULL;
EXECBLK_PTR = ADDR(EXECBLK);
EVALBLK_PTR = ADDR(EVALBLK);
EVALBLK_EVPAD1 = 0;
EVALBLK_EVSIZE = 34;
EVALBLK_EVLEN = 0;
EVALBLK_EVPAD2 = 0;
INSTBLK_PTR = ADDR(INSTBLK);
FLAGS = '40000000'x;
REXX_RETURN_CODE_PTR = ADDR(REXX_RETURN_CODE);
REXX_RETURN_CODE = 0;
INSTBLK_PTR = SYSNULL;
RESERVED_PARM5 = SYSNULL;
RESERVED_WORKAREA_PTR = SYSNULL;
RESERVED_USERFIELD_PTR = SYSNULL;
RESERVED_ENVBLOCK_PTR = SYSNULL;
/* Call the REXX exec */
FETCH IRXLOAD;
CALL IRXLOAD('STATUS ',
EXECBLK_PTR,
INSTBLK_PTR,
EVALBLK_PTR,
RETURN_CODE);
/* Handle the return code. */
PUT SKIP LIST(PLIRETV);
END PGM1; |
On execution of the above code I am getting
Code: |
IBM0534S ONCODE=8094 Protection exception
From entry point PGM1 at statement 1 at compile unit offset -2160938E at entry offset -2160938E at address 084F6D3A. |
Code: |
Traceback:
DSA Entry E Offset Statement Load Mod Program Unit
1 CEEHDSP +0000422C CEEPLPKA CEEHDSP
2 PGM1 -2160938E 1 CK7000
3 IBMPMINV +00000734 IBMPEV11 IBMPMINV
4 CEEEV011 +00000224 IBMPEV11 CEEEV011
5 CEEBBEXT +000001C4 CEEBINIT CEEBBEXT
DSA DSA Addr E Addr PU Addr PU Offset Comp Date Compile Attrib
1 29B1E750 0946FDF8 0946FDF8 +0000422C 20131101 CEL
2 29B1E420 29B000C8 29B000C8 -2160938E 20140407 ENT PL/I EBCDI
3 29B1E1A8 0B17E830 0B17E830 +00000734 20111006 LIBRARY
4 29B1E118 0B074118 0B074118 +00000224 20121022 LIBRARY
5 29B1E018 00CF29C0 00CF29C0 +000001C4 20110318 CEL
Condition Information for Active Routines
Condition Information for (DSA address 29B1E420)
CIB Address: 29B1F048
Current Condition:
CEE0198S The termination of a thread was signaled due to an unhandled condition.
Original Condition:
CEE3204S The system detected a protection exception (System Completion Code=0C4).
Location:
Program Unit: Entry: PGM1 Statement: 1 Offset: -2160938E
Machine State:
ILC..... 0000 Interruption Code..... 0004
PSW..... 078D1600 884F6D3A
GPR0..... 00000000_29B1E508 GPR1..... 00000000_29B1E4B8 GPR2..... 000
GPR4..... 00000000_29B1E4C8 GPR5..... 00000000_29B1E640 GPR6..... 000
GPR8..... 00000000_A9B1E4EC GPR9..... 00000000_00000004 GPR10.... 000
GPR12.... 00000000_00019BD8 GPR13.... 00000000_29B1E420 GPR14.... 000
FPC...... F0000000
FPR0..... 26100000 00000000 FPR1..... 00000000 00000000
FPR2..... 18000000 00000000 FPR3..... 00000000 00000000
FPR4..... 00000000 00000000 FPR5..... 00000000 00000000
FPR6..... 00000000 00000000 FPR7..... 00000000 00000000
FPR8..... 00000000 00000000 FPR9..... 00000000 00000000
FPR10.... 00000000 00000000 FPR11.... 00000000 00000000
FPR12.... 00000000 00000000 FPR13.... 00000000 00000000
FPR14.... 00000000 00000000 FPR15.... 00000000 00000000
Onchar= Character causing conversion error |
I will be very glad if anyone can help me in resolving this issue |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
did You check the compile and linkage editor return codes ??? |
|
Back to top |
|
|
iqbal.mallick
New User
Joined: 13 Dec 2012 Posts: 14 Location: India
|
|
|
|
Hi Enrico,
Thanks for your reply.
There seems to be no problem in compiler and linkage section. Both the step ended with RC=0
Compiler message
Code: |
15655-W67 IBM(R) Enterprise PL/I for z/OS PGM1: PROC OPTIONS(MAIN);
- Compiler Messages
0 Message Line.File Message Description
0 IBM2609I W 82.0 Comment contains a semicolon on line 86.0.
IBM1043I I 95.0 SYSPRINT is contextually declared as FILE.
- File Reference Table
0 File Included From Name
0 0 G262832.WOK.CLAX.REXX1(NSTBLK)
- Component Return Code Messages (Total/Suppressed) Time
0 MACRO 0 0 / 0 0 secs
Compiler 4 3 / 1 6 secs |
Linkage(bind) section
Code: |
1----------------------
MESSAGE SUMMARY REPORT
----------------------
TERMINAL MESSAGES (SEVERITY = 16)
NONE
SEVERE MESSAGES (SEVERITY = 12)
NONE
ERROR MESSAGES (SEVERITY = 08)
NONE
WARNING MESSAGES (SEVERITY = 04)
NONE
INFORMATIONAL MESSAGES (SEVERITY = 00)
2008 2278 2322
|
|
|
Back to top |
|
|
Nic Clouston
Global Moderator
Joined: 10 May 2007 Posts: 2455 Location: Hampshire, UK
|
|
|
|
Code: |
3 INSTBLK_DSNNAME CHAR(54)
init('WOK.CLAX.REXX1(CODCOVEX)'); |
looks ok as it is 54 bytes - max 44 bytes for dsname, 2 for () and max 8 for member name. But then, why specify the member separately a few lines further up? Maybe that is the requirement for that block but... |
|
Back to top |
|
|
iqbal.mallick
New User
Joined: 13 Dec 2012 Posts: 14 Location: India
|
|
|
|
So as your suggesting should i specify only the dsnname without the member? |
|
Back to top |
|
|
Nic Clouston
Global Moderator
Joined: 10 May 2007 Posts: 2455 Location: Hampshire, UK
|
|
|
|
I have no idea! What does the documentation say? Or, more reasonably, what happened when you tried it? |
|
Back to top |
|
|
prino
Senior Member
Joined: 07 Feb 2009 Posts: 1306 Location: Vilnius, Lithuania
|
|
|
|
IBM has a wonderful product called "Debug Tool", and PL/I has a quite a few prefixes you can use to detect errors at run-time. Use "STRINGRANGE,STRINGSIZE,SUBSCRIPTRANGE".
And DO NOT suppress any compiler messages! |
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1788 Location: Bloomington, IL
|
|
|
|
When you set INSTBLK_PTR to SYSNULL, does this not result in passing an invalid address to IRXLOAD? |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2547 Location: Silicon Valley
|
|
|
|
Quote: |
When you set INSTBLK_PTR to SYSNULL, does this not result in passing an invalid address to IRXLOAD?
|
I agree that that looks suspicious. |
|
Back to top |
|
|
|