LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (April 2000, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Thu, 13 Apr 2000 11:32:04 -0600
Reply-To:     jerry Durbin <Jerry_Durbin@BC.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         jerry Durbin <Jerry_Durbin@BC.COM>
Subject:      Re: Why 2 tape mounts for each tape?
Comments: To: SAS-L@LISTSERV.VT.EDU
Content-Type: text/plain; charset="iso-8859-1"

Dennis, Thank you for the info on the SAS read. It's interesting that when I use JCL to specify the tape DSNs, the tapes are only mounted once with only disp & dsn specified (watching the Jes log to see the actual mounts) but when used in libname's they are mounted twice. Using only the UNIT=AFF= I can force the tapes to a single drive 1 at a time, but have to read them each in as separate data steps & then combine them in a new data step - more efficient for operational tape mounts, but not necessarily for sas coding..... It was appearing to me that the libname statement mounted the tape & then perhaps the set wanted another re-mount of the tape as you mentioned in the double read.

What I was attempting to do was make the sas code versatile in how many tapes could be read in based upon some variable supplied via sysparm(), but not trash the operators by using all the tape drives multiple times. i.e., sometimes this code needs to call in from 2 - 30 tape gdg's based upon the amount of historical data desired and I was trying to be efficient for some reason.. :) Thanks again! JD

> -----Original Message----- > From: Dennis Diskin [SMTP:Dennis.Diskin.B@BAYER.COM] > Sent: Thursday, April 13, 2000 7:01 AM > To: SAS-L@VM.MARIST.EDU > Subject: Re: Why 2 tape mounts for each tape? > > Jerry, > > I think the problem with 2 mounts is caused by SAS having to open all the > members in the SET statement at compile time in order to determine what > variables are in each member and what their attributes are. > SAS then closes the libraries and reopens them to read the data. > You can avoid the second mount message by adding the RETAIN parameter in > the > JCL (see your Fine Manual titled JCL). > > If you try to use the UNIT=AFF to reuse the same tape drive with the SAS > code > as given, I believe you will abend due to the above. > > The only simple way I can think of to get around this would be to read > each > tape into a work file and then SET them together. > In that approach, the UNIT=AFF and RETAIN together should result in one > tape > drive and only two mounts. > If they are VERY large, it might be worth woring on it further. > > Regards, > Dennis Diskin > > > > > > > "DDA.RFC-822=Jerry_Durbin@BC.COM/P=Internet/A= > /C=us"@X400@VM.MARIST.EDU/P=Internet/A= /C=us" on 04/12/2000 01:05:33 PM > Please respond to "DDA.RFC-822=Jerry_Durbin@BC.COM/P=Internet/A= > /C=us"@X400 > Sent by: "DDA.RFC-822=SAS-L@VM.MARIST.EDU/P=Internet/A= /C=us" > To: "DDA.RFC-822=SAS-L@VM.MARIST.EDU/P=Internet/A= /C=us"@X400 > cc: > > Subject: Why 2 tape mounts for each tape? > > Hello list! > I have some code that I am attempting to "tune" and have noticed that with > the code below, for each tape, the MVS system actually does 2 tape mounts. > What must I do to have the code only mount the tapes once? Additionally, > I'd like all the tapes to use the same drive after each tape has been > read, > i.e., UNIT=AFF=<ddname> in JCL parlance such as this sample: > //GET2CURR DD DISP=SHR,DSN=BCISACCT.B031011.BILLING.CICSMTD(0) Disk > //GETTAPE1 DD DISP=SHR,DSN=BCISACCT.B031011.BILLING.CICSBILL(0) Tape > //GETTAPE2 DD DISP=SHR,UNIT=AFF=GETTAPE1, > > // DSN=BCISACCT.B031011.BILLING.CICSBILL(-1) Tape > > , but I would rather not use JCL in this case. I would gladly try looking > for the answer via Reading Those Fine Manuals, but have none at hand to do > so, I am asking the list for suggestions. > > DATA SELT09; > libname GET2CURR 'BCISACCT.B031011.BILLING.CICSMTD(0)' > disp=shr ; > libname GETTAPE1 'BCISACCT.B031011.BILLING.CICSBILL(0)' > disp=shr ; /* Tape 1 */ > libname GETTAPE2 'BCISACCT.B031011.BILLING.CICSBILL(-1)' > disp=shr ; /* Tape 2 */ > SET GET2CURR.DAILYSUM end=eof > GETTAPE1.DAILYSUM end=eof > GETTAPE2.DAILYSUM end=eof > ; > PROGRAM = UMSUM1; > GROUP = SUBSTR(PROGRAM,1,5); > RETAIN HIDATE; > FORMAT HIDATE DATE. ; > FORMAT DATE MMDDYY10. ; > DROP HIDATE; > DATE = RUNDATE ; > TIME = RTIME ; > IF RUNDATE > HIDATE THEN HIDATE = RUNDATE; > IF MNSEGSYS =: 'CICS ' THEN MNSEGSYS = 'CICSP00' > if TRAN =: 'UD' or > TRAN =: 'DM' or > TRAN =: 'FR' THEN OUTPUT SELT09; > else Delete ; > run ; > > Thank You in advance for your suggestions! > JD


Back to: Top of message | Previous page | Main SAS-L page