Hello 1162,
I'm surprised that 56 million rows and 6 variables result in a 4Gb dataset. That seems way too much. But, ok, you have it and have to deal with it.
You could use the COMPRESS dataset-option, which probably will reduce the 4Gb substantially. However, this option helps you to store the enormous dataset, but it will be de-compressed whenever you use it with SAS.
Another idea you already suggested and would be using numeric counterparts for the character variables. Perhaps you could use a PROC FREQ for determining the 55,000 different values and at the same time store these in a dataset. From that dataset you could build your format and store that.
Another trick would be to check whether the length of the character variables is not too big. Is there any value that uses the maximum width? If not, adjust the length to that smaller size. I guess that about a year ago, SAS publiced a macro that would check the maximum length of the values of a character variable. Maybe you can dig it up.
Similarly, you could try to reduce the number of bytes used for each numeric variable, but this is tricky.
Hope this is helpful.