IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Q: bpxwdyn in logon-script


IBM Mainframe Forums -> CLIST & REXX
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
parsesource

New User


Joined: 06 Feb 2006
Posts: 97

PostPosted: Sun Feb 20, 2011 2:31 am
Reply with quote

hello

my personal tso logon proc MYPROC EXECs MAINPROC.
MYPROC only contains various additional dd-statements (@SYSEXEC,@ISPPLIB etc.) with my personal datasets.

the logon-rexx makes a tiot-scan and adds datasets allocated to @ddname to ddname (eg recreates DD SYSEXEC in sequence @SYSEXEC+SYSEXEC)

this works ok

i want to do this without control-block navigation or an external asm-program.

bpxwdyn has a concat-option. i can concatenate a ddname to another ddname. bpxwdyn ddlist(dd1,dd2) creates dd1 with datasets from both dds (sequence fixed dd1,dd2)
this is useless in this case, because i need a function that created dd1 with sequence dd2,dd1

the only solution i see is to use "bpxwdyn info" function to get all dataset-names and "tso allocate reuse" them together. are there other solutions available?
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8797
Location: Welsh Wales

PostPosted: Sun Feb 20, 2011 1:57 pm
Reply with quote

I usually use something like this
Code:
/* REXX *** INSERT PRIVATE ISPF LIBRARIES INTO CURRENT LOGON CONCAT  */
UID = STRIP(SYSVAR(SYSUID))

PRX = UID".REXX"
IF SYSDSN("'"STRIP(PRX)"'") <> "OK"
   THEN PRX=''
PCL = UID".CLIST"
IF SYSDSN("'"STRIP(PCL)"'") <> "OK"
   THEN PCL = ''
PPA = UID".PANELS"
IF SYSDSN("'"STRIP(PPA)"'") <> "OK"
   THEN PPA=''
PSK = UID".SKELS"
IF SYSDSN("'"STRIP(PSK)"'") <> "OK"
   THEN PSK=''

RX0 = 0
CL0 = 0
PA0 = 0
SK0 = 0

A = 1
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 = "'"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 = "'"STRIP(DSN)"'"
    END
    ELSE  STRRX = STRRX "'"STRIP(DSN)"'"
  END
  ELSE IF DD = "ISPPLIB" THEN DO
    IF PA0 = 0 THEN DO
      PA0 = 1
      IF PPA <> ""
         THEN  STRPA = "'"PPA"' '"STRIP(DSN)"'"
         ELSE  STRPA = "'"STRIP(DSN)"'"
    END
    ELSE  STRPA = STRPA "'"STRIP(DSN)"'"
  END
  ELSE IF DD = "ISPSLIB" THEN DO
    IF SK0 = 0 THEN DO
      SK0 = 1
      IF PSK <> ""
         THEN  STRSK = "'"PSK"' '"STRIP(DSN)"'"
         ELSE  STRSK = "'"STRIP(DSN)"'"
    END
    ELSE  STRSK = STRSK "'"STRIP(DSN)"'"
  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"

MENU
Which was set up for one particular site.

You may need to jiggle the code.

Executed from the main logon panel as 'EXEC mylib(member)'
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Mon Feb 21, 2011 3:49 pm
Reply with quote

expat wrote:
I usually use something like this
Code:
big snip
Which was set up for one particular site.

You may need to jiggle the code.

Executed from the main logon panel as 'EXEC mylib(member)'


If it's specific for one particular site, which in my case it is, I just do a
Code:
TSO ISRDDN
and add the required data sets to my exec that invokes ISPF with my libs in front of all the site-specific stuff.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Mon Feb 21, 2011 4:49 pm
Reply with quote

Maybe i missed something, but what is wrong with LIBDEF and ALTLIB ?
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Mon Feb 21, 2011 4:58 pm
Reply with quote

PeterHolland wrote:
Maybe i missed something, but what is wrong with LIBDEF and ALTLIB ?


That would be possible, but having your own libs available straight from the moment you get into ISPF is a lot easier.

Next to that, my exec also reallocates ISPLLIB before entering ISPF, which means that I can use my own ISPF configuration table, which is not possible using LIBDEF.
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Mon Feb 21, 2011 5:19 pm
Reply with quote

As far as i know ISPLLIB is for load libraries, beside that its also possible to use the following in a logon script :

When the DATASET keyword is specified with the LIBDEF service, it causes the
newly defined application-level library to be searched before the allocated ISPF
library for a particular type. To allow the user to continue to define user-level
libraries that are to be searched first, these new ddnames must be specified in
ALLOCATE commands before ISPF is invoked:
ISPMUSR User message library
ISPPUSR User panel library
ISPSUSR User skeleton library
ISPTUSR User table library
ISPTABU User table output library
ISPFILU User file tailoring output library
ISPLUSR User link library
ISPIUSR User image library.
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Mon Feb 21, 2011 5:23 pm
Reply with quote

PeterHolland wrote:
As far as i know ISPLLIB is for load libraries, beside that its also possible to use the following in a logon script :

When the DATASET keyword is specified with the LIBDEF service, it causes the
newly defined application-level library to be searched before the allocated ISPF
library for a particular type. To allow the user to continue to define user-level
libraries that are to be searched first, these new ddnames must be specified in
ALLOCATE commands before ISPF is invoked
:
ISPMUSR User message library
ISPPUSR User panel library
ISPSUSR User skeleton library
ISPTUSR User table library
ISPTABU User table output library
ISPFILU User file tailoring output library
ISPLUSR User link library
ISPIUSR User image library.


And if you need to use ALLOCATE before invoking ISPF, why not just allocate your own libraries in front of the system defined ones icon_question.gif
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CLIST & REXX

 


Similar Topics
Topic Forum Replies
No new posts COBOL - create and write to output fi... COBOL Programming 0
No new posts Execute REXX on logon with ISPF CLIST & REXX 3
No new posts DataSet member creation failed with B... Java & MQSeries 15
No new posts Embeding DB2 sql statements in scirpt... DB2 7
No new posts OMVS Shell Script not working properly. All Other Mainframe Topics 1
Search our Forums:

Back to Top