You can use NCUSIPs from the CRSP datasets linked to the first 8 digits of CUSIP in Compustat. We have a sample program merge_funda_crsp_bycusip.sas demonstrating how to merge CRSP and Compustat data using CUSIP.
You can also use a more complicated algorithm that matches prices in both datasets for a better match.
Here is some general advice that may help:
You can use both CUSIPs and TICKER SYMBOLs to link CRSP and Compustat data, but you will find Cusips are more reliable than tickers, in the sense that they change less over time and they are not "reused". One way to proceed is the following:
1. Get PERMNO-NCUSIP pairs from the STOCK NAME file (a CRSP dataset). You will see that this file has the variable NCUSIP (for the historic one).
If you need dates for when NCUSIP changed, use the MSE set and pull out records where EVENT = 'NAMES' as following:
where event = 'NAMES';
if not missing(ncusip);
if ncusip=ncusip_lag then delete; *Drop row where NCUSIP does not change;
keep permco permno ncusip date;
2. Find matching CUSIPs in the Compustat FUNDA set using SQL code that joins on substr(CUSIP,1,8) = NCUSIP
3 For any non-matched cases, use PERMNO-TICKER pairs (also in MSE) linked to TIC in FUNDA. Note that COMPUSTAT adds .1 , .2 etc to old Ticker symbols and it would make sense to use the TIC part before any '.'
For another method, see the FF1.SAS program.
It has this code
merge crsp (in=in1) compu (in=in2);
by cusip cyear;
if in1 = 1;