Joined: 26 Nov 2002 Posts: 12380 Topics: 75 Location: San Jose
Posted: Fri Jul 16, 2004 12:41 pm Post subject:
Semigeezer,
That was a good catch. 8) I was concetrating on the LRECL,RECFM and Blocksize as the error was pointing to the record length. But I am wondering how would you create a Dataset with DSORG=NONE?
The possible values for DSORG parameter are PS, PSU,DA, DAU, IS, ISU, PO, POU, CX, GS
Let us try with different utility and see if you still get the same error. Run the following job and post the results.
Kolusu that was a good alternative. I thought of using it if nothing existed.
I will try the error pointed out by semigeezer and let you know the results. _________________ Vivek,NJ
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Fri Jul 16, 2004 3:21 pm Post subject:
Actually, any simple alloc that leaves off the DCB info will cause this type of problem.
Code:
SVCTEST CSECT , Simplified SVC 99 invocation
SVCTEST AMODE 31
SVCTEST RMODE 24
BAKR 14,0
LR 12,15
USING SVCTEST,12 -----------------------------------
LA 1,S99RBPTR Get addr of parm list
LR 2,1 Save R1 for TSO TEST
SVC 99 Call Dynalloc
L 0,S99ERROR Save error code
PR , Return to caller
S99RBPTR DC A(X'80000000'+S99RB) Address of request block
S99RB DC AL1(20),AL1(1),XL2'6400' Allocate,Flags
S99ERROR DC AL2(0) Returned error code
S99INFO DC AL2(0) Returned info code
S99TXTPP DC A(TULIST,0,0) Pointer to text units
TU01 DC X'0001',AL2(1),AL2(8),CL8'A ' DDNAME
TU02 DC X'0002',AL2(1),AL2(44),CL44'USER1.FOO' DSname
TU03 DC X'0004',AL2(1),AL2(1),X'04' Status NEW
TU04 DC X'0005',AL2(1),AL2(1),X'02' Norm disp CATLG
TU05 DC X'0007',AL2(0) Tracks
TU06 DC X'000A',AL2(1),AL2(3),X'000001' Prm space
TULIST DC A(TU01,TU02,TU03,TU04,TU05,TU06+X'80000000')
END SVCTEST
,-------------------------------------------------------------------------------
,EDIT ,JUMSB4.FMF0802 ,Columns,00001,00072,
,Command ===>, ,Scroll ===>,CSR ,
,******,***************************** Top of Data ******************************
,******,**************************** Bottom of Data ****************************
,EDIT ,JUMSB4.FMF0803 ,Columns,00001,00072,
,Command ===>, ,Scroll ===>,CSR ,
,******,***************************** Top of Data ******************************
,000100,greek
,******,**************************** Bottom of Data ****************************
JCL
===
********************************* TOP OF DATA **********************************
1 //JUMSB4X JOB B30168FM50919,'BALAJI',MSGCLASS=T,CLASS=A,REGION=0K,
// NOTIFY=JUMSB4
2 //PSTEP12 EXEC PGM=IEBGENER
3 //SYSPRINT DD SYSOUT=*
4 //SYSUT1 DD DSN=JUMSB4.FMF0802,DISP=SHR
5 // DD DSN=JUMSB4.FMF0803,DISP=SHR
6 //SYSUT2 DD SYSOUT=(V,,FM57)
7 //SYSIN DD DUMMY
******************************** BOTTOM OF DATA ********************************
SYSPRINT
------------
DATA SET UTILITY - GENERATE
IEB352I WARNING: ONE OR MORE OF THE OUTPUT DCB PARMS COPIED FROM INPUT
IEB351I I/O ERROR ,JUMSB4X ,PSTEP12 ,2191,D,SYSUT1 ,READ ,WRNG.LEN.RECORD,0000
******************************** BOTTOM OF DATA ******************************** _________________ Vivek,NJ
Joined: 07 Feb 2003 Posts: 266 Topics: 1 Location: Edison, NJ USA
Posted: Fri Jul 16, 2004 9:17 pm Post subject:
Hi Vivek,
You say one file is "empty". Do you know if the pgm that creats the empty file file opens and closes it?
These are symptoms of trying to read an uninitialized file (i.e. no EOF marker). You may want to verify that the pgm doesn't just exit before opening the file.
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Fri Jul 16, 2004 10:04 pm Post subject:
I don't know. I tried it and got the same error IF the data set had never been opened. (opening it in the editor does not count because the editor checks the DS1LSTAR field in the DSCB to see if the data set is empty. If it is, it never really opens it).
If you open and save the empty data using the editor, it will work. What is interesting is that once the dataset is saved, even if it is empty, the DSCB flag that indicates that the end of data is on this volume gets turned on. (Also a flag in the DSCB indicating that the data set was opened since the last backup gets turned on, but I don't see how that is relavent).
I should know this. It's been too long!!! I do know that the system does not save all the dataset characteristics until the it has been opened once. I don't know where it is that it is not saved though. Immediately after allocation, the 'DCB' information in the VTOC (DSCB - that can be verified with the LISTDS dsname LABEL command if you know how to read the DSCB from that) and I would think that the utilities would use that as the final arbiter (via an OBTAIN, SVC 27). But that does not seem to be the case.
Anyway, you can force the data set to be opened and all information to be updated (wherever that is) by appending nothing at all to it and forcing the DCB parms there. This should be done for any data set you think may never have been opened.
The following worked for me when USER1.FOO was allocated but never opened (the 1st step deletes it, the 2nd step reallocates it), and USER1.FOO2 had data in it:
Code:
//USER1D JOB (ACCT),'IEBGENER',CLASS=A,MSGCLASS=A,NOTIFY=USER1
//*********************************************************************
//* delete and reallocate FOO
//*********************************************************************
//IEFBR14 EXEC PGM=IEFBR14
//GOODBYE DD DISP=(MOD,DELETE,DELETE),
// DSN=USER1.FOO,
// UNIT=3390,SPACE=(TRK,(10,0))
//IEFBR14 EXEC PGM=IEFBR14
//HELLO DD DISP=(NEW,CATLG),
// DSN=USER1.FOO,
// UNIT=3390,SPACE=(TRK,(10,0))
//*********************************************************************
//* append nothing to FOO and force dcb information
//*********************************************************************
//IEBGENER EXEC PGM=IEBGENER
//SYSUT1 DD DUMMY,
// DCB=(LRECL=130,RECFM=FBA,BLKSIZE=130,DSORG=PS)
//SYSUT2 DD DISP=OLD,DSN=USER1.FOO
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//*********************************************************************
//* copy from FOO by forcing the dcb information on sysut1
//*********************************************************************
//IEBGENER EXEC PGM=IEBGENER
//SYSUT1 DD DISP=OLD,DSN=USER1.FOO
// DD DISP=OLD,DSN=USER1.FOO2
//SYSUT2 DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
Something is probably wrong with the process (The method of solving whatever problem you are solving) if you are ever copying data sets that have not been opened though.
The only difference I see in your JCL is that you don't have the DCB parameters for the IEFBR14 allocation step. I ran the IEFBR14 STEP without a DCB Parameter and this what I got.
Code:
Management class . . : INTERIM Allocated tracks . : 10
Storage class . . . : BASE Allocated extents . : 1
Volume serial . . . : DMASAP
Device type . . . . : 3390
Data class . . . . . : DEFLT Current Utilization
Organization . . . : PS Used tracks . . . . : 0
Record format . . . : ? Used extents . . . : 0
Record length . . . : 0
Block size . . . . : 0
1st extent tracks . : 10
Secondary tracks . : 0
Data set name type : SMS Compressible . : NO
The DSORG is taken as PS and recfm is not set.
I also did a LISTD / LABEL and it seems that the eof marker is set for this dataset. And here is the DSCB Info
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Sat Jul 17, 2004 1:21 pm Post subject:
I did have the DCB info in the IEFBR14 step originally, but I found it didn't matter. I should have left it, since I did say that the DSCB had the info and then posted an example where it would not (oops). Anyway, yes the EOF mark should be written. I'm not sure why this fails, but I was able to replicate it at will as long as the data set was new (I found at some point that my original JCL wasn't deleting the file, just uncataloging it, but that was a JCL error on my part).
You say one file is "empty". Do you know if the pgm that creats the empty file file opens and closes it?
These are symptoms of trying to read an uninitialized file (i.e. no EOF marker). You may want to verify that the pgm doesn't just exit before opening the file.
Regards, Jack.
Jack , I allocated dataset with IEBGener. Opened them manually and save an empty file and added the string greek in second file. then ran the IEBGENER. it didnt abend this time. I think what you said was correct. I use FOCUS to create the file. I am not sure if focus opens and closes them.
Thanks for the tip. I learnt something new today.
Vivek
PS I tried to find the the routine to handle IOERROR, looks like nobody has done it or it dint fall in the eyes of the people who has done it. I guess I will move with this solution or use a sort step. _________________ Vivek,NJ
Joined: 26 Nov 2002 Posts: 12380 Topics: 75 Location: San Jose
Posted: Mon Jul 19, 2004 8:13 am Post subject:
Vivek,
My shop is SMS managed and it gives me a return code of zero,because SMS writes the EOF mark even for an empty dataset, so I could not replicate your problem.
Run the following jcl and see if you get the same error. If you do the get the same error then post the JESYSMSG output from the job.
All times are GMT - 5 Hours Goto page Previous1, 2, 3Next
Page 2 of 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum