Informats convert TEXT into VALUES. So the ranges must be valid character ranges. The range '90' to '100' is not valid since '9' comes before '1'.
Formats convert VALUES into TEXT. So if you want to convert numbers into letters it would be easier to start with numbers. You could use the MISSING statement to tell SAS to treat single letters A, B, C, D, F as indications of special missing values and then include them into your format defintion.
proc format;
value Grade
90 - 100,.A = 'A'
80 - 89,.B = 'B'
70 - 79,.C = 'C'
60 - 69,.D = 'D'
low - 59,.F = 'F'
other = 'U'
;
run;
missing ABCDEF ;
data GradesExample;
input Score @@;
Grade = put(score,grade.);
datalines;
100 56 a 79 94 84 C 100
;
proc print;
run;
Obs Score Grade
1 100 A
2 56 F
3 A A
4 79 C
5 94 A
6 84 B
7 C C
8 100 A
... View more