Methinks you have discovered some artifacts left over from the ancient days when cards statement really meant physical cards with an lrecl of 80. Looks to me like the assignment of a value to _infile_ is limited to 80 character, but when done by reading input buffer, the limit is not applied. I would consider scanning a character variable with the string value in it, rather than trying to get the cards statement to work. Something like this would work and perhaps be a little more transparent to a maintenance program later on: %let string=0=Emergency Services, 1=Tele Call, 2=Cusstomet Answer, 3=TAB, 4=Ptt Mute Voice, 5=Com User Voice Control, 6=Com System User Call, 7=ABC, 8=Disc, 9=XYZ, 10=Exe News, 11=ABC Ext Source, 12=MNGFR Com and BFC MUYH, 13=Not Req; data test; string = "&string"; i_scan = 1 ; do until (scan(string,i_scan,",=") = '') ; var = scan(string,i_scan,",=") ; output ; put _n_= var= ; i_scan + 1 ; end ; run ;
... View more