Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=C3=B8j?= Newsgroups: comp.os.vms Subject: Re: New VSI post on Youtube Date: Wed, 21 Aug 2024 14:19:52 -0400 Organization: A noiseless patient Spider Lines: 69 Message-ID: References: <66bcf876$0$717$14726298@news.sunsite.dk> <66bcfbe3$0$717$14726298@news.sunsite.dk> <66c397f6$0$716$14726298@news.sunsite.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 21 Aug 2024 20:19:52 +0200 (CEST) Injection-Info: dont-email.me; posting-host="3ba9841a42d1dda3811ea9704efa0629"; logging-data="4162158"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/TH7ejQyiSQXcp8TXw8mpmkxFWIAUx9SY=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:djzL2LscCVhrFrw9rVq+botrVuc= In-Reply-To: Content-Language: en-US Bytes: 2835 On 8/21/2024 2:13 PM, Arne Vajhøj wrote: > On 8/21/2024 8:26 AM, chrisq wrote: >> On 8/21/24 02:25, Lawrence D'Oliveiro wrote: >>> On Tue, 20 Aug 2024 09:47:36 -0400, Arne Vajhøj wrote: >>>> Few languages support multiple return values. >>> >>> Even in C and Fortran, a function can return a struct. >> >> Better to declare the struct externally, then pass a pointer >> to it. Much tidier. > > In C one should definitely return a pointer to struct and not > a struct. > > It looks like VSI Fortran cannot return a structure as function > result, but VSI Pascal can return a record as function result. > > And it is returned as a pointer argument under the hood. Unless it fits in a register, then it is returned as a true function result: $ type s2.pas module s2; type iituple = record a : integer; b : integer; end; [global] function get : iituple; var res : iituple; begin res.a := 123; res.b := 456; get := res; end; end. $ pas s2 $ type m2.c #include struct iituple { int a; int b; }; struct iituple get(); int main() { struct iituple res = get(); printf("%d %d\n", res.a, res.b); return 0; } $ cc m2 $ link m2 + s2 $ run m2 123 456 Arne