Subject: [FreeVMS] Re: STR$
From: BERTRAND JoŽl (email@example.com)
Date: Wed Nov 07 2001 - 14:13:19 CET
> On Wed, Nov 07, 2001 at 12:00:00PM +0100, BERTRAND JoŽl wrote:
>>>On Wed, Nov 07, 2001 at 09:52:50AM +0100, BERTRAND JoŽl wrote:
>>>> I have downloaded the str.tar-gz file. It seems to be corrupt...
>>>It seemed ok anyway; it compiled.
>> My gunzip returns an error.
> I used tar xzf
Same result on a RedHat 7.2 with tar ;-)
Weierstrass:[~/programmes/FreeVMS/tmp] > tar xvfz str.tar-gz
gzip: stdin: unexpected end of file
tar: Le processus enfant a retournť le statut 1
tar: Statut d'erreur reportť d'erreurs prťcťdentes.
>>>>I have extracted descrip.h, and this file is written from the VAX-11
>>>>procedure calling. All data lengths use unsigned shorts int. I tought
>>>>that the lengths of any datas use integer*4 (on VAX and alpha). Can
>>>>someone confirm ?
> Further infomation is said to be in "Introduction to VMS System Routines"
> manual, but it seems to be discontinued.
> The information is in OpenVMS Programming Interfaces: Calling a System Routine
> and OpenVMS Calling Standard. Somewhere.
> These manuals describe argument passing mechanisms, including descriptors.
> Maybe it is as simple as that.
>>>(Will be talking 32-bit "default")
>>>Remember descriptors are passed as pointers, that is 32-bit.
>>>If contents of descriptors are passed, it will be with the 16-bit length
>>>in a 32-bit register (no problem there).
>> Yes, but if the descriptor uses a 32-bit lengths, why are these
>>lengths declared with unsigned short (16-bits length) ?
> I have checked a bit.
> Many descriptors have the length of a quadword (8 bytes), and MOVQ ends up
> unsigned short dsc$w_length;
> unsigned char dsc$b_dtype;
> unsigned char dsc$b_class;
8-bits (with gcc)
Thus, this structure uses two 32 bits registers. If we have an
dsc$w_length which is coded with only 16 bits, we will not use a
character string which contains more than 2**16-1 characters, isn't it ?
When I use the Fortran compiler with a VAX version of VMS (5.x), I
believe that the length of the string was coded by an 32-bits integer.
g77 uses 32-bits too.
> into the first register, and moving
> char *dsc$a_pointer; intro the next register.
-- Liste de diffusion FreeVMS Pour se dťsinscrire : mailto:firstname.lastname@example.org?subject=unsubscribe
This archive was generated by hypermail 2b25 : Wed Nov 07 2001 - 14:12:44 CET