I replied once to this - and it didn't 'take', so trying again, but shorter reply:
I tried using execute as login instead and am now getting:
Msg 229, Level 14, State 5, Line 2
The SELECT permission was denied on the object 'Program', database 'MyDB', schema 'dbo'.
the Program table (sql server) inner joins with the results returned via the OPENQUERY against the linked server.
I can run the sp myself otherwise.