Voting

Category

real language

Bookmarking

Del.icio.us Digg Diigo DZone Earthlink Google Kick.ie
Windows Live LookLater Ma.gnolia Reddit Rojo StumbleUpon Technorati

Language Cobol

Date:04/20/05
Author:Donald Fraser
URL:n/a
Comments:6
Info:n/a
Score: (3.03 in 29 votes)
 IDENTIFICATION DIVISION.
 PROGRAM-ID.BOTTLES_OF_BEER.
 AUTHOR.DONALD FRASER.
*
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
 SOURCE-COMPUTER. VAX.
 OBJECT-COMPUTER. VAX.
*
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
        SELECT OUTPUT-FILE
                ASSIGN TO BEERS_ON_THE_WALL.
*
 DATA DIVISION.
 FILE SECTION.
 FD OUTPUT-FILE
        LABEL RECORDS ARE OMITTED.
 01 BEERS-OUT                                   PIC X(133).
*
 WORKING-STORAGE SECTION.
 01 FLAGS-COUNTERS-ACCUMULATORS.
        05 FLAGS.
                10 E-O-F                                PIC 9.
                        88 END-OF-FILE                VALUE 1.
        05 COUNTERS.
                10 BOTTLES                      PIC 999
                                                VALUE 0.
 01 RECORD-OUT.
        05 LINE1.
                10 NUMBER-OF-BEERS-1                    PIC ZZ9.
                10                                      PIC X(28)
                                VALUE "BOTTLES OF BEER IN THE WALL ".
                10                                                        PIC
X
                                VALUE ",".
                        10 NUMBER-OF-BEERS-2            PIC ZZ9.
                10                                                        PIC
X.
                10                                      PIC X(17)
                                VALUE "BOTTLES OF BEER.".
        05 LINE2.
                10                                              PIC X(34)
                                VALUE "TAKE ONE DOWN AND PASS IT ARROUND ".
                10 NUMBER-OF-BEERS-3            PIC ZZ9.
                10                                      PIC X.
                10                                      PIC X(28)
                                VALUE "BOTTLES OF BEER IN THE WALL".
*
 PROCEDURE DIVISION.
 DRIVER-MODULE.
      PERFORM INITIALIZATION.
      PERFORM PROCESS UNTIL END-OF-FILE.
      PERFORM TERMINATION.
      STOP RUN.
*
 INITIALIZATION.
        OPEN OUTPUT OUTPUT-FILE.
        ADD 100 TO BOTTLES.
*
 PROCESS.
         IF BOTTLES = 0 THEN
                COMPUTE E-O-F = 1
        ELSE PERFORM WRITE-ROUTINE
        END-IF.
*
 TERMINATION.
        CLOSE OUTPUT-FILE.
*
 WRITE-ROUTINE.
          MOVE BOTTLES TO NUMBER-OF-BEERS-1, NUMBER-OF-BEERS-2.
         COMPUTE BOTTLES = BOTTLES - 1.
         WRITE BEERS-OUT FROM LINE1.
         MOVE BOTTLES TO NUMBER-OF-BEERS-3.
        WRITE BEERS-OUT FROM LINE2.

Download Source | Write Comment

Alternative Versions

VersionAuthorDateCommentsRate
Typical of mainframe COBOL programsBill Bass04/24/080
"Pretty" versionSumanta Mukhopadhyay10/06/051

Comments

>>  Jake Gilbert said on 05/25/05 04:38:44

Jake Gilbert whoa, how do you mispell your own name??? (the code and the submission have different spellings of "fras(e)(o)r".)

>>  Bob Lawson said on 07/13/05 22:27:06

Bob Lawson BEGIN COBOL-CURSING SECTION.

And now all you people know why, in my waking hours, in my sleep, in my dreams, I curse COBOL and everything it stands for.

I hate COBOL. This language sucks. It can die a terrible, terrible death.

>>  Louis said on 07/19/05 11:13:02

Louis And that, my friends, Is why I'm sooo happy that
I don't have to work in COBOL anymore ....

>>  Mike said on 02/10/06 22:04:01

Mike Good code except it needs to check for a value of 1 and change from bottles to bottle.

>>  Gary said on 07/29/06 19:07:16

Gary It's supposed to be bottles of beer ON the wall, not IN the wall.

>>  Don said on 04/26/08 00:28:42

Don Not as terse as it could be. But nowhere near as verbose as the Java and C programs that do the same thing.

Download Source | Write Comment

Add Comment

Please provide a value for the fields Name, Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.

Please don't post large portions of code here! Use the form to submit new examples or updates instead!

Name:

eMail:

URL:

Security Code:
  
Comment: