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 (May 2003, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Thu, 15 May 2003 12:05:33 -0400
Reply-To:   "Haynes, Zac" <ZHaynes@BCBSM.COM>
Sender:   "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:   "Haynes, Zac" <ZHaynes@BCBSM.COM>
Subject:   Is there a limit to CALL EXECUTE size? (US5866934)
Comments:   cc: "support@sas.com" <support@sas.com>
Content-Type:   text/plain; charset="iso-8859-1"

I have a simple data step which reads a flat file line by line and inputs when a dataset is found. I then use a 60 line CALL EXECUTE routine to read & process the contents of the passed DSN. The 1st 21 CALL EXECUTE data steps work ok, but the 22nd run shows something new half-way thru the routine: (NOTE: Line generated by the CALL EXECUTE routine.) and starts throwing up syntax errors in the sas log and displays dots(.) between each statement where they didn't exist before in the original CALL EXECUTE. Is there a limit to the number or size of generated CALL EXECUTE code?

This is the data step: options source obs=max; data _null_(drop=logindex); infile abslistc; input @1 abslistc $char132. @; if index(abslistc,'CATO.INFOPAC.ABS.P.LOG.')>0 then do; input @17 logindex $char31. ; call symput('logindex',logindex); call execute("filename abslog '"||logindex||"' disp=shr; "); ...snip...(rest of CALL EXECUTE code)

This is the SAS log just before the errors start: 1181 + filename abslog 'CATO.INFOPAC.ABS.P.LOG.GDG00021' disp=shr;

NOTE: Appending WORK.INDEXROW to WORK.INDEXTBL.

NOTE: There were 1 observations read from the data set WORK.INDEXROW.

NOTE: 1 observations added.

NOTE: The data set WORK.INDEXTBL has 16 observations and 9 variables.

NOTE: The PROCEDURE APPEND used 0.04 CPU seconds and 10275K.

1182 + data indexrow

1183 + (keep=absplib parmlib jobvsam dbase

1184 + date time uid gdgindex profile);

1185 + retain absplib parmlib jobvsam dbase

1186 + date time uid gdgindex profile ;

1187 + infile abslog end=endofile;

1188 + if _n_=1 then do;

1189 + absplib='.'; parmlib='.'; jobvsam='.';

1190 + date='.'; time='.'; uid ='.';

31 The SAS System

1191 + profile='.'; dbase='.';

1192 + gdgindex=substr('CATO.INFOPAC.ABS.P.LOG.GDG00021',20,12);

1193 + end;

1194 + input @1 abslogln $char132. @;

1195 + if time='.'

1196 + & index(abslogln,' JOB')>0

1197 + then input @2 time $char08. @;

1198 + if uid='.'

1199 + & index(abslogln,'ACF9CCCD USERID')>0

1200 + then input @37 uid $char08. @;

1201 + if date='.'

1202 + & index(abslogln,'RDR TIME')>0

1203 + then do;

1204 + input @71 mm $char02. @;

1205 + input @74 dd $char02. @;

1206 + input @77 yyyy $char04. @;

1207 + date=yyyy||'-'||mm||'-'||dd ;

1208 + end;

1209 + if profile='.'

1210 + & index(abslogln,'ABS profile=')>0

1211 + then input @37 profile $char08. @;

1212 + if absplib='yes'

1213 + & index(abslogln,'COPIED ADR')>0

1214 + then input @12 absplib $char08. @;

1215 + if absplib='.'

1216 + & index(abslogln,'PDS COPY:')>0

1217 + & index(abslogln,'ABS.T.PLIB')>0

1218 + then absplib='yes';

1219 + if dbase='.'

1220 + & index(abslogln,'##JOB-INPUT')>0

1221 + then do;

1222 + input @19 dbase $char01. @;

1223 + if dbase='A' then dbase='ADD';

1224 + if dbase='C' then dbase='CHA';

1225 + if dbase='D' then dbase='DEL';

1226 + end;

1227 + if parmlib='yes'

1228 + & index(abslogln,'COPIED ADR')>0

1229 + then input @12 parmlib $char08. @;

1230 + if parmlib='.'

1231 + & index(abslogln,'PDS COPY:')>0

1232 + & index(abslogln,'ABS.T.PARMLIB')>0

1233 + then parmlib='yes';

1234 + if jobvsam='.'

1235 + & index(abslogln,'(NAME(CATO.ABS.')>0

1236 + then input @28 jobvsam $char08. @;

1237 + if endofile then output;

NOTE: The infile ABSLOG is:

Dsname=CATO.INFOPAC.ABS.P.LOG.GDG00021,

Unit=3390,Volume=S9P308,Disp=SHR,Blksize=27930,

Lrecl=133,Recfm=FB

NOTE: 234 records were read from the infile ABSLOG.

NOTE: The data set WORK.INDEXROW has 1 observations and 9 variables.

NOTE: The DATA statement used 0.05 CPU seconds and 10275K.

1238 + proc print uniform data=indexrow;

32 The SAS System

NOTE: There were 1 observations read from the data set WORK.INDEXROW.

NOTE: The PROCEDURE PRINT printed page 17.

NOTE: The PROCEDURE PRINT used 0.00 CPU seconds and 10275K.

1239 + proc append base=indextbl data=indexrow;

1240 + filename abslog 'CATO.INFOPAC.ABS.P.LOG.GDG00022' disp=shr;

NOTE: Appending WORK.INDEXROW to WORK.INDEXTBL.

NOTE: There were 1 observations read from the data set WORK.INDEXROW.

NOTE: 1 observations added.

NOTE: The data set WORK.INDEXTBL has 17 observations and 9 variables.

NOTE: The PROCEDURE APPEND used 0.04 CPU seconds and 10275K.

1241 + data indexrow

1242 + (keep=absplib parmlib jobvsam dbase

1243 + date time uid gdgindex profile);

1244 + retain absplib parmlib jobvsam dbase

1245 + date time uid gdgindex profile ;

1246 + infile abslog end=endofile;

1247 + if _n_=1 then do;

1248 + absplib='.'; parmlib='.'; jobvsam='.';

1249 + date='.'; time='.'; uid ='.';

1250 + profile='.'; dbase='.';

1251 + gdgindex=substr('CATO.INFOPAC.ABS.P.LOG.GDG00022',20,12);

1252 + end;

1253 + input @1 abslogln $char132. @;

1254 + if time='.'

1255 + & index(abslogln,' JOB')>0

1256 + then input @2 time $char08. @;

1257 + if uid='.'

1258 + & index(abslogln,'ACF9CCCD USERID')>0

1259 + then input @37 uid $char08. @;

1260 + if date='.'

1261 + & index(abslogln,'RDR TIME')>0

1262 + then do;

1263 + input @71 mm $char02. @;

1264 + input @74 dd $char02. @;

1265 + input @77 yyyy $char04. @;

1266 + date=yyyy||'-'||mm||'-'||dd ;

1267 + end;

1268 + if profile='.'

1269 + & index(abslogln,'ABS profile=')>0

1270 + then input @37 profile $char08. @;

NOTE: Line generated by the CALL EXECUTE routine.

1271 + if absplib='yes' . & index(ab

...snip...(lots of space and error messages)

200

200

200

202

202

202

200

200

200

1271 !+ absplib $char08. @; . if absplib='.'

1271 !+COPY:')>0 .

NOTE: Line generated by the CALL EXECUTE routine.

1272 + & index(abslogln,'ABS.T.PLIB')>0 . then absplib=' _

_

_

_

_

_

386

386

386

386

386

386

76

76

76

76

76

76

__________

__________

__________

__

__

__

201

201

...snip...(more error messages)

1273 !+dbase='C' then dbase='CHA'; . if dbase='D' then dba 1273 !+ .

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

ERROR: Maximum level of nesting of macro functions exceeded.

NOTE: Line generated by the CALL EXECUTE routine.

1274 + if parmlib='yes' . & index(abslo

Thanks for your help. Zac Haynes, Systems and Applications Programmer, 714-404-8840. ISPF Dialog, REXX, Assembler, SAS, Endevor, DB2, SQL, & Macro.


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