This would work fine with DFSORT. With DFSORT, you can use about 2700 such conditions in an INCLUDE statement. (And you can use DFSORT's IFTHEN function along with OUTFIL INCLUDE to handle a much larger number of conditions.) Note that there's virtually no limit to the number of "cards" you can use with DFSORT.
However, the "EXCESS CARDS" message indicates you're using Syncsort, not DFSORT, so I can't help you.
You can get use just over 2000 conditions of the form p,6,CH,EQ,C'string', so you'll need to break up your INREC into multiple IFTHENs using the technique shown in the Programmer Response for message ICE151A:
Yours was a wonderful solution. It is working for us.
We used to do it using SPLICE earlier but realized that SPLICE was taking time for two reasons - we need to copy the input file to an intermediate dataset ( ours is a huge input file) and moreover SPLICE interanlly sorts the records but actually we dont need to sort the file , we just need to filter them based on the policy list. So we decided to opt for having the condtions coded in the parm.