Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: gah4@u.washington.edu Newsgroups: comp.compilers Subject: Re: Spell checking identifiers Date: Fri, 10 Jul 2020 13:17:59 -0700 (PDT) Organization: Compilers Central Lines: 39 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <20-07-004@comp.compilers> References: <20-06-010@comp.compilers> <20-06-013@comp.compilers> <20-06-017@comp.compilers> <20-07-002@comp.compilers> <20-07-003@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="64865"; mail-complaints-to="abuse@iecc.com" Keywords: Fortran Posted-Date: 10 Jul 2020 16:44:24 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com In-Reply-To: <20-07-003@comp.compilers> Xref: csiph.com comp.compilers:2550 On Friday, July 10, 2020 at 8:23:37 AM UTC-7, Thomas Koenig wrote: (snip) > 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]