PRO dustem_set_params,params ;if empty description, do nothing ind=where(*(*!dustem_fit).param_descs EQ '',count) IF count EQ n_elements(*(*!dustem_fit).param_descs) THEN BEGIN message,'param_descs not set. Doing nothing',/continue stop goto,the_end ENDIF Nparams=n_elements(*(*!dustem_fit).param_descs) dustem_set_func_ind,*(*!dustem_fit).param_descs,params ;SET THE PARAMETER VALUES IN DUSTEM INPUT FILES FOR i=0L,Nparams-1 DO BEGIN status=dustem_parameter_description2type((*(*!dustem_fit).param_descs)[i],string_name=string_name) IF !dustem_verbose THEN message,(*(*!dustem_fit).param_descs)[i]+' is '+status,/continue CASE status OF 'WRAPPER': BEGIN str=(*(*!dustem_fit).param_descs)(i)+'=params[i]' toto=execute(str) IF !dustem_verbose NE 0 THEN message,str,/info END 'FORTRAN': BEGIN str=(*(*!dustem_fit).param_descs)(i)+'=params[i]' toto=execute(str) IF !dustem_verbose NE 0 THEN message,str,/info END 'PLUGIN': BEGIN length=strlen((*(*!dustem_fit).param_descs)(i)) strr = strmid((*(*!dustem_fit).param_descs)(i),14) ii = strsplit(strr,'_',count=countd) & ii = ii(countd-1)-1 strr = strmid(strr,0,ii) k=where(tag_names(*!dustem_scope) eq strupcase(strr), countt) ;is countt=countt(0) a solution to the error that JP had? print, 'strr is:' print, strupcase(strr) IF countt EQ 0 THEN BEGIN ; I DO NOT THINK THE ISRF TREATMENT IS NEEDED HERE AS THE PROCEDURE ; 'dustem_create_isrf.pro' IS NOWHERE TO BE FOUND IN THE NEW DUSTEM_WRAPPER VERSION IF strr eq 'isrf2' then strr = 'isrf' IF !dustem_which EQ 'VERSTRAETE' THEN BEGIN ddir=!dustem_dat+'les_DAT/' ENDIF ELSE BEGIN ddir=!dustem_dat ENDELSE ; JPB: Caution this line reads ISRF.DAT through an execute statement IF strr eq 'isrf' then begin str='(*!dustem_params).'+strr+'=dustem_read_'+strr+'('+"'"+ddir+strupcase(strr)+'.DAT'+"'"+',/silent)' toto=execute(str) IF toto NE 1 then BEGIN message,'Could not execute ',str ENDIF IF !dustem_verbose NE 0 THEN message,str,/info ENDIF ENDIF END ENDCASE ;goto,jump_this ; IF (*(*!dustem_fit).param_func)(i) EQ 0 THEN BEGIN ;set parameters which are not for functions ; str=(*(*!dustem_fit).param_descs)(i)+'=params(i)' ; toto=execute(str) ; ;print,params[i] ; IF !dustem_verbose NE 0 THEN message,str,/info ; ENDIF ELSE BEGIN ;set parameters which are for functions ; length=strlen((*(*!dustem_fit).param_descs)(i)) ; strr=strmid((*(*!dustem_fit).param_descs)(i),14,length-16) ; ; stop ; IF strr NE 'continuum' AND strr NE 'freefree' AND strr NE 'synchrotron' THEN BEGIN ;This is not very clean programming .... ; IF strr eq 'isrf2' then strr = 'isrf' ; IF !dustem_which EQ 'VERSTRAETE' THEN BEGIN ; ddir=!dustem_dat+'les_DAT/' ; ENDIF ELSE BEGIN ; ddir=!dustem_dat ; ENDELSE ; ; JPB: Caution this line reads ISRF.DAT through an execute statement ; str='(*!dustem_params).'+strr+'=dustem_read_'+strr+'('+"'"+ddir+strupcase(strr)+'.DAT'+"'"+',/silent)' ; toto=execute(str) ; IF toto NE 1 then BEGIN ; message,'Could not execute ',str ; ENDIF ; IF !dustem_verbose NE 0 THEN message,str,/info ; ENDIF ; ENDELSE ; jump_this: ENDFOR ;stop dustem_write_all,*!dustem_params,!dustem_dat the_end: END