From: Rostyslaw J. Lewyckyj on
sqrfolkdnc wrote:

> Joe Morris wrote:
>
>>...
>>
>>And before someone asks, I've never seen the source for the original
>>FORTRAN compiler based on the first version of the language specs.
>>Does anyone know if it's available?
>
> Nobody has ever seen the source, not even the author. Denise Hopper
> wrote it in machine language (octal?) before the first assembler was
> written.
>
Really?
before the first assembler? Wow! :)


From: Rostyslaw J. Lewyckyj on
Andrew Swallow wrote:

> AZ Nomad wrote:
>
>> On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote:
>>
>>
>>> Anybody have any idea why good old FORTRAN had these quirks:
>>
>>
>>
>>> (1) three-way arithmetic IF
>>
>>
>>> (2) Column-6 as a continuation marker
>>
>> The first 4 (5?) colums were for a card sequence number so you could
>> recover
>> from dropping a card stack on the floor. THe first available column
>> after
>> the sequence number was for the continuation marker.
>
>
> Columns 73 to 80 were for card sorting. BASIC is the language with
> the label on every line. Putting a label on every line in Fortran
> uses up the symbol table and switches the optimiser off.
>
> Andrew Swallow
Really?


From: Brooks Moses on
Rostyslaw J. Lewyckyj wrote:
> Andrew Swallow wrote:
>>Columns 73 to 80 were for card sorting. BASIC is the language with
>>the label on every line. Putting a label on every line in Fortran
>>uses up the symbol table and switches the optimiser off.
>
> Really?

Somewhere online is a scanned version of the October 15, 1956 IBM manual
entitled "Fortran Automatic Coding System for the IBM 704", which was
pretty much the original public document describing the language.

On page 44 [1], there is a list of the various symbol tables that the
Fortran compiler uses -- there are quite a lot, so "symbol table" is
misleading -- and the first entry is "(TEIFNO Table). The number of
Fortran statements which have statement numbers must not exceed 1500."

As for switching off the optimiser, that presumably was a later version,
as this one is before the compiler was fancy enough that one could
switch it on. :)

- Brooks


[1] Which in the scan is unfortunately repeated in place of page 42.

--
The "bmoses-nospam" address is valid; no unmunging needed.
From: glen herrmannsfeldt on

On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote:

> Anybody have any idea why good old FORTRAN had these quirks:

>>>> (1) three-way arithmetic IF

As I understand it, a three way branch instruction on the 704.

> (2) Column-6 as a continuation marker

Statement numbers were up to 32767, so five columns.
The 704 did 16 bit sign magnitude integers or 36 bit floating
point, both in 36 bit words.

(someone else wrote)

>> Columns 73 to 80 were for card sorting. BASIC is the language with
>> the label on every line. Putting a label on every line in Fortran
>> uses up the symbol table and switches the optimiser off.

The 704 read each card row into two 36 bit words, ignoring the last
eight columns. (I would hate to write the code that converted that
into columnwise data.)

Stories are that the first Fortran compiler had a good optimizer.
It was considered necessary to compete with assembler programmers
in code speed. Optimizers I know of know which labels are used and
which aren't, but it might be that not all do that.

October 15th, 1956, 50 years minus one day.

-- glen

From: max on

"glen herrmannsfeldt" <gah(a)ugcs.caltech.edu> wrote in message
news:z6ydncvxQJD7Oa3YnZ2dnUVZ_vednZ2d(a)comcast.com...
>
> On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote:
>
> > Anybody have any idea why good old FORTRAN had these quirks:
>
> >>>> (1) three-way arithmetic IF
>
> As I understand it, a three way branch instruction on the 704.
>
> > (2) Column-6 as a continuation marker
>
> Statement numbers were up to 32767, so five columns.
> The 704 did 16 bit sign magnitude integers or 36 bit floating
> point, both in 36 bit words.
>
> (someone else wrote)
>
> >> Columns 73 to 80 were for card sorting. BASIC is the language with
> >> the label on every line. Putting a label on every line in Fortran
> >> uses up the symbol table and switches the optimiser off.
>
> The 704 read each card row into two 36 bit words, ignoring the last
> eight columns. (I would hate to write the code that converted that
> into columnwise data.)
>
> Stories are that the first Fortran compiler had a good optimizer.
> It was considered necessary to compete with assembler programmers
> in code speed. Optimizers I know of know which labels are used and
> which aren't, but it might be that not all do that.
>
> October 15th, 1956, 50 years minus one day.
>
> -- glen
>

First exposure to Fortran was FORTRAN V on a CDC 7600, having previously
used PET BASIC. The course notes weren't clear on statement labels, so for
some (smallish) program I put a label on every line, like BASIC, and the
compiler choked. CDC 7600 was early-mid 1970s technology, but I was using it
early 1980s.