Name Year work_1985 work_1986 work_1987 work_1988 ....... work_1999 work 2000
Henry 1993 Firm A Firm A FirmB FirmB ... Firm B Firm C
Jack 1988 Firm D Firm D Firm D FirmA..... Firm A Firm A
Dennis 2000 Firm C Firm C Firm C FirmC ... Firm C Firm C
...
Take a look the following example if it solves your problem.
data tmp;
length Name $10 Year 8 work_1985 work_1986 work_1987 $5;
infile cards truncover;
input Name Year work_1985 work_1986 work_1987 ;
cards;
Henry 1993 FirmA FirmA FirmB
Jack 1988 FirmD FirmD FirmD
Dennis 2000 FirmC FirmC FirmC
;
data tmp2;
set tmp;
array work_year(*) work_1985 work_1986 work_1987;
do i=1 to dim(work_year);
working_firm=catx('-',substr(vname(work_year(i)),6,4),work_year(i));
output;
end;
keep name year working_firm;
run;