View previous topic :: View next topic
Author
Message
abhinav343 New User Joined: 28 May 2007Posts: 5 Location: punjab
Hi,
I am trying to create a rexx macro to compile COBOL program. Here it is:
000001 /* REXX */
000002 TRACE I
000003 ADDRESS ISREDIT "MACRO PROCESS"
000004 /*ADDRESS ISREDIT MACRO*/
000005 ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
000006 ADDRESS TSO
000007 "ISREDIT (DSN) = DATASET"
000008 "ISREDIT (MEMB) = MEMBER"
000009 MESSAGE_SETTING = MSG("OFF")
000010 DSN = DSN
000011 MEMB = MEMB
000012 DATASET = "'"DSN"("MEMB")'"
000013 USRID = USERID()
000014 SYSPRINTDSN = MC00.|| USRID ||.SYSPRINT
000015 SYSOUTDSN = MC00.|| USRID ||.SYSOUT
000016 ADDRESS TSO
000017 "FREE F(SYSPRINT SYSIN SYSLIN SYSUT1 SYSUT2 SYSUT3 SYSUT4"
000018 "SYSUT5 SYSUT6 SYSUT7 SYSLIB SYSOUT)"
000019 "ALLOC F(SYSPRINT) DA('"SYSPRINTDSN"') OLD REUSE"
000022 "ALLOC F(SYSIN) DA("DATASET") SHR REUSE"
000023 "ALLOC F(SYSLIN) DA('MC00.RBRYMJB.SYSLIN') OLD REUSE"
000024 "ALLOC F(SYSLMOD) DA('MC00.RBRYMJB.SRCLIB("MEMB")') OLD REUSE"
000025 "ALLOC F(SYSLIB)",
000026 "DA('MZ01U.LC.COPYLIB','M000.LC.COPYLIB') SHR REUSE"
000027 "ALLOC F(SYSOUT) DA('"SYSOUTDSN"') OLD REUSE"
000028 "ALLOC F(SYSUT1) SPACE(5,5) TRACKS UNIT(SYSDA)"
000029 "ALLOC F(SYSUT2) SPACE(5,5) TRACKS UNIT(SYSDA)"
000030 "ALLOC F(SYSUT3) SPACE(5,5) TRACKS UNIT(SYSDA)"
000031 "ALLOC F(SYSUT4) SPACE(5,5) TRACKS UNIT(SYSDA)"
000032 "ALLOC F(SYSUT5) SPACE(5,5) TRACKS UNIT(SYSDA)"
000033 "ALLOC F(SYSUT6) SPACE(5,5) TRACKS UNIT(SYSDA)"
000034 "ALLOC F(SYSUT7) SPACE(5,5) TRACKS UNIT(SYSDA)"
000035 ADDRESS ISPEXEC "SELECT PGM(IGYCRCTL) "||,
000036 "PARM('SOURCE,NOOBJECT,NOSEQ,NOFSRT,NOOFF,MAP,NOOPT')"
000037 /*"CALL 'SYS1.SIGYCOMP(IGYCRCTL)'" */
000038 IF RC<4 THEN
000039 ZEDSMSG = 'COMPILATION SUCCESSFUL'
000040 ELSE
000041 DO
000042 ZEDSMSG = 'COMPILATION FAILED RC='RC
000043 "ISPEXEC BROWSE DATASET('"SYSPRINTDSN"')"
000044 "ISPEXEC SETMSG MSG(ISRZ000)"
000045 RETURN
000046 END
000047 /*"ALLOC F(STEPLIB) DA('D337.GRAL.EJEC') OLD REUSE"
000048 "CALL 'SYS1.LINKLIB(IEWL)'" */
000049 "ALLOC F(SYSLIB) DA('SYS1.SCEELKED') SHR REUSE"
000050 "CALL 'SYS1.LINKLIB(LOADER)'"
000051 IF RC=0 THEN
000052 DO
000053 ZEDSMSG = 'COMPILE & RUN SUCCESSFUL'
000054 "ISPEXEC BROWSE DATASET('"SYSOUTDSN"')"
000055 END
000056 ELSE
000057 DO
000058 ZEDSMSG = 'RUN FAILED RC='RC
000059 "ISPEXEC SETMSG MSG(ISRZ000)"
000060 RETURN
000061 END
000062 "FREE F(SYSPRINT SYSIN SYSLIN SYSUT1 SYSUT2 SYSUT3 SYSUT4",
000063 "SYSUT5 SYSUT6 SYSUT7 SYSLIB SYSOUT)"
000064 "ISPEXEC SETMSG MSG(ISRZ000)"
000065 RETURN
When I am trying to execute this code with trace on I get this:
3 *-* ADDRESS ISREDIT "MACRO PROCESS"
>L> "MACRO PROCESS"
+++ RC(20) +++
5 *-* ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
>L> "CONTROL ERRORS RETURN"
6 *-* ADDRESS TSO
7 *-* "ISREDIT (DSN) = DATASET"
>L> "ISREDIT (DSN) = DATASET"
+++ RC(20) +++
8 *-* "ISREDIT (MEMB) = MEMBER"
>L> "ISREDIT (MEMB) = MEMBER"
+++ RC(20) +++
9 *-* MESSAGE_SETTING = MSG("OFF")
>L> "OFF"
>F> "ON"
10 *-* DSN = DSN
>L> "DSN"
11 *-* MEMB = MEMB
>L> "MEMB"
12 *-* DATASET = "'"DSN"("MEMB")'"
>L> "'"
>V> "DSN"
>O> "'DSN"
>L> "("
>O> "'DSN("
>V> "MEMB"
>O> "'DSN(MEMB"
>L> ")'"
>O> "'DSN(MEMB)'"
13 *-* USRID = USERID()
>F> "RBRYMJB"
14 *-* SYSPRINTDSN = MC00.|| USRID ||.SYSPRINT
>L> "MC00."
>V> "RBRYMJB"
>O> "MC00.RBRYMJB"
>L> ".SYSPRINT"
>O> "MC00.RBRYMJB.SYSPRINT"
15 *-* SYSOUTDSN = MC00.|| USRID ||.SYSOUT
>L> "MC00."
>V> "RBRYMJB"
>O> "MC00.RBRYMJB"
>L> ".SYSOUT"
>O> "MC00.RBRYMJB.SYSOUT"
16 *-* ADDRESS TSO
17 *-* "FREE F(SYSPRINT SYSIN SYSLIN SYSUT1 SYSUT2 SYSUT3 SYSUT4",
"SYSUT5 SYSUT6 SYSUT7 SYSLIB SYSOUT)"
>L> "FREE F(SYSPRINT SYSIN SYSLIN SYSUT1 SYSUT2 SYSUT3 SYSUT4"
>L> "SYSUT5 SYSUT6 SYSUT7 SYSLIB SYSOUT)"
>O> "FREE F(SYSPRINT SYSIN SYSLIN SYSUT1 SYSUT2 SYSUT3 SYSUT4 SYSUT5 S
YSUT6 SYSUT7 SYSLIB SYSOUT)"
+++ RC(12) +++
19 *-* "ALLOC F(SYSPRINT) DA('"SYSPRINTDSN"') OLD REUSE"
>L> "ALLOC F(SYSPRINT) DA('"
>V> "MC00.RBRYMJB.SYSPRINT"
>O> "ALLOC F(SYSPRINT) DA('MC00.RBRYMJB.SYSPRINT"
>L> "') OLD REUSE"
>O> "ALLOC F(SYSPRINT) DA('MC00.RBRYMJB.SYSPRINT') OLD REUSE"
22 *-* "ALLOC F(SYSIN) DA("DATASET") SHR REUSE"
>L> "ALLOC F(SYSIN) DA("
>V> "'DSN(MEMB)'"
>O> "ALLOC F(SYSIN) DA('DSN(MEMB)'"
***
>L> ") SHR REUSE"
>O> "ALLOC F(SYSIN) DA('DSN(MEMB)') SHR REUSE"
+++ RC(12) +++
23 *-* "ALLOC F(SYSLIN) DA('MC00.RBRYMJB.SYSLIN') OLD REUSE"
>L> "ALLOC F(SYSLIN) DA('MC00.RBRYMJB.SYSLIN') OLD REUSE"
24 *-* "ALLOC F(SYSLMOD) DA('MC00.RBRYMJB.SRCLIB("MEMB")') OLD REUSE"
>L> "ALLOC F(SYSLMOD) DA('MC00.RBRYMJB.SRCLIB("
>V> "MEMB"
>O> "ALLOC F(SYSLMOD) DA('MC00.RBRYMJB.SRCLIB(MEMB"
>L> ")') OLD REUSE"
>O> "ALLOC F(SYSLMOD) DA('MC00.RBRYMJB.SRCLIB(MEMB)') OLD REUSE"
25 *-* "ALLOC F(SYSLIB)",
"DA('MZ01U.LC.COPYLIB','M000.LC.COPYLIB') SHR REUSE"
>L> "ALLOC F(SYSLIB)"
>L> "DA('MZ01U.LC.COPYLIB','M000.LC.COPYLIB') SHR REUSE"
>O> "ALLOC F(SYSLIB) DA('MZ01U.LC.COPYLIB','M000.LC.COPYLIB') SHR REUS
E"
27 *-* "ALLOC F(SYSOUT) DA('"SYSOUTDSN"') OLD REUSE"
>L> "ALLOC F(SYSOUT) DA('"
>V> "MC00.RBRYMJB.SYSOUT"
>O> "ALLOC F(SYSOUT) DA('MC00.RBRYMJB.SYSOUT"
>L> "') OLD REUSE"
>O> "ALLOC F(SYSOUT) DA('MC00.RBRYMJB.SYSOUT') OLD REUSE"
28 *-* "ALLOC F(SYSUT1) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT1) SPACE(5,5) TRACKS UNIT(SYSDA)"
29 *-* "ALLOC F(SYSUT2) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT2) SPACE(5,5) TRACKS UNIT(SYSDA)"
30 *-* "ALLOC F(SYSUT3) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT3) SPACE(5,5) TRACKS UNIT(SYSDA)"
31 *-* "ALLOC F(SYSUT4) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT4) SPACE(5,5) TRACKS UNIT(SYSDA)"
32 *-* "ALLOC F(SYSUT5) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT5) SPACE(5,5) TRACKS UNIT(SYSDA)"
33 *-* "ALLOC F(SYSUT6) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT6) SPACE(5,5) TRACKS UNIT(SYSDA)"
34 *-* "ALLOC F(SYSUT7) SPACE(5,5) TRACKS UNIT(SYSDA)"
>L> "ALLOC F(SYSUT7) SPACE(5,5) TRACKS UNIT(SYSDA)"
35 *-* ADDRESS ISPEXEC "SELECT PGM(IGYCRCTL) "||,
"PARM('SOURCE,NOOBJECT,NOSEQ,NOFSRT,NOOFF,MAP,NOOPT')"
>L> "SELECT PGM(IGYCRCTL) "
>L> "PARM('SOURCE,NOOBJECT,NOSEQ,NOFSRT,NOOFF,MAP,NOOPT')"
>O> "SELECT PGM(IGYCRCTL) PARM('SOURCE,NOOBJECT,NOSEQ,NOFSRT,NOOFF,MAP
,NOOPT')"
PDSM15-1 UNABLE TO DETERMINE VERSION INFORMATION FOR MEMBER BEING COMPILED
IEC130I SYSIN DD STATEMENT MISSING
IGYSI5013-U An error occurred while attempting to open
file "SYSIN ".
+++ RC(16) +++
37 *-* /*"CALL 'SYS1.SIGYCOMP(IGYCRCTL)'" */
38 *-* IF RC<4
>V> "16"
>L> "4"
>O> "0"
40 *-* ELSE
41 *-* DO
42 *-* ZEDSMSG = 'COMPILATION FAILED RC='RC
>L> "COMPILATION FAILED RC="
>V> "16"
>O> "COMPILATION FAILED RC=16"
43 *-* "ISPEXEC BROWSE DATASET('"SYSPRINTDSN"')"
>L> "ISPEXEC BROWSE DATASET('"
>V> "MC00.RBRYMJB.SYSPRINT"
>O> "ISPEXEC BROWSE DATASET('MC00.RBRYMJB.SYSPRINT"
>L> "')"
>O> "ISPEXEC BROWSE DATASET('MC00.RBRYMJB.SYSPRINT')"
Could you please get me some clue on this, what is wrong that I am doing?
Back to top
parsesource New User Joined: 06 Feb 2006Posts: 97
1) i guess you execute this rexx edit macro with TSO rexxname, hence ADDRESS ISREDIT "MACRO PROCESS" Return RC=20. execute it without 'TSO'
2) i think an ADDRESS TSO "ISREDIT ...." does not work. use ADDRESS ISREDIT "....." instead.
ISPF commands can be exectuted with ADDRESS TSO "ISPEXEC ..... ", but it´s not recommended to it this way.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Hello,
You should only use the system standard method(s) to compile programs for use on that system. People should not create their own compile jcl.
A few places i've supported make this a condition of continued employment (i.e. use the standard tools or be terminated).
Why do you believe it is allright to create some non-standard compile process?
Back to top
prino Senior Member Joined: 07 Feb 2009Posts: 1306 Location: Vilnius, Lithuania
dick scherrer wrote:
You should only use the system standard method(s) to compile programs for use on that system. People should not create their own compile jcl.
A few places I've supported make this a condition of continued employment (i.e. use the standard tools or be terminated).
If those were the rules, I'd would not even want to work at such a place!
dick scherrer wrote:
Why do you believe it is all right to create some non-standard compile process?
Because you don't want to go through all the hoops (of ChangeMan, SCLM, etc) if all you need is a bit of test JCL to compile, link and run small test-cases.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Hello,
Quote:
Because you don't want to go through all the hoops (of ChangeMan, SCLM, etc) if all you need is a bit of test JCL to compile, link and run small test-cases.
The very reason the standards were put in place. . .
Quote:
if all you need is a bit of test JCL to compile, link and run small test-cases.
As one who created standard compile jcl in a few prior lives, there is no reason that the small test case needs to be tedious. On most of my systems, people entered a script name and a module name and that was all. I suggest personally generated rexx/jcl/whatever will not require less effort to get the compile done. . .
Some people simply don't like standards - they believe it interferes with their creativity. To use your term - bullthis. . . Creativity should be spent solving the client/user requirements, not getting around the standards. . .
imho. . .
Back to top
Please enable JavaScript!