O.k., I guess I see. You have a mixture of input styles in your input statement.
The first part ("input projid") is referred to as "list input", a technique where you just name the variables without assigning an explicit informat.
The other part "input ... startdate date9. enddate date9." is referred to as "formatted input". As SAS processes the input statement it moves it's internal column pointer ahead. With formatted input the column pointer points to the column right after the (in)formatted value. In your case that means "enddate" begins with the blank separating your date values. This makes enddate having an invalid value.
Possible solutions:
a) manually move the column pointer by one column
[pre]
input projid startdate date9. +1 enddate date9. ;
[/pre]
b) search for and read the sections on the "colon modifier" in the input statement documentation
[pre]
input projid startdate : date9. enddate : date9. ;
[/pre]
Quote from 9.1.3 documentation: For a numeric variable, this format modifier reads the value from the next non-blank column until the pointer reaches the next blank column or the end of the data line, whichever comes first.