Re: RSI and the 24. Tagname... [message #8629 is a reply to message #8625] |
Mon, 24 March 1997 00:00   |
steinhh
Messages: 260 Registered: June 1994
|
Senior Member |
|
|
In article <gurman-2303972309500001@goodgulf.nascom.nasa.gov>, gurman@ari.net (Joseph B. Gurman) writes:
|>
[.....]
|> Under 5.0b5, about which I guess it's Ok to speak in public because
|> it;s a _public_ pre-release, I get:
|>
|> .
|> .
|> .
|> Execute was OK with 37 Tagnames...
|> Execute was OK with 38 Tagnames...
|>
|> & END
|> ^
|> % Program code area full.
|> Execute failed with 39Tagnames!!!
|>
|> under OpenVMS 7.1, and somewhat more spectacularly with 32 tagnames under
|> DU4.0B.
|>
|> Interestingly, on a PowerMacintosh running MacOS 7.6, I get:
|>
|> Execute failed with 51Tagnames!!!
|>
|> but I don't think I can tell you what version I'm running there, because
|> 5.0B5 isn't the pre-release for MacOS ;-)
|>
|> So if nothing relating to structures is "improved" before the final
|> release of 5.0, getting a PowerMac may be your only choice.
|>
This is indeed a weird bug - by making a few modifications this runs all the
way to 128 tag names (the stated limit in IDL 4.0.1c) on Digital UNIX. It seems
that the nature of the right hand side of the tag declarations
are important (not the length of the tag name, however..).
Stein Vidar
pro fail
; preparations
ii = 19
b = bytarr(ii)
i = intarr(ii)
l = lonarr(ii)
f = fltarr(ii)
d = dblarr(ii)
s = strarr(ii)
c = complexarr(ii)
x = dcomplexarr(ii)
tyyp=["b","i","l","f","d","s","c","x"]
trun=0
; RSI claims it works up to 128 in IDL 4.01
; on IDL 5.0 the limit should be higher I heard
for try=1,600 do begin
str= ""
; for the try build strings...
for te=1,try do begin
; commata in the middle
if te gt 1 then str=str+","
; build tagname
str=str+"TN_"+strcompress(string(te),/remove_all)
; change tyype every time!
str=str+":"+string(tyyp(trun))
trun=trun+1
if trun eq n_elements(tyyp) then trun=0
endfor
; clear target
target=byte(0)
; build execute-string
estring='target={'+str+'}'
; the big momment: Will it work????
if execute(estring) then begin
print,' Execute was OK with ',te,'Tagnames... length=',strlen(estring)
endif else begin
goto,failing
endelse
endfor
print,'Programm will never come to this point! '
stop
failing:
print, ' Execute failed with ',te,'Tagnames!!! '
end
|
|
|