Page 1 of 1

Compiled REXX Code gives error.

PostPosted: Tue Nov 26, 2013 2:17 am
by Viswanathchandru
Dear all,

I have a piece of rexx code that access the SDSF environment. This exec runs in batch mode. When I tried running the code in batch without compiling the source it works fine. But when i compiled the same source and ran it in batch mode I'm getting the below error.


IRX0250E System abend code 0C4, reason code 00000017
. I googled this error but not able to find a proper solution. Can someone please guide me where do I go wrong.

I'm using IKJEFT01 for my batch run.


Thanks,
Viswa..

Re: Compiled REXX Code gives error.

PostPosted: Tue Nov 26, 2013 2:27 am
by Akatsukami
Are you using the MVS stub?

Re: Compiled REXX Code gives error.

PostPosted: Tue Nov 26, 2013 2:38 am
by Viswanathchandru
Hello Akatsukami,

Thanks for your time..

I''m not sure what is STUB MVS.. From what I understood, I'm not using any ADDRESS LINKMVS or ATTACHMVS commands inside my REXX.


Regards,
Viswa...

Re: Compiled REXX Code gives error.

PostPosted: Tue Nov 26, 2013 2:42 am
by enrico-sorichetti

Re: Compiled REXX Code gives error.

PostPosted: Tue Nov 26, 2013 4:15 am
by Pedro
I'm using IKJEFT01 for my batch run.

Show us the details.

I'm not using any ADDRESS LINKMVS or ATTACHMVS commands inside my REXX.

The stub has to do with how your exec is being called.

Show us your:
1. rexx compile job
2. link edit job
3. your IKJEFT01 job.
4. messages from SYSLOG at the time of the 0C4.

It is not clear if you have successfully compiled other rexx programs. I suggest you start with simple 'hello world' program to make sure you are compiling correctly, then introduce the SDSF calls.

Re: Compiled REXX Code gives error.

PostPosted: Wed Nov 27, 2013 1:15 am
by Viswanathchandru
Hi Pedro,

Thanks for your time..

1. rexx compile job


//SYS883KV  JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID               
//PROCLIB JCLLIB ORDER=SYS8333K.JCL.CNTL                         
//S1 EXEC PROC=REXXC                                             
//REXX.SYSCEXEC DD DSN=SYSI.PRODCHKT.LOAD(MASTER),DISP=SHR     
//REXX.SYSIN    DD DSN=SYS833K.PRODCHKT.EXEC(MASTER),DISP=SHR   


//REXXC   PROC OPTIONS='XREF ALTERNATE TRACE SLINE',         
//             COMPDSN='SYS1.REXX.LINKLIB',                   
//             VOL='MZAP11',                                 
//             UNT='3390'                                     
//*                                                           
//*-----------------------------------------------------------
//* Compile REXX program.                                     
//*-----------------------------------------------------------
//*                                                           
//REXX    EXEC PGM=REXXCOMP,PARM='&OPTIONS'                   
//STEPLIB   DD DISP=SHR,DSN=&COMPDSN,UNIT=&UNT,VOLUME=SER=&VOL
//SYSPRINT  DD SYSOUT=*                                       
//SYSTERM   DD SYSOUT=*                                       
//*SYSIEXEC DD DUMMY                                         
//*SYSDUMP  DD DUMMY                                         
//SYSCEXEC  DD DSN=&&CEXEC(GO),DISP=(MOD,PASS),UNIT=SYSDA,   
//             SPACE=(800,(800,100,1))                       
//SYSPUNCH  DD DSN=&&OBJECT,DISP=(MOD,PASS),UNIT=SYSDA,   
//             SPACE=(800,(800,100))                     
//    PEND                         



your IKJEFT01 job


//STEP1 EXEC PGM=IKJEFT01                                 
//ISPLOG DD SYSOUT=*,DCB=(LRECL=125,BLKSIZE=129,RECFM=VA) 
//ISPPROF DD DSN=&&TEMP,DISP=(NEW,PASS),UNIT=SYSDA,       
//     DCB=(RECFM=FB,LRECL=80,DSORG=PO),SPACE=(TRK,(1,1,5))
//ISPLLIB DD DSN=SYS1.SISPLOAD,DISP=SHR                   
//ISPMLIB DD DSN=SYS1.SISPMENU,DISP=SHR                   
//ISPPLIB DD DSN=SYS1.SISPPENU,DISP=SHR                   
//ISPSLIB DD DSN=SYS1.SISPSLIB,DISP=SHR                   
//ISPTLIB DD DSN=SYS1.SISPTENU,DISP=SHR                   
//SYSPROC DD DSN=SYS1.SISPEXEC,DISP=SHR                   
//SYSTSPRT DD SYSOUT=*                                     
//SYSEXEC DD DSN=SYSI.PRODCHKT.LOAD,DISP=SHR               
//SYSTSIN DD *                                             
ISPSTART CMD(%MASTER SYSI.PRODCHKT.CONFIG.FILE)           


messages from SYSLOG at the time of the 0C4


 IEA995I SYMPTOM DUMP OUTPUT 777                                   
 SYSTEM COMPLETION CODE=0C4  REASON CODE=00000011                   
  TIME=14.35.07  SEQ=05204  CPU=0000  ASID=005B                     
  PSW AT TIME OF ERROR  078D2000   85F95080  ILC 4  INTC 11         
    NO ACTIVE MODULE FOUND                                         
    NAME=UNKNOWN                                                   
    DATA AT PSW  05F9507A - 58B0B000  1ABABF21  B009BD21           
    AR/GR 0: 00AB3690/166B5C90   1: 00000000/166B81B0               
          2: 00000000/1670E0F8   3: 00000000/1670E178               
          4: 00000000/00000008   5: 00000000/05F95000               
          6: 00000000/00000008   7: 00000000/00000B20               
          8: 00000000/00000000   9: 00000000/1670E180               
          A: 00000000/1670E180   B: 00000000/0F64D552               
          C: 00000000/05F97414   D: 00000000/166B8000               
          E: 00000000/85F97400   F: 00000000/05F95000               
  END OF SYMPTOM DUMP



Regards,
Viswa....

Re: Compiled REXX Code gives error.

PostPosted: Wed Nov 27, 2013 2:56 pm
by NicC
This may not be relevant but...your compile job does not show the load library that the program is being compiled into.
Do you have any messages in SYSTSPRT?
I do not know if you can compile with a trace but if you can what did it show?

Re: Compiled REXX Code gives error.

PostPosted: Wed Nov 27, 2013 10:34 pm
by Pedro
//REXX.SYSCEXEC DD DSN=SYSI.PRODCHKT.LOAD(MASTER),DISP=SHR 

The rexx compiler has two different forms of output. If you use the CEXEC option, it puts the compiled program into the dataset, but it is not a load module. The compiled CEXEC should be put into one of your normal sysproc or sysexec libraries. The record format for the dataset should be a FB(80) or VB(255), or whatever your site uses. However, in your example, you are putting it into a LOAD dataset. I believe you will get unpredictable results. When you compile with CEXEC, the result looks binary, but it is not a load module. You still call it exactly like the un-compiled version of the rexx program.

The default is to use CEXEC in the options:
//REXXC   PROC OPTIONS='XREF ALTERNATE TRACE SLINE',   

But you can also specify the OBJECT parameter (and NOCEXEC). When you specify OBJECT, a file is added to the SYSPUNCH dataset. This file needs to be link edited (along with the stub) to create a load module. The load module will go into a dataset with RECFM(U).

In summary: use an exec library instead of: SYSI.PRODCHKT.LOAD