Collection date as a variable is not your problem.
In your sample you refer to "c_date"! Consistent naming would help with the diagnosis.
I presume you know what SAS dates are, and therefore, if collection date is a real date which has a format of "mm/yyyy" associated with it, then your array will be in range for 1 Jan 1960 until the early part of March in the same year. After that, the date value is higher than 72 and the subscript will be out of range.
A solution is to count the number of months and add the month number as a cohort to the data set and use this for the array definition. Bear in mind that if you calculate the cohort using the IntNx() function and use the first month as your from date, then your first month will be 0 and not 1. 0 is also out of range, so you need to increment from one month prior to the first observation month.
Assuming you are analysing a six year period from Jan 2000 to Dec 2005, the following may help:
COHORT = IntNx( 'Month', '30Dec1999'd, COLLECTION_DATE);
I must ask though, why are you doing this? Most SAS statistical procedures prefer vertical structures, and use By statements to handle grouping.