Kiss me, cruel Fortran

Xaonon, when he joined Interröbang Cartel, claimed to be the future author of a song called “Kiss Me, Cruel Fortran”, but to date he has not written such a song.

Sometime later swt, in a discussion of songs that switch between languages, pointed out the lack of songs that modulate between human and computer languages, and Xaonon opined that someone should do that in lyrics for “Kiss Me, Cruel Fortran”. Chris Reuter responded with some lyrics, and I responded with different ones — later, but unaware at the time of Chris’s.

common man am I
but I’m willing to die

data weaves a spell
lures you into her hell

she’s a bleak mistress of a certain age
outlived her siblings on the binary stage[2]
oh she’ll bring you to joy and then she’ll fill you with rage[3]
come kiss me, come kiss me
cruel fortran

input your desire
on a telephone wire

go to her once again
the compiler of men

well she’s real and I’m not if I don’t declare[4]
and she’ll never point[5] but she’ll globally share[6]
you can state your case just don’t expect her to care[7]
come kiss me, come kiss me
cruel fortran

program for the end
gonna need a friend

format your demise
in the monitor’s eyes

if you curse again will she know what to do[8]
her numbers are numbers and they’re never true[9]
and she’ll cut you dead right after seventy-two[10]
come kiss me, come kiss me
cruel fortran

(In the following, “Fortran” refers to FORTRAN 4 and/or Fortran 77.)
[1] COMMON, DATA, INPUT, GOTO, PROGRAM, and FORMAT are all Fortran keywords.
[2] Well, most of them. Some people still use COBOL.
[3] Trust me on this.
[4] In the absence of any explicit declaration or IMPLICIT statement, variables whose names begin with the letters I through N (such as “I”) are integers and variables with names starting with other letters (such as “SHE”) are floating point, or in Fortran terms, REAL.
[5] Fortran doesn’t do pointers.
[6] Fortran has COMMON blocks for the management of more or less global variables.
[7] Fortran is case insensitive.
[8] Some implementations of Fortran permitted recursion, but it was not a language requirement.
[9] Unlike C, where logical expressions evaluate to 0 (false) or nonzero (true), Fortran has a separate LOGICAL data type whose two possible values are .TRUE. and .FALSE. You can’t say e.g. “IF (37) GOTO 100” because 37 is not LOGICAL.
[10] Fortran statments use columns 1-5 for a statement number, column 6 for a continuation character, and columns 7-72 for the statement itself; anything past column 72 is ignored.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.