[Info-vax] 64-bit (was Re: New CEO of VMS Software)
John Reagan
johnrreagan at earthlink.net
Sat Jan 13 14:22:48 EST 2024
On 1/12/2024 6:46 PM, Dave Froble wrote:
> On 1/12/2024 3:22 PM, Arne Vajhøj wrote:
>> On 1/12/2024 2:57 PM, Dave Froble wrote:
>>> On 1/12/2024 7:23 AM, Arne Vajhøj wrote:
>>>> On 1/12/2024 12:08 AM, Dave Froble wrote:
>>>>> On 1/11/2024 3:48 PM, Arne Vajhøj wrote:
>>>>>> On 1/11/2024 1:17 PM, Simon Clubley wrote:
>>>>>>> On 2024-01-11, Dave Froble <davef at tsoft-inc.com> wrote:
>>>>>>>> If RMS doesn't fit your requirements, then don't use it.
>>>>>>>
>>>>>>> Everyone uses RMS, even if it hidden from you by the language.
>>>>>>> The RMS
>>>>>>> references are still in the executable you create however.
>>>>>>
>>>>>> In practice yes.
>>>>>>
>>>>>> In theory one can use SYS$QIO(W) for all IO and bypass RMS. But
>>>>>> it is very cumbersome (especially if one cannot use RMS for stuff
>>>>>> like finding IFI).
>>>>>
>>>>> And if one is using a database product that has nothing to do with
>>>>> RMS ???
>>>>
>>>> I would still expect that database product to use RMS to open
>>>> the database file even if the actual IO is done by
>>>> SYS$QIO(W) / SYS$IO_PERFORM(W) or via memory mapped file.
>>>
>>> Your expectation would be wrong.
>>
>> It happens frequently.
>>
>>> File opens without RMS use QIO to open a file.
>>
>> How does it get the FID?
>
> I'll post pieces of code to keep this short, well, relatively ..
>
> ; Parse the file specification, using the RMS $PARSE service
> ;
> MOVAB WRK_FAB,R8 ; Load FAB address
> MOVAB WRK_NAM,FAB$L_NAM(R8) ; Set name block address
> MOVL DSC$A_POINTER(R3),FAB$L_FNA(R8)
> CVTWB DSC$W_LENGTH(R3),FAB$B_FNS(R8)
> $PARSE FAB = R8 ; Invoke RMS parsing service
> BLBS R0,200$ ; Continue if all is okay
> BRW ERRORS ; Else return with error code
> ;
> ; Set up the filename descriptor for the ACP access
> ;
> 200$: MOVL FAB$L_NAM(R8),R8 ; Point to NAM block
> MOVZBL NAM$B_ESL(R8),R0 ; Length of expanded string
> MOVL NAM$L_ESA(R8),R1 ; Address of expanded string
> LOCC #^A"]",R0,(R1) ; Find end of directory
> SUBW3 #1,R0,WRK_Q_FILDSC+DSC$W_LENGTH
> ADDL3 #1,R1,WRK_Q_FILDSC+DSC$A_POINTER
>
Please don't use that code. Looking for a hard-coded closing
bracket? Oh pleeeze...
Use the various NAM$B_DIR,NAM$L_DIR fields or use $FILESCAN.
I immediately stopped looking when I saw that LOCC.
More information about the Info-vax
mailing list