Slashdot Mirror


COBOL Will Outlive Us All

jfruh writes "Here's an old computer science joke: What's the difference between hardware and software? If you use hardware long enough, it breaks. If you use software long enough, it works. The truth behind that is the reason that so much decades-old COBOL code is out there still driving crucial applications at banks and other huge companies. Many attempts to replace COBOL applications flopped in the 1980s and '90s, and we're stuck with them for the foreseeable future — but the Baby Boomers who wrote all that code are now retiring en masse."

79 of 318 comments (clear)

  1. Batch by mwvdlee · · Score: 5, Informative

    Well... that and the fact that COBOL is actually very good at what it was made to do; batch file processing.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    1. Re:Batch by grh_angelone · · Score: 5, Funny

      I hate it. Stupidest language of all time. I'm trying to convert all these crap programs to nicely done RPG IV, but its a Don Quijote task. I hate the fact, that file access can only be done in 50 lines of code. String operations are total nonsense, ever tried to get a string rightaligned? RPG file access via chain is done in 5-6 lines including the definition of the file and rightalign via evalr().

    2. Re:Batch by Nerdfest · · Score: 2, Insightful

      It is no batter at 'batch' processing than any other language. The reason there's still so much of it around is that the majority is hacked together spaghetti written by people who should not have been writing code in the first place; tightly coupled code that people cannot easily replace a component at a time. Earlier attempts to replace the code generally failed because they attempted to use the same people who wrote the COBOL systems to write the replacements. It is a language that is used to allow systems to be written by people who should not be coding in general. Yes people write bad code in all languages, but COBOL is an enabler, just as (in other ways) Visual Basic and Perl are.

    3. Re:Batch by jellomizer · · Score: 5, Insightful

      No, the language doesn't matter. It is the fact that the COBOL code is old. When it was popular it was common for organizations to write their own software. This custom written software was molded to fit the companies processes and workflow. Then you add decades of alterations and the software gets very complex, however it nearly covers the full operation.

      So now if you are going to replace it, right now it is popular to get these "enterprise" solutions that are so generic that it takes more work to configure it than it does to make new software or port the code in a new language.

      As well most organizations just don't know why they need to upgrade they just think they do, and after the upgrade they want a program to do exactly what the last one did.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:Batch by mwvdlee · · Score: 4, Informative

      Yes, I'm sure it's much easier to code in RPG. In Java/C++/PHP/C# you could probably do it in less than a dozen lines of code as well. But none of those come close to the performance of COBOL for these specific tasks.

      As far as right-aligning a string; it's supported in the data division: http://mainframewizard.com/content/cobol-just-right-clause. I'm sure if I had to program RPG without any training or a manual, I wouldn't produce very good code either.

      COBOL is bad at a lot of things and in a lot of ways, but it does have a few redeeming qualities. It just turns out those particular qualities are highly sought after in many large companies.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    5. Re:Batch by hcs_$reboot · · Score: 2

      Having to write MULTIPLY a BY b GIVING c instead of c = a*b surely prevents the implementation of complex algorithms.

      --
      Slashdot, fix the reply notifications... You won't get away with it...
    6. Re:Batch by grh_angelone · · Score: 5, Informative

      ok, this doesn't bring us any further, but do you really think, that moving something in a right justified variable is the solution?

      this doesn't only need another variable, but if your source value has trailing spaces you will need a ridiculously long INSPECT line and an index variable for a substring.
      since cobol is dumb, you will further need an INITIALIZE for both variables.

      cobol:
      01 var1 PIC X(50)
      01 var2 PIC X(50) justified right
      01 sub PIC 9(2)
      initialize var1 var2 sub
      move "test " to var1
      initialize var1 tallying sub for trailing space
      if sub = 0
      move var1 to var2
      else
      move var1(1:sub) to var2
      end-if

      rpg:
      d var1 s 50a
      d var2 s 50a
      c eval var1='test '
      c evalr var2=%trim(var1)

      seems way more convinient :)
      even tough RPG is ill-reputed as an old static programming language this looks somehow like any other high level language and anyone should understand what's going on here without trying to figure out what that strange INSPECT does

    7. Re:Batch by Anonymous Coward · · Score: 5, Informative

      No. COBOL was designed for taking simple decimal (BCD) representations of quantities and financial amounts, conducting basic arithmetic operations on those and transferring the result back to storage or line-printer-style reports.

      It is still the basis of a great many online, interactive applications as a result of the development of OLTP systems that were intended to provide "real time" transactions on top of old legacy batch procedures. CICS in particular is alive and well and nothing to do with batch processing - though its interactivity is largely achieved by having the display terminal emulate the fixed fields of punched cards and line printer columns - and although it has support for several languages, COBOL is where it found its natural home.

      There's nothing magical or mysterious about COBOL (apart, perhaps, from the MOVE CORRESPONDING statement) - it's a procedural programming language that works with simple representations of data. The idea that a modern generation of programmers can't understand it is ludicrous and anyone that suggests rewriting swathes of code simply to change the syntax of its representation doesn't understand the first principles of software engineering.

      COBOL is here to stay in both batch and interactive applications.

    8. Re:Batch by peragrin · · Score: 5, Insightful

      That because the cost of retraining people in new workflows is generally higher than the software package to begin with.

      If you gut and replace software you have to modify every employee's workflow to compensate. EVERY person has to do their job slightly differently, and no one has the answers as to how it all has to be worked out from the beginning for each part.

      That takes months in a small 20 person organization that is flexible and adaptable. It can take years of lost productivity for larger ones.

      I am doing it right now. We are gutting our old ERP system to use a much simplier but ultimately more useful ERP system. Everything from sales, accounting, purchasing, warehousing, inventory, delivery drivers, all have to change how they process their paperwork. We basically had the office staff doing 2 days of nothing as we sorted out bugs with the initial data transfer. Now that is done we begin the task of sorting out workflows, new SOPs, etc.

      --
      i thought once I was found, but it was only a dream.
    9. Re:Batch by ixarux · · Score: 3, Insightful

      ^ This, I would agree with.
      COBOL is not a great programming language, and people who are experts in it are NOT good programmers per se. It definitely worked well back in the days, and we should appreciate its use, but let us not let nostalgia tinge the garbage that was useful a long time ago, and now just sits there as the elephant that no one cares to move around, gently tended by the cheap Asian labour... and has no exploits because it doesn't really move around a lot.

    10. Re:Batch by dywolf · · Score: 2

      in other words, if ain't broke, don't fix it. just keep the guy that wrote it on retainer (or else he'll retire, then come back as a consultant for 5x the salary), and pay him explicitly to train the new guy.

      or else don't buy generic stuff, but hire a -good- code monkey to go through and develop the new program, in parallel with the old (ie, staff dont see the new one til it's completely done, outside of occasional small group tests...with some classic A/B iterations)

      --
      The guy who said the election was rigged won the presidency with the second-most votes.
    11. Re:Batch by Nerdfest · · Score: 3, Interesting

      Good or bad programming is not defined by the 'style', it's defined by it's readability, maintainability, reusability and efficiency. Yes, there is a right and wrong. Not black and white right and wrong, but certainly tending towards it. Much COBOL code was written by people who didn't understand that either. It works, and solves the immedaite problem in many cases, but it's a difficult to maintain, difficult to read, tangled mess. Yes, there is well written COBOL, but in my experience, it's rare. Personally, I find even well written COBOL difficult to read because of the verbosity. It's like reading a long paragraph of instructions, where a point form list would be easier to read and understand.

    12. Re:Batch by LoRdTAW · · Score: 2

      COBOL may be decades old but there are still young people taking up COBOL programming. I have a friend who is around 30 now. He was a CS major in university and one of his professors recommended he learn COBOL. He told me it is the most valuable and useless programming languages you could learn. Out of university he got a job with a company doing contract work for IBM doing guess what? COBOL code maintenance. Now he is living in California making six figures working for a big financial institution maintaining and writing COBOL. Not so useless now, is it?

    13. Re:Batch by johnnyb · · Score: 5, Funny

      The real problem with COBOL is that, as Larry Wall has pointed out, you can't write poetry with it. There just isn't any good poetry that starts out with IDENTIFICATION SECTION.

      The one thing I do miss about COBOL is easy access to fixed-point numeric processing. This seems like a no-brainer, but it is still missing from nearly every language.

    14. Re:Batch by sycodon · · Score: 3, Insightful

      You miss the whole point if COBOL, which is to provide a language that clearly explains what's going on while it's doing it. That means that a freshly graduated I.S guy can go in and understand what's going on and make changes.

      Sure, you can wire God Awful code with it and, I have seen it, but it doesn't take much effort to do it right.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    15. Re:Batch by Classic53 · · Score: 3, Interesting

      I on the other hand am looking forward to what IBM delivers with their COBOL VNext project (http://www.destinationz.org/Community/Evangelizing-Mainframe/June-2012/Join-the-Enterprise-COBOL-Vnext-Managed-Beta-Progr.aspx)!

    16. Re:Batch by Anonymous Coward · · Score: 2, Informative

      No, COBOL is magical, in that it supports handling of decimal arithmetic as integer, keeping track of the decimal place as a separate operation until the end. That is one of the main reasons that so many financial institutions used it -- no rounding. As far as I know, only PL/I is the only other language with this built in feature, even to this day. Certain compilers also used occult features of machines that did arithmetic in decimal (like a calculator) instead of binary --again, great (and in the 70's, a requirement for international banking) for financial applications.

    17. Re:Batch by VortexCortex · · Score: 5, Funny

      There once was an IDENTIFICATION SECTION
      Preceding a formula that defied all reflection.
      Using all the chem-lab's powers,
      it ran longer than four hours,
      To make pills that promoted erection!

    18. Re:Batch by oh_my_080980980 · · Score: 2

      Really? I found a lot of shitty code is written by people who program in C#....it's not the language but the person.

    19. Re:Batch by camperdave · · Score: 2, Insightful

      Out of university he got a job with a company doing contract work for IBM doing guess what? COBOL code maintenance. Now he is living in California making six figures working for a big financial institution maintaining and writing COBOL. Not so useless now, is it?

      Money gets paid to lots of people for useless things. Professional athletes, fashion models, and dog groomers for example.

      --
      When our name is on the back of your car, we're behind you all the way!
    20. Re:Batch by Anonymous Coward · · Score: 2, Interesting

      You probably have not been working with COBOL. The vendors that are supporting it are pushing the technology as much as the C/C++ compiler vendors are.

    21. Re:Batch by telchine · · Score: 4, Funny

      It just turns out those particular qualities are highly sought after in many large companies.

      It keeps its head down, doesn't rock the boat and never asks for a pay rise?

    22. Re:Batch by mabhatter654 · · Score: 5, Funny

      RPG vs COBOL!!!

      Fight! Fight!
      Canes and walkers allowed... No punching the kolostamy bag.

    23. Re:Batch by Anonymous Coward · · Score: 4, Funny

      There once was an IDENTIFICATION SECTION

      Preceding a formula that defied all reflection.

      Using all the chem-lab's powers,

      it ran longer than four hours,

      To make pills that promoted erection!

      ...Burma Shave

    24. Re:Batch by Anonymous Coward · · Score: 4, Funny

      IDENTIFICATION DIVISON.
      PROGRAM ID. A COBOL FABLE.
      SECURITY. INSECURE.
      PROGRAMMER-ID. ARTHUR SHAPIRO.
      REMARKS. SLIGHTLY MORE MANGLED VERSION OF ONE IN JAN., 1968
      DATAMATION.
      DATE WRITTEN. ONCE UPON A TIME.

      ENVIRONMENT DIVISON.
      CONFIGURATION SECTION.
      OBJECT COMPUTER. ANY MUSIC BOX, MEMORY SIZE 8X64 BYTES,
      19 TAPE DRIVES, 11 DISK DRIVES, 1 GOLDILOCKS, 3 BEARS.
      INPUT-OUTPUT SECTION.
      FILE-CONTROL.
      SELECT TAPE DRIVES, ASSIGN THEM TO CREDITOR.
      SELECT DISK DRIVES.
      SELECT GOLDILOCKS, SELECT BEARS, ASSIGN TO ONE COTTAGE.
      I-O CONTROL.
      APPLY RED TAPE TO TAPE DRIVES, APPLY BRAHMS RECORD TO DISK DRIVE,
      APPLY GOLDI, BEARS TO COTTAGE.
      DATA DIVISON.
      FD GOLDI.
      LABEL RECORDS ARE STANDARD
      VALUE OF IDENTIFACTION IS "GOLDILOCKS"
      DATA RECORD IS GOLDILOCKS.
      01 GOLDILOCKS.
      02 HGT SIZE IS 62 INS.
      02 WGT SIZE IS 110 LBS.
      02 VITAL-STATS.
      03 B 38.
      03 W 24.
      03 H 36.
      02 RATING 100%.
      FD THREE-BEARS.
      LABEL RECORDS ARE STANDARD
      VALUE OF IDENTIFICATION IS "BEARS"
      DATA RECORDS ARE DADDY-BEAR, MUMMY-BEAR, BABY-BEAR.
      01 DADDY-BEAR.
      02 HGT 70 INS.
      02 WGT 750 LBS.
      02 COLOR-OF-EYES BLOODSHOT.
      02 DISPOSITION UNBEARABLE.
      01 MUMMY-BEAR.
      02 HGT 65 INS.
      02 WGT 700 LBS.
      02 COLOR-OF-EYES BLUE.
      02 DISPOSITION BEARABLE.
      01 BABY-BEAR.
      02 HGT 40 INS.
      02 DISPOSITION INFANTILE.
      WORKING-STORAGE SECTION.
      01 COTTAGE PICTURE IS COZY.
      02 KITCHEN.
      03 TABLE SIZE IS LARGE, VALUE IS 1.
      03 CHAIRS SIZE IS MEDIUM, VALUE IS 3.
      02 PORRIDGE.
      03 KING-SIZE OCCURS 1 TIME.
      03 QUEEN-SIZE OCCURS 1 TIME.
      03 PRINCE-SIZE OCCURS 1 TIME.
      02 DOOR SIZE IS USUAL, VALUE IS OPEN.
      02 BEDROOM.
      03 BED.
      04 LARGE OCCURS 1 TIME.
      04 MEDIUM OCCURS 1 TIME.

    25. Re:Batch by Dimitrii · · Score: 4, Interesting

      even tough RPG is ill-reputed as an old static programming language this looks somehow like any other high level language and anyone should understand what's going on here without trying to figure out what that strange INSPECT does

      Back in the late 80's early 90's, I was a co-op for IBM. I wrote an RPG program to rearrange some data file. Because of scope, the program had to be reviewed by a senior programmer.
      "This is just a start. Where is the rest of it. Do you need help?"
      "No. It is complete. Sample input and output files right next to it. I used the cycle"
      "The cycle still works?!"

      I had learned RPG II in HS. The cycle is all that was needed. He showed that program to every programmer that walked into his office.

      The deal it that it all keeps working.

    26. Re:Batch by bws111 · · Score: 5, Informative

      Um, no. I don't know where you got that crap, but it is entirely false. IBM itself currently sells COBOL, FORTRAN, C/C++, PL/1, and REXX compilers for z/OS. In addition, you can use gcc, etc.

      And your line about IBM mainframes not having protected memory is complete bullshit. They have had protected memory since 1964. It is not an option.

      And NO user space programs affect system integrity, no matter how they are written or what language they are written in. That is one of the major selling points of z/OS.

    27. Re:Batch by markhb · · Score: 2

      Is RPG IV still column-specific, as the version I learned in high school (I don't recall if it was II or III) was? IOW, do you need to use [code] tags around that snippet?

      --
      Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
    28. Re:Batch by frank_adrian314159 · · Score: 3, Funny

      It didn't start with IDENTIFICATION SECTION, so your example doesn't hold. But here's one:

      IDENTIFICATION SECTION delightfully leading to nouns and verbs of magic...
      In COBOL!!!
      A language for managers, a language for all -
      Bits of love, bytes of affection, words of poetry, identifying sections of paradise.
      Programming, motherfucker!
      Do you speak it?

      --
      That is all.
    29. Re:Batch by frank_adrian314159 · · Score: 5, Insightful

      ... the following languages all support an accurate decimal data type in the standard libraries: Python, Ruby, Java, and Objective-C.

      Which is not the same as supporting it in the language itself, either from a convenience nor a performance point of view.

      --
      That is all.
    30. Re:Batch by Sique · · Score: 5, Informative

      When COBOL was being used for new development, I don't think the P1 was even out, we're on Xeons now.

      When COBOL was being used for new development, the microprocessor wasn't even invented yet, and Intel founder Robert Noyce was working at Fairchild Semiconductor and had his first integreted circuit ready.

      --
      .sig: Sique *sigh*
    31. Re:Batch by PingXao · · Score: 2

      This post is full of fail. From the part about C compilers to the part about "no protected memory" to the part about IBM never supporting "anything else on their iron".

      Occasionally an AC will post something worthy of modding up to +5. This ain't one of them, folks.

    32. Re:Batch by grh_angelone · · Score: 3, Informative

      i ditched the columns for my example :)
      but i don't mind the column-specific syntax.
      in fact, i really like it

      but IBM introduced free format RPG some time ago
      you can start a free block wich /free and end it with /end-free
      http://www.ilerpgprogramming.com/2009/01/code-examples-of-free-format-rpg-iv.html
      but they did a sloppy job on the implementation
      the definitions in the program header and some operations still have to be done in fixed format

    33. Re:Batch by Anonymous Coward · · Score: 2, Funny

      As keeper of the OpenCOBOL FAQ, I'll beg to differ.

      Here is a 3 line compilable 5-7-5 un-haiku

      PROGRAM-ID. ONE
      PROCEDURE DIVISION. ADD.
      1 TO RETURN-CODE.

    34. Re:Batch by mwvdlee · · Score: 2

      Indeed. And I have yet to see any programming language (excluding assembly) that can do all the things you can do in machine code. And yes, this includes C.

      Why would it be so strange that not all languages cover the same abilities on machine code level?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    35. Re:Batch by sycodon · · Score: 2

      Now, mind you, this is from my memory...from 25 years ago. So the syntax is certainly incorrect and don't even ask about the type definitions but this will give you the jist of the idea:

      01 VendorPerformanceRecord (433)
                      10 VEN_VendorID char(10) ,
                      10 IMA_ItemID nvarchar(100) ,
                      10 IMA_ItemName nvarchar(100) ,
                      10 avg_actual_lead_time_raw int ,
                      10 avg_actual_lead_time_workdays int ,
                      10 avg_actual_days_early_or_late_raw int ,
                      10 avg_actual_days_early_or_late_workdays int ,
                      10 total_nbr_of_receipts int ,
                      10 total_qty_of_receipts float ,
                      10 total_value_of_receipts float ,
                      10 total_count_late_receipts int ,
                      10 total_qty_late_receipts float ,
                      10 total_count_early_receipts int ,
                      10 total_qty_early_receipts float ,
                      10 total_count_on_time_receipts int ,
                      10 total_qty_on_time_receipts float ,
                      10 pct_late_count decimal(28, 10) ,
                      10 pct_late_qty decimal(28, 10) ,
                      10 pct_early_count decimal(28, 10) ,
                      10 pct_early_qty decimal(28, 10) ,
                      10 pct_on_time_count decimal(28, 10) ,
                      10 pct_on_time_qty decimal(28, 10)

      05 VendorPerformanceRecordA (433) redefines VendorPerformanceRecord
              10 KeyInfo char(210)
              10 AvgInfo char(20)
              10 Totals char(45)
              10 Pecentages char(168)

      So here we have the same data record, sliced up two different ways. Note that entire sections that were decimal are now character. This is perfectly legit and used mostly to move data around, which is actually a large part of what COBOL does. Also note this performs two functions: 1. It defines variables and 2. It clearly documents the variables and their relation to the record of data.

      Now imagine you are a guy new to a system and you are told to modify a an existing application to extract the percentages and display them with the Vendor ID and then move the totals, and just the totals to another record and write it out.

      The data is clearly defined, you know where the percentages are, you know where the totals are, you don't have to write code to move 9 fields, you just grab the redefined variable "Totals" and deal with that.

      Many other cool things can be done with it that I can't remember.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    36. Re:Batch by roc97007 · · Score: 3, Funny

      Ah yes, COBOL poetry. The fourth worst poetry in the universe.

      --
      Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
    37. Re:Batch by Darinbob · · Score: 2

      A family friend donated to me all her deceased husband's RPG-II manuals, thinking that they'd be useful to a kid interested in computers. When I read them I almost gave up on the idea of going into computing altogether.

    38. Re:Batch by Darinbob · · Score: 2

      COBOL compilers don't need to generate fast code. They just need to generate code that is correct. The compilers are getting faster (duh) but that's not their main purpose. The reason COBOL programs are still around isn't about performance, it's about keeping legacy programs running that are cheaper to maintain than rewrite or replace. Making a new program in COBOL would be silly.

      Imagine if your HR department told you that they were going to change all the payroll processing code because they found this kid who claims he can do it better in C#. I am pretty sure that you'd be scrutinizing every paycheck very closely for errors and keeping a detailed paper trail.

      And really it's still one of the few languages designed to be read clearly and understood by people who are not programmers.

  2. So Simple! by Grindalf · · Score: 3, Interesting

    Writing COBOL is not just easy, it's fun! It takes about a fortnight to work through the manual and become fluent. It uses very English like syntax. It's much easier than FORTRAN or C as it's so small! Lets face it in this world of UNIX massively parallel cloud social web computing, this is hardly a complex problem to solve – it's already been done by the folks that wrote COBOL. A simple database! So get that manual out, and have a try!

    --
    The purpose of existence is to make money.
    1. Re:So Simple! by paiute · · Score: 4, Funny

      So get that manual out, and have a try!

      These seem to me like famous last words, almost as dangerous as the classic "Hold my beer and watch this!"

      --
      If Slashdot were chemistry it would look like this:Cadaverine
  3. If a technology is outdated, outsource it. by ixarux · · Score: 5, Interesting

    Yup. I was hired into one of those mainframe companies that worked with COBOL and JCL. The work was the most menial of works I had ever done(after they trained me for 6 months in it).
    The financial sector, the lumbering dinosaur that accepts change only when they have no other option, and the ones maintaining decades-old mainframes really have no incentive to change technologies at the moment. It's easier to just outsource the maintenance and servicing of the mainframes. There are enough of coders (like in the company I joined) in developing countries across the world who would gladly take it up.
    From my experience, there is little development happening any more. I think the day when they run out of people who want to this crappy menial job (which is never) is the day COBOL will go extinct.

    1. Re:If a technology is outdated, outsource it. by Anonymous Coward · · Score: 2, Insightful
      "The financial sector, the lumbering dinosaur that accepts change only when they have no other option"

      You mean one of the first industries to start using computers commercially? Way before your glorious NASA?

    2. Re:If a technology is outdated, outsource it. by DarkOx · · Score: 2

      No IBM brought us JCL. So after writing you "business friendly" COBOL program. It was certain you would still need to find a wizard of the highest order to run it. Only he could convince the Gods Zeek and Zed to turn your program into a living process instead of some mere bytes on on a virtual tape somewhere

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    3. Re:If a technology is outdated, outsource it. by jandersen · · Score: 5, Interesting

      So, you didn't like to work on a mainframe, then?

      But don't slag off the mainframe just because it is 'old' technology - the PC architecture isn't all that young either, and the mainframe, believe it or not, is in fact very VERY much on the technological forefront, hardware wise. Mainframes had fiber attached disks before most modern developers had heard of networking.

      Big to huge institutions don't use mainframes because they are too backwards thinking, but because of reliability. In an industry where downtime costs millions to tens of millions per minute, that counts a lot. On a mainfram you can hot-swap just about everything - not just disks, but everything. And if you wish, you can run Linux on it as well; but it is amazing how often the choice is MVS and COBOL; that is because they are just what you need - not multitools like UNIX and C, just a plain old knife meant for cutting only.

    4. Re:If a technology is outdated, outsource it. by Zordak · · Score: 2

      because we needed to put a few test pilots in rubber suits on the Moon to impress the Commies back in '69. I get so tired of the fact-free emotional religious ranting of the space fringe.

      This is what really gets me about cold war defense budgets. Was it good enough to build a sound stage in Arizona and film a few guys bouncing on strings? No, some congressman needed to send a little pork back to the home district, so he's like, "Hey, what if we build the soundstage on the freaking MOON to fake the moon landing?" And Congress is like, "That's freaking BRILLIANT! And we'll save tons of money on set building!" But did they even stop to think about how many poor children in Africa could have been fed just for the cost of sending a professional film crew along with Apollo 11? I think not.

      --

      Today's Sesame Street was brought to you by the number e.
    5. Re:If a technology is outdated, outsource it. by mapsjanhere · · Score: 4, Funny

      You're missing the main point - programmer productivity. You know how hard it is to surf porn on a VT100?

      --
      I'm aging rapidly, I bought a new game and had no idea if my machine was good for it.
  4. Lords of COBOL by ae1294 · · Score: 5, Funny

    All of this has happened before and will happen again...

    1. Re:Lords of COBOL by Anonymous Coward · · Score: 3, Funny

      Not to me it wont! As an ex cobol programmer I have a no resuscitation card for cobol emergencies card to be buried with me.

  5. If it aint broke... by detain · · Score: 4, Interesting

    why bother paying tons of money developing new software, going through the painful growth and ironing out all the bugs of the new software, educating people on the new software, importing your current clients into new software, getting modern hardware to run the new software, installing modern networking equpment for the new hardware to run the new software, etc.. theres just no real reason to upgrade the software. There won't be many new exploits for COBOL based software as well, since its not used by the average person.

    --
    http://interserver.net/
    1. Re:If it aint broke... by Anonymous Coward · · Score: 4, Insightful

      My guess is that a rewrite will not give you something modular and well designed, it will more likely result in a reformatting of all the data into millions of incomprehensible XML files.

    2. Re:If it aint broke... by gutnor · · Score: 2

      Do you really want to pretend that all the change we have had in software like browser, os, databases, search algorithm, storage, network algorithm, and countless other area have has no impact at all ?

      The reason the Bank do not change a working software is that by the time the software really works (i.e. 10+ years after the initial design), nobody really knows why it is working - if you are lucky. Most of the time the company has also lost the knowledge of how it is working too. Changing it becomes a huge risk - since you don't know why it is working, you will never be sure the new system is behaving like the old one. Also since you have lost the why, you just can't design a new better system.

      In an age where a company like Google is able to run analytics on the whole internet, that sites like facebook can instantaneously know what was your favorite brand of pasta in June 2007, do you really think Banks are happy to have whole floor of admin people check by hand that one of their own client has not requested the same mortgage in 2 different branches ? No need to be even that technical, would they just happy to have a system that support space in surname and accented characters so that you do not have to implement training session, guideline book, review processes, special compliance validation to work around that limitation that after 30 years in business now affects 30% of their clients.

    3. Re:If it aint broke... by 91degrees · · Score: 2

      Source compatibility is pretty common, but aren't the current bank computers binary compatible with the early 360's from the 1960's?

    4. Re:If it aint broke... by DarkOx · · Score: 4, Insightful

      The character set limitations are really platform issues not issues with COBOL or even in most cases the programs written it in. Honestly I have never understood all the COBOL hate. Sure it fails to deliver on its promises of letting business folks write code without any domain specific training in software develop. Just like every other language that has approached that challenge mostly BASIC or Object BASIC dialects.

      That said I'd be actually pretty surprised if a good C/C++/Java/Ruby/Python/PHP/whatever guy could put together a program to do something like print a fifty million decent looking telephone bill statements with accurate summary lines for transaction-data as quickly as a COBOL programer of similar skill and experience can. There really are some problems COBOL solves well. Bulk record processing and account reconciliation is one of those things because that was pretty much THE commercial and military logistics application for computers in the LATE 40's when COBOL was born. COBOL as you might expect is quite fit for that application.

      Its when people start trying to do interactive applications in COBOL be it CICS or web or whatever it gets silly and forced. It brings to mind various analogies about square pegs for round holes, and threaded fasteners to be deployed by hammer. Its sorta like how people tried to CGI applications in C for a long time in the webs early days. Sure it worked and if C was all you knew I suppose you could get the job done. C is good at many things, large amounts of string manipulation is not one of them; but its something you need for a dynamic website. Does that make C a bad tool, no, it just means its the wrong application for it.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    5. Re:If it aint broke... by gutnor · · Score: 3, Insightful

      BTW, this is not a COBOL hate, that is a "if it ain't broke ..." hate.

      Argument like there is training required, there will be bug, ... are generally not the cause at all. The real cause is that the company lost the very business knowledge that is abstracted by the software. Worse, most of the time that knowledge has been outsourced to other third party completely.

      The 2 problems highlighted could be solved, even in Cobol. They won't be solved, and the reason is not that new software cannot be better, it is that the company has lost the knowledge of its own core business and is unwilling to take any real measure to learn it back. Most of the time, "If it ain't broke ..." is not wisdom, it is a sign of incompetence as bad as "Nobody has ever been been fired for buying IBM".

  6. COBOL was supposed to be a quick fix by Required+Snark · · Score: 3, Interesting
    COBOL was defined by the "Short Range Committee". It was never intended to last.

    there it was decided to set up three committees: short, intermediate and long range (the last one was never actually formed). It was the Short Range Committee, chaired by Joseph Wegstein of the US National Bureau of Standards, that during the following months created a description of the first version of COBOL. The committee was formed to recommend a short range approach to a common business language.

    http://en.wikipedia.org/wiki/COBOL

    --
    Why is Snark Required?
  7. Every 3 to 5 years. by sgrover · · Score: 5, Insightful

    Every 3 to 5 years this topic comes up. It's almost like some new batch of CompSci graduates start to evaluate the state of the industry, and share their "discoveries" with the world. Except it is the same old discoveries couched in modern terms.

    1. Re:Every 3 to 5 years. by mvdwege · · Score: 5, Insightful

      That's because IT is suffused with a teenage culture that equates 'old' with 'useless'.

      Being able to spew the buzzwords related to the newest fad seems to be a requirement for a dev job these days.

      It doesn't help that the industry as a whole (especially in the US) seems to prey on young naive workers and likes to keep them that way in order to extract the maximum profit out of them.

      --
      "I know I will be modded down for this": where's the option '-1, Asking for it'?
  8. COBOL is a work of genius by sirwired · · Score: 5, Insightful

    Viewed through the eyes of a modern programmer, COBOL is indeed a joke. A horrible one. It violates nearly every single principle of good language design in what appears to be a misguided attempt to make programming "friendly." A CS undergrad would get a poor grade turning in something like COBOL as a Programming Languages 101 project.

    But for a language first specified in 1959 (when computing didn't even have the Integrated Circuit yet), it's a work of staggering genius; they didn't HAVE all those rules of good language design to fall back on! At the time, FORTRAN had been out for all of two years and LISP for one; hardly enough time to have much experience with knowing what not to do, and neither of those languages targeted the same problem domain.

    COBOL made modern computing accessible and useful to businesses. It's programs have maintained decent backwards compatibility for about half a century. And for all it's foibles, all those hundreds of millions of lines of COBOL actually work. They may be a disgusting kludge, a result of decades of compromises, but these gigantic black boxes of spaghetti Work. And there's no reason to think they'll stop doing so any time soon. Nor any reason to believe that replacing them would be in any way cost-effective.

  9. Speaking of COBOL outliving us all... by fuzzyfuzzyfungus · · Score: 4, Interesting

    Does anybody know what language(s) are used for the "Dead Hand" second-strike control system that the Russians were working on during the Cold War? Personally, I'd nominate them as the programming languages that will outlive us all...

  10. Hire veteran COBOLers, retirements won't matter. by emes · · Score: 5, Insightful

    It is a bromide perpetrated by ITAA and business groups that we can't find enough programmers to replace the ones who are retiring.

    The simple truth is that no one wants to PAY what people are worth, and there is rampant age discrimination:

    http://www.itbusinessedge.com/cm/blogs/tennant/yes-age-discrimination-is-worse-in-it-than-in-other-fields/?cs=38549

    Be willing to hire, retrain, or do whatever it takes to employ people over 35 and this so-called problem will be
    shown to be the chimera that it really is.

  11. As will Java by Pope+Raymond+Lama · · Score: 3, Funny

    as will Java, the new Cobol. So what?

    --
    -><- no .sig is good sig.
  12. Here's an old computer science joke by RabidReindeer · · Score: 2

    "Here's an old computer science joke: What's the difference between hardware and software? If you use hardware long enough, it breaks. If you use software long enough, it works.

    Actually, that's not true. COBOL programs are more durable because the COBOL architecture is very simple. Almost all of the work other than raw I/O was done in the COBOL code itself. Modern-day systems are heavily dependent on many external components, almost all of which are constantly evolving. So the "if it ain't broke, don't fix it" approach is actually more of a "how long can you afford to delay upgrading before the whole thing collapses beyond repair?"

    Even legacy programs didn't actually get better with time. Once you reach a certain point, it's more like you move the bugs around. The old "pressing on a ballon" analogy goes way back.

  13. Re:I don't think there will be a shortage. by CrazyBusError · · Score: 2

    Sorry, but I'm going to have to disagree with you. You can learn basic cobol in a week, sure. You can probably even learn all the useful keywords in a month, but almost certainly won't learn all their options or the best way to use them or the caveats of using some of them. You won't learn the various gotchas waiting in the wings when defining data structures either, whether in memory, or on disk.

    A month might make you able to write fairly complex stuff, but it won't give you time to learn the best ways to write efficient fast code and COBOL, despite its apparent simplicity, is remarkably easy to write nasty (self modifying if you wish) resource-hogging evilness. If you're on mainframes, it'll be longer than that before you've figured the full intrigues of things like Expediter, or, if you're really unlucky, core dumps, which can be your only way to debug.

    I've worked with COBOL since the mid 90s, so I'm still considered a noob in the field, but I've seen some horrors written by people with twice the experience I have and I've rarely seen *good* code written by people with anything less than a year of it on their CV.

    Bear in mind also that most COBOL is mainframe still, so chances are that as well as the language itself, you're going to have to learn DB2, JCL, CICS and suchlike. Mainframe assembly will also likely crop up in your radar and in certain financial institutions, PL/1 - all linked into one big horrible mess. You might think you'll learn COBOL in a week, but almost no company using it for mission-critical stuff will let you within a mile of their production systems until you've a couple of years under your belt.

    --
    -Never argue with an idiot. They drag you down to their level, then beat you with experience-
  14. Job Postings by jythie · · Score: 3, Funny

    Heh. In my job search I have actually been, well, surprised might not be the right word, but amused, at all the COBOL, FORTRAN, and mainframe postings. One thing I think they are getting themselves into trouble with though is all the postings I have seen require decades of experience in the technology, so they seem to be trying to replace retiring boomers with similarly skilled people, but not creating entry level or training paths.

  15. Re:Hire veteran COBOLers, retirements won't matter by jythie · · Score: 2

    That would help yes, but another part of the problem is, with these older technologies, many companies are only interested in drop-in replacements. There are few (if any) companies out there taking on entry or mid level developers for mainframe stuff, so once the current crop of experienced people run out they are going to be in trouble.

  16. There are only 3 COBOL programs... by DrogMan · · Score: 3, Interesting
    The "Input and Validate"
    The "Update"
    and the "Print"

    At least that's what a lecturer told me many years ago when I did COBOL at uny. I didn't get on with it initially, then I got bored and opened the book... Then I learned that what the lecturer was telling me was his idea of what COBOL ought to look like and not generic. It got a little more interesting after that (along with the student competition to see how many errors we could make the compiler generate with the minimal amount of syntax errors - one mis-placed full-stop managed to get it to the limit of 999 once)

    I've not written a COBOL program for over 30 years now. I don't miss it.

    -G

  17. Well, of course COBOL is still around by MikeLip · · Score: 3, Funny

    As a guy who worked on some pretty complex financial software, I can tell you this; If you come to a company and say "Hey, look. Your software is outdated, and just not cool anymore. Let us fix it." They will say "OK, how much will it cost, how many times will you screw up (and you WILL) and how much will it cost in lost productivity, development and training time?" In other words, prove to me that the cost and risk outweighs the benefits of leaving my not-cool but working structure in place? Know what? You can't. When you are talking about financials, companies are justifiably VERY risk-averse. And yeah, people laughed at COBOL when I was coding, and even back in the 70s when I was learning. This is an old argument and the fact is COBOL will be around a very long time whether our new compsci grads like it much or not. They aren't paying the bills and looking at cash flow. They just see all that legacy code and say they could do it better. Maybe you can. But you're not gonna.

  18. Little development? Hardly... by Shivetya · · Score: 3, Insightful

    It isn't just the financial sector, its the medical sector, major distributors, casinos, and more, who use mainframes and similar (I work on an iSeries which at our scale is very much a mainframe - especially in reliability). COBOL and also RPGLE (looks like C/Pascal now) form the back end of many systems because of their ease of programming and especially because they are good at business math. Front end we have web facing apps; javascript/php/etc; RESTful services, and more. New development occurs everyday and is far more modern in its application that your aware. It isn't a land of green screens and such, but those do have their place.

    The technology is anything but outdated, if anything we are as modern if not more. The key difference is dead nuts reliability, both in code and hardware. Downtime usually is when the site fails.

    --
    * Winners compare their achievements to their goals, losers compare theirs to that of others.
  19. Yep by Murdoch5 · · Score: 3, Insightful

    And this is why it's good to arm yourself with solid languages like COBOL, because in 10 years when something finally needs to be replace your the one guy who can.

  20. OpenCOBOL.org by emil · · Score: 4, Informative

    If you have any contact with COBOL in your profession, check out OpenCOBOL.org.

    With a free COBOL compiler, you have an option of moving this ancient code onto a modern platform with fast CPUs. If you find it lacking, start coding!

    I've tested it for Linux and Cygwin, and it works.

  21. Cobol just needs updating, like ruby on rails.... by inkhorn · · Score: 2
  22. Oddly... by Greyfox · · Score: 2
    You see a lot of companies make some really, and I mean REALLY, nonsense decisions to upgrade to some shiny cool thing that some manager somewhere read about in PC magazine. Like Citrix. So they add Citrix to their IT infrastructure and it sucks, because Citrix ALWAYS sucks, and everyone hates it, and now all those expensive PCs they put on everyone's desks are nothing more than dumb terminals to slower, less useful environments. Or, for an example closer to home, back in the 90's IBM replaced their mainframe based E-Mail system (Profs) with Lotus Notes, arguably the worst possible system for E-Mail. Just, you know, because... And Profs was so much better than Lotus Notes, it wasn't even funny. I'd have qualified that with "For E-Mail," but really, anything you could shoe-horn into Lotus Notes could probably have been shoe-horned into Profs and been better. But you know, Lotus Notes was shiny.

    Yet you really don't see similar kool-aid drinking driving the replacement of COBOL. You'd think by sheer chance some dimwit PHB would come in and arbitrarily decide "Oh let's replace all that COBOL code with something written in Ruby on Rails by an intern," because he'd just read about Ruby on Rails on PC magazine and was impressed with how quickly you could develop a web-based "Hello World" application.

    Admittedly a probably largish number of PHBs have attempted that and subsequently been fired by incompetence, but you'd think enough of those projects would limp along because they've already spent so much money, effort and time that to admit defeat would mean admitting gross incompetence at every level of management straight up to the CIO. Which, I'm pretty sure, is why Lotus Notes and Citrix are still around.

    Funny story, back in the 90's when IBM was replacing Profs with Lotus Notes, some dim-witted PHB decided "Oh well PCs can do anything that mainframes can do, so let's write a Lotus Notes replacement to RETAIN!" RETAIN being the mainframe-based app they use for trouble ticket tracking and bug fixing across, I'm pretty sure, all their products. Well long story short, that project went on for a couple of years and then quietly disappeared. A decade later, they were still using and actively maintaining RETAIN. I wouldn't be surprised if it were still being used and maintained to this very day, even after IBM's acquisition of Rational.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  23. Cobol is everywhere. by tekrat · · Score: 2

    I work for a large bank. When I mean large, I mean one of the top three. I have to regularly review code changes going into the Mainframe (yes, we have a mainframe). I see programs that not only have comments that go back into 1980, I see ports of programs that appear to come from times even earlier than that.

    Management has spent the last 6 years feverishly attempting to get rid of the entire mainframe and everything that goes with it, and bring everything into "a distributed environment", but so far we are still here. And what's more, I see more new programs going in than I see old programs being retired. That tells me we're here for a few more years, and maybe a few more years after that. COBOL isn't going away, at least not until the last Russian programmer dies.

    --
    If telephones are outlawed, then only outlaws will have telephones.
  24. My thoughts by Frontier+Owner · · Score: 2

    I have programed in a couple languages. Nothing serious, just the exposure. I don't think it really matters what language software is written in, it can be done badly. The problem I see with a lot of software is that the modules aren't re-examined when updates or additions are made. After a while, you get bloated modules that are eventually orphaned in favor of another module as another programmer comes along. or worse, another sub contractor comes along and the tie to the original programmer is completely lost along with the notes from the project.

  25. There is a reason for this: IT WORKED by Opportunist · · Score: 2

    And why did it work? Noooo, not because Cobol is so great, or because programmers back then were so much better. The difference is simply that they had time to test it, and test it, and test it again, before it was finally deemed ready for shipping.

    Today you get bananaware. Yes, bananaware. Matures at the customer.

    Today, the deadline determines shipping date. Not "when it's done", but when the manager set some arbitrary point in time. Whatever we have at that point, we'll ship.

    Now add that they hire the cheapest temps they can find instead of programmers with experience, and whoever has more than 2 years of XP tries to get the hell out and into some management position because the pay, let's face it, stinks, and you know why no program will EVER replace those dinosaurs.

    They were programmed in a time when companies accepted that good software costs money.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  26. Re:ERP by tlhIngan · · Score: 2

    Yes, companies can spend far more time and effort on customizing an ERP system to meet their needs than the system itself costs. Then, when new releases of the system come out, the customizations need to be done again. The other alternative is to change the company's systems to match the ERP. That's what my employer did when it outgrew the previous system and realized that it was too difficult to keep customizing the system. It meant changing lots of little things throughout the company. For example, every part number had to change to match the rules for the new ERP system. All said, it was probably cheaper to make the changes in the company than in the ERP, and now we can upgrade to new releases without much difficulty.

    Great if you can, a nightmare if you can't.

    Like some industries have LOOOOOONNNNGGG support cycles. Take a car, for example - by law all parts must be available for 10 years after production stops. Now you do an ERP system upgrade and all the part numbers change. Now you have a problem because people will be ordering with the old part numbers until you can drop it (up to 10 yeras later). (This is why you find special "automotive" hard drives - nothing's changed ,just that you can get that exact part for 10 yeras. Ditto automotive grade ICs)

    You can come out with big (printed) books of part number equivalancies, but people will still buy on the old part, so someone will have to do a part number translation and hang around answering questions on why they bought part XXX but got part YYY instead. Or even worse, have the same item listed as two different parts on the ordering system, causing even more confusion as people don't know what they should be ordering.

    If your company is small, it's relatively easy to maintain a translation list and if your customer base is equally small, to distribute notices of part number changes. Plus retraining and redoing business practices is much easier (like being able to get rid of certain reports if they're no longer available in the new system - this can be a huge problem if the information is now scattered amongst 10 different reports when previously it was on one nice neat summary report).

    But deepen the supply chain and lengthen the time of support, and things get hairy, fast.

  27. Re:ERP by bws111 · · Score: 2

    Great if you want your tools to drive your business and not the other way around.

  28. COBOL will never die by MoonDJ · · Score: 2

    So a COBOL programmer is given a 5-year prognosis. He arranges with a hospital to be cryogenically preserved until a cure is found. On the appointed day, they prepare him, and he starts to feel a chill.

    Next thing he knows, the chill is fading. The nurse uniforms look all futuristic. Injection devices are like on Star Trek, not piercing the skin. The hospital room decor is like in the 2001 movie.

    He grabs a passing doctor and asks "So, did they cure my disease?" "No. The year is now 2999." "Huh? Why on earth did you thaw me out?" "Because you're the only COBOL programmer they could find, and Y3K is about to hit."/P