Page 1 of 1

rexx macro is not executing

PostPosted: Fri Jun 15, 2012 5:34 pm
by venkateshm
Hi,
this is my first rexx macro...using rexx macro i want to use 'change all'. but my macro is not
executing.

rexx code : TEST.VENKY.PRAC(EDPDS)
/* REXX PROGRAM EDITPS */
LIB = "TEST.VENKY.PRAC"
ADDRESS 'ISPEXEC'
"LMINIT DATAID(INPUTDD) DATASET('"LIB"') ENQ(SHR)"
"LMOPEN DATAID("INPUTDD") OPTION(INPUT)"
MEMBER = 'CHGALL'
DO WHILE ( RC = 0 )
MEMBER = STRIP(MEMBER)
SAY "CALLING MACRO..."
"EDIT DATASET('"LIB"("MEMBER")') MACRO("MACRO")"
SAY "AFTER MACRO..."
END
"LMCLOSE DATAID("INPUTDD")"
"LMFREE DATAID("INPUTDD")"

macro:TEST.VENKY.PRAC(CHGALL)
/* REXX MACRO PROGRAM CHGALL */
SAY "CHGALL MACRO ENTERED"
"ISREDIT MACRO PROCESS"
"ISREDIT CHANGE '!UPPER-CASE' 'FUNCTION UPPER-CASE' ALL"
"ISREDIT END"
ADDRESS 'ISPEXEC'
RETURN

TEST.VENKY.PRAC(INPUT)
000001 !UPPER-CASE
000002 !UPPER-CASE
000003 !UPPER-CASE
000004 !UPPER-CASE
000005 !UPPER-CASE

error:
IKJ56500I COMMAND MACRO NOT FOUND

Re: rexx macro is not executing

PostPosted: Fri Jun 15, 2012 5:57 pm
by Akatsukami
Is TEST.VENKY.PRAC allocated to SYSPROC?

Re: rexx macro is not executing

PostPosted: Fri Jun 15, 2012 6:30 pm
by Pedro
"EDIT DATASET('"LIB"("MEMBER")') MACRO("MACRO")"

In your edit statement, MEMBER and MACRO are variables.

MEMBER is the name of the member you want to edit.
MACRO is the name of your editor macro.

I do not think you have set the variables MEMBER and MACRO to the actual names in your example.

And as Akatsukami mentioned, your macro needs to be in the SYSPROC concatenation.

Re: rexx macro is not executing

PostPosted: Fri Jun 15, 2012 6:39 pm
by Pedro
Your intention is not clear, but the use of LMOPEN implies that you should use the EDIT DATAID form rather than EDIT DATASET form.

Re: rexx macro is not executing

PostPosted: Sat Jun 16, 2012 1:13 am
by venkateshm
Thank you very much for quick replies....... using rexx macro i want to change my input data by change all command.

input file : TEST.VENKY.PRAC(INPUT)
000001 !UPPER-CASE
000002 !UPPER-CASE
000003 !UPPER-CASE
000004 !UPPER-CASE
000005 !UPPER-CASE

Desired output: TEST.VENKY.PRAC(INPUT)
000001 FUNCTION UPPER-CASE
000002 FUNCTION UPPER-CASE
000003 FUNCTION UPPER-CASE
000004 FUNCTION UPPER-CASE
000005 FUNCTION UPPER-CASE
Akatsukami :
I think my pds(TEST.VENKY.PRAC) is not allocated to SYSPROC, after doing some search i got few answers(TSO ISRDDN, etc..).
Let me check and let you know thank you very much......

Re: rexx macro is not executing

PostPosted: Sat Jun 16, 2012 8:09 pm
by Pedro
In this statement:
"EDIT DATASET('"LIB"("MEMBER")') MACRO("MACRO")"

The variable 'MACRO' is not initialized, resulting in the value to be 'MACRO' as well (that is the way rexx works). When you run it, it will try to run an initial macro called MACRO.

Since you get this message:
IKJ56500I COMMAND MACRO NOT FOUND

I think your concatenation is correct.

Re: rexx macro is not executing

PostPosted: Mon Jun 18, 2012 1:42 pm
by venkateshm
TEST.VENKY.PRAC(ALC)
000001 /****************************** REXX *******************************/
000002 "ALLOC FI(SYSPROC) DA('FDMD482.TEST.MACRO') SHR REUSE"
000003 IF RC = 0 THEN
000004 SAY 'ALLOCATION TO SYSPROC COMPLETED.'
000005 ELSE
000006 SAY 'ALLOCATION TO SYSPROC FAILED.'

after executing this i got 'ALLOCATION TO SYSPROC COMPLETED.'

rexx code: TEST.VENKY.PRAC(EDPDS)
000100 /* REXX PROGRAM EDITPS */
000200 LIB = "TEST.VENKY.PRAC"
000300 ADDRESS 'ISPEXEC'
000400 "LMINIT DATAID(INPUTDD) DATASET('"LIB"') ENQ(SHR)"
000500 "LMOPEN DATAID("INPUTDD") OPTION(INPUT)"
000600 MEMBER = 'INPUT'
000700 DO WHILE ( RC = 0 )
000800 MEMBER = STRIP(MEMBER)
000801 SAY "CALLING MACRO..."
000810 "EDIT DATASET('"LIB"("MEMBER")') MACRO(CHGALL)"
001110 SAY "AFTER MACRO..."
001200 END
001300 "LMCLOSE DATAID("INPUTDD")"
001400 "LMFREE DATAID("INPUTDD")"
when iam trying to execute my rexx code, iam getting a message

CALLING MACRO...
IKJ56500I COMMAND NOPACK NOT FOUND

and whenever i go for edit any file the following mesage is displayed.

EDIT TEST.VENKY.PRAC(INPUT) - 01.02 Macro does not exist
Command ===> NOPACK Scroll ===> CSR


macro: FDMD482.TEST.MACRO(CHGALL)
000100 /* REXX MACRO PROGRAM CHGALL */
000200 SAY "CHGALL MACRO ENTERED"
000300 ADDRESS ISREDIT
000310 "MACRO PROCESS"
000320 "CHANGE ALL 'ABC' 'CHANGED'"
000330 "SAVE"
000340 "END"
000350 EXIT

need help on this...

Re: rexx macro is not executing

PostPosted: Mon Jun 18, 2012 1:52 pm
by prino
venkateshm wrote:TEST.VENKY.PRAC(ALC)
000001 /****************************** REXX *******************************/
000002 "ALLOC FI(SYSPROC) DA('FDMD482.TEST.MACRO') SHR REUSE"
000003 IF RC = 0 THEN
000004 SAY 'ALLOCATION TO SYSPROC COMPLETED.'
000005 ELSE
000006 SAY 'ALLOCATION TO SYSPROC FAILED.'

after executing this i got 'ALLOCATION TO SYSPROC COMPLETED.'

And in the process you removed all standard site-specific libraries from SYSPROC, which is a very smart thing to do as you must realize now!

Re: rexx macro is not executing

PostPosted: Mon Jun 18, 2012 3:00 pm
by venkateshm
Thank you prino...
i got the mistake.....
to concat is this one right..
000001 /****************************** REXX *******************************/
000002 ADDRESS TSO "ALLOC DATASET('FDMD482.TEST.MACRO') DD(MYPROC) SHR REU"
000003 ADDRESS TSO "CONCAT (SYSPROC MYPROC)"
000004 IF RC = 0 THEN
000005 SAY 'ALLOCATION TO SYSPROC COMPLETED.'
000006 ELSE
000007 SAY 'ALLOCATION TO SYSPROC FAILED.'