will work for a yyyy-mm-dd date, but not for a date with any other separation character. DATE4 actually generates a 19-byte date in the form 'yyyy-mm-dd-hh.mm.ss'. 1,10 results in only using the first 10 bytes of that date. And there's no way to use another separation character with DATE4, so it wouldn't work for a 'yyyy.mm.dd' date, for example.
DATE1(-) generates a 10-byte date in the form 'yyyy-mm-dd. DATE(.) generates a 10-byte date in the form 'yyyy.mm.dd'. And so on. So DATE1(c) is really the more general choice and avoids the overhead of truncating the constant to the field length.
You say "where do we need to store the date 2007-06-15". Are you trying to avoid "storing" it in the INCLUDE statement as a constant?
You could store it in a file as a DFSORT symbol:
and use that symbol in the INCLUDE statement:
//SYMNAMES DD DSN=...
//SYSIN DD *
or store just the date in a file, and use DFSORT to create a DFSORT symbol from that file (I've shown many examples of this).
If you want to compare it to a YYMMDD date, why wouldn't you "store" it as a YYMMDD date instead of as a 'YYYY-MM-DD' date? If you need to store it as a 'YYYY-MM-DD' date, you could use DFSORT to create a YYMMDD date from it.
If that doesn't help, please explain more clearly what is you want to do exactly.