Re: Spell checking identifiers
Fri, 10 Jul 2020 13:17:59 -0700 (PDT)

          From comp.compilers

Related articles
[6 earlier articles]
Re: Spell checking identifiers (2020-06-24)
Re: Spell checking identifiers (2020-06-24)
Re: Spell checking identifiers johann@myrkraverk.invalid (Johann 'Myrkraverk' Oskarsson) (2020-06-25)
Re: Spell checking identifiers johann@myrkraverk.invalid (Johann 'Myrkraverk' Oskarsson) (2020-06-25)
Re: Spell checking identifiers (mac) (2020-07-09)
Re: Spell checking identifiers (Thomas Koenig) (2020-07-10)
Re: Spell checking identifiers (2020-07-10)
| List of all articles for this month |

Newsgroups: comp.compilers
Date: Fri, 10 Jul 2020 13:17:59 -0700 (PDT)
Organization: Compilers Central
References: 20-06-010 20-06-013 20-06-017 20-07-002 20-07-003
Injection-Info:; posting-host=""; logging-data="64865"; mail-complaints-to=""
Keywords: Fortran
Posted-Date: 10 Jul 2020 16:44:24 EDT
In-Reply-To: 20-07-003

On Friday, July 10, 2020 at 8:23:37 AM UTC-7, Thomas Koenig wrote:


> Fortran has a a bit of a similar issue with its C interoperability
> feature.

> Entities with C binding have global identifiers in Fortran. Fortran
> is a case-insensitive laguage, so FooBar and foobar look the same
> to Fortran, and you can not have a C binding to both (but either
> one would work).

Much of this was pretty strange before Fortran added the
C interoperability feature. Mostly, Fortran compilers did what
they did, and the C names had to match. That included adding
underscore characters sometimes.

Now Fortran has BIND(C), and more specifically BIND(C, NAME='cname')
where you specify the name as it will be known to C. That name is
case sensitive (at least if the underlying linker supports it),
and might be completely unrelated to the Fortran name.

BIND(C) without NAME= generates lower case, which is usual for C.

I believe IBM PL/I compilers have had the ability to call other
(presumably IBM) languages, with specific keywords. But mostly that
was when the IBM linker was (supposed to be) upper case only.

VAX/VMS, and I suspect other VMS, has a system, defined along
with VAX, for calling routines with other argument passing
conventions, with %VAL(), %REF(), and %DESCR(), or call by value,
reference, and descriptor. I am not sure what they do about case,
but many VMS names have $ in them, so that is allowed.

[Back in the day, IBM PL/I could call Fortran and COBOL but the
procedure names are all eight EBCDIC characters. The extra stuff
involves mapping datatypes. The current PL/I manuals say it
handles many different character encodings like UTF-16. -John]

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.