View previous topic :: View next topic
|
Author |
Message |
ramachandran_k2
New User
Joined: 08 Mar 2010 Posts: 1 Location: bangalore
|
|
|
|
I've coded an EDIT macro and trying to attach my rexx.exec to the SYSEXEC while TSO login. After refering to the various links in this forum, I tried using the ALTIB & ALLOCATE commands.But I'm not sucessful in doing that.
I have this code in this PDS:'TSO192B.TSOUTIL.CLIST(STARTUP)
Code: |
/************************** REXX **********************************/
"EXECUTIL SEARCHDD(YES)"
"ALLOC FILE(SYSEXEC) DATASET(TSO192B.REXX.EXEC,",
") SHR REUSE"
IF RC = 0 THEN
SAY 'ALLOCATION TO SYSEXEC COMPLETED.'
ELSE
SAY 'ALLOCATION TO SYSEXEC FAILED.'
******************************** Bottom of Data ******************************** |
When i log in to TSO i am getting following error message.
Code: |
'TSO192B.TSOUTIL.CLIST(STARTUP)' WILL NOW BE EXECUTED AS YOUR STARTUP CLIST.
FILE SYSEXEC NOT UNALLOCATED, DECONCATENATION WOULD RESULT IN DUPLICATE FILENA
MES
ALLOCATION TO SYSEXEC FAILED.
READY
------------------------------------------------------------------------------------- |
When I use ALTLIB in the same PDS, it gives the message "<UID>.REXX.EXEC" activated but I'm not able to execute the macro. There's no problem with the macro, it is executing fine if I manually execute TSO ALTLIB ACTIVATE command before running the macro.
Please help me out solve this issue.
Note:TSO ISRDDN doesn't work in my TSO environment |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
Type:
and recreate the problem. And use LOOKAT to search for more information about the message. |
|
Back to top |
|
|
Kjeld
Active User
Joined: 15 Dec 2009 Posts: 365 Location: Denmark
|
|
|
|
All installations have TSO startup rutines ($INITIAL) that will establish a concatenation of default system libraries in SYSEXEC and SYSPROC.
This concatenation can contain group libraries and personal libraries, in the way that the search order is personal libs->group libs->system libs.
The naming standards will vary from installation to installation.
If you allocate a dataset 'userid.ISPF.ISPCLIB' containing your REXX member, you might be able to execute the macro after a logoff/logon. It works at my site, and I think it is pretty much default for $INITIAL processing. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
I do not believe that '$INITIAL' is universal. Nor is the use of 'userid.ISPF.ISPCLIB'. |
|
Back to top |
|
|
Use Net
New User
Joined: 10 Feb 2010 Posts: 8 Location: Europe
|
|
|
|
ramachandran_k2 wrote: |
I've coded an EDIT macro and trying to attach my rexx.exec to the SYSEXEC while TSO login. After refering to the various links in this forum, I tried using the ALTIB & ALLOCATE commands.But I'm not sucessful in doing that. ... |
I suggest using the CONCAT exec which is available here: gsf-soft.com/Freeware/
This REXX exec allows TSO and ISPF users to add a data set at the beginning or the end of a concatenation without having to know what libraries are currently allocated to the specified ddname. It is particularly useful to add REXX libraries to SYSEXEC. |
|
Back to top |
|
|
Kjeld
Active User
Joined: 15 Dec 2009 Posts: 365 Location: Denmark
|
|
|
|
Pedro wrote: |
I do not believe that '$INITIAL' is universal. Nor is the use of 'userid.ISPF.ISPCLIB'. |
Ok, Pedro I admit I haven't found documentation for that, either. I merely assume it was so because my installation executes '$INITIAL' members in the SYSPROC concatenation at ISPF startup, and I bet that name was not chosen locally 20 years ago, before internationalisation set in.
I have found a link to an IBM System Magazine article on the topic of initialising ISPF environment.
The point is that the OP could investigate what naming standards to use for user libraries to be included in SYSEXEC and SYSPROC conctenation on startup. |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
Quote: |
The point is that the OP could investigate what naming standards to use for user libraries to be included in SYSEXEC and SYSPROC conctenation on startup. |
That is a good point. |
|
Back to top |
|
|
agkshirsagar
Active Member
Joined: 27 Feb 2007 Posts: 691 Location: Earth
|
|
|
|
OP could ask his peers in his shop if there is any user maintanable library in default SYSPROC/EXEC stack.
In my personal experience, most shops provide the developers with at least one library in SYSPROC or provide a way of adding user lib without having to change logon exec.
If needed ,additional libraries should be allocated using ALTLIB ACTIVATE. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Must admit that using ALTLIB and LIBDEF always works for me.
But this is a really old piece of code that I sometimes use in the COMMAND field at logon.
Code: |
Command ===> EXEC 'My.Rexx.Library($LOGON)' |
Code: |
/* REXX *** INSERT PRIVATE ISPF LIBRARIES INTO CURRENT LOGON PROC */
PRX = "My.REXX.Library"
PCL = "My.CLIST.Library"
PPA = "My.PANEL.Library"
PSK = "My.SKELETON.Library"
RX0 = 0
CL0 = 0
PA0 = 0
SK0 = 0
A = 1
UID = STRIP(SYSVAR(SYSUID))
Y = MSG('OFF')
X=OUTTRAP(LIST.)
"LISTA STATUS"
X=OUTTRAP(OFF)
"FREE FI(TEST01)"
"ALLOC FI(TEST01) RECFM(F B) LRECL(133)
TRACKS SPACE(5 5) NEW "
DO FOREVER
A = A + 1
IF A > LIST.0 THEN LEAVE
DSNAME = SUBSTR(LIST.A,1,44)
IF SUBSTR(DSNAME,1,8) = 'TERMFILE' THEN ITERATE
IF SUBSTR(DSNAME,1,8) = '--DDNAME' THEN ITERATE
A = A + 1
IF A > LIST.0 THEN LEAVE
NEXTDD = SUBSTR(LIST.A,3,8)
IF NEXTDD <> ' ' THEN DO
DDNAME = NEXTDD
END
PUSH DDNAME DSNAME
"EXECIO 1 DISKW TEST01"
END
"EXECIO 0 DISKW TEST01 ( FINIS"
"EXECIO * DISKR TEST01 ( STEM LIBS. FINIS"
"FREE FI(TEST01)"
DO A = 1 TO LIBS.0
PARSE VAR LIBS.A DD DSN
IF DD = "SYSPROC" THEN DO
IF CL0 = 0 THEN DO
CL0 = 1
IF PCL <> ""
THEN STRCL = "'"PCL"' '"STRIP(DSN)"'"
ELSE STRCL = STRCL "'"STRIP(DSN)"'"
END
ELSE STRCL = STRCL "'"STRIP(DSN)"'"
END
ELSE IF DD = "SYSEXEC" THEN DO
IF RX0 = 0 THEN DO
RX0 = 1
IF PRX <> ""
THEN STRRX = "'"PRX"' '"STRIP(DSN)"'"
ELSE STRRX = STRRX "'"STRIP(DSN)"'"
END
ELSE STRRX = STRRX "'"STRIP(DSN)"'"
END
ELSE IF DD = "ISPPLIB" THEN DO
IF PA0 = 0 THEN DO
IF PPA <> ""
THEN STRPA = "'"PPA"' '"STRIP(DSN)"'"
ELSE STRPA = STRPN "'"STRIP(DSN)"'"
END
ELSE STRPA = STRPA "'"STRIP(DSN)"'"
PA0 = PA0 + 1
END
ELSE IF DD = "ISPSLIB" THEN DO
IF SK0 = 0 THEN DO
IF PSK <> ""
THEN STRSK = "'"PSK"' '"STRIP(DSN)"'"
ELSE STRSK = STRPN "'"STRIP(DSN)"'"
END
ELSE STRSK = STRSK "'"STRIP(DSN)"'"
SK0 = SK0 + 1
END
END
"FREE FI(SYSPROC)"
"ALLOC FI(SYSPROC) DA("STRCL") SHR"
"FREE FI(SYSEXEC)"
"ALLOC FI(SYSEXEC) DA("STRRX") SHR"
"FREE FI(ISPPLIB)"
"ALLOC FI(ISPPLIB) DA("STRPA") SHR"
"FREE FI(ISPSLIB)"
"ALLOC FI(ISPSLIB) DA("STRSK") SHR" |
|
|
Back to top |
|
|
|