The question is this:
//JOB........
//step0 exec pgm=ikjeft01
//systsprt dd sysout=*
//systsin dd *
/* rexx */
say "hello"
I think this was it but obviously my memory is faulty.
Any help would be appreciated.
Thanks
> The question is this:
> //JOB........
> //step0 exec pgm=ikjeft01
> //systsprt dd sysout=*
>//systsin dd *
> /* rexx */
> say "hello"
Yep, that will do. You can also EXEC PGM=IRXJCL
mixxerdw@eye_eye_echs.com schrieb:
___________________________________________________________
Freundliche Gruesse / Kind regards
Dipl.-Math. Juergen Kehr
IT Consultant
Tel. +49-511-463050
Fax +49-511-463055
Mobil +49-172-5129389
e-Mail KehrJ...@t-online.de
KehrJ...@netscape.net
KehrJ...@csi.com
Fax -> e-Mail +49-40-3603022846
___________________________________________________________
//TSO EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=4M
//SYSPROC DD DSN=userid.REXX.EXEC,DISP=SHR
// DD DSN=userid.REXXDEMO.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
CALC 12 * 4
will run userid.REXX.EXEC(CALC), as will
//TSO EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=4M
//SYSEXEC DD DSN=userid.REXX.EXEC,DISP=SHR
// DD DSN=userid.REXXDEMO.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
EXECUTIL SEARCHDD(YES)
CALC 12 * 4
or, even,
//S1 EXEC PGM=IRXJCL,PARM='CALC 12*4'
//SYSEXEC DD DSN=userid.REXX.EXEC,DISP=SHR
// DD DSN=userid.REXXDEMO.EXEC,DISP=SHR
//SYSTSPRT DD SYSOUT=*
using IRXJCL instead.
HTH
Peter
--
Peter Tillier <pet...@eq1152.demon.co.uk>
Opinions expressed are not necessarily those of my employer.
>On Wed, 13 Jan 1999 01:49:33, "Dennis Wilson" <linc...@teleport.com>
>wrote:
>> //JOB........
>> //step0 exec pgm=ikjeft01
>> //systsprt dd sysout=*
>>//systsin dd *
>> /* rexx */
>> say "hello"
>Yep, that will do. You can also EXEC PGM=IRXJCL
I'm afraid neither will do. You can NOT run an in-stream REXX exec with
either IKJEFT01 or IRXJCL, which have the same restriction: they can only
execute a REXX exec that is stored on disk, either in a sequential data
set or in a PDS member.
One popular solution to this problem is to execute a utility (IEBGENER,
IEBUPDTE) to load the exec into a temporary PDS and specify the temp pds
in the SYSEXEC, for example:
//GO EXEC PGM=IKJEFT01
//SYSUT2 DD UNIT=VIO,SPACE=(TRK,(1,,1)),RECFM=FB,LRECL=80,BLKSIZE=800
//SYSEXEC DD DSN=*.SYSUT2,DISP=(OLD,PASS),VOL=REF=*.SYSUT2
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
CALL 'SYS1.LINKLIB(IEBUPDTE)' 'NEW'
%MYEXEC
//SYSIN DD *
./ ADD NAME=MYEXEC
/* REXX */ SAY 'hello world'
To simplify the process, I wrote an exec called EXECUTE that reads REXX
(or CLIST) statements from SYSTSIN, writes them to a temp data set, then
stacks an EXEC command to execute it. This is how the JCL looks:
//EXEC EXEC PGM=IKJEFT01,PARM='%EXECUTE EXEC'
//SYSEXEC DD DSN=<your EXEC library>,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
SAY "In-line EXEC executed by" USERID()
The EXECUTE exec can be found on my Web page at
http://members.home.net/gsf/
Gilbert Saint-flour <g...@ibm.net>
//xxxxxxxx job ......
//REXXLIB EXEC PGM=IEFBR14
//REXXLIB DD DSN=&&REXXLIB,DISP=(NEW,PASS,KEEP),
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=0),
// SPACE=(80,(100,50,1),RLSE)
//*******************************************
//REXXCOPY EXEC PGM=IEBGENER
//SYSUT2 DD DSN=&&REXXLIB(RXPGM),DISP=(SHR,PASS,KEEP)
//SYSUT1 DD *
/*REXX*/
SAY 'HELLO'
/*
//* MAKE SURE THERE IS A SPACE IN COL 1 OF SYSUT1 CARDS
//********************************************
//STEP0 EXEC PGM=IKJEFT01,PARM='RXPGM'
//SYSPROC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
//SYSEXEC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
//* MAY NOT NEED ONE OF THESE, EITHER SHOULD WORK
//SYSTSIN DD DUMMY
//SYSTSPRT DD SYSOUT=*
//
Its a little clumsy, but it works everywhere I have worked. A similar
process could be used to write a REXX which writes a REXX and then calls it.
If you assign more then one REXX per REXXLIB change the SPACE parameter to
// SPACE=(80,(100,50,99),RLSE)
where 99 is the number of directory entries, or members in REXXLIB. It can
make for quite lengthy JCL, but you could also put the REXX cards in a
CONTROL card library if your shop doesn't allow for REXX in production and
use this method to copy the needed REXX exec's to the &&REXXLIB as needed.
Still rather complicated.
Just one more way to do it.
EXECUTIL SEARCHDD(YES)
at some point.
HTH
Peter
--
Peter S Tillier <pet...@eq1152.demon.co.uk>
>Jeff wrote in message <79wn2.3246$hE2.20...@storm.twcol.com>... <snip>
><snip>
>>//STEP0 EXEC PGM=IKJEFT01,PARM='RXPGM'
>>//SYSPROC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
>>//SYSEXEC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
><Snip>
>You only need one or other of SYSPROC or SYSEXEC - SYSPROC is easier
>since for SYSEXEC to be searched you need to execute:
>EXECUTIL SEARCHDD(YES)
You do NOT need EXECUTIL SEARCHDD(YES) if the SYSEXEC DD is present in the
JCL.
If you refer to the same passed data set in a given step (see &&REXXLIB in
the quoted example), you'll get a "data set not found" error on the second
DD, unless you add a volume refer-back as follows:
//SYSEXEC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP),
// VOL=REF=*.SYSPROC
Gilbert Saint-flour <g...@ibm.net>
<snip>
That's new to me - I found the information in one of IBM's manuals. Has
this changed?
Peter
Overkill I geuss, but everything can be fixed with a vice-grip and a sledge
hammer.
>... Currently the site I am at does not recognize the SYSEXEC DD ...
You're probably using a non-standard parameter module. Check what the
ddname is at offset x'50' in the IRXTSPRM, IRXISPRM and IRXPARMS modules.
Parameter modules are described in the "Language Processor Environments"
chapter of the TSO/E REXX Reference manual.
Gilbert Saint-flour <g...@ibm.net>
Are you talking about browsing the executable? If so how do I find it?
Otherwise I don't know how to look at the parameter modules.
It is definitely non-standard. I have worked at several sites and this was
the first time I had any problems.
>If you refer to the same passed data set in a given step (see &&REXXLIB in
>the quoted example), you'll get a "data set not found" error on the second
>DD, unless you add a volume refer-back as follows:
>
> //SYSEXEC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP),
> // VOL=REF=*.SYSPROC
I have used this exact code. I am not creating the DSN in this step, thus no
DSN not found. I have done this same thing in COBOL. where I have one DD
refer to a File-ID in COBOL to read, and another to append to the end. Both
DD's referring to the same DSN.
>>You're probably using a non-standard parameter module. Check what the
>>ddname is at offset x'50' in the IRXTSPRM, IRXISPRM and IRXPARMS modules.
>Are you talking about browsing the executable? If so how do I find it?
>Otherwise I don't know how to look at the parameter modules.
If you have ISPF 4.5, type TSO ISRDDN then LOAD IRXPARMS to browse the
parameter module. If you don't have ISPF 4.5, browse
'SYS1.LPALIB(IRXPARMS)'.
Gilbert Saint-flour <g...@ibm.net>
I stand firmly by my original statement: if the data set is passed, you
need the VOL=REF on the 2nd DD. If it's catalogued, you don't. In your
example, &&REXXLIB is passed, so you need it. If this exact JCL works on
your system, then there must be some local system modification (such as a
JES or SMF exit) that adds the VOL=REF info under the covers.
Gilbert Saint-flour <g...@ibm.net>
return 9999
but unless you create some horrendous code that crashes the program
yourself, its not going to abend.
If you want the JCL to perform no further steps, you need COND
parameters on those steps that will exclude them from processing if
STEP0 issues a rc of more than whatever you define.
Jan Lend
remove the denial, to email me!
and...@usa.net wrote:
>
> In article <U4yp2.518$eX.9...@storm.twcol.com>,
> "Jeff" <a...@a.com> wrote:
> > >>>//STEP0 EXEC PGM=IKJEFT01,PARM='RXPGM'
> > >>>//SYSPROC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
> > >>>//SYSEXEC DD DSN=&&REXXLIB,DISP=(SHR,PASS,KEEP)
> > >><Snip>
>
> This step always has RC=0 no matter what. Could you tell me how I can force
> it to abend with the RC from the REXX program (i.e. "exit 999")
>
> Thanks,
> Andy
>
> -----------== Posted via Deja News, The Discussion Network ==----------
> http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own
This is how I have done it with the same code.
Can you explain what VOL=REF actually means? I have never seen it in 4 years
of JCL coding at several different sites. The current site I am at does have
some weird EXITS to fill in certain info. For instance, if you are creating
a small DSN, you only need to code the DISP and no other parameters, besides
DSN. And obviously this is not a standard IKJEFT01 load module.
for this IKJEFT has another entrypoint, which is called IKJEFT1A
I think this serves your purpose.
greetings,
René.