Hello,
I have a format code before Proc Freq. However, an error message was shown in the log. Does the format only work in the numeric variables? Please help.
proc format;
value eot_test_ce1 '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' '82163-7'='CoV 229E';
run;
Proc freq data=Sample.;
table spec_id*eot_test_ce1 / nopercent norow nocol;
format eot_test_ce1 eot_test_ce1.;
run;
ERROR: The format EOT_TEST_CE was not found or could not be loaded.
MPRINT(AAA): format eot_test_ce1 eot_test_ce1.;
MPRINT(AAA): run;
Which part of CHARACTER formats start with $ did you miss?
proc format ; value $eot_test_ce1_ '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' '82163-7'='CoV 229E'; run;
and
format eot_test_ce1 $eot_test_ce1_.;
When you create a format, the name of the format cannot end with a number. Change the name slightly and the program should work:
proc format;
value eot_test_ce1_ '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' '82163-7'='CoV 229E';
run;
Proc freq data=Sample.;
table spec_id*eot_test_ce1 / nopercent norow nocol;
format eot_test_ce1 eot_test_ce1_.;
run;
ERROR: The format EOT_TEST_CE was not found or could not be loaded.
seems to indicate that SAS was looking for a numeric format (no $ at the beginning of the format name), while you try to create a character format.
Big hint: always fix your codes top down. The first ERROR, WARNING or unexpected NOTE is the most important one. All others might be a consequence.
Also, if the value is character the format name has to start with a $ .
You LOG would also have shown this for the proc format code:
64 proc format; 65 value eot_test_ce1 '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' 65 ! '82163-7'='CoV 229E'; ERROR: The format name EOT_TEST_CE1 ends in a number, which is invalid. NOTE: The previous statement has been deleted. 66 run;
Replacing the final digit is not sufficient either because the values you provide are not compatible with a numeric format which the assigned behavior if the format does not start with a $.
67 proc format library=work; 68 value eot_test_ce '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' 68 ! '82163-7'='CoV 229E'; ERROR: The quoted string '82160-3' is not acceptable to a numeric format or informat. NOTE: The previous statement has been deleted. 69 run;
eot_test_ce1 is charater variable
Changed to
format eot_test_ce1 eot_test_ce1_.;
Still did not work
ERROR: The format EOT_TEST_CE1_ was not found or could not be loaded.
MPRINT(AAA): format eot_test_ce1 eot_test_ce1_.;
MPRINT(AAA): run;
Which part of CHARACTER formats start with $ did you miss?
proc format ; value $eot_test_ce1_ '82160-3'='Adenovirus' '82161-1'='Cov HKU1' '82162-9'='CoV NL63' '82163-7'='CoV 229E'; run;
and
format eot_test_ce1 $eot_test_ce1_.;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.