The dot denotes the default MISSING value for numeric variables only. With character variables, the dot is simpy a 1-byte string containing the dot.
The log of your second data step is very verbose about your mistake:
23 Data Want;
24 Set Have;
25 If Variable=. Then Value=1600;
26 Run;
NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
25:4
NOTE: Invalid numeric data, Variable='Istanbul' , at line 25 column 4.
Variable=Istanbul Value=1600 _ERROR_=1 _N_=2
NOTE: Invalid numeric data, Variable='Istanbul' , at line 25 column 4.
Variable=Istanbul Value=1600 _ERROR_=1 _N_=3
NOTE: There were 4 observations read from the data set WORK.HAVE.
NOTE: The data set WORK.WANT has 4 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.03 seconds
cpu time 0.00 seconds
SAS tries to convert your Variable to numeric, fails in observations 2 and 3, which causes a missing numeric value, represented by the dot; therefore the condition is also true. In observation 1 and 4, the empty string is correctly converted to a missing value, causing the same result, but without ERROR.
... View more