[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