Let's face it, cobol sucks. What follows is a comparison of different programming languages. The program is extremely simple and pointless, but it does a good job at illustrating the nastiness of cobol.
This is nice and simple. No tricks here...
#include <stdio.h>
int
main(void)
{
int newDate, newTime, intOne, intTwo;
printf("Input the date to remember: MMDD\n");
scanf("%d", &newDate);
printf("Input the time to remember: HHMM\n");
scanf("%d", &newTime);
printf("Give me the first integer...\n");
scanf("%d", &intOne);
printf("Give me the second integer...\n");
scanf("%d", &intTwo);
printf("Sum: %d\n", intOne + intTwo);
printf("Difference: %d\n", intOne - intTwo);
printf("Product: %d\n", intOne * intTwo);
printf("Quotient: %d\n", intOne / intTwo);
printf("So long, beautiful language.\n");
printf("Date: %d\n", newDate);
printf("Time: %d\n", newTime);
return 0;
}
Ah, our old friend C++. The only difference here is the use of the shift operators for stream input and output.
#include <iostream>
int
main(void)
{
int newDate, newTime, intOne, intTwo;
cout << "Input the date to remember: MMDD" << endl;
cin >> newDate;
cout << "Input the time to remember: HHMM" << endl;
cin >> newTime;
cout << "Give me the first integer..." << endl;
cin >> intOne;
cout << "Give me the second integer..." << endl;
cin >> intTwo;
cout << "Sum: " << intOne + intTwo << endl
<< "Difference: " << intOne - intTwo << endl
<< "Product: " << intOne * intTwo << endl
<< "Quotient: " << intOne / intTwo << endl
<< "So long, beautiful language." << endl
<< "Date: " << newDate << endl
<< "Time: " << newTime << endl;
return 0;
}
Yes Nick, I know you could probably do this program as a one liner. I am not the 1337 perl hax0r that you are, so don't complain.
#!/usr/local/bin/perl -w
print "Input the date to remember: MMDD\n";
$newDate = <STDIN>;
print "Input the time to remember: HHMM\n";
$newTime = <STDIN>;
print "Give me the first integer...\n";
$intOne = <STDIN>;
print "Give me the second integer...\n";
$intTwo = <STDIN>;
print "Sum: ", $intOne + $intTwo, "\n";
print "Difference: ", $intOne - $intTwo, "\n";
print "Product: ", $intOne * $intTwo, "\n";
print "Quotient: ", $intOne / $intTwo, "\n";
print "So long, beautiful language.\n";
print "Date: ", $newDate;
print "Time: ", $newTime;
Fortran is a bit cheesy. It reminds me of Basic.
PROGRAM STUPID
INTEGER :: newDate, newTime, intOne, intTwo
PRINT *, "Input the date to remember: MMDD"
READ *, newDate
PRINT *, "Input the time to remember: HHMM"
READ *, newTime
PRINT *, "Give me the first integer..."
READ *, intOne
PRINT *, "Give me the second integer..."
READ *, intTwo
PRINT *, "Sum: ", intOne + intTwo
PRINT *, "Difference: ", intOne - intTwo
PRINT *, "Product: ", intOne * intTwo
PRINT *, "Quotient: ", intOne / intTwo
PRINT *, "So long, stupid language."
PRINT *, "Date: ", newDate
PRINT *, "Time: ", newTime
END PROGRAM STUPID
Here is where life gets a bit uncomfortable. I think the code speaks for itself.
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. STUPID.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 01 NEW-DATE PICTURE IS 9999.
000700 01 NEW-TIME PICTURE IS 9999.
000800 01 INT-ONE PICTURE IS 9999.
000900 01 INT-TWO PICTURE IS 9999.
001000 01 ANSWER PICTURE IS 9999.
001100 PROCEDURE DIVISION.
001200 PROGRAM-BEGIN.
001300 DISPLAY "Input the date to remember: MMDD".
001400 ACCEPT NEW-DATE.
001500 DISPLAY "Input the time to remember: HHMM".
001600 ACCEPT NEW-TIME.
001700 DISPLAY "Give me the first integer...".
001800 ACCEPT INT-ONE.
001900 DISPLAY "Give me the second integer...".
002000 ACCEPT INT-TWO.
002100 COMPUTE ANSWER = INT-ONE + INT-TWO.
002500 DISPLAY "Sum: " ANSWER.
002200 COMPUTE ANSWER = INT-ONE - INT-TWO.
002600 DISPLAY "Difference: " ANSWER.
002300 COMPUTE ANSWER = INT-ONE * INT-TWO.
002700 DISPLAY "Product: " ANSWER.
002400 COMPUTE ANSWER = INT-ONE / INT-TWO.
002800 DISPLAY "Quotient: " ANSWER.
002900 DISPLAY "So long, stupid language.".
003000 DISPLAY "Date: " NEW-DATE.
003100 DISPLAY "Time: " NEW-TIME.
003200 PROGRAM-DONE.
003300 STOP RUN.