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 (January 2002, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Wed, 30 Jan 2002 08:40:34 -0600
Reply-To:     "McKown, John" <JMckown@HEALTHAXIS.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "McKown, John" <JMckown@HEALTHAXIS.COM>
Subject:      Re: SAS 8.0 loops
Content-Type: text/plain; charset="iso-8859-1"

Well, I found a solution to my problem. Basically, I forgot to mention that the SAS dataset that I was adding to had a number of INDEXes defined on it. When I deleted the INDEXes, did a PROC APPEND with the (CNTLLEV=MEMBER), then rebuilt the INDEXes, the job ran very quickly. Apparently, at least on OS/390 SAS 8.0, updating/adding observations to a dataset with INDEXes is VERY slow and I/O intensive.

Thought others might to like to know.

-- John McKown Applications and Solutions Team Healthaxis

> -----Original Message----- > From: McKown, John [SMTP:JMckown@HEALTHAXIS.COM] > Sent: Monday, January 28, 2002 1:53 PM > To: SAS-L@LISTSERV.UGA.EDU > Subject: [SAS-L] SAS 8.0 loops > > Has anybody else noticed SAS looping when trying to add observations to an > existing, multivolume SAS database? I am loading RACF information, > generated > by the IRRADU00 utility, into a SAS database for reporting purposes. At > present, I keep about 6 months worth of information on the disk resident > database. I keep "everything" on a tape resident database. The job to > create > these databases looks like: > > //STEP002 EXEC SAS8, > // TIME.SAS8=NOLIMIT > //TAPEDB DD DSN=TSHPN.IRRADU00.SASDB, > // DISP=SHR > //SASDB1 DD DSN=TSHPG.JOBINIT.SASDB(0), > // DISP=OLD > //SASDB2 DD DSN=TSHPG.JOBINIT.SASDB(+1), > // DISP=(NEW,CATLG), > // UNIT=CARTO, > // LABEL=(1,SL,EXPDT=99000), > // VOL=(,RETAIN,,35) > //SASPGM DD DSN=TSH009.LI.SAS, > // DISP=SHR > //SYSIN DD * > OPTIONS ERRORS=1 NOCENTER SORTDEV=3390; > DATA SASDB2.JOBINIT; > SET SASDB1.JOBINIT > TAPEDB.JOBINIT; > RUN; > //* > > The step to create the disk resident database is: > > //STEP003 EXEC SAS8, > // TIME.SAS8=NOLIMIT > //WORK DD UNIT=(,4), > // SPACE=(CYL,(1000,200)) > //SASDB DD DSN=TSHPN.JOBINIT.SASDB, > // DISP=(NEW,CATLG), > // UNIT=(SYSDA,5), > // SPACE=(CYL,(600,200)), > // RECFM=FBS,LRECL=27998, > // BLKSIZE=27998 > //SASDB2 DD DSN=TSHPG.JOBINIT.SASDB(+1), > // DISP=OLD > //SASPGM DD DSN=TSH009.LI.SAS, > // DISP=SHR > //SYSIN DD * > OPTIONS ERRORS=1 NOCENTER SORTDEV=3390 BLKSIZE=27998; > PROC SQL; > CREATE TABLE SASDB.JOBINIT AS > SELECT * > FROM SASDB2.JOBINIT > WHERE INIT_DATE_WRITTEN >= INTNX('MONTH',TODAY(),-7) > ; > PROC DATASETS LIBRARY=SASDB; > MODIFY JOBINIT; > INDEX CREATE INIT_EVT_USER_ID ; > INDEX CREATE INIT_APPL ; > INDEX CREATE INIT_EVT_GRP_ID ; > INDEX CREATE INIT_UTK_USER_ID ; > INDEX CREATE INIT_UTK_GRP_ID ; > INDEX CREATE INIT_DATE_WRITTEN ; > RUN; > PROC SQL; > SELECT MIN(INIT_DATE_WRITTEN) FORMAT=YYMMDD10. , > MAX(INIT_DATE_WRITTEN) FORMAT=YYMMDD10. > FROM SASDB.JOBINIT > ; > /* > //* > > What I would like to do instead of the second step, which subsets the > entire > tape, is to update the disk resident database using either PROC SQL or > PROC > APPEND. I have tried both. The following is my PROC SQL step to do this: > > //STEP001 EXEC SAS8, > // TIME.SAS8=NOLIMIT > //WORK DD UNIT=(,4), > // SPACE=(CYL,(1000,200)) > //TAPEDB DD DSN=TSHPN.IRRADU00.SASDB, > // DISP=SHR > //SASDB DD DSN=TSHPN.JOBINIT.SASDB, > // DISP=OLD > //SASPGM DD DSN=TSH009.LI.SAS, > // DISP=SHR > //SYSIN DD * > OPTIONS ERRORS=1 NOCENTER SORTDEV=3390; > PROC SQL; > INSERT INTO SASDB.JOBINIT > SELECT * FROM TAPEDB.JOBINIT > ; > SELECT MIN(INIT_DATE_WRITTEN) FORMAT=YYMMDD10. , > MAX(INIT_DATE_WRITTEN) FORMAT=YYMMDD10. > FROM SASDB.JOBINIT > ; > ENDSAS; > PROC APPEND OUT=SASDB.JOBINIT NEW=TAPEDB.JOBINIT; > /* > > In both cases, the job simply goes into an infinite loop (well, I let it > run > for 27 hours with over 13 million EXCPs before I cancelled it one time!). > This is a very large SAS database. Unfortunately, I am in the process of > recreating it (it takes about 6 hours!). As I recall, the database ends up > being about 50,000 tracks on 3 volumes (3390-3). > > Has anybody heard of a problem with SAS 8.0 with doing this? I don't know > how to search for SAS "fixes". Thanks. > > -- > John McKown > Applications and Solutions Team > Healthaxis


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