¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Re: Eliminating duplicate records.

 

Hi!
I knew I had missing something hehe.?
I can search for the COBOL way, but I'm not totally sure it will work with the compiler that is present on tk4 :-) (this one I know is very old because I struggled with it).

Thanks.?


Re: Eliminating duplicate records.

 

Hi David.

AFAIK (I tried anyways) the implementation of SORT present in Tk5 (I guess in Tk4- too, along with the one referenced by Jay Moseley in his website... both with all that 60's 2311/2314 DASD dependency) seems to be a very old one (I guess by its name, it is from OS/360...so 60's stuff), that pre-dates the one that usually folks refer to on blogs, guides, etc.. when someone googles around.
There's a very nice, modern, pdf documentation about OS/360 SORT/MERGE for MVS 3.8 included (which, as Tom, pointed before, basically allows to use more recent DASDs), and it is consistent with the behaviour... So I think the popular SUM FIELDS=NONE comodity found around appears to be a facility of later versions and/or operating systems (I guess possibly on the 80's...who knows :-P).

Cheers.


Re: Eliminating duplicate records.

 

Hi:

I'm probably missing something, but on SORT program under JCL you can use SUM FIELDS=NONE to remove duplicates. For instance

SORT FIELDS=(1,10,CH,A)
SUM FIELDS=NONE

Will sort and delete any duplicates under same criteria (having same value on positions 1 to 10).

Also on COBOL it can be made, I can search for an example I made like 15 years ago if you want.

Regards.?


Re: Eliminating duplicate records.

 

Thank you for your points.

Being a complete noob, after successfully using SORT for MVS directly, yesterday I got it working under COBOL (the only language I know a little and I play with) after following with interest another thread on the group about SORT under COBOL. I did that in Tk5, and the only issues I had were due to my lack of experience with COBOL and SORT.
But once I got it working, I think I can achieve my goal programatically, by just coding a further iteration of the sorted data, droping duplicates as I write to a final output... possibly not an elegant/efficient approach, but that's what I'm capable off :-P

I read with interest the Sort/Merge Exit stuff. I felt that there lies the elegant way to extend that software functionalities, and it is interesting to know that, for this ise-case scenario, E35 is the one that would do the trick... but all that is waaaaay beyond my skills :-P

Thank you very much for your work!
Cheers.


Re: Multi-Volume Dataset

 

So I did run into a cosmetic issue with Sort/Merge.

I wonder if it will be possible to expand the record count fields in this message:

IER054I Records In??????? , Records Out

As you can see, the record count is blank because I upped the record count to 10,000,000.? I wonder if there could be a mod to expand the field by an extra digit or who to ask about that.


Re: IEHMOVE fails with IEH453I DATA SET SYS3.TESTPDS.ASM NOT MOVED/COPIED BECAUS TO DATA SET PREVIOUSLY RACF DEFINED

 

Thank you.? It didn't seem to make any difference.

However, I didn't know that existed.

And if I do preallocate the data set it works just fine.

However, I wanted IEHMOVE to allocate the output data set, because I really didn't want to be bothered doing it myself!

I am working on a program so you can say COPY a.b.c to z.y.z - however it is taking a lot longer than I thought it would.? It will happen though.

I will ask in the Turnkey group too.? I think it is something to do with RAKF.

Thanks.


On Wed, Mar 6, 2024 at 10:57?PM botongrui, aka ¦Ó¦Òm. via <botongrui=[email protected]> wrote:
Hi Clem,
this is a distant memory, so may not work
add ,COPYAUTH to the command
Regards,


Re: Multi-Volume Dataset

 

That was the secret sauce Mike...thank you!

The job spanned the dataset across WORK1 and WORK3 and did it
dynamically.

On Thu, 2024-03-07 at 16:54 -0800, Mike Schwab wrote:
Try //SEQOUT DD UNIT=(WORK,6),? since you only have that many.

On Thu, Mar 7, 2024 at 6:48?PM Daniel L. Srebnick via groups.io
<dan@...> wrote:

Here's the actual job.? If I change SEQOUT to UNIT=(3390,59) the
JCL
fails.

//HERC01S JOB (MYNAME),'TEST SORT',
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//GENERATE EXEC PGM=IEBDG
//SYSPRINT DD SYSOUT=X
//SEQOUT DD UNIT=WORK,DCB=(LRECL=80,RECFM=FB,BLKSIZE=8000),
// DSN=&&SORTTEMP,DISP=(,PASS),SPACE=(CYL,(500,100),RLSE)
//SYSIN DD DATA
?DSD OUTPUT=(SEQOUT) ,,
?FD NAME=F1,LENGTH=2,STARTLOC=1,FORMAT=RA
?FD NAME=F2,LENGTH=4,STARTLOC=3,FORMAT=RA
?FD NAME=F3,LENGTH=4,STARTLOC=7,FORMAT=RA
?FD NAME=F4,LENGTH=10,STARTLOC=11,FORMAT=ZD,INDEX=1
?FD NAME=F5,LENGTH=60,STARTLOC=21
?CREATE QUANTITY=10000000,NAME=(F1,F2,F3,F4,F5)
?END
/*
//SORT EXEC PGM=SORT,REGION=1024K,PARM='MSG=AP'
//SORTIN DD DSN=&&SORTTEMP,DISP=(OLD,DELETE)
//SYSOUT DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//SORTLIB? DD DSNAME=SYS1.SORTLIB,DISP=SHR
//SORTOUT? DD DUMMY,DCB=(BLKSIZE=80,RECFM=F)
//SYSIN DD *
?SORT?? FIELDS=(1,10,CH,A)
?RECORD TYPE=F,LENGTH=(80)
?END
/*
//





Re: Multi-Volume Dataset

 

Try //SEQOUT DD UNIT=(WORK,6), since you only have that many.

On Thu, Mar 7, 2024 at 6:48?PM Daniel L. Srebnick via groups.io
<dan@...> wrote:

Here's the actual job. If I change SEQOUT to UNIT=(3390,59) the JCL
fails.

//HERC01S JOB (MYNAME),'TEST SORT',
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//GENERATE EXEC PGM=IEBDG
//SYSPRINT DD SYSOUT=X
//SEQOUT DD UNIT=WORK,DCB=(LRECL=80,RECFM=FB,BLKSIZE=8000),
// DSN=&&SORTTEMP,DISP=(,PASS),SPACE=(CYL,(500,100),RLSE)
//SYSIN DD DATA
DSD OUTPUT=(SEQOUT) ,,
FD NAME=F1,LENGTH=2,STARTLOC=1,FORMAT=RA
FD NAME=F2,LENGTH=4,STARTLOC=3,FORMAT=RA
FD NAME=F3,LENGTH=4,STARTLOC=7,FORMAT=RA
FD NAME=F4,LENGTH=10,STARTLOC=11,FORMAT=ZD,INDEX=1
FD NAME=F5,LENGTH=60,STARTLOC=21
CREATE QUANTITY=10000000,NAME=(F1,F2,F3,F4,F5)
END
/*
//SORT EXEC PGM=SORT,REGION=1024K,PARM='MSG=AP'
//SORTIN DD DSN=&&SORTTEMP,DISP=(OLD,DELETE)
//SYSOUT DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//SORTLIB DD DSNAME=SYS1.SORTLIB,DISP=SHR
//SORTOUT DD DUMMY,DCB=(BLKSIZE=80,RECFM=F)
//SYSIN DD *
SORT FIELDS=(1,10,CH,A)
RECORD TYPE=F,LENGTH=(80)
END
/*
//





--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?


Re: Multi-Volume Dataset

 

Here's the actual job. If I change SEQOUT to UNIT=(3390,59) the JCL
fails.

//HERC01S JOB (MYNAME),'TEST SORT',
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//GENERATE EXEC PGM=IEBDG
//SYSPRINT DD SYSOUT=X
//SEQOUT DD UNIT=WORK,DCB=(LRECL=80,RECFM=FB,BLKSIZE=8000),
// DSN=&&SORTTEMP,DISP=(,PASS),SPACE=(CYL,(500,100),RLSE)
//SYSIN DD DATA
DSD OUTPUT=(SEQOUT) ,,
FD NAME=F1,LENGTH=2,STARTLOC=1,FORMAT=RA
FD NAME=F2,LENGTH=4,STARTLOC=3,FORMAT=RA
FD NAME=F3,LENGTH=4,STARTLOC=7,FORMAT=RA
FD NAME=F4,LENGTH=10,STARTLOC=11,FORMAT=ZD,INDEX=1
FD NAME=F5,LENGTH=60,STARTLOC=21
CREATE QUANTITY=10000000,NAME=(F1,F2,F3,F4,F5)
END
/*
//SORT EXEC PGM=SORT,REGION=1024K,PARM='MSG=AP'
//SORTIN DD DSN=&&SORTTEMP,DISP=(OLD,DELETE)
//SYSOUT DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//SORTLIB DD DSNAME=SYS1.SORTLIB,DISP=SHR
//SORTOUT DD DUMMY,DCB=(BLKSIZE=80,RECFM=F)
//SYSIN DD *
SORT FIELDS=(1,10,CH,A)
RECORD TYPE=F,LENGTH=(80)
END
/*
//


Re: Eliminating duplicate records.

 

Hi Alejandro,
My primary focus for refurbishing the OS/360 Sort/Merge program and releasing OS/360 Sort/Merge for MVS 3.8 was to remove any dependency on any specific DASD device. I achieved that objective so now MVS 3.8 users are no longer restricted to 2314 DASD for SORTWKxx DASD data sets. This was a sizeable project because the base code was not in particularly good shape. I would very much liked to have expanded the scope of the project and implemented all the later features of DFSORT as DFSORT provides a very powerful and full function data manipulation and reporting language with features like SUM. Implementing the data manipulation and reporting language features would be a major project for just one developer as it provides such a comprehensive set of tools. Perhaps, in the future, I will consider such a project.

To address your immediate requirement could I suggest that you take advantage of the Sort/Merge E35 exit and provide such an exit to detect duplicate records and delete them from the output data set? The IVP members provide examples of E35 exits written in assembler or you could write a COBOL or PLI/F program to invoke the Sort/Merge program and drive an E35 exit.
Regards
Tom


Re: Multi-Volume Dataset

 

// UNIT=(3390,59),

On Thu, Mar 7, 2024 at 4:35?PM Daniel L. Srebnick via groups.io
<dan@...> wrote:

Is it possible to have a (temporary) multi-volume dataset under MVS 3.8j?

As an exercise, I have a job that creates 9.5 million random records and then passes the dataset to OS/360 Sort (using TK5 version).

If I up the record count to 10 million, I run out of space on a single 3390 and the job abends on space.

Any thoughts on this? I do have 6 3390 work volumes.


--
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?


Re: Multi-Volume Dataset

 

You need to give it more space.? SYSUT10,sysut20 on other work volumes.


regards;

Rahim???



??



On Thursday, March 7, 2024 at 04:35:57 PM CST, Daniel L. Srebnick via groups.io <dan@...> wrote:


Is it possible to have a (temporary) multi-volume dataset under MVS 3.8j?

As an exercise, I have a job that creates 9.5 million random records and then passes the dataset to OS/360 Sort (using TK5 version).

If I up the record count to 10 million, I run out of space on a single 3390 and the job abends on space.

Any thoughts on this?? I do have 6 3390 work volumes.


Multi-Volume Dataset

 

Is it possible to have a (temporary) multi-volume dataset under MVS 3.8j?

As an exercise, I have a job that creates 9.5 million random records and then passes the dataset to OS/360 Sort (using TK5 version).

If I up the record count to 10 million, I run out of space on a single 3390 and the job abends on space.

Any thoughts on this?? I do have 6 3390 work volumes.


Re: problem meet when run dfsmsdss restore

 

The problem is not the dasd volume, it's the tape.? You probably reformatted the tape into AWS format, but DFDSS does not understand the record formats you are trying to install to the disk.

To copy a volume from a mainframe to Hercules, you need to upload the tape dataset to your PC in binary format and then upload that dataset to an empty DASD volume on your hercules based z/OS and restore it from there.

Alternatively, I think there is a mod somewhere that you can use on the original mainframe that causes DFDSS to create the AWS format dataset that you can use with hercules.? DFDSS expects each block to be a track image, but I think when you made the AWS tape, you changed the blocks to be quite a bit smaller, but the DFDSS you are using under hercules doesn't "know" that it needs to combine blocks to get a real track image.

There are several methods you can use to copy your data from a mainframe to hercules, but the one you are using isn't one that I have heard of previously.?

Anyway, there are several tried and true methods to transfer the data.

Brian


Re: problem meet when run dfsmsdss restore

 

¿ªÔÆÌåÓý

I believe you should be able to restore to the SAME or LARGER target ¨C

Since you indicate that you dumped from a M9 ¨C you will need to restore to a M9 or larger ¨C

However, NOT to a smaller model ¨C

You are doing a PHYSICAL track for track restore ¨C

?

You might try a LOGICAL restore ¨C to restore all DATA SETS ¨C vs a physical restore ¨C

If you have enough room on the pack ¨C (how full was that M9) ¨C you might get it to work.

?

?

-J-

?

Jeff Bassett

Bassettj@...

(301) 424-3362 (office)

(240) 388-7148 Cell

?

Time spent flying? - is NOT deducted from one¡¯s lifespan

?

From: [email protected] <[email protected]> On Behalf Of shixinlong via groups.io
Sent: Thursday, March 7, 2024 4:12 AM
To: [email protected]
Subject: Re: [H390-MVS] problem meet when run dfsmsdss restore

?

Hi Tom, thanks for your reply.? yes, the source dumped from a 3390-9.
the backup procedure is as below:

//BACKUP? ?PROC VSN=' ',LB=' ',VOLSER=' '? ? ? ? ? ? ? ??

//STEP1? ? EXEC PGM=ADRDSSU,REGION=0M? ? ? ? ? ? ? ? ? ??

//SYSPRINT DD? ?SYSOUT=*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//DASD1? ? DD UNIT=3390,VOL=SER=&VSN,DISP=SHR? ? ? ? ? ??

//TAPE1? ? DD DSN=V&VSN,DISP=(NEW,KEEP,DELETE),? ? ? ? ??

//? ? ? ? ?UNIT=TTAPE,LABEL=(&LB,SL),? ? ? ? ? ? ? ? ? ??

//? ? ? ? ?VOL=(,RETAIN,,,SER=&VOLSER),? ? ? ? ? ? ? ? ??

//? ? ? ? ?DCB=(BLKSIZE=64K,RECFM=U,TRTCH=COMP)? ? ? ? ??

//SYSIN? ? DD *

DUMP INDDNAME(DASD1) OUTDDNAME(TAPE1) COMPRESS OPT(4) -??

ALLDATA(*) ALLEXCP WAIT(0,0) FULL? ? ? ? ? ? ? ? ? ? ? ??

?


Re: problem meet when run dfsmsdss restore

 

Hi,
Unfortunately you've reached the end of my knowledge, but perhaps you need to specify 3390-9 in the hercules conf file ?
I have a thought that using just 3390 defaults to a much smaller 3390-1, so you may need to run the init and restore again after changing the definition.
Regards,
Tom.


Re: problem meet when run dfsmsdss restore

 

Hi Tom, thanks for your reply.? yes, the source dumped from a 3390-9.
the backup procedure is as below:
//BACKUP? ?PROC VSN=' ',LB=' ',VOLSER=' '? ? ? ? ? ? ? ??
//STEP1? ? EXEC PGM=ADRDSSU,REGION=0M? ? ? ? ? ? ? ? ? ??
//SYSPRINT DD? ?SYSOUT=*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
//DASD1? ? DD UNIT=3390,VOL=SER=&VSN,DISP=SHR? ? ? ? ? ??
//TAPE1? ? DD DSN=V&VSN,DISP=(NEW,KEEP,DELETE),? ? ? ? ??
//? ? ? ? ?UNIT=TTAPE,LABEL=(&LB,SL),? ? ? ? ? ? ? ? ? ??
//? ? ? ? ?VOL=(,RETAIN,,,SER=&VOLSER),? ? ? ? ? ? ? ? ??
//? ? ? ? ?DCB=(BLKSIZE=64K,RECFM=U,TRTCH=COMP)? ? ? ? ??
//SYSIN? ? DD *
DUMP INDDNAME(DASD1) OUTDDNAME(TAPE1) COMPRESS OPT(4) -??
ALLDATA(*) ALLEXCP WAIT(0,0) FULL? ? ? ? ? ? ? ? ? ? ? ??



Re: problem meet when run dfsmsdss restore

 

HI,
is the data you are restoring from the same device type as you are restoring too ?
Your target is a 3390, is the source dumped from a 3390 ?

I think that DFSMSdss doesn't convert from one device type to another but expects them to be the same CC HH configuration.
It's a long time since I did dump / restore of this type, I understand it can be faster than doing it by datasets, but
restoring datasets can cross disk types and add them to the vtoc as it does it.

If the restore tape you are using contains a vtoc then the dasd is probably going to be mis-configured
because you have already configured a vtoc, and I doubt that having 2 vtoc's will work.

Regards,
Tom.


Re: IEHMOVE fails with IEH453I DATA SET SYS3.TESTPDS.ASM NOT MOVED/COPIED BECAUS TO DATA SET PREVIOUSLY RACF DEFINED

 
Edited

Hi Clem,
this is a distant memory, so may not work
add ,COPYAUTH to the command

Update: Another colleague suggested defining your TO dataset identically before issuing the command, then COPYAUTH should not be needed

Regards,
Tom


IEHMOVE fails with IEH453I DATA SET SYS3.TESTPDS.ASM NOT MOVED/COPIED BECAUS TO DATA SET PREVIOUSLY RACF DEFINED

 

Hi,

I am trying to run a very simple IEHMOVE but I get a RAKF error in TK5.? The message is:

IEH453I DATA SET SYS1.MACLIB NOT MOVED/COPIED BECAUSE?TO DATA SET PREVIOUSLY RACF DEFINED.

The output data set is not not there, and the User has all the privileges I can give it.? ?That is, it is like Herc01 and has all the RAKF facilities.

Thanks,

?

Clem Clarke

The JCL is:

//CLARKE0 JOB (ACCNT),NAME,MSGLEVEL=(1,1),NOTIFY=SYS3,? ? ? ? ? ?

//? MSGCLASS=X? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//STEP1 EXEC PGM=IEHMOVE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//SYSPRINT DD SYSOUT=*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//SYSUT1 DD UNIT=3390,SPACE=(TRK,30)? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

//DISK01 DD VOL=SER=WORK01,DISP=OLD,UNIT=SYSDA? ? ? ? ? ? ? ? ? ?

//DISK02 DD VOL=SER=WORK02,DISP=OLD,UNIT=SYSDA? ? ? ? ? ? ? ? ? ?

//DISK03 DD VOL=SER=TK5RES,DISP=OLD,UNIT=SYSDA? ? ? ? ? ? ? ? ? ?

//SYSIN DD *? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?COPY TO=3390=WORK01,PDS=SYS1.MACLIB,RENAME=SYS3.TESTPDS3.ASM? ??

?

?

? ? ? ?