i = 1, 2, 3... from a do iteration.
If you think the scan(,,' ') should be fine
then the crash may be caused by the rest of the code
This is the whole data step
data PROPORTIONED;
length
Germ $10
Year 3
AgeGroupDALY $10
AgeGroupSPMA $10
Gender $1
State $99
Category1 $50
Category2 $50
value 8
;
*** make link to hash table ;
if _n_=1 then do;
***modelvalues ----------------;
declare hash h1(dataset:'modelData');
h1.definekey ('Germ', 'Category1', 'Category2', 'AgeGroupDALY', 'Gender') ;
h1.definedata('Value');
h1.definedone();
call missing(Germ, Value, Category1, Category2);
* e.g. rc=h1.find(KEY:Germ, KEY:"State", KEY:"property", KEY:AgeGroupDALY, KEY:Gender);
end;
set EDGED;
put "°°°°° _n_=" _n_;
put "Germ=" Germ;
edgesList=tranwrd(edgesList,'||',' ');
put "edgesList=" edgesList;
Probability=1;
*ProbabilitiesList = '++++';
do i=1 to countw(edgesList);
put "- i=" i;
*Edge = scan(edgesList,i,' '); * --> crash ;
*Edge = scan(edgesList,i,%str(' ')); * --> crash ;
*Edge = scan(edgesList,i,'',s); * --> crash ;
Edge = scan(edgesList,i); * --> no crash ;
put "edge=" Edge;
* deal with trans probabilities;
*if find(edge,'1-','i') ge 1 then do;
if Edge =: '1-' then do;
put 'i trans probability';
edge=tranwrd(edge,'-1','');
marker=1;
put "edge=" Edge;
end;
*lookup;
rc=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:AgeGroupDALY, KEY:Gender);
if marker=1 then do;
value = 1 - value;
end;
*IF lookup fail;
if rc ^= 0 then do;
*rc=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:AgeGroupDALY, KEY:Gender);
value = 777777;
end;
if value = . then do;
*rc=h1.find(KEY:Germ, KEY:Edge, KEY:"Probability", KEY:AgeGroupDALY, KEY:Gender);
value = 666666;
end;
Probability = Probability * value;
put "value=" value;
put "Probability=" Probability;
*ProbabilitiesList = tranwrd(ProbabilitiesList,'+','--');
end;
Proportion = Probability;
DALY = Cases * Duration * Severity * Proportion;
DALYperCase = Duration * Severity * Proportion;
drop Probability rc i Edge Category1 Category2 Value;
run;
... View more