10-01-2012 10:55 AM
Greetings all. I'm connecting to mainframe SAS from my pc, and upon trying to read a file, I get the following message in the log. It looks to me like the mainframe is needing some input, based on the third line in the below output. My questions are, how do I know what is being asked, and how can I send the input that it seems to be requiring? I know that when browsing some archived files via TSO, the user is prompted to restore from an archive volume, so maybe this is what is happening? Thank you.
NOTE: Remote submit to MVSA commencing.
REMOTE(MVSA): IEC108I OPERATOR ACTION HAS BEEN REQUESTED FOR YOUR DATA SET *<<<<<<;
126 FILENAME gl 'PPPCTK.ZZZ.REVENUEX.DISTRIB.BKPO745(-0)' DISP=SHR;
127 data glrecs;
128 INFILE gl;
130 @2 ID_BA PD6.
131 @8 TS_ACTY $26.
132 @51 GL_ACCT $10.
133 @109 CD_TRANS_ID $4.;
NOTE: The infile GL is:
NOTE: EOV macro was not able to obtain an additional extent for library data set
SYS12275.T102558.RA000.GREG252.R0583348, volume number 1. System rc = 00000B37; Reason
code = 00000004.
ERROR: Write to WORK.GLRECS.DATA failed. File is full and may be damaged.
NOTE: 2269334 records were read from the infile GL.
NOTE: The SAS System stopped processing this step because of errors.
WARNING: The data set WORK.GLRECS may be incomplete. When this step was stopped there were
2269334 observations and 4 variables.
NOTE: The DATA statement used 2.88 CPU seconds and 18348K.
NOTE: The address space has used a maximum of 1996K below the line and 25940K above the line.
NOTE: Remote submit to MVSA complete.
10-01-2012 12:36 PM
Remembering my MVS days (soooo long ago) - message IEC108I means that there is a request issued to the operator to perform some function.
I can only assume that the system is trying to read your file but it may have been archived to '2nd level storage' by HSM (mainframe storage management). HSM will archive old unused files to alternative storage automatically.
It looks like your system is trying to read the file but has run out of space loading the file back too disk - that is the B37 error code - you have run out of space. MVS allocates space in "extents", which you have run out of.
Sometime this is the result of your system just running out of space to store large files that are being recalled for offline storage. The file needs more space to be loaded back to disk before you can use it.
You might need to talk to someone in you Storage Management area to see about having the file "recalled". There are ways to do this yourself with TSO, but my knowledge about this may be dated.
10-01-2012 12:38 PM
I believe there are two unrelated issues:
From the description of your dataset gl (the part under "NOTE: The infile GL is:") the dataset is a tape dataset, which needs to be mounted. So the IEC108I message is just a routine information message that an operator has been notified to mount it.
Your problem is actually described in the series of messages starting at "NOTE: EOV macro was not able to obtain an additional extent for library data set". It and the next two messages are telling you that your output dataset, work.glrecs, has used up all of the space available to it on the disk drive. As you've only processed 2 million fairly short records, I don't think you've done anything wrong.
This is nothing to do with SAS. I suggest you contact whoever manages your mainframe environment, show them the problem, and ask them how to resolve it.
Boy, THAT takes me back a few years!
10-01-2012 12:51 PM
The System rc = 00000B37 indicates a space issue and ties in with the error reported "File is full and may be damaged."
I would advise trying to get a larger work size defined or a larger permanent library or, if possible, subset the data as you're reading it in.
Not too sure why you're getting the IEC108I message; may be worth reading the first few records, e.g.:
INFILE gl obs=10;
and if that works then you know the code, etc. is OK and it further implicates space issues.
10-01-2012 01:03 PM
Thank you all for the responses. Amir, you are correct, obs=10 returns my data with no problem. Now on to IT to see if I can get more space allocated. This is just a thought, but I am only needing the data so I can summarize it. Is there a way to summarize it as it is being processed so I am not creating such a large table? Thank you all so much for the tips.
10-01-2012 01:20 PM
Without RSUBMIT, it's easy. With RSUBMIT, I don't know if this will work or not. If your intent is to follow with something like this:
proc means data=glrecs;
... all the details ...;
You could eliminate your storage space requirements by creating a view instead of a data set:
data glrecs / view=glrecs;
Nothing else would have to change ... if RSUBMIT lets you do this. Also note:
(1) views are not mean to be used over and over again. Each use of the view reads in the entire data set.
(2) the OUTPUT statement on PROC MEANS cannot use out=glrecs. You cannot replace a view with a data set.
10-01-2012 01:40 PM
I think I'm good to go. It seems I don't have an issue with restoring the file from archive, but rather the size of my work library. Out of the 5 million or so observations in each file, I only need around 100K of them, so a few if statements after the infile statement works okay without having to limit the observations. Thank you all for the tips.