As far as I understand it, Cobol does support structured programming, at least within a single program subroutines are common in all the code I've seen (and we rarely use GOTO!).
I'd also like to see a list of what Cobol does that other languages don't (or don't do as well), for example variable redefinition or subdefinition.
Cobol variable definition is closely tied to the actual memory space used by the variables (and is probably due to its heritage with punchcards).
Cobol allows the programmer to subdefine variables; this is like a C typedef.
10 employee-name pic x(30) 15 empl-fn pic x(15) 15 empl-mi pic x(01) 15 empl-ln pic x(14)
Later in code, "move spaces to employee-name" clears all fields and subfields.
You may also redefine variables, giving a single variable more than one name.
10 business-name redefines employee-name
10 STD-DATE PIC X(08) /* YYYYMMDD, char format*/ 15 STD-DATE-CC PIC X(02) 15 STD-DATE-YYMMDD PIC X(06) /* YYMMDD, char format */ 20 STD-DATE-YY PIC X(02) 20 STD-DATE-MMDD PIC X(04)
88-level values may be used to list options for flags or allowable values for variables.
10 employee-found-sw pic x(01) 88 employee-found value "Y" 88 employee-not-found value "N"
10 employee-type-flag pic x(01) 88 employee-type-standard value "S" 88 employee-type-exempt value "E" 88 employee-type-contractor value "C"
(later, in code:)
move employee-type-standard to employee-type-flag if employee-type-standard ...
Dare I mention more english-like syntax (though it may perhaps be more readable to PHBs, most programmers don't seem to like it).
move 7 to days-of-the-week if days-of-the-week=7 then next sentence.
(darn, I don't have my code here so I can't give more examples) -- Justfred