There is no “date” data type in COBOL. Dates are stored however the programmer wants, but usually numeric character strings
There’s no “default” date, even if there were such a data type
Even if there were a default, 1875 would be a bizarre choice
That (obviously) doesn’t mean Elon Musk is right. It just means that this explanation of it being some magical COBOL epoch value is wrong. What’s more likely is that the Social Security database is very old and has a lot of iffy data in it.
My guess is that it contains everybody who has ever had a social security record, including all the duplicates, all the typos, and everything else. At some point there were probably hundreds of thousands of records that were transcribed from paper into a computer, and it was considered safer to keep the iffy data and make a plan to deal with it later, vs. remove someone from the database who should legitimately be there.
I would also imagine that the systems that take the records out of the DB probably have filters in place that remove the (known) bad records before they’re used.
There is no “date” data type in COBOL, but there is in DB2, where the data would be saved, unless they are on an older VSE OS and data is still saved in VSAM files. Many still use 12/31/39 as a default max date even though OS/400 systems can handle up to year 9999 now (we still use 12/31/39 in testing where I work). It could be someone arbitrarily started using 1875, and others copied that.
https://dev.to/mdchaney/cobol-dates-may-20-1875-and-disinformation-5ggh
That (obviously) doesn’t mean Elon Musk is right. It just means that this explanation of it being some magical COBOL epoch value is wrong. What’s more likely is that the Social Security database is very old and has a lot of iffy data in it.
My guess is that it contains everybody who has ever had a social security record, including all the duplicates, all the typos, and everything else. At some point there were probably hundreds of thousands of records that were transcribed from paper into a computer, and it was considered safer to keep the iffy data and make a plan to deal with it later, vs. remove someone from the database who should legitimately be there.
I would also imagine that the systems that take the records out of the DB probably have filters in place that remove the (known) bad records before they’re used.
There is no “date” data type in COBOL, but there is in DB2, where the data would be saved, unless they are on an older VSE OS and data is still saved in VSAM files. Many still use 12/31/39 as a default max date even though OS/400 systems can handle up to year 9999 now (we still use 12/31/39 in testing where I work). It could be someone arbitrarily started using 1875, and others copied that.