Discussion:
Compile and run later
Ron Hudson
2010-05-19 02:33:04 UTC
Permalink
Hey all,

I would like to start creating programs that I can run from a TSO session,
interactively.

I am thinking I need to write the output of the link editor to a file so it
can be run
when needed.

Where do I look for examples of this?

Thanks.

Ron.
scott
2010-05-19 02:45:50 UTC
Permalink
What language do you want to use?

Scott
Post by Ron Hudson
Hey all,
I would like to start creating programs that I can run from a TSO
session, interactively.
I am thinking I need to write the output of the link editor to a file
so it can be run
when needed.
Where do I look for examples of this?
Thanks.
Ron.
Ron Hudson
2010-05-19 03:22:12 UTC
Permalink
Post by scott
What language do you want to use?
Scott
I am better at fortran than any of the others, then Cobol.

I basically know what an assembler is - and I have the listings of the
instructions (but none of the 'system calls' or 'i/o routines'. So that
would
be the hardest choice.
Post by scott
Hey all,
I would like to start creating programs that I can run from a TSO session,
interactively.
I am thinking I need to write the output of the link editor to a file so it
can be run
when needed.
Where do I look for examples of this?
Thanks.
Ron.
scott
2010-05-19 04:16:47 UTC
Permalink
Well the better choice would have been using a scripting language
such as CLIST. The problem with COBOL, FORTRAN, and the like is that
they were designed to be used as the batch programming language or used
inside of the OLTP facility called CICS.


When you compile the COBOL program used the JCL procedure COBUCL and
add at the end an override to store the executable. Use the JCL
override of, and this creates a new dataset and once created can be
reused by other programs (with modifications).
//LKED.SYSLMOD DD DSN=youruid.LINKLIB(pgmname),DISP=(,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(3,,10)),
// DCB=SYS1.LINKLIB

In the above JCL change the pgmname to whatever you want to call your
program. Also replace the youruid with your userid.

Once you get to this point done successfully, we'll go on to the next step.
Post by scott
What language do you want to use?
Scott
I am better at fortran than any of the others, then Cobol.
I basically know what an assembler is - and I have the listings of the
instructions (but none of the 'system calls' or 'i/o routines'. So
that would
be the hardest choice.
Post by Ron Hudson
Hey all,
I would like to start creating programs that I can run from a TSO
session, interactively.
I am thinking I need to write the output of the link editor to a
file so it can be run
when needed.
Where do I look for examples of this?
Thanks.
Ron.
Ron Hudson
2010-05-19 04:36:46 UTC
Permalink
On Tue, May 18, 2010 at 9:16 PM, scott <svetter-yWtbtysYrB+***@public.gmane.org> wrote:
//LKED.SYSLMOD DD DSN=youruid.LINKLIB(pgmname),DISP=(,CATLG,DELETE),
Post by scott
// UNIT=SYSDA,SPACE=(CYL,(3,,10)),
// DCB=SYS1.LINKLIB
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"

HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1 150
149

So, How do I run it now?
Mike Stramba
2010-05-19 10:30:35 UTC
Permalink
1) RPF won't let you edit / view certain types (not sure which) of datasets.
The manual says "View not available, The specified dataset is not a
card image library.", which I would *think* means 80 byte records (for
'card image'), but it *does* let me view a dataset with 121 Lrecl)

Anway,
At the TSO promp (or RPF option 6 (TSO), use the PDS command

PDS HUDSON.LINKLIB
d(isplay)
**** should see 'GRID' ... and any other members you've compiled **
end **** exit PDS

call 'hudson.linklib(grid)'

There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.

In "Intro to Zos Basics", page 496 "Search order for programs",
http://tinyurl.com/23z7as4

it says
"5. Libraries in the linklist, as specified in PROGxx and LNKLSTxx
By default, the linklist begins with SYS1.LINKLIB, SYS1.MIGLIB, and
SYS1.CSSLIB. However, you can change this order using SYSLIB in
PROGxx and add other libraries to the linklist concatenation. The system
must bring modules found in the linklist into private area virtual
storage before
the programs can run.
The default search order can be changed by specifying certain options on the
macros used to call programs. The parameters that affect the search order the
system will use are EP, EPLOC, DE, DCB, and TASKLIB. For more information
about these parameters, see the topic about the search for the load module in
z/OS MVS Programming: Assembler Services Guide. Some IBM subsystems
(notably CICS and IMS) and applications (such as ISPF) use these facilities to
establish other search orders for programs."

I don't know what relevance that has to Turnkey (MVS38j)

You can also add a CLIST in either Hudson.CMDPROC or SYS1.CMDPROC :,
just putting the same command as above :

Just add a member called whatever, e.g. RUNGRID, or even just GRID

call 'hudson.linklib(grid)'

Then you'll be able to just type GRID at the TSO prompt.

Mike
Post by Ron Hudson
Post by scott
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1 150
149
So, How do I run it now?
Mike Stramba
2010-05-19 10:32:56 UTC
Permalink
Post by Mike Stramba
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.

I meant to say, I'm not sure how you setup *additional* libraries to
be searched implicitly, in addition to SYS1.LINKLIB ..SYS1.LINKLIB
Post by Mike Stramba
1) RPF won't let you edit / view certain types (not sure which) of datasets.
The manual says "View not available, The specified dataset is not a
card image library.", which I would *think* means 80 byte records (for
'card image'), but it *does* let me view a dataset with 121 Lrecl)
Anway,
At the TSO promp (or RPF option 6 (TSO), use the PDS command
PDS HUDSON.LINKLIB
d(isplay)
**** should see 'GRID' ... and any other members you've compiled **
end **** exit PDS
call 'hudson.linklib(grid)'
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.
In "Intro to Zos Basics", page 496 "Search order for programs",
http://tinyurl.com/23z7as4
it says
"5. Libraries in the linklist, as specified in PROGxx and LNKLSTxx
By default, the linklist begins with SYS1.LINKLIB, SYS1.MIGLIB, and
SYS1.CSSLIB. However, you can change this order using SYSLIB in
PROGxx and add other libraries to the linklist concatenation. The system
must bring modules found in the linklist into private area virtual
storage before
the programs can run.
The default search order can be changed by specifying certain options on the
macros used to call programs. The parameters that affect the search order the
system will use are EP, EPLOC, DE, DCB, and TASKLIB. For more information
about these parameters, see the topic about the search for the load module in
z/OS MVS Programming: Assembler Services Guide. Some IBM subsystems
(notably CICS and IMS) and applications (such as ISPF) use these facilities to
establish other search orders for programs."
I don't know what relevance that has to Turnkey (MVS38j)
You can also add a CLIST in either Hudson.CMDPROC or SYS1.CMDPROC :,
Just add a member called whatever, e.g. RUNGRID, or even just GRID
call 'hudson.linklib(grid)'
Then you'll be able to just type GRID at the TSO prompt.
Mike
Post by Ron Hudson
Post by scott
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1
300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1
150
149
So, How do I run it now?
Ron Hudson
2010-05-19 15:04:57 UTC
Permalink
Well grid may have not been a good choice for this exercise, it prints out
stuff (lots of stuff)
and requires a

FT006F001 dd sysout=a

JCL line...

So... I am working with a different piece of JCL to run it from the linklib:

//RGRID JOB (PROD),'PRODUCTION',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID EXEC PGM=GRID
//FT06F001 DD SYSOUT=A

And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' " but it complained of the single
quotes
so I removed them...

then I tried HUDSON.LINKLIB(GRID) (no quotes) and it complained of the dot.

then I tried LINKLIB(GRID) and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...

I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or
without single quotes.
Post by Mike Stramba
Post by Mike Stramba
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.
I meant to say, I'm not sure how you setup *additional* libraries to
be searched implicitly, in addition to SYS1.LINKLIB ..SYS1.LINKLIB
Post by Mike Stramba
1) RPF won't let you edit / view certain types (not sure which) of datasets.
The manual says "View not available, The specified dataset is not a
card image library.", which I would *think* means 80 byte records (for
'card image'), but it *does* let me view a dataset with 121 Lrecl)
Anway,
At the TSO promp (or RPF option 6 (TSO), use the PDS command
PDS HUDSON.LINKLIB
d(isplay)
**** should see 'GRID' ... and any other members you've compiled **
end **** exit PDS
call 'hudson.linklib(grid)'
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.
In "Intro to Zos Basics", page 496 "Search order for programs",
http://tinyurl.com/23z7as4
it says
"5. Libraries in the linklist, as specified in PROGxx and LNKLSTxx
By default, the linklist begins with SYS1.LINKLIB, SYS1.MIGLIB, and
SYS1.CSSLIB. However, you can change this order using SYSLIB in
PROGxx and add other libraries to the linklist concatenation. The system
must bring modules found in the linklist into private area virtual
storage before
the programs can run.
The default search order can be changed by specifying certain options on the
macros used to call programs. The parameters that affect the search order the
system will use are EP, EPLOC, DE, DCB, and TASKLIB. For more information
about these parameters, see the topic about the search for the load
module
Post by Mike Stramba
in
z/OS MVS Programming: Assembler Services Guide. Some IBM subsystems
(notably CICS and IMS) and applications (such as ISPF) use these
facilities
Post by Mike Stramba
to
establish other search orders for programs."
I don't know what relevance that has to Turnkey (MVS38j)
You can also add a CLIST in either Hudson.CMDPROC or SYS1.CMDPROC :,
Just add a member called whatever, e.g. RUNGRID, or even just GRID
call 'hudson.linklib(grid)'
Then you'll be able to just type GRID at the TSO prompt.
Mike
Post by Ron Hudson
Post by scott
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1
300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1
150
149
So, How do I run it now?
Mike Schwab
2010-05-19 15:41:51 UTC
Permalink
Need a step lib.
//STEPNAME EXEC PGM=
//STEPLIB DD DISP=SHR,DSN=HUDSON.LINKLIB
//FT06F001 DD SYSOUT=*
(JCL must be UPPERCASE).
Well grid may have not been a good choice for this exercise, it prints out stuff (lots of stuff)
and requires a
FT006F001 dd sysout=a
JCL line...
//RGRID       JOB (PROD),'PRODUCTION',
//            CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID        EXEC PGM=GRID
//FT06F001    DD SYSOUT=A
And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' "  but it complained of the single quotes
so I removed them...
then I tried HUDSON.LINKLIB(GRID)  (no quotes) and it complained of the dot.
then I tried LINKLIB(GRID)  and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...
I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or without single quotes.
Post by Mike Stramba
Post by Mike Stramba
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.
I meant to say, I'm not sure how you setup *additional* libraries to
be searched implicitly, in addition to SYS1.LINKLIB ..SYS1.LINKLIB
Post by Mike Stramba
1) RPF won't let you edit / view certain types (not sure which) of datasets.
The manual says "View not available, The specified dataset is not a
card image library.", which I would *think* means 80 byte records (for
'card image'), but it *does* let me view a dataset with 121 Lrecl)
Anway,
At the TSO promp (or RPF option 6 (TSO), use the PDS command
PDS HUDSON.LINKLIB
d(isplay)
**** should see 'GRID' ... and any other members you've compiled **
end **** exit PDS
call 'hudson.linklib(grid)'
There is a mechanism for "implicit" running, e.g. anything in
SYS1.LINKLIB, SYS2.LINKLIB, but I'm not sure where that's setup.
In "Intro to Zos Basics", page 496 "Search order for programs",
http://tinyurl.com/23z7as4
it says
"5. Libraries in the linklist, as specified in PROGxx and LNKLSTxx
By default, the linklist begins with SYS1.LINKLIB, SYS1.MIGLIB, and
SYS1.CSSLIB. However, you can change this order using SYSLIB in
PROGxx and add other libraries to the linklist concatenation. The system
must bring modules found in the linklist into private area virtual
storage before
the programs can run.
The default search order can be changed by specifying certain options on the
macros used to call programs. The parameters that affect the search order the
system will use are EP, EPLOC, DE, DCB, and TASKLIB. For more information
about these parameters, see the topic about the search for the load module in
z/OS MVS Programming: Assembler Services Guide. Some IBM subsystems
(notably CICS and IMS) and applications (such as ISPF) use these facilities to
establish other search orders for programs."
I don't know what relevance that has to Turnkey (MVS38j)
You can also add a CLIST in either Hudson.CMDPROC or SYS1.CMDPROC :,
Just add a member called whatever, e.g. RUNGRID, or even just GRID
call 'hudson.linklib(grid)'
Then you'll be able to just type GRID at the TSO prompt.
Mike
Post by Ron Hudson
Post by scott
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1
300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1
150
149
So, How do I run it now?
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
Ron Hudson
2010-05-19 16:19:14 UTC
Permalink
Thanks, that worked - Now I can compile and link in one step and execute in
another.

This lets me interactively start the program. I guess it's still a batch
though... if the system
was busy it might not run right away. perhaps it would use a special CLASS=?
in the job card.

The next thing I lack is for 'interactiveness'..

//FT0?F001 DD (MY USER 3270 TERMINAL OUTPUT)
//FT0?F001 DD (MY USER 3270 TERMINAL KEYBOARD)
Post by Mike Schwab
Need a step lib.
//STEPNAME EXEC PGM=
//STEPLIB DD DISP=SHR,DSN=HUDSON.LINKLIB
//FT06F001 DD SYSOUT=*
(JCL must be UPPERCASE).
Rick Fochtman
2010-05-19 16:10:35 UTC
Permalink
-------------------------------<snip>----------------------------
Post by Ron Hudson
Well grid may have not been a good choice for this exercise, it prints
out stuff (lots of stuff)
and requires a
FT006F001 dd sysout=a
JCL line...
//RGRID JOB (PROD),'PRODUCTION',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID EXEC PGM=GRID
//FT06F001 DD SYSOUT=A
And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' " but it complained of the
single quotes
so I removed them...
then I tried HUDSON.LINKLIB(GRID) (no quotes) and it complained of the dot.
then I tried LINKLIB(GRID) and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...
I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or
without single quotes.
----------------------------<unsnip>---------------------------------
Add the following JCL statement:

//STEPLIB DD DSN=HUDSON.LINKLIB,DISP=SHR

Note that STEPLIB is a special name, as is JOBLIB, but the placements
are different.
Put the STEPLIB card after the EXEC card.
Mike Stramba
2010-05-19 16:19:39 UTC
Permalink
Rick,

Where do you setup "global implicit" libraries ?

Add a STEPLIB to the logon proecedure in SYS1.PROCLIB(TSOLOGON) ?

Mike
Post by Rick Fochtman
-------------------------------<snip>----------------------------
Post by Ron Hudson
Well grid may have not been a good choice for this exercise, it prints
out stuff (lots of stuff)
and requires a
FT006F001 dd sysout=a
JCL line...
//RGRID JOB (PROD),'PRODUCTION',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID EXEC PGM=GRID
//FT06F001 DD SYSOUT=A
And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' " but it complained of the
single quotes
so I removed them...
then I tried HUDSON.LINKLIB(GRID) (no quotes) and it complained of the dot.
then I tried LINKLIB(GRID) and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...
I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or
without single quotes.
----------------------------<unsnip>---------------------------------
//STEPLIB DD DSN=HUDSON.LINKLIB,DISP=SHR
Note that STEPLIB is a special name, as is JOBLIB, but the placements
are different.
Put the STEPLIB card after the EXEC card.
Mike Stramba
2010-05-19 16:40:27 UTC
Permalink
Well, answering my own question, adding

//STEPLIB DD DSN=HERC01.LIB1.LOAD,DISP=SHR

to SYS1.PROCLIB(TSOLOGON)

*does* work, but what if I want it global, regardless of logon procedure ?

Obviously I could add it to every logon procedure that might exist,
but that seems messy

Mike
Post by Mike Stramba
Rick,
Where do you setup "global implicit" libraries ?
Add a STEPLIB to the logon proecedure in SYS1.PROCLIB(TSOLOGON) ?
Mike
Post by Rick Fochtman
-------------------------------<snip>----------------------------
Post by Ron Hudson
Well grid may have not been a good choice for this exercise, it prints
out stuff (lots of stuff)
and requires a
FT006F001 dd sysout=a
JCL line...
//RGRID JOB (PROD),'PRODUCTION',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID EXEC PGM=GRID
//FT06F001 DD SYSOUT=A
And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' " but it complained of the
single quotes
so I removed them...
then I tried HUDSON.LINKLIB(GRID) (no quotes) and it complained of the dot.
then I tried LINKLIB(GRID) and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...
I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or
without single quotes.
----------------------------<unsnip>---------------------------------
//STEPLIB DD DSN=HUDSON.LINKLIB,DISP=SHR
Note that STEPLIB is a special name, as is JOBLIB, but the placements
are different.
Put the STEPLIB card after the EXEC card.
Ron Hudson
2010-05-19 16:55:19 UTC
Permalink
Post by Mike Stramba
Well, answering my own question, adding
//STEPLIB DD DSN=HERC01.LIB1.LOAD,DISP=SHR
to SYS1.PROCLIB(TSOLOGON)
*does* work, but what if I want it global, regardless of logon procedure ?
Obviously I could add it to every logon procedure that might exist,
but that seems messy
Mike
Can logon procedures call other procedures as subroutines?
Perhaps you could have a system-wide procedure that is called
by each of your logon procedures?

(I dunno perhaps there is already a system-wide procedure that
gets automatically called at logon time)
Post by Mike Stramba
Post by Mike Stramba
Rick,
Where do you setup "global implicit" libraries ?
Add a STEPLIB to the logon proecedure in SYS1.PROCLIB(TSOLOGON) ?
Mike
Post by Rick Fochtman
-------------------------------<snip>----------------------------
Post by Ron Hudson
Well grid may have not been a good choice for this exercise, it prints
out stuff (lots of stuff)
and requires a
FT006F001 dd sysout=a
JCL line...
//RGRID JOB (PROD),'PRODUCTION',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//GRID EXEC PGM=GRID
//FT06F001 DD SYSOUT=A
And this seems to find grid -
At first I had " 'HUDSON.LINKLIB(GRID)' " but it complained of the
single quotes
so I removed them...
then I tried HUDSON.LINKLIB(GRID) (no quotes) and it complained of
the dot.
then I tried LINKLIB(GRID) and it then complained of the parentheses.
so now it's just as you see it above PGM=GRID..
No complaints but an 806 abend...
I gotta go look up a system 806 abend now .. aaand I am back -
hmm it can't find my program ...
but it does not want to be told 'HUDSON.LINKLIB(GRID)' either with or
without single quotes.
----------------------------<unsnip>---------------------------------
//STEPLIB DD DSN=HUDSON.LINKLIB,DISP=SHR
Note that STEPLIB is a special name, as is JOBLIB, but the placements
are different.
Put the STEPLIB card after the EXEC card.
Rick Fochtman
2010-05-19 17:35:20 UTC
Permalink
--------------------------------<snip>----------------------------
Post by Ron Hudson
Can logon procedures call other procedures as subroutines?
Perhaps you could have a system-wide procedure that is called
by each of your logon procedures?
(I dunno perhaps there is already a system-wide procedure that
gets automatically called at logon time)
-------------------------------<unsnip>----------------------------
The LOGON procedure is determined by the contents of your entry in
SYS1.UADS.

No, a JCL procedure cannot call another procedure, in that level of MVS.
This restriction is lifted much later in the evolution of the system.

Ron, with your level of MVS skills, I recommend that you do not try to
update the UADS dataset; errors can leave you high and dry and unable to
use your system at all. I don't mean that as a slam, rather as a
caution. Lots of loopholes and trap doors.

Rick
Ron Hudson
2010-05-20 19:31:10 UTC
Permalink
Post by Rick Fochtman
Ron, with your level of MVS skills, I recommend that you do not try to
update the UADS dataset; errors can leave you high and dry and unable to use
your system at all. I don't mean that as a slam, rather as a caution. Lots
of loopholes and trap doors.
Not taken as a slam.. : ^ )
Although I would like to be able to someday replace ACCOUNT
aarrrgghh - Tab and enter are too easy a send before ready command..

As I was saying = I would like to --someday-- replace ACCOUNT
Ron Hudson
2010-05-20 19:37:08 UTC
Permalink
Post by Ron Hudson
Post by Rick Fochtman
Ron, with your level of MVS skills, I recommend that you do not try to
update the UADS dataset; errors can leave you high and dry and unable to use
your system at all. I don't mean that as a slam, rather as a caution. Lots
of loopholes and trap doors.
Not taken as a slam.. : ^ )
Although I would like to be able to someday replace ACCOUNT
aarrrgghh - Tab and enter are too easy a send before ready command..
As I was saying = I would like to --someday-- replace ACCOUNT
arrgh DID IT AGAIN I know what it is in this case I wanted (caps lock)
(return) and hit (tab) (return)

so ... replace that program that updates the user accounts with a full
screen version that lets you
'work with' accounts perhaps the safe way to do that would be create a
program that writes a JCL stream
and fires it off to make the changes employing the account program and then
reads the output to display it on screen again.

pf1 help
pf3 exit
pf8 next user (new user at the end)
pf7 previous user

Now I will send on purpose...
Ron

the screen again.
Rick Fochtman
2010-05-20 21:28:39 UTC
Permalink
-----------------------------------<snip>-------------------------------
Post by Ron Hudson
As I was saying = I would like to --someday-- replace ACCOUNT
arrgh DID IT AGAIN I know what it is in this case I wanted (caps
lock) (return) and hit (tab) (return)
so ... replace that program that updates the user accounts with a full
screen version that lets you
'work with' accounts perhaps the safe way to do that would be create
a program that writes a JCL stream
and fires it off to make the changes employing the account program and
then reads the output to display it on screen again.
pf1 help
pf3 exit
pf8 next user (new user at the end)
pf7 previous user
Now I will send on purpose...
------------------------------<unsnip>-------------------------------
For as often as you'll need it, it's hardly worth the trouble. You can
run the TMP (Terminal Monitor Program) in batch, including displays of
various userids. Try this:

// job statement
//RUN EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=A
//SYSTSIN DD *
ACCOUNT
LIST *
END

(Check the syntax of the LIST command)

Rick
Ron Hudson
2010-05-20 19:29:46 UTC
Permalink
On Wed, May 19, 2010 at 10:35 AM, Rick Fochtman <rfochtman-***@public.gmane.org> wrote:

Ron, with your level of MVS skills, I recommend that you do not try to
update the UADS dataset; errors can leave you high and dry and unable to use
your system at all. I don't mean that as a slam, rather as a caution. Lots
of loopholes and trap doors.
Not taken as a slam.. : ^ )

Although I would like to be able to someday replace ACCOUNT
Rick Fochtman
2010-05-19 17:29:17 UTC
Permalink
--------------------------<snip>-----------------------------
Post by Mike Stramba
Well, answering my own question, adding
//STEPLIB DD DSN=HERC01.LIB1.LOAD,DISP=SHR
to SYS1.PROCLIB(TSOLOGON)
*does* work, but what if I want it global, regardless of logon procedure ?
Obviously I could add it to every logon procedure that might exist,
but that seems messy
Mike
----------------------------<unsnip>--------------------------
If it's in the Master Catalog, which I do NOT recommend, you can add it
to the LNKLSTxx member of SYS1.PARMLIB. There's a number of "gotchas"
that can cause problems if you do this, however.

Just use PDS to locate all the LOGON procs and update them. Look for
PGM=IKJEFT01 in the procs.

Rick
Rick Fochtman
2010-05-19 17:25:06 UTC
Permalink
-------------------------------<snip>-----------------------------
Post by Mike Stramba
Rick,
Where do you setup "global implicit" libraries ?
Add a STEPLIB to the logon proecedure in SYS1.PROCLIB(TSOLOGON) ?
Mike
----------------------------<unsnip>---------------------------------
You can do that, or you can use the command:

CALL 'HUDSON.LINKLIB(GRID)'

to specify the library and program.

There's also a STEPLIB command on the CBTTAPE site, but I don't know if
it will work on 3.8J.

Rick
Ron Hudson
2010-05-19 17:45:20 UTC
Permalink
Post by Rick Fochtman
-------------------------------<snip>-----------------------------
Rick,
Where do you setup "global implicit" libraries ?
Add a STEPLIB to the logon proecedure in SYS1.PROCLIB(TSOLOGON) ?
Mike
----------------------------<unsnip>---------------------------------
CALL 'HUDSON.LINKLIB(GRID)'
Actually I tried this at first, but GRID needs a DD so it can print and it
appearantly does not get it when
you invoke it this way.

The message come out on the system console 3270 :

IEF125I FT06F001 DD STATEMENT MISSING
Post by Rick Fochtman
to specify the library and program.
There's also a STEPLIB command on the CBTTAPE site, but I don't know if it
will work on 3.8J.
Rick
Rick Fochtman
2010-05-19 18:05:32 UTC
Permalink
---------------------------<snip>--------------------------
...... you can use the command:<>

CALL 'HUDSON.LINKLIB(GRID)'

Actually I tried this at first, but GRID needs a DD so it can print and
it appearantly does not get it when you invoke it this way.

The message come out on the system console 3270 :

IEF125I FT06F001 DD STATEMENT MISSING

to specify the library and program.

There's also a STEPLIB command on the CBTTAPE site, but I don't know if
it will work on 3.8J.
---------------------------<unsnip>---------------------------
You can pre-allocate that DD statement, or any other, by the command :

ALLOCATE FI(FT06F001) DA(*)

This will allocate the FT06F001 DD to the terminal. Then use the CALL
statement to invoke the program. You can also do this for the FT05F001
and FT07F001 DD statements.

Rick
Kevin Monceaux
2010-05-19 16:23:04 UTC
Permalink
I now have a new PDS (I think it's a PDS) but I cant 'E' it in RPF menu
3.4 to verify it has a member named "Grid"
Try 'M' to list the members of the PDS.
--
Kevin
http://www.RawFedDogs.net
http://www.WacoAgilityGroup.org
Bruceville, TX

What's the definition of a legacy system? One that works!
Errare humanum est, ignoscere caninum.
Ron Hudson
2010-05-19 16:25:53 UTC
Permalink
Post by Kevin Monceaux
I now have a new PDS (I think it's a PDS) but I cant 'E' it in RPF menu
3.4 to verify it has a member named "Grid"
Try 'M' to list the members of the PDS.
Yes.
Post by Kevin Monceaux
--
Kevin
http://www.RawFedDogs.net
http://www.WacoAgilityGroup.org
Bruceville, TX
What's the definition of a legacy system? One that works!
Errare humanum est, ignoscere caninum.
Ron Hudson
2010-05-19 16:27:02 UTC
Permalink
Post by Kevin Monceaux
I now have a new PDS (I think it's a PDS) but I cant 'E' it in RPF menu
3.4 to verify it has a member named "Grid"
Try 'M' to list the members of the PDS.
Yes. (I mean - yes that works too - didn't think to look in my RPF book)
Post by Kevin Monceaux
--
Kevin
http://www.RawFedDogs.net
http://www.WacoAgilityGroup.org
Bruceville, TX
What's the definition of a legacy system? One that works!
Errare humanum est, ignoscere caninum.
gary_lee_phillips
2010-05-19 18:16:31 UTC
Permalink
You can list the members of a pds from the TSO Ready prompt (or option 6 in RPF) with this command:

LISTD dsname MEM

So for instance, here the command:

listd test.load mem

Produces:

HERC03.TEST.LOAD
--RECFM-LRECL-BLKSIZE-DSORG
U ** 19069 PO
--VOLUMES--
PUB000
--MEMBERS--
LISTM
TEST01
UKJUPUT
READY

To actually execute the load module, you can use the TSO command

CALL dsname(membername)

But!! if any datasets will be read or written, including SYSIN or SYSPRINT, you will need to allocate each of them before hand using the TSO command ALLOC.

If we're still talking about a FORTRAN program, then you probably
need to do these:

ALLOC DD(sysin) DA(*)
ALLOC DD(sysprint) DA(*)

Plus for each unit number used in a write or read statement, you must allocate something. So if you use unit 6 to print messages, you need something like:

ALLOC DD(ft06f001) DA(*) [to print to your screen]

or

ALLOC DD(ft06f001) DA(filename) [to print to file 'filename']

Use 'help allocate' for more details about the ALLOC command. It is the TSO equivalent of the DD statement in JCL.

The FREE command (see 'help free') is used to release files from allocation. This happens automatically when you log off in any case.
Post by scott
//LKED.SYSLMOD DD DSN=youruid.LINKLIB(pgmname),DISP=(,CATLG,DELETE),
Post by scott
// UNIT=SYSDA,SPACE=(CYL,(3,,10)),
// DCB=SYS1.LINKLIB
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1 150
149
So, How do I run it now?
Ron Hudson
2010-05-19 19:59:07 UTC
Permalink
On my way to trying this I went to add another program to my linklib, but I
got a SD37 abend - looks like
I am out of disk space?

How do I check my disk space?

If my disk space is low what can I do to fix that (btw I compressed all my
PDSs)

Is plain vanilla MVS38J really low on available disk space? (Do I need to
'buy' some more DASDs?)


Is my linklib somehow confined to a single volume?
Post by gary_lee_phillips
You can list the members of a pds from the TSO Ready prompt (or option 6 in
LISTD dsname MEM
listd test.load mem
HERC03.TEST.LOAD
--RECFM-LRECL-BLKSIZE-DSORG
U ** 19069 PO
--VOLUMES--
PUB000
--MEMBERS--
LISTM
TEST01
UKJUPUT
READY
To actually execute the load module, you can use the TSO command
CALL dsname(membername)
But!! if any datasets will be read or written, including SYSIN or SYSPRINT,
you will need to allocate each of them before hand using the TSO command
ALLOC.
If we're still talking about a FORTRAN program, then you probably
ALLOC DD(sysin) DA(*)
ALLOC DD(sysprint) DA(*)
Plus for each unit number used in a write or read statement, you must
allocate something. So if you use unit 6 to print messages, you need
ALLOC DD(ft06f001) DA(*) [to print to your screen]
or
ALLOC DD(ft06f001) DA(filename) [to print to file 'filename']
Use 'help allocate' for more details about the ALLOC command. It is the TSO
equivalent of the DD statement in JCL.
The FREE command (see 'help free') is used to release files from
allocation. This happens automatically when you log off in any case.
//LKED.SYSLMOD DD DSN=youruid.LINKLIB(pgmname),DISP=(,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(3,,10)),
// DCB=SYS1.LINKLIB
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1 150
149
So, How do I run it now?
Carlos Aguilera
2010-05-19 20:13:39 UTC
Permalink
You may need to compress the library



Carlos Aguilera

1401 Liggates Rd

Lynchburg VA 24502

Carlos-FiVMtmHp2a9Wk0Htik3J/***@public.gmane.org

434-401-4828



_____

From: turnkey-mvs-***@public.gmane.org [mailto:turnkey-mvs-***@public.gmane.org] On
Behalf Of Ron Hudson
Sent: Wednesday, May 19, 2010 3:59 PM
To: turnkey-mvs-***@public.gmane.org
Subject: Re: [turnkey-mvs] Re: Compile and run later





On my way to trying this I went to add another program to my linklib, but I
got a SD37 abend - looks like
I am out of disk space?

How do I check my disk space?

If my disk space is low what can I do to fix that (btw I compressed all my
PDSs)

Is plain vanilla MVS38J really low on available disk space? (Do I need to
'buy' some more DASDs?)


Is my linklib somehow confined to a single volume?




On Wed, May 19, 2010 at 11:16 AM, gary_lee_phillips <***@gmail.
<mailto:tivo.overo-***@public.gmane.org> com> wrote:



You can list the members of a pds from the TSO Ready prompt (or option 6 in
RPF) with this command:

LISTD dsname MEM

So for instance, here the command:

listd test.load mem

Produces:

HERC03.TEST.LOAD
--RECFM-LRECL-BLKSIZE-DSORG
U ** 19069 PO
--VOLUMES--
PUB000
--MEMBERS--
LISTM
TEST01
UKJUPUT
READY

To actually execute the load module, you can use the TSO command

CALL dsname(membername)

But!! if any datasets will be read or written, including SYSIN or SYSPRINT,
you will need to allocate each of them before hand using the TSO command
ALLOC.

If we're still talking about a FORTRAN program, then you probably
need to do these:

ALLOC DD(sysin) DA(*)
ALLOC DD(sysprint) DA(*)

Plus for each unit number used in a write or read statement, you must
allocate something. So if you use unit 6 to print messages, you need
something like:

ALLOC DD(ft06f001) DA(*) [to print to your screen]

or

ALLOC DD(ft06f001) DA(filename) [to print to file 'filename']

Use 'help allocate' for more details about the ALLOC command. It is the TSO
equivalent of the DD statement in JCL.

The FREE command (see 'help free') is used to release files from allocation.
This happens automatically when you log off in any case.
//LKED.SYSLMOD DD DSN=youruid.LINKLIB(pgmname),DISP=(,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(3,,10)),
// DCB=SYS1.LINKLIB
I susspected It was something like that - I now have a new PDS (I think
it's a PDS)
but I cant 'E' it in RPF menu 3.4 to verify it has a member named "Grid"
HUDSON.DATA.DATA PUB002 10.138 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.138 PO FB 80 3120 1
30 5
HUDSON.LINKLIB MVSCAT 10.138 PO U 0 32760 1
45 44
HUDSON.PROG.PL1 PUB002 10.133 PO FB 80 3120 1 150
149
So, How do I run it now?
Mike Stramba
2010-05-19 21:13:05 UTC
Permalink
You can use DVOL to check the disk space.

You may have just allocated the PDS with not enough space to start
with. Or too few "directory" entreis (slots for PDS members).

PDS's are fixed size files, unlike the dynamic sized files on P.C's, / Linux.

Look in the RPF dataset list, the # of remaining directory entries for
the PDS is under the FREE column.

If you are in fact out of *disk* space, you can create another volume
(virtual dasd) by following Jay's instructions :

http://www.jaymoseley.com/hercules/installmvs/adddasd.htm
Ron Hudson
2010-05-19 22:04:28 UTC
Permalink
Post by Mike Stramba
You can use DVOL to check the disk space.
Wow there is a lot DVOL is trying to tell me....
Post by Mike Stramba
You may have just allocated the PDS with not enough space to start
with. Or too few "directory" entreis (slots for PDS members).
PDS's are fixed size files, unlike the dynamic sized files on P.C's, /
Linux.
Look in the RPF dataset list, the # of remaining directory entries for
the PDS is under the FREE column.
I was using space=(cyl,(10,,30)) I deleted the PDS and used
space=(cyl,(10,10,30)) once and then used disp=(,catlg,) afterward. Now
my linklib has two members. Grid and UlamsLD
Post by Mike Stramba
If you are in fact out of *disk* space, you can create another volume
http://www.jaymoseley.com/hercules/installmvs/adddasd.htm
Rick Fochtman
2010-05-20 16:44:26 UTC
Permalink
-------------------------------<snip>-----------------------------
On my way to trying this I went to add another program to my linklib,
but I got a SD37 abend - looks like I am out of disk space?
-------------------------------<unsnip>-----------------------------
Not necessarily. You've filled the PDS to where it needs another extent
and it's not available. Either your secondary allocation was zero or
you've already got 16 extents. All the example allocations via JCL that
I've seen here have specified no secondary extents, so that's probably
your problem. Send me, privately, the dsname and volser involved and
I'll send you a deck to affect repairs. Also send the device type and
I'll show you the optimal blksize for LMODs on that device type. In
general, the optimal blksize for LMOD datasets is a full track, or
32,760, whichever is smaller.

---------------------------------<snip>-----------------------------------
How do I check my disk space?
----------------------------------<unsnip>-----------------------------
On the CBTTAPE web site, locate a program called LSPACE, download and
assemble it. I'd suggest you link it into your SYS1.LINKLIB dataset,
then issue the console command "F LLA,REFRESH". The comments in the code
will tell you how to use it and how to interpret the results.

------------------------------<snip>----------------------------------
If my disk space is low what can I do to fix that (btw I compressed all
my PDSs)
-----------------------------<unsnip>--------------------------------
Let's not cross that bridge just yet. I'm sure you still have lots of
space; it's just a question of understanding usage.

-----------------------------<snip>-----------------------------------
Is plain vanilla MVS38J really low on available disk space? (Do I need
to 'buy' some more DASDs?)
-----------------------------<unsnip>----------------------------------
MVS can use huge amounts of disk space, up to 256 devices on each
channel. Your configuration may need adjustment but let's try to learn
the basics of space management before we go "buying" DASD.

------------------------------<snip>----------------------------------
Is my linklib somehow confined to a single volume?
------------------------------<unsnip>-------------------------------
All Partitioned Datasets (DSORG=PO) are limited to a single volume. That
restriction has existed since PDS's were first introduced and still
exists today under z/OS.

Unlike Windoze and UNIX/LINUX, MVS requires that you estimate the space
requirements before creating a dataset and you'll be held to those
limits. I typically allocate 25 cylinders for the primary and 10
cylinders for the secondary space for a private linklib. I compute the
number of directory blocks such that they take a integral number of
tracks. BLKSIZE is as described above, LRECL is not specified and RECFM
is always U.

If there's enough interest, I'll make some excerpts from some manuals
and pass them to somebody here to add to the files section of this list.
They might be helpful in dealing with some of these "housekeeping"
issues and save some headaches.

Rick
Ron Hudson
2010-05-20 17:49:55 UTC
Permalink
HI Rick,

Much has happend since that email - I deleted the PDS first off (easily
replace as it just recieves
objects made from my own source code).

I Wrote JCL to re-created the PDS itself, then in the two jobs that add
members to the library i just
add the member with no space parameter..

Here is the JCL to create the library...

Update MKLIB : Trunc Xlate Top Nonum Nulls Asis
-----------------------------
Cmd => Scope 01,72 Scroll
CSR
......
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000100 //MKLIB JOB (MKLIB),'-HUDSONRA-',
000200 // CLASS=A,
000300 // MSGCLASS=A,
000400 // MSGLEVEL=(1,1)
000500 //* *************************************************************
000600 //DO EXEC PGM=IEFBR14
000700 //DD00 DD DISP=(NEW,CATLG),DSN=HUDSON.LINKLIB(TEMP),
000800 // SPACE=(TRK,(45,15,50)),VOL=SER=(PUB000),
000900 // DCB=SYS1.LINKLIB,UNIT=SYSALLDA
****** ****************************** End of data
*****************************

BTW I set these in the email as 'small' 'courier new' do you see them that
way?

Currently I am finding that after I add the second member the size and free
are
drastically reduced...

Datasets starting with HUDSON
8---------------------------------
Cmd =>
C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext Size
Free
HUDSON.ASMB.ASM PUB002 10.139 PO FB 80 3120 1 225
224
HUDSON.CMDPROC MVSCAT 10.140 PO FB 80 19040 1
15 14
HUDSON.COBOL.COBOL PUB002 10.136 PO FB 80 3120 1 150
149
HUDSON.COMM.CNTL PUB000 10.140 PO FB 80 3120 1
30 28
HUDSON.DATA.DATA PUB002 10.139 PO FB 80 3120 1 300
299
HUDSON.FORT.FORTH PUB000 10.140 PO FB 80 3120 1
30 28
HUDSON.LINKLIB PUB000 10.140 PO U 0 19069 1
5 0
HUDSON.PROG.PL1 PUB002 10.139 PO FB 80 3120 1 150
149

The item of interest is HUDSON.LINKLIB - I have just added the 2nd member
and
it had a size of 95 and free of 45 - now look at it - 5 and 0.
Mike Schwab
2010-05-20 18:03:19 UTC
Permalink
For a PDS, I would go with a SPACE=(CYL,(1,1,50)) space unit instead
of TRK. That way you have the remainder of a cylinder at the end,
like the other datasets, if a free command is issued on the dataset.
And each extent is a larger value, so you need extents less
frequently, and you don't get to 16 extents so fast.

On Thu, May 20, 2010 at 12:49 PM, Ron Hudson <hudson.ra-***@public.gmane.org> wrote:
<deleted>
000600 //DO       EXEC PGM=IEFBR14
000700 //DD00     DD  DISP=(NEW,CATLG),DSN=HUDSON.LINKLIB(TEMP),
000800 //          SPACE=(TRK,(45,15,50)),VOL=SER=(PUB000),
000900 //          DCB=SYS1.LINKLIB,UNIT=SYSALLDA
<deleted>
 C Dataset name               Volume Ref.dt Org  RECFM RECL   BLK Ext  Size Free
<deleted>
   HUDSON.LINKLIB             PUB000 10.140 PO   U        0 19069   1     5    0
<deleted>
The item of interest is HUDSON.LINKLIB - I have just added the 2nd member and
it had a size of 95 and free of 45 - now look at it - 5 and 0.
--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?
Ron Hudson
2010-05-20 18:33:36 UTC
Permalink
Post by Mike Schwab
For a PDS, I would go with a SPACE=(CYL,(1,1,50)) space unit instead
clip

Ok, I did that then deleted the PDS , ran all three jobs and the free of 0
is back but both
members are present in the PDS (Does this say I have 2 extensions?)

C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext Size
Free
----- snip -----
HUDSON.LINKLIB PUB000 10.140 PO U 0 19069 2
5 0
Post by Mike Schwab
clip
Where do Forest Rangers go to get away from it all?
(Fancy Hotels | Museums | The Opera) In the BIG CITY??
Rick Fochtman
2010-05-20 21:20:34 UTC
Permalink
--------------------------------<snip>-----------------------------
Post by Ron Hudson
Ok, I did that then deleted the PDS , ran all three jobs and the free
of 0 is back but both
members are present in the PDS (Does this say I have 2 extensions?)
C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext
Size Free
----- snip -----
HUDSON.LINKLIB PUB000 10.140 PO U 0 19069
2 5 0
----------------------------<unsnip>--------------------------------
Yes, you have two extents.

Rick
Rick Fochtman
2010-05-20 21:19:10 UTC
Permalink
---------------------------<snip>--------------------------
Post by Ron Hudson
HI Rick,
Much has happend since that email - I deleted the PDS first off
(easily replace as it just recieves
objects made from my own source code).
I Wrote JCL to re-created the PDS itself, then in the two jobs that
add members to the library i just
add the member with no space parameter..
Here is the JCL to create the library...
Update MKLIB : Trunc Xlate Top Nonum Nulls Asis
-----------------------------
Cmd => Scope 01,72
Scroll CSR
......
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
000100 //MKLIB JOB (MKLIB),'-HUDSONRA-',
000200 // CLASS=A,
000300 // MSGCLASS=A,
000400 // MSGLEVEL=(1,1)
000500 //* *************************************************************
000600 //DO EXEC PGM=IEFBR14
000700 //DD00 DD DISP=(NEW,CATLG),DSN=HUDSON.LINKLIB(TEMP),
000800 // SPACE=(TRK,(45,15,50)),VOL=SER=(PUB000),
000900 // DCB=SYS1.LINKLIB,UNIT=SYSALLDA
****** ****************************** End of data
*****************************
BTW I set these in the email as 'small' 'courier new' do you see them
that way?
Currently I am finding that after I add the second member the size and
free are
drastically reduced...
Datasets starting with HUDSON
8---------------------------------
Cmd =>
C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext
Size Free
HUDSON.ASMB.ASM PUB002 10.139 PO FB 80 3120
1 225 224
HUDSON.CMDPROC MVSCAT 10.140 PO FB 80 19040
1 15 14
HUDSON.COBOL.COBOL PUB002 10.136 PO FB 80 3120
1 150 149
HUDSON.COMM.CNTL PUB000 10.140 PO FB 80 3120
1 30 28
HUDSON.DATA.DATA PUB002 10.139 PO FB 80 3120
1 300 299
HUDSON.FORT.FORTH PUB000 10.140 PO FB 80 3120
1 30 28
HUDSON.LINKLIB PUB000 10.140 PO U 0 19069
1 5 0
HUDSON.PROG.PL1 PUB002 10.139 PO FB 80 3120
1 150 149
The item of interest is HUDSON.LINKLIB - I have just added the 2nd
member and
it had a size of 95 and free of 45 - now look at it - 5 and 0.
----------------------------------<unsnip>----------------------------------
Take everything off the LKED.SYSLMOD statement except the DSNAME(member)
and DISP=SHR.

What's happening is that you're releasing all unused space after each
LMOD goes into it.

Then try re-allocating with SPACE=(CYL,(5,5,89)).

Rick
Ron Hudson
2010-05-20 21:33:46 UTC
Permalink
Post by Rick Fochtman
Take everything off the LKED.SYSLMOD statement except the DSNAME(member)
and DISP=SHR.
Actually, that -is- the way I had it...
BTW I changed the name of the PDS to HUDSON.GO.LOAD

Example from grid build jcl (ulams is also the same):

//LKED.SYSLMOD DD DSN=HUDSON.GO.LOAD(IGRID),DISP=(OLD,CATLG,)


After delete and 3 rebuilds:

C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext Size
Free
--- SNIP ---
HUDSON.GO.LOAD PUB000 10.140 PO U 0 19069 2
7 0
Post by Rick Fochtman
What's happening is that you're releasing all unused space after each LMOD
goes into it.
Then try re-allocating with SPACE=(CYL,(5,5,89)).
I did edit my mklib job to use those parameters.
Post by Rick Fochtman
Rick
Rick Fochtman
2010-05-20 22:03:05 UTC
Permalink
---------------------------------<snip>------------------------------
Post by Ron Hudson
//LKED.SYSLMOD DD DSN=HUDSON.GO.LOAD(IGRID),DISP=(OLD,CATLG,)
C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext
Size Free
--- SNIP ---
HUDSON.GO.LOAD PUB000 10.140 PO U 0 19069
2 7 0
What's happening is that you're releasing all unused space after
each LMOD goes into it.
Then try re-allocating with SPACE=(CYL,(5,5,89)).
I did edit my mklib job to use those parameters.
--------------------------------------<unsnip>---------------------------------
DISP=(OLD,CATLG) is unnecessary. I'll bet you're getting a NOT CATLGED -
2 message on each LINKEDIT. You're more efficient with a pre-defined
dataset to use SHR.

Look in the PROC you're using and see if the SYSLMOD card has a SPACE
parm that includes RLSE. That's what is releasing your space.

You might want to consider building your own proc that does exactly what
you want and doesn't include any parameters you don't want or need.

Rick
Ron Hudson
2010-05-20 22:27:06 UTC
Permalink
Post by Rick Fochtman
---------------------------------<snip>------------------------------
//LKED.SYSLMOD DD DSN=HUDSON.GO.LOAD(IGRID),DISP=(OLD,CATLG,)
C Dataset name Volume Ref.dt Org RECFM RECL BLK Ext Size
Free
--- SNIP ---
HUDSON.GO.LOAD PUB000 10.140 PO U 0 19069 2
7 0
Post by Rick Fochtman
What's happening is that you're releasing all unused space after each LMOD
goes into it.
Then try re-allocating with SPACE=(CYL,(5,5,89)).
I did edit my mklib job to use those parameters.
--------------------------------------<unsnip>---------------------------------
DISP=(OLD,CATLG) is unnecessary. I'll bet you're getting a NOT CATLGED - 2
message on each LINKEDIT. You're more efficient with a pre-defined dataset
to use SHR.
I can change that ... But RPF says HUDSON.GO.LOAD is cataloged.
Post by Rick Fochtman
Look in the PROC you're using and see if the SYSLMOD card has a SPACE parm
that includes RLSE. That's what is releasing your space.
If I am overriding the syslmod DD isn't the whole old one replaced with my
new one?
Post by Rick Fochtman
You might want to consider building your own proc that does exactly what
you want and doesn't include any parameters you don't want or need.
Rick
Thanks for all your help, I don't want you to think I am arguing with you
above - I am just asking questions to help
my understanding.


BTW - I ran "ulamsld" from TSO! yay! I used the

ALLOC FI(FT05F001) DA(*)
ALLOC FI(FT06F001) DA(*)
CALL GO(ULAMLD)

It then politely waited (since I didn't prompt) for my two 5 digit start and
stop numbers then produced the ulams
data of each number of the series...

I suppose later I will try putting all this in a clist so I can just call
it by name...

Ron.
Mike Stramba
2010-05-21 00:40:26 UTC
Permalink
Ron,

I've sort of lost track in this thread ....

can you post your JCL for compiling & linking your program ?

thx

Mike
Mike Stramba
2010-05-21 00:57:13 UTC
Permalink
And on the subject of space, here's more than you ever wanted to know
about MVS disks :

http://www.seas.ucla.edu/~mkampe/cs111.wq10/docs/mvs.html
Ron Hudson
2010-05-21 02:28:27 UTC
Permalink
Post by Mike Stramba
And on the subject of space, here's more than you ever wanted to know
http://www.seas.ucla.edu/~mkampe/cs111.wq10/docs/mvs.html<http://www.seas.ucla.edu/%7Emkampe/cs111.wq10/docs/mvs.html>
Thanks, bookmarked for later review.
Ron Hudson
2010-05-21 02:27:11 UTC
Permalink
Post by Mike Stramba
Ron,
I've sort of lost track in this thread ....
can you post your JCL for compiling & linking your program ?
thx
Mike
Sure:

//ULAMLD JOB '-HUDSONRA-',
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)
//* ****************************************************************
//MAKE EXEC FORTHCL,REGION.FORT=400K
//FORT.SYSIN DD DISP=SHR,DSN=HUDSON.FORT.FORTH(ULAMLD)
//* *****************************************************************
//LKED.SYSLIB DD DISP=SHR,DSN=USER.FORTLIB
// DD DISP=SHR,DSN=SYS1.FORTLIB
//LKED.SYSLMOD DD DSN=HUDSON.GO.LOAD(ULAMLD),DISP=SHR
//
Ron Hudson
2010-05-21 02:30:42 UTC
Permalink
Post by Mike Stramba
Ron,
I've sort of lost track in this thread ....
can you post your JCL for compiling & linking your program ?
thx
And here is the JCL for creating HUDSON.GO.LOAD(PDS)

//MKLIB JOB (MKLIB),'-HUDSONRA-',
// CLASS=A,
// MSGCLASS=A,
// MSGLEVEL=(1,1)
//* *************************************************************
//DO EXEC PGM=IEFBR14
//DD00 DD DISP=(NEW,CATLG,),DSN=HUDSON.GO.LOAD(TEMP),
// SPACE=(CYL,(5,5,89)),VOL=SER=(PUB000),
// DCB=SYS1.LINKLIB,UNIT=SYSALLDA
Ron Hudson
2010-05-21 02:31:43 UTC
Permalink
Post by Ron Hudson
Post by Mike Stramba
Ron,
I've sort of lost track in this thread ....
can you post your JCL for compiling & linking your program ?
thx
And here is the JCL for creating HUDSON.GO.LOAD(PDS)
//MKLIB JOB (MKLIB),'-HUDSONRA-',
// CLASS=A,
// MSGCLASS=A,
// MSGLEVEL=(1,1)
//* *************************************************************
//DO EXEC PGM=IEFBR14
//DD00 DD DISP=(NEW,CATLG,),DSN=HUDSON.GO.LOAD(TEMP),
// SPACE=(CYL,(5,5,89)),VOL=SER=(PUB000),
// DCB=SYS1.LINKLIB,UNIT=SYSALLDA
btw those blank lines are not in the file... not sure where they came from..
halfmeg
2010-05-21 11:34:19 UTC
Permalink
Post by Rick Fochtman
<snip>
Post by Ron Hudson
And here is the JCL for creating HUDSON.GO.LOAD(PDS)
//MKLIB JOB (MKLIB),'-HUDSONRA-',
// CLASS=A,
// MSGCLASS=A,
// MSGLEVEL=(1,1)
//* *************************************************************
//DO EXEC PGM=IEFBR14
//DD00 DD DISP=(NEW,CATLG,),DSN=HUDSON.GO.LOAD(TEMP),
// SPACE=(CYL,(5,5,89)),VOL=SER=(PUB000),
// DCB=SYS1.LINKLIB,UNIT=SYSALLDA
It is a little odd to me that you would specify a member name on the creation of the PDS in the JCL above. It may work fine, I've just don't believe I've ever seen it before.

Your problem with disappearing space maybe as posted earlier, there is JCL which releases the unused space. Whenever you submit a job which uses a cataloged procedure, in this case FORTHCL, the job incorporates the JCL in the procedure.
//SYSLMOD DD DSNAME=&GOSET(MAIN),UNIT=SYSDA,DISP=(,PASS),
// SPACE=(3072,(30,10,1),RLSE)

That RLSE in the PROC is most likely shrinking your PDS. The sysout from the execution of your compile and link will probably give the clearest indication of what actually occurred.

Phil
Rick Fochtman
2010-05-21 20:28:28 UTC
Permalink
------------------------------------<snip>----------------------------
Post by Rick Fochtman
DISP=(OLD,CATLG) is unnecessary. I'll bet you're getting a NOT
CATLGED - 2 message on each LINKEDIT. You're more efficient with a
pre-defined dataset to use SHR.
I can change that ... But RPF says HUDSON.GO.LOAD is cataloged.
------------------------------<unsnip>-----------------------------
It is cataloged. You're asking for it to be cataloged again!

-------------------------------<snip>--------------------------------
Post by Rick Fochtman
Look in the PROC you're using and see if the SYSLMOD card has a
SPACE parm that includes RLSE. That's what is releasing your space.
If I am overriding the syslmod DD isn't the whole old one replaced
with my new one?
-----------------------------<unsnip>--------------------------------
Not EVERY parameter. Those that don't take subparameters may be
overridden, but some special keywords are NOT. The RLSE parameter is one
that is NOT negated by an override.

The PROCs that were supplied as part of MVT and/or MVS were NOT always
good JCL practice, since they often specified inappropriate values.
Written by amatuers. :-)

You might want to consider building your own proc that does exactly what
you want and doesn't include any parameters you don't want or need.

----------------------------------------<snip>-----------------------------
Post by Rick Fochtman
Thanks for all your help, I don't want you to think I am arguing with
you above - I am just asking questions to help
my understanding.
--------------------------------------<unsnip>------------------------------
After 35+ years in the Systems Programming world, I've accepted that not
every newcomer understands it as well as us old-timers. :-)

----------------------------------------<snip>--------------------------------------
Post by Rick Fochtman
BTW - I ran "ulamsld" from TSO! yay! I used the
ALLOC FI(FT05F001) DA(*)
ALLOC FI(FT06F001) DA(*)
CALL GO(ULAMLD)
It then politely waited (since I didn't prompt) for my two 5 digit
start and stop numbers then produced the ulams
data of each number of the series...
I suppose later I will try putting all this in a clist so I can just
call it by name...
-----------------------------------------<unsnip>----------------------------------
Congratulations! When you're ready to play CLIST games, we'll talk about
stacking program input parms in a CLIST! :-)

Rick
<mailto:hudson.ra-***@public.gmane.org?subject=Re:%20%5Bturnkey-mvs%5D%20Re:%20Compile%20and%20run%20later>
<mailto:turnkey-mvs-***@public.gmane.org?subject=Re:%20%5Bturnkey-mvs%5D%20Re:%20Compile%20and%20run%20later>

Drop me a private note with location and phone# please. Perhaps we can talk.
Ron Hudson
2010-05-21 23:30:31 UTC
Permalink
The RLSE parameter is one that is NOT negated by an override.
This must be in the JCL that created the linklib.. Hercules is down right
now (as it runs from a VMWare machine, I seem to think it's more stable in
linux than windows.)
Congratulations! When you're ready to play CLIST games, we'll talk about
stacking program input parms in a CLIST! :-)
Kind offer, thanks.
Drop me a private note with location and phone# please. Perhaps we can talk.
Are you a non-skype type? (I remember someone reacted as though I had said a
dirty word
once when I mentioned it..)
Rick Fochtman
2010-05-21 23:48:26 UTC
Permalink
----------------------------------------<snip>-----------------------------------
The RLSE parameter is one that is NOT negated by an override.
This must be in the JCL that created the linklib.. Hercules is down
right now (as it runs from a VMWare machine, I seem to think it's more
stable in linux than windows.)
------------------------------<unsnip>------------------------------------------
The only way to release the space is via a specific JCL parameter; It's
not something that's set in the dataset description on disk.

---------------------------------------<snip>--------------------------------------
Are you a non-skype type? (I remember someone reacted as though I had
said a dirty word
once when I mentioned it..)
----------------------------------------<unsnip>-----------------------------------
I'm a non-skype person, but I won't hold that against anyone. :-)

Rick
Kevin Monceaux
2010-05-22 00:25:32 UTC
Permalink
Hercules is down right now (as it runs from a VMWare machine, I seem to
think it's more stable in linux than windows.)
Is there anything that isn't more stable on Linux than on Windoze? :-)
--
Kevin
http://www.RawFedDogs.net
http://www.WacoAgilityGroup.org
Bruceville, TX

What's the definition of a legacy system? One that works!
Errare humanum est, ignoscere caninum.
Rick Fochtman
2010-05-22 01:20:51 UTC
Permalink
--------------------------------<snip>-------------------------------
Is there anything that isn't more stable on Linux than on Windoze? :-)
-----------------------------<unsnip>-----------------------------
Probably not, but compare the ranges of applications. :-)

Rick

Ron Hudson
2010-05-20 20:27:43 UTC
Permalink
Post by gary_lee_phillips
listd test.load mem
Does this mean I should have named my linklib
Something like HUDSON.GO.LOAD instead of HUDSON.LINKLIB?

(I only type them in capitals cuz the mainframe does)

ron.
Carlos Aguilera
2010-05-20 20:46:47 UTC
Permalink
RonÑ



The name does not matter as long as you keep the high level qualifier which
reflect the ALIAS



Carlos Aguilera

1401 Liggates Rd

Lynchburg VA 24502

Carlos-FiVMtmHp2a9Wk0Htik3J/***@public.gmane.org

434-401-4828



_____

From: turnkey-mvs-***@public.gmane.org [mailto:turnkey-mvs-***@public.gmane.org] On
Behalf Of Ron Hudson
Sent: Thursday, May 20, 2010 4:28 PM
To: turnkey-mvs-***@public.gmane.org
Subject: Re: [turnkey-mvs] Re: Compile and run later







On Wed, May 19, 2010 at 11:16 AM, gary_lee_phillips <***@gmail.
<mailto:tivo.overo-***@public.gmane.org> com> wrote:



listd test.load mem

Does this mean I should have named my linklib

Something like HUDSON.GO.LOAD instead of HUDSON.LINKLIB?

(I only type them in capitals cuz the mainframe does)

ron.
Rick Fochtman
2010-05-20 21:29:59 UTC
Permalink
-----------------------------------<snip>-------------------------------
Post by Carlos Aguilera
On Wed, May 19, 2010 at 11:16 AM, gary_lee_phillips
listd test.load mem
Does this mean I should have named my linklib
Something like HUDSON.GO.LOAD instead of HUDSON.LINKLIB?
(I only type them in capitals cuz the mainframe does)
ron.
--------------------------------<unsnip>----------------------------
No. in your case:

listd 'hudson.linklib' mem

Rick
Greg Price
2010-05-21 08:48:12 UTC
Permalink
Post by gary_lee_phillips
Does this mean I should have named my linklib
Something like HUDSON.GO.LOAD instead of HUDSON.LINKLIB?
The advantage of the LOAD suffix is that it can save typing
in certain circumstances.

If you have a program called PROG1 in HUDSON.GO.LOAD
and your TSO session is running with a PROFILE PREFIX value
of HUDSON, as a HUDSON TSO userid might reasonably have,
then the TSO command
CALL 'HUDSON.GO.LOAD(PROG1)'
can be reduced to
CALL GO(PROG1)

In that sense, the LOAD suffix for load modules is a TSO
convention, as are other suffixes for other data types,
such as CNTL, CLIST, OBJ, etc.

Cheers,
Greg
ScottC
2010-05-19 19:51:24 UTC
Permalink
Post by gary_lee_phillips
ALLOC DD(ft06f001) DA(filename) [to print to file 'filename']
Use 'help allocate' for more details about the ALLOC command. It is
the TSO equivalent of the DD statement in JCL.

Conceptually, from a user perspective, your TSO session is just another
"batch" job that is running. Try issuing the command, "LISTA ST HIS" at
the TSO READY prompt or at RPF option 6. The results show all the
DDNAMES that are allocated to your "job" (TSO session).

To run a program interactively under TSO, you just need to be sure that
all of your DDNAME's are predefined before you issue the "CALL". This
can be issued from the TSO READY prompt or within a CLIST. BTW, if you
write a CLIST, you can pre-allocate all the DD's in the CLIST and then
issue the CALL. So, you (or the user), could just issue a one word
command, such as GRID, and then the CLIST does the rest. Look for the
DD, SYSPROC in the output from "LISTA ST HIS". The datasets allocated
to SYSPROC are the ones that are searched for CLISTs.

A prior post showed the ALLOCATE statement using "FI" instead of "DD" as
is shown above. They are interchangeable, but my preference is to use
"DD" since that makes more sense to me.

Good luck, ScottC
kerravon86
2010-05-19 10:41:54 UTC
Permalink
Post by scott
Well the better choice would have been using a scripting language
such as CLIST. The problem with COBOL, FORTRAN, and the
like is that
they were designed to be used as the batch programming
language or used
inside of the OLTP facility called CICS.
What's wrong with CALLing a Fortran program
from TSO, perhaps with a front-end CLIST?

Surely that's just as good as batch?

CLIST sort of gives you the advantage of being able
to trap the output in another CLIST.

C programs can now also behave like that so
that you can trap the output.

(to Ron)
Regarding viewing PDSes, instead of trying to edit
with "e" try getting a member list with "m".

BFN. Paul.
Rick Fochtman
2010-05-19 14:33:19 UTC
Permalink
-------------------------------------<snip>---------------------------------
Hey all,

I would like to start creating programs that I can run from a TSO
session, interactively.

I am thinking I need to write the output of the link editor to a file so
it can be run when needed.

Where do I look for examples of this?

Thanks.

Ron.
-----------------------------<unsnip>---------------------------------------
Take a look in the Linkage Editor manual, or a current copy of "Program
Management" manual. Program Management will give examples using the
Binder, but the technique is the same for either the linkage editor or
program binder, for your purposes.

Rick
Andreas F. Geissbuehler
2010-05-19 14:39:02 UTC
Permalink
From: Ron Hudson
Sent: Tuesday, May 18, 2010 10:33 PM
Subject: [turnkey-mvs] Compile and run later

I would like to start creating programs that I can run from a TSO session, interactively.
Ron,

I recalled something I wrote. You might find this helpful:


--------------------------------------------------------------------------------

From: Andreas F. Geissbuehler
To: turnkey-mvs-***@public.gmane.org
Sent: Saturday, April 26, 2008 8:28 AM
Subject: Re: [turnkey-mvs] PA1 in wc3270

Original Message From: M. Khalid Khan
...and it insists that you enter "type", whatever that "type" is.
CAN ANYONE OF YOU GURUS TELL WHAT THE HECK IS THIS
PROGRAM ASKING FOR ? OR HOW CAN IT BE MADE TO SHUT UP ?
Not sure but I believe this is what you are after:
ASM for Assembler source
COB for COBOL source
CNTL for JCL
CLIST for clists
LIST, OUTLIST, TESTLIST
OBJ
LOAD
PL1, FORT, RPG, ...
DATA for all else

If you enter HELP COMMANDS you see the original repertoire of
TSO commands. Before SPF (prior to 1975) that was all there was.
Some, like the VSAM-related came later (with VS1 and VS2 TSO).

The idea was to save keystrokes and keep order.

EDIT TEST(GENER) CN
edits GENER in the 'KHAN.TEST.CNTL' pds

EX DRYRUN
EXecutes the clist in 'KHAN.DRYRUN.CLIST'
where
KHAN is typically the TSO user-id or better explained,
the prefix from PROF PREF(prefix)

If you want to use TSO wihout adhereing to the naming
convention you can do so, provided you enter the FQDSN:
EDIT 'KHAN.TEST.JCLLIB(GENER)' CN

did you notice? ... the 'CN' ? (short for CNTL)
I believe this is the source of your frustration.
Now, I hope you find the rest by entering
HELP cmd
e.g. HELP EDIT or HELP EDIT SYN,
HELP COB, HELP EX, HELP ASM, HELP LINK ...

Look, here are the guts of a typycal TSO session, say 1974,
what a user might have typed on his 3270 screen:

EDIT DRYRUN ASM NEW
...enter the program
ASM DRYRUN (assemble it)
LINK DRYRUN (link it)
EDIT DRYRUN CL NEW
... enter your dataset ALLOCs
... enter CALL DRYRUN
... enter your dataset FREEs
EX DRYRUN
... oops, it abended
TEST (by itself, or TEST DRYRUN)
EDIT DRYRUN ASM
L 100 (now put cursor up on displayed line,
overtype the bad, hit ENTER
END SAVE
EX ASMFCL DRYRUN (forgot, I once made a clist, let's use it here)
EDIT DRYRUN CN NEW
...enter JOB, EXEC, DD
end save
SUB DRYRUN

Hopefully the above 'example' helps to understand why the dataset
types were a good thing. It also made it easier to manage your
disk space, E.G. the above example would have allocated and used:
KHAN.DRYRUN.ASM
KHAN.DRYRUN.CLIST
KHAN.DRYRUN.CNTL
KHAN.DRYRUN.LIST
KHAN.DRYRUN.LOAD
KHAN.DRYRUN.OBJ

Hope that 'HELP's..!

Andreas F. Geissbuehler
AFG Consultants Inc.
http://www.afgc-inc.com/
Carlos Aguilera
2010-05-19 21:46:18 UTC
Permalink
How to compress a PDS:



//MYJOB JOB (JCLLIB),

// 'SOMETHING',

// CLASS=A,NOTIFY=&USERID,

//* MSGCLASS=A,

// MSGLEVEL=(0,0)

//COMPRESS EXEC PGM=IEBCOPY

//SYSPRINT DD SYSOUT=*

//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1,1))

//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(1,1))

//I1 DD DSN=YOUR.LIBRARY.NAME,DISP=SHR

//SYSIN DD *

COPY INDD=((I1,R)),OUTDD=I1





Carlos Aguilera

1401 Liggates Rd

Lynchburg VA 24502

Carlos-FiVMtmHp2a9Wk0Htik3J/***@public.gmane.org

434-401-4828
Ron Hudson
2010-05-19 21:50:51 UTC
Permalink
or perhaps type

compress 'hudson.fort.forth' at a tso command line?
Post by Carlos Aguilera
//MYJOB JOB (JCLLIB),
// 'SOMETHING',
// CLASS=A,NOTIFY=&USERID,
//* MSGCLASS=A,
// MSGLEVEL=(0,0)
//COMPRESS EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(1,1))
//I1 DD DSN=YOUR.LIBRARY.NAME,DISP=SHR
//SYSIN DD *
COPY INDD=((I1,R)),OUTDD=I1
Carlos Aguilera
1401 Liggates Rd
Lynchburg VA 24502
434-401-4828
Loading...