Re: How to configure using PDS members in JCL.

2024-01-11 Thread Colin Paice
"*I would think that most product developers would create professional
installer instead of using a quick and dirty solution.*"  I prefer the
terms clean, elegant and efficient.  I've struggled with Rexx execs which
do not quite do the job.  It is fine if you want to follow a very narrow
path.   I've had to take the output of one of these scripts and change it
because they were not best practice (didnt work for me)  For example I use
RACF RDATALIB to give specific control of keyrings.The rexx used
FACILITY.
I also want to review/edit the changes before making them (such as
defining  RACF resources).
If you provide a set of ISPF panels, IBM rules say you have to provide them
in several national languages (French, and Japanese  to name two) which are
very rarely used - as most people use the English ones

RACF changes need to be done by the security team - so now you have to get
them to run the scripts etc.

I remember one head banging z/OS product.   I was asked to do a test of
their configuration tool.  The product was configured  in Unix Services
using sed, grep  and bash scripts, then it was uploaded to PDSes.  You then
had to manually customise the PDS members.  Slow, tedious etc it was too
late to change before GA. I needed to change a configuration option, so I
reran the customising tool as per documentation,   It wiped out all of the
PDS members and recreated them - losing all of my additional customising -
so I've been burned in the past.In the next release this was dropped
and a better configuration tool was created.

I think it comes down to cost/benefit.  Does the product manager want
someone to spend two weeks of effort developing and testing a solution (and
building regression tests for it)  or spend the time doing something more
useful.  Sometimes ISPF panels is the right answer - many times simple JCL
is best.  Using  the JCL solution may be better than saying in the
documentation "edit all these files... and make the following changes".

Or - more simply - it is horses for courses.

Colin

On Thu, 11 Jan 2024 at 02:00, Jon Perryman  wrote:

> On Wed, 10 Jan 2024 08:47:38 -0600, Paul Gilmartin 
> wrote:
>
> >On Wed, 10 Jan 2024 11:41:16 +, Colin Paice wrote:
> >
> >>I think all products should use this technique, instead of asking users
> to
> >>make the same changes to multiple files as part of configuration.
> >>
> >It's regrettable that there's no clean way to provide defaults.
> Perhapsis onl
> >another JCLLIB member.
>
> I would think that most product developers would create professional
> installer instead of using a quick and dirty solution. z/OS has many tools.
> ISPF Panels, models. Clists, REXX, TSO, IRXJCL, ISPF edit and more. It
> doesn't take much to use ISPF panels, validate user input and set defaults.
> Having customers modify JCL set statements is only useful for very simple
> products.
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-11 Thread ITschak Mugzach
Since I lost my copy of IPOUPDTE (zPDT ADCD does not include it), I wrote a
rexx exec that does it. It can change strings with different lengths and be
limited to a member prefix.

ITschak

ITschak Mugzach
*|** IronSphere Platform* *|* *Information Security Continuous Monitoring
for z/OS, x/Linux & IBM I **| z/VM coming soon  *




On Thu, Jan 11, 2024 at 4:00 AM Jon Perryman  wrote:

> On Wed, 10 Jan 2024 08:47:38 -0600, Paul Gilmartin 
> wrote:
>
> >On Wed, 10 Jan 2024 11:41:16 +, Colin Paice wrote:
> >
> >>I think all products should use this technique, instead of asking users
> to
> >>make the same changes to multiple files as part of configuration.
> >>
> >It's regrettable that there's no clean way to provide defaults.
> Perhapsis onl
> >another JCLLIB member.
>
> I would think that most product developers would create professional
> installer instead of using a quick and dirty solution. z/OS has many tools.
> ISPF Panels, models. Clists, REXX, TSO, IRXJCL, ISPF edit and more. It
> doesn't take much to use ISPF panels, validate user input and set defaults.
> Having customers modify JCL set statements is only useful for very simple
> products.
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-10 Thread Jon Perryman
On Wed, 10 Jan 2024 08:47:38 -0600, Paul Gilmartin  wrote:

>On Wed, 10 Jan 2024 11:41:16 +, Colin Paice wrote:
>
>>I think all products should use this technique, instead of asking users to
>>make the same changes to multiple files as part of configuration.
>>
>It's regrettable that there's no clean way to provide defaults.  Perhapsis onl
>another JCLLIB member.

I would think that most product developers would create professional installer 
instead of using a quick and dirty solution. z/OS has many tools. ISPF Panels, 
models. Clists, REXX, TSO, IRXJCL, ISPF edit and more. It doesn't take much to 
use ISPF panels, validate user input and set defaults. Having customers modify 
JCL set statements is only useful for very simple products.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-10 Thread Paul Gilmartin
On Wed, 10 Jan 2024 11:41:16 +, Colin Paice wrote:

>Thanks for all the suggestions.  The best one ( thank you Charles) is
[ I'm editint -- gil ]
>...
>// EXPORT SYMLIST=(*)
>//  SET USERID='CERTID'
>...
>//SYSTSIN DD *,SYMBOLS=(JCLONLY)
>//   INCLUDE MEMBER=LU
>
>Where member LU is
>
>// DD   *,SYMBOLS=JCLONLY
>LU MFA
>
>This produces
>LU CERTID MFA
>
(since SYSTSIN DD introduces an empty concatenand, SYMBOLS= is
superfluous there.)

>With this I can easily comment out members when I rerun it.
>I can also have commented-out members eg to delete resources I had defined.
>
>I think all products should use this technique, instead of asking users to
>make the same changes to multiple files as part of configuration.
>
It's regrettable that there's no clean way to provide defaults.  Perhaps
another JCLLIB member.

Perhaps the PROC paradigm to set defaults.
What's the scope of a SET statement within a PROC call
within an IF...THEN?  Must a PROC contain an EXEC?

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-10 Thread Colin Paice
Thanks for all the suggestions.  The best one ( thank you Charles) is
//IBMUSERT JOB 1,MSGCLASS=H
//  JCLLIB ORDER=COLIN.MFA.JCL2
// EXPORT SYMLIST=(*)
//  SET OWNER='IBMUSER'
//  SET ADMIN='IBMUSER'
//  SET TOKEN='MFATOKEN'
//  SET STC='START1'
//  SET USERID='CERTID'
//S1  EXEC PGM=IKJEFT01,REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *,SYMBOLS=(JCLONLY)
//   INCLUDE MEMBER=CERTID
//   INCLUDE MEMBER=MFACERTU
//   INCLUDE MEMBER=LU

Where member LU is

// DD   *,SYMBOLS=JCLONLY
LU MFA

This produces
LU CERTID MFA


With this I can easily comment out members when I rerun it.
I can also have commented-out members eg to delete resources I had defined.

I think all products should use this technique, instead of asking users to
make the same changes to multiple files as part of configuration.

Colin

On Mon, 8 Jan 2024 at 20:31, Paul Gilmartin <
042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:

> On Mon, 8 Jan 2024 12:39:17 -0600, Charles Hardee wrote:
> >
> >The one thing I forgot to say was that the member being included needs a
> >statement like this as the first entry:
> >
> >// DD   *,SYMBOLS=JCLONLY
> >
> An alternative might be to concatenate JCL and the subject member into
> INTRDR.
> In either case, the subject member must have been coded with 
> references.
> It's regrettable that there's no simple way to provide defaults for such
> symbols.
>
> Ah!  code the member as a PROC.
>
> --
> gil
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Paul Gilmartin
On Mon, 8 Jan 2024 12:39:17 -0600, Charles Hardee wrote:
>
>The one thing I forgot to say was that the member being included needs a
>statement like this as the first entry:
>
>// DD   *,SYMBOLS=JCLONLY
> 
An alternative might be to concatenate JCL and the subject member into INTRDR.
In either case, the subject member must have been coded with  references.
It's regrettable that there's no simple way to provide defaults for such 
symbols.

Ah!  code the member as a PROC.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Steve Beaver
CPPUPDTE (nee IPOUPDTE) cannot be used if your environment uses Endeavor.  It
Will break ever pds that has had used Endeavor



Steve 


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Charles Hardee
Sent: Monday, January 8, 2024 12:39 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: How to configure using PDS members in JCL.

Good catch Gil!

The one thing I forgot to say was that the member being included needs a
statement like this as the first entry:

// DD   *,SYMBOLS=JCLONLY

Sorry for the confusion.

C-


On Mon, Jan 8, 2024 at 10:47 AM Paul Gilmartin <
042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:

> On Mon, 8 Jan 2024 14:22:42 +, Seymour J Metz wrote:
>
> >CPPUPDTE (nee IPOUPDTE) only changes a  existing member; the easiest ways
> I can think of to do what you want are ISPF file tailoring or JCL
> substitution with a // INCLUDE. I would probably go with the former.
> >
> Oh my!  Can an INCLUDE statement be embedded in instream data, or is it a
> terminator
> like other JCL statements?  I suppose concatenation is your friend.
> Should such a
> JCLLIB member begin with //  DD DATA,SYMBOLS=JCLONLY and end with /*?
>
> Is there a necessary and valuable example in the Ref. or SAMPLIB?
>
> --
> gil
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Charles Hardee
Good catch Gil!

The one thing I forgot to say was that the member being included needs a
statement like this as the first entry:

// DD   *,SYMBOLS=JCLONLY

Sorry for the confusion.

C-


On Mon, Jan 8, 2024 at 10:47 AM Paul Gilmartin <
042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:

> On Mon, 8 Jan 2024 14:22:42 +, Seymour J Metz wrote:
>
> >CPPUPDTE (nee IPOUPDTE) only changes a  existing member; the easiest ways
> I can think of to do what you want are ISPF file tailoring or JCL
> substitution with a // INCLUDE. I would probably go with the former.
> >
> Oh my!  Can an INCLUDE statement be embedded in instream data, or is it a
> terminator
> like other JCL statements?  I suppose concatenation is your friend.
> Should such a
> JCLLIB member begin with //  DD DATA,SYMBOLS=JCLONLY and end with /*?
>
> Is there a necessary and valuable example in the Ref. or SAMPLIB?
>
> --
> gil
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Sri h Kolusu
>> Sri h Kolusu suggest the INCLUDE; I assume that he tested it. IMHO file 
>> tailoring is a more versatile solution.

Shmuel,

Slight Correction.  It is NOT me who suggested the INCLUDE solution. It is by 
Charles hardee

https://www.mail-archive.com/ibm-main@listserv.ua.edu/msg135276.html

The solution I suggested was to use DFSORT which can pass parms to the input 
file using JPn construct which can be found here

https://www.mail-archive.com/ibm-main@listserv.ua.edu/msg135283.html

Thanks,
Kolusu

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Seymour J Metz
Sri h Kolusu suggest the INCLUDE; I assume that he tested it. IMHO file 
tailoring is a more versatile solution.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר


From: IBM Mainframe Discussion List  on behalf of 
Paul Gilmartin <042bfe9c879d-dmarc-requ...@listserv.ua.edu>
Sent: Monday, January 8, 2024 11:46 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: How to configure using PDS members in JCL.

On Mon, 8 Jan 2024 14:22:42 +, Seymour J Metz wrote:

>CPPUPDTE (nee IPOUPDTE) only changes a  existing member; the easiest ways I 
>can think of to do what you want are ISPF file tailoring or JCL substitution 
>with a // INCLUDE. I would probably go with the former.
>
Oh my!  Can an INCLUDE statement be embedded in instream data, or is it a 
terminator
like other JCL statements?  I suppose concatenation is your friend.  Should 
such a
JCLLIB member begin with //  DD DATA,SYMBOLS=JCLONLY and end with /*?

Is there a necessary and valuable example in the Ref. or SAMPLIB?

--
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Paul Gilmartin
On Mon, 8 Jan 2024 14:22:42 +, Seymour J Metz wrote:

>CPPUPDTE (nee IPOUPDTE) only changes a  existing member; the easiest ways I 
>can think of to do what you want are ISPF file tailoring or JCL substitution 
>with a // INCLUDE. I would probably go with the former.
>
Oh my!  Can an INCLUDE statement be embedded in instream data, or is it a 
terminator
like other JCL statements?  I suppose concatenation is your friend.  Should 
such a
JCLLIB member begin with //  DD DATA,SYMBOLS=JCLONLY and end with /*?

Is there a necessary and valuable example in the Ref. or SAMPLIB?

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Sri h Kolusu
>> I have a PDS with configuration definitions in it and want to make it easy 
>> to configure.

Colin,

You could use DFSORT to do the substitution and generate the control cards 
which can be passed to the next steps that really execute the commands.
For example

// SET ID=COLIN
//*
//STEP0100 EXEC PGM=SORT,PARM='JP1""'
//SYSOUT   DD SYSOUT=*
//SORTIN   DD DISP=SHR,DSN=your.pds.with.racf.commands(member)
//SORTOUT  DD DSN=&,DISP=(,PASS),SPACE=(TRK,(1,0),RLSE)
//SYSINDD *
  OPTION COPY
  INREC FINDREP=(INOUT=(C'',JP1))
/*

This will create the new control cards with the ID substituted and write it to 
the temp file & Now you can use this file as input to the racf command 
processor.

//STEP0200 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*,DCB=BLKSIZE=121
//SYSPRINT DD SYSOUT=*
//SYSTSIN  DD DISP=(OLD,DELETE,DELETE),DSN=&


Thanks,
Kolusu
DFSORT Development
IBM Corporation



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Seymour J Metz
CPPUPDTE (nee IPOUPDTE) only changes a  existing member; the easiest ways I can 
think of to do what you want are ISPF file tailoring or JCL substitution with a 
// INCLUDE. I would probably go with the former.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר


From: IBM Mainframe Discussion List  on behalf of 
Colin Paice 
Sent: Monday, January 8, 2024 7:16 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: How to configure using PDS members in JCL.

I have a PDS with configuration definitions in it and want to make it easy
to configure.

I want to have PDS members with content like PERMIT ... ACCESS(READ)
CLASS(...) ID()
and want the  to be substituted for example in JCL // SET ID=COLIN, and
be able to change the value on each run.
However JCL symbols only work with SYSIN DD * type data not within dataset
members.

What is the best way of doing this?

- I could have an inline IEBUPDTE which does the substitution and creates
the members.
- I've found references to IPOUPDTE.  Is there a modern version of this
provided by IBM?
- I could write an ISPF macro.
But none of these match the ease of changing the JCL // SET ID=COLIN
statement.

Colin

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Robert Prins
On Mon, 8 Jan 2024 at 12:16, Colin Paice  wrote:

> I have a PDS with configuration definitions in it and want to make it easy
> to configure.
>
> I want to have PDS members with content like PERMIT ... ACCESS(READ)
> CLASS(...) ID()
> and want the  to be substituted for example in JCL // SET ID=COLIN, and
> be able to change the value on each run.
> However JCL symbols only work with SYSIN DD * type data not within dataset
> members.
>
> What is the best way of doing this?
>
> - I could have an inline IEBUPDTE which does the substitution and creates
> the members.
> - I've found references to IPOUPDTE.  Is there a modern version of this
> provided by IBM?
>

https://www.jaymoseley.com/hercules/cbt_ware/pdsupdte.htm

Comes with source, so can be changed to handle, like my version, lowercase,
and doesn't need the IPOUPDTE required $$$COIBM member.

Of course you're aware that edit macros change ISPF stats, which may not be
desirable, and large number of changes may fill up a PDS...

Robert
-- 
Robert AH Prins
robert(a)prino(d)org
The hitchhiking grandfather 
Some REXX code for use on z/OS


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: How to configure using PDS members in JCL.

2024-01-08 Thread Charles Hardee
Colin,

I do it using IEBGENER:

// JCLLIB ORDER=pds.with.members.to.use
//SETSTEP  EXEC PGM=IEBGENER
//SYSINDD   DUMMY
//SYSPRINT DD   SYSOUT=*
//SYSUT1   DD   *,SYMBOLS=JCLONLY
// INCLUDE MEMBER=x
//SYSUT2   DD   DISP=SHR,DSN=dataset.to.contain.resolved.member

I don't know if this will work for you, but it works for my needs.

You probably wouldn't want to put the substitution output back into the
original file.
Depending on how you're going to use the result, you could use a temporary
file or a permanent file.

Chuck

On Mon, Jan 8, 2024 at 6:16 AM Colin Paice  wrote:

> I have a PDS with configuration definitions in it and want to make it easy
> to configure.
>
> I want to have PDS members with content like PERMIT ... ACCESS(READ)
> CLASS(...) ID()
> and want the  to be substituted for example in JCL // SET ID=COLIN, and
> be able to change the value on each run.
> However JCL symbols only work with SYSIN DD * type data not within dataset
> members.
>
> What is the best way of doing this?
>
> - I could have an inline IEBUPDTE which does the substitution and creates
> the members.
> - I've found references to IPOUPDTE.  Is there a modern version of this
> provided by IBM?
> - I could write an ISPF macro.
> But none of these match the ease of changing the JCL // SET ID=COLIN
> statement.
>
> Colin
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


How to configure using PDS members in JCL.

2024-01-08 Thread Colin Paice
I have a PDS with configuration definitions in it and want to make it easy
to configure.

I want to have PDS members with content like PERMIT ... ACCESS(READ)
CLASS(...) ID()
and want the  to be substituted for example in JCL // SET ID=COLIN, and
be able to change the value on each run.
However JCL symbols only work with SYSIN DD * type data not within dataset
members.

What is the best way of doing this?

- I could have an inline IEBUPDTE which does the substitution and creates
the members.
- I've found references to IPOUPDTE.  Is there a modern version of this
provided by IBM?
- I could write an ISPF macro.
But none of these match the ease of changing the JCL // SET ID=COLIN
statement.

Colin

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN