Language FORTRAN IV
(a more elaborate version)
Date: | 02/03/10 |
Author: | Johannes Schöön |
URL: | n/a |
Comments: | 1 |
Info: | n/a |
Score: | (2.97 in 29 votes) |
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PROGRAM BOTTLE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C THIS PROGRAM PRINTS THE ENTIRE LYRICS OF THE SONG - 99 BOTTLES OF C BEER - TO STANDARD OUTPUT. C C WARNING!: C IT IS ASSUMED THAT INTEGERS USE FOUR BYTES OF STORAGE EACH. C C COPYRIGHT 2010 JOHANNES SCHOEOEN C C----------------------------------------------------------------------- DIMENSION IBOBTW(7), IBOB(4), IT1DPI(8) DATA IBOBTW / 4H BOT, 4HTLES, 4H OF , 4HBEER, & 4H ON , 4HTHE , 4HWALL / DATA IBOB / 4H BOT, 4HTLES, 4H OF , 4HBEER / DATA IT1DPI / 4HTAKE, 4H ONE, 4H DOW, 4HN AN, & 4HD PA, 4HSS I, 4HT AR, 4HOUND / C----------------------------------------------------------------------- C MOST OF THE OUTPUT IS GENERATED BY THIS LOOP, BUT THE LAST COUPLE C OF LINES ARE TREATED SEPARATELY. (YES, I CHEAT.) DO 1000 I = 99, 3, -1 C ARITHMETIC IF STATEMENTS ARE USED TO DIFFERENTIATE BETWEEN C DOUBLE- AND SINGLE-DIGIT OUTPUT. C FIRST LINE OF VERSE. IF (10 - I) 10, 10, 20 10 WRITE (6, 9100) I, IBOBTW, 2H, , I, IBOB, 1H. GOTO 500 20 WRITE (6, 9110) I, IBOBTW, 2H, , I, IBOB, 1H. C SECOND LINE. 500 IF (11 - I) 30, 30, 40 30 WRITE (6, 9200) IT1DPI, 2H, , I-1, IBOBTW, 1H. GOTO 1000 40 WRITE (6, 9210) IT1DPI, 2H, , I-1, IBOBTW, 1H. 1000 CONTINUE C PRINT OUT THE LAST COUPLE OF ROWS. WRITE (6, 9999) STOP C FIRST ROW OF VERSE, FIRST DOUBLE DIGIT, THEN SINGLE DIGIT. 9100 FORMAT(1X, I2, 7A4, A2, I2, 4A4, A1) 9110 FORMAT(1X, I1, 7A4, A2, I1, 4A4, A1) C SECOND LINE OF VERSE -- DOUBLE DIGIT AND SINGLE DIGIT 9200 FORMAT(1X, 8A4, A2, I2, 7A4, A1, /) 9210 FORMAT(1X, 8A4, A2, I1, 7A4, A1, /) C THE FINAL COUPLE OF ROWS, HARD-CODED FOR SIMPLICITY. 9999 FORMAT(1X, 49H2 BOTTLES OF BEER ON THE WALL, 2 BOTTLES OF BEER.,/, & 1X, 50HTAKE ONE DOWN AND PASS IT AROUND, 1 BOTTLE OF BEER, & 13H ON THE WALL., //, & 1X, 47H1 BOTTLE OF BEER ON THE WALL, 1 BOTTLE OF BEER., & 13H ON THE WALL., /, & 1X, 50HTAKE ONE DOWN AND PASS IT AROUND, NO MORE BOTTLES , & 20HOF BEER ON THE WALL., //, & 1X, 37HNO MORE BOTTLES OF BEER ON THE WALL, , & 24HNO MORE BOTTLES OF BEER., /, & 1X, 35HGO TO THE STORE AND BUY SOME MORE, , & 31H99 BOTTLES OF BEER ON THE WALL.) END
Download Source | Write Comment
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!
Comments
Jeff said on 05/02/10 04:48:51
Hmmm. Can't get it to go on FORTG or FORTH versions on a 370.
Neither like the negative DO increment.
Some references that state it's not part of the standard until Fortran 77.