Why People are 150 years old in SSA systems
When Elon Musk said some people were 150 years old in the social security system I immediately understood what the reason was and after consulting some tech boards, my suspicion is realized. The system is written in COBOL and a farily old version. Many older systems use impossible dates to indicate dates that are unknown or blank. A few years ago, I worked on a system where the date was 01/01/01. Apparently, the old coders many years ago decided 1875 was the impossible date they wanted. Why would they do this?
Back in the old days, data quality was not that great and
there were a lot of blank birth dates or mistyped birthdates. There are many reasons for this which I won’t
go into. Systems with a null birthdate
tended to crash. For example, if you had
something like this:
IDENTIFICATION DIVISION.
PROGRAM-ID.
DATE-CHECK.
DATA
DIVISION.
WORKING-STORAGE SECTION.
01
INPUT-DATE PIC 9(8).
01
BIRTH-DATE PIC 9(8) VALUE
19900101. *> Assume birth date is
retrieved from the system
PROCEDURE
DIVISION.
MAIN-PROCEDURE.
DISPLAY
"Enter the input date (YYYYMMDD): ".
ACCEPT
INPUT-DATE.
IF
INPUT-DATE < BIRTH-DATE THEN
DISPLAY "Error, wrong birth date".
STOP
RUN.
This is what COBOL looks like assuming birth_date has
been retrieved from the system. Now if
birth_date is null (blank) it’s crash time.
So rather than put check for null code everywhere, coders used to put
impossible dates so the code would not crash and so users would know that
birth_date was not reliable. This is a
problem with ALL older systems that deal with people, and not a result of
government incompitence.
Elon should know this so I can only think he is deceiving
everyone. Any programmer who has worked
on older systems knew immediately why 150 year old people were in the
system. Americans need to understand
they are being misled and lied to.
Oh and I am thankful to the Almighty that I do not have
to write COBOL.In the very old days, you had to position each line of code in
the right spot. You didn’t just write
code in lines but certain syntax had to start from position 10, others from
position 4. That was a throwback to
punch cards. If government employees
have to work with that, they deserve our compassion, not our ridicule.
I thought I would write a little more about the dates in
the social security system. Social
Security was first introduced in the US in 1935. We got the idea from Bismarck, but that’s
another story. There were no computer
systems then. It was all done on
paper. In 1956, the SSA bought an IBM
705 mainframe and computerization began with the technology known as magnetic
tape. In the 1960’s, the SSA got more
updated IBM computers. In the 1960’s,
SSA began using IBM System/360 and IBM system/370 computers. I cut my programming teeth on the IBM
System/370 165 computer in the 1970’s.
With those computers, card punch was king. Data entry and some programs were written on
card punch machines. Thus, between the
manual processing at the beginning, and the gradual transfer to computers and
the use of magnetic tape (paper tape) and card punch, there were a lot of
errors in the data. Keep in mind too
that databases as we know them today did not exist.
The relational database was invented in 1969 by Edgar F.
Codd who was a researcher for IBM. But
IBM did not take him seriously because they had what we used to call
hierarchical database models back then.
It was not until 1979 that Oracle introduced a commercial relational
database (RDBMS) and the decade of the 80’s saw its nearly universal
adoption. IBM did not release one until
1983, 14 years after their own researcher came up with the idea.
As I said, this meant that the data quality was poor to
adequate. This is the problem with any
old computer system because the original data was imported from paper, or keyed
in one record at a time. The language of
choice for businesses in the 60’s and 70’s on IBM system/360 and System/370
computers was COBOL (Common Business Oriented Language). Many banks today still have COBOL programs
running.
I was shocked to learn, but not really, that SSA
continued using IBM system/360 and System/370 computers up to 1982. Wow, talk about antiquated. They desperately needed to upgrade but doing
that without disrupting SS payments to millions of Americans proved really
difficult as it would be for any system.
One company I worked for was in the same position in 2006. They went bankrupt after I left because they
could not maintain functionality for their customers while upgrading from older
computers.
The old COBOL language for the IBM computers did not have
exception handling. Modern languages
do. Modern languages have code like
this:
Try
{
//Some
code
}
Catch (Exception ex)
{
//error
handling code
}
Or if you are bored, your catch clause might look like
this.
Catch (Exception wtf)
{
//Error
handling code
}
The purpose for code like this is to catch an error and
do something about it so the program does not crash. Those familiar with the old blue screen of
death know all too well what happens when errors are not caught properly. Well, old COBAL did not have catch code so if
there was an error, it was crashville.
As I said in my previous post, null date fields were a common cause of
crashes and still plague IT today.
My understanding from the tech boards is the impossible
date people put in to avoid crashes was 5/20/1875. I don’t know why that date was chosen. But when I used to put in impossible dates, I
celebrated my birthday and put in 9/20/1635 or something like that.
The fact that SSA still has COBOL code lines them up with
many banks. Upgrading IT systems,
especially ones that go way back, is hard and expensive. If anything, this shows that the US has let
its systems run down and has not committed enough money to upgrade them
properly. Join the club. This happens in private companies all the
time. Just ask Southwest Airlines how
that’s working out for them.
0 Comments:
Post a Comment
<< Home