Quantcast
Channel: IBM Mainframe Computers Forums
Viewing all articles
Browse latest Browse all 8500

CLIST & REXX :: RE: Replace repeated JCL with looping REXX

$
0
0
Author: prino
Posted: Sun Oct 16, 2016 2:30 am (GMT 5.5)

I've got it working, but I've stumbled upon a subtle difference between JCL and REXX regarding the allocation of datasets that are never opened.

Take the JCL:
Code:
//WEEKOUT   DD DSN=&SYSUID..&TY.&TID..&L.W&PID,
//             DISP=(,CATLG),
//             UNIT=&DASD,
//             SPACE=(TRK,(10,10),RLSE),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0)

and the REXX that I used to replace it:
Code:
"alloc f("ll.i") da("!g.0dsn_n.i") " ||,
                "new reu "           ||,
                "dsorg(ps) "         ||,
                "space(180,60) "     ||,
                "recfm(f b) lrecl(121) blksize(0)"

They should be equivalent, but they are not!

The dataset in the JCL is not opened until version 36 of the program and at that stage it's compared to the previous one (which of course was never opened). In both cases ISRSUPC (SuperC) doesn't care, and it produces a file with just I(nserts) as differences and ends with an RC=1. This signals that the process needs to change the old file and that's done using SORT.

And there the difference occurs, in the JOB, SORT falls over with an RC=16
Code:
ICE043A 3 INVALID DATA SET ATTRIBUTES: SORTIN   BLKSIZE - REASON CODE IS 12

as the dataset was never opened.

However, the datset allocated in the REXX exec (both with, and without the "DSORG(PS)") is OK, and SORT copies an empty dataset.

I solved the "problem" by removing the
Code:
recfm(f b) lrecl(121) blksize(0)
from the TSO alloc command, but as for the why?

Why?
_________________
Robert AH Prins
robert.ah.prins @ the.17+Gb.Google thingy
No programming here (yet) icon_smile.gif


Viewing all articles
Browse latest Browse all 8500

Trending Articles