View previous topic :: View next topic |
Author |
Message |
misi01 Advanced
Joined: 02 Dec 2002 Posts: 629 Topics: 176 Location: Stockholm, Sweden
|
Posted: Fri Jan 21, 2011 5:43 am Post subject: EQQMLIB DD STATEMENT MISSING |
|
|
I have written 2 edit macros, one that massages cobol source, and the other that takes a backup of the current file being edited. If I run the BACKUP program in EDIT, no problem (it copies the file using LM services).
If I run the first edit macro on its own, it massages the data as expected.
However, if I call the backup macro from the first one, I get the following error message
Quote: |
IEC130I EQQMLIB DD STATEMENT MISSING
IRX0250E System abend code 66D, reason code 00000002.
IRX0253E Abend in external function BACKUP.
IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=66D REASON CODE=00000002
TIME=11.38.11 SEQ=13146 CPU=0087 ASID=0315
PSW AT TIME OF ERROR 071C0000 8AA61CDA ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 0AA61CD4 - 41F00002 0A0D5850 B2444160
GR 0: 80000005 1: 0466D000
2: 008F4000 3: 00000000
4: 008AC658 5: 008F3A88
6: 00000001 7: 00F4D580
8: 8AA61C0A 9: 0000001A
A: 0AA637D8 B: 7F6155E0
C: 8AA61034 D: 7F6155E0
E: 00000019 F: 00000002
END OF SYMPTOM DUMP
32 +++ rc = backup()
IRX0040I Error running BOKACOPY, line 32: Incorrect call to routine
|
Is there some special method of calling the second macro from the first.
(I should mention that BACKUP contains (as its first line)
trace ?a
but I don't see any trace output at all) |
|
Back to top |
|
|
taltyman JCL Forum Moderator
Joined: 02 Dec 2002 Posts: 310 Topics: 8 Location: Texas
|
Posted: Fri Jan 21, 2011 9:43 am Post subject: |
|
|
My guess is that your call to backup is actually getting the Tivoli Workload Scheduler code instead of your macro. As a google search of EQQMLIB and BACKUP points to setting up ISPF to have that DD allocated. Can you just combine your 2 macros into one? |
|
Back to top |
|
|
kolusu Site Admin
Joined: 26 Nov 2002 Posts: 12375 Topics: 75 Location: San Jose
|
Posted: Fri Jan 21, 2011 11:14 am Post subject: Re: EQQMLIB DD STATEMENT MISSING |
|
|
misi01 wrote: |
Is there some special method of calling the second macro from the first.
(I should mention that BACKUP contains (as its first line)
trace ?a
but I don't see any trace output at all) |
The trace is done. You have an error on line 32.
Code: |
32 +++ rc = backup()
IRX0040I Error running BOKACOPY, line 32: Incorrect call to routine |
Also as taltyman pointed out , do not use the same names which might be system macros. Try renaming the macro to misibkcp and see if it works. |
|
Back to top |
|
|
misi01 Advanced
Joined: 02 Dec 2002 Posts: 629 Topics: 176 Location: Stockholm, Sweden
|
Posted: Mon Jan 24, 2011 4:51 am Post subject: Thanks guys (so far) |
|
|
Taltyman - don't want to combine the 2 macros for obvious reasons (potential double maintenance)
Copying the script to MISIBCKP and calling it via
worked fine, but the command BACKUP is known now - don't really want to have to rename it and spread the information if not needed.
Isn't there some form of call like
Code: |
exe 'xxxxxx.private.code(BACKUP)'
|
that I can use ???? |
|
Back to top |
|
|
prino Banned
Joined: 01 Feb 2007 Posts: 45 Topics: 5 Location: Oostende
|
Posted: Mon Jan 24, 2011 6:39 am Post subject: Re: Thanks guys (so far) |
|
|
misi01 wrote: | Taltyman - don't want to combine the 2 macros for obvious reasons (potential double maintenance) |
Excuse me for being stupid, but if you combine them you would only have to maintain one single macro! |
|
Back to top |
|
|
misi01 Advanced
Joined: 02 Dec 2002 Posts: 629 Topics: 176 Location: Stockholm, Sweden
|
Posted: Mon Jan 24, 2011 6:58 am Post subject: |
|
|
Not so. Both macros can be (and are) run independently of each other. So if the user wants to run BACKUP, they can. If they want to run BOKACOPY (which CALLS backup) they can.
If I combined the 2, how would they run backup ? (And if the answer is to have that as a separate script, the you're back to maintaining 2 copies of the same code - one in BOKACOPY, one in BACKUP) _________________ Michael |
|
Back to top |
|
|
prino Banned
Joined: 01 Feb 2007 Posts: 45 Topics: 5 Location: Oostende
|
Posted: Wed Jan 26, 2011 9:08 am Post subject: |
|
|
misi01 wrote: | Not so. Both macros can be (and are) run independently of each other. So if the user wants to run BACKUP, they can. If they want to run BOKACOPY (which CALLS backup) they can.
If I combined the 2, how would they run backup ? (And if the answer is to have that as a separate script, the you're back to maintaining 2 copies of the same code - one in BOKACOPY, one in BACKUP) |
Excuse me for being stupid again, but I have dozens of one-line macros/execs that all all a common back-end with a single parameter, allowing me to keep all common code in just a single member:
New BACKUP:
Code: | /* REXX */
call whatever 'backup' |
New BOKACOPY:
Code: | /* REXX */
call whatever 'bokacopy' |
Now, was that so difficult? |
|
Back to top |
|
|
misi01 Advanced
Joined: 02 Dec 2002 Posts: 629 Topics: 176 Location: Stockholm, Sweden
|
Posted: Wed Jan 26, 2011 10:26 am Post subject: |
|
|
Aha - now I'm with you !!! Too clever for me
Having said that - SURELY there's a way of specifying which library a script should be run from, something like exe 'a.b.c(myscript)' or similar ????? |
|
Back to top |
|
|
Nic Clouston Advanced
Joined: 01 Feb 2007 Posts: 1075 Topics: 7 Location: At Home
|
Posted: Wed Jan 26, 2011 2:33 pm Post subject: |
|
|
there is - and you just typed it. I had to use the same method the other day as my exec was called DB2 and that conflicted with DB2 itself. However, I do not know if EXE is allowed - probably is but I always use the long version, EXEC, so EXE looks strange to me! _________________ Utility and Program control cards are NOT, repeat NOT, JCL. |
|
Back to top |
|
|
misi01 Advanced
Joined: 02 Dec 2002 Posts: 629 Topics: 176 Location: Stockholm, Sweden
|
Posted: Thu Jan 27, 2011 1:42 am Post subject: Well - the idea was good in theory .... |
|
|
I changed the code to
Code: |
address TSO exec "'a.b.c(BACKUP)'"
|
and backup started to run. Trouble is, BACKUP contains code like ...
Code: |
Parse Source . calltype .
If calltype = 'FUNCTION' ! calltype = 'SUBROUTINE' ! ,
calltype = 'COMMAND' then
/* Called from another script */
parse arg calling_script, parms
Else
/* Called from the command line */
'isredit macro (parms) NOPROCESS'
.....
Address ISREDIT '(MEMB) = MEMBER'
|
and the (MEMB) line failed with RC = 20 (after which the LM services failed as well).
I assume there's some way of setting up the environment so that a script called from another script still works.
The way I look at it, I have 3 options:-
1 Do what prino suggested and incorporate both scripts into one (lot of work I think)
2 Investigate what can be done to ensure BACKUP can be called from another script when in edit mode
3 Cheat and simply do a SAY to ask them if they've created a backup of their code - only YES allows them to continue.
I'm going to go with 3 as being the easiest |
|
Back to top |
|
|
prino Banned
Joined: 01 Feb 2007 Posts: 45 Topics: 5 Location: Oostende
|
Posted: Thu Jan 27, 2011 9:05 am Post subject: |
|
|
You cannot use the ISREDIT environment outside the ISPF editor and that is exactly what you are now trying to do by invoking it using "ex 'what.ever.dsn(mymac)'" |
|
Back to top |
|
|
|
|