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)
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.